:root{--bg: #0b141a;--panel: #111b21;--panel-2: #202c33;--line: #2a3942;--text: #e9edef;--muted: #8696a0;--accent: #25d366;--accent-dark: #005c4b;--bubble: #202c33;--danger: #f15c6d;--warn: #8a6d1d;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent}button{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:.5rem .9rem;cursor:pointer}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);color:#0b141a;border-color:var(--accent);font-weight:600}button.danger{color:var(--danger);border-color:var(--danger);background:transparent}button.link{background:none;border:none;color:var(--accent);padding:0 .3rem;text-decoration:underline}button.icon{background:none;border:none;font-size:1.3rem;padding:.3rem .5rem}button.small{font-size:.8rem;padding:.2rem .5rem}input,textarea{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:.6rem .8rem;width:100%}textarea{resize:none}h1{font-size:1.15rem;margin:0}h2{font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 .6rem}.muted{color:var(--muted)}.small{font-size:.8rem}.error{color:var(--danger);margin:.5rem 0}.splash{display:grid;place-items:center;height:100%;color:var(--muted)}.app{display:flex;flex-direction:column;height:100%;max-width:820px;margin:0 auto}.screen{flex:1;display:flex;flex-direction:column;min-height:0;position:relative}.screen.center{justify-content:center;align-items:center;padding:1rem}.banner{padding:.5rem 1rem;font-size:.85rem;text-align:center}.banner-warn{background:var(--warn)}.banner-soft{background:var(--panel-2);color:var(--muted)}.banner-info{background:var(--accent-dark)}.topbar{display:flex;align-items:center;gap:.5rem;padding:.7rem .8rem;background:var(--panel);border-bottom:1px solid var(--line);padding-top:max(.7rem,env(safe-area-inset-top))}.topbar h1{flex:1}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:1.5rem;width:100%;max-width:380px}.login{display:flex;flex-direction:column;gap:.8rem}.notice{margin:.8rem;padding:.8rem;background:var(--panel);border:1px solid var(--line);border-radius:10px}.notice p{margin:0 0 .6rem}.room-list{list-style:none;margin:0;padding:0;overflow-y:auto;flex:1}.room-list .empty{padding:2rem 1rem;text-align:center}.room-row{display:flex;align-items:center;gap:.8rem;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--line);border-radius:0;padding:.8rem 1rem}.avatar{flex:none;width:44px;height:44px;border-radius:50%;background:var(--accent-dark);display:grid;place-items:center;font-weight:600}.room-main{flex:1;min-width:0;display:flex;flex-direction:column}.room-name{font-weight:600}.room-preview{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.9rem}.room-side{display:flex;flex-direction:column;align-items:flex-end;gap:.3rem}.badge{background:var(--accent);color:#0b141a;border-radius:999px;padding:0 .45rem;font-size:.75rem;font-weight:700}.fab{position:absolute;right:1.2rem;bottom:calc(2.2rem + env(safe-area-inset-bottom));width:56px;height:56px;border-radius:50%;background:var(--accent);color:#0b141a;font-size:1.6rem;border:none}.whoami{text-align:center;padding:.5rem;margin:0}.form{display:flex;flex-direction:column;gap:1rem;padding:1rem;overflow-y:auto}.form label{display:flex;flex-direction:column;gap:.4rem}.section{padding:1rem;border-bottom:1px solid var(--line)}.section p{margin:0 0 .6rem}.row{display:flex;gap:.5rem;margin-top:.8rem}.picker{list-style:none;margin:0;padding:0}.picker label{display:flex;align-items:center;gap:.6rem;padding:.5rem 0}.picker input{width:auto}.picker label span:nth-child(2){flex:1}.members{list-style:none;margin:0;padding:0}.members li{display:flex;align-items:center;gap:.6rem;padding:.55rem 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.member-name{flex:1}.member-actions{display:flex;gap:.4rem}.room .room-title{flex:1;display:flex;flex-direction:column;align-items:flex-start;background:none;border:none;padding:0;text-align:left}.messages{flex:1;overflow-y:auto;padding:.8rem;display:flex;flex-direction:column;gap:.35rem}.load-older{align-self:center;margin-bottom:.5rem}.system{align-self:center;background:var(--panel);color:var(--muted);font-size:.8rem;padding:.3rem .7rem;border-radius:8px;margin:.3rem 0;text-align:center}.bubble{align-self:flex-start;max-width:80%;background:var(--bubble);border-radius:10px;padding:.4rem .6rem}.bubble.mine{align-self:flex-end;background:var(--accent-dark)}.bubble.pending{opacity:.7}.bubble.failed{border:1px solid var(--danger)}.bubble p{margin:0}.bubble .author{color:var(--accent);font-size:.8rem;font-weight:600}.bubble .body{white-space:pre-wrap;word-break:break-word}.bubble .meta{text-align:right;color:var(--muted);margin-top:.15rem}.bubble img{display:block;width:280px;max-width:100%;max-height:320px;height:auto;object-fit:contain;border-radius:6px;margin:.2rem 0;background:var(--panel)}.bubble .file{display:block;color:var(--text);text-decoration:none;padding:.3rem 0}.composer{display:flex;align-items:flex-end;gap:.4rem;padding:.5rem;background:var(--panel);border-top:1px solid var(--line);padding-bottom:max(.5rem,env(safe-area-inset-bottom))}.composer textarea{flex:1;max-height:8rem}.composer .send{border-radius:50%;width:44px;height:44px;padding:0;background:var(--accent);color:#0b141a;border:none}.composer-error{padding:0 .8rem;margin:.3rem 0}
