:root{--bg: #eaf1fb;--surface: #ffffff;--header-grad-a: #2b5aa0;--header-grad-b: #5b8def;--accent: #5b8def;--accent-warm: #ff9f45;--text: #1b2733;--text-muted: #62728a;--border: #c7d6ec;--online: #5cc98b;--away: #f2b84b;--busy: #e85d75;--offline: #a6b4c7;--bubble-self: #dcebff;--bubble-peer: #ffffff;--radius: 14px;--radius-sm: 9px;--shadow-window: 0 14px 34px rgba(27, 58, 107, .22);--shadow-card: 0 2px 10px rgba(27, 58, 107, .08);font-family:Segoe UI,-apple-system,BlinkMacSystemFont,Helvetica Neue,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text)}button{font-family:inherit}.login-screen{height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--header-grad-a),var(--header-grad-b) 60%,#7fb0ff)}.login-card{width:340px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-window);padding:32px 28px;text-align:center}.login-card h1{font-size:22px;margin:4px 0 2px;color:var(--header-grad-a)}.login-card p.tagline{color:var(--text-muted);font-size:13px;margin:0 0 22px}.login-logo{width:56px;height:56px;margin:0 auto 10px;border-radius:16px;background:linear-gradient(135deg,var(--header-grad-a),var(--header-grad-b));display:flex;align-items:center;justify-content:center;color:#fff;font-size:26px}.login-field{text-align:left;margin-bottom:14px}.login-field label{display:block;font-size:12px;color:var(--text-muted);margin-bottom:4px}.login-field input{width:100%;padding:9px 11px;border-radius:var(--radius-sm);border:1px solid var(--border);font-size:14px}.login-field input:focus{outline:2px solid var(--accent);outline-offset:1px}.login-error{background:#fdecef;color:var(--busy);border-radius:var(--radius-sm);padding:8px 10px;font-size:13px;margin-bottom:14px}.login-submit{width:100%;padding:10px;border:none;border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--header-grad-a),var(--header-grad-b));color:#fff;font-weight:600;cursor:pointer}.login-submit:disabled{opacity:.6;cursor:default}.app-shell{height:100%;display:flex}.buddy-panel{width:300px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column}.buddy-header{padding:16px 16px 14px;background:linear-gradient(135deg,var(--header-grad-a),var(--header-grad-b));color:#fff;display:flex;align-items:center;gap:10px}.avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:15px;flex-shrink:0;position:relative}.avatar.sm{width:30px;height:30px;font-size:12px}.status-dot{width:11px;height:11px;border-radius:50%;border:2px solid var(--surface);position:absolute;right:-1px;bottom:-1px}.status-dot.ONLINE{background:var(--online);animation:status-pulse 2.4s ease-out infinite}@keyframes status-pulse{0%{box-shadow:0 0 #5cc98b8c}70%{box-shadow:0 0 0 6px #5cc98b00}to{box-shadow:0 0 #5cc98b00}}.status-dot.AWAY{background:var(--away)}.status-dot.BUSY{background:var(--busy)}.status-dot.OFFLINE{background:var(--offline)}.buddy-header-info{flex:1;min-width:0}.buddy-header-name{font-weight:700;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-select{margin-top:3px;font-size:12px;background:#ffffff2e;border:none;border-radius:6px;color:#fff;padding:2px 6px}.status-text-input{width:100%;margin-top:6px;font-size:12px;padding:5px 8px;border-radius:6px;border:none;background:#ffffff29;color:#fff}.status-text-input::placeholder{color:#ffffffbf}.logout-btn{background:transparent;border:none;color:#ffffffd9;cursor:pointer;font-size:18px;line-height:1;padding:4px}.buddy-list{flex:1;overflow-y:auto;padding:6px 0}.buddy-list-section{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);padding:10px 16px 4px}.buddy-item{display:flex;align-items:center;gap:10px;padding:8px 16px;cursor:pointer;border:none;background:none;width:100%;text-align:left}.buddy-item:hover{background:var(--bg)}.buddy-item-name{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buddy-item-status{font-size:11.5px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buddy-item.offline .buddy-item-name,.buddy-item.offline .buddy-item-status{color:var(--text-muted)}.stage{flex:1;position:relative;overflow:hidden;background:radial-gradient(circle at 20% 15%,#f4f8ff 0%,var(--bg) 55%)}.stage-empty{height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:14px;text-align:center;padding:24px}.conv-window{position:absolute;width:380px;height:440px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-window);display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--border)}.conv-window-appear{animation:conv-window-appear-kf .18s cubic-bezier(.2,.8,.4,1)}@keyframes conv-window-appear-kf{0%{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.conv-window-nudging{animation:conv-window-shake .5s cubic-bezier(.36,.07,.19,.97)}@keyframes conv-window-shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-6px)}40%,60%{transform:translate(6px)}}.conv-titlebar{background:linear-gradient(135deg,var(--header-grad-a),var(--header-grad-b));color:#fff;padding:8px 10px;display:flex;align-items:center;gap:8px;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.conv-titlebar:active{cursor:grabbing}.conv-titlebar-name{flex:1;font-weight:700;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conv-titlebar-sub{font-size:11px;opacity:.85;font-weight:400}.conv-titlebar-btn{background:#ffffff29;border:none;color:#fff;width:22px;height:22px;border-radius:6px;cursor:pointer;font-size:13px;line-height:1;display:flex;align-items:center;justify-content:center}.conv-titlebar-btn:hover{background:#ffffff4d}.conv-titlebar-btn:disabled{opacity:.4;cursor:default}.conv-titlebar-btn:disabled:hover{background:#ffffff29}.conv-messages{flex:1;overflow-y:auto;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.conv-load-more{align-self:center;font-size:11.5px;color:var(--accent);background:none;border:none;cursor:pointer;margin-bottom:6px}.msg-row{display:flex;flex-direction:column;max-width:82%;animation:msg-pop-in .16s ease-out}@keyframes msg-pop-in{0%{opacity:0;transform:translateY(6px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.msg-row.self{align-self:flex-end;align-items:flex-end}.msg-row.peer{align-self:flex-start;align-items:flex-start}.msg-bubble{padding:7px 11px;border-radius:13px;font-size:13.5px;line-height:1.4;word-break:break-word}.msg-row.self .msg-bubble{background:var(--bubble-self);border-bottom-right-radius:4px}.msg-row.peer .msg-bubble{background:var(--bubble-peer);border:1px solid var(--border);border-bottom-left-radius:4px}.msg-gif{display:block;max-width:220px;max-height:220px;border-radius:13px;border:1px solid var(--border)}.voice-player{display:flex;align-items:center;gap:8px;padding:8px 11px;border-radius:13px;min-width:180px}.msg-row.self .voice-player{background:var(--bubble-self);border-bottom-right-radius:4px}.msg-row.peer .voice-player{background:var(--bubble-peer);border:1px solid var(--border);border-bottom-left-radius:4px}.voice-player-btn{border:none;background:var(--accent);color:#fff;width:26px;height:26px;border-radius:50%;flex-shrink:0;cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center}.voice-player-btn:disabled{opacity:.5;cursor:default}.voice-player-bar{flex:1;height:4px;border-radius:2px;background:#0000001f;overflow:hidden}.voice-player-bar-fill{height:100%;background:var(--accent);border-radius:2px;transition:width .15s linear}.voice-player-time{font-size:11px;font-variant-numeric:tabular-nums;color:var(--text-muted);flex-shrink:0}.voice-player-check{font-size:11px;color:var(--online);flex-shrink:0}.voice-player-expired{padding:7px 11px;border-radius:13px;font-size:12.5px;font-style:italic;color:var(--text-muted);background:var(--bg);border:1px dashed var(--border)}.msg-meta{font-size:10px;color:var(--text-muted);margin-top:2px;padding:0 3px}.msg-row.pending .msg-bubble{opacity:.6}.msg-row.failed .msg-bubble{border:1px solid var(--busy)}.msg-failed-label{font-size:10px;color:var(--busy);margin-top:2px}.typing-indicator{font-size:11.5px;color:var(--text-muted);padding:0 12px 4px;font-style:italic}.conv-input-bar{border-top:1px solid var(--border);padding:8px;display:flex;align-items:flex-end;gap:6px}.conv-input{flex:1;min-width:0;resize:none;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;font-size:13.5px;font-family:inherit;max-height:80px}.conv-input:focus{outline:2px solid var(--accent);outline-offset:1px}.conv-send-btn{border:none;border-radius:var(--radius-sm);background:var(--accent);color:#fff;padding:0 16px;height:34px;font-size:13px;font-weight:600;cursor:pointer;flex-shrink:0;white-space:nowrap;display:flex;align-items:center;justify-content:center}.conv-send-btn:disabled{opacity:.5;cursor:default}.emoji-toggle-btn{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-sm);width:34px;height:34px;flex-shrink:0;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center}.emoji-toggle-btn:hover{background:var(--bg)}.voice-recorder-active{display:flex;align-items:center;gap:6px;height:34px;padding:0 8px;border-radius:var(--radius-sm);background:#fdecef;flex-shrink:0}.voice-recorder-dot{width:9px;height:9px;border-radius:50%;background:var(--busy);animation:voice-recorder-blink 1s ease-in-out infinite}@keyframes voice-recorder-blink{0%,to{opacity:1}50%{opacity:.25}}.voice-recorder-timer{font-size:12px;font-variant-numeric:tabular-nums;color:var(--busy);min-width:30px}.voice-recorder-cancel,.voice-recorder-stop{border:none;background:none;cursor:pointer;font-size:13px;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center}.voice-recorder-cancel{color:var(--text-muted)}.voice-recorder-stop{color:#fff;background:var(--online)}.voice-recorder-error{font-size:11.5px;color:var(--busy);padding:0 6px;display:flex;align-items:center;flex-shrink:0}.emoji-picker{position:absolute;bottom:calc(100% + 8px);left:0;width:208px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-window);padding:6px;display:grid;grid-template-columns:repeat(8,1fr);gap:2px;z-index:20}.emoji-picker-item{border:none;background:none;font-size:17px;line-height:1;padding:5px 0;border-radius:6px;cursor:pointer}.emoji-picker-item:hover{background:var(--bg)}.gif-picker{position:absolute;bottom:calc(100% + 8px);left:0;width:280px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-window);padding:8px;z-index:20}.gif-picker-search{width:100%;padding:7px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);font-size:13px;margin-bottom:8px}.gif-picker-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-height:260px;overflow-y:auto}.gif-picker-item{border:none;background:var(--bg);border-radius:8px;padding:0;cursor:pointer;overflow:hidden;aspect-ratio:1}.gif-picker-item img{width:100%;height:100%;object-fit:cover;display:block}.gif-picker-item:hover{outline:2px solid var(--accent)}.gif-picker-message{grid-column:1 / -1;text-align:center;font-size:12.5px;color:var(--text-muted);padding:20px 0}.bubble-tray{position:absolute;left:16px;bottom:16px;display:flex;gap:10px;flex-wrap:wrap}.conv-bubble{background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:6px 14px 6px 6px;display:flex;align-items:center;gap:8px;cursor:pointer;box-shadow:var(--shadow-card);position:relative}.conv-bubble-name{font-size:12.5px;font-weight:600}.conv-bubble-unread{position:absolute;top:-5px;right:-5px;background:var(--accent-warm);color:#fff;font-size:10px;font-weight:700;min-width:17px;height:17px;border-radius:999px;display:flex;align-items:center;justify-content:center;padding:0 4px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#141e3266;display:flex;align-items:center;justify-content:center;z-index:999}.modal-card{width:320px;background:var(--surface);border-radius:var(--radius);padding:22px 20px;box-shadow:var(--shadow-window)}.modal-card h2{font-size:16px;margin:0 0 14px;color:var(--header-grad-a)}.modal-cancel{flex:1;border:1px solid var(--border);background:none;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-muted)}.add-contact-btn{background:#ffffff2e;border:none;color:#fff;cursor:pointer;font-size:18px;line-height:1;padding:4px 6px;border-radius:6px}.add-contact-btn:hover{background:#ffffff4d}@media (max-width: 720px){.app-shell{position:relative}.buddy-panel{width:100%}.buddy-panel.hidden-mobile,.stage{display:none}.stage.mobile-active{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:50}.conv-window{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border-radius:0}.bubble-tray{display:none}.conv-titlebar-btn.mobile-back{display:flex}}.conv-titlebar-btn.mobile-back{display:none}@media (prefers-reduced-motion: reduce){.conv-window,.conv-window-appear,.conv-window-nudging,.msg-row,.status-dot.ONLINE{animation:none!important}}
