:root{--bg:#0f0f13;--bg-alt:#14141a;--border:#26262e;--fg:#c9c9c2;--dim:#6b6b74;--accent:#98c379;--warn:#e5c07b;--error:#e06c75;--bar-bg:#1c2a52;--bar-fg:#b9c5ec;--sel-bg:#232334;--verify-bg:#3a2f14;--join:#4a7a4a;--part:#7a4a4a;--link:#61afef;--font:ui-monospace, "JetBrains Mono", Menlo, Monaco, "Cascadia Mono", "Courier New", monospace;--nick-0:#e06c75;--nick-1:#98c379;--nick-2:#e5c07b;--nick-3:#61afef;--nick-4:#c678dd;--nick-5:#56b6c2;--nick-6:#d19a66;--nick-7:#f47fb0;--nick-8:#8ab4f8;--nick-9:#7ee787;--nick-10:#ffa657;--nick-11:#79c0ff}:root[data-theme=light]{--bg:#fbfbf7;--bg-alt:#f1f1e9;--border:#d9d9cd;--fg:#26261f;--dim:#82827a;--accent:#3e7d1f;--warn:#8a5d00;--error:#b3383f;--bar-bg:#d7e0f6;--bar-fg:#24397a;--sel-bg:#e6e6d8;--verify-bg:#f7edc9;--join:#2e7d32;--part:#a04545;--link:#1a6fc4;--nick-0:#b3383f;--nick-1:#4a7d23;--nick-2:#9a6b00;--nick-3:#1a6fc4;--nick-4:#8e44ad;--nick-5:#0f7f8b;--nick-6:#a15c1e;--nick-7:#c2185b;--nick-8:#2f5bb7;--nick-9:#2e7d32;--nick-10:#b45309;--nick-11:#0b64a0}*{box-sizing:border-box}html,body,#root{overscroll-behavior:none;height:100%;margin:0;overflow:hidden}body{background:var(--bg);color:var(--fg);font-family:var(--font);font-size:13px;line-height:1.45}.app{height:var(--vvh,100%);flex-direction:column;display:flex}.app.centered{justify-content:center;align-items:center}.dim{color:var(--dim)}.spacer{flex:1}.linkbtn{color:var(--dim);font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.linkbtn:hover{color:var(--fg);text-decoration:underline}.statusbar{background:var(--bar-bg);color:var(--bar-fg);white-space:nowrap;align-items:center;gap:8px;padding:3px 8px;display:flex;overflow:hidden}.statusbar .chunk.warn{color:var(--warn)}.statusbar .chunk.flash{color:var(--warn);text-overflow:ellipsis;overflow:hidden}.statusbar .linkbtn{color:var(--bar-fg)}.verifybar{background:var(--verify-bg);color:var(--warn);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;padding:3px 8px;display:flex}.verifybar .linkbtn{color:var(--warn);font-weight:700}.sas{gap:10px;display:inline-flex}.sasemoji{font-size:20px;line-height:1}.topicbar .mode{color:var(--accent)}.main{flex:1;min-height:0;display:flex}.roomlist{width:var(--roomlist-w,220px);background:var(--bg-alt);border-right:1px solid var(--border);flex-shrink:0;padding:4px 0;overflow-y:auto}.roomlist-tools{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:4px 10px;margin-bottom:4px;padding:2px 10px 6px;display:flex}.roomlist-header{width:100%;color:var(--dim);text-transform:lowercase;text-align:left;align-items:center;gap:6px;padding:6px 10px 2px;display:flex}button.roomlist-header:hover{color:var(--fg);text-decoration:none}.roomlist-headerrow{align-items:center;display:flex}.roomlist-headerrow .roomlist-header{flex:1}.browsebtn{padding:6px 10px 2px 0}.roomitem.highlight{color:var(--error)}.roomitem.highlight .badge{background:var(--error)}.roomitem{width:100%;color:var(--dim);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:2px 10px;display:flex}.roomitem:hover{color:var(--fg)}.roomitem.selected{background:var(--sel-bg);color:var(--fg)}.roomitem.unread{color:var(--accent)}.roomitem.invite{color:var(--warn)}.roomitem.muted{opacity:.55;font-style:italic}.mutemark{color:var(--dim)}.roomitem-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.badge{color:var(--bg);background:var(--accent);border-radius:2px;padding:0 5px}.roomitem.invite .badge{background:var(--warn)}.chat{flex-direction:column;flex:1;min-width:0;display:flex}.topicbar{background:var(--bar-bg);color:var(--bar-fg);white-space:nowrap;align-items:center;gap:6px;padding:3px 10px;display:flex;overflow:hidden}.topicbar .topic{text-overflow:ellipsis;flex-shrink:1;min-width:0;overflow:hidden}.topicbar .linkbtn{color:var(--bar-fg);flex-shrink:0}.topicbar .roomname{flex-shrink:0;font-weight:700}.log{overflow-wrap:break-word;flex:1;padding:6px 10px;overflow-y:auto}.loadolder{margin:0 auto 6px;display:block}.line{white-space:pre-wrap}.line .ts{color:var(--dim)}.line .nick{font-weight:700}.line.system{color:var(--dim)}.line.system.join{color:var(--join)}.line.system.part{color:var(--part)}.line.action{font-style:italic}.line.notice{color:var(--warn)}.line a{color:var(--link)}.inline-image{border:1px solid var(--border);max-width:min(420px,100%);max-height:240px;margin:3px 0 4px;display:block}.inputbar .attach{white-space:nowrap}.inputbar{background:var(--bg-alt);border-top:1px solid var(--border);align-items:center;gap:6px;padding:4px 8px;display:flex}.inputbar .prompt{color:var(--accent);white-space:nowrap;font-size:.85em}.inputbar input{color:var(--fg);font:inherit;caret-color:var(--accent);background:0 0;border:none;outline:none;flex:1}.overlay{z-index:10;background:#000000a6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.settings{background:var(--bg-alt);border:1px solid var(--border);width:min(720px,94vw);height:min(500px,88vh);display:flex}.settings-tabs{border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:160px;padding:8px 0;display:flex}.settings-title{color:var(--accent);padding:4px 12px 10px}.settings-tab{color:var(--dim);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;padding:4px 12px}.settings-tab:hover{color:var(--fg)}.settings-tab.active{background:var(--sel-bg);color:var(--fg)}.settings-content{flex:1;min-width:0;padding:14px 18px;overflow-y:auto}.settings-content h3{font-size:inherit;color:var(--accent);margin:0 0 12px}.setting-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.setting-label{width:110px;color:var(--dim);text-align:right;flex-shrink:0}.settings-content input[type=text],.settings-content input:not([type]),.settings-content select{background:var(--bg);border:1px solid var(--border);color:var(--fg);font:inherit;outline:none;padding:2px 6px}.settings-content input:focus,.settings-content select:focus{border-color:var(--accent)}.setting-status{color:var(--warn);margin:10px 0}.avatar-img{object-fit:cover;border:1px solid var(--border);width:40px;height:40px}.devicelist{border-top:1px solid var(--border);margin-top:12px;padding-top:8px}.devicerow{flex-wrap:wrap;align-items:baseline;gap:10px;padding:2px 0;display:flex}.dev-ok{color:var(--accent)}.dev-warn{color:var(--error)}.dev-name{min-width:160px}.spacebrowser{background:var(--bg-alt);border:1px solid var(--border);flex-direction:column;width:min(760px,94vw);height:min(560px,90vh);display:flex}.sb-header{background:var(--bar-bg);color:var(--bar-fg);align-items:center;gap:10px;padding:6px 12px;display:flex}.sb-header .linkbtn{color:var(--bar-fg)}.sb-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sb-status{color:var(--warn);padding:3px 12px}.sb-list{flex:1;padding:8px 12px;overflow-y:auto}.sb-space{color:var(--accent);margin:8px 0 2px}.sb-row{align-items:baseline;gap:8px;min-width:0;padding:1px 0;display:flex}.sb-name{color:var(--fg);white-space:nowrap}.sb-joined{color:var(--accent)}.sb-sugg{color:var(--warn)}.sb-topic{text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;overflow:hidden}.loginbox,.boot{background:var(--bg-alt);border:1px solid var(--border);min-width:340px;padding:20px 24px}.logintitle{color:var(--accent);text-align:center;margin-bottom:14px}.loginbox label{align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.loginbox label span{width:80px;color:var(--dim);text-align:right}.loginbox input{background:var(--bg);border:1px solid var(--border);color:var(--fg);font:inherit;outline:none;flex:1;padding:3px 6px}.loginbox input:focus{border-color:var(--accent)}.loginbox button[type=submit]{background:var(--bg);border:1px solid var(--accent);color:var(--accent);font:inherit;cursor:pointer;margin:14px auto 0;padding:4px 18px;display:block}.loginbox button[type=submit]:hover:not(:disabled){background:var(--accent);color:var(--bg)}.loginbox button[type=submit]:disabled{opacity:.5;cursor:default}.loginerror{color:var(--error);max-width:400px;margin-top:8px}.menubtn,.drawer-backdrop{display:none}@media (width<=700px){.menubtn{font-weight:700;display:inline}.main{position:relative}.roomlist{z-index:20;width:min(80vw,300px);transition:transform .2s;position:absolute;top:0;bottom:0;left:0;transform:translate(-105%)}.main.sidebar-open .roomlist{transform:translate(0);box-shadow:0 0 24px #00000080}.main.sidebar-open .drawer-backdrop{z-index:15;background:#0006;display:block;position:absolute;inset:0}.inputbar input,.loginbox input{font-size:16px}.inputbar .prompt{display:none}.inputbar input{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:4px 8px}.statusbar{padding-top:calc(3px + env(safe-area-inset-top))}.statusbar .chunk.ident{display:none}.settings{flex-direction:column;width:94vw;height:min(560px,92vh)}.settings-tabs{border-right:none;border-bottom:1px solid var(--border);flex-direction:row;width:auto;padding:4px;overflow-x:auto}.settings-title{display:none}.inputbar{padding-bottom:calc(4px + env(safe-area-inset-bottom))}.kb-open .inputbar{padding-bottom:4px}}.reaction{border:1px solid var(--border);color:var(--dim);font:inherit;cursor:pointer;vertical-align:middle;background:0 0;border-radius:3px;margin-left:6px;padding:0 4px;font-size:.85em}.reaction:hover{color:var(--fg)}.reaction.mine{border-color:var(--accent);color:var(--accent)}.reactbtn{color:var(--dim);font:inherit;cursor:pointer;opacity:.4;background:0 0;border:none;margin-left:6px;padding:0 2px;font-size:.85em}.line:hover .reactbtn,.reactbtn:hover{opacity:1;color:var(--fg)}.caption{display:block}.typingbar{color:var(--dim);min-height:calc(1.45em + 2px);padding:0 10px 2px;font-style:italic}.lightbox{z-index:30;background:#000000e0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox img{border:1px solid var(--border);max-width:94vw;max-height:88vh}.lightbox-nav{font:inherit;color:#ddd;cursor:pointer;z-index:31;background:0 0;border:none;padding:24px 16px;font-size:32px;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-nav.prev{left:4px}.lightbox-nav.next{right:4px}.lightbox-caption{text-align:center;color:#bbb;position:absolute;bottom:10px;left:0;right:0}.nettag{opacity:.9;border:1px solid;border-radius:3px;flex-shrink:0;margin:0 5px 0 0;padding:0 3px;font-size:.8em;line-height:1.3}.topicbar .nettag{margin:0 0 0 6px}.nettag.whatsapp{color:#1fa855}.nettag.telegram{color:#2aa3e0}.nettag.signal{color:#3a76f0}.nettag.discord{color:#5865f2}.nettag.slack{color:#e01e5a}.nettag.instagram{color:#d6408b}.nettag.facebook{color:#0084ff}.nettag.irc,.nettag.matrix{color:var(--dim)}.netdomain{color:var(--dim);opacity:.8;font-size:.85em}.chatbody{flex:1;min-height:0;display:flex}.memberlist{width:var(--memberlist-w,180px);border-left:1px solid var(--border);background:var(--bg-alt);flex-shrink:0;padding:4px 0;overflow-y:auto}.memberlist-header{color:var(--dim);border-bottom:1px solid var(--border);margin-bottom:4px;padding:2px 10px 6px}.memberitem{white-space:nowrap;text-overflow:ellipsis;padding:1px 10px;overflow:hidden}.memberprefix{color:var(--warn);white-space:pre}.infobox{background:var(--bg-alt);border:1px solid var(--border);width:min(560px,94vw);max-height:88vh;padding:12px 16px;overflow-y:auto}.infobox-title{color:var(--accent);align-items:center;gap:8px;margin-bottom:10px;display:flex}.inforow{gap:10px;margin-bottom:4px;display:flex}.infolabel{width:110px;color:var(--dim);text-align:right;flex-shrink:0}.infovalue{overflow-wrap:anywhere;white-space:pre-wrap}@media (width<=700px){.chatbody{position:relative}.memberlist{z-index:18;width:min(70vw,240px);position:absolute;top:0;bottom:0;right:0;box-shadow:0 0 24px #00000080}}.replybar{color:var(--dim);white-space:nowrap;text-overflow:ellipsis;padding:0 10px 2px;overflow:hidden}.replybar .linkbtn{margin-left:8px}.replyquote{color:var(--dim);display:block}.line .nick,.line .nickclick{cursor:pointer}.line .nick:hover,.line .nickclick:hover{text-decoration:underline}button.memberitem{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;gap:2px;width:100%;display:flex}button.memberitem:hover{background:var(--sel-bg)}.resizer{cursor:col-resize;background:0 0;flex-shrink:0;width:5px;transition:background .15s}.resizer:hover,.resizer:active{background:var(--accent);opacity:.5}@media (width<=700px){.resizer{display:none}}
