:root{--bg: #0c0a10;--bg-1: #131118;--bg-2: #1a1724;--bg-3: #211e2e;--border: #2a2540;--border-active: #4a3a70;--purple: #bf5af2;--purple-dim:#7f2ac4;--purple-bg: rgba(191,90,242,.08);--purple-bg2:rgba(191,90,242,.14);--text: #f0eeff;--text-2: #9990bb;--text-3: #5a5475;--green: #30d158;--red: #ff453a;--amber: #ffd60a;--font-mono: "Courier New", Courier, monospace;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--radius: 10px;--radius-lg: 16px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);line-height:1.6;-webkit-font-smoothing:antialiased;min-height:100vh}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg-1)}::-webkit-scrollbar-thumb{background:var(--border-active);border-radius:3px}h1,h2,h3,h4{line-height:1.2;font-weight:800}.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;background:var(--purple);color:#fff;border:none;padding:.7rem 1.4rem;border-radius:var(--radius);font-size:.9rem;font-weight:700;cursor:pointer;transition:all .15s;white-space:nowrap}.btn-primary:hover{background:#d070ff;transform:translateY(-1px);box-shadow:0 4px 20px #bf5af259}.btn-primary:active{transform:translateY(0)}.btn-primary:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;background:transparent;color:var(--text-2);border:1px solid var(--border);padding:.7rem 1.4rem;border-radius:var(--radius);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .15s}.btn-ghost:hover{border-color:var(--border-active);color:var(--text);background:var(--bg-2)}.btn-outline-purple{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;background:transparent;color:var(--purple);border:1px solid var(--purple-dim);padding:.7rem 1.4rem;border-radius:var(--radius);font-size:.9rem;font-weight:700;cursor:pointer;transition:all .15s}.btn-outline-purple:hover{background:var(--purple-bg);border-color:var(--purple)}.input{width:100%;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem 1rem;color:var(--text);font-size:.95rem;font-family:var(--font-sans);outline:none;transition:border .15s}.input:focus{border-color:var(--purple);box-shadow:0 0 0 3px #bf5af21f}.input::placeholder{color:var(--text-3)}.card{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem}.card-sm{padding:1rem}.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .55rem;border-radius:6px;font-size:.72rem;font-weight:700;letter-spacing:.04em;font-family:var(--font-mono)}.badge-purple{background:var(--purple-bg2);color:var(--purple);border:1px solid rgba(191,90,242,.2)}.badge-green{background:#30d1581a;color:var(--green);border:1px solid rgba(48,209,88,.2)}.badge-amber{background:#ffd60a1a;color:var(--amber);border:1px solid rgba(255,214,10,.2)}.badge-red{background:#ff453a1a;color:var(--red);border:1px solid rgba(255,69,58,.2)}.badge-grey{background:var(--bg-3);color:var(--text-3);border:1px solid var(--border)}.spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--purple);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.divider{height:1px;background:var(--border);margin:1.5rem 0}.tag{display:inline-block;padding:.15rem .5rem;border-radius:4px;font-size:.7rem;font-weight:700;letter-spacing:.06em;font-family:var(--font-mono);text-transform:uppercase}.mono{font-family:var(--font-mono)}.text-purple{color:var(--purple)}.text-green{color:var(--green)}.text-red{color:var(--red)}.text-dim{color:var(--text-2)}.text-dimmer{color:var(--text-3)}.fw-800{font-weight:800}.page{min-height:100vh}.container{max-width:1100px;margin:0 auto;padding:0 1.5rem}.container-sm{max-width:680px;margin:0 auto;padding:0 1.5rem}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fadeUp .4s ease both}.purple-glow{box-shadow:0 0 40px #bf5af22e}
