:root{--bg: #f6f7f9;--panel: #ffffff;--text: #15181d;--muted: #6b7280;--line: #e5e7eb;--accent: #2563eb;--accent-text: #ffffff;--mine: #2563eb;--theirs: #eef0f3;--ok: #16a34a;--bad: #dc2626;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #0f1115;--panel: #171a20;--text: #e8eaed;--muted: #9aa0a6;--line: #2a2e36;--theirs: #232831}}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:15px/1.45 system-ui,-apple-system,Segoe UI,sans-serif}button{font:inherit;border:0;border-radius:8px;padding:8px 14px;cursor:pointer;background:var(--accent);color:var(--accent-text)}button:disabled{opacity:.45;cursor:default}button.ghost{background:transparent;color:var(--text)}button.wide{margin:12px;width:calc(100% - 24px)}input,textarea{font:inherit;color:inherit;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px 10px;width:100%}h1{margin:0 0 4px;font-size:24px}h2{font-size:15px;margin:18px 0 6px}.muted{color:var(--muted)}.small{font-size:12px}.center{display:grid;place-items:center;height:100%;padding:16px;text-align:center}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px;width:min(440px,100%);text-align:left}.onboard{display:grid;gap:14px}.onboard label{display:grid;gap:6px;font-weight:600}.banner{background:var(--theirs);border-radius:8px;padding:8px 10px;margin:0}.row{display:flex;gap:8px;align-items:center;margin-top:8px}.row.end{justify-content:flex-end}.modal{position:fixed;inset:0;background:#0008;display:grid;place-items:center;padding:16px}.layout{display:grid;grid-template-columns:300px 1fr;height:100%}aside{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}aside>header{display:flex;justify-content:space-between;align-items:center;padding:14px;border-bottom:1px solid var(--line);gap:8px}.relays{font-size:12px;white-space:nowrap}.relays.ok:before{content:"● ";color:var(--ok)}.relays.bad:before{content:"● ";color:var(--bad)}.new{display:flex;gap:6px;padding:12px}.new button{flex:1;padding:8px 6px;font-size:13px}.convs{overflow-y:auto;flex:1}.convs h3{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:12px 16px 4px}.convs ul{list-style:none;margin:0;padding:0}.convs li{padding:10px 16px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.convs li.active,.convs li:hover{background:var(--theirs)}.convs li.gone{color:var(--muted)}.convs .empty{padding:12px 16px}main{min-width:0;min-height:0}.conv{display:flex;flex-direction:column;height:100%}.conv>header,.thread>header{display:flex;align-items:baseline;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line);background:var(--panel)}.grow{flex:1}.panes{flex:1;display:flex;min-height:0}.pane{flex:1;display:flex;flex-direction:column;min-width:0}.pane.thread{flex:0 0 min(380px,45%);border-left:1px solid var(--line)}.channels{display:flex;flex-wrap:wrap;gap:6px;padding:8px 16px;border-bottom:1px solid var(--line);background:var(--panel)}.channels input{width:160px;padding:4px 8px}.row.inline{margin:0}.chip{padding:3px 10px;border-radius:999px;font-size:13px;background:var(--theirs);color:var(--text)}.chip.active{background:var(--accent);color:var(--accent-text)}.chip.ghost{background:transparent;color:var(--muted)}.back{display:none;padding:0 8px 0 0;font-size:22px;line-height:1}.msgs{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:6px}.msg{max-width:min(75%,560px);align-self:flex-start;position:relative}.from{font-size:12px;font-weight:600;margin:0 4px 2px}.bubble.deleted{font-style:italic;opacity:.6}.reactions{display:flex;gap:4px;margin-top:3px;flex-wrap:wrap}.mine .reactions{justify-content:flex-end}.reactions .chip{padding:1px 8px;font-size:12px}.actions{display:none;position:absolute;top:-14px;right:0;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:1px;white-space:nowrap;z-index:1}.msg:not(.mine) .actions{right:auto;left:0}.msg:hover .actions,.msg:focus-within .actions{display:flex}.actions button{padding:2px 6px;font-size:14px}button.link{background:none;color:var(--accent);padding:0 0 0 8px;font-size:11px}.msg.mine{align-self:flex-end;text-align:right}.bubble{display:inline-block;text-align:left;padding:8px 12px;border-radius:14px;background:var(--theirs);white-space:pre-wrap;overflow-wrap:anywhere}.mine .bubble{background:var(--mine);color:#fff}.meta{font-size:11px;color:var(--muted);margin:2px 4px 0}.system{align-self:center;font-size:12px;color:var(--muted)}.composer{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line);background:var(--panel)}.composer textarea{resize:none;max-height:140px}@media(max-width:700px){.layout{grid-template-columns:1fr}.layout.has-conv aside{display:none}.layout:not(.has-conv) main{display:none}.back{display:inline}}.hdr-right{display:grid;justify-items:end;gap:2px}.hdr-right button{padding:2px 0}.restore{display:grid;gap:8px;font-weight:400}.error{color:var(--bad);margin:0;font-size:13px}.picker{list-style:none;margin:0;padding:0;max-height:240px;overflow-y:auto}.picker li{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}.picker label{display:flex;gap:8px;align-items:center;cursor:pointer}.picker input[type=checkbox]{width:auto}.tag{font-size:11px;background:var(--theirs);border-radius:6px;padding:1px 6px;margin-left:6px}.danger{color:var(--bad)!important}.code{font-family:ui-monospace,monospace;letter-spacing:.08em}@media(max-width:700px){.pane.thread{position:fixed;inset:0;background:var(--bg);z-index:2}.actions{position:static;display:flex;opacity:.6}}.composer-wrap{border-top:1px solid var(--line);background:var(--panel)}.composer-wrap .composer{border-top:0}.composer-status{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:8px 12px 0;font-size:13px}.composer-status input{width:auto;padding:2px 6px}.tools{display:flex;align-items:center}.tools button{padding:6px;font-size:16px}.tools button[title=GIF]{font-size:11px;font-weight:700}.recording{align-items:center}.rec-dot{color:var(--bad);animation:blink 1s infinite}@keyframes blink{50%{opacity:.2}}.rec-preview{width:96px;height:96px;border-radius:50%;object-fit:cover}.bubble.media{padding:4px;background:transparent}.mine .bubble.media{background:transparent;color:inherit}.attachment{display:block;max-width:min(320px,100%);height:auto;border-radius:10px;background:var(--theirs)}.attachment.loading{display:grid;place-items:center;min-height:80px;min-width:160px}video.attachment{max-height:360px}audio.voice{max-width:260px;height:40px}.file{display:inline-block;padding:8px 12px;border-radius:10px;background:var(--theirs);color:var(--text);text-decoration:none}.gifs{width:min(560px,100%)}.gif-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px;max-height:50vh;overflow-y:auto;margin-top:10px}.gif-grid button{padding:0}.gif-grid img{width:100%;height:auto;display:block;border-radius:6px}.settings{padding:10px 14px;border-top:1px solid var(--line)}.toggle{display:flex;gap:8px;align-items:center;cursor:pointer}.toggle input{width:auto}.call-banner{position:fixed;top:12px;left:50%;transform:translate(-50%);z-index:20;display:flex;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:10px 14px;box-shadow:0 8px 30px #0004;max-width:calc(100% - 32px)}.call-toast{position:fixed;bottom:16px;left:50%;transform:translate(-50%);z-index:20;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 14px}.call{position:fixed;inset:0;z-index:15;background:#0b0d12f2;color:#fff;display:flex;flex-direction:column}.call header,.call footer{display:flex;gap:12px;align-items:baseline;justify-content:center;padding:14px;flex-wrap:wrap}.call .muted{color:#b9bec7}.tiles{flex:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:8px;padding:8px;min-height:0}.tile{margin:0;position:relative;background:#000;border-radius:12px;overflow:hidden;display:grid;place-items:center;min-height:120px}.tile video{width:100%;height:100%;object-fit:cover}.call.audio .tile video{height:0}.call.audio .tile{min-height:80px}.tile figcaption{position:absolute;left:8px;bottom:6px;font-size:13px;background:#0008;padding:2px 8px;border-radius:6px}.call.audio .tile figcaption{position:static;background:none;font-size:18px}.call footer button.ghost{color:#fff;border:1px solid #fff4}.hangup{background:var(--bad)}.e2ee{text-align:center;margin:0 0 12px}
