@font-face{font-family:Vazirmatn;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/vazirmatn-arabic.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:Vazirmatn;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/vazirmatn-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #f8f7f4;--surface: #ffffff;--surface-muted: #f2f0ea;--surface-hover: #eae7df;--surface-active: #e2ded5;--surface-glass: rgba(255, 255, 255, .9);--surface-glass-strong: rgba(255, 255, 255, .95);--border: #e6e4dc;--border-subtle: #eeece5;--border-strong: #d2cfc4;--ink: #18181b;--ink-secondary: #3f3f46;--muted: #5c5a55;--muted-light: #85827a;--primary: #18181b;--primary-hover: #27272a;--primary-light: rgba(24, 24, 27, .05);--auth-accent: #18181b;--auth-accent-soft: rgba(24, 24, 27, .05);--auth-gradient: linear-gradient(145deg, #fbfaf7 0%, #f0eee6 100%);--sent-bg: #27272a;--sent-text: #fafafa;--sent-meta: rgba(250, 250, 250, .7);--received-bg: #ffffff;--received-text: #18181b;--received-border: #e6e4dc;--online: #16a34a;--online-bg: #f0fdf4;--danger: #dc2626;--danger-hover: #b91c1c;--danger-bg: #fef2f2;--danger-border: #fecaca;--danger-text: #991b1b;--success: #16a34a;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .04);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .07), 0 2px 4px -2px rgba(0, 0, 0, .04);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .08), 0 4px 6px -4px rgba(0, 0, 0, .03);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .09), 0 8px 10px -6px rgba(0, 0, 0, .03);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .16);--shadow-soft: 0 16px 40px rgba(0, 0, 0, .05);--radius-xs: 6px;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 18px;--radius-xl: 24px;--radius-full: 9999px;--radius: 16px;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--font-xs: .75rem;--font-sm: .8125rem;--font-base: .9375rem;--font-md: 1rem;--font-lg: 1.125rem;--font-xl: 1.25rem;--font-2xl: 1.5rem;--font-3xl: 1.875rem;--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.625;--sidebar-width: 350px;--sidebar-min-width: 300px;--sidebar-collapsed-width: 300px;--max-w-modal: 480px;--max-w-card: 400px;--max-w-bubble: 540px;--ease-out: cubic-bezier(.16, 1, .3, 1);--input-area-offset: 4.5rem}[data-theme=dark]{--bg: #0f1115;--surface: #181a20;--surface-muted: #21242d;--surface-hover: #292d38;--surface-active: #323745;--surface-glass: rgba(24, 26, 32, .88);--surface-glass-strong: rgba(24, 26, 32, .95);--border: #2c303c;--border-subtle: #232732;--border-strong: #383d4c;--ink: #f4f4f5;--ink-secondary: #d4d4d8;--muted: #a1a1aa;--muted-light: #71717a;--primary: #f4f4f5;--primary-hover: #e4e4e7;--primary-light: rgba(244, 244, 245, .08);--auth-accent: #f4f4f5;--auth-accent-soft: rgba(244, 244, 245, .08);--auth-gradient: linear-gradient(145deg, #13151a 0%, #0d0e12 100%);--sent-bg: #27272a;--sent-text: #fafafa;--sent-meta: rgba(250, 250, 250, .7);--received-bg: #21242d;--received-text: #f4f4f5;--received-border: #2c303c;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .3);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4), 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .45), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5), 0 4px 6px -4px rgba(0, 0, 0, .3);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .55), 0 8px 10px -6px rgba(0, 0, 0, .3);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .65)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body,#app{width:100%;height:100%;overflow:hidden}body{font-family:Segoe UI,Microsoft YaHei UI,Microsoft YaHei,PingFang SC,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg);color:var(--ink);direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-size:var(--font-base);line-height:var(--leading-normal)}button,input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}button{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.icon-svg{width:1.25em;height:1.25em;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none;display:inline-block;flex-shrink:0;vertical-align:middle}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2.375rem;height:2.375rem;padding:0;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--surface);color:var(--ink);cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .1s ease,box-shadow .15s ease;flex-shrink:0}.icon-btn:hover{background:var(--surface-muted);border-color:var(--border-strong)}.icon-btn:active{transform:scale(.96)}.icon-btn.solid{background:var(--ink);color:#fff;border-color:var(--ink);box-shadow:var(--shadow-sm)}.icon-btn.solid:hover{background:var(--primary-hover);border-color:var(--primary-hover);box-shadow:var(--shadow-md)}.icon-btn.ghost{background:transparent;border-color:transparent;color:var(--muted)}.icon-btn.ghost:hover{background:var(--surface-muted);color:var(--ink)}.primary-btn,.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;background:var(--ink);color:#fff;border:1px solid var(--ink);border-radius:var(--radius-sm);padding:.625rem 1.25rem;font-size:.9375rem;font-weight:600;cursor:pointer;transition:background .15s ease,transform .1s ease,box-shadow .15s ease;box-shadow:var(--shadow-sm)}.primary-btn:hover,.btn-primary:hover{background:var(--primary-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.primary-btn:active,.btn-primary:active{transform:translateY(0)}.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;background:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.625rem 1.25rem;font-size:.9375rem;font-weight:500;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.btn-secondary:hover{background:var(--surface-muted);border-color:var(--border-strong);color:var(--ink)}.btn-danger{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;background:var(--danger);color:#fff;border:1px solid var(--danger);border-radius:var(--radius-sm);padding:.625rem 1.25rem;font-size:.9375rem;font-weight:600;cursor:pointer;transition:background .15s ease,transform .1s ease,box-shadow .15s ease;box-shadow:var(--shadow-sm)}.btn-danger:hover{background:var(--danger-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-danger:active{transform:translateY(0)}.btn-danger:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.auth-container{display:flex;justify-content:center;align-items:center;height:100%;background:var(--auth-gradient);padding:1.5rem;position:relative;overflow-y:auto}.auth-card{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-xl);padding:2.25rem 2rem;width:100%;max-width:400px;position:relative;z-index:1;animation:authEnter .35s var(--ease-out) both}@keyframes authEnter{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.auth-brand{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.auth-logo{width:48px;height:48px;border-radius:var(--radius-md);display:grid;place-items:center;font-weight:700;font-size:1.375rem;color:#fff;background:var(--ink);border:1px solid rgba(255,255,255,.1);box-shadow:var(--shadow-sm);flex-shrink:0}.auth-title h1{margin:0;color:var(--ink);font-size:1.5rem;font-weight:700;line-height:1.25;display:flex;align-items:center;gap:.5rem}.auth-version{font-size:.75rem;font-weight:500;color:var(--muted);background:var(--surface-muted);padding:.15rem .5rem;border-radius:var(--radius-full);border:1px solid var(--border)}.auth-subtitle{color:var(--muted);font-size:.84375rem;margin-top:.25rem;line-height:1.4}.auth-tabs{display:grid;grid-template-columns:repeat(2,1fr);gap:.25rem;margin-bottom:1.5rem;background:var(--surface-muted);padding:.25rem;border-radius:var(--radius-full);border:1px solid var(--border-subtle)}.tab-btn{padding:.55rem 1rem;border:0;background:transparent;border-radius:var(--radius-full);cursor:pointer;font-weight:500;font-size:.875rem;color:var(--muted);transition:all .15s ease}.tab-btn:hover{color:var(--ink)}.tab-btn.active{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:var(--shadow-sm)}.auth-form{display:flex;flex-direction:column;gap:.875rem}.auth-form input{padding:.75rem 1rem;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.9375rem;background:var(--surface);color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease;width:100%}.auth-form input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px #18181b14}.auth-form input::placeholder{color:var(--muted-light)}.auth-form button[type=submit]{margin-top:.5rem;padding:.75rem 1rem;background:var(--ink);color:#fff;border:1px solid var(--ink);border-radius:var(--radius-sm);font-weight:600;font-size:.9375rem;cursor:pointer;transition:transform .1s ease,box-shadow .15s ease,background .15s ease;box-shadow:var(--shadow-sm)}.auth-form button[type=submit]:hover{background:var(--primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.auth-form button[type=submit]:active{transform:translateY(0)}.rules-checkbox{display:inline-flex;align-items:center;gap:.5rem;font-size:.84375rem;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;margin-top:.125rem}.rules-checkbox input[type=checkbox]{width:16px;height:16px;accent-color:var(--ink);cursor:pointer}.error-message{background:var(--danger-bg);border:1px solid var(--danger-border);color:var(--danger-text);padding:.55rem .85rem;border-radius:var(--radius-xs);font-size:.84375rem;font-weight:500;line-height:1.4}.auth-footer{margin-top:1.25rem;color:var(--muted);font-size:.8125rem;text-align:center}.auth-footer .link-btn{border:none;background:none;color:var(--ink);cursor:pointer;font-weight:600;text-decoration:underline;text-underline-offset:3px;padding:.2rem .4rem;border-radius:var(--radius-xs)}.auth-footer .link-btn:hover{color:var(--muted)}.modal-backdrop,div.modal,dialog.modal[open]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem;border:none;width:100%;height:100%;max-width:100%;max-height:100%;margin:0;overflow:hidden;animation:modalFadeIn .2s var(--ease-out)}dialog.modal{position:fixed}dialog.modal[open]::backdrop{background:#0f172a73;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:modalFadeIn .2s var(--ease-out)}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.modal-card,.modal-content{background:var(--surface);border-radius:var(--radius-lg);width:min(480px,100%);max-height:88vh;box-shadow:var(--shadow-2xl);border:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;animation:modalScaleIn .25s var(--ease-out)}@keyframes modalScaleIn{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}.modal-header h3{margin:0;font-size:1.0625rem;font-weight:700;color:var(--ink)}.close-btn{background:transparent;border:1px solid transparent;font-size:1.25rem;cursor:pointer;color:var(--muted);padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-xs);transition:background .15s ease,color .15s ease}.close-btn:hover{color:var(--ink);background:var(--surface-muted)}.modal-body{padding:1.25rem;overflow-y:auto;color:var(--ink);line-height:1.65;font-size:.9375rem}.modal-footer{padding:.875rem 1.25rem;border-top:1px solid var(--border);background:var(--surface-muted);display:flex;justify-content:flex-end;gap:.5rem;flex-shrink:0}.rules-list{padding:0;margin:0;list-style:none;display:flex;flex-direction:column;gap:.75rem}.rules-list li{padding-left:1.25rem;position:relative;font-size:.90625rem;color:var(--ink-secondary)}.rules-list li:before{content:"•";position:absolute;left:.25rem;color:var(--muted);font-weight:700}.messenger-wrapper{display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden;position:relative}.messenger-container{display:flex;flex:1;height:100%;width:100%;background:var(--bg);overflow:hidden;position:relative;min-height:0}.chat-list-panel{width:350px;min-width:300px;border-right:1px solid var(--border);display:flex;flex-direction:column;background:var(--surface);overflow:hidden;position:relative;height:100%}.user-profile-section{display:flex;align-items:center;gap:.75rem;min-height:64px;padding:calc(.5rem + env(safe-area-inset-top)) 1rem .5rem;border-bottom:1px solid var(--border);background:var(--surface);transition:background .15s ease;cursor:pointer;flex-shrink:0}.user-profile-section:hover{background:var(--surface-muted)}.user-avatar{width:42px;height:42px;min-width:42px;border-radius:var(--radius-full);background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1rem;overflow:visible;position:relative;box-shadow:var(--shadow-xs);border:1px solid var(--border);padding:0;cursor:pointer}.user-avatar .avatar-img{overflow:hidden}.avatar-camera-badge{position:absolute;right:-3px;bottom:-3px;width:18px;height:18px;display:grid;place-items:center;border-radius:var(--radius-full);background:var(--surface);color:var(--ink);border:1px solid var(--border-strong);box-shadow:var(--shadow-xs)}.avatar-camera-badge .icon-svg{width:11px;height:11px}.user-profile-info{flex:1;min-width:0}.user-profile-name{font-weight:600;color:var(--ink);font-size:.9375rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.user-profile-status{font-size:.75rem;color:var(--muted);display:flex;align-items:center;gap:.35rem;margin-top:2px}.avatar-img,.avatar-img-large{width:100%;height:100%;object-fit:cover;border-radius:var(--radius-full);display:block}.conversations-list{flex:1;overflow-y:auto;padding:.25rem 0 5rem}.conversation-item{min-height:68px;padding:.65rem .95rem;border-bottom:1px solid var(--border-subtle);cursor:pointer;transition:background .15s ease;display:flex;align-items:center;gap:.75rem;background:var(--surface);position:relative}.conversation-item:hover{background:var(--surface-muted)}.conversation-item.active{background:var(--surface-muted);box-shadow:inset -3px 0 0 var(--ink)}.conversation-avatar{width:44px;height:44px;min-width:44px;border-radius:var(--radius-full);background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1rem;position:relative;box-shadow:var(--shadow-xs);border:1px solid var(--border);flex-shrink:0}.online-indicator{position:absolute;bottom:1px;right:1px;width:11px;height:11px;background:var(--online);border:2px solid var(--surface);border-radius:var(--radius-full);z-index:1}.conversation-info{flex:1;min-width:0}.conversation-username{font-weight:600;font-size:.9375rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;margin-bottom:2px}.conversation-preview{font-size:.8125rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}.conversation-actions{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:.35rem;min-width:54px;flex-shrink:0}.conversation-time{color:var(--muted);font-size:.75rem;white-space:nowrap;text-align:left}.unread-badge{background:var(--ink);color:#fff;border-radius:var(--radius-full);min-width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;padding:0 .4rem;line-height:1}.conversation-menu-btn{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--muted-light);width:1.75rem;height:1.75rem;border-radius:var(--radius-xs);cursor:pointer;transition:all .15s ease;opacity:.5}.conversation-item:hover .conversation-menu-btn{opacity:1}.conversation-menu-btn:hover{background:var(--surface-hover);color:var(--ink)}.conversation-skeleton-list{padding:.25rem 0}.conversation-item.skeleton{cursor:default}.skeleton-avatar,.skeleton-line{background:linear-gradient(90deg,#eae7df 25%,#f4f2ec,#eae7df 75%);background-size:200% 100%;animation:skeletonShimmer 1.4s ease-in-out infinite}.skeleton-avatar{width:44px;height:44px;border-radius:var(--radius-full)}.skeleton-line{height:12px;border-radius:var(--radius-full)}.skeleton-name{width:60%}@keyframes skeletonShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.fab-new-chat{position:absolute;bottom:1.5rem;right:1.5rem;width:48px;height:48px;border-radius:var(--radius-full);background:var(--ink);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg);transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s ease,background .15s ease;z-index:10}.fab-new-chat:hover{transform:scale(1.06);background:var(--primary-hover);box-shadow:var(--shadow-xl)}.fab-new-chat:active{transform:scale(.96)}.fab-new-chat svg{pointer-events:none}.chat-panel{flex:1;min-height:0;height:100%;display:flex;flex-direction:column;background:var(--bg);position:relative}.panel-header{min-height:64px;padding:calc(.6rem + env(safe-area-inset-top)) 1.25rem .6rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:var(--surface-glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);z-index:5;flex-shrink:0}.chat-header-info{display:flex;align-items:center;gap:.75rem;min-width:0}.chat-header-avatar-wrapper{position:relative;flex-shrink:0}.chat-header-avatar{width:38px;height:38px;border-radius:var(--radius-full);object-fit:cover;box-shadow:var(--shadow-xs);border:1px solid var(--border)}.chat-header-avatar-placeholder{width:38px;height:38px;border-radius:var(--radius-full);background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.95rem;border:1px solid var(--border)}.chat-header-text{display:flex;flex-direction:column;min-width:0}.chat-header-name{font-weight:600;font-size:.95rem;color:var(--ink);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-header-status{font-size:.75rem;color:var(--online);font-weight:500}.select-chat{color:var(--muted);font-size:.9375rem;font-weight:500}.header-actions{display:inline-flex;align-items:center;gap:.5rem;flex-shrink:0}.active-call-bar{background:var(--ink);color:#fff;padding:.5rem 1rem;display:flex;justify-content:space-between;align-items:center;position:relative;z-index:250;box-shadow:var(--shadow-md);flex-shrink:0;cursor:pointer;-webkit-user-select:none;user-select:none}.active-call-info{display:flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.active-call-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pulse-icon{color:var(--online);animation:pulse 1.5s infinite;font-size:.75rem;flex-shrink:0}@keyframes pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.2)}to{opacity:1;transform:scale(1)}}.call-timer-badge{background:#ffffff2e;padding:.15rem .55rem;border-radius:var(--radius-full);font-size:.75rem;font-variant-numeric:tabular-nums;letter-spacing:.5px;flex-shrink:0}.active-call-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.btn-mute-call{background:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.25);width:32px;height:32px;padding:0;border-radius:var(--radius-full);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .15s ease,border-color .15s ease,transform .1s ease}.btn-mute-call:hover{background:#ffffff40;transform:scale(1.05)}.btn-mute-call:active{transform:scale(.95)}.btn-mute-call.is-muted{background:var(--danger);border-color:#ffffff40;color:#fff}.btn-mute-call.is-muted:hover{background:var(--danger-hover)}.btn-return-call{background:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.25);padding:.35rem .75rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.8125rem;font-weight:500;transition:background .15s ease}.btn-return-call:hover{background:#ffffff40}.btn-hangup{background:var(--danger);color:#fff;border:1px solid rgba(255,255,255,.2);padding:.35rem .85rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.8125rem;font-weight:600;transition:background .15s ease}.btn-hangup:hover{background:var(--danger-hover)}.messages-container{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:1.25rem 1.5rem 5rem;display:flex;flex-direction:column;gap:.625rem;background:var(--bg);position:relative}.empty-state{text-align:center;color:var(--muted);padding:3rem 1.5rem;font-weight:500;font-size:.9375rem;line-height:1.6;margin:auto}.loading-older{text-align:center;color:var(--muted);padding:.5rem 1rem;font-size:.8125rem;background:var(--surface-muted);border-radius:var(--radius-sm);margin-bottom:.5rem;align-self:center;border:1px solid var(--border-subtle)}.load-more-hint{text-align:center;color:var(--muted-light);padding:var(--space-1) var(--space-2);font-size:var(--font-xs);align-self:center;cursor:pointer;-webkit-user-select:none;user-select:none}.message{display:flex;flex-direction:column;width:100%;margin-bottom:.125rem}.message.sent{align-items:flex-end}.message.received{align-items:flex-start}.message-bubble{max-width:min(540px,82%);min-width:60px;padding:.65rem .95rem;border-radius:var(--radius);unicode-bidi:plaintext;text-align:start;white-space:pre-line;word-wrap:break-word;word-break:break-word;line-height:1.55;font-size:.9375rem;box-shadow:var(--shadow-xs);position:relative}.message.sent .message-bubble{background:var(--sent-bg);color:var(--sent-text);border:1px solid var(--sent-bg);border-radius:16px 16px 4px}.message.received .message-bubble{background:var(--received-bg);color:var(--received-text);border:1px solid var(--received-border);border-radius:16px 16px 16px 4px}.message-bubble.media-bubble{padding:.35rem}.message.sent .message-bubble.sticker-bubble,.message.received .message-bubble.sticker-bubble{min-width:auto;padding:.1rem .3rem;background:transparent;border-color:transparent;box-shadow:none}.sticker-glyph{display:block;font-family:"Segoe UI Emoji","Apple Color Emoji",sans-serif;font-size:3.5rem;line-height:1.1;filter:drop-shadow(0 5px 8px rgba(24,24,27,.14));transform-origin:center bottom;animation:stickerPop .26s var(--ease-out) both}@keyframes stickerPop{0%{opacity:0;transform:scale(.72) rotate(-5deg)}to{opacity:1;transform:scale(1) rotate(0)}}.file-link{display:inline-flex;align-items:center;gap:.5rem;color:inherit;text-decoration:none;padding:.4rem .7rem;border-radius:var(--radius-xs);font-size:.875rem;transition:background .15s ease}.message.sent .file-link{background:#ffffff1f}.message.sent .file-link:hover{background:#fff3}.message.received .file-link{background:var(--surface-muted)}.message.received .file-link:hover{background:var(--surface-hover)}.message-footer{display:flex;align-items:center;gap:.35rem;margin-top:.25rem}.message.sent .message-footer{justify-content:flex-end;align-self:flex-end}.message.received .message-footer{justify-content:flex-start;align-self:flex-start}.message-meta{display:flex;gap:.35rem;align-items:center}.message-time{font-size:.75rem;color:var(--muted);line-height:1}.message-date{font-size:.75rem;color:var(--muted-light);line-height:1}.message-status{display:inline-flex;align-items:center;color:var(--muted)}.message-status .icon-svg{width:.95rem;height:.95rem}.message-menu-btn{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--muted-light);border-radius:var(--radius-xs);width:1.5rem;height:1.5rem;padding:0;cursor:pointer;opacity:0;transition:opacity .15s ease,background .15s ease,color .15s ease}.message:hover .message-menu-btn{opacity:.7}.message-menu-btn:hover{opacity:1;background:var(--surface-hover);color:var(--ink)}.media-message{display:flex;flex-direction:column;gap:.35rem;max-width:min(340px,75vw)}.message-image-link{display:block;overflow:hidden;border-radius:var(--radius-sm)}.message-image{width:100%;max-height:280px;object-fit:cover;border-radius:var(--radius-sm);display:block;transition:transform .2s ease}.message-image:hover{transform:scale(1.01)}.message-video{width:100%;max-height:280px;border-radius:var(--radius-sm);background:#000;display:block}.voice-message{display:flex;flex-direction:column;gap:.35rem;min-width:min(260px,70vw);padding:.25rem}.voice-message audio{width:100%;height:36px}.message-input-area{padding:.625rem 1.25rem calc(.75rem + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--surface-glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);position:sticky;bottom:0;z-index:4;flex-shrink:0}.input-container{display:flex;gap:.35rem;align-items:flex-end;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:.3rem .45rem;box-shadow:var(--shadow-xs);transition:border-color .15s ease,box-shadow .15s ease}.input-container:focus-within{border-color:var(--ink);box-shadow:0 0 0 3px #18181b0f}.input-container textarea{flex:1;min-width:0;min-height:38px;max-height:120px;height:38px;padding:.55rem .5rem;border:none;background:transparent;font-size:.9375rem;line-height:1.45;unicode-bidi:plaintext;text-align:start;color:var(--ink);font-family:inherit;resize:none;overflow-y:auto}.input-container textarea:focus{outline:none}.input-container textarea::placeholder{color:var(--muted-light)}.input-container .icon-btn{width:36px;height:36px}.input-container .icon-btn.solid{background:var(--ink);border-color:var(--ink);color:#fff}.input-container .icon-btn.solid:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.input-container .icon-btn.recording{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger);animation:pulse 1.5s infinite}.input-container .emoji-trigger.active{background:var(--surface-muted);color:var(--ink);border-color:var(--border)}.emoji-popover{position:absolute;left:1.25rem;bottom:calc(100% + .5rem);width:min(340px,calc(100vw - 2.5rem));overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-glass-strong);box-shadow:var(--shadow-2xl);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);z-index:20}.emoji-picker-tabs{display:grid;grid-template-columns:repeat(2,1fr);gap:.25rem;padding:.45rem;background:var(--surface-muted);border-bottom:1px solid var(--border-subtle)}.emoji-picker-tabs button{min-height:34px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--muted);font-size:.8125rem;font-weight:600;cursor:pointer}.emoji-picker-tabs button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-xs)}.emoji-grid,.sticker-grid{display:grid;max-height:248px;overflow-y:auto;padding:.65rem}.emoji-grid{grid-template-columns:repeat(8,1fr);gap:.2rem}.sticker-grid{grid-template-columns:repeat(4,1fr);gap:.5rem}.emoji-option,.sticker-option{border:1px solid transparent;cursor:pointer;font-family:"Segoe UI Emoji","Apple Color Emoji",sans-serif;transition:transform .14s ease,background .14s ease,border-color .14s ease}.emoji-option{display:grid;place-items:center;aspect-ratio:1;border-radius:var(--radius-xs);background:transparent;font-size:1.35rem}.sticker-option{min-height:64px;border-radius:var(--radius-md);background:var(--surface-muted);border-color:var(--border-subtle);font-size:2rem}.emoji-option:hover,.sticker-option:hover{transform:translateY(-2px) scale(1.06);background:var(--surface-hover);border-color:var(--border)}.emoji-picker-hint{padding:.45rem .75rem .55rem;border-top:1px solid var(--border-subtle);color:var(--muted);font-size:.75rem;text-align:center}.emoji-picker-enter-active,.emoji-picker-leave-active{transition:opacity .16s ease,transform .16s var(--ease-out);transform-origin:left bottom}.emoji-picker-enter-from,.emoji-picker-leave-to{opacity:0;transform:translateY(8px) scale(.97)}.recording-indicator{margin-top:.35rem;font-size:.8125rem;color:var(--danger);text-align:center;font-weight:500}.upload-progress{font-size:.8125rem;color:var(--muted);text-align:center;padding:.35rem}.pull-to-refresh-indicator{position:fixed;bottom:calc(var(--input-area-offset) + env(safe-area-inset-bottom));left:0;right:0;height:48px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s,transform .2s;pointer-events:none;z-index:20}.pull-to-refresh-indicator.visible,.pull-to-refresh-indicator.ready{opacity:1}.refresh-hint{font-size:.8125rem;color:var(--muted);font-weight:500}.refresh-spinner{font-size:1.25rem;animation:spin 1s linear infinite;color:var(--ink)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.context-menu{margin:0;inset:auto;right:auto;bottom:auto;position:fixed;z-index:1100;background:var(--surface-glass-strong);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);min-width:160px;padding:.3rem;overflow:hidden;animation:contextMenuFadeIn .18s var(--ease-out);transform-origin:top left}@keyframes contextMenuFadeIn{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}.context-menu-item{display:flex;align-items:center;gap:.625rem;width:100%;padding:.55rem .75rem;border:none;background:transparent;cursor:pointer;font-size:.875rem;font-weight:500;color:var(--ink);text-align:left;transition:background .12s ease;border-radius:var(--radius-xs)}.context-menu-item:hover{background:var(--surface-muted)}.context-menu-item.delete{color:var(--danger)}.context-menu-item.delete:hover{background:var(--danger-bg)}.context-menu-icon{display:flex;align-items:center;color:inherit}.profile-modal-sheet{max-height:90vh;outline:none}.profile-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-1);padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--border);background:var(--surface-muted)}.profile-tabs button{border:1px solid transparent;background:transparent;color:var(--muted);border-radius:var(--radius-xs);padding:.45rem var(--space-1);font-weight:600;font-size:var(--font-sm);cursor:pointer;transition:all .15s ease}.profile-tabs button:hover{color:var(--ink)}.profile-tabs button.active{background:var(--surface);border-color:var(--border-subtle);color:var(--ink);box-shadow:var(--shadow-xs)}.profile-modal-content{padding:var(--space-5) var(--space-6);overflow-y:auto;flex:1 1 auto;min-height:0}.profile-avatar-section{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);margin-bottom:var(--space-5);padding-bottom:var(--space-5);border-bottom:1px solid var(--border)}.profile-avatar-large{width:80px;height:80px;border-radius:var(--radius-full);background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.875rem;overflow:hidden;position:relative;box-shadow:var(--shadow-md);border:2px solid var(--border);cursor:pointer;transition:transform .2s ease}.profile-avatar-large:hover{transform:scale(1.04)}.avatar-edit-overlay{position:absolute;bottom:0;left:auto;right:-2px;width:28px;height:28px;border-radius:var(--radius-full);background:var(--surface);display:flex;align-items:center;justify-content:center;color:var(--ink);border:1px solid var(--border-strong);box-shadow:var(--shadow-sm);opacity:1;transition:opacity .15s ease}.profile-avatar-large:hover .avatar-edit-overlay{opacity:1}.profile-avatar-name{font-weight:700;font-size:1.0625rem;color:var(--ink);margin-top:.25rem}.avatar-upload-status{font-size:.8125rem;color:var(--muted);font-weight:500}.avatar-upload-help{max-width:280px;color:var(--muted);font-size:.75rem;line-height:1.5;text-align:center}.profile-section{display:flex;flex-direction:column;gap:1rem}.profile-form-group{display:flex;flex-direction:column;gap:.35rem}.profile-form-group label{font-weight:600;font-size:.8125rem;color:var(--muted)}.profile-form-group input{padding:.65rem .85rem;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.9375rem;background:var(--surface);color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease}.profile-form-group input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px #18181b14}.profile-form-group input:disabled{background:var(--surface-muted);color:var(--muted);cursor:not-allowed}.push-toggle-group{flex-direction:row!important;align-items:center;justify-content:space-between;padding:.75rem 0}.toggle-switch{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;right:0;bottom:0;left:0;background:var(--border-strong);border-radius:var(--radius-full);transition:background .2s ease}.toggle-slider:before{content:"";position:absolute;width:18px;height:18px;border-radius:var(--radius-full);background:#fff;top:3px;right:3px;transition:transform .2s ease;box-shadow:var(--shadow-xs)}.toggle-switch input:checked+.toggle-slider{background:var(--ink)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(-20px)}.btn-logout-inline{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1rem;background:var(--danger-bg);border:1px solid var(--danger-border);border-radius:var(--radius-sm);color:var(--danger-text);font-size:.875rem;font-weight:600;cursor:pointer;transition:background .15s ease;align-self:flex-start}.btn-logout-inline:hover{background:#fee2e2}.danger-text{color:var(--danger-text);font-size:.84375rem;line-height:1.5;background:var(--danger-bg);border:1px solid var(--danger-border);padding:.75rem 1rem;border-radius:var(--radius-sm)}.danger-input{width:100%;padding:.65rem .85rem;border:1px solid var(--danger-border);border-radius:var(--radius-sm);font-size:.9375rem;background:#fff}.danger-input:focus{outline:none;border-color:var(--danger);box-shadow:0 0 0 3px #dc26261f}.about-section{align-items:center;text-align:center;padding:1.5rem 0;gap:.75rem}.about-logo{width:56px;height:56px;border-radius:var(--radius-md);display:grid;place-items:center;background:var(--ink);color:#fff;font-weight:700;font-size:1.5rem;box-shadow:var(--shadow-sm)}.about-title{font-size:1.25rem;font-weight:700;color:var(--ink)}.about-version{color:var(--muted);font-size:.875rem;font-weight:500}.profile-modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:var(--space-4) var(--space-6);border-top:1px solid var(--border);background:var(--surface-muted);flex-shrink:0}.profile-footer-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-3);width:100%}.profile-footer-actions form{margin:0;display:inline-flex}.search-user-container{padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--border);background:var(--surface)}.search-input-wrapper{position:relative;display:flex;align-items:center;width:100%}.search-input-wrapper .search-icon{position:absolute;left:.85rem;width:18px;height:18px;color:var(--muted-light);pointer-events:none;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.search-user-input{width:100%;padding:.65rem .95rem .65rem 2.4rem;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.9375rem;background:var(--surface);color:var(--ink);direction:ltr;transition:border-color .15s ease,box-shadow .15s ease}.search-user-input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px #18181b14}.search-user-input::placeholder{color:var(--muted-light)}.users-list{flex:1;overflow-y:auto;max-height:340px;min-height:180px;margin:0;padding:0;list-style:none}.users-list .search-hint,.users-list .searching,.users-list .empty{display:flex;align-items:center;justify-content:center;padding:3rem 1.5rem;text-align:center;color:var(--muted);font-size:.875rem}.user-list-item{margin:0;padding:0;list-style:none}.user-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.25rem;border-bottom:1px solid var(--border-subtle);cursor:pointer;transition:background .15s ease}.user-item:hover{background:var(--surface-muted)}.user-avatar-wrapper{flex-shrink:0;position:relative}.user-avatar-placeholder{width:40px;height:40px;border-radius:var(--radius-full);background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.95rem;border:1px solid var(--border)}.user-info{flex:1;min-width:0}.user-display-name{font-weight:600;font-size:.90625rem;color:var(--ink);line-height:1.3}.user-username{font-size:.78125rem;color:var(--muted);display:flex;align-items:center;gap:.35rem;margin-top:1px}.online-text{color:var(--online);font-weight:500}.user-item .chevron{color:var(--muted-light);font-size:1.25rem}.incoming-call-modal{background:var(--surface);padding:2rem 1.5rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-2xl);display:flex;flex-direction:column;align-items:center;gap:1.25rem;text-align:center;width:min(380px,92vw)}.call-avatar-wrapper{position:relative;width:80px;height:80px;display:flex;align-items:center;justify-content:center}.call-avatar-pulse{position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:var(--radius-full);border:2px solid var(--online);opacity:0;pointer-events:none}.call-avatar-pulse.pulse-active,.call-avatar-pulse.pulse-incoming{animation:callRipple 1.8s cubic-bezier(.215,.61,.355,1) infinite}@keyframes callRipple{0%{transform:scale(.9);opacity:.8}50%{opacity:.4}to{transform:scale(1.45);opacity:0}}.call-avatar{width:72px;height:72px;border-radius:var(--radius-full);background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.75rem;font-weight:700;overflow:hidden;box-shadow:var(--shadow-md);border:2px solid var(--border)}.call-info h3{font-size:1.1875rem;font-weight:700;color:var(--ink);margin-bottom:.35rem}.call-info p{font-size:.875rem;color:var(--muted)}.call-status-calling,.call-status-ringing,.call-status-incoming{display:inline-flex;align-items:center;gap:.4rem;font-size:.9375rem;font-weight:500}.call-status-calling{color:var(--muted)}.call-status-ringing,.call-status-incoming{color:var(--online);font-weight:600}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.calling-dot{background:var(--muted);animation:pulse 1.5s infinite}.ringing-dot{background:var(--online);box-shadow:0 0 8px #22c55e99;animation:pulse 1s infinite}.call-actions{display:flex;gap:.75rem;width:100%}.call-actions button{flex:1;padding:.75rem 1rem;border-radius:var(--radius-sm);border:none;cursor:pointer;font-weight:600;font-size:.9375rem;display:flex;align-items:center;justify-content:center;gap:.5rem;transition:opacity .15s ease,transform .1s ease;box-shadow:var(--shadow-sm)}.call-actions button:hover{opacity:.92;transform:translateY(-1px)}.call-actions button:active{transform:translateY(0)}.btn-accept{background:var(--online);color:#fff}.btn-decline{background:var(--danger);color:#fff}.offline-banner{position:relative;z-index:9999;background:var(--danger);color:#fff;text-align:center;padding:.4rem 1rem;font-size:.8125rem;font-weight:600}#toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%) translateY(100%);background:#18181beb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#fff;padding:.65rem 1.25rem;font-size:.875rem;font-weight:500;border-radius:var(--radius-full);opacity:0;transition:transform .25s var(--ease-out),opacity .25s var(--ease-out);pointer-events:none;z-index:9999;box-shadow:var(--shadow-xl)}#toast.show{transform:translate(-50%) translateY(0);opacity:1}.mobile-only{display:none}@media(max-width:900px){.chat-list-panel{width:300px}.messages-container{padding:1rem}}@media(max-width:768px){:root{--input-area-offset: 3.75rem}.messenger-container{height:100%;background:var(--surface)}.chat-panel{border-radius:0;height:100%;min-height:0;background:var(--bg)}.chat-list-panel{display:none;max-height:none;border-bottom:none;border-right:none}.chat-list-panel.mobile-show{display:flex;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;max-width:none;z-index:200;box-shadow:none;background:var(--surface)}.chat-panel.mobile-hide{display:none}.mobile-only{display:inline-flex}.back-btn{width:36px;height:36px}.panel-header{min-height:56px;padding:calc(.45rem + env(safe-area-inset-top)) .75rem .45rem}.messages-container{padding:.75rem .75rem 4.75rem}.message-bubble{max-width:88%;font-size:.90625rem;padding:.6rem .85rem}.message-input-area{padding:.5rem .625rem calc(.625rem + env(safe-area-inset-bottom))}.emoji-popover{left:.625rem;width:calc(100vw - 1.25rem)}.input-container{gap:.25rem;padding:.25rem .35rem}.input-container textarea{padding:.45rem .35rem;font-size:.9375rem}.input-container .icon-btn{width:36px;min-width:36px;height:36px}.profile-tabs{padding:.4rem .5rem}.profile-tabs button{font-size:.75rem;padding:.4rem .15rem}.auth-card{padding:1.75rem 1.25rem;margin:0 .5rem}div.modal,dialog.modal[open]{align-items:flex-end;padding:0}.modal-card,.modal-content{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-height:80vh;width:100%;animation:modalSlideUp .28s var(--ease-out)}.profile-modal-footer{padding:var(--space-3) var(--space-4) calc(var(--space-3) + env(safe-area-inset-bottom,0px))}@keyframes modalSlideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.message:hover .message-menu-btn{opacity:.7}}@media(prefers-reduced-motion:reduce){.sticker-glyph,.emoji-picker-enter-active,.emoji-picker-leave-active{animation:none;transition:none}}
