:root{--bg: #0f172a;--bg-2: #111c33;--surface: #16233f;--surface-2: #1d2d4d;--line: #243354;--text: #e8eefc;--text-dim: #93a2c4;--accent: #4f8cff;--accent-2: #2563eb;--in: #1e2a46;--out: #2b5bd4;--ok: #46d19e;--bad: #ff6b6b;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;overscroll-behavior:none}.app,.screen{height:100%;display:flex;flex-direction:column;max-width:680px;margin:0 auto}.splash{height:100%;display:grid;place-items:center;background:var(--bg)}.logo-dot{width:42px;height:42px;border-radius:14px;background:linear-gradient(135deg,var(--accent),#7b5cff);animation:pulse 1.2s ease-in-out infinite}.logo-dot.big{width:64px;height:64px;border-radius:20px;animation:none}@keyframes pulse{0%,to{opacity:.4}50%{opacity:1}}.login{height:100%;display:grid;place-items:center;padding:24px}.login-card{width:100%;max-width:340px;text-align:center;display:flex;flex-direction:column;gap:12px;align-items:center}.login-card h1{margin:6px 0 0;font-size:28px;letter-spacing:.5px}.subtle{color:var(--text-dim);margin:0 0 8px;font-size:14px}.login-card form{display:flex;flex-direction:column;gap:10px;width:100%}input,textarea{background:var(--surface);border:1px solid var(--line);color:var(--text);border-radius:12px;padding:13px 14px;font-size:16px;outline:none;width:100%}input:focus,textarea:focus{border-color:var(--accent)}button{cursor:pointer;border:none;border-radius:12px;font-size:16px;background:var(--accent-2);color:#fff;padding:13px 14px;font-weight:600}button:disabled{opacity:.5;cursor:default}button.link{background:none;color:var(--accent);font-weight:500;padding:6px;font-size:14px}.ok{color:var(--ok);font-size:14px}.bad{color:var(--bad);font-size:14px}.bar{display:flex;align-items:center;gap:10px;padding:calc(10px + var(--safe-top)) 14px 10px;background:var(--bg-2);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.title{font-size:19px;font-weight:700;flex:1}.thread-title{font-size:17px}.bar-actions{display:flex;gap:4px;margin-left:auto}.icon{background:none;color:var(--text);font-size:20px;width:40px;height:40px;display:grid;place-items:center;padding:0;border-radius:10px}.icon:active{background:var(--surface)}.spin{display:inline-block;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.banner{padding:8px 14px;font-size:13px}.banner.bad{background:#3a1620;color:var(--bad)}.bridge-pill{width:40px}.bridge-dot{width:11px;height:11px;border-radius:50%;display:inline-block;flex-shrink:0;background:var(--text-dim);box-shadow:0 0 0 3px #ffffff0a}.bridge-dot.connected{background:var(--ok);box-shadow:0 0 0 3px #46d19e2e}.bridge-dot.needs_login{background:#f6b73c;box-shadow:0 0 0 3px #f6b73c2e}.bridge-dot.connecting{background:var(--accent);animation:pulse 1.2s ease-in-out infinite}.bridge-dot.error{background:var(--bad);box-shadow:0 0 0 3px #ff6b6b2e}.bridge-dot.offline,.bridge-dot.unknown{background:var(--text-dim)}.bridge-check{display:flex;align-items:center;gap:8px;margin-top:8px;padding:9px 12px;width:100%;justify-content:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;font-size:13px}.bridge-check .link{padding:2px 6px;margin-left:2px}.tiny{font-size:11px;opacity:.8}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#050a1699;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;padding:20px}.sheet{width:100%;max-width:340px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px;display:flex;flex-direction:column;gap:12px;box-shadow:0 20px 60px #00000080}.sheet-head{display:flex;align-items:center;gap:10px}.sheet-head strong{flex:1;font-size:16px}.sheet-head .icon{width:32px;height:32px;font-size:16px}.bridge-state{margin:0;font-size:15px;font-weight:600}.sheet .subtle{margin:0;text-align:left}.qr-wrap{display:flex;flex-direction:column;gap:8px;align-items:center}.qr{width:220px;height:220px;background:#fff;border-radius:12px;padding:10px;image-rendering:pixelated}.list{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.empty{text-align:center;color:var(--text-dim);padding:40px 20px;font-size:15px}.row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:none;color:var(--text);padding:11px 14px;border-radius:0;border-bottom:1px solid var(--line);font-weight:400}.row:active{background:var(--surface)}.avatar{border-radius:50%;object-fit:cover;flex-shrink:0}.avatar.fallback{display:grid;place-items:center;color:#fff;font-weight:700;font-size:17px}.row-body{flex:1;min-width:0}.row-top{display:flex;align-items:baseline;gap:8px}.row-name{font-weight:600;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-time{margin-left:auto;color:var(--text-dim);font-size:12px;flex-shrink:0}.row-preview{color:var(--text-dim);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.you{color:var(--text-dim)}.vip{background:#caa23a;color:#1a1300;font-size:10px;font-weight:700;padding:1px 5px;border-radius:5px;margin-left:6px}.flag{margin-left:6px;font-size:12px;color:var(--text-dim)}.pin{margin-left:6px}.thread-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px;display:flex;flex-direction:column;gap:4px;background:linear-gradient(180deg,var(--bg),var(--bg-2))}.msg{display:flex;margin:2px 0}.msg.in{justify-content:flex-start}.msg.out{justify-content:flex-end}.bubble{max-width:78%;padding:8px 11px;border-radius:16px;font-size:15px;line-height:1.35;word-wrap:break-word;overflow-wrap:anywhere}.msg.in .bubble{background:var(--in);border-bottom-left-radius:5px}.msg.out .bubble{background:var(--out);border-bottom-right-radius:5px}.msg-text{white-space:pre-wrap}.msg-img{max-width:220px;border-radius:12px;display:block}.media-chip{font-size:14px;opacity:.9;padding:2px 0}.msg-meta{font-size:10px;color:#ffffff8c;text-align:right;margin-top:3px;display:flex;gap:5px;justify-content:flex-end}.msg.out .mark{color:#fffc}.composer{display:flex;gap:8px;align-items:flex-end;padding:8px 10px calc(8px + var(--safe-bottom));background:var(--bg-2);border-top:1px solid var(--line)}.composer textarea{flex:1;resize:none;max-height:120px;border-radius:20px;padding:10px 14px;line-height:1.3}.send{width:44px;height:44px;border-radius:50%;padding:0;font-size:18px;flex-shrink:0;display:grid;place-items:center}
