*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:15px;background:#16161a;color:#e8e8ea}#app,.app{display:flex;flex-direction:column;height:100vh}button{font-family:inherit;font-size:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}input,textarea{font-family:inherit;font-size:inherit}.error{background:#b04141;color:#fff;padding:10px 16px;text-align:center;cursor:pointer;font-size:14px}.error .x{margin-left:8px;opacity:.7}.lobby .error{cursor:default;border-radius:8px;margin-bottom:16px;text-align:left;line-height:1.4}.lobby{margin:auto;max-width:380px;padding:32px 24px;text-align:center;width:100%}.lobby .logo{font-size:56px;line-height:1}.lobby h1{font-size:26px;font-weight:600;margin:8px 0 4px;letter-spacing:-.5px}.lobby .tagline{color:#888889;font-size:14px;margin:0 0 28px;line-height:1.5}.lobby .primary{width:100%;padding:12px;font-size:15px;background:#4caf7d;color:#fff;border:0;border-radius:10px;font-weight:500;transition:background .15s}.lobby .primary:hover{background:#5cbf8d}.lobby .sep{color:#4a4a4d;margin:18px 0;font-size:12px;letter-spacing:1px}.lobby .join-form{display:flex;gap:8px}.lobby input[type=text]{flex:1;padding:11px 14px;border-radius:10px;border:0;background:#ffffff0d;color:#e8e8ea;outline:none;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:14px;transition:background .15s}.lobby input[type=text]:focus{background:#ffffff14}.lobby .join-form button{padding:11px 18px;background:transparent;color:#c8c8ca;border:0;border-radius:10px;transition:background .15s,color .15s}.lobby .join-form button:hover:not(:disabled){background:#ffffff0f;color:#fff}.lobby .opt-row{display:flex;align-items:center;gap:8px;margin-top:18px;font-size:12px;color:#888889;cursor:pointer;-webkit-user-select:none;user-select:none}.lobby .opt-row input[type=checkbox]{margin:0;accent-color:#4caf7d}.lobby .hint{color:#66666a;font-size:12px;margin-top:18px;line-height:1.6}.lobby .hint-faint{color:#4a4a4d;font-style:italic}.room{flex:1;display:flex;flex-direction:column;max-width:860px;width:100%;margin:0 auto;min-height:0}.room header{display:flex;align-items:center;padding:14px 18px;border-bottom:1px solid rgba(255,255,255,.05);gap:8px}.room .room-id{flex:1;cursor:pointer;display:flex;align-items:baseline;gap:10px;-webkit-user-select:none;user-select:none}.room .room-id .label{font-size:11px;color:#66666a;text-transform:uppercase;letter-spacing:1px}.room .room-id .value{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:14px;color:#c8c8ca}.room .room-id .copied{font-size:12px;color:#4caf7d}.room .leave{background:transparent;color:#9a9a9c;border:0;padding:6px 12px;border-radius:8px;font-size:13px;transition:background .15s,color .15s}.room .leave:hover{background:#ffffff0f;color:#e8e8ea}.icon-btn{background:transparent;color:#c8c8ca;border:0;padding:6px 9px;border-radius:8px;font-size:14px;line-height:1;transition:background .15s,opacity .15s}.icon-btn:hover{background:#ffffff0f}.icon-btn.off{opacity:.4}.sas-banner{background:#d4a64a1f;color:#e6c97d;padding:10px 18px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;border-bottom:1px solid rgba(212,166,74,.15)}.sas-label{font-size:13px}.sas-code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:20px;font-weight:600;letter-spacing:2px;color:#f0d68a}.verify-btn{margin-left:auto;padding:6px 14px;background:#ffffff0f;color:#e6c97d;border:0;border-radius:8px;font-size:13px;font-weight:500;transition:background .15s}.verify-btn:hover{background:#ffffff1f}.sas-verified{background:transparent;color:#8ec0a0;padding:5px 18px;font-size:11px;font-family:ui-monospace,SF Mono,Menlo,monospace;border-bottom:1px solid rgba(255,255,255,.04)}.diag{margin:0;padding:8px 16px;font:11px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;background:#0000000f;max-height:40vh;overflow:auto;white-space:pre-wrap}.status-line{padding:10px 18px;background:transparent;color:#6a6a6c;font-size:13px;text-align:center}.messages{flex:1;overflow-y:auto;padding:16px 18px;display:flex;flex-direction:column;gap:6px}.msg{display:flex}.msg.me{justify-content:flex-end}.msg.them{justify-content:flex-start}.msg.system{justify-content:center}.msg.system .bubble{background:none;color:#55555a;font-size:12px;padding:4px 0}.bubble{max-width:70%;padding:6px 11px 7px;border-radius:14px;word-wrap:break-word;line-height:1.35}.bubble .text{white-space:pre-wrap}.msg.me .bubble{background:#4caf7d;color:#fff;border-bottom-right-radius:4px}.msg.them .bubble{background:#ffffff12;color:#e8e8ea;border-bottom-left-radius:4px}.msg.them.unverified .bubble{opacity:.78;border:1px dashed rgba(212,166,74,.5);background:#ffffff0a}.msg.them.unverified:before{content:"⚠";color:#d4a64a;align-self:flex-end;margin-right:4px;font-size:12px;line-height:1.6;opacity:.7}.msg.recalled .bubble.recalled-bubble{background:transparent;border:1px dashed rgba(255,255,255,.1);color:#66666a;font-style:italic;font-size:13px;padding:6px 12px;border-radius:12px}.recall-btn{background:transparent;color:#c8c8ca;border:0;width:0;height:24px;border-radius:50%;font-size:14px;line-height:1;padding:0;margin:0;flex-shrink:0;overflow:hidden;opacity:0;cursor:pointer;transition:width .15s ease,margin-right .15s ease,opacity .12s,background .12s}.msg.me:hover .recall-btn,.recall-btn:focus{width:24px;margin-right:6px;background:#ffffff0f;opacity:1}.recall-btn:hover{background:#ffffff1f}@media (hover: none){.recall-btn{width:24px;margin-right:6px;background:#ffffff0f;opacity:.7}}.bubble .meta{display:inline-flex;align-items:center;gap:4px;margin-left:8px;font-size:10px;line-height:1;opacity:.7;vertical-align:baseline;white-space:nowrap;position:relative;top:1px}.bubble .meta:empty{display:none}.bubble.file .meta.meta-row{display:flex;justify-content:flex-end;margin:4px 4px 0;position:static}.ttl-badge{font-family:ui-monospace,SF Mono,Menlo,monospace;letter-spacing:.3px}.tick{display:inline-block;vertical-align:middle;margin-bottom:1px}.tick-read{color:#d0f5dc;opacity:1}.bubble.file{min-width:220px;padding:8px}.file-image{max-width:100%;max-height:260px;border-radius:8px;display:block;margin-bottom:6px}.file-row{display:flex;justify-content:space-between;gap:12px;font-size:12px;padding:0 4px}.file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.file-size{opacity:.7;flex-shrink:0}.progress{height:3px;background:#ffffff26;border-radius:2px;margin:6px 4px 2px;overflow:hidden}.progress-bar{height:100%;background:#fff;transition:width .15s linear}.progress-text{font-size:11px;opacity:.7}.progress-row{display:flex;align-items:center;justify-content:space-between;padding:0 4px;margin-top:2px}.cancel-btn{background:transparent;color:#ffffffd9;border:1px solid rgba(255,255,255,.3);border-radius:50%;width:18px;height:18px;font-size:10px;line-height:1;padding:0;cursor:pointer}.cancel-btn:hover{background:#ffffff26;border-color:#ffffff80}.download{display:inline-block;margin:6px 4px 0;padding:5px 12px;background:#ffffff26;color:inherit;text-decoration:none;border-radius:6px;font-size:12px;transition:background .12s}.download:hover{background:#ffffff38}.err{margin-top:6px;padding:0 4px;font-size:12px;color:#ffb0b0}.composer-wrap{position:relative;padding:10px 16px 14px;border-top:1px solid rgba(255,255,255,.05)}.composer{display:flex;gap:6px;align-items:flex-end}.composer .attach{background:transparent;color:#a8a8aa;border:0;padding:8px 10px;border-radius:8px;font-size:16px;display:inline-flex;align-items:center;gap:3px;transition:background .12s,color .12s}.composer .attach:hover{background:#ffffff0f;color:#e8e8ea}.composer .attach .ttl-label{font-size:11px;color:#d4a64a;font-weight:600}.composer .text-input{flex:1;padding:9px 14px;border-radius:18px;border:0;background:#ffffff0d;color:#e8e8ea;outline:none;resize:none;font-family:inherit;font-size:inherit;line-height:1.4;max-height:120px;overflow-y:auto;transition:background .15s}.composer .text-input:focus{background:#ffffff14}.composer .text-input::placeholder{color:#66666a}.composer .send{background:transparent;color:#4caf7d;border:0;padding:8px 14px;font-weight:500;font-size:14px;border-radius:8px;transition:background .12s,color .12s}.composer .send:hover:not(:disabled){background:#4caf7d1f}.composer .send:disabled{color:#fff3;opacity:1}.drop-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#4caf7de0;color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:500;pointer-events:none;z-index:10}
