:root{--pink: #ff2e74;--magenta: #c724b1;--coral: #ff7043;--violet: #7c4dff;--bg: #121016;--surface: #1e1a23;--surface-hi: #2a2431;--text: #ffffff;--muted: #b9b0c3;--online: #00e676;--error: #ff5252;--grad: linear-gradient(135deg, var(--pink), var(--magenta), var(--coral))}*{margin:0;padding:0;box-sizing:border-box}html,body,#app{height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5}button{font:inherit;cursor:pointer;border:0;color:inherit;background:none}input{font:inherit}.screen{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px;position:relative}.brand-glow{position:fixed;inset:-40% -20% auto;height:70%;background:radial-gradient(closest-side,rgba(255,46,116,.18),transparent);pointer-events:none}.logo-row{display:flex;align-items:center;gap:10px}.logo-row img{width:36px;height:36px;border-radius:9px}.logo-row span{font-size:24px;font-weight:800;letter-spacing:-.3px}.card{background:var(--surface);border:1px solid #2c2534;border-radius:20px;padding:28px;width:min(400px,92vw);display:flex;flex-direction:column;gap:14px;position:relative}h1{font-size:24px;font-weight:800;letter-spacing:-.4px}.muted{color:var(--muted);font-size:15px}.field{padding:13px 16px;border-radius:13px;border:1px solid #43364d;background:#181320;color:var(--text);outline:none;width:100%}.field:focus{border-color:var(--pink)}.btn-primary{padding:14px 22px;border-radius:999px;background:var(--grad);color:#fff;font-weight:800;font-size:16px}.btn-primary:disabled{opacity:.5;cursor:default}.btn-ghost{padding:10px 18px;border-radius:999px;background:var(--surface-hi);color:var(--muted);font-weight:600;font-size:14px}.conn-pill{position:fixed;top:14px;right:14px;display:flex;align-items:center;gap:7px;background:var(--surface-hi);border-radius:999px;padding:6px 13px;font-size:13px;font-weight:600;color:var(--muted)}.conn-dot{width:9px;height:9px;border-radius:50%;background:#777}.conn-dot.online{background:var(--online)}.conn-dot.connecting{background:#ffb300;animation:pulse 1s infinite alternate}@keyframes pulse{0%{opacity:.4}to{opacity:1}}.error{color:var(--error);font-size:14px}.pulse-heart{font-size:56px;animation:heartbeat 1.1s ease-in-out infinite}@keyframes heartbeat{0%,to{transform:scale(1)}30%{transform:scale(1.18)}45%{transform:scale(1)}60%{transform:scale(1.12)}}
