:root{--rose: #f74ba6;--coral: #fd8d5b;--blue: #0d9af9;--purple: #878ef7;--ink: #1e1e1e;--gradient: linear-gradient(135deg, #f74ba6, #fd8d5b);--bg: #f6f6f8;--surface: #ffffff;--border: #ececf1;--text: #1e1e1e;--text-sec: #6b6b76;--text-ter: #9a9aa5;--radius: 14px;--shadow: 0 1px 2px rgba(30, 30, 30, .04), 0 8px 24px rgba(30, 30, 30, .05);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}.login-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow);padding:36px 32px}.login-logo{font-weight:800;font-size:22px;letter-spacing:-.02em;background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}.login-sub{color:var(--text-sec);font-size:14px;margin:6px 0 26px}.field{margin-bottom:16px}.field label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:var(--text-sec)}.field input{width:100%;padding:11px 13px;border:1px solid var(--border);border-radius:10px;font-size:14px;font-family:inherit;outline:none;transition:border-color .15s}.field input:focus{border-color:var(--purple)}.btn-primary{width:100%;padding:12px;border:none;border-radius:10px;background:var(--gradient);color:#fff;font-size:15px;font-weight:700;cursor:pointer;font-family:inherit}.btn-primary:disabled{opacity:.6;cursor:default}.error-box{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;font-size:13px;border-radius:10px;padding:10px 12px;margin-bottom:16px}.topbar{height:60px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:10}.topbar .brand{font-weight:800;font-size:18px;letter-spacing:-.02em}.topbar .brand span{background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}.topbar .right{display:flex;align-items:center;gap:14px;font-size:13px;color:var(--text-sec)}.btn-ghost{border:1px solid var(--border);background:var(--surface);color:var(--text-sec);border-radius:8px;padding:7px 12px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}.btn-ghost:hover{color:var(--text)}.container{max-width:1040px;margin:0 auto;padding:28px 24px 60px}.page-title{font-size:22px;font-weight:800;letter-spacing:-.02em;margin:0 0 2px}.page-sub{color:var(--text-sec);font-size:14px;margin:0 0 24px}.grid{display:grid;gap:16px}.grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 820px){.grid-4{grid-template-columns:repeat(2,1fr)}}@media (max-width: 460px){.grid-4{grid-template-columns:1fr}}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.tile .label{font-size:12px;font-weight:600;color:var(--text-sec);text-transform:uppercase;letter-spacing:.04em}.tile .value{font-size:30px;font-weight:800;letter-spacing:-.02em;margin-top:8px;line-height:1}.tile .foot{font-size:12px;color:var(--text-ter);margin-top:8px}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:middle}.bar{height:8px;border-radius:6px;background:var(--border);overflow:hidden;margin-top:12px}.bar>span{display:block;height:100%;background:var(--gradient);border-radius:6px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-top:20px}.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.card-title{font-size:15px;font-weight:700}.legend{display:flex;gap:16px;font-size:12px;color:var(--text-sec)}.legend span{display:inline-flex;align-items:center}.chart{width:100%;height:200px;display:block;margin-top:14px}.chart-empty{color:var(--text-ter);font-size:13px;text-align:center;padding:40px 0}.muted{color:var(--text-ter);font-size:12px}.center{min-height:60vh;display:flex;align-items:center;justify-content:center;color:var(--text-sec)}
