:root{--bg:#0b1020;--card:#141b2e;--border:#263149;--text:#e7ecf5;--muted:#93a0bd;--accent:#5b8cff;--ok:#34d399;--err:#f87171}*{box-sizing:border-box}body,html{margin:0;padding:0}body{color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:radial-gradient(900px 500px at 15% -10%,rgba(91,140,255,.18),transparent 60%),radial-gradient(700px 500px at 110% 10%,rgba(52,211,153,.12),transparent 55%),var(--bg)}.page,body{min-height:100vh}.page{display:grid;place-items:center;padding:24px}.card{width:100%;max-width:460px;background:var(--card);border:1px solid var(--border);border-radius:18px;padding:32px;box-shadow:0 24px 60px rgba(0,0,0,.35)}.badge{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;padding:6px 12px;border-radius:999px;border:1px solid var(--border);color:var(--muted)}.badge .dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.badge--connected{color:var(--ok);border-color:rgba(52,211,153,.4)}.badge--connected .dot{background:var(--ok);box-shadow:0 0 0 4px rgba(52,211,153,.15)}.badge--error{color:var(--err);border-color:hsla(0,91%,71%,.4)}.badge--error .dot{background:var(--err)}.badge--loading .dot{animation:pulse 1.1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.4}50%{opacity:1}}h1{margin:18px 0 4px;font-size:34px;letter-spacing:-.02em}.subtitle{margin:0 0 22px;color:var(--muted);font-size:14px}.result{min-height:96px;padding:18px;border-radius:12px;background:hsla(0,0%,100%,.03);border:1px solid var(--border)}.message{margin:0;font-size:16px;line-height:1.5}.message--error{color:var(--err)}.meta{margin:16px 0 0;display:grid;grid-gap:8px;gap:8px}.meta div{display:flex;justify-content:space-between;gap:12px;font-size:13px}.meta dt{color:var(--muted)}.meta dd{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text);word-break:break-all;text-align:right}.btn{margin-top:22px;width:100%;padding:12px 16px;font-size:15px;font-weight:600;color:#fff;background:var(--accent);border:none;border-radius:12px;cursor:pointer;transition:transform .05s ease,opacity .2s ease}.btn:hover{opacity:.92}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}