:root{--bg:#07070d;--bg2:#0f0f1a;--card:#15151f;--card2:#1c1c2a;--border:#26263a;--t1:#f0f0f5;--t2:#a0a0b5;--t3:#6a6a80;--p500:#5b5bd6;--p400:#7c6bff;--p300:#9e7bff;--ok:#34d399;--warn:#fbbf24;--err:#f87171;--info:#60a5fa}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--t1);-webkit-font-smoothing:antialiased;font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}.layout{height:100vh;display:flex}.sidebar{background:var(--bg2);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:220px;padding:20px 14px;display:flex}.logo{margin-bottom:28px;padding:0 8px;font-size:20px;font-weight:800}.logo span{background:linear-gradient(90deg, var(--p500), var(--p300));-webkit-text-fill-color:transparent;-webkit-background-clip:text}.sidebar nav{flex-direction:column;flex:1;gap:4px;display:flex}.nav{color:var(--t2);border-radius:10px;padding:11px 14px;font-weight:600}.nav:hover{background:var(--card);color:var(--t1)}.nav.active{color:var(--t1);background:linear-gradient(90deg,#5b5bd640,#9e7bff26)}.logout{border:1px solid var(--border);color:var(--t3);background:0 0;border-radius:10px;padding:10px}.logout:hover{color:var(--err);border-color:var(--err)}.content{flex:1;padding:28px 32px;overflow-y:auto}.page-head{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}.page-head h1{font-size:24px;font-weight:800}.page-head .sub{color:var(--t3);margin-top:3px;font-size:13px}.card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px}.card+.card{margin-top:18px}.card h2{margin-bottom:14px;font-size:16px;font-weight:700}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:18px;display:grid}.kpi{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px 20px}.kpi .val{font-size:28px;font-weight:800}.kpi .label{color:var(--t3);margin-top:4px;font-size:13px}.kpi .val.accent{color:var(--p300)}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);padding:12px 14px;font-size:13px}th{color:var(--t3);font-weight:600}tbody tr:hover{background:var(--card2);cursor:pointer}.badge{border-radius:999px;padding:3px 9px;font-size:11px;font-weight:700;display:inline-block}.badge.active,.badge.PRO{color:var(--ok);background:#34d3992e}.badge.suspended,.badge.warn{color:var(--warn);background:#fbbf242e}.badge.banned,.badge.err{color:var(--err);background:#f871712e}.badge.FREE,.badge.user{color:var(--t2);background:#a0a0b526}.badge.admin{color:var(--p300);background:#7c6bff33}.btn{border:none;border-radius:10px;padding:9px 16px;font-size:13px;font-weight:700}.btn.primary{background:linear-gradient(90deg, var(--p500), var(--p400));color:#fff}.btn.ghost{background:var(--card2);color:var(--t2);border:1px solid var(--border)}.btn.danger{color:var(--err);background:#f8717126;border:1px solid #f871714d}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.sm{padding:6px 11px;font-size:12px}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.input{background:var(--bg2);border:1px solid var(--border);color:var(--t1);border-radius:10px;min-width:180px;padding:9px 13px;font-size:13px}.select{background:var(--bg2);border:1px solid var(--border);color:var(--t1);border-radius:10px;padding:9px 11px;font-size:13px}.chip{border:1px solid var(--border);background:var(--card);color:var(--t2);border-radius:999px;padding:7px 14px;font-size:12px;font-weight:600}.chip.on{background:var(--p500);color:#fff;border-color:var(--p500)}.spacer{flex:1}.login-wrap{justify-content:center;align-items:center;height:100vh;display:flex}.login-box{background:var(--card);border:1px solid var(--border);border-radius:20px;width:360px;padding:36px 32px}.login-box .logo{text-align:center;margin-bottom:8px;font-size:26px}.login-box p{color:var(--t3);text-align:center;margin-bottom:24px;font-size:13px}.login-box .input{width:100%;margin-bottom:12px}.login-box .btn{width:100%;padding:12px}.login-box .err{color:var(--err);text-align:center;margin-top:12px;font-size:13px}.overlay{z-index:50;background:#0009;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer{background:var(--bg2);border-left:1px solid var(--border);width:420px;height:100%;padding:28px;overflow-y:auto}.modal-center{z-index:50;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg2);border:1px solid var(--border);border-radius:18px;width:440px;padding:26px}.field{margin-bottom:14px}.field label{color:var(--t3);margin-bottom:6px;font-size:12px;display:block}.field .input,.field .select,.field textarea{width:100%}textarea.input{resize:vertical;min-height:80px}.row-actions{gap:8px;margin-top:18px;display:flex}.toast{background:var(--p500);color:#fff;z-index:100;border-radius:12px;padding:12px 22px;font-weight:600;position:fixed;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #5b5bd666}.muted{color:var(--t3)}.loading{text-align:center;color:var(--t3);padding:40px}.recent-2col{grid-template-columns:1fr 1fr;gap:18px;display:grid}@media (width<=900px){.recent-2col{grid-template-columns:1fr}}
