*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--primary: #7c3aed;--primary-dark: #6d28d9;--primary-light: #ede9fe;--accent: #f59e0b;--accent-dark: #d97706;--success: #10b981;--danger: #ef4444;--bg: #0f0a1e;--bg-card: #1a1130;--bg-card-2: #221843;--border: rgba(255,255,255,.08);--text: #f1f0f5;--text-muted: #9ca3af;--sidebar-w: 240px;--navbar-h: 64px;--radius: 12px;--shadow: 0 4px 24px rgba(0,0,0,.4)}html,body{height:100%;font-family:Inter,sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;background:none;font-family:inherit;font-size:inherit}input,textarea,select{font-family:inherit;font-size:inherit}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:8px;font-weight:600;font-size:14px;transition:all .2s;cursor:pointer;border:none}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-accent{background:var(--accent);color:#000}.btn-accent:hover{background:var(--accent-dark);transform:translateY(-1px)}.btn-ghost{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.btn-ghost:hover{background:var(--bg-card);color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{opacity:.85}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.skeleton{background:linear-gradient(90deg,var(--bg-card) 25%,var(--bg-card-2) 50%,var(--bg-card) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:6px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes fadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.fade-in{animation:fadeIn .4s ease both}
