:root{--bg-primary:#0f0f14;--bg-secondary:#1a1a24;--bg-card:#22222e;--bg-hover:#2a2a38;--text-primary:#f0f0f5;--text-secondary:#a0a0b8;--text-muted:#6b6b80;--accent:#7c3aed;--accent-hover:#8b5cf6;--accent-light:#a78bfa;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--border:#2e2e3a;--radius:12px;--shadow:0 4px 20px rgba(0,0,0,.3)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-primary);color:var(--text-primary);min-height:100vh}#root{min-height:100vh}button{font-family:inherit;cursor:pointer;border:none;border-radius:8px;font-size:14px;font-weight:600;transition:all .2s ease}.btn-primary{background:var(--accent);color:#fff;padding:12px 24px}.btn-primary:hover{background:var(--accent-hover);transform:translateY(-1px)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-secondary{background:var(--bg-hover);color:var(--text-primary);padding:12px 24px;border:1px solid var(--border)}.btn-secondary:hover{background:var(--border)}.btn-success{background:var(--success);color:#fff;padding:12px 24px}.btn-danger{background:var(--danger);color:#fff;padding:12px 24px}.btn-small{padding:8px 16px;font-size:13px}.card{background:var(--bg-card);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);border:1px solid var(--border)}.input{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:12px 16px;color:var(--text-primary);font-size:14px;width:100%;font-family:inherit}.input:focus{outline:none;border-color:var(--accent)}textarea.input{min-height:100px;resize:vertical}select.input{cursor:pointer}.badge{display:inline-block;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:600}.badge-purple{background:#7c3aed33;color:var(--accent-light)}.badge-green{background:#10b98133;color:var(--success)}.badge-orange{background:#f59e0b33;color:var(--warning)}.badge-red{background:#ef444433;color:var(--danger)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .3s ease}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:24px;height:24px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}.loading-overlay{display:flex;flex-direction:column;align-items:center;gap:12px;padding:40px;color:var(--text-secondary)}
