.toast-container{position:fixed;bottom:2rem;right:2rem;display:flex;flex-direction:column;gap:1rem;z-index:9999;max-width:380px;width:calc(100vw - 4rem);pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;border-radius:12px;background:#121212d9;color:#fff;border:1px solid rgba(255,255,255,.08);box-shadow:0 10px 40px #0006,0 0 0 1px #000c;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);font-size:.875rem;font-weight:400;letter-spacing:.01em;animation:toast-in .5s cubic-bezier(.16,1,.3,1) forwards;will-change:transform,opacity;overflow:hidden;position:relative}.toast:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,#fff0,#ffffff26,#fff0);opacity:.8}.toast__content{flex-grow:1;display:flex;flex-direction:column;justify-content:center;min-height:20px}.toast__message{line-height:1.5;color:#fafafa}.toast--error{background:#1e1e1ed9;border-left:3px solid #737373}.toast--success{background:#161616d9;border-left:3px solid #e5e5e5}.toast__dismiss{background:none;border:none;color:#888;display:flex;align-items:center;justify-content:center;padding:.35rem;margin:-.35rem -.35rem -.35rem 0;cursor:pointer;border-radius:6px;transition:all .2s cubic-bezier(.16,1,.3,1)}.toast__dismiss:hover{color:#fff;background:#ffffff1a}.toast__dismiss:focus-visible{outline:2px solid rgba(255,255,255,.5);outline-offset:2px}@keyframes toast-in{0%{opacity:0;transform:translateY(24px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 480px){.toast-container{bottom:1rem;right:1rem;width:calc(100vw - 2rem);max-width:none}}.empty-state-wrapper{display:flex;align-items:center;justify-content:center;min-height:320px;height:100%;padding:var(--space-6, 2rem);perspective:1000px}.empty-state{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--space-4, 1.25rem);padding:3rem 2rem;background:linear-gradient(145deg,#8080800d,#80808003);border:1px solid rgba(128,128,128,.1);border-radius:24px;box-shadow:0 10px 40px -10px #00000014,inset 0 1px #ffffff0d;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);max-width:440px;width:100%;color:var(--color-text-secondary);transition:all .5s cubic-bezier(.16,1,.3,1);overflow:hidden}.empty-state:hover{transform:translateY(-4px) scale(1.01);box-shadow:0 20px 50px -10px #0000001f,inset 0 1px #ffffff1a;border-color:#80808033}.empty-state__glow{position:absolute;top:0;left:50%;transform:translate(-50%);width:100%;height:50%;background:radial-gradient(ellipse at top,rgba(128,128,128,.08) 0%,transparent 70%);pointer-events:none;z-index:0}.empty-state>*{z-index:1}.empty-state__icon-wrapper{display:flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:50%;background:#8080800a;border:1px solid rgba(128,128,128,.08);margin-bottom:var(--space-2, .5rem);box-shadow:0 8px 24px #0000000a,inset 0 2px 4px #ffffff0d;animation:float 6s ease-in-out infinite}.empty-state__icon{font-size:2rem;color:var(--color-text);opacity:.9}.empty-state__title{font-weight:600;font-size:1.35rem;color:var(--color-text);margin:0;letter-spacing:-.02em}.empty-state__description{margin:0;max-width:340px;font-size:.95rem;line-height:1.6;color:var(--color-text-secondary)}.empty-state__action{margin-top:var(--space-2, .5rem)}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-8px)}to{transform:translateY(0)}}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:8px;border:1px solid transparent;cursor:pointer;font-weight:500;font-family:inherit;transition:all .2s cubic-bezier(.16,1,.3,1);white-space:nowrap;outline:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;text-decoration:none}.btn:focus-visible{box-shadow:0 0 0 2px var(--color-background, #ffffff),0 0 0 4px var(--color-text, #0f0f0f)}.btn:active:not(:disabled){transform:scale(.96)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--md{padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.btn--sm{padding:.25rem .625rem;font-size:.75rem;line-height:1rem}.btn--lg{padding:.75rem 1.5rem;font-size:1rem;line-height:1.5rem}.btn__content{display:inline-flex;align-items:center;justify-content:center;gap:.5rem}.btn--primary{background:var(--color-text, #0f0f0f);color:var(--color-background, #ffffff);box-shadow:0 1px 2px #0000001a,inset 0 1px #ffffff26}.btn--primary:hover:not(:disabled){background:#000;box-shadow:0 4px 12px -2px #0003,0 2px 4px -1px #0000001a,inset 0 1px #ffffff26;transform:translateY(-1px)}.btn--secondary{background:var(--color-surface, #ffffff);color:var(--color-text, #0f0f0f);border-color:var(--color-border, #e5e5e5);box-shadow:0 1px 2px #00000008}.btn--secondary:hover:not(:disabled){background:var(--color-surface-hover, #f9f9f9);border-color:var(--color-text, #0f0f0f)}.btn--ghost{background:transparent;color:var(--color-text-secondary, #666666)}.btn--ghost:hover:not(:disabled){background:#0000000a;color:var(--color-text, #0f0f0f)}.btn--danger{background:transparent;color:#d11a2a;border-color:#ffe6e6}.btn--danger:hover:not(:disabled){background:#fff0f0;border-color:#fcc;color:#b31020}.btn__spinner{width:1.125em;height:1.125em;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:btn-spin .6s linear infinite;opacity:.8}@keyframes btn-spin{to{transform:rotate(360deg)}}.spinner-wrap{display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.spinner{width:22px;height:22px;border-radius:50%;border:3px solid var(--color-border);border-top-color:var(--color-accent);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-page{display:flex;align-items:center;justify-content:center;height:100vh;padding:var(--space-4);background:radial-gradient(circle at top left,var(--color-surface),var(--color-bg));animation:fadeIn var(--transition-base)}.login-card{width:100%;max-width:380px;background:#ffffff08;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);display:flex;flex-direction:column;box-shadow:0 20px 40px #00000014;transform:translateY(0);transition:transform var(--transition-base),box-shadow var(--transition-base)}.login-card:hover{transform:translateY(-2px);box-shadow:0 24px 48px #0000001f}[data-theme=dark] .login-card{background:#1e1e1e99}[data-theme=light] .login-card{background:#ffffffb3}.login-card__title{margin:0 0 var(--space-1);font-size:2rem;font-family:var(--font-display);font-weight:800;letter-spacing:-.03em}.login-card__subtitle{margin:0 0 var(--space-5);color:var(--color-text-secondary);font-size:.95rem}.login-field{font-size:.85rem;font-weight:600;color:var(--color-text-secondary);margin-bottom:var(--space-1);margin-top:var(--space-3);text-transform:uppercase;letter-spacing:.05em}.login-card input{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-size:1rem;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast)}.login-card input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft);outline:none;transform:translateY(-1px)}.login-error{color:var(--color-danger);font-size:.85rem;margin:var(--space-3) 0 0;padding:var(--space-2);background:var(--color-danger-soft);border-radius:var(--radius-sm);border-left:3px solid var(--color-danger)}.avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:linear-gradient(135deg,#2b2b2b,#1a1a1a);color:#fff;font-weight:600;flex-shrink:0;overflow:visible;box-shadow:0 4px 10px #00000040,inset 0 1px 2px #ffffff26,inset 0 -1px 2px #0006;border:1px solid #b3b3b3;transition:transform .4s cubic-bezier(.175,.885,.32,1.275),box-shadow .4s ease,border-color .4s ease;-webkit-user-select:none;user-select:none;cursor:pointer}.avatar:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 12px 24px #0000004d,inset 0 1px 2px #fff3,inset 0 -1px 2px #00000080;border-color:#fff}.avatar:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:50%;background:linear-gradient(135deg,#ffffff1a,#fff0);opacity:0;transition:opacity .4s ease;pointer-events:none}.avatar:hover:after{opacity:1}.avatar--sm{width:32px;height:32px;font-size:.75rem}.avatar--md{width:48px;height:48px;font-size:1rem}.avatar--lg{width:72px;height:72px;font-size:1.5rem;font-weight:700}.avatar__img{width:100%;height:100%;border-radius:50%;object-fit:cover;transition:opacity .3s ease,filter .3s ease;position:relative;z-index:1}.avatar:hover .avatar__img{filter:contrast(1.1) brightness(1.05)}.avatar__initials{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;letter-spacing:.5px;background:linear-gradient(135deg,#fff,#d4d4d4);-webkit-background-clip:text;-webkit-text-fill-color:transparent;text-shadow:0 2px 4px rgba(0,0,0,.3)}.avatar__status{position:absolute;z-index:2;border-radius:50%;background:#b3b3b3;border:2px solid #2b2b2b;box-shadow:0 2px 4px #0006;transition:all .4s cubic-bezier(.175,.885,.32,1.275)}.avatar--sm .avatar__status{width:10px;height:10px;bottom:0;right:0}.avatar--md .avatar__status{width:14px;height:14px;bottom:1px;right:1px}.avatar--lg .avatar__status{width:18px;height:18px;bottom:3px;right:3px}.avatar__status--online{background:#fff;border-color:#d4d4d4;box-shadow:0 0 10px #fff9,0 2px 4px #0006}.avatar:hover .avatar__status{transform:scale(1.15)}.app-shell{display:flex;flex-direction:column;height:100vh}.app-shell__topbar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0}.app-shell__brand{display:flex;align-items:center;font-weight:700;font-size:1.05rem;color:var(--color-text);text-decoration:none}.app-shell__logo{height:28px;width:auto}[data-theme=dark] .app-shell__logo{filter:invert(1)}.app-shell__actions{display:flex;align-items:center;gap:var(--space-2)}.app-shell__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-md);background:none;border:none;color:var(--color-text-secondary);cursor:pointer;text-decoration:none;font-size:1rem}.app-shell__icon-btn:hover{background:var(--color-border)}.app-shell__main{flex:1;overflow:hidden;display:flex}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;z-index:900;padding:var(--space-4);animation:overlay-in .4s cubic-bezier(.16,1,.3,1) forwards}.modal{background:var(--color-surface-raised);border-radius:var(--radius-lg);border:1px solid var(--color-border);max-width:min(520px,100%);width:100%;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 10px 40px -10px #0006,0 24px 64px -15px #00000080,inset 0 1px #ffffff0d;animation:modal-in .5s cubic-bezier(.16,1,.3,1) forwards;overflow:hidden}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4)}.modal__title{font-size:1.25rem;font-weight:600;letter-spacing:-.02em;margin:0}.modal__close{background:transparent;border:none;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);cursor:pointer;padding:8px;border-radius:50%;transition:all .2s cubic-bezier(.4,0,.2,1);margin:-8px -8px -8px 0}.modal__close:hover{background:var(--color-border);color:inherit;transform:rotate(90deg)}.modal__close:active{transform:rotate(90deg) scale(.9)}.modal__body{padding:var(--space-2) var(--space-4) var(--space-4);overflow-y:auto;line-height:1.6}.modal__body::-webkit-scrollbar{width:6px}.modal__body::-webkit-scrollbar-track{background:transparent}.modal__body::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.modal__footer{display:flex;justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border);background:linear-gradient(to bottom,transparent,rgba(0,0,0,.03))}@keyframes overlay-in{0%{opacity:0;-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px)}to{opacity:1;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}}@keyframes modal-in{0%{opacity:0;transform:translateY(24px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:#ffffffbf;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);position:sticky;top:0;z-index:10}[data-theme=dark] .chat-header{background:#1a1a1abf}.chat-header__identity{display:flex;align-items:center;gap:var(--space-3)}.chat-header__name{font-weight:700;font-family:var(--font-display);font-size:1.15rem;letter-spacing:-.01em}.chat-header__status{font-size:.8rem;color:var(--color-text-tertiary);display:flex;align-items:center;gap:4px}.chat-header__actions{display:flex;gap:var(--space-1)}.chat-header__icon-btn{background:none;border:none;cursor:pointer;font-size:1.1rem;padding:var(--space-2);border-radius:var(--radius-md);color:var(--color-text-secondary);transition:all var(--transition-fast)}.chat-header__icon-btn:hover{background:var(--color-surface-raised);color:var(--color-text);transform:translateY(-1px)}.chat-header p{margin:0}.link-preview-modern{display:flex;flex-direction:row;justify-content:space-between;margin-top:12px;border:1px solid var(--color-border, #333);border-radius:var(--radius-md, 12px);overflow:hidden;text-decoration:none;color:var(--color-text, #fff);background:var(--color-surface, #0a0a0a);max-width:480px;transition:all .3s cubic-bezier(.2,.8,.2,1);box-shadow:0 4px 12px #0000001a,inset 0 1px #ffffff0d;position:relative;isolation:isolate}.link-preview-modern:hover{transform:translateY(-2px);border-color:var(--color-border-hover, var(--color-text-secondary, #555));box-shadow:0 8px 24px #00000026,inset 0 1px #ffffff14;background:var(--color-surface-hover, var(--color-surface, #121212))}.link-preview-modern:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(120deg,transparent,rgba(255,255,255,.04),transparent);transform:translate(-100%);transition:transform .6s ease;z-index:1;pointer-events:none}.link-preview-modern:hover:before{transform:translate(100%)}.link-preview-modern__content{display:flex;flex-direction:column;padding:16px;gap:8px;flex:1;min-width:0;justify-content:center}.link-preview-modern__header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:2px}.link-preview-modern__site{display:flex;align-items:center;gap:6px;font-size:.7rem;font-weight:600;letter-spacing:.05em;color:var(--color-text-tertiary, #888);text-transform:uppercase}.link-preview-modern__site-icon{display:flex;align-items:center;opacity:.8;color:var(--color-text-secondary, #aaa)}.link-preview-modern__external-icon{opacity:0;color:var(--color-text-secondary, #888);transition:opacity .3s ease,transform .3s ease;transform:translate(-4px,4px);display:flex}.link-preview-modern:hover .link-preview-modern__external-icon{opacity:1;transform:translate(0);color:var(--color-text, #fff)}.link-preview-modern__title{font-weight:600;font-size:.95rem;line-height:1.3;margin:0;color:var(--color-text, #eee);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.link-preview-modern__description{font-size:.85rem;line-height:1.5;margin:0;color:var(--color-text-secondary, #aaa);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.link-preview-modern__url{font-size:.75rem;color:var(--color-text-tertiary, #666);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:auto;padding-top:4px}.link-preview-modern__image-container{width:140px;flex-shrink:0;position:relative;overflow:hidden;border-left:1px solid var(--color-border, #333)}.link-preview-modern__image{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.8,.2,1)}.link-preview-modern:hover .link-preview-modern__image{transform:scale(1.08)}.link-preview-modern__image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;box-shadow:inset 0 0 0 1px #0000001a;pointer-events:none}@media (max-width: 480px){.link-preview-modern{flex-direction:column-reverse}.link-preview-modern__image-container{width:100%;height:160px;border-left:none;border-bottom:1px solid var(--color-border, #333)}}.attachment-preview-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0a0ad9;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);display:flex;align-items:center;justify-content:center;z-index:9999;animation:overlayFadeIn .35s cubic-bezier(.16,1,.3,1) forwards;padding:2rem}.attachment-preview-overlay.is-closing{animation:overlayFadeOut .3s cubic-bezier(.16,1,.3,1) forwards}.attachment-preview-container{display:flex;flex-direction:column;background:#161616b3;border:1px solid rgba(255,255,255,.08);border-radius:16px;overflow:hidden;max-width:90vw;max-height:90vh;box-shadow:0 32px 64px #00000080,0 0 0 1px #ffffff08 inset;animation:modalScaleIn .4s cubic-bezier(.16,1,.3,1) forwards}.attachment-preview-overlay.is-closing .attachment-preview-container{animation:modalScaleOut .3s cubic-bezier(.16,1,.3,1) forwards}.attachment-preview-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:linear-gradient(to bottom,#1e1e1ecc,#14141466);border-bottom:1px solid rgba(255,255,255,.05);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.attachment-preview-filename{color:#fafafa;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:.95rem;font-weight:500;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:500px}.attachment-preview-actions{display:flex;align-items:center;gap:.75rem}.attachment-preview-action-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:1px solid transparent;background:#ffffff08;color:#a0a0a0;cursor:pointer;transition:all .25s cubic-bezier(.16,1,.3,1);text-decoration:none}.attachment-preview-action-btn:hover{background:#ffffff1a;color:#fff;border-color:#ffffff26;transform:translateY(-2px);box-shadow:0 4px 12px #0003}.attachment-preview-action-btn:active{transform:translateY(0)}.attachment-preview-content{display:flex;align-items:center;justify-content:center;padding:1.5rem;overflow:auto;background:radial-gradient(circle at center,#28282866,#0a0a0a00)}.attachment-preview-content img{max-width:100%;max-height:calc(90vh - 140px);object-fit:contain;border-radius:8px;box-shadow:0 12px 36px #0006;-webkit-user-select:none;user-select:none}@keyframes overlayFadeIn{0%{opacity:0;backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px)}to{opacity:1;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}}@keyframes overlayFadeOut{0%{opacity:1;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}to{opacity:0;backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px)}}@keyframes modalScaleIn{0%{opacity:0;transform:scale(.92) translateY(16px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes modalScaleOut{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.96) translateY(8px)}}@media (max-width: 768px){.attachment-preview-overlay{padding:1rem}.attachment-preview-filename{max-width:250px;font-size:.85rem}.attachment-preview-action-btn{width:36px;height:36px}}@media (max-width: 480px){.attachment-preview-filename{max-width:150px}}.message-row{display:flex;padding:4px var(--space-4);animation:slideUp .3s cubic-bezier(.16,1,.3,1)}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-row--own{justify-content:flex-end}.message-bubble-wrap{position:relative;max-width:min(75%,600px);display:flex;flex-direction:column}.message-row--own .message-bubble-wrap{align-items:flex-end}.message-sender{font-size:.75rem;color:var(--color-text-tertiary);margin:var(--space-1) 0 4px var(--space-1);font-weight:500}.message-bubble{background:var(--color-bubble-other);color:var(--color-bubble-other-text);border-radius:var(--radius-lg);border-bottom-left-radius:4px;padding:12px 16px;position:relative;box-shadow:0 2px 10px #0000000d;transition:box-shadow var(--transition-fast)}.message-bubble:hover{box-shadow:0 4px 14px #00000014}.message-row--own .message-bubble{background:var(--color-bubble-self);color:var(--color-bubble-self-text);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:4px}.message-bubble--deleted{background:transparent;color:var(--color-text-tertiary);box-shadow:none;padding:var(--space-1) var(--space-3);font-style:italic;border:1px dashed var(--color-border)}.message-bubble--failed{outline:2px solid var(--color-danger);outline-offset:2px}.message-content p{margin:0 0 6px;white-space:pre-wrap;word-break:break-word;line-height:1.5}.message-content p:last-child{margin-bottom:0}.message-content code{background:#0000001f;padding:2px 6px;border-radius:4px;font-size:.85em;font-family:monospace}.message-content ul{margin:6px 0;padding-left:20px}.message-reply-preview{display:flex;flex-direction:column;border-left:3px solid currentColor;opacity:.8;padding:6px var(--space-2);margin-bottom:var(--space-2);font-size:.85rem;border-radius:4px;background:#00000014}.message-reply-preview__author{font-weight:700;margin-bottom:2px}.message-reply-preview__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px}.message-meta{display:flex;gap:var(--space-2);font-size:.7rem;opacity:.6;margin-top:4px;justify-content:flex-end;font-weight:500}.message-meta__edited{font-style:italic}.delivery-tick--read{color:#4fc3f7}.message-retry{display:block;margin-top:var(--space-1);background:none;border:none;color:var(--color-danger);font-size:.75rem;padding:0;cursor:pointer;text-align:left;font-weight:600}.message-reactions{display:flex;gap:4px;margin-top:var(--space-1);flex-wrap:wrap}.message-reaction-chip{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);font-size:.75rem;padding:2px 8px;cursor:pointer;color:var(--color-text);box-shadow:0 1px 3px #0000000d;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.message-reaction-chip:hover{transform:translateY(-1px);box-shadow:0 2px 6px #0000001a}.message-attachment{display:block;margin-bottom:var(--space-2);text-decoration:none;color:inherit;background:none;border:none;padding:0;font:inherit;cursor:pointer;text-align:left}.message-attachment--image img{max-width:280px;max-height:280px;border-radius:var(--radius-md);display:block;object-fit:cover;box-shadow:0 4px 12px #0000001a}.message-attachment--file{display:flex;align-items:center;gap:var(--space-3);background:#0000000d;border-radius:var(--radius-md);padding:var(--space-3);transition:background var(--transition-fast)}.message-attachment--file:hover{background:#00000014}.message-attachment__icon{font-size:1.6rem}.message-attachment__name{display:block;font-weight:600;font-size:.9rem}.message-attachment__size{display:block;font-size:.8rem;opacity:.75}.message-actions{position:absolute;top:-16px;right:var(--space-2);display:none;gap:4px;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:4px;box-shadow:0 4px 12px #00000026;z-index:5}.message-row--own .message-actions{right:auto;left:var(--space-2)}.message-bubble-wrap:hover .message-actions,.message-bubble-wrap:focus-within .message-actions{display:flex;animation:popIn .2s cubic-bezier(.175,.885,.32,1.275)}@keyframes popIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.message-actions button{background:none;border:none;cursor:pointer;padding:6px;border-radius:50%;font-size:.9rem;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}.message-actions button:hover{background:var(--color-border);transform:scale(1.1)}.reaction-picker{position:absolute;top:-55px;right:var(--space-2);display:flex;gap:6px;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:6px 8px;box-shadow:0 8px 24px #0003;z-index:10;animation:popIn .2s cubic-bezier(.175,.885,.32,1.275)}.reaction-picker button{background:none;border:none;cursor:pointer;font-size:1.2rem;transition:transform var(--transition-fast)}.reaction-picker button:hover{transform:scale(1.2)}.message-list{flex:1;overflow-y:auto;padding:var(--space-6, 1.5rem) var(--space-4, 1rem);display:flex;flex-direction:column;gap:6px;background-color:var(--color-background, #fafafa);background-image:radial-gradient(circle at top center,color-mix(in srgb,var(--color-text-primary, #000) 2%,transparent) 0%,transparent 100%);scroll-behavior:smooth;transition:background-color .3s ease}.message-list::-webkit-scrollbar{width:10px}.message-list::-webkit-scrollbar-track{background:transparent}.message-list::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--color-text-primary, #000) 15%,transparent);border-radius:10px;border:3px solid transparent;background-clip:padding-box}.message-list::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--color-text-primary, #000) 25%,transparent)}.message-list--center{align-items:center;justify-content:center}.message-list--empty,.message-list--loading{animation:soft-fade .8s cubic-bezier(.16,1,.3,1)}.empty-state-container{padding:var(--space-10, 2.5rem) var(--space-8, 2rem);background:color-mix(in srgb,var(--color-surface, #ffffff) 50%,transparent);border-radius:var(--radius-xl, 1.25rem);box-shadow:0 10px 40px -10px color-mix(in srgb,var(--color-text-primary, #000) 8%,transparent),0 1px 3px color-mix(in srgb,var(--color-text-primary, #000) 3%,transparent);border:1px solid color-mix(in srgb,var(--color-text-primary, #000) 4%,transparent);transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s cubic-bezier(.16,1,.3,1);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.empty-state-container:hover{transform:translateY(-4px);box-shadow:0 20px 48px -12px color-mix(in srgb,var(--color-text-primary, #000) 12%,transparent),0 1px 3px color-mix(in srgb,var(--color-text-primary, #000) 3%,transparent)}.loading-older-container{display:flex;justify-content:center;padding:var(--space-4, 1rem) 0;animation:soft-fade .4s ease-in-out}.date-separator{display:flex;justify-content:center;margin:var(--space-8, 2rem) 0 var(--space-5, 1.25rem);position:relative;align-items:center}.date-separator:before{content:"";position:absolute;left:5%;right:5%;height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--color-text-primary, #000) 10%,transparent),transparent);z-index:0}.date-separator span{background:var(--color-surface, #ffffff);color:var(--color-text-secondary, #666666);font-size:.65rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;padding:6px 18px;border-radius:var(--radius-pill, 9999px);border:1px solid color-mix(in srgb,var(--color-text-primary, #000) 8%,transparent);box-shadow:0 4px 12px -2px color-mix(in srgb,var(--color-text-primary, #000) 4%,transparent);position:relative;z-index:1;transition:all .3s cubic-bezier(.16,1,.3,1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.date-separator span:hover{transform:translateY(-1px) scale(1.02);color:var(--color-text-primary, #000);box-shadow:0 6px 16px -2px color-mix(in srgb,var(--color-text-primary, #000) 8%,transparent);border-color:color-mix(in srgb,var(--color-text-primary, #000) 12%,transparent)}.message-highlight{animation:message-flash 2.5s cubic-bezier(.16,1,.3,1);border-radius:var(--radius-lg, .75rem);position:relative}@keyframes message-flash{0%{background:color-mix(in srgb,var(--color-text-primary, #000) 6%,transparent);box-shadow:0 0 0 4px color-mix(in srgb,var(--color-text-primary, #000) 3%,transparent)}to{background:transparent;box-shadow:0 0 0 4px transparent}}@keyframes soft-fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.typing-indicator-wrapper{display:flex;padding:8px 16px;margin-bottom:8px;animation:typing-fade-in .4s cubic-bezier(.16,1,.3,1) forwards}.typing-indicator{display:flex;align-items:center;gap:12px;padding:8px 16px 8px 10px;background:#7878780f;border:1px solid rgba(120,120,120,.12);border-radius:24px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 16px #00000008;transition:all .3s ease}.typing-indicator:hover{background:#78787817;box-shadow:0 6px 20px #0000000d;transform:translateY(-1px)}.typing-indicator__avatar{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:#2a2a2a;color:#fff;border-radius:50%;font-size:11px;font-weight:600;letter-spacing:.5px;box-shadow:0 2px 6px #00000026}.typing-indicator__content{display:flex;align-items:baseline;gap:6px;font-family:inherit}.typing-indicator__name{color:#222;font-weight:600;font-size:.85rem;letter-spacing:.2px}.typing-indicator__text{color:#777;font-size:.8rem;font-weight:400}.typing-indicator__dots{display:inline-flex;align-items:center;gap:4px;margin-left:3px}.typing-indicator__dots span{width:4px;height:4px;border-radius:50%;background:#666;opacity:.3;animation:typing-pulse 1.4s infinite ease-in-out both}.typing-indicator__dots span:nth-child(1){animation-delay:-.32s}.typing-indicator__dots span:nth-child(2){animation-delay:-.16s}.typing-indicator__dots span:nth-child(3){animation-delay:0s}@keyframes typing-pulse{0%,80%,to{transform:scale(.8);opacity:.3}40%{transform:scale(1.3);opacity:1;background:#111}}@keyframes typing-fade-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media (prefers-color-scheme: dark){.typing-indicator{background:#c8c8c80a;border-color:#c8c8c814}.typing-indicator:hover{background:#c8c8c812}.typing-indicator__avatar{background:#e0e0e0;color:#1a1a1a}.typing-indicator__name{color:#e0e0e0}.typing-indicator__text{color:#888}.typing-indicator__dots span{background:#888}@keyframes typing-pulse{0%,80%,to{transform:scale(.8);opacity:.3}40%{transform:scale(1.3);opacity:1;background:#fff}}}.composer{border-top:1px solid var(--color-border);background:#ffffffd9;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);padding:var(--space-3) var(--space-4) var(--space-4);z-index:10}[data-theme=dark] .composer{background:#121212d9}.composer__banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);background:var(--color-surface-raised);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-3);font-size:.85rem;font-weight:500;color:var(--color-text-secondary);border-left:4px solid var(--color-accent)}.composer__banner-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:380px;display:inline-block;vertical-align:bottom}.composer__banner button{background:none;border:none;cursor:pointer;font-size:1.1rem;color:var(--color-text-tertiary);padding:4px;border-radius:var(--radius-sm);transition:background var(--transition-fast)}.composer__banner button:hover{background:var(--color-border);color:var(--color-text)}.composer__row{display:flex;align-items:flex-end;gap:var(--space-3)}.composer__icon-btn{background:none;border:none;cursor:pointer;font-size:1.3rem;padding:var(--space-2);border-radius:50%;flex-shrink:0;color:var(--color-text-secondary);transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center}.composer__icon-btn:hover:not(:disabled){background:var(--color-surface-raised);color:var(--color-text);transform:translateY(-2px)}.composer__icon-btn:disabled{opacity:.5;cursor:default}.composer__textarea{flex:1;resize:none;max-height:180px;min-height:48px;padding:12px 20px;border-radius:24px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font:inherit;line-height:1.5;box-shadow:inset 0 2px 4px #00000005;transition:all var(--transition-fast)}.composer__textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft),inset 0 2px 4px #00000005}.composer__send{flex-shrink:0;width:48px;height:48px;border-radius:50%;border:none;background:var(--color-accent);color:var(--color-accent-contrast);font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);box-shadow:0 4px 12px #0000001a}.composer__send:hover:not(:disabled){transform:translateY(-2px) scale(1.05);box-shadow:0 6px 16px #00000026}.composer__send:disabled{opacity:.5;cursor:default;box-shadow:none;transform:none}.search-panel__input-wrapper{position:relative;display:flex;align-items:center;background:var(--color-bg);border:1px solid var(--color-border);border-radius:12px;margin-bottom:20px;padding:0 var(--space-3);transition:all .3s cubic-bezier(.2,0,0,1);box-shadow:0 2px 6px #00000005;overflow:hidden}.search-panel__input-wrapper.focused{border-color:var(--color-text-primary);box-shadow:0 4px 16px #0000000f,0 0 0 1px var(--color-text-primary)}.search-panel__icon{width:18px;height:18px;color:var(--color-text-tertiary);transition:color .3s ease;flex-shrink:0}.search-panel__input-wrapper.focused .search-panel__icon{color:var(--color-text-primary)}.search-panel__input{flex:1;width:100%;padding:14px 12px;background:transparent;border:none;color:var(--color-text-primary);font:inherit;font-size:.95rem;outline:none}.search-panel__input::placeholder{color:var(--color-text-tertiary)}.search-panel__input::-webkit-search-cancel-button{display:none}.search-panel__clear{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--color-surface-raised, #f0f0f0);border:none;color:var(--color-text-tertiary);cursor:pointer;padding:4px;transition:all .2s cubic-bezier(.2,0,0,1);flex-shrink:0}.search-panel__clear:hover{background:var(--color-text-primary);color:var(--color-bg);transform:scale(1.1)}.search-panel__results-container{position:relative;margin:0 calc(var(--space-2) * -1)}.search-panel__results{display:flex;flex-direction:column;gap:6px;max-height:420px;overflow-y:auto;padding:0 var(--space-2) var(--space-2);scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}.search-panel__results::-webkit-scrollbar{width:6px}.search-panel__results::-webkit-scrollbar-track{background:transparent}.search-panel__results::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.search-panel__result{display:flex;flex-direction:column;align-items:stretch;background:transparent;border:1px solid transparent;text-align:left;cursor:pointer;padding:12px 14px;border-radius:10px;color:var(--color-text-primary);transition:all .25s cubic-bezier(.2,0,0,1);opacity:0;animation:slideUpFade .4s cubic-bezier(.2,0,0,1) forwards}.search-panel__result:hover{background:var(--color-surface-raised, #f7f7f7);border-color:var(--color-border);transform:translateY(-2px);box-shadow:0 6px 16px #0000000a}.search-panel__result:active{transform:translateY(0);background:var(--color-border);transition-duration:.1s}.search-panel__result-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.search-panel__result-sender{font-size:.8rem;font-weight:600;color:var(--color-text-primary);letter-spacing:.2px;text-transform:uppercase}.search-panel__result-time{font-size:.75rem;color:var(--color-text-tertiary);font-variant-numeric:tabular-nums}.search-panel__result-text{font-size:.95rem;line-height:1.5;color:var(--color-text-primary);opacity:.85;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.search-panel__loading{display:flex;justify-content:center;padding:40px 0;opacity:0;animation:fadeIn .3s forwards;animation-delay:.2s}.search-panel__empty-state{padding:30px 0;opacity:0;animation:slideUpFade .4s forwards}@keyframes slideUpFade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.chat-page{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0;background:var(--color-bg)}.chat-page--center{align-items:center;justify-content:center;padding:var(--space-6)}.settings-page{max-width:680px;margin:0 auto;padding:var(--space-6) var(--space-4);overflow-y:auto;width:100%;animation:fadeIn var(--transition-base)}.settings-page h1{margin-top:0;margin-bottom:var(--space-5);font-family:var(--font-display);font-size:2.2rem;font-weight:800;letter-spacing:-.02em}.settings-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-5);box-shadow:0 4px 20px #00000008;transition:transform var(--transition-base),box-shadow var(--transition-base)}.settings-section:hover{transform:translateY(-2px);box-shadow:0 8px 30px #0000000f}.settings-section h2{margin:0 0 var(--space-4);font-size:.9rem;font-weight:700;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.08em}.settings-profile{display:flex;align-items:center;gap:var(--space-4)}.settings-profile__name{font-weight:700;font-size:1.2rem;margin:0 0 4px}.settings-profile__username{margin:0;color:var(--color-text-secondary);font-size:.95rem;font-weight:500}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0}.settings-row:not(:last-child){border-bottom:1px solid var(--color-border)}.settings-row select{padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface-raised);color:var(--color-text);font-family:var(--font-sans);font-size:.95rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast);outline:none}.settings-row select:focus,.settings-row select:hover{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.settings-row__label{margin:0 0 4px;font-weight:600;font-size:1.05rem}.settings-row__hint{margin:0;font-size:.85rem;color:var(--color-text-secondary);max-width:400px;line-height:1.4}.settings-section--danger{border-color:var(--color-danger)}.settings-section--danger h2{color:var(--color-danger)}.admin-page{padding:var(--space-6) var(--space-4);max-width:1000px;margin:0 auto;animation:fadeIn var(--transition-base)}.admin-page h1{font-family:var(--font-display);font-size:2.5rem;font-weight:800;margin:0 0 var(--space-6);letter-spacing:-.03em}.admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4);margin-bottom:var(--space-6)}.admin-stat{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);display:flex;flex-direction:column;box-shadow:0 4px 20px #00000005;transition:transform var(--transition-fast),box-shadow var(--transition-fast);position:relative;overflow:hidden}.admin-stat:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--color-text-secondary);opacity:.2}.admin-stat:hover{transform:translateY(-4px);box-shadow:0 12px 30px #00000014}.admin-stat__value{font-family:var(--font-display);font-size:2.8rem;font-weight:800;color:var(--color-text);line-height:1;margin-bottom:var(--space-2)}.admin-stat__label{font-size:.95rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.admin-page h2{font-family:var(--font-display);font-size:1.5rem;margin:0 0 var(--space-4)}.admin-table-container{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 4px 20px #00000008}.admin-table{width:100%;border-collapse:collapse;text-align:left}.admin-table th{background:var(--color-surface-raised);padding:var(--space-3) var(--space-4);font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;font-size:.85rem;letter-spacing:.05em;border-bottom:1px solid var(--color-border)}.admin-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);color:var(--color-text);font-size:.95rem}.admin-table tbody tr{transition:background var(--transition-fast)}.admin-table tbody tr:hover{background:var(--color-surface-raised)}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table__meta{font-family:monospace;font-size:.85rem;color:var(--color-text-secondary);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:root{--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-display: "Outfit", -apple-system, BlinkMacSystemFont, sans-serif;--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--radius-pill: 999px;--space-1: 6px;--space-2: 10px;--space-3: 16px;--space-4: 24px;--space-5: 36px;--space-6: 48px;--shadow-sm: 0 4px 12px rgba(0, 0, 0, .05);--shadow-md: 0 10px 30px rgba(0, 0, 0, .1);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .25s cubic-bezier(.4, 0, .2, 1)}:root,[data-theme=light]{--color-bg: #ffffff;--color-surface: #ffffff;--color-surface-raised: #ffffff;--color-border: #d4d4d4;--color-text: #2b2b2b;--color-text-secondary: #737373;--color-text-tertiary: #b3b3b3;--color-accent: #2b2b2b;--color-accent-contrast: #ffffff;--color-accent-soft: #f5f5f5;--color-danger: #ef4444;--color-danger-soft: #fee2e2;--color-success: #22c55e;--color-bubble-self: #2b2b2b;--color-bubble-self-text: #ffffff;--color-bubble-other: #f3f3f3;--color-bubble-other-text: #2b2b2b;--color-online: #22c55e}[data-theme=dark]{--color-bg: #121212;--color-surface: #1a1a1a;--color-surface-raised: #262626;--color-border: #404040;--color-text: #ffffff;--color-text-secondary: #a3a3a3;--color-text-tertiary: #737373;--color-accent: #ffffff;--color-accent-contrast: #121212;--color-accent-soft: #262626;--color-danger: #f87171;--color-danger-soft: #451a1a;--color-success: #4ade80;--color-bubble-self: #ffffff;--color-bubble-self-text: #121212;--color-bubble-other: #262626;--color-bubble-other-text: #ffffff;--color-online: #4ade80}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:700;letter-spacing:-.02em}#root{height:100vh}button{font-family:var(--font-sans);font-weight:500}a{color:var(--color-accent);text-decoration:none;transition:opacity var(--transition-fast)}a:hover{opacity:.8}::selection{background:var(--color-text-tertiary);color:var(--color-accent-contrast)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}*{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}
