:root{--brand:#0f766e;--brand-dark:#115e59;--brand-soft:#ccfbf1;--bg:#eef1f4;--panel:#fff;--line:#e3e7eb;--text:#1f2937;--muted:#667781;--chat-bg:#efeae2;--bubble-in:#fff;--bubble-out:#d9fdd3;--danger:#c62828;--warn-bg:#fff4e5;--warn:#8a5300;--shadow:0 1px .5px #0b141a21;color:var(--text);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Color Emoji,sans-serif;font-size:15px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg)}button{font:inherit;color:inherit;cursor:pointer}input,textarea,select{font:inherit;color:inherit}a{color:var(--brand)}.muted{color:var(--muted)}.small{font-size:12.5px}.center{text-align:center}.right{text-align:right;white-space:nowrap}.grow{flex:1}.pre{white-space:pre-wrap}.pad{padding:8px 12px}.splash{height:100%;color:var(--brand);place-items:center;font-size:22px;font-weight:600;display:grid}.btn{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 14px;font-weight:500}.btn:hover{background:#f5f7f8}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-dark)}.btn.danger{color:var(--danger);border-color:#f2c5c5}.btn.small{padding:4px 10px;font-size:13px}.btn:disabled{opacity:.55;cursor:default}.icon-btn{color:#54656f;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;width:38px;height:38px;padding:0;text-decoration:none;display:inline-grid}.icon-btn:hover{background:#0000000f}.icon-btn:disabled{opacity:.4}label{flex-direction:column;gap:6px;font-size:13.5px;font-weight:500;display:flex}label input,label select,.modal textarea,.inline-form input,.filters input,.filters select,td select,td input{background:#fff;border:1px solid #d5dbe0;border-radius:8px;outline:none;padding:9px 11px;font-weight:400}label input:focus,.modal textarea:focus,td select:focus,.inline-form input:focus{border-color:var(--brand);box-shadow:0 0 0 3px #0f766e26}label.check{cursor:pointer;flex-direction:row;align-items:center;gap:8px;font-weight:400}.form-error{color:var(--danger);font-size:13.5px}.inline-form{align-items:center;gap:8px;display:flex}.inline-form input{flex:1}.login{background:linear-gradient(160deg, #0f766e 0 220px, var(--bg) 220px);place-items:center;min-height:100%;padding:20px;display:grid}.login-card{background:#fff;border-radius:14px;flex-direction:column;gap:16px;width:100%;max-width:380px;padding:28px;display:flex;box-shadow:0 10px 30px #0000001f}.brand{align-items:center;gap:12px;display:flex}.brand h1{margin:0;font-size:22px}.brand p{color:var(--muted);margin:2px 0 0;font-size:13.5px}.app{background:var(--panel);grid-template-columns:minmax(300px,400px) 1fr;max-width:1700px;height:100%;margin:0 auto;display:grid;box-shadow:0 0 20px #0000000d}.sidebar{border-right:1px solid var(--line);background:#fff;flex-direction:column;min-height:0;display:flex}.side-head{background:#f0f2f5;justify-content:space-between;align-items:center;min-height:59px;padding:10px 12px 10px 16px;display:flex}.me{align-items:center;gap:10px;font-size:17px;display:flex}.side-actions{align-items:center;gap:4px;display:flex}.banner{text-align:left;border:0;width:100%;padding:10px 16px;font-size:13.5px;display:block}.banner.warn{background:var(--warn-bg);color:var(--warn)}.banner.info{color:var(--brand-dark);background:#e7f6f4}.search{color:var(--muted);background:#f0f2f5;border-radius:8px;align-items:center;gap:8px;margin:8px 12px 4px;padding:0 12px;display:flex}.search input{background:0 0;border:0;outline:none;flex:1;padding:9px 0}.tabs{gap:6px;padding:6px 12px 8px;display:flex}.tabs button{color:var(--muted);background:#f0f2f5;border:0;border-radius:16px;padding:5px 12px;font-size:13.5px}.tabs button.active{background:var(--brand-soft);color:var(--brand-dark);font-weight:500}.chat-list{flex:1;margin:0;padding:0;list-style:none;overflow-y:auto}.chat-list .empty{color:var(--muted);padding:24px 20px;font-size:14px;line-height:1.5}.chat-item{color:inherit;align-items:center;gap:12px;padding:10px 14px;text-decoration:none;display:flex}.chat-item:hover{background:#f5f6f6}.chat-item.active{background:#f0f2f5}.chat-item.left{opacity:.6}.chat-item-body{border-bottom:1px solid #f0f2f5;flex:1;min-width:0;margin-bottom:-10px;padding-bottom:10px}.row1,.row2{justify-content:space-between;align-items:center;gap:8px;display:flex}.chat-name{white-space:nowrap;text-overflow:ellipsis;font-size:16px;overflow:hidden}.chat-time{color:var(--muted);flex:none;font-size:12px}.chat-time.unread{color:#1fa855;font-weight:600}.chat-preview{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:3px;min-width:0;font-size:14px;display:flex;overflow:hidden}.chat-preview .who{flex:none}.badge{color:#fff;background:#25d366;border-radius:12px;flex:none;place-items:center;min-width:20px;height:20px;padding:0 6px;font-size:12px;font-weight:600;display:grid}.row3{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.tag{color:var(--brand-dark);vertical-align:middle;background:#e7f6f4;border-radius:4px;margin-left:6px;padding:1px 6px;font-size:11.5px;font-weight:500;display:inline-block}.row3 .tag{margin-left:0}.tag.muted{color:var(--muted);background:#f0f2f5}.avatar{color:#fff;border-radius:50%;flex:none;place-items:center;font-weight:600;display:grid}.main{background:#f0f2f5;flex-direction:column;min-width:0;min-height:0;display:flex}.placeholder{text-align:center;max-width:440px;color:var(--muted);margin:auto;padding:30px}.placeholder h2{color:var(--text);font-weight:500}.chat{flex-direction:column;height:100%;display:flex;position:relative}.chat-head{border-left:1px solid var(--line);background:#f0f2f5;align-items:center;gap:4px;min-height:59px;padding:0 10px;display:flex}.chat-head .back{display:none}.chat-head-main{text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:12px;min-width:0;padding:6px;display:flex}.chat-head-text{min-width:0}.chat-title{white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:500;overflow:hidden}.chat-sub{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.chat-body{flex:1;min-height:0;display:flex}.messages{background-color:var(--chat-bg);background-image:radial-gradient(#00000009 1px,#0000 1px);background-size:18px 18px;flex:1;padding:12px 6% 16px;overflow-y:auto}.loading{text-align:center;color:var(--muted);padding:30px}.load-older{box-shadow:var(--shadow);background:#ffffffe6;border:0;border-radius:8px;margin:0 auto 10px;padding:6px 12px;font-size:13px;display:block}.day-sep{text-align:center;z-index:2;margin:12px 0 8px;position:sticky;top:4px}.day-sep span{color:var(--muted);box-shadow:var(--shadow);background:#fff;border-radius:8px;padding:5px 12px;font-size:12.5px}.system-msg{text-align:center;margin:8px 0}.system-msg span{color:#54656f;box-shadow:var(--shadow);background:#fff8c5;border-radius:8px;max-width:80%;padding:5px 12px;font-size:12.5px;display:inline-block}.msg-row{margin-top:10px;display:flex}.msg-row.grouped{margin-top:2px}.msg-row.out{justify-content:flex-end}.msg-row.highlight .bubble{animation:1.6s flash}@keyframes flash{0%,60%{box-shadow:0 0 0 4px #0f766e59}to{box-shadow:var(--shadow)}}.bubble{background:var(--bubble-in);max-width:min(65%,560px);box-shadow:var(--shadow);border-radius:8px;min-width:90px;padding:6px 8px 8px 9px;position:relative}.out .bubble,.bubble.out{background:var(--bubble-out)}.bubble.sticker{box-shadow:none;background:0 0}.bubble.static{max-width:100%}.sender{margin-bottom:2px;font-size:13px;font-weight:600}.sender.team{color:var(--brand-dark);font-size:12.5px;font-weight:600}.body{white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere;padding-right:4px;font-size:14.5px;line-height:1.4}.body ul,.body ol{white-space:normal;margin:2px 0;padding-left:22px}.body blockquote{color:#3b4a54;border-left:3px solid #0003;margin:2px 0;padding-left:8px}.body .mono,.body .mono-block{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:13px}.body .mono-block{white-space:pre-wrap;background:#0000000a;border-radius:6px;margin:2px 0;padding:6px 8px}.body .inline-code{background:#0000000f;border-radius:4px;padding:0 4px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px}.body .mention{color:#027eb5;font-weight:500}.meta{float:right;color:var(--muted);align-items:center;gap:4px;margin:4px 0 -4px 10px;font-size:11px;display:flex;position:relative;top:2px}.meta .edited{font-style:italic}.ticks{color:#8696a0}.ticks.read{color:#53bdeb}.ticks.err{color:var(--danger);font-weight:700}.deleted .body{font-style:italic}.msg-menu-btn{background:linear-gradient(to left, inherit 60%, transparent);color:#8696a0;opacity:0;background:0 0;border:0;border-radius:50%;place-items:center;width:26px;height:26px;transition:opacity .1s;display:grid;position:absolute;top:2px;right:2px}.bubble:hover .msg-menu-btn,.msg-menu-btn:focus{opacity:1}@media (pointer:coarse){.msg-menu-btn{opacity:.7}}.msg-menu{z-index:20;background:#fff;border-radius:10px;min-width:220px;padding:6px 0;position:absolute;top:28px;box-shadow:0 4px 18px #0000002e}.msg-menu.left{right:0}.msg-menu.right{left:0}.msg-menu>button,.msg-menu>a{text-align:left;width:100%;color:var(--text);background:0 0;border:0;align-items:center;gap:10px;padding:9px 16px;font-size:14px;text-decoration:none;display:flex}.msg-menu>button:hover,.msg-menu>a:hover{background:#f5f6f6}.msg-menu .danger{color:var(--danger)}.quick-react{border-bottom:1px solid #f0f2f5;gap:2px;margin-bottom:4px;padding:2px 8px 6px;display:flex}.quick-react button{background:0 0;border:0;border-radius:50%;width:32px;height:32px;padding:0;font-size:20px}.quick-react button:hover,.quick-react button.on{background:#e9edef}.reaction-picker{z-index:21;position:absolute;top:28px;right:0}.msg-row.in .reaction-picker{left:0;right:auto}.reactions{gap:2px;display:flex;position:absolute;bottom:-14px;right:8px}.msg-row.in .reactions{left:8px;right:auto}.reactions span{cursor:default;background:#fff;border-radius:12px;align-items:center;gap:2px;padding:1px 6px;font-size:14px;display:flex;box-shadow:0 1px 3px #0003}.reactions small{color:var(--muted);font-size:11px}.msg-row:has(.reactions){margin-bottom:16px}.msg-error{color:var(--danger);margin-top:4px;font-size:12.5px}.quoted{text-align:left;background:#0000000d;border:0;border-left:4px solid;border-radius:6px;width:100%;margin-bottom:5px;padding:5px 8px;font-size:13px;display:block}.quoted-name{font-size:12.5px;font-weight:600}.quoted-text{color:#54656f;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.media-img{background:#dfe5e7;border:0;border-radius:6px;width:calc(100% + 9px);max-width:330px;max-height:360px;margin:-2px -4px 4px -5px;padding:0;display:block;overflow:hidden}.media-img img{object-fit:cover;width:100%;height:100%;display:block}.media-sticker{object-fit:contain;width:150px;height:150px;display:block}.media-video{background:#000;border-radius:6px;width:330px;max-width:100%;max-height:360px;margin-bottom:4px;display:block}.media-doc{color:var(--text);background:#0000000d;border-radius:6px;align-items:center;gap:10px;min-width:240px;margin-bottom:4px;padding:10px;text-decoration:none;display:flex}.media-doc.big{width:100%;min-width:0}.media-doc>div{flex:1;min-width:0}.media-doc svg:first-child{color:#e05d44;flex:none}.doc-name{white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.media-missing{color:var(--muted);margin-bottom:4px;font-size:13px;font-style:italic}.audio{align-items:center;gap:8px;min-width:240px;padding:4px 0;display:flex}.audio-btn{color:#54656f;background:0 0;border:0;place-items:center;padding:0;display:grid}.audio-track{cursor:pointer;background:#00000026;border-radius:2px;flex:1;height:4px;position:relative}.audio-fill{background:var(--brand);border-radius:2px;position:absolute;inset:0 auto 0 0}.audio-time{color:var(--muted);min-width:34px;font-size:12px}.audio-rate{background:#00000014;border:0;border-radius:10px;padding:2px 6px;font-size:11.5px}.lightbox{z-index:100;cursor:zoom-out;background:#0b141aeb;place-items:center;display:grid;position:fixed;inset:0}.lightbox img{object-fit:contain;max-width:94vw;max-height:88vh}.lightbox-dl{color:#fff;align-items:center;gap:6px;text-decoration:none;display:flex;position:fixed;top:16px;right:20px}.info-panel{border-left:1px solid var(--line);background:#fff;flex:none;width:340px;overflow-y:auto}.info-panel header{background:#f0f2f5;align-items:center;gap:10px;min-height:59px;padding:10px;display:flex;position:sticky;top:0}.info-section{border-bottom:8px solid #f0f2f5;padding:14px 20px}.info-section.center{flex-direction:column;align-items:center;display:flex}.info-section h3{margin:10px 0 4px;font-weight:500}.info-section h4{color:var(--muted);margin:0 0 8px;font-size:13.5px;font-weight:500}.plain-list{margin:0;padding-left:18px}.people{margin:0;padding:0;list-style:none}.people li{align-items:center;gap:10px;padding:6px 0;display:flex}.people li>div{flex:1;min-width:0}.drop-overlay{border:3px dashed var(--brand);color:var(--brand-dark);z-index:30;pointer-events:none;background:#0f766e1f;place-items:center;font-size:18px;display:grid;position:absolute;inset:59px 0 0}.composer{border-left:1px solid var(--line);background:#f0f2f5;padding:6px 12px;position:relative}.composer-disabled{text-align:center;color:var(--muted);background:#f0f2f5;padding:16px;font-size:14px}.format-bar{flex-wrap:wrap;align-items:center;gap:2px;padding:0 4px 4px 88px;display:flex}.format-bar button{color:#54656f;background:0 0;border:0;border-radius:6px;min-width:28px;padding:3px 8px;font-size:13px}.format-bar button:hover{background:#0000000f}.format-bar button.on{background:var(--brand-soft);color:var(--brand-dark)}.format-bar code{font-size:12px}.format-bar .sep{background:#d1d7db;width:1px;height:16px;margin:0 4px}.compose-row{align-items:flex-end;gap:4px;display:flex}.compose-row textarea{resize:none;background:#fff;border:0;border-radius:8px;outline:none;flex:1;max-height:200px;padding:10px 12px;font-size:15px;line-height:1.4}.send-btn{background:var(--brand);color:#fff;border:0;border-radius:50%;flex:none;place-items:center;width:42px;height:42px;margin-left:4px;display:grid}.send-btn:disabled{opacity:.5}.signature-hint{color:var(--muted);min-height:18px;padding:4px 0 0 92px;font-size:12px}.reply-bar{align-items:center;gap:8px;padding:4px 4px 8px 88px;display:flex}.reply-inner{background:#fff;border-left:4px solid;border-radius:6px;flex:1;min-width:0;padding:6px 10px;font-size:13px}.compose-preview{padding:4px 4px 8px 88px}.compose-preview .bubble{margin-top:4px}.mention-list{z-index:25;background:#fff;border-radius:10px;max-height:280px;margin:0;padding:4px 0;list-style:none;position:absolute;bottom:100%;left:88px;right:60px;overflow-y:auto;box-shadow:0 4px 18px #0000002e}.mention-list button{text-align:left;background:0 0;border:0;width:100%;padding:8px 14px;display:block}.mention-list button.active,.mention-list button:hover{background:#f0f2f5}.emoji-panel{z-index:25;width:min(360px,100% - 24px);position:absolute;bottom:100%;left:12px}.recorder{align-items:center;padding:6px 0}.rec-status{color:var(--text);align-items:center;gap:8px;display:flex}.rec-dot{background:#e53935;border-radius:50%;width:10px;height:10px;animation:1s infinite pulse}@keyframes pulse{50%{opacity:.3}}.modal-backdrop{z-index:90;background:#0b141a73;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:12px;flex-direction:column;gap:14px;width:100%;max-width:440px;max-height:92vh;padding:18px 20px;display:flex;overflow-y:auto;box-shadow:0 10px 40px #00000040}.modal header{justify-content:space-between;align-items:center;display:flex}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.modal textarea{resize:vertical}.attach-preview{background:#f0f2f5;border-radius:8px;place-items:center;min-height:120px;padding:8px;display:grid}.attach-preview img,.attach-preview video{border-radius:6px;max-width:100%;max-height:50vh}.account{position:relative}.dropdown{z-index:50;background:#fff;border-radius:10px;min-width:220px;padding:6px 0;position:absolute;top:44px;right:0;box-shadow:0 4px 18px #0000002e}.dropdown-head{border-bottom:1px solid #f0f2f5;margin-bottom:4px;padding:8px 16px 10px}.dropdown button{text-align:left;background:0 0;border:0;align-items:center;gap:10px;width:100%;padding:9px 16px;display:flex}.dropdown button:hover{background:#f5f6f6}.admin{flex-direction:column;min-height:100%;display:flex}.admin-head{border-bottom:1px solid var(--line);background:#fff;flex-wrap:wrap;align-items:center;gap:12px;padding:8px 16px;display:flex}.admin-head nav{flex-wrap:wrap;gap:4px;margin-left:12px;display:flex}.admin-head nav a{color:var(--muted);border-radius:8px;padding:8px 12px;font-weight:500;text-decoration:none}.admin-head nav a.active{background:var(--brand-soft);color:var(--brand-dark)}.admin-body{width:100%;max-width:1300px;margin:0 auto;padding:20px}.admin-grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));align-items:start;gap:20px;display:grid}.card{background:#fff;border-radius:12px;padding:20px 22px;box-shadow:0 1px 3px #0000000f}.card.narrow{max-width:640px}.card h2{margin:0 0 12px;font-size:18px;font-weight:600}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.card-head h2{margin:0}.filters{gap:8px;display:flex}.status-pill{color:var(--muted);background:#f0f2f5;border-radius:14px;margin-bottom:8px;padding:4px 12px;font-size:13px;font-weight:600;display:inline-block}.status-pill.st-open{color:#166534;background:#dcfce7}.status-pill.st-qr,.status-pill.st-connecting,.status-pill.st-closed{background:var(--warn-bg);color:var(--warn)}.status-pill.st-unlinked{color:var(--danger);background:#fdecea}.qr{flex-wrap:wrap;align-items:center;gap:20px;margin:12px 0;display:flex}.qr img{border:1px solid var(--line);border-radius:8px}.qr ol{flex:1;min-width:200px;margin:0;padding-left:18px;line-height:1.6}.row-actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.tips{margin:0;padding-left:18px;line-height:1.55}.tips li{margin-bottom:8px}.table{border-collapse:collapse;width:100%;margin-top:14px}.table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:8px 10px;font-size:12.5px;font-weight:600}.table td{vertical-align:middle;border-bottom:1px solid #f0f2f5;padding:10px}.table tr.dim td{opacity:.55}.table td select{min-width:170px}.cell-chat{align-items:center;gap:10px;display:flex}.picker{position:relative}.picker-btn{text-align:left;background:#fff;border:1px solid #d5dbe0;border-radius:8px;flex-wrap:wrap;align-items:center;gap:4px;min-width:220px;min-height:38px;padding:5px 8px;display:flex}.picker-btn svg{color:var(--muted);margin-left:auto}.chip{background:var(--brand-soft);color:var(--brand-dark);border-radius:12px;padding:2px 9px;font-size:13px}.picker-menu{z-index:30;background:#fff;border-radius:10px;min-width:260px;max-height:300px;padding:6px 0;position:absolute;top:100%;left:0;overflow-y:auto;box-shadow:0 4px 18px #0000002e}.picker-menu label{padding:7px 14px}.picker-menu label:hover{background:#f5f6f6}@media (width<=800px){.app{grid-template-columns:1fr}.app.has-chat .sidebar,.app:not(.has-chat) .main{display:none}.chat-head .back{display:inline-grid}.messages{padding:10px 10px 16px}.bubble{max-width:85%}.format-bar,.reply-bar,.compose-preview,.signature-hint{padding-left:4px}.mention-list{left:8px;right:8px}.info-panel{z-index:40;width:auto;position:absolute;inset:59px 0 0}.admin-body{padding:12px}.table{display:block;overflow-x:auto}}
