.login-page{background:var(--bg-primary);justify-content:center;align-items:center;min-height:100vh;display:flex;position:relative;overflow:hidden}.login-bg{position:absolute;inset:0;overflow:hidden}.login-bg-orb{filter:blur(100px);border-radius:50%;animation:20s ease-in-out infinite orbFloat;position:absolute}.login-bg-orb--1{background:var(--accent-primary);opacity:.08;width:500px;height:500px;animation-delay:0s;top:-15%;right:-10%}.login-bg-orb--2{background:var(--accent-secondary);opacity:.06;width:400px;height:400px;animation-delay:-7s;bottom:-10%;left:-5%}.login-bg-orb--3{background:var(--accent-primary);opacity:.04;width:300px;height:300px;animation-delay:-14s;top:40%;left:50%}@keyframes orbFloat{0%,to{transform:translate(0)scale(1)}33%{transform:translate(30px,-20px)scale(1.05)}66%{transform:translate(-20px,15px)scale(.95)}}.login-bg-pattern{background-image:radial-gradient(circle at 1px 1px, var(--border-color) 1px, transparent 0);opacity:.4;background-size:40px 40px;position:absolute;inset:0}.login-topbar{top:var(--space-lg);right:var(--space-lg);gap:var(--space-sm);z-index:10;display:flex;position:absolute}.login-locale-btn,.login-theme-btn{align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-full);color:var(--text-secondary);letter-spacing:.03em;transition:all var(--duration-fast) var(--ease-out);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font-size:.8rem;font-weight:600;display:flex}.login-locale-btn:hover,.login-theme-btn:hover{background:var(--bg-surface-hover);border-color:var(--border-hover);color:var(--text-primary)}.login-card{width:100%;max-width:420px;padding:var(--space-2xl) var(--space-xl);background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg), var(--shadow-glow);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:5;position:relative}.login-header{text-align:center;margin-bottom:var(--space-xl)}.login-logo{margin-bottom:var(--space-md);display:inline-flex}.login-title{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text-primary);margin-bottom:var(--space-xs);font-size:2rem;font-weight:700}.login-subtitle{color:var(--text-tertiary);font-size:.9rem;line-height:1.5}.login-mode-toggle{background:var(--bg-input);border-radius:var(--radius-md);margin-bottom:var(--space-lg);padding:3px;display:flex;position:relative}.login-mode-btn{justify-content:center;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:calc(var(--radius-md) - 2px);color:var(--text-tertiary);transition:color var(--duration-fast) var(--ease-out);z-index:1;flex:1;font-size:.85rem;font-weight:600;display:flex}.login-mode-btn.active{color:var(--text-primary)}.login-mode-indicator{background:var(--bg-surface);border-radius:calc(var(--radius-md) - 2px);width:calc(50% - 3px);height:calc(100% - 6px);box-shadow:var(--shadow-sm);transition:transform var(--duration-normal) var(--ease-spring);position:absolute;top:3px;left:3px}.login-mode-indicator.right{transform:translate(100%)}.login-fields{gap:var(--space-md);margin-bottom:var(--space-lg);flex-direction:column;display:flex}.login-field{align-items:center;gap:var(--space-sm);padding:0 var(--space-md);background:var(--bg-input);border-radius:var(--radius-md);height:52px;transition:all var(--duration-fast) var(--ease-out);border:1.5px solid #0000;display:flex;position:relative}.login-field:focus-within{border-color:var(--accent-primary);background:var(--bg-surface);box-shadow:0 0 0 2px var(--accent-primary-soft);z-index:1}.login-field-icon{color:var(--text-tertiary);transition:color var(--duration-fast);flex-shrink:0}.login-field:focus-within .login-field-icon{color:var(--accent-primary)}.login-field input{background:0 0;flex:1;height:100%;font-size:.95rem}.login-field input::placeholder{color:var(--text-tertiary)}.login-field input:focus-visible,.login-field :focus-visible{outline:none}.login-field-action{color:var(--text-tertiary);padding:var(--space-sm);border-radius:var(--radius-sm);transition:color var(--duration-fast);justify-content:center;align-items:center;min-width:44px;min-height:44px;display:flex}.login-field-action:hover{color:var(--text-secondary)}.login-error{color:var(--accent-danger);text-align:center;margin-bottom:var(--space-md);font-size:.85rem;overflow:hidden}.login-submit{justify-content:center;align-items:center;gap:var(--space-sm);background:var(--accent-primary);color:#fff;border-radius:var(--radius-md);width:100%;height:52px;transition:all var(--duration-fast) var(--ease-out);font-size:.95rem;font-weight:700;display:flex;position:relative;overflow:hidden}.login-submit:before{content:"";background:linear-gradient(135deg,#0000 30%,#ffffff1a 50%,#0000 70%);transition:transform .6s;position:absolute;inset:0;transform:translate(-100%)}.login-submit:hover:before{transform:translate(100%)}.login-submit:hover{background:var(--accent-primary-hover);transform:translateY(-1px);box-shadow:0 4px 20px #c85a3a4d}.login-submit:active{transform:translateY(0)}.login-submit:disabled{opacity:.7;cursor:not-allowed;transform:none}.login-spinner{border:2.5px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:22px;height:22px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-forgot{text-align:center;width:100%;margin-top:var(--space-md);padding:var(--space-sm) 0;min-height:44px;color:var(--text-tertiary);transition:color var(--duration-fast);font-size:.85rem;display:block}.login-forgot:hover{color:var(--accent-primary)}.login-2fa-header{text-align:center;margin-bottom:var(--space-lg)}.login-2fa-icon{background:var(--accent-primary-soft);width:56px;height:56px;color:var(--accent-primary);border-radius:var(--radius-lg);margin-bottom:var(--space-md);justify-content:center;align-items:center;display:inline-flex}.login-2fa-label{color:var(--text-secondary);font-size:.9rem}.login-code-inputs{gap:var(--space-sm);margin-bottom:var(--space-lg);justify-content:center;display:flex}.login-code-digit{text-align:center;width:48px;height:56px;font-size:1.4rem;font-weight:700;font-family:var(--font-body);background:var(--bg-input);border-radius:var(--radius-md);color:var(--text-primary);transition:all var(--duration-fast) var(--ease-out);border:1.5px solid #0000}.login-code-digit:focus{border-color:var(--accent-primary);background:var(--bg-surface);box-shadow:0 0 0 3px var(--accent-primary-soft);outline:none}.login-footer{align-items:center;gap:var(--space-md);margin-top:var(--space-xl);display:flex}.login-footer-line{background:var(--border-color);flex:1;height:1px}.login-footer-badge{align-items:center;gap:var(--space-xs);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em;font-size:.7rem;font-weight:600;display:flex}@media (width<=480px){.login-page{padding:var(--space-lg) var(--space-md);padding-top:calc(var(--space-3xl) + env(safe-area-inset-top,0px));padding-bottom:calc(var(--space-lg) + env(safe-area-inset-bottom,0px));align-items:center;min-height:100dvh}.login-card{width:100%;max-width:100%;padding:var(--space-xl) var(--space-lg);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);margin:0}.login-title{font-size:1.5rem}.login-field{height:52px}.login-submit{height:52px;font-size:1rem}.login-code-digit{width:46px;height:54px;font-size:1.3rem}.login-topbar{top:calc(var(--space-md) + env(safe-area-inset-top,0px));right:var(--space-md)}}@media (width<=480px) and (height<=680px){.login-page{align-items:flex-end;padding:0}.login-card{border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding-bottom:calc(var(--space-xl) + env(safe-area-inset-bottom,0px))}}@media (width>=481px) and (width<=900px){.login-page{padding:var(--space-xl)}.login-card{max-width:440px}}@media (height<=500px) and (orientation:landscape){.login-page{padding:var(--space-md);align-items:flex-start;overflow-y:auto}.login-card{max-width:480px;margin:auto}.login-header{margin-bottom:var(--space-md)}.login-logo svg{width:36px;height:36px}.login-title{font-size:1.3rem}.login-subtitle{display:none}.login-footer{margin-top:var(--space-md)}}.avatar{flex-shrink:0;position:relative}.avatar--sm{width:32px;height:32px}.avatar--md{width:44px;height:44px}.avatar--lg{width:52px;height:52px}.avatar--xl{width:80px;height:80px}.avatar-inner{border-radius:var(--radius-full);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;overflow:hidden}.avatar--sm .avatar-initials{font-size:.7rem;font-weight:700}.avatar--md .avatar-initials{font-size:.85rem;font-weight:700}.avatar--lg .avatar-initials{font-size:1rem;font-weight:700}.avatar--xl .avatar-initials{font-size:1.5rem;font-weight:700}.avatar-initials{color:#fff;letter-spacing:.03em;text-shadow:0 1px 2px #00000026}.avatar-status{border:2.5px solid var(--bg-surface);width:12px;height:12px;transition:background var(--duration-fast);border-radius:50%;position:absolute;bottom:0;right:0}.avatar--sm .avatar-status{border-width:2px;width:10px;height:10px}.avatar--xl .avatar-status{border-width:3px;width:16px;height:16px}.avatar-status--online{background:var(--accent-success)}.avatar-status--offline{background:var(--text-tertiary)}.avatar-status--away{background:var(--accent-secondary)}.avatar-status--dnd{background:var(--accent-danger)}.avatar-image{object-fit:cover;border-radius:inherit;width:100%;height:100%;display:block}.search-highlight-mark{background:var(--accent-primary-soft);color:var(--accent-primary);border-radius:2px;padding:0 1px;font-weight:700}.create-group-overlay{z-index:1000;background:var(--bg-overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.create-group-modal{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-xl);width:100%;max-width:440px;max-height:80vh;box-shadow:var(--shadow-lg), var(--shadow-glow);flex-direction:column;display:flex;position:relative;overflow:hidden}.create-group-header{padding:var(--space-lg) var(--space-xl);border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;display:flex}.create-group-title{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.01em;font-size:1.35rem;font-weight:700}.create-group-close{border-radius:var(--radius-sm);width:36px;height:36px;color:var(--text-tertiary);transition:all var(--duration-fast) var(--ease-out);justify-content:center;align-items:center;display:flex}.create-group-close:hover{background:var(--bg-input);color:var(--text-primary)}.create-group-body{padding:var(--space-lg) var(--space-xl);gap:var(--space-lg);flex-direction:column;flex:1;display:flex;overflow-y:auto}.create-group-field{gap:var(--space-sm);flex-direction:column;display:flex}.create-group-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;font-size:.8rem;font-weight:600}.create-group-input-wrap{align-items:center;gap:var(--space-sm);padding:0 var(--space-md);background:var(--bg-input);border-radius:var(--radius-md);height:48px;transition:all var(--duration-fast) var(--ease-out);border:1.5px solid #0000;display:flex;position:relative}.create-group-input-wrap:focus-within{border-color:var(--accent-primary);background:var(--bg-surface);box-shadow:0 0 0 3px var(--accent-primary-soft)}.create-group-input-icon{color:var(--text-tertiary);transition:color var(--duration-fast);flex-shrink:0}.create-group-input-wrap:focus-within .create-group-input-icon{color:var(--accent-primary)}.create-group-input{background:0 0;flex:1;height:100%;font-size:.95rem}.create-group-input::placeholder{color:var(--text-tertiary)}.create-group-char-count{color:var(--text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.75rem}.create-group-char-count.near-limit{color:var(--accent-secondary)}.create-group-char-count.at-limit{color:var(--accent-danger)}.create-group-members-header{justify-content:space-between;align-items:center;display:flex}.create-group-members-count{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:.8rem}.create-group-member-list{flex-direction:column;gap:2px;display:flex}.create-group-member{align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);cursor:pointer;transition:background var(--duration-fast) var(--ease-out);-webkit-user-select:none;user-select:none;display:flex}.create-group-member:hover{background:var(--bg-surface-hover)}.create-group-member.selected{background:var(--accent-primary-soft)}.create-group-member-info{flex:1;min-width:0}.create-group-member-name{color:var(--text-primary);font-size:.925rem;font-weight:600;line-height:1.3}.create-group-member-role{color:var(--text-tertiary);font-size:.8rem;line-height:1.3}.create-group-checkbox{border:2px solid var(--border-hover);width:20px;height:20px;transition:all var(--duration-fast) var(--ease-spring);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.create-group-member.selected .create-group-checkbox{background:var(--accent-primary);border-color:var(--accent-primary)}.create-group-checkbox-icon{color:#fff;opacity:0;transition:all var(--duration-fast) var(--ease-spring);transform:scale(0)}.create-group-member.selected .create-group-checkbox-icon{opacity:1;transform:scale(1)}.create-group-footer{justify-content:flex-end;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-xl);border-top:1px solid var(--border-color);display:flex}.create-group-cancel{padding:var(--space-sm) var(--space-lg);color:var(--text-secondary);border-radius:var(--radius-md);transition:all var(--duration-fast) var(--ease-out);font-size:.9rem;font-weight:600}.create-group-cancel:hover{color:var(--text-primary);background:var(--bg-input)}.create-group-submit{justify-content:center;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-xl);background:var(--accent-primary);color:#fff;border-radius:var(--radius-md);height:44px;transition:all var(--duration-fast) var(--ease-out);font-size:.9rem;font-weight:700;display:flex;position:relative;overflow:hidden}.create-group-submit:before{content:"";background:linear-gradient(135deg,#0000 30%,#ffffff1a 50%,#0000 70%);transition:transform .6s;position:absolute;inset:0;transform:translate(-100%)}.create-group-submit:hover:not(:disabled):before{transform:translate(100%)}.create-group-submit:hover:not(:disabled){background:var(--accent-primary-hover);transform:translateY(-1px);box-shadow:0 4px 20px #c85a3a4d}.create-group-submit:active:not(:disabled){transform:translateY(0)}.create-group-submit:disabled{opacity:.5;cursor:not-allowed;transform:none}.create-group-selected-chips{gap:var(--space-xs);flex-wrap:wrap;display:flex}.create-group-chip{background:var(--accent-primary-soft);color:var(--accent-primary);border-radius:var(--radius-full);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);align-items:center;gap:4px;padding:3px 10px 3px 12px;font-size:.78rem;font-weight:600;display:inline-flex}.create-group-chip:hover{background:var(--accent-primary);color:#fff}.create-group-chip-x{align-items:center;display:flex}@media (width<=480px){.create-group-modal{margin:var(--space-md);border-radius:var(--radius-lg);max-height:90vh}.create-group-header,.create-group-body,.create-group-footer{padding-left:var(--space-lg);padding-right:var(--space-lg)}}@media (width<=768px){.create-group-overlay{align-items:flex-end}.create-group-modal{border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-width:100%;max-height:90vh;padding-bottom:calc(var(--space-xl) + var(--safe-area-bottom))}}.cm-overlay{z-index:8000;background:var(--bg-overlay);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:var(--space-md);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.cm-modal{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-xl);width:100%;max-width:440px;box-shadow:var(--shadow-lg), var(--shadow-glow);position:relative;overflow:hidden}.cm-header{align-items:center;gap:var(--space-md);padding:var(--space-lg) var(--space-xl);border-bottom:1px solid var(--border-color);display:flex}.cm-header-icon{border-radius:var(--radius-md);background:var(--accent-primary-soft);width:44px;height:44px;color:var(--accent-primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.cm-header-text{flex:1;min-width:0}.cm-title{font-family:var(--font-display);color:var(--text-primary);font-size:1.25rem;font-weight:700;line-height:1.2}.cm-subtitle{color:var(--text-tertiary);margin-top:2px;font-size:.8rem}.cm-close{border-radius:var(--radius-sm);width:36px;height:36px;color:var(--text-tertiary);transition:all var(--duration-fast) var(--ease-out);flex-shrink:0;justify-content:center;align-items:center;display:flex}.cm-close:hover{background:var(--bg-input);color:var(--text-primary)}.cm-body{padding:var(--space-lg) var(--space-xl) var(--space-xl);gap:var(--space-lg);flex-direction:column;display:flex}.cm-body--success{text-align:center;padding-top:var(--space-xl);padding-bottom:var(--space-2xl);align-items:center}.cm-field{gap:var(--space-sm);flex-direction:column;display:flex;overflow:hidden}.cm-label{align-items:center;gap:var(--space-sm);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:.82rem;font-weight:600;display:flex}.cm-label-value{color:var(--accent-primary);margin-left:auto;font-size:.9rem;font-weight:700}.cm-input{width:100%;height:48px;padding:0 var(--space-md);background:var(--bg-input);border-radius:var(--radius-md);color:var(--text-primary);transition:all var(--duration-fast) var(--ease-out);border:1.5px solid #0000;font-size:.95rem}.cm-input::placeholder{color:var(--text-tertiary)}.cm-input:focus{border-color:var(--accent-primary);background:var(--bg-surface);box-shadow:0 0 0 3px var(--accent-primary-soft);outline:none}.cm-type-toggle{gap:var(--space-sm);display:flex}.cm-type-btn{justify-content:center;align-items:center;gap:var(--space-sm);background:var(--bg-input);border-radius:var(--radius-md);height:44px;color:var(--text-tertiary);transition:all var(--duration-fast) var(--ease-out);border:1.5px solid #0000;flex:1;font-size:.88rem;font-weight:600;display:flex}.cm-type-btn:hover{color:var(--text-secondary);border-color:var(--border-hover)}.cm-type-btn--active{background:var(--accent-primary-soft);color:var(--accent-primary);border-color:var(--accent-primary)}.cm-type-btn--active:hover{color:var(--accent-primary)}.cm-slider{appearance:none;background:var(--bg-input);border-radius:var(--radius-full);cursor:pointer;outline:none;width:100%;height:6px}.cm-slider::-webkit-slider-thumb{appearance:none;background:var(--accent-primary);border:3px solid var(--bg-surface);width:22px;height:22px;box-shadow:var(--shadow-sm);cursor:grab;transition:transform var(--duration-fast) var(--ease-out);border-radius:50%}.cm-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.cm-slider::-webkit-slider-thumb:active{cursor:grabbing;transform:scale(1.05)}.cm-slider::-moz-range-thumb{background:var(--accent-primary);border:3px solid var(--bg-surface);width:22px;height:22px;box-shadow:var(--shadow-sm);cursor:grab;border-radius:50%}.cm-slider-labels{color:var(--text-tertiary);justify-content:space-between;padding:0 2px;font-size:.75rem;display:flex}.cm-checkbox-label{align-items:center;gap:var(--space-sm);color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;font-size:.9rem;font-weight:500;display:flex}.cm-checkbox{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.cm-checkbox-visual{border:2px solid var(--border-hover);color:#fff;width:20px;height:20px;transition:all var(--duration-fast) var(--ease-out);border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.cm-checkbox:checked+.cm-checkbox-visual{background:var(--accent-primary);border-color:var(--accent-primary)}.cm-error{color:var(--accent-danger);text-align:center;font-size:.85rem;overflow:hidden}.cm-create-btn{justify-content:center;align-items:center;gap:var(--space-sm);background:var(--accent-primary);color:#fff;border-radius:var(--radius-md);width:100%;height:50px;transition:all var(--duration-fast) var(--ease-out);font-size:.95rem;font-weight:700;display:flex;position:relative;overflow:hidden}.cm-create-btn:before{content:"";background:linear-gradient(135deg,#0000 30%,#ffffff1a 50%,#0000 70%);transition:transform .6s;position:absolute;inset:0;transform:translate(-100%)}.cm-create-btn:hover:before{transform:translate(100%)}.cm-create-btn:hover{background:var(--accent-primary-hover);transform:translateY(-1px);box-shadow:0 4px 20px #c85a3a4d}.cm-create-btn:active{transform:translateY(0)}.cm-create-btn:disabled{opacity:.7;cursor:not-allowed;transform:none}.cm-spinner-icon{animation:.8s linear infinite cm-spin}@keyframes cm-spin{to{transform:rotate(360deg)}}.cm-success-icon{background:linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));color:#fff;width:64px;height:64px;margin-bottom:var(--space-sm);border-radius:50%;justify-content:center;align-items:center;display:flex}.cm-success-title{font-family:var(--font-display);color:var(--text-primary);font-size:1.3rem;font-weight:700}.cm-success-type{align-items:center;gap:var(--space-xs);color:var(--text-tertiary);font-size:.82rem;font-weight:500;display:flex}.cm-link-box{background:var(--bg-input);border:1.5px solid var(--border-color);border-radius:var(--radius-md);width:100%;margin-top:var(--space-sm);align-items:center;gap:4px;padding:4px;display:flex}.cm-link-text{height:40px;padding:0 var(--space-md);color:var(--accent-primary);cursor:text;background:0 0;border:none;outline:none;flex:1;min-width:0;font-size:.85rem;font-weight:500}.cm-copy-btn{border-radius:calc(var(--radius-md) - 4px);background:var(--accent-primary);color:#fff;width:40px;height:40px;transition:all var(--duration-fast) var(--ease-out);flex-shrink:0;justify-content:center;align-items:center;display:flex}.cm-copy-btn:hover{background:var(--accent-primary-hover)}.cm-copy-btn--copied,.cm-copy-btn--copied:hover{background:var(--accent-success)}.cm-password-note{align-items:center;gap:var(--space-xs);color:var(--text-tertiary);font-size:.8rem;font-weight:500;display:flex}.cm-action-buttons{gap:var(--space-sm);margin-top:var(--space-sm);flex-direction:column;display:flex}.cm-join-btn{width:100%;min-height:48px;padding:var(--space-sm) var(--space-md);justify-content:center;align-items:center;gap:var(--space-sm);background:var(--accent-primary);color:#fff;border-radius:var(--radius-md);transition:all var(--duration-fast) var(--ease-out);white-space:nowrap;font-size:.9rem;font-weight:700;display:flex}.cm-join-btn:hover{background:var(--accent-primary-hover);transform:translateY(-1px);box-shadow:0 4px 16px #c85a3a4d}.cm-join-alt-btn{width:100%;height:40px;color:var(--text-tertiary);border-radius:var(--radius-md);transition:color var(--duration-fast);background:0 0;font-size:.82rem;font-weight:500}.cm-join-alt-btn:hover{color:var(--text-secondary)}@media (width<=480px){.cm-modal{border-radius:var(--radius-lg)}.cm-header{padding:var(--space-md) var(--space-lg)}.cm-body{padding:var(--space-md) var(--space-lg) var(--space-lg)}}.bottom-sheet-root{z-index:200;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.bottom-sheet-backdrop{background:#00000080;position:absolute;inset:0}.bottom-sheet{background:var(--bg-surface);width:100%;padding-bottom:var(--safe-area-bottom,0px);touch-action:none;border-radius:20px 20px 0 0;flex-direction:column;display:flex;position:relative;overflow:hidden}.bottom-sheet-handle-area{cursor:grab;flex-shrink:0;justify-content:center;padding:12px 0 4px;display:flex}.bottom-sheet-handle-area:active{cursor:grabbing}.bottom-sheet-handle{border-radius:var(--radius-full);background:var(--text-tertiary);opacity:.5;width:36px;height:4px}.bottom-sheet-header{padding:var(--space-sm) var(--space-lg);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.bottom-sheet-title{color:var(--text-primary);font-size:1rem;font-weight:700}.bottom-sheet-close{border-radius:var(--radius-sm);width:36px;height:36px;color:var(--text-tertiary);transition:all var(--duration-fast) var(--ease-out);justify-content:center;align-items:center;display:flex}.bottom-sheet-close:hover{background:var(--bg-input);color:var(--text-primary)}.bottom-sheet-content{padding:0 var(--space-lg) var(--space-lg);-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}.dnd-settings{gap:var(--space-lg);padding:var(--space-lg);flex-direction:column;display:flex}.dnd-settings__section{gap:var(--space-md);flex-direction:column;display:flex}.dnd-settings__section-title{font-family:var(--font-display);color:var(--text-primary);font-size:1.15rem;font-weight:600}.dnd-settings__row{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-sm) 0;display:flex}.dnd-settings__row-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.dnd-settings__label{color:var(--text-primary);font-size:.9rem;font-weight:600}.dnd-settings__sublabel{color:var(--text-tertiary);font-size:.78rem;line-height:1.4}.dnd-settings__toggle{cursor:pointer;flex-shrink:0;width:40px;height:22px;position:relative}.dnd-settings__toggle input{opacity:0;width:0;height:0;position:absolute}.dnd-settings__toggle-track{border-radius:var(--radius-full);background:var(--bg-tertiary);transition:background var(--duration-normal) var(--ease-out);position:absolute;inset:0}.dnd-settings__toggle input:checked+.dnd-settings__toggle-track{background:var(--accent-primary)}.dnd-settings__toggle-thumb{width:18px;height:18px;transition:transform var(--duration-normal) var(--ease-spring);pointer-events:none;background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #00000026}.dnd-settings__toggle input:checked~.dnd-settings__toggle-thumb{transform:translate(18px)}.dnd-settings__permission-btn{align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-md);color:var(--accent-primary);background:var(--accent-primary-soft);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration-fast), color var(--duration-fast);white-space:nowrap;border:none;font-size:.8rem;font-weight:600;display:inline-flex}.dnd-settings__permission-btn:hover{background:var(--accent-primary);color:var(--text-inverse)}.dnd-settings__permission-btn:disabled{opacity:.5;cursor:default}.dnd-settings__permission-btn:disabled:hover{background:var(--accent-primary-soft);color:var(--accent-primary)}.dnd-settings__volume-row{align-items:center;gap:var(--space-md);padding:0 0 var(--space-xs);display:flex}.dnd-settings__volume-label{color:var(--text-tertiary);text-align:right;font-variant-numeric:tabular-nums;min-width:28px;font-size:.78rem}.dnd-settings__volume-slider{appearance:none;border-radius:var(--radius-full);background:var(--bg-tertiary);cursor:pointer;outline:none;flex:1;height:4px}.dnd-settings__volume-slider::-webkit-slider-thumb{appearance:none;background:var(--accent-primary);cursor:pointer;width:16px;height:16px;transition:transform var(--duration-fast) var(--ease-spring);border-radius:50%;box-shadow:0 1px 4px #0003}.dnd-settings__volume-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.dnd-settings__volume-slider::-moz-range-thumb{background:var(--accent-primary);cursor:pointer;border:none;border-radius:50%;width:16px;height:16px;box-shadow:0 1px 4px #0003}.dnd-settings__volume-slider::-moz-range-track{border-radius:var(--radius-full);background:var(--bg-tertiary);height:4px}.dnd-settings__schedule{gap:var(--space-sm);padding-top:var(--space-xs);flex-direction:column;display:flex}.dnd-settings__presets{gap:var(--space-sm);flex-wrap:wrap;display:flex}.dnd-settings__preset-btn{padding:var(--space-xs) var(--space-sm);color:var(--text-secondary);background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration-fast), color var(--duration-fast), border-color var(--duration-fast);white-space:nowrap;font-size:.78rem;font-weight:600}.dnd-settings__preset-btn:hover{background:var(--bg-surface-hover);border-color:var(--border-hover)}.dnd-settings__preset-btn--active{background:var(--accent-primary-soft);color:var(--accent-primary);border-color:var(--accent-primary)}.dnd-settings__time-inputs{align-items:center;gap:var(--space-sm);display:flex}.dnd-settings__time-input{width:100px;padding:var(--space-xs) var(--space-sm);color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-sm);text-align:center;transition:border-color var(--duration-fast);font-size:.85rem;font-weight:500}.dnd-settings__time-input:focus{border-color:var(--accent-primary);outline:none}.dnd-settings__time-separator{color:var(--text-tertiary);font-size:.85rem;font-weight:500}.dnd-settings__divider{background:var(--border-color);height:1px;margin:var(--space-xs) 0;border:none}.avatar-upload{flex-direction:column;align-items:center;gap:8px;display:inline-flex}.avatar-upload-trigger{cursor:pointer;font:inherit;color:inherit;background:0 0;border:none;border-radius:50%;outline:none;margin:0;padding:0;transition:transform .1s;display:inline-flex;position:relative}.avatar-upload-trigger:hover:not(.is-disabled):not(:disabled){transform:scale(1.02)}.avatar-upload-trigger:active:not(.is-disabled):not(:disabled){transform:scale(.98)}.avatar-upload-trigger.is-disabled,.avatar-upload-trigger:disabled{cursor:not-allowed;opacity:.7}.avatar-upload-trigger--md .avatar{width:44px;height:44px}.avatar-upload-trigger--lg .avatar{width:72px;height:72px}.avatar-upload-trigger--xl .avatar{width:96px;height:96px}.avatar-upload-overlay{color:#fff;opacity:0;pointer-events:none;background:#00000061;border-radius:50%;justify-content:center;align-items:center;transition:opacity .15s;display:flex;position:absolute;inset:0}.avatar-upload-trigger:hover .avatar-upload-overlay,.avatar-upload-trigger:focus-visible .avatar-upload-overlay{opacity:1}.avatar-upload-trigger:disabled .avatar-upload-overlay{opacity:1;background:#00000080}.avatar-upload-spinner{animation:.8s linear infinite av-spin}@keyframes av-spin{to{transform:rotate(360deg)}}.avatar-upload-remove{background:var(--bg-surface,#fff);color:#e07b6b;border:2px solid var(--bg-primary,#fff);width:24px;height:24px;box-shadow:var(--shadow-sm);cursor:pointer;z-index:1;border-radius:50%;justify-content:center;align-items:center;transition:background .15s,transform .1s;display:inline-flex;position:absolute;top:-4px;right:-4px}.avatar-upload-remove:hover{background:#e07b6b1f}.avatar-upload-remove:active{transform:scale(.9)}.avatar-upload-label{color:var(--text-tertiary);text-align:center;max-width:140px;font-size:.8rem}.avatar-upload-error{color:#e07b6b;text-align:center;border-radius:var(--radius-sm);background:#e07b6b1a;max-width:220px;padding:4px 8px;font-size:.78rem}.profile-overlay{z-index:9000;padding:var(--space-lg);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.profile-modal{background:var(--bg-secondary);border-radius:var(--radius-xl);width:100%;max-width:440px;max-height:90dvh;box-shadow:var(--shadow-xl);flex-direction:column;display:flex;overflow:hidden}@media (width<=480px){.profile-overlay{align-items:flex-end;padding:0}.profile-modal{border-radius:0;max-width:100%;height:100dvh;max-height:100dvh}}.profile-header{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.profile-header h2{color:var(--text-primary);margin:0;font-size:1.1rem;font-weight:700}.profile-close{width:36px;height:36px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background .15s;display:inline-flex}.profile-close:hover{background:var(--bg-tertiary)}.profile-body{padding:var(--space-lg);gap:var(--space-md);flex-direction:column;flex:1;display:flex;overflow-y:auto}.profile-avatar-wrap{padding:var(--space-md) 0;justify-content:center;display:flex}.profile-field{flex-direction:column;gap:6px;display:flex}.profile-field-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:.78rem;font-weight:600}.profile-field input{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);outline:none;min-height:44px;padding:10px 12px;font-size:16px;transition:border-color .15s}.profile-field input:focus{border-color:var(--accent-primary)}.profile-field--readonly{background:var(--bg-tertiary);border-radius:var(--radius-md);padding:10px 12px}.profile-field--readonly .profile-field-value{color:var(--text-primary);font-size:.9rem}.profile-error{color:#e07b6b;border-radius:var(--radius-sm);background:#e07b6b1a;padding:10px 12px;font-size:.85rem}.profile-footer{justify-content:flex-end;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg) calc(var(--space-md) + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border);background:var(--bg-secondary);flex-shrink:0;display:flex}.profile-saved{color:#5a9e6f;align-items:center;gap:4px;font-size:.85rem;display:inline-flex}.profile-save-btn{background:var(--accent-primary);color:#fff;border-radius:var(--radius-md);cursor:pointer;border:none;align-items:center;gap:6px;min-height:40px;padding:8px 18px;font-size:.9rem;font-weight:600;transition:filter .15s;display:inline-flex}.profile-save-btn:hover:not(:disabled){filter:brightness(1.08)}.profile-save-btn:disabled{opacity:.5;cursor:not-allowed}.profile-spinner{animation:.8s linear infinite profile-spin}@keyframes profile-spin{to{transform:rotate(360deg)}}.sidebar{width:var(--sidebar-width);background:var(--bg-secondary);border-right:1px solid var(--border-color);z-index:10;flex-direction:column;height:100dvh;display:flex;position:relative}.sidebar-header{padding:var(--space-md) var(--space-md) 0;flex-shrink:0}.sidebar-header-top{margin-bottom:var(--space-md);padding:0 var(--space-xs);justify-content:space-between;align-items:center;display:flex}.sidebar-brand{align-items:center;gap:var(--space-sm);display:flex}.sidebar-brand-icon{display:flex}.sidebar-brand-text{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.01em;font-size:1.35rem;font-weight:700}.sidebar-header-actions{align-items:center;gap:4px;display:flex}.sidebar-settings-btn{border-radius:var(--radius-md);width:40px;height:40px;color:var(--text-tertiary);transition:all var(--duration-fast) var(--ease-out);justify-content:center;align-items:center;display:flex}.sidebar-settings-btn:hover:not(:disabled){background:var(--bg-tertiary);color:var(--text-primary)}.sidebar-settings-btn:disabled{opacity:.4;cursor:not-allowed}.sidebar-settings-btn--active{color:var(--accent-primary);background:var(--accent-primary-soft)}.sidebar-settings-btn--active:hover:not(:disabled){background:var(--accent-primary-soft);filter:brightness(.95)}.sidebar-search{align-items:center;gap:var(--space-sm);height:40px;padding:0 var(--space-md);background:var(--bg-input);border-radius:var(--radius-md);margin-bottom:var(--space-sm);transition:all var(--duration-fast) var(--ease-out);display:flex;position:relative}.sidebar-search:focus-within{background:var(--bg-surface);box-shadow:0 0 0 2px var(--accent-primary-soft)}.sidebar-search-icon{color:var(--text-tertiary);flex-shrink:0}.sidebar-search input{flex:1;height:100%;font-size:.87rem}.sidebar-search input::placeholder{color:var(--text-tertiary)}.sidebar-search-clear{background:var(--bg-tertiary);width:32px;height:32px;color:var(--text-tertiary);border-radius:50%;justify-content:center;align-items:center;min-width:44px;min-height:44px;display:flex}.sidebar-dropdown{padding:var(--space-xs) var(--space-md);overflow:hidden}.sidebar-dropdown-item{align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-md);color:var(--text-secondary);border-radius:var(--radius-sm);transition:all var(--duration-fast);font-size:.87rem;display:flex}.sidebar-dropdown-item:hover{background:var(--bg-tertiary);color:var(--text-primary)}.sidebar-dropdown-item--danger:hover{color:var(--accent-danger)}.sidebar-dropdown-divider{background:var(--border-color);height:1px;margin:var(--space-xs) 0}.sidebar-new-group{gap:var(--space-xs);padding:var(--space-xs) var(--space-md);display:flex}.sidebar-new-group-btn{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);color:var(--accent-primary);border-radius:var(--radius-md);transition:all var(--duration-fast) var(--ease-out);flex:1;font-size:.85rem;font-weight:600;display:flex}.sidebar-new-group-btn:hover{background:var(--accent-primary-soft)}.sidebar-chats{padding:var(--space-xs) var(--space-sm);overscroll-behavior-y:contain;flex:1;position:relative;overflow-y:auto}.sidebar-ptr{height:36px;color:var(--accent-primary);pointer-events:none;justify-content:center;align-items:center;display:flex;position:sticky;top:-8px}.sidebar-chat{align-items:center;gap:var(--space-md);width:100%;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);text-align:left;transition:all var(--duration-fast) var(--ease-out);cursor:pointer;display:flex}.sidebar-chat:hover{background:var(--bg-surface-hover)}.sidebar-chat.active{background:var(--accent-primary-soft)}.sidebar-chat-body{flex:1;min-width:0}.sidebar-chat-top{justify-content:space-between;align-items:center;gap:var(--space-sm);margin-bottom:2px;display:flex}.sidebar-chat-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:4px;font-size:.93rem;font-weight:600;display:flex;overflow:hidden}.sidebar-chat-pin{color:var(--accent-secondary);flex-shrink:0;transform:rotate(45deg)}.sidebar-chat-group-icon{color:var(--accent-primary);flex-shrink:0}.sidebar-chat-time{color:var(--text-tertiary);flex-shrink:0;font-size:.75rem;font-weight:500}.sidebar-chat-bottom{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.sidebar-chat-preview{color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.82rem;overflow:hidden}.sidebar-chat-badge{min-width:20px;height:20px;color:var(--badge-text);background:var(--badge-bg);border-radius:var(--radius-full);flex-shrink:0;justify-content:center;align-items:center;padding:0 6px;font-size:.7rem;font-weight:700;display:flex}.sidebar-footer{align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-top:1px solid var(--border-color);flex-shrink:0;display:flex}.sidebar-footer-info{flex-direction:column;display:flex}.sidebar-footer-name{color:var(--text-primary);font-size:.87rem;font-weight:600}.sidebar-footer-role{color:var(--text-tertiary);font-size:.75rem}@media (width<=768px){.sidebar{width:100%;height:100%;padding-bottom:calc(var(--bottom-nav-height) + var(--safe-area-bottom));border-right:none}.sidebar-header{padding-top:calc(var(--space-md) + var(--safe-area-top))}.sidebar-search{border-radius:var(--radius-lg);height:44px;margin:0 var(--space-sm) var(--space-sm)}.sidebar-chat{padding:var(--space-md) var(--space-md);gap:var(--space-md);border-radius:var(--radius-lg);min-height:72px}.sidebar-chat .avatar{width:52px;height:52px}.sidebar-chat .avatar-initials,.sidebar-chat-name{font-size:1rem}.sidebar-chat-preview{font-size:.87rem}.sidebar-chat-badge{min-width:22px;height:22px;font-size:.75rem}.sidebar-new-group-btn{padding:var(--space-md);font-size:.9rem}.sidebar-footer{display:none}.sidebar-dropdown{padding:var(--space-xs) var(--space-sm)}.sidebar-dropdown-item{padding:var(--space-md);border-radius:var(--radius-md);font-size:.93rem}}.sidebar-new-chat-overlay{z-index:250;background:var(--bg-secondary);position:fixed;inset:0}.sidebar-new-chat-panel{flex-direction:column;height:100dvh;display:flex}.sidebar-new-chat-header{align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-md);padding-top:calc(var(--space-md) + var(--safe-area-top));border-bottom:1px solid var(--border-color);flex-shrink:0;display:flex}.sidebar-new-chat-back{border-radius:var(--radius-md);width:44px;height:44px;color:var(--text-secondary);-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;display:flex}.sidebar-new-chat-back:active{background:var(--bg-tertiary)}.sidebar-new-chat-title{color:var(--text-primary);font-size:1.1rem;font-weight:700}.sidebar-new-chat-list{padding:var(--space-sm);-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}.sidebar-new-chat-user{align-items:center;gap:var(--space-md);width:100%;padding:var(--space-md);border-radius:var(--radius-lg);text-align:left;min-height:64px;transition:background var(--duration-fast) var(--ease-out);-webkit-tap-highlight-color:transparent;display:flex}.sidebar-new-chat-user:hover{background:var(--bg-surface-hover)}.sidebar-new-chat-user:active{background:var(--accent-primary-soft)}.sidebar-new-chat-user-info{flex-direction:column;min-width:0;display:flex}.sidebar-new-chat-user-name{color:var(--text-primary);font-size:1rem;font-weight:600}.sidebar-new-chat-user-role{color:var(--text-tertiary);font-size:.82rem}.sidebar-new-chat-empty{padding:var(--space-2xl) var(--space-lg);color:var(--text-tertiary);text-align:center;font-size:.9rem}.ios-install-backdrop{z-index:400;background:#00000080;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.ios-install-modal{background:var(--bg-surface);border-radius:var(--radius-lg);width:100%;max-width:440px;box-shadow:var(--shadow-lg);color:var(--text-primary);padding:24px}.ios-install-modal h3{color:var(--text-primary);margin:0 0 12px;font-size:1.2rem;font-weight:700}.ios-install-modal p{color:var(--text-secondary);margin:0 0 16px;font-size:.9rem;line-height:1.5}.ios-install-modal ol{color:var(--text-primary);margin:0 0 24px;padding-left:24px;font-size:.9rem;line-height:1.6}.ios-install-modal ol li{margin-bottom:6px}.ios-install-close{background:var(--accent-primary);color:#fff;border-radius:var(--radius-md);cursor:pointer;border:none;width:100%;padding:12px;font-size:.95rem;font-weight:600}.ios-install-close:hover{filter:brightness(1.05)}.sidebar-footer--clickable{font:inherit;color:inherit;text-align:left;cursor:pointer;border:none;border-top:1px solid var(--border-color,var(--border));background:0 0;outline:none;width:100%;transition:background .15s}.sidebar-footer--clickable:hover{background:var(--bg-tertiary)}.sidebar-footer--clickable:active{background:var(--bg-surface-hover,var(--bg-tertiary))}.bottom-nav{display:none}@media (width<=768px){.bottom-nav{height:calc(64px + var(--safe-area-bottom,0px));padding-bottom:var(--safe-area-bottom,0px);background:var(--bg-surface);border-top:1px solid var(--border-color);-webkit-backdrop-filter:blur(20px);z-index:100;justify-content:space-around;align-items:center;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav-tab{min-height:48px;color:var(--text-tertiary);transition:color var(--duration-fast) var(--ease-out);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:6px 0;display:flex;position:relative}.bottom-nav-tab.active{color:var(--accent-primary)}.bottom-nav-indicator{background:var(--accent-primary);width:6px;height:6px;animation:bottomNavDotIn var(--duration-fast) var(--ease-spring);border-radius:50%;position:absolute;top:2px;left:50%;transform:translate(-50%)scaleX(1)}@keyframes bottomNavDotIn{0%{transform:translate(-50%)scale(0)}to{transform:translate(-50%)scale(1)}}.bottom-nav-icon-wrap{width:28px;height:28px;transition:transform var(--duration-fast) var(--ease-out);justify-content:center;align-items:center;display:flex;position:relative}.bottom-nav-tab.active .bottom-nav-icon-wrap{transform:scale(1.1)}.bottom-nav-badge{color:#fff;background:var(--accent-danger,#c04b4b);border-radius:var(--radius-full);justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:.65rem;font-weight:700;line-height:1;display:flex;position:absolute;top:-4px;right:-10px}.bottom-nav-label{text-transform:uppercase;letter-spacing:.06em;font-size:10px;font-weight:600;line-height:1}}.chat-header{align-items:center;gap:var(--space-sm);height:var(--header-height);padding:0 var(--space-lg);background:var(--bg-surface);border-bottom:1px solid var(--border-color);animation:fadeIn .3s var(--ease-out);flex-shrink:0;display:flex}.chat-header-back{border-radius:var(--radius-md);width:36px;height:36px;color:var(--text-secondary);transition:all var(--duration-fast);justify-content:center;align-items:center;display:none}.chat-header-back:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.chat-header-info{align-items:center;gap:var(--space-md);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md);transition:background var(--duration-fast);cursor:pointer;flex:1;display:flex}.chat-header-info:hover{background:var(--bg-surface-hover)}.chat-header-text{text-align:left;flex-direction:column;display:flex}.chat-header-name{color:var(--text-primary);font-size:.95rem;font-weight:700}.chat-header-status{color:var(--text-tertiary);transition:color var(--duration-fast);font-size:.78rem}.chat-header-status.online{color:var(--accent-success)}.chat-header-actions{gap:var(--space-xs);display:flex}.chat-header-action{border-radius:var(--radius-md);width:40px;height:40px;color:var(--text-secondary);transition:all var(--duration-fast) var(--ease-out);justify-content:center;align-items:center;display:flex}.chat-header-action:hover:not(:disabled){background:var(--accent-primary-soft);color:var(--accent-primary)}.chat-header-action:disabled{opacity:.3;cursor:not-allowed}@media (width<=768px){.chat-header{padding:0 var(--space-sm);padding-top:var(--safe-area-top);height:calc(var(--header-height) + var(--safe-area-top))}.chat-header-back{width:44px;height:44px;display:flex}.chat-header-name{font-size:1rem}.chat-header-action{width:44px;height:44px}}.ch-spinner{animation:.8s linear infinite ch-spin}@keyframes ch-spin{to{transform:rotate(360deg)}}.message-menu-backdrop{z-index:999;background:var(--bg-overlay);opacity:.3;pointer-events:none;position:fixed;inset:0}.message-menu{z-index:1000;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-md);width:200px;box-shadow:var(--shadow-lg);flex-direction:column;padding:8px;display:flex;position:fixed}.message-menu-item{align-items:center;gap:var(--space-sm);height:44px;padding:0 var(--space-md);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;transition:background var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);-webkit-user-select:none;user-select:none;font-size:.875rem;font-weight:500;display:flex}.message-menu-item:hover{background:var(--accent-primary-soft);color:var(--accent-primary)}.message-menu-item:active{transform:scale(.98)}.message-menu-item--danger{color:var(--accent-danger)}.message-menu-item--danger:hover{color:var(--accent-danger);background:#c04b4b1a}.message-menu-item svg{opacity:.85;flex-shrink:0}.message-menu-item:hover svg{opacity:1}@media (width<=768px){.message-menu-backdrop{z-index:300}.message-menu{bottom:calc(16px + env(safe-area-inset-bottom,0px));border-radius:var(--radius-xl);width:auto;padding:var(--space-sm);z-index:301;position:fixed;top:auto;left:16px;right:16px}.message-menu-item{border-radius:var(--radius-md);height:52px;padding:0 var(--space-lg);font-size:.95rem}}.scroll-to-bottom{bottom:var(--space-lg);right:var(--space-lg);z-index:10;background:var(--accent-primary);color:#fff;cursor:pointer;width:44px;height:44px;box-shadow:var(--shadow-md);transition:background var(--duration-fast) var(--ease-out);border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute}.scroll-to-bottom:hover{background:var(--accent-primary-hover)}.scroll-to-bottom:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.scroll-to-bottom-badge{border-radius:var(--radius-full);background:var(--badge-bg);min-width:20px;height:20px;color:var(--badge-text);font-family:var(--font-body);text-align:center;box-shadow:0 0 0 2px var(--bg-chat);padding:0 5px;font-size:.65rem;font-weight:700;line-height:20px;position:absolute;top:-4px;right:-4px}.typing-indicator{align-items:flex-start;gap:var(--space-xs);padding:0 var(--space-md) var(--space-sm);flex-direction:column;display:flex}.typing-indicator-bubble{background:var(--msg-other-bg);border-radius:var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-sm);box-shadow:var(--shadow-sm);align-items:center;gap:4px;padding:10px 14px;display:flex}.typing-dot{background:var(--text-tertiary);border-radius:50%;width:6px;height:6px;animation:1.4s ease-in-out infinite typingBounce;display:block}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes typingBounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.typing-indicator-text{font-family:var(--font-body);color:var(--text-tertiary);padding-left:var(--space-xs);font-size:.7rem}.mention-tag{background:var(--accent-primary-soft);color:var(--accent-primary);cursor:pointer;transition:opacity var(--duration-fast) var(--ease-out);border-radius:3px;padding:0 4px;font-weight:600}.mention-tag:hover{opacity:.85}.mention-tag--self{background:var(--accent-primary);color:#fff}.msg-link{color:var(--accent-primary);text-underline-offset:2px;word-break:break-all;cursor:pointer;font-weight:500;text-decoration:underline}.message--own .msg-link{color:#fff;font-weight:600;text-decoration-color:#fffc}.msg-link:hover{filter:brightness(1.15)}.msg-link:visited{color:inherit;opacity:.92}.message--own .msg-link:visited{color:#fff}.media-viewer-overlay{z-index:9500;touch-action:none;-webkit-user-select:none;user-select:none;scrollbar-width:none;background:#000000f2;position:fixed;inset:0;overflow:hidden}.media-viewer-overlay::-webkit-scrollbar{display:none}.media-viewer-top{z-index:2;padding:var(--space-md) var(--space-lg);padding-top:calc(var(--space-md) + var(--safe-area-top,0px));pointer-events:auto;background:linear-gradient(#0009 0%,#0000 100%);justify-content:space-between;align-items:center;display:flex;position:absolute;top:0;left:0;right:0}.media-viewer-info{flex-direction:column;gap:2px;min-width:0;display:flex}.media-viewer-sender{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;overflow:hidden}.media-viewer-time{color:#fff9;font-size:.78rem}.media-viewer-close{border-radius:var(--radius-full);color:#fff;cursor:pointer;width:44px;height:44px;transition:background var(--duration-fast) var(--ease-out);background:#ffffff1a;flex-shrink:0;justify-content:center;align-items:center;display:flex}.media-viewer-close:hover{background:#fff3}.media-viewer-content{z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.media-viewer-track{cursor:grab;align-items:center;height:100%;display:flex}.media-viewer-track:active{cursor:grabbing}.media-viewer-slide{width:100vw;height:100%;padding:60px var(--space-lg);flex-shrink:0;justify-content:center;align-items:center;display:flex}.media-viewer-image{object-fit:contain;border-radius:var(--radius-sm);transform-origin:50%;max-width:100%;max-height:100%;transition:opacity var(--duration-normal) var(--ease-out)}.media-viewer-video{object-fit:contain;border-radius:var(--radius-sm);outline:none;max-width:100%;max-height:100%}.media-viewer-loader{z-index:0;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.media-viewer-spinner{border:3px solid #ffffff26;border-top-color:#fff;border-radius:50%;width:40px;height:40px;animation:.8s linear infinite media-viewer-spin}@keyframes media-viewer-spin{to{transform:rotate(360deg)}}.media-viewer-bottom{z-index:2;align-items:center;gap:var(--space-sm);padding:var(--space-lg);padding-bottom:calc(var(--space-lg) + var(--safe-area-bottom,0px));pointer-events:auto;background:linear-gradient(#0000 0%,#0009 100%);flex-direction:column;display:flex;position:absolute;bottom:0;left:0;right:0}.media-viewer-caption{color:#ffffffe6;text-align:center;max-width:600px;font-size:.9rem;line-height:1.45}.media-viewer-counter{color:#ffffff80;font-variant-numeric:tabular-nums;font-size:.82rem}.media-viewer-nav{z-index:3;border-radius:var(--radius-full);color:#ffffff80;cursor:pointer;width:44px;height:44px;transition:color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out), opacity var(--duration-fast) var(--ease-out);opacity:0;background:#ffffff14;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.media-viewer-overlay:hover .media-viewer-nav{opacity:1}.media-viewer-nav:hover{color:#fff;background:#ffffff2e}.media-viewer-nav--prev{left:var(--space-md)}.media-viewer-nav--next{right:var(--space-md)}@media (width<=768px){.media-viewer-slide{padding:56px var(--space-sm)}.media-viewer-top{padding:var(--space-sm) var(--space-md);padding-top:calc(var(--space-sm) + var(--safe-area-top,0px))}.media-viewer-bottom{padding:var(--space-md);padding-bottom:calc(var(--space-md) + var(--safe-area-bottom,0px))}.media-viewer-nav{opacity:.7;width:36px;height:36px}.media-viewer-nav--prev{left:var(--space-xs)}.media-viewer-nav--next{right:var(--space-xs)}}.rxn-bar{box-shadow:none;clear:both;background:0 0;border:none;flex-wrap:wrap;align-items:center;gap:3px;margin:3px 0 0;padding:0;display:flex;position:static}.rxn-bar:has(>.rxn-add--standalone:only-child){pointer-events:none;margin:0;position:absolute;bottom:4px}.message--other .rxn-bar:has(>.rxn-add--standalone:only-child){left:calc(100% + 6px);right:auto}.message--own .rxn-bar:has(>.rxn-add--standalone:only-child){left:auto;right:calc(100% + 6px)}.rxn-bar:has(>.rxn-add--standalone:only-child)>.rxn-add--standalone{pointer-events:auto}.rxn-pill{height:18px;min-height:0;color:inherit;cursor:pointer;white-space:nowrap;background:#0000000f;border:none;border-radius:999px;align-items:center;gap:3px;padding:0 6px;font-size:.7rem;transition:background .15s,transform .1s;display:inline-flex}.message--own .rxn-pill{background:#ffffff2e}.rxn-pill:hover{filter:brightness(1.08)}.rxn-pill:active{transform:scale(.96)}.rxn-pill--mine{background:#c85a3a38}.message--own .rxn-pill--mine{background:#ffffff52}.rxn-pill-emoji{font-size:.92rem;line-height:1}.rxn-pill-count{font-variant-numeric:tabular-nums;opacity:.85}.rxn-add{color:currentColor;opacity:0;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:18px;min-width:0;height:18px;min-height:0;transition:opacity .12s,background .15s;display:inline-flex}.rxn-add svg{width:11px;height:11px}.message-bubble:hover .rxn-add,.message-bubble:focus-within .rxn-add{opacity:.55}.rxn-add:hover{opacity:1;background:#00000014}.message--own .rxn-add:hover{background:#ffffff38}.rxn-add--standalone{width:18px;min-width:0;height:18px;min-height:0;color:var(--text-tertiary);background:var(--bg-surface);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);opacity:0;pointer-events:none;transition:opacity .12s,transform .12s;transform:scale(.88)}.rxn-add--standalone svg{width:11px;height:11px}.message-bubble:hover .rxn-add--standalone,.message-bubble:focus-within .rxn-add--standalone,.rxn-add--standalone:hover{opacity:.95;pointer-events:auto;transform:scale(1)}.rxn-picker{z-index:80;background:var(--bg-surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);border-radius:999px;gap:2px;padding:6px;display:flex;position:absolute;bottom:32px;left:0}.rxn-picker-btn{cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:1.2rem;transition:background .1s,transform .1s;display:inline-flex}.rxn-picker-btn:hover{background:var(--bg-tertiary);transform:scale(1.15)}.rxn-picker-btn:active{transform:scale(.95)}@media (width<=480px){.rxn-picker{left:50%;transform:translate(-50%)}.rxn-bar--compact .rxn-pill{min-height:24px;padding:1px 6px;font-size:.75rem}}.ups-backdrop{z-index:250;background:#00000073;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}@media (width>=640px){.ups-backdrop{align-items:center;padding:24px}}.ups-sheet{background:var(--bg-surface);color:var(--text-primary);width:100%;max-width:420px;padding:24px 24px calc(24px + env(safe-area-inset-bottom));border-top-left-radius:20px;border-top-right-radius:20px;animation-fill-mode:forwards;position:relative;box-shadow:0 -6px 24px #00000040}@media (width>=640px){.ups-sheet{border-radius:20px}}.ups-close{background:var(--bg-tertiary);width:32px;min-width:0;height:32px;min-height:0;color:var(--text-secondary);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:12px;right:12px}.ups-head{text-align:center;flex-direction:column;align-items:center;gap:6px;margin-bottom:20px;display:flex}.ups-name{color:var(--text-primary);margin-top:12px;font-size:1.3rem;font-weight:700}.ups-status{color:var(--text-tertiary);font-size:.85rem}.ups-status.online{color:var(--accent-success)}.ups-role{color:var(--accent-primary);background:var(--accent-primary-soft);border-radius:999px;margin-top:4px;padding:3px 10px;font-size:.72rem;font-weight:600}.ups-info{flex-direction:column;gap:2px;margin-bottom:16px;display:flex}.ups-row{color:var(--text-primary);border-bottom:1px solid var(--border-color);align-items:center;gap:10px;padding:10px 4px;font-size:.9rem;display:flex}.ups-row:last-child{border-bottom:none}.ups-actions{grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:4px;display:grid}.ups-action{background:var(--bg-tertiary);color:var(--text-primary);cursor:pointer;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-height:0;padding:12px 8px;font-size:.78rem;font-weight:600;transition:background .15s,transform .1s;display:flex}.ups-action:hover{background:var(--bg-surface-hover)}.ups-action:active{transform:scale(.97)}.ups-action--primary{background:var(--accent-primary);color:#fff}.ups-action--primary:hover{background:var(--accent-primary);filter:brightness(1.08)}.message-list{background:var(--bg-chat);flex:1;position:relative;overflow:hidden auto}.message-list:before{content:"";pointer-events:none;background:radial-gradient(ellipse 80% 50% at 20% 80%, var(--accent-primary-soft), transparent), radial-gradient(ellipse 60% 40% at 80% 20%, var(--accent-secondary-soft), transparent);opacity:.5;position:absolute;inset:0}.message-list-inner{padding:var(--space-sm) 12px;flex-direction:column;justify-content:flex-end;min-height:100%;display:flex;position:relative}.message-list-inner>div{flex-direction:column;align-items:flex-start;width:100%;display:flex}.message-list-inner>div>.message-date-divider{align-self:center}@media (width>=768px){.message-list-inner{padding:var(--space-sm) var(--space-lg)}}.message-date-divider{margin:var(--space-lg) 0 var(--space-md);justify-content:center;display:flex}.message-date-divider span{padding:var(--space-xs) var(--space-md);color:var(--text-tertiary);background:var(--bg-surface);border-radius:var(--radius-full);box-shadow:var(--shadow-sm);letter-spacing:.02em;font-size:.75rem;font-weight:600}.msg-skeleton-group{flex-direction:column;gap:6px;padding:8px 12px;display:flex}.msg-skeleton{background:linear-gradient(90deg,#0000000f 0%,#0000001a 50%,#0000000f 100%) 0 0/200% 100%;border-radius:16px;max-width:68%;height:32px;animation:1.4s ease-in-out infinite msg-skeleton-shimmer}[data-theme=dark] .msg-skeleton{background:linear-gradient(90deg,#ffffff0d 0%,#ffffff17 50%,#ffffff0d 100%) 0 0/200% 100%}.msg-skeleton--other{align-self:flex-start}.msg-skeleton--own{align-self:flex-end}@keyframes msg-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.message{gap:6px;max-width:68%;margin-top:4px;display:flex}.message:first-child{margin-top:0}@media (width<=480px){.message{gap:4px;max-width:80%}}.message--own{flex-direction:row-reverse;align-self:flex-end}.message--other{align-self:flex-start}.message--continuation{margin-top:1px}.message--jumped .message-bubble{animation:1.5s ease-out msg-jump-flash}@keyframes msg-jump-flash{0%{box-shadow:0 0 #c85a3a8c}40%{box-shadow:0 0 0 6px #c85a3a59}to{box-shadow:0 0 #c85a3a00}}.message-reply-quote{cursor:pointer;transition:opacity .15s}.message-reply-quote:hover{opacity:.85}.message-reply-quote:active{opacity:.7}.message-avatar{flex-shrink:0;align-self:flex-end}.message-avatar-spacer{flex-shrink:0;width:32px}.message-bubble{word-wrap:break-word;border-radius:18px;width:fit-content;max-width:100%;padding:6px 12px;font-size:.965rem;line-height:1.32;position:relative;box-shadow:0 1px 1.5px #0000000a}[data-theme=dark] .message-bubble{box-shadow:none}.message--own .message-bubble{background:var(--msg-own-bg);color:var(--msg-own-text);border-bottom-right-radius:5px}.message--own.message--continuation .message-bubble{border-top-right-radius:5px}.message--other .message-bubble{background:var(--msg-other-bg);color:var(--msg-other-text);border-bottom-left-radius:5px}.message--other.message--continuation .message-bubble{border-top-left-radius:5px}.message-bubble--media{box-shadow:none;background:0 0;padding:0;line-height:0;overflow:hidden}.message-sender{color:var(--accent-primary);margin:0 0 1px;font-size:.8rem;font-weight:600;line-height:1.22;display:block}.message--own .message-sender{color:#ffffffd9}.message-bubble--media .message-sender{color:#fff;z-index:1;background:#00000073;border-radius:10px;padding:2px 8px;position:absolute;top:8px;left:10px}.message-text{font-size:inherit;line-height:inherit}.message-meta{float:right;-webkit-user-select:none;user-select:none;align-items:center;gap:3px;margin:2px 0 -2px 8px;line-height:1;display:inline-flex}.message-bubble--media .message-meta{float:none;color:#fff;background:#00000080;border-radius:10px;margin:0;padding:2px 8px;position:absolute;bottom:8px;right:8px}.message-bubble--media .message-time,.message-bubble--media .message-status{opacity:1;color:#fff}.message-edited{opacity:.5;margin-left:4px;font-size:.68rem;font-style:italic}.message-time{opacity:.6;font-size:.68rem;font-weight:500}.message-status{opacity:.7;color:inherit;cursor:default;background:0 0;border:none;width:14px;min-width:0;height:14px;min-height:0;padding:0;display:inline-flex}.message--own .message-status{color:#ffffffd9}.message--own .message-status[aria-label$=Read],.message--own .message-status[aria-label$=Прочитано]{cursor:pointer}.readers-popup-backdrop{z-index:200;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.readers-popup{background:var(--bg-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);flex-direction:column;min-width:240px;max-width:80vw;max-height:70vh;display:flex;overflow:hidden}.readers-popup-title{color:var(--text-secondary);border-bottom:1px solid var(--border-color);align-items:center;gap:6px;padding:14px 16px;font-size:.82rem;font-weight:600;display:flex}.readers-popup-list{padding:4px 0;overflow-y:auto}.readers-popup-item{color:var(--text-primary);padding:10px 16px;font-size:.93rem}.readers-popup-item+.readers-popup-item{border-top:1px solid var(--border-color)}.message-bubble:after{content:"";border-radius:inherit;opacity:0;transition:opacity var(--duration-fast);pointer-events:none;position:absolute;inset:0}.message--other .message-bubble:hover:after{opacity:1;background:#00000005}.message--own .message-bubble:hover:after{opacity:1;background:#ffffff0d}.message-reply-quote{gap:var(--space-sm);padding:var(--space-xs) 0 var(--space-sm);margin-bottom:var(--space-xs);cursor:pointer;display:flex}.message-reply-bar{background:var(--accent-primary);border-radius:2px;flex-shrink:0;width:3px}.message--own .message-reply-bar{background:#ffffff80}.message-reply-content{flex-direction:column;min-width:0;display:flex}.message-reply-name{color:var(--accent-primary);font-size:.72rem;font-weight:700}.message--own .message-reply-name{color:#ffffffb3}.message-reply-text{color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-size:.78rem;overflow:hidden}.message--own .message-reply-text{color:#ffffff80}.voice-inline{align-items:center;gap:8px;min-width:150px;padding:0;display:flex}.voice-inline-btn{background:var(--accent-primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.voice-inline--own .voice-inline-btn{background:#ffffff40}.voice-inline-wave{flex:1;align-items:center;gap:1.5px;height:22px;display:flex}.voice-inline-bar{background:var(--text-tertiary);opacity:.3;border-radius:2px;width:2.5px;transition:opacity .15s}.voice-inline-bar--filled{opacity:1;background:var(--accent-primary)}.voice-inline--own .voice-inline-bar{background:#ffffff4d}.voice-inline--own .voice-inline-bar--filled{background:#fff}.voice-inline-time{opacity:.6;white-space:nowrap;min-width:30px;font-size:.7rem;font-weight:600}.message-media{line-height:0;display:block}.message-media-img{cursor:pointer;max-width:280px;max-height:300px;display:block}.message-media-video{max-width:280px;max-height:300px;display:block}.message-bubble:has(>.vcp){box-shadow:none;background:0 0;border-radius:50%;padding:0}.message-bubble:has(>.vcp) .message-meta{color:#fff;float:none;background:#00000073;border-radius:10px;margin:0;padding:2px 6px;position:absolute;bottom:8px;right:8px}.vcp{cursor:pointer;background:#000;border-radius:50%;width:240px;height:240px;line-height:0;position:relative;overflow:hidden}.vcp-video{object-fit:cover;width:100%;height:100%;display:block}.vcp-ring{pointer-events:none;z-index:2;width:100%;height:100%;position:absolute;inset:0}.vcp-time{color:#fff;font-variant-numeric:tabular-nums;z-index:3;background:#00000080;border-radius:999px;padding:2px 8px;font-size:.72rem;font-weight:600;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.vcp-hint{color:#fff;z-index:3;background:#00000080;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:.7rem;display:flex;position:absolute;top:10px;right:10px}.message-voice{align-items:center;gap:var(--space-xs);display:flex}.message-voice audio{border-radius:var(--radius-md)}.message-voice-duration{opacity:.6;white-space:nowrap;font-size:.75rem}.message-file-link{align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);word-break:break-all;background:#0000000d;font-size:.85rem;text-decoration:underline;display:inline-flex}.msg-call{min-width:220px;color:inherit;background:#0000000a;border-radius:14px;align-items:center;gap:10px;padding:8px 10px;text-decoration:none;display:inline-flex}.message--own .msg-call{background:#ffffff1f}.msg-call-icon{background:var(--accent-primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.msg-call-body{flex-direction:column;flex:1;min-width:0;display:flex}.msg-call-title{font-size:.92rem;font-weight:600;line-height:1.2}.msg-call-sub{opacity:.7;margin-top:1px;font-size:.72rem;line-height:1.2}.msg-call-cta{background:var(--accent-primary);color:#fff;white-space:nowrap;border-radius:999px;padding:4px 12px;font-size:.78rem;font-weight:600}.message--own .msg-call-cta{background:#ffffff38}.message--own .message-file-link{color:inherit;background:#ffffff1a}@media (width<=768px){.message-media-img,.message-media-video{max-width:220px}.message-bubble:active{opacity:.85;transition:all .1s;transform:scale(.98)}}.emoji-picker{bottom:100%;right:var(--space-lg);width:320px;height:380px;margin-bottom:var(--space-sm);background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:100;transform-origin:100% 100%;flex-direction:column;display:flex;position:absolute;overflow:hidden}.emoji-picker-search{padding:var(--space-sm) var(--space-sm) 0;flex-shrink:0}.emoji-picker-search input{width:100%;padding:var(--space-sm) var(--space-md);color:var(--text-primary);background:var(--bg-input);border-radius:var(--radius-md);font-size:.82rem;line-height:1.4;font-family:var(--font-body);transition:all var(--duration-fast) var(--ease-out);border:1.5px solid #0000}.emoji-picker-search input::placeholder{color:var(--text-tertiary)}.emoji-picker-search input:focus{border-color:var(--accent-primary);background:var(--bg-surface);box-shadow:0 0 0 3px var(--accent-primary-soft);outline:none}.emoji-picker-grid-container{padding:var(--space-xs) var(--space-sm);flex:1;overflow-y:auto}.emoji-picker-category-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);padding:var(--space-sm) var(--space-xs) var(--space-xs);-webkit-user-select:none;user-select:none;font-size:.7rem;font-weight:700}.emoji-picker-grid{grid-template-columns:repeat(8,1fr);gap:2px;display:grid}.emoji-picker-emoji{border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;width:36px;height:36px;transition:transform var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out);justify-content:center;align-items:center;font-size:1.35rem;line-height:1;display:flex}.emoji-picker-emoji:hover{background:var(--accent-primary-soft);transform:scale(1.2)}.emoji-picker-emoji:active{transform:scale(.95)}.emoji-picker-tabs{border-top:1px solid var(--border-color);background:var(--bg-secondary);flex-shrink:0;display:flex}.emoji-picker-tab{height:40px;color:var(--text-tertiary);transition:color var(--duration-fast) var(--ease-out);flex:1;justify-content:center;align-items:center;display:flex;position:relative}.emoji-picker-tab:hover{color:var(--text-secondary)}.emoji-picker-tab.active{color:var(--accent-primary)}.emoji-picker-tab.active:after{content:"";background:var(--accent-primary);border-radius:0 0 2px 2px;height:2px;position:absolute;top:-1px;left:20%;right:20%}.emoji-picker-empty{padding:var(--space-xl);justify-content:center;align-items:center;gap:var(--space-sm);color:var(--text-tertiary);text-align:center;-webkit-user-select:none;user-select:none;flex-direction:column;font-size:.82rem;display:flex}.emoji-picker-empty-icon{opacity:.5;font-size:2rem}@media (width<=768px){.emoji-picker{border-radius:var(--radius-xl) var(--radius-xl) 0 0;z-index:500;width:100%;max-width:100%;height:55vh;margin-bottom:0;position:fixed;bottom:0;left:0;right:0}.emoji-picker-grid{padding:var(--space-xs) 0;grid-template-columns:repeat(7,1fr);gap:4px}.emoji-picker-emoji{aspect-ratio:1;width:100%;height:auto;font-size:1.6rem}.emoji-picker-tabs{padding-bottom:env(safe-area-inset-bottom,0px)}.emoji-picker-tab{height:44px}}.reply-preview{align-items:center;gap:var(--space-sm);height:48px;padding:var(--space-sm) var(--space-lg);background:var(--bg-surface);border-bottom:1px solid var(--border-color);display:flex;overflow:hidden}.reply-preview-accent{border-radius:var(--radius-full);background:var(--accent-primary);flex-shrink:0;width:4px;height:28px}.reply-preview-content{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.reply-preview-sender{color:var(--accent-primary);font-size:.78rem;font-weight:700;line-height:1.2}.reply-preview-text{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:.82rem;line-height:1.3;overflow:hidden}.reply-preview-close{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-tertiary);cursor:pointer;transition:color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out);flex-shrink:0;justify-content:center;align-items:center;display:flex}.reply-preview-close:hover{color:var(--text-secondary);background:var(--bg-surface-hover)}.reply-preview-close:active{transform:scale(.92)}@media (width<=768px){.reply-preview{padding:var(--space-sm) var(--space-md);margin:0 var(--space-sm);border-radius:var(--radius-md)}.reply-preview-text{font-size:.87rem}}.voice-recorder{align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--bg-surface);border-top:1px solid var(--border-color);display:flex;position:relative;overflow:hidden}.voice-recorder:before{content:"";pointer-events:none;background:#c83c3c0d;position:absolute;inset:0}.voice-recorder__indicator{align-items:center;gap:var(--space-sm);flex-shrink:0;display:flex}.voice-recorder__dot{border-radius:var(--radius-full);background:var(--accent-danger);width:10px;height:10px;animation:1.2s ease-in-out infinite voiceRecorderPulse}@keyframes voiceRecorderPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.85)}}.voice-recorder__label{color:var(--accent-danger);white-space:nowrap;font-size:.8125rem;font-weight:500}.voice-recorder__waveform{flex:1;justify-content:center;align-items:center;gap:2px;min-width:0;height:36px;display:flex}.voice-recorder__bar{border-radius:var(--radius-full);background:var(--accent-primary);opacity:.6;width:3px;animation:voiceRecorderBar var(--bar-duration) ease-in-out infinite alternate;animation-delay:var(--bar-delay);will-change:height}@keyframes voiceRecorderBar{0%{height:var(--bar-min)}to{height:var(--bar-max)}}.voice-recorder__timer{font-variant-numeric:tabular-nums;color:var(--text-primary);text-align:center;min-width:40px;transition:color var(--duration-fast) var(--ease-out);flex-shrink:0;font-size:.875rem;font-weight:600}.voice-recorder__timer--warning{color:var(--accent-danger)}.voice-recorder__actions{align-items:center;gap:var(--space-sm);flex-shrink:0;display:flex}.voice-recorder__btn-cancel{border-radius:var(--radius-full);background:var(--bg-tertiary);width:36px;height:36px;color:var(--text-secondary);transition:background var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);justify-content:center;align-items:center;display:flex}.voice-recorder__btn-cancel:hover{background:var(--accent-danger);color:var(--text-inverse)}.voice-recorder__btn-send{border-radius:var(--radius-full);background:var(--accent-primary);width:36px;height:36px;color:var(--text-inverse);transition:background var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-spring);justify-content:center;align-items:center;display:flex}.voice-recorder__btn-send:hover{background:var(--accent-primary-hover);transform:scale(1.05)}@media (width<=768px){.voice-recorder{padding:var(--space-md);padding-bottom:calc(var(--space-md) + env(safe-area-inset-bottom,0px));min-height:64px}.voice-recorder__waveform{gap:3px}.voice-recorder__timer{font-size:1.1rem}.voice-recorder__btn-cancel,.voice-recorder__btn-send{width:44px;height:44px}}.video-recorder-backdrop{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.video-recorder{background:var(--bg-surface);border-radius:var(--radius-lg);width:92vw;max-width:480px;box-shadow:var(--shadow-lg);flex-direction:column;display:flex;position:relative;overflow:hidden}.video-recorder__close{top:var(--space-sm);right:var(--space-sm);z-index:2;border-radius:var(--radius-full);color:#fff;width:32px;height:32px;transition:background var(--duration-fast) var(--ease-out);background:#00000073;justify-content:center;align-items:center;display:flex;position:absolute}.video-recorder__close:hover{background:#000000a6}.video-recorder__preview{aspect-ratio:16/9;width:100%;color:var(--text-tertiary);transition:border-color var(--duration-fast) var(--ease-out);background:#111;border:3px solid #0000;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.video-recorder__preview--recording{border-color:var(--accent-danger);animation:1.4s ease-in-out infinite videoRecorderBorderPulse}@keyframes videoRecorderBorderPulse{0%,to{border-color:var(--accent-danger)}50%{border-color:#c04b4b59}}.video-recorder__preview-placeholder{align-items:center;gap:var(--space-sm);color:#ffffff59;flex-direction:column;display:flex}.video-recorder__preview-placeholder span{font-size:.8125rem}.video-recorder__controls{justify-content:center;align-items:center;gap:var(--space-lg);padding:var(--space-lg);background:var(--bg-surface);display:flex}.video-recorder__record-btn{border-radius:var(--radius-full);border:3px solid var(--accent-danger);width:64px;height:64px;transition:transform var(--duration-fast) var(--ease-spring);background:0 0;justify-content:center;align-items:center;display:flex;position:relative}.video-recorder__record-btn:hover{transform:scale(1.06)}.video-recorder__record-btn:active{transform:scale(.95)}.video-recorder__record-inner{border-radius:var(--radius-full);background:var(--accent-danger);width:28px;height:28px;transition:border-radius var(--duration-normal) var(--ease-out), width var(--duration-normal) var(--ease-out), height var(--duration-normal) var(--ease-out)}.video-recorder__record-btn--recording .video-recorder__record-inner{border-radius:4px;width:20px;height:20px}.video-recorder__record-btn--recording:after{content:"";border-radius:var(--radius-full);border:2px solid var(--accent-danger);animation:1.6s ease-out infinite videoRecorderRingPulse;position:absolute;inset:-6px}@keyframes videoRecorderRingPulse{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.25)}}.video-recorder__timer{font-variant-numeric:tabular-nums;color:var(--text-primary);text-align:center;min-width:44px;transition:color var(--duration-fast) var(--ease-out);font-size:.875rem;font-weight:600}.video-recorder__timer--warning{color:var(--accent-danger)}.video-recorder__timer-spacer{min-width:44px}.video-recorder__done-controls{justify-content:center;align-items:center;gap:var(--space-md);padding:var(--space-lg);background:var(--bg-surface);display:flex}.video-recorder__btn{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-full);transition:background var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-spring);font-size:.875rem;font-weight:600;display:flex}.video-recorder__btn:hover{transform:scale(1.03)}.video-recorder__btn--retake{background:var(--bg-tertiary);color:var(--text-primary)}.video-recorder__btn--retake:hover{background:var(--bg-input)}.video-recorder__btn--send{background:var(--accent-primary);color:var(--text-inverse)}.video-recorder__btn--send:hover{background:var(--accent-primary-hover)}.video-recorder__preview-recorded{background:#00000059;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.video-recorder__play-icon{border-radius:var(--radius-full);width:48px;height:48px;color:var(--accent-primary);background:#ffffffd9;justify-content:center;align-items:center;display:flex}@media (width<=768px){.video-recorder{border-radius:0;width:100%;max-width:100%;height:100%;max-height:100%}.video-recorder__controls{padding-bottom:calc(var(--space-xl) + env(safe-area-inset-bottom,0px))}}.vcr-backdrop{z-index:500;-webkit-backdrop-filter:blur(30px);padding:env(safe-area-inset-top) 24px env(safe-area-inset-bottom);background:#120e0cf5;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.vcr-container{color:#fff;flex-direction:column;justify-content:center;align-items:center;gap:32px;width:100%;max-width:420px;height:100%;display:flex;position:relative}.vcr-close{color:#fff;background:#ffffff1f;border-radius:50%;justify-content:center;align-items:center;width:40px;min-width:0;height:40px;min-height:0;display:flex;position:absolute;top:12px;right:12px}.vcr-close:active{transform:scale(.94)}.vcr-stage{justify-content:center;align-items:center;width:280px;height:280px;display:flex;position:relative}.vcr-ring{width:100%;height:100%;position:absolute;inset:0}.vcr-circle{background:#000;border-radius:50%;width:256px;height:256px;position:relative;overflow:hidden;box-shadow:0 4px 24px #00000080}.vcr-video{object-fit:cover;width:100%;height:100%;display:block}.vcr-video.mirror{transform:scaleX(-1)}.vcr-timer{font-variant-numeric:tabular-nums;color:#e05050;background:#0006;border-radius:999px;padding:4px 10px;font-size:.9rem;font-weight:600;position:absolute;bottom:-34px;left:50%;transform:translate(-50%)}.vcr-timer--preview{color:#fffc}.vcr-error{color:#e68080;text-align:center;max-width:260px;font-size:.9rem}.vcr-actions{justify-content:center;align-items:center;gap:32px;min-height:72px;display:flex}.vcr-preparing{color:#fff9;font-size:.9rem}.vcr-iconbtn{color:#fff;background:#ffffff24;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;transition:transform .12s;display:flex}.vcr-iconbtn:active{transform:scale(.92)}.vcr-record,.vcr-stop,.vcr-send{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;transition:transform .12s,box-shadow .12s;display:flex}.vcr-record{background:#e05050;box-shadow:0 6px 24px #e0505080}.vcr-record:active{transform:scale(.9)}.vcr-stop{background:#e05050;animation:1.4s ease-in-out infinite vcr-pulse;box-shadow:0 0 #e05050b3}.vcr-stop-square{background:#fff;border-radius:6px;width:28px;height:28px}@keyframes vcr-pulse{0%,to{box-shadow:0 0 #e05050b3}50%{box-shadow:0 0 0 18px #e0505000}}.vcr-send{background:var(--accent-primary);box-shadow:0 6px 24px #c85a3a80}.vcr-send:active{transform:scale(.92)}.mention-suggestions{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:260px;max-height:220px;box-shadow:var(--shadow-lg);z-index:50;padding:var(--space-xs) 0;position:absolute;overflow-y:auto}.mention-suggestions-empty{padding:var(--space-sm) var(--space-md);color:var(--text-tertiary);text-align:center;font-size:.82rem}.mention-suggestion-item{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);cursor:pointer;transition:background var(--duration-fast) var(--ease-out);text-align:left;width:100%;color:inherit;font:inherit;background:0 0;border:none;display:flex}.mention-suggestion-item:hover,.mention-suggestion-item--highlighted{background:var(--accent-primary-soft)}.mention-suggestion-info{flex-direction:column;min-width:0;display:flex}.mention-suggestion-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;font-weight:600;overflow:hidden}.mention-suggestion-role{color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;overflow:hidden}.media-preview{align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-lg);background:var(--bg-surface);border-bottom:1px solid var(--border-color);display:flex;overflow:hidden}.media-preview-thumb{border-radius:var(--radius-md);background:var(--bg-tertiary);flex-shrink:0;width:80px;height:80px;overflow:hidden}.media-preview-thumb img{object-fit:cover;width:100%;height:100%;display:block}.media-preview-thumb--video{position:relative}.media-preview-thumb--video:after{content:"";border-radius:var(--radius-md);background:#00000040;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.media-preview-info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.media-preview-name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;font-weight:600;overflow:hidden}.media-preview-size{color:var(--text-secondary);align-items:center;gap:4px;font-size:.78rem;display:flex}.media-preview-size .compressed{color:var(--accent-success);font-weight:600}.media-preview-size .arrow{color:var(--text-tertiary)}.media-preview-actions{align-items:center;gap:var(--space-sm);flex-shrink:0;display:flex}.media-preview-send{border-radius:var(--radius-full);background:var(--accent-primary);color:#fff;cursor:pointer;width:40px;height:40px;transition:all var(--duration-fast) var(--ease-out);justify-content:center;align-items:center;display:flex;box-shadow:0 2px 8px #c85a3a40}.media-preview-send:hover{background:var(--accent-primary-hover);transform:scale(1.05);box-shadow:0 4px 16px #c85a3a59}.media-preview-send:active{transform:scale(.95)}.media-preview-cancel{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-tertiary);cursor:pointer;transition:color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out);justify-content:center;align-items:center;display:flex}.media-preview-cancel:hover{color:var(--text-secondary);background:var(--bg-surface-hover)}.media-preview-cancel:active{transform:scale(.92)}@media (width<=768px){.media-preview{padding:var(--space-sm) var(--space-md);margin:0 var(--space-sm);border-radius:var(--radius-md)}.media-preview-thumb{width:64px;height:64px}.media-preview-send{width:44px;height:44px}}.chat-input-wrapper{background:var(--bg-surface);border-top:1px solid var(--border-color);padding:var(--space-sm) var(--space-lg);flex-shrink:0;position:relative}.chat-input{align-items:flex-end;gap:var(--space-xs);min-height:48px;display:flex}.chat-input-btn{border-radius:var(--radius-md);width:40px;height:40px;color:var(--text-tertiary);transition:all var(--duration-fast) var(--ease-out);flex-shrink:0;justify-content:center;align-items:center;display:flex}.chat-input-btn:hover{color:var(--text-secondary);background:var(--bg-surface-hover)}.chat-input-btn.active{color:var(--accent-primary);background:var(--accent-primary-soft)}.chat-input-voice-group{align-items:center;gap:2px;display:inline-flex}.chat-input-circle{color:var(--accent-primary)}.chat-input-circle:hover{color:var(--accent-primary);background:var(--accent-primary-soft)}.chat-input-field{flex:1;align-items:flex-end;display:flex}.chat-input-field textarea{resize:none;width:100%;padding:var(--space-sm) var(--space-md);color:var(--text-primary);background:var(--bg-input);border-radius:var(--radius-lg);max-height:120px;font-size:.9rem;line-height:1.45;font-family:var(--font-body);transition:all var(--duration-fast) var(--ease-out);border:1.5px solid #0000}.chat-input-field textarea::placeholder{color:var(--text-tertiary)}.chat-input-field textarea:focus{border-color:var(--accent-primary);background:var(--bg-surface);box-shadow:0 0 0 3px var(--accent-primary-soft);outline:none}.chat-input-send{border-radius:var(--radius-full);background:var(--accent-primary);color:#fff;width:40px;height:40px;transition:all var(--duration-fast) var(--ease-out);flex-shrink:0;justify-content:center;align-items:center;display:flex;box-shadow:0 2px 8px #c85a3a40}.chat-input-send:hover{background:var(--accent-primary-hover);transform:scale(1.05);box-shadow:0 4px 16px #c85a3a59}.chat-input-send:active{transform:scale(.95)}.chat-input-mic:hover{color:var(--accent-primary)}.chat-attach-menu{bottom:100%;left:var(--space-lg);gap:var(--space-sm);padding:var(--space-sm);background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);margin-bottom:var(--space-sm);max-width:calc(100vw - 2 * var(--space-lg));flex-wrap:wrap;display:flex;position:absolute}.chat-attach-item{padding:var(--space-md);border-radius:var(--radius-md);color:#fff;transition:all var(--duration-fast);flex-direction:column;align-items:center;gap:4px;min-width:72px;font-size:.72rem;font-weight:600;display:flex}.chat-attach-item:hover{transform:translateY(-2px)}.chat-attach-item--photo{background:var(--accent-primary)}.chat-attach-item--video{background:var(--accent-secondary);color:var(--text-primary)}.chat-attach-item--file{background:#5b7ba8}.chat-attach-item--circle{background:#6b4ba8}@media (width<=768px){.chat-input-wrapper{padding:var(--space-sm) var(--space-sm);padding-bottom:calc(var(--space-sm) + var(--safe-area-bottom))}.chat-input{gap:var(--space-xs);min-height:52px}.chat-input-btn{width:44px;height:44px}.chat-input-field textarea{padding:var(--space-sm) var(--space-md);min-height:44px;font-size:1rem}.chat-input-send{width:44px;height:44px}.chat-attach-menu{left:var(--space-sm);right:var(--space-sm);border-radius:var(--radius-xl);width:auto;padding:var(--space-md);gap:var(--space-md)}.chat-attach-item{padding:var(--space-lg) var(--space-sm);border-radius:var(--radius-lg);flex:1;min-width:0}}.contact-panel{width:var(--contact-panel-width);background:var(--bg-secondary);border-left:1px solid var(--border-color);flex-direction:column;flex-shrink:0;height:100vh;display:flex;overflow:hidden}.contact-panel-header{height:var(--header-height);padding:0 var(--space-lg);border-bottom:1px solid var(--border-color);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.contact-panel-header h3{font-size:.95rem;font-weight:700}.contact-panel-close{border-radius:var(--radius-md);width:36px;height:36px;color:var(--text-tertiary);transition:all var(--duration-fast);justify-content:center;align-items:center;display:flex}.contact-panel-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.contact-panel-content{padding:var(--space-lg);flex:1;overflow-y:auto}.contact-panel-profile{text-align:center;margin-bottom:var(--space-xl);flex-direction:column;align-items:center;display:flex}.contact-panel-name{font-family:var(--font-display);margin-top:var(--space-md);color:var(--text-primary);font-size:1.5rem;font-weight:700}.contact-panel-status{color:var(--text-tertiary);margin-top:2px;font-size:.82rem}.contact-panel-status.online{color:var(--accent-success)}.contact-panel-role{margin-top:var(--space-sm);padding:var(--space-xs) var(--space-md);color:var(--accent-primary);background:var(--accent-primary-soft);border-radius:var(--radius-full);font-size:.75rem;font-weight:600;display:inline-block}.contact-panel-actions{justify-content:center;gap:var(--space-lg);margin-bottom:var(--space-xl);display:flex}.contact-panel-action{align-items:center;gap:var(--space-xs);padding:var(--space-sm);border-radius:var(--radius-md);color:var(--text-secondary);transition:all var(--duration-fast);flex-direction:column;font-size:.72rem;font-weight:600;display:flex}.contact-panel-action:hover{color:var(--accent-primary);background:var(--accent-primary-soft)}.contact-panel-section{margin-bottom:var(--space-xl)}.contact-panel-section-title{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-md);font-size:.78rem;font-weight:700}.contact-panel-info-item{padding:var(--space-sm) 0;border-bottom:1px solid var(--border-color);flex-direction:column;display:flex}.contact-panel-info-item:last-child{border-bottom:none}.contact-panel-info-label{color:var(--text-tertiary);margin-bottom:2px;font-size:.75rem;font-weight:500}.contact-panel-info-value{color:var(--text-primary);font-size:.9rem}.contact-panel-members{gap:var(--space-xs);flex-direction:column;display:flex}.contact-panel-member{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-sm);border-radius:var(--radius-md);transition:background var(--duration-fast);display:flex}.contact-panel-member:hover{background:var(--bg-tertiary)}.contact-panel-member-info{flex-direction:column;display:flex}.contact-panel-member-name{color:var(--text-primary);font-size:.87rem;font-weight:600}.contact-panel-member-role{color:var(--text-tertiary);font-size:.75rem}.contact-panel-media-grid{gap:var(--space-xs);grid-template-columns:repeat(3,1fr);display:grid}.contact-panel-media-item{aspect-ratio:1;background:var(--bg-tertiary);border-radius:var(--radius-sm);color:var(--text-tertiary);cursor:pointer;border:none;justify-content:center;align-items:center;padding:0;transition:transform .1s,filter .15s;display:flex;position:relative;overflow:hidden}.contact-panel-media-item:hover{filter:brightness(1.05)}.contact-panel-media-item:active{transform:scale(.97)}.contact-panel-media-item img,.contact-panel-media-item video{object-fit:cover;width:100%;height:100%;display:block}.contact-panel-media-play{color:#fff;pointer-events:none;background:#00000040;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.contact-panel-section-count{background:var(--bg-tertiary);color:var(--text-secondary);border-radius:999px;margin-left:8px;padding:1px 8px;font-size:.72rem;font-weight:600;display:inline-block}.contact-panel-media-empty{padding:var(--space-lg) var(--space-md);color:var(--text-tertiary);text-align:center;flex-direction:column;align-items:center;gap:8px;font-size:.82rem;display:flex}.contact-panel-media-more{color:var(--text-secondary);background:var(--bg-surface);font-size:.95rem;font-weight:700}.contact-panel-media-more:hover{background:var(--bg-tertiary);color:var(--accent-primary)}.contact-panel-encryption{justify-content:center;align-items:center;gap:var(--space-sm);padding:var(--space-md);color:var(--accent-success);border-radius:var(--radius-md);margin-top:var(--space-md);background:#5a9e6f14;font-size:.75rem;font-weight:600;display:flex}.contact-panel-backdrop{display:none}@media (width<=1024px){.contact-panel{z-index:30;box-shadow:var(--shadow-lg);position:absolute;top:0;right:0}}@media (width<=768px){.contact-panel-backdrop{z-index:199;background:#00000080;display:block;position:fixed;inset:0}.contact-panel{border-left:none;border-top:1px solid var(--border-color);z-index:200;border-radius:20px 20px 0 0;width:100%;height:auto;max-height:85vh;position:fixed;bottom:0;left:0;right:0;overflow-y:auto}.contact-panel-header{background:var(--bg-secondary);z-index:1;padding:var(--space-sm) var(--space-lg);height:auto;position:sticky;top:0}.contact-panel-header:before{content:"";background:var(--text-tertiary);width:36px;height:4px;margin:var(--space-sm) auto var(--space-md);opacity:.5;border-radius:2px;display:block}.contact-panel-content{padding:var(--space-md) var(--space-lg);padding-bottom:calc(var(--space-xl) + env(safe-area-inset-bottom,0px))}.contact-panel-profile{margin-bottom:var(--space-lg)}.contact-panel-name{font-size:1.3rem}.contact-panel-actions{gap:var(--space-xl);margin-bottom:var(--space-lg)}.contact-panel-action{padding:var(--space-md);min-width:72px}.contact-panel-member{padding:var(--space-md) var(--space-sm);min-height:52px}.contact-panel-member-name{font-size:.93rem}.contact-panel-media-grid{grid-template-columns:repeat(4,1fr)}}.empty-state{background:var(--bg-chat);flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.empty-state-bg{position:absolute;inset:0}.empty-state-circle{border:1px solid var(--border-color);border-radius:50%;animation:6s ease-in-out infinite emptyPulse;position:absolute}.empty-state-circle--1{width:300px;height:300px;animation-delay:0s;top:50%;left:50%;transform:translate(-50%,-50%)}.empty-state-circle--2{width:450px;height:450px;animation-delay:-2s;top:50%;left:50%;transform:translate(-50%,-50%)}.empty-state-circle--3{width:600px;height:600px;animation-delay:-4s;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes emptyPulse{0%,to{opacity:.3;transform:translate(-50%,-50%)scale(1)}50%{opacity:.1;transform:translate(-50%,-50%)scale(1.05)}}.empty-state-content{text-align:center;flex-direction:column;align-items:center;display:flex;position:relative}.empty-state-icon{margin-bottom:var(--space-lg)}.empty-state-title{font-family:var(--font-display);color:var(--text-primary);margin-bottom:var(--space-sm);opacity:.7;font-size:1.8rem;font-weight:700}.empty-state-text{color:var(--text-tertiary);font-size:.9rem}@media (width<=768px){.empty-state{display:none}}.pin-banner{padding:10px var(--space-md);background:var(--bg-surface);border-bottom:1px solid var(--border);cursor:pointer;flex-shrink:0;align-items:center;gap:8px;transition:background .15s;display:flex}.pin-banner:hover{background:var(--bg-surface-hover)}.pin-banner-icon{color:var(--accent-primary);flex-shrink:0}.pin-banner-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.pin-banner-label{text-transform:uppercase;letter-spacing:.05em;color:var(--accent-primary);font-size:.7rem;font-weight:700}.pin-banner-text{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.pin-banner-close{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;border-radius:50%;flex-shrink:0;padding:4px;transition:background .15s}.pin-banner-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.msg-search{background:var(--bg-surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm)}.msg-search-bar{padding:8px var(--space-md);align-items:center;gap:8px;min-height:52px;display:flex}.msg-search-icon{color:var(--text-tertiary);flex-shrink:0}.msg-search-input{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);min-width:0;color:var(--text-primary);outline:none;flex:1;padding:8px 12px;font-size:16px}.msg-search-input:focus{border-color:var(--accent-primary)}.msg-search-spinner{color:var(--accent-primary);animation:.8s linear infinite msg-search-spin}@keyframes msg-search-spin{to{transform:rotate(360deg)}}.msg-search-counter{color:var(--text-secondary);font-variant-numeric:tabular-nums;font-size:.82rem}.msg-search-nav,.msg-search-close{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:6px;transition:background .15s,color .15s;display:inline-flex}.msg-search-nav:hover,.msg-search-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.msg-search-error{padding:8px var(--space-md);color:#e07b6b;background:#e07b6b1a;font-size:.85rem}.msg-search-empty{padding:12px var(--space-md);color:var(--text-tertiary);text-align:center;font-size:.85rem}.msg-search-results{border-top:1px solid var(--border);max-height:280px;overflow-y:auto}.msg-search-result{width:100%;padding:10px var(--space-md);text-align:left;cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;min-height:52px;transition:background .1s;display:flex}.msg-search-result:hover,.msg-search-result--active{background:var(--bg-surface-hover)}.msg-search-result-snippet{min-width:0;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.88rem;overflow:hidden}.msg-search-result-snippet mark{color:inherit;background:#f5c37a66;border-radius:2px;padding:0 2px}.msg-search-ellipsis{color:var(--text-tertiary)}.msg-search-result-date{color:var(--text-tertiary);flex-shrink:0;font-size:.72rem}.chat-view{flex:1;min-width:0;height:100dvh;display:flex;position:relative}.chat-view-main{flex-direction:column;flex:1;min-width:0;display:flex}@keyframes message-jump-pulse{0%{background-color:#f5c37a59}to{background-color:#0000}}.message-jump-highlight{border-radius:var(--radius-md);animation:1.5s ease-out message-jump-pulse}.incoming-call-overlay{z-index:9000;-webkit-backdrop-filter:blur(20px);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.incoming-call-content{flex-direction:column;align-items:center;gap:16px;display:flex}.incoming-call-avatar-area{justify-content:center;align-items:center;width:200px;height:200px;margin-bottom:8px;display:flex;position:relative}.incoming-call-avatar{z-index:2;border-radius:50%;justify-content:center;align-items:center;width:120px;height:120px;display:flex;position:relative;box-shadow:0 8px 32px #0000004d}.incoming-call-avatar-initials{color:#fff;font-family:var(--font-body);letter-spacing:.03em;text-shadow:0 1px 3px #0003;-webkit-user-select:none;user-select:none;font-size:2.4rem;font-weight:700}.incoming-call-rings{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.incoming-call-ring{border:2px solid #ffffff40;border-radius:50%;animation:2.4s ease-out infinite incomingRingPulse;position:absolute}.incoming-call-ring--1{width:120px;height:120px;animation-delay:0s}.incoming-call-ring--2{width:120px;height:120px;animation-delay:.8s}.incoming-call-ring--3{width:120px;height:120px;animation-delay:1.6s}@keyframes incomingRingPulse{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.7)}}.incoming-call-name{color:#fff;font-family:var(--font-display);letter-spacing:.01em;text-align:center;font-size:2rem;font-weight:600}.incoming-call-type{color:#fff9;text-align:center;margin-bottom:24px;font-size:.95rem;font-weight:500}.incoming-call-actions{align-items:center;gap:48px;display:flex}.incoming-call-btn{cursor:pointer;color:#fff;border:none;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;transition:transform .2s,box-shadow .2s;display:flex}.incoming-call-btn:hover{transform:scale(1.08)}.incoming-call-btn:active{transform:scale(.96)}.incoming-call-btn--decline{background:#c04b4b;box-shadow:0 4px 20px #c04b4b66}.incoming-call-btn--decline:hover{box-shadow:0 6px 28px #c04b4b8c}.incoming-call-btn--accept{background:#5a9e6f;animation:2s ease-in-out infinite acceptBtnPulse;box-shadow:0 4px 20px #5a9e6f66}.incoming-call-btn--accept:hover{animation:none;box-shadow:0 6px 28px #5a9e6f8c}@keyframes acceptBtnPulse{0%,to{box-shadow:0 4px 20px #5a9e6f66}50%{box-shadow:0 4px 32px #5a9e6fa6}}.meeting-ring{z-index:300;padding:env(safe-area-inset-top) 24px env(safe-area-inset-bottom);color:#fff;-webkit-backdrop-filter:blur(24px);background:linear-gradient(#181614f5 0%,#2c1e16f5 100%);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:fixed;inset:0}.meeting-ring-pulse{pointer-events:none;background:#c85a3a47;border-radius:50%;width:160px;height:160px;margin:-80px 0 0 -80px;animation:1.6s ease-out infinite icr-pulse;position:absolute;top:50%;left:50%}.meeting-ring-pulse:after{content:"";background:#c85a3a24;border-radius:50%;animation:1.6s ease-out .4s infinite icr-pulse;position:absolute;inset:-40px}@keyframes icr-pulse{0%{opacity:.9;transform:scale(.85)}to{opacity:0;transform:scale(1.4)}}.meeting-ring-avatar{background:linear-gradient(135deg, var(--accent-primary), #8b3e24);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:120px;height:120px;margin-bottom:8px;display:flex;position:relative;box-shadow:0 8px 30px #c85a3a66}.meeting-ring-name{letter-spacing:-.01em;font-size:1.8rem;font-weight:700}.meeting-ring-subtitle{color:#fff9;margin-bottom:40px;font-size:.95rem}.meeting-ring-actions{gap:60px;margin-top:auto;margin-bottom:40px;display:flex}.meeting-ring-btn{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;transition:transform .15s,box-shadow .15s;display:flex}.meeting-ring-btn:active{transform:scale(.94)}.meeting-ring-btn.decline{background:#e03f3f;box-shadow:0 6px 20px #e03f3f73}.meeting-ring-btn.answer{background:#4bb36b;animation:1.6s ease-in-out infinite icr-answer-pulse;box-shadow:0 6px 20px #4bb36b73}@keyframes icr-answer-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.call-view{z-index:9000;color:#fff;font-family:var(--font-body);background:#0a0a0a;flex-direction:column;align-items:center;display:flex;position:fixed;inset:0}.call-view-timer{color:#ffffffb3;letter-spacing:.06em;font-variant-numeric:tabular-nums;text-align:center;padding-top:32px;padding-bottom:16px;font-size:1.1rem;font-weight:500}.call-view-main{flex:1;justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.call-audio-content{flex-direction:column;align-items:center;gap:20px;display:flex}.call-audio-avatar{border-radius:50%;justify-content:center;align-items:center;width:100px;height:100px;display:flex;box-shadow:0 8px 32px #0006}.call-audio-avatar-initials{color:#fff;letter-spacing:.03em;text-shadow:0 1px 3px #0003;-webkit-user-select:none;user-select:none;font-size:2rem;font-weight:700}.call-audio-name{color:#fff;font-family:var(--font-display);text-align:center;font-size:1.6rem;font-weight:600}.call-sound-bars{justify-content:center;align-items:center;gap:4px;height:32px;margin-top:4px;display:flex}.call-sound-bar{background:#fff;border-radius:2px;width:4px;animation:1s ease-in-out infinite alternate soundBarBounce}.call-sound-bar--1{height:12px;animation-duration:.6s}.call-sound-bar--2{height:20px;animation-duration:.8s;animation-delay:.1s}.call-sound-bar--3{height:28px;animation-duration:.5s;animation-delay:.2s}.call-sound-bar--4{height:16px;animation-duration:.7s;animation-delay:50ms}.call-sound-bar--5{height:24px;animation-duration:.9s;animation-delay:.15s}@keyframes soundBarBounce{0%{height:8px}to{height:28px}}.call-video-content{width:100%;height:100%;position:relative}.call-video-remote{background:#111;flex-direction:column;justify-content:center;align-items:center;gap:12px;width:100%;height:100%;display:flex}.call-video-remote-label{color:#fff3;letter-spacing:.04em;font-size:.95rem;font-weight:500}.call-video-caller-label{color:#fff;text-shadow:0 1px 4px #00000080;font-size:1rem;font-weight:600;position:absolute;top:20px;left:20px}.call-video-self{background:#1a1a1a;border:1px solid #ffffff1a;border-radius:12px;justify-content:center;align-items:center;width:120px;height:90px;display:flex;position:absolute;bottom:20px;right:20px;overflow:hidden;box-shadow:0 4px 16px #0006}.call-video-self-avatar{border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.call-video-self-initial{color:#fff;-webkit-user-select:none;user-select:none;font-size:1rem;font-weight:700}.call-view-controls{justify-content:center;align-items:center;gap:20px;padding:24px 0 40px;display:flex}.call-control-btn{color:#fff;cursor:pointer;background:#ffffff26;border:none;border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;transition:background .2s,transform .15s;display:flex}.call-control-btn:hover{background:#ffffff40}.call-control-btn:active{transform:scale(.93)}.call-control-btn--active{background:#e05050cc}.call-control-btn--active:hover{background:#e05050e6}.call-control-btn--end{background:#e05050;width:60px;height:60px;box-shadow:0 4px 20px #e0505059}.call-control-btn--end:hover{background:#e86060;box-shadow:0 6px 28px #e0505080}.calls-page{background:var(--bg-primary);flex-direction:column;flex:1;height:100dvh;display:flex;overflow-y:auto}.calls-page-header{padding:var(--space-lg) var(--space-lg) var(--space-md);padding-top:calc(var(--space-lg) + var(--safe-area-top));flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.calls-page-title{font-family:var(--font-display);color:var(--text-primary);font-size:1.8rem;font-weight:700}.calls-page-test{border-radius:var(--radius-full);background:var(--accent-primary);color:#fff;width:44px;height:44px;transition:all var(--duration-fast);justify-content:center;align-items:center;display:flex}.calls-page-test:active{transform:scale(.92)}.calls-page-filters{gap:var(--space-sm);padding:0 var(--space-lg) var(--space-md);flex-shrink:0;display:flex}.calls-filter{padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-full);color:var(--text-secondary);background:var(--bg-input);transition:all var(--duration-fast);font-size:.85rem;font-weight:600}.calls-filter.active{background:var(--accent-primary);color:#fff}.calls-filter:active{transform:scale(.95)}.calls-list{padding:0 var(--space-sm);padding-bottom:calc(var(--bottom-nav-height) + var(--safe-area-bottom) + var(--space-md));flex:1}.call-item{align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-md);border-radius:var(--radius-lg);transition:background var(--duration-fast);min-height:68px;display:flex}.call-item:active{background:var(--bg-surface-hover)}.call-item-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.call-item-name{color:var(--text-primary);font-size:.95rem;font-weight:600}.call-item-name.missed{color:var(--accent-danger)}.call-item-meta{color:var(--text-tertiary);align-items:center;gap:4px;font-size:.8rem;display:flex}.call-direction{flex-shrink:0}.call-direction--incoming{color:var(--accent-success)}.call-direction--outgoing{color:var(--accent-primary)}.call-direction--missed{color:var(--accent-danger)}.call-item-right{align-items:flex-end;gap:var(--space-xs);flex-direction:column;display:flex}.call-item-time{color:var(--text-tertiary);font-size:.75rem;font-weight:500}.call-item-action{border-radius:var(--radius-full);width:40px;height:40px;color:var(--accent-primary);transition:all var(--duration-fast);justify-content:center;align-items:center;display:flex}.call-item-action:active{background:var(--accent-primary-soft);transform:scale(.9)}.calls-empty{justify-content:center;align-items:center;gap:var(--space-md);padding:var(--space-3xl);color:var(--text-tertiary);flex-direction:column;display:flex}.calls-empty p{font-size:.9rem}@media (width>=769px){.calls-page{border-left:1px solid var(--border-color)}.calls-page-header{padding-top:var(--space-lg)}.calls-list{padding-bottom:var(--space-lg)}}.calls-spinner{color:var(--accent-primary);animation:.8s linear infinite calls-spin}@keyframes calls-spin{to{transform:rotate(360deg)}}.notification-toast{align-items:flex-start;gap:var(--space-sm);width:360px;max-width:360px;padding:var(--space-md);background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;position:relative;overflow:hidden}.notification-toast:hover{background:var(--bg-surface-hover)}.notification-toast__icon{border-radius:var(--radius-full);color:#fff;flex-shrink:0;justify-content:center;align-items:center;width:40px;min-width:40px;height:40px;display:flex}.notification-toast--message .notification-toast__icon{background:var(--accent-primary)}.notification-toast--call .notification-toast__icon{background:var(--accent-success)}.notification-toast--system .notification-toast__icon{background:var(--accent-secondary)}.notification-toast__content{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.notification-toast__header{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.notification-toast__title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;font-weight:700;overflow:hidden}.notification-toast__time{color:var(--text-tertiary);white-space:nowrap;flex-shrink:0;font-size:.7rem}.notification-toast__body{color:var(--text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.8125rem;line-height:1.4;display:-webkit-box;overflow:hidden}.notification-toast__dismiss{top:var(--space-sm);right:var(--space-sm);border-radius:var(--radius-full);width:22px;height:22px;color:var(--text-tertiary);cursor:pointer;opacity:0;transition:opacity var(--duration-fast), background var(--duration-fast), color var(--duration-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex;position:absolute}.notification-toast:hover .notification-toast__dismiss{opacity:1}.notification-toast__dismiss:hover{background:var(--bg-tertiary);color:var(--text-primary)}.notification-toast__progress{border-radius:0 1px 0 0;height:2px;animation:5s linear forwards toast-progress;position:absolute;bottom:0;left:0}.notification-toast--message .notification-toast__progress{background:var(--accent-primary)}.notification-toast--call .notification-toast__progress{background:var(--accent-success)}.notification-toast--system .notification-toast__progress{background:var(--accent-secondary)}@keyframes toast-progress{0%{width:100%}to{width:0%}}.notification-container{top:var(--space-md);right:var(--space-md);z-index:9998;gap:var(--space-sm);pointer-events:none;flex-direction:column;display:flex;position:fixed}.notification-container>*{pointer-events:auto}.install-prompt{--install-bg:var(--color-surface,#241f1c);--install-text:var(--color-text-primary,#f0e6d8);--install-text-muted:var(--color-text-secondary,#f0e6d899);--install-accent:var(--color-terracotta,#c85a3a);--install-accent-alt:var(--color-amber,#d4a853);--install-accent-hover:#b5492c;--install-border:var(--color-border,#f0e6d814);--install-radius:14px;z-index:9999;padding:.75rem 1rem;position:fixed;top:0;left:0;right:0}.install-prompt__content{background:var(--install-bg);border:1px solid var(--install-border);border-radius:var(--install-radius);align-items:center;gap:.75rem;max-width:480px;margin:0 auto;padding:.75rem 1rem;display:flex;box-shadow:0 4px 24px #0006,0 1px 3px #0003}.install-prompt__icon{flex-shrink:0;width:32px;height:32px}.install-prompt__text{color:var(--install-text);flex:1;min-width:0;font-size:.875rem;font-weight:500;line-height:1.3}.install-prompt__install-btn{background-color:var(--install-accent);color:var(--install-text);cursor:pointer;white-space:nowrap;border:none;border-radius:8px;flex-shrink:0;padding:.4375rem 1rem;font-family:inherit;font-size:.8125rem;font-weight:500;transition:background-color .2s}.install-prompt__install-btn:hover{background-color:var(--install-accent-hover)}.install-prompt__install-btn:focus-visible{outline:2px solid var(--install-accent-alt);outline-offset:2px}.install-prompt__dismiss-btn{width:28px;height:28px;color:var(--install-text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .2s,background-color .2s;display:flex}.install-prompt__dismiss-btn:hover{color:var(--install-text);background-color:#f0e6d814}.install-prompt__dismiss-btn:focus-visible{outline:2px solid var(--install-accent-alt);outline-offset:2px}@media (width<=480px){.install-prompt{padding:.5rem}.install-prompt__content{gap:.5rem;padding:.625rem .75rem}.install-prompt__text{font-size:.8125rem}.install-prompt__install-btn{padding:.375rem .75rem;font-size:.75rem}}.offline-banner{top:env(safe-area-inset-top);z-index:500;color:#fff;-webkit-backdrop-filter:blur(12px);pointer-events:none;white-space:nowrap;text-overflow:ellipsis;background:#1e1612eb;border-radius:999px;align-items:center;gap:6px;max-width:calc(100vw - 32px);margin-top:8px;padding:6px 14px;font-size:.78rem;display:inline-flex;position:fixed;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 2px 10px #0000004d}.app-layout{background:var(--bg-primary);height:100dvh;display:flex;overflow:hidden}@media (width<=768px){.app-layout{position:relative}.app-layout .sidebar{z-index:20;width:100%;transition:transform .3s cubic-bezier(.16,1,.3,1);position:absolute;inset:0}.app-layout.mobile-chat-open .sidebar{pointer-events:none;transform:translate(-100%)}.app-layout .chat-view{z-index:10;width:100%;position:absolute;inset:0}}.err-boundary{padding:var(--space-lg);background:var(--bg-primary);z-index:9999;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.err-boundary-card{width:100%;max-width:420px;padding:var(--space-2xl) var(--space-xl);background:var(--bg-secondary);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);text-align:center}.err-boundary-icon{width:72px;height:72px;margin:0 auto var(--space-lg);color:#f5c37a;background:#f5c37a26;border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.err-boundary-title{margin:0 0 var(--space-sm);color:var(--text-primary);font-size:1.4rem}.err-boundary-subtitle{margin:0 0 var(--space-lg);color:var(--text-secondary);line-height:1.5}.err-boundary-details{margin:0 0 var(--space-lg);text-align:left;color:var(--text-tertiary);font-size:.8rem}.err-boundary-details summary{cursor:pointer;-webkit-user-select:none;user-select:none}.err-boundary-details pre{margin:var(--space-sm) 0 0;padding:var(--space-sm);background:var(--bg-tertiary);border-radius:var(--radius-sm);white-space:pre-wrap;word-break:break-word}.err-boundary-actions{gap:var(--space-sm);justify-content:center;display:flex}.err-boundary-primary,.err-boundary-secondary{min-height:44px;padding:0 var(--space-lg);border-radius:var(--radius-md);cursor:pointer;border:none;align-items:center;gap:6px;font-size:.95rem;font-weight:600;transition:filter .15s,background .15s;display:inline-flex}.err-boundary-primary{background:var(--accent-primary);color:#fff}.err-boundary-primary:hover{filter:brightness(1.08)}.err-boundary-secondary{background:var(--bg-tertiary);color:var(--text-primary)}.err-boundary-secondary:hover{background:var(--border)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--font-display:Georgia, "Times New Roman", serif;--font-body:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, system-ui, sans-serif;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-3xl:64px;--radius-sm:8px;--radius-md:12px;--radius-lg:20px;--radius-xl:28px;--radius-full:9999px;--shadow-sm:0 1px 3px #0000000f;--shadow-md:0 4px 16px #00000014;--shadow-lg:0 8px 32px #0000001f;--shadow-glow:0 0 40px #c85a3a26;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--duration-fast:.15s;--duration-normal:.25s;--duration-slow:.4s;--sidebar-width:360px;--contact-panel-width:340px;--header-height:64px}:root,[data-theme=light]{--bg-primary:#fbf7f0;--bg-secondary:#f5ede3;--bg-tertiary:#ede4d8;--bg-chat:#f8f3eb;--bg-surface:#fff;--bg-surface-hover:#f9f4ec;--bg-input:#f0e9df;--bg-overlay:#3b2c2466;--text-primary:#2c1e16;--text-secondary:#6b5a4e;--text-tertiary:#9a8b7f;--text-inverse:#fbf7f0;--accent-primary:#c85a3a;--accent-primary-hover:#b5482a;--accent-primary-soft:#c85a3a1a;--accent-secondary:#d4a853;--accent-secondary-soft:#d4a8531f;--accent-success:#5a9e6f;--accent-danger:#c04b4b;--border-color:#6b5a4e1f;--border-hover:#6b5a4e40;--msg-own-bg:#c85a3a;--msg-own-text:#fff;--msg-other-bg:#fff;--msg-other-text:#2c1e16;--scrollbar-track:transparent;--scrollbar-thumb:#6b5a4e33;--scrollbar-thumb-hover:#6b5a4e59;--grain-opacity:.03;--badge-bg:#c85a3a;--badge-text:#fff}[data-theme=dark]{--bg-primary:#141210;--bg-secondary:#1c1916;--bg-tertiary:#252220;--bg-chat:#181614;--bg-surface:#201d1a;--bg-surface-hover:#2a2724;--bg-input:#252220;--bg-overlay:#0009;--text-primary:#f0e6d8;--text-secondary:#a89888;--text-tertiary:#6f6259;--text-inverse:#141210;--accent-primary:#e07a5f;--accent-primary-hover:#e8967f;--accent-primary-soft:#e07a5f1f;--accent-secondary:#e8b94d;--accent-secondary-soft:#e8b94d1a;--accent-success:#6bb580;--accent-danger:#e06060;--border-color:#a898881a;--border-hover:#a8988833;--msg-own-bg:#a84a2e;--msg-own-text:#fff3ea;--msg-other-bg:#2e2a26;--msg-other-text:#f4eadc;--scrollbar-track:transparent;--scrollbar-thumb:#a8988826;--scrollbar-thumb-hover:#a898884d;--grain-opacity:.04;--badge-bg:#e07a5f;--badge-text:#141210}html{font-size:calc(16px * var(--font-scale,1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}input:not([type=checkbox]):not([type=radio]):not([type=range]),textarea,select{font-size:max(16px,1rem)}.touch-target,button:not(.ml-mod-btn):not(.ml-tile-pip-btn):not(.ml-quality):not(.ml-waiting-reject):not(.skel):not(.message-status):not(.rxn-add):not(.rxn-pill){min-width:44px;min-height:44px}button.icon-sm{min-width:36px;min-height:36px}body{font-family:var(--font-body);color:var(--text-primary);background:var(--bg-primary);height:100vh;transition:background var(--duration-slow) var(--ease-out), color var(--duration-slow) var(--ease-out);font-weight:400;line-height:1.5;overflow:hidden}#root{height:100vh;overflow:hidden}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--scrollbar-track)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}::selection{background:var(--accent-primary-soft);color:var(--accent-primary)}:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px;border-radius:var(--radius-sm)}input,textarea,button{font-family:var(--font-body);font-size:inherit;color:inherit;background:0 0;border:none;outline:none}button{cursor:pointer}a{color:var(--accent-primary);text-decoration:none}.grain-overlay{pointer-events:none;z-index:9999;opacity:var(--grain-opacity);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:256px 256px;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes typingDot{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.stagger-children>*{animation:slideUp .4s var(--ease-out) both}.stagger-children>:first-child{animation-delay:0s}.stagger-children>:nth-child(2){animation-delay:40ms}.stagger-children>:nth-child(3){animation-delay:80ms}.stagger-children>:nth-child(4){animation-delay:.12s}.stagger-children>:nth-child(5){animation-delay:.16s}.stagger-children>:nth-child(6){animation-delay:.2s}.stagger-children>:nth-child(7){animation-delay:.24s}.stagger-children>:nth-child(8){animation-delay:.28s}.stagger-children>:nth-child(9){animation-delay:.32s}.stagger-children>:nth-child(10){animation-delay:.36s}:root{--safe-area-top:env(safe-area-inset-top,0px);--safe-area-bottom:env(safe-area-inset-bottom,0px);--safe-area-left:env(safe-area-inset-left,0px);--safe-area-right:env(safe-area-inset-right,0px);--bottom-nav-height:64px;--min-touch-target:44px}@supports (height:100dvh){#root,body{height:100dvh}}@media (width<=768px){button,a,.sidebar-chat,.chat-header,.bottom-nav{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}html{font-size:16px}input,textarea,select{font-size:16px!important}*{-webkit-overflow-scrolling:touch}::-webkit-scrollbar{display:none}*{scrollbar-width:none}}@media (width>=769px) and (width<=960px){:root{--sidebar-width:300px}}@media (horizontal-viewport-segments:2){.app-layout{gap:env(viewport-segment-left 1 0,0px)}}@media (vertical-viewport-segments:2){.app-layout{flex-direction:column}}
