:root{--primary: #7c3aed;--primary-soft: #f4f0ff;--ink: #16121f;--sub: #6b6878;--bg: #f6f5fa;--surface: #ffffff;--border: #e7e5ee;--success: #16a34a;--danger: #e11d48;--warn: #d97706;--star: #f59e0b}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink)}a{color:var(--primary)}.shell{display:flex;min-height:100vh}.sidebar{width:230px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:18px 12px;position:sticky;top:0;height:100vh}.brand{font-size:20px;font-weight:800;padding:6px 10px 18px;display:flex;align-items:center;gap:8px}.brand .dot{width:22px;height:22px;border-radius:7px;background:var(--primary)}.nav button{display:flex;gap:10px;align-items:center;width:100%;text-align:left;border:none;background:none;padding:11px 12px;border-radius:10px;font-size:14px;font-weight:600;color:var(--sub);cursor:pointer}.nav button.active{background:var(--primary-soft);color:var(--primary)}.nav button:hover:not(.active){background:var(--bg)}.sidebar .spacer{flex:1}.sidebar .who{font-size:12px;color:var(--sub);padding:8px 10px}.main{flex:1;padding:26px 30px;max-width:1200px}.page-title{font-size:24px;font-weight:800;margin:0 0 18px}.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px}.stat{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:16px 18px}.stat .label{font-size:12px;color:var(--sub);font-weight:600;text-transform:uppercase;letter-spacing:.4px}.stat .value{font-size:28px;font-weight:800;margin-top:6px}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:18px;margin-bottom:18px}.card h3{margin:0 0 12px;font-size:16px}.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.input,select{padding:10px 12px;border:1px solid var(--border);border-radius:10px;font-size:14px;background:var(--surface);color:var(--ink)}.input{min-width:240px}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:16px;overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;padding:12px 14px;font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--sub);border-bottom:1px solid var(--border);white-space:nowrap}td{padding:12px 14px;border-bottom:1px solid var(--border);vertical-align:middle}tr:last-child td{border-bottom:none}tr:hover td{background:#faf9fd}.muted{color:var(--sub)}.mono{font-variant-numeric:tabular-nums}.badge{display:inline-block;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;text-transform:capitalize}.b-green{background:#e7f6ec;color:var(--success)}.b-red{background:#fdeaef;color:var(--danger)}.b-amber{background:#fdf2e3;color:var(--warn)}.b-purple{background:var(--primary-soft);color:var(--primary)}.b-gray{background:#eef0f4;color:var(--sub)}.btn{border:none;border-radius:9px;padding:8px 13px;font-size:13px;font-weight:700;cursor:pointer}.btn-primary{background:var(--ink);color:#fff}.btn-ghost{background:var(--bg);color:var(--ink)}.btn-danger{background:#fdeaef;color:var(--danger)}.btn-green{background:#e7f6ec;color:var(--success)}.btn-sm{padding:6px 10px;font-size:12px}.btn:disabled{opacity:.5;cursor:default}.row-actions{display:flex;gap:6px}.avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;background:var(--primary-soft)}.cell-user{display:flex;gap:10px;align-items:center}.cell-user .nm{font-weight:600}.cell-user .em{font-size:12px;color:var(--sub)}.error{background:#fdeaef;color:var(--danger);padding:10px 14px;border-radius:10px;font-size:13px;margin-bottom:14px}.empty,.loading{text-align:center;color:var(--sub);padding:40px}.drawer-bg{position:fixed;inset:0;background:#00000059;display:flex;justify-content:flex-end;z-index:50}.drawer{width:460px;max-width:92vw;background:var(--bg);height:100%;overflow-y:auto;padding:22px}.drawer h2{margin:0 0 4px}.kv{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--border);font-size:14px}.kv .k{color:var(--sub)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:32px;width:360px}.login-card h1{margin:0 0 4px;font-size:22px}.login-card p{margin:0 0 20px;color:var(--sub);font-size:14px}.login-card .input{width:100%;margin-bottom:12px}.btn-block{width:100%;padding:13px;border-radius:11px}
