*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0f172a;--bg2: #1e293b;--bg3: #334155;--border: #334155;--text: #f1f5f9;--text2: #94a3b8;--accent: #6366f1;--accent-hover: #4f46e5;--danger: #ef4444;--success: #22c55e;--warn: #f59e0b;--radius: 12px;--radius-sm: 6px;--shadow: 0 4px 24px rgba(0,0,0,.4);--nav-height: 64px}html,body{height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}#root{height:100%}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;font-family:inherit;font-size:inherit}input,textarea{font-family:inherit;font-size:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--bg3);border-radius:3px}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:var(--radius-sm);font-weight:500;transition:background .15s,opacity .15s;white-space:nowrap}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{background:transparent;color:var(--text2)}.btn-ghost:hover{background:var(--bg2);color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{opacity:.85}.btn-sm{padding:6px 14px;font-size:13px}.card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.input{width:100%;background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);padding:10px 14px;outline:none;transition:border-color .15s}.input:focus{border-color:var(--accent)}.input::placeholder{color:var(--text2)}.badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:500}.badge-accent{background:#6366f133;color:var(--accent)}.badge-warn{background:#f59e0b33;color:var(--warn)}.spinner{width:36px;height:36px;border:3px solid var(--bg3);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.fade-in{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
