:root,[data-theme=light]{--primary: #2A58C8;--primary-fill: #2A58C8;--primary-pressed: #1F459E;--on-primary: #FFFFFF;--accent-on-tint: #1F459E;--presence: #1F9D55;--background: #FFFFFF;--chat-canvas: #CFD9E6;--surface: #FFFFFF;--surface-muted: #F2F5F8;--divider: #DFE5EB;--pill-bg: #DEE5EC;--text: #141A22;--text-secondary: #565E68;--text-placeholder: #636B75;--danger: #C9333C;--danger-tint: rgba(201, 51, 60, .1);--bubble-shadow: 0 1px 2px rgba(23, 38, 66, .1);--icon-square-bg: rgba(42, 88, 200, .12);--row-press: rgba(20, 26, 34, .06);--primary-tint: rgba(42, 88, 200, .1);--avatar-0: #2A58C8;--avatar-0-from: #6E93EC;--avatar-0-to: #2A58C8;--avatar-1: rgb(14 122 109);--avatar-1-from: #43C6B4;--avatar-1-to: rgb(14 122 109);--avatar-2: #3A4A6B;--avatar-2-from: #7C8FB5;--avatar-2-to: #3A4A6B;--avatar-3: rgb(163 43 95);--avatar-3-from: #E0709A;--avatar-3-to: rgb(163 43 95);--avatar-4: rgb(95 71 168);--avatar-4-from: #A78BE6;--avatar-4-to: rgb(95 71 168);--avatar-5: rgb(138 101 18);--avatar-5-from: #E3A23F;--avatar-5-to: rgb(138 101 18);--role-owner: rgb(138 101 18);--role-moderator: rgb(14 122 109);--shadow-float: 0 8px 32px rgba(16, 21, 27, .16);--shadow-segment: 0 1px 3px rgba(16, 21, 27, .1);--scrim: rgba(8, 12, 18, .45);--scrim-heavy: rgba(8, 12, 18, .94);--ring: var(--background)}[data-theme=dark]{--primary: #77A9F5;--primary-fill: #26509F;--primary-pressed: #1E4180;--on-primary: #FFFFFF;--accent-on-tint: #A8C8FA;--presence: #3ECF7F;--background: #0D1218;--chat-canvas: #0D1218;--surface: #1E2937;--surface-muted: #232E3B;--divider: #2C3A4A;--pill-bg: #2A3646;--text: #E7ECF2;--text-secondary: #98A4B2;--text-placeholder: #8796A8;--danger: #F2696F;--danger-tint: rgba(242, 105, 111, .14);--bubble-shadow: 0 1px 2px rgba(0, 0, 0, .35);--icon-square-bg: rgba(119, 169, 245, .18);--row-press: rgba(231, 236, 242, .08);--primary-tint: rgba(119, 169, 245, .14);--avatar-0: #77A9F5;--avatar-0-from: #2A58C8;--avatar-0-to: #173C8F;--avatar-1: #3AD6BD;--avatar-1-from: #0F7A6B;--avatar-1-to: #0A5A4E;--avatar-2: #8FA6CF;--avatar-2-from: #3D4E70;--avatar-2-to: #29344D;--avatar-3: #F37AA4;--avatar-3-from: #7E2A4D;--avatar-3-to: #5E1E39;--avatar-4: #B9A0F0;--avatar-4-from: #4C398B;--avatar-4-to: #362766;--avatar-5: #F0B24E;--avatar-5-from: rgb(138 101 18);--avatar-5-to: rgb(107 78 8);--role-owner: #F0B24E;--role-moderator: #3AD6BD;--shadow-float: 0 8px 32px rgba(0, 0, 0, .55);--shadow-segment: 0 1px 3px rgba(0, 0, 0, .4);--scrim: rgba(4, 6, 9, .55);--scrim-heavy: rgba(4, 6, 9, .95);--ring: var(--surface)}@media (prefers-color-scheme: dark){:root:not([data-theme]){--primary: #77A9F5;--primary-fill: #26509F;--primary-pressed: #1E4180;--on-primary: #FFFFFF;--accent-on-tint: #A8C8FA;--presence: #3ECF7F;--background: #0D1218;--chat-canvas: #0D1218;--surface: #1E2937;--surface-muted: #232E3B;--divider: #2C3A4A;--pill-bg: #2A3646;--text: #E7ECF2;--text-secondary: #98A4B2;--text-placeholder: #8796A8;--danger: #F2696F;--danger-tint: rgba(242, 105, 111, .14);--bubble-shadow: 0 1px 2px rgba(0, 0, 0, .35);--icon-square-bg: rgba(119, 169, 245, .18);--row-press: rgba(231, 236, 242, .08);--primary-tint: rgba(119, 169, 245, .14);--avatar-0: #77A9F5;--avatar-0-from: #2A58C8;--avatar-0-to: #173C8F;--avatar-1: #3AD6BD;--avatar-1-from: #0F7A6B;--avatar-1-to: #0A5A4E;--avatar-2: #8FA6CF;--avatar-2-from: #3D4E70;--avatar-2-to: #29344D;--avatar-3: #F37AA4;--avatar-3-from: #7E2A4D;--avatar-3-to: #5E1E39;--avatar-4: #B9A0F0;--avatar-4-from: #4C398B;--avatar-4-to: #362766;--avatar-5: #F0B24E;--avatar-5-from: rgb(138 101 18);--avatar-5-to: rgb(107 78 8);--role-owner: #F0B24E;--role-moderator: #3AD6BD;--shadow-float: 0 8px 32px rgba(0, 0, 0, .55);--shadow-segment: 0 1px 3px rgba(0, 0, 0, .4);--scrim: rgba(4, 6, 9, .55);--scrim-heavy: rgba(4, 6, 9, .95);--ring: var(--surface)}}:root{--pole: 44px;--send-pole: 44px;--field-h: 48px;--appbar-h: 56px;--tabbar-h: 56px;--row-h: 68px;--contact-row-h: 64px;--settings-row-h: 52px;--search-h: 40px;--fab-s: 56px;--avatar-list: 54px;--avatar-bar: 40px;--avatar-profile: 64px;--avatar-rail: 44px;--presence-s: 10px;--badge-s: 22px;--icon-square-s: 56px;--media-max: 260px;--tap: 44px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--r-sm: 10px;--r-bubble: 16px;--r-tail: 6px;--r-md: 14px;--r-lg: 20px;--r-media-inner: 14px;--r-modal: 16px;--r-pill: 999px;--fs-display: 1.75rem;--fs-title: 1.0625rem;--fs-list-name: 1rem;--fs-body: 1rem;--fs-strong: 1rem;--fs-preview: .875rem;--fs-secondary: .875rem;--fs-caption: .75rem;--fs-time: .6875rem;--fs-micro: .6875rem;--ease-out: cubic-bezier(.2, 0, 0, 1);--t-press: .12s;--t-hover: .15s;--t-sheet-in: .28s;--t-sheet-out: .14s;--t-crossfade: .25s;--t-view-slide: .25s;--t-row-press-out: .2s}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}#root{position:fixed;inset:0}html{font-size:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:var(--fs-body);line-height:1.5;background:var(--background);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;color:inherit;padding:0;-webkit-tap-highlight-color:transparent}input,textarea{font-family:inherit;font-size:var(--fs-body);color:var(--text);border:none;outline:none;background:transparent}::placeholder{color:var(--text-placeholder)}a{color:var(--primary);text-decoration:none}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--divider);border-radius:var(--r-pill)}.btn-primary,.btn-secondary,.btn-ghost,.btn-destructive,.btn-danger,.round-btn,.fab,.icon-btn,.seg-btn,.switch,.tab-item,.rail-item{transition:background-color var(--t-hover) var(--ease-out),color var(--t-hover) var(--ease-out),opacity var(--t-hover) var(--ease-out),transform var(--t-press) var(--ease-out)}.chat-row,.menu-row,.select-row,.attach-row,.bubble-menu-item,.profile-header{transition:background-color var(--t-row-press-out) var(--ease-out)}.chat-row:active,.menu-row:active,.select-row:active,.attach-row:active,.bubble-menu-item:active,.profile-header:active{background-color:var(--row-press);transition-duration:var(--t-press)}@media (hover: hover){.chat-row:hover,.menu-row:hover,.select-row:hover,.attach-row:hover,.bubble-menu-item:hover{background-color:var(--surface-muted)}.icon-btn:hover,.rail-item:hover{background:var(--surface-muted)}.btn-primary:hover:not(:disabled),.round-btn:hover:not(:disabled),.fab:hover{background:var(--primary-pressed)}.btn-secondary:hover:not(:disabled),.round-btn.muted:hover:not(:disabled){background:var(--divider)}.btn-destructive:hover:not(:disabled),.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 16%,transparent)}.bubble-menu-open:hover{opacity:1}}.btn-primary:active:not(:disabled),.btn-secondary:active:not(:disabled),.btn-destructive:active:not(:disabled),.btn-danger:active:not(:disabled),.round-btn:active:not(:disabled),.fab:active,.tab-item:active,.rail-item:active{transform:scale(.96);transition-property:transform,background-color;transition-duration:var(--t-press);transition-timing-function:var(--ease-out)}.btn-primary:active:not(:disabled),.round-btn:active:not(:disabled):not(.danger),.fab:active{background-color:var(--primary-pressed)}.btn-secondary:active:not(:disabled){background-color:var(--divider)}.tab-item:active,.rail-item:active{background-color:var(--row-press)}.no-transition,.no-transition *,.no-transition *:before,.no-transition *:after{transition:none!important;animation-duration:0s!important}@keyframes sheet-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes icon-crossfade{0%{opacity:0;transform:scale(.25)}to{opacity:1;transform:scale(1)}}@keyframes msg-appear{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes view-slide-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@media (prefers-reduced-motion: reduce){.btn-primary:active:not(:disabled),.btn-secondary:active:not(:disabled),.btn-destructive:active:not(:disabled),.btn-danger:active:not(:disabled),.round-btn:active:not(:disabled),.fab:active,.icon-btn:active,.tab-item:active,.rail-item:active,.seg-btn:active{transform:none}.modal-card,.composer-actions,.play-btn .icon-swap,.msg-row.appear .bubble,.chat-pane.slide-in{animation-name:fade-in}*{transition-duration:.01ms!important}.spinner,.typing-dot,.rec-dot{animation-duration:.8s!important}}.vfill{display:flex;flex-direction:column;height:100%;min-height:0}html,body{overflow:hidden;height:100%}.flex1{flex:1;min-height:0;min-width:0}.row{display:flex;align-items:center;gap:var(--sp-3)}.stack{display:flex;flex-direction:column;gap:var(--sp-3)}.stack-sm{display:flex;flex-direction:column;gap:var(--sp-2)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.display{font-size:var(--fs-display);font-weight:700;letter-spacing:-.02em;line-height:1.2;margin:0}.title-text{font-size:var(--fs-title);font-weight:600}.body-strong{font-size:var(--fs-body);font-weight:600;line-height:1.35}.secondary-text{font-size:var(--fs-secondary);color:var(--text-secondary);line-height:1.4}.caption{font-size:var(--fs-caption);color:var(--text-secondary);line-height:1.4}.micro{font-size:var(--fs-micro);font-weight:600}.tabnum{font-variant-numeric:tabular-nums}.text-secondary{color:var(--text-secondary)}.text-error{color:var(--danger);font-size:var(--fs-caption);line-height:1.4;text-align:center;white-space:pre-wrap}.text-danger{color:var(--danger)}.btn-primary{width:100%;height:var(--field-h);border-radius:var(--r-sm);background:var(--primary-fill);color:var(--on-primary);font-size:var(--fs-body);font-weight:600}.btn-primary:disabled{opacity:.4;cursor:default}.btn-secondary{min-height:40px;padding:8px 16px;border-radius:var(--r-sm);background:var(--surface-muted);color:var(--text);font-size:var(--fs-body);font-weight:600}.btn-secondary:disabled{opacity:.4;cursor:default}.btn-ghost{min-height:40px;padding:8px 16px;border-radius:var(--r-sm);background:transparent;color:var(--text-secondary);font-size:var(--fs-body);font-weight:600}.btn-destructive{min-height:var(--field-h);padding:10px 16px;border-radius:var(--r-sm);background:var(--danger-tint);color:var(--danger);font-size:var(--fs-body);font-weight:600}.btn-destructive:disabled{opacity:.4;cursor:default}.btn-destructive.btn-block{width:100%}.btn-danger{min-height:var(--field-h);padding:10px 16px;border:none;border-radius:var(--r-sm);background:var(--danger-tint);color:var(--danger);font-size:var(--fs-body);font-weight:600;cursor:pointer}.btn-danger:disabled{opacity:.4;cursor:default}.icon-btn{width:var(--pole);height:var(--pole);border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center;color:var(--text);flex-shrink:0}.icon-btn:active:not(:disabled),.btn-ghost:active:not(:disabled),.seg-btn:active,.chip-ghost:active{background-color:var(--row-press)}.icon-btn.muted{color:var(--text-secondary)}.icon-btn:disabled{opacity:.4;cursor:default}.round-btn{width:var(--pole);height:var(--pole);border-radius:50%;background:var(--primary-fill);color:var(--on-primary);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.round-btn.compact{width:var(--send-pole);height:var(--send-pole)}.round-btn:disabled{opacity:.4;cursor:default}.round-btn.muted{background:var(--surface-muted);color:var(--primary)}.round-btn.danger{background:var(--danger);color:var(--on-primary)}.fab{position:absolute;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));width:var(--fab-s);height:var(--fab-s);border-radius:50%;background:var(--primary-fill);color:var(--on-primary);display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--bubble-shadow),var(--shadow-float);z-index:40}.fab.pane-mobile{bottom:16px}.icon-square{width:var(--icon-square-s);height:var(--icon-square-s);border-radius:var(--r-md);background:var(--icon-square-bg);color:var(--primary);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.field{display:block;width:100%;height:var(--field-h);padding:0 16px;border-radius:var(--r-sm);background:var(--surface-muted);border:1px solid transparent;font-size:var(--fs-body);color:var(--text)}.field:focus{border-color:var(--primary)}textarea.field{height:auto;min-height:var(--field-h);padding:12px 16px}.field-wrap{position:relative}.field-wrap .field{padding-right:52px}.field-affix{position:absolute;right:2px;top:50%;transform:translateY(-50%);width:var(--pole);height:var(--pole);display:inline-flex;align-items:center;justify-content:center;color:var(--text-secondary);border-radius:var(--r-sm);user-select:none;-webkit-user-select:none;touch-action:manipulation}.field-affix:active{background:var(--divider)}.field.is-readonly{color:var(--text-secondary);display:flex;align-items:center}.field-row{display:flex;gap:var(--sp-2);align-items:center}.field-row .field{flex:1;min-width:0}.search-wrap{position:relative;flex:1;min-width:0}.search-wrap .search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-placeholder);pointer-events:none;display:inline-flex}.search-field{height:var(--search-h);width:100%;border-radius:var(--r-sm);background:var(--surface-muted);padding:0 12px 0 40px;font-size:var(--fs-body);color:var(--text)}.search-field:focus{outline:2px solid var(--primary);outline-offset:-2px}.segmented{display:flex;padding:2px;border-radius:var(--r-pill);background:var(--surface-muted);gap:2px}.segmented.scroll-x{flex-wrap:wrap}.seg-btn{flex:1;min-width:max-content;height:var(--pole);padding:0 14px;border-radius:var(--r-pill);font-size:var(--fs-secondary);font-weight:500;color:var(--text-secondary);white-space:nowrap}.seg-btn.active{background:var(--surface);color:var(--text);font-size:var(--fs-body);font-weight:600;box-shadow:var(--shadow-segment)}.app-bar{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--appbar-h);padding:calc(10px + env(safe-area-inset-top)) var(--sp-4) 10px;background:var(--background);border-bottom:1px solid var(--divider);flex-shrink:0}.app-bar-title{font-size:var(--fs-title);font-weight:600;margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rail{width:64px;border-right:1px solid var(--divider);background:var(--background);display:flex;flex-direction:column;align-items:center;padding:14px 0;padding-top:calc(14px + env(safe-area-inset-top));gap:6px;flex-shrink:0}.rail-item{width:var(--pole);height:var(--pole);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;position:relative;color:var(--text-secondary)}.rail-item.active{background:var(--surface-muted);color:var(--primary)}.tab-bar{display:flex;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 1px);border-top:1px solid var(--divider);background:var(--background);padding-bottom:env(safe-area-inset-bottom);flex-shrink:0}.tab-item{flex:1;height:var(--tabbar-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:var(--fs-micro);font-weight:600;color:var(--text-secondary);position:relative}.tab-item.active{color:var(--primary)}.tab-icon{line-height:1;position:relative;display:inline-flex;align-items:center;justify-content:center}.pill-count{background:var(--primary-fill);color:var(--on-primary);font-size:var(--fs-caption);font-weight:600;font-variant-numeric:tabular-nums;min-width:var(--badge-s);min-height:var(--badge-s);padding:0 5px;border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center}.pill-count.dot{position:absolute;top:-2px;right:-14px;font-size:10px;padding:0 4px;min-width:18px;min-height:18px}.chat-row{display:flex;align-items:center;gap:var(--sp-3);height:var(--row-h);padding:0 var(--sp-4);cursor:pointer;background-color:transparent}.chat-row.active{background-color:var(--primary-tint)}.chat-row.active .chat-row-name{color:var(--primary)}.chat-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.chat-row-top{display:flex;align-items:baseline;gap:var(--sp-2)}.chat-row-name{font-size:var(--fs-list-name);font-weight:600;line-height:1.35}.chat-row-bottom{display:flex;align-items:center;gap:5px}.chat-row-preview{font-size:var(--fs-preview);color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.chat-row-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0;align-self:stretch;justify-content:center}.row-glyph{display:inline-flex;align-items:center;color:var(--text-placeholder);flex-shrink:0}.list-time{font-size:var(--fs-time);font-weight:500;color:var(--text-placeholder);flex-shrink:0;font-variant-numeric:tabular-nums}.status-icon{display:inline-flex;align-items:center;color:var(--text-secondary);flex-shrink:0;user-select:none}.status-icon.read{color:var(--primary)}.card{background:var(--surface);border-radius:var(--r-sm);overflow:hidden}.card-pad{padding:var(--sp-4)}.settings-section{display:flex;flex-direction:column;gap:6px}.settings-scroll{background:var(--chat-canvas)}.settings-scroll>*{flex-shrink:0}.section-title{font-size:var(--fs-secondary);font-weight:600;color:var(--text-secondary);padding:0 var(--sp-2)}.menu-row{width:100%;display:flex;align-items:center;gap:var(--sp-3);min-height:var(--settings-row-h);padding:8px var(--sp-4);text-align:left;background:transparent;color:var(--text);font-size:var(--fs-body);position:relative;cursor:pointer}.menu-row+.menu-row:before,.menu-row+.menu-sep:before{content:"";position:absolute;top:0;left:40px;right:0;height:1px;background:var(--divider)}.menu-row .menu-label{flex:1;min-width:0}.menu-lead{width:24px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--text-secondary)}.menu-lead.danger{color:var(--danger)}.menu-chevron{color:var(--text-placeholder);flex-shrink:0;display:inline-flex;align-items:center}.menu-value{font-size:var(--fs-secondary);color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:45%}.menu-note{padding:10px var(--sp-4) 13px;font-size:var(--fs-secondary);line-height:1.4;color:var(--danger)}.profile-header{display:flex;align-items:center;gap:var(--sp-4);width:100%;text-align:left;padding:12px var(--sp-4);background:transparent;cursor:pointer}.profile-header .profile-name{font-size:var(--fs-title);font-weight:600;line-height:1.3}.danger-panel{border:1px solid var(--danger);border-radius:var(--r-sm);padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.switch{width:51px;height:31px;border-radius:var(--r-pill);background:var(--surface-muted);position:relative;flex-shrink:0;transition:background-color var(--t-hover) var(--ease-out)}[data-theme=dark] .switch:not(.on){background:var(--divider)}@media (prefers-color-scheme: dark){:root:not([data-theme]) .switch:not(.on){background:var(--divider)}}.switch-knob{position:absolute;top:3px;left:3px;width:25px;height:25px;border-radius:50%;background:var(--on-primary);box-shadow:0 1px 3px #10151b40;transition:transform var(--t-press) var(--ease-out)}.switch.on{background:var(--primary-fill)}.switch.on .switch-knob{transform:translate(20px)}.avatar{width:var(--av-size, var(--avatar-list));height:var(--av-size, var(--avatar-list));border-radius:50%;position:relative;display:flex;align-items:center;justify-content:center;color:var(--on-primary);font-size:18px;font-weight:600;flex-shrink:0;user-select:none;overflow:hidden}.avatar>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.presence-dot{position:absolute;right:0;bottom:0;width:var(--presence-s);height:var(--presence-s);border-radius:50%;background:var(--presence);box-shadow:0 0 0 2px var(--ring)}.chat-header{display:flex;align-items:center;gap:10px;min-height:var(--appbar-h);padding:calc(5px + env(safe-area-inset-top)) var(--sp-2) 5px var(--sp-4);background:var(--background);border-bottom:1px solid var(--divider);flex-shrink:0}.chat-header-info{flex:1;min-width:0;display:flex;flex-direction:column}.chat-header-name{font-size:var(--fs-body);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-header-status{font-size:var(--fs-caption);color:var(--text-placeholder);display:flex;align-items:center;gap:6px;min-height:16px}.chat-header-status.online{color:var(--presence)}.typing-row{display:flex;align-items:center;gap:6px;font-size:var(--fs-caption);color:var(--text-secondary);padding:2px var(--sp-4)}.typing-dots{display:inline-flex;gap:3px;align-items:center}.typing-dot{width:5px;height:5px;border-radius:50%;background:var(--text-secondary);animation:typingBlink 1.2s infinite}.typing-dot:nth-child(2){animation-delay:.15s}.typing-dot:nth-child(3){animation-delay:.3s}@keyframes typingBlink{0%,80%,to{opacity:.3}40%{opacity:1}}.msg-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:12px var(--sp-3) 4px;background:var(--chat-canvas)}.msg-list{display:flex;flex-direction:column;gap:8px;max-width:62ch;margin:0 auto;width:100%}.msg-list>.date-pill{margin-top:6px}.msg-row{display:flex}.msg-row.own{justify-content:flex-end}.msg-row.other{justify-content:flex-start}.msg-row.tight{margin-top:-4px}.msg-row.appear .bubble{animation:msg-appear .15s var(--ease-out)}.pending-col{display:flex;flex-direction:column;align-items:flex-end;min-width:0}.pending-bubble{opacity:.75}.pending-status{display:flex;align-items:center;gap:8px;margin-top:2px;padding-right:4px;font-size:var(--fs-caption);color:var(--text-secondary)}.pending-status.is-failed{color:var(--danger)}.pending-retry{min-height:var(--tap);padding:6px 12px;font-size:var(--fs-caption)}.date-pill{align-self:center;background:var(--pill-bg);color:var(--text-secondary);font-size:var(--fs-caption);border-radius:var(--r-pill);padding:4px 12px;margin:var(--sp-3) auto;text-align:center;max-width:100%}.bubble{position:relative;max-width:76%;min-width:0;overflow:hidden;border-radius:var(--r-bubble);padding:8px 10px;user-select:none}.bubble.own{background:var(--primary-fill);color:var(--on-primary)}.bubble.other{background:var(--surface);color:var(--text);box-shadow:inset 0 0 0 1px var(--divider)}.bubble.own.tail{border-bottom-right-radius:var(--r-tail)}.bubble.other.tail{border-bottom-left-radius:var(--r-tail)}.bubble.media{padding:0;overflow:hidden}.bubble-sender{font-size:var(--fs-caption);font-weight:600;margin-bottom:2px;color:var(--avatar-0)}.bubble-forwarded{font-size:var(--fs-caption);font-weight:600;margin-bottom:2px;opacity:.85}.bubble-text{font-size:var(--fs-body);line-height:1.4;white-space:pre-wrap;word-break:break-word}.bubble-meta{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin:2px 0 -2px}.bubble.own .bubble-meta{color:var(--on-primary)}.bubble.other .bubble-meta{color:var(--text-placeholder)}.bubble-time{font-size:var(--fs-time);font-weight:500;font-variant-numeric:tabular-nums}.bubble.own .bubble-time{opacity:.75}.bubble.own .bubble-meta:has(.status-icon.read) .bubble-time{opacity:1}.bubble-media-slot{position:relative}.bubble-media-slot>img{display:block}.bubble-meta.overlay{position:absolute;right:0;bottom:0;left:0;margin:0;padding:14px 10px 8px;border-radius:0;background:linear-gradient(to top,#080c12bf,#080c1200);color:#fff;pointer-events:none}.bubble-meta.overlay .bubble-time,.bubble-meta.overlay .status-icon{color:#ffffffeb;opacity:1}.reply-quote{display:flex;gap:6px;margin-bottom:4px;min-width:0}.reply-bar{width:3px;min-height:16px;border-radius:var(--r-pill);background:var(--primary);flex-shrink:0}.bubble.own .reply-bar{background:#ffffffeb}.reply-body{min-width:0}.reply-name{font-size:var(--fs-caption);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bubble.other .reply-name{color:var(--primary)}.reply-text{font-size:var(--fs-secondary);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bubble.own .reply-text{color:var(--on-primary);opacity:.85}.msg-image{max-width:var(--media-max);max-height:320px;border-radius:var(--r-md);display:block;cursor:zoom-in}.bubble.media .msg-image,.bubble.media .video-tile{border-radius:var(--r-media-inner)}.video-tile.bare{width:var(--media-max);height:160px}.msg-image-placeholder{width:240px;height:160px;border-radius:var(--r-md);background:var(--surface-muted);display:flex;align-items:center;justify-content:center}.video-tile{width:220px;height:140px;border-radius:var(--r-md);background:var(--surface-muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer;color:var(--text-secondary)}.video-tile-icon{display:inline-flex}.video-tile-label{font-size:var(--fs-secondary);font-weight:500;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-card{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2);border-radius:var(--r-sm);background:var(--surface-muted);text-align:left;color:var(--text);max-width:100%}.file-card .icon-square{width:var(--pole);height:var(--pole)}.bubble.own .file-card{background:transparent;color:var(--on-primary)}.bubble.own .file-card .icon-square{background:#fff3;color:var(--on-primary)}.bubble.other .file-card .icon-square{background:var(--icon-square-bg);color:var(--primary)}.file-card-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.file-card-name{font-size:var(--fs-secondary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.file-card-caption{font-size:var(--fs-caption);opacity:.75;flex-shrink:0}.voice-row{display:flex;align-items:center;gap:10px;min-width:180px}.play-btn{width:36px;height:36px;border-radius:50%;background:var(--primary-fill);color:var(--on-primary);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background-color var(--t-hover) var(--ease-out)}.play-btn:disabled{opacity:.5}.bubble.own .play-btn{background:var(--on-primary);color:var(--primary-fill)}.play-btn .icon-swap{animation:icon-crossfade var(--t-crossfade) var(--ease-out)}.wave{display:inline-flex;align-items:center;gap:2px;height:16px}.wave i{width:3px;border-radius:var(--r-pill);background:currentColor;opacity:.35}.wave i:nth-child(28n+1){height:4px}.wave i:nth-child(28n+2){height:7px}.wave i:nth-child(28n+3){height:5px}.wave i:nth-child(28n+4){height:8px}.wave i:nth-child(28n+5){height:3px}.wave i:nth-child(28n+6){height:6px}.wave i:nth-child(28n+7){height:8px}.wave i:nth-child(28n+8){height:4px}.wave i:nth-child(28n+9){height:7px}.wave i:nth-child(28n+10){height:5px}.wave i:nth-child(28n+11){height:3px}.wave i:nth-child(28n+12){height:6px}.wave i:nth-child(28n+13){height:8px}.wave i:nth-child(28n+14){height:4px}.wave i:nth-child(28n+15){height:7px}.wave i:nth-child(28n+16){height:3px}.wave i:nth-child(28n+17){height:6px}.wave i:nth-child(28n+18){height:8px}.wave i:nth-child(28n+19){height:4px}.wave i:nth-child(28n+20){height:7px}.wave i:nth-child(28n+21){height:5px}.wave i:nth-child(28n+22){height:3px}.wave i:nth-child(28n+23){height:6px}.wave i:nth-child(28n+24){height:8px}.wave i:nth-child(28n+25){height:4px}.wave i:nth-child(28n+26){height:7px}.wave i:nth-child(28n+27){height:5px}.wave i:nth-child(28n+28){height:3px}.wave i.played{opacity:.9}.voice-duration{font-size:var(--fs-caption);font-variant-numeric:tabular-nums;white-space:nowrap}.bubble-menu-item{display:flex;align-items:center;gap:var(--sp-2);width:100%;min-height:var(--pole);padding:10px 14px;text-align:left;font-size:var(--fs-secondary);color:var(--text);background:none}.bubble-menu-item.danger{color:var(--danger)}.bubble-menu-item:disabled{opacity:.45;cursor:default}.bubble-menu-item .menu-ico{width:20px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.ico-inline{display:inline-flex;align-items:center;vertical-align:-2px}.popup{background:var(--surface);border:1px solid var(--divider);border-radius:var(--r-sm);box-shadow:var(--shadow-float);overflow:hidden}.composer{display:flex;align-items:flex-end;gap:var(--sp-2);padding:8px var(--sp-3);padding-bottom:calc(8px + env(safe-area-inset-bottom));border-top:1px solid var(--divider);background:var(--background);flex-shrink:0}.composer-pill{flex:1;min-width:0;display:flex;align-items:flex-end;gap:4px;min-height:44px;max-height:128px;background:var(--surface);border:1px solid var(--divider);border-radius:calc(var(--pole) / 2);padding:0 4px 0 6px}.composer-pill:focus-within{border-color:var(--primary)}.composer-attach{width:44px;height:44px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--text-secondary);flex-shrink:0}.composer-attach:active{background-color:var(--row-press)}.composer-input{flex:1;min-width:0;min-height:40px;max-height:120px;resize:none;background:transparent;border-radius:0;padding:9px 8px;font-size:var(--fs-body);line-height:21px;color:var(--text)}.composer-input:focus{outline:none}.composer-editable{white-space:pre-wrap;overflow-y:auto;caret-color:var(--text)}.composer-editable:not(.has-content):before{content:attr(data-placeholder);color:var(--text-placeholder);pointer-events:none}.composer-actions{animation:icon-crossfade var(--t-crossfade) var(--ease-out);flex-shrink:0}.recording-bar{flex:1;display:flex;align-items:center;gap:10px;min-height:var(--pole);padding:0 var(--sp-2);font-size:var(--fs-body)}.rec-dot{width:10px;height:10px;border-radius:50%;background:var(--danger);flex-shrink:0;animation:voicePulse 1s infinite}@keyframes voicePulse{0%,to{opacity:1}50%{opacity:.3}}.rec-timer{font-variant-numeric:tabular-nums}.reply-strip{display:flex;align-items:center;gap:6px;margin:0 var(--sp-3) 6px;padding:6px 10px;background:var(--surface);border:1px solid var(--divider);border-radius:var(--r-sm);font-size:var(--fs-secondary)}.reply-strip-bar{width:3px;min-height:16px;border-radius:var(--r-pill);background:var(--primary);flex-shrink:0}.reply-strip-body{flex:1;min-width:0}.reply-strip-name{font-size:var(--fs-micro);font-weight:600;color:var(--primary)}.reply-strip-text{font-size:var(--fs-secondary);color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attach-list{display:flex;flex-direction:column;padding:8px 0}.attach-row{position:relative;display:flex;align-items:center;gap:var(--sp-3);width:100%;height:52px;padding:0 var(--sp-3);border-radius:var(--r-sm);background:transparent;color:var(--text);font-size:var(--fs-body);text-align:left;cursor:pointer}.attach-row .icon-square{width:28px;height:28px;border-radius:var(--r-md);color:var(--primary);flex-shrink:0}.attach-row .icon-square svg{color:var(--primary)}.attach-row-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attach-row+.attach-row:before{content:"";position:absolute;top:0;left:52px;right:0;height:1px;background:var(--divider)}.sheet-list{max-height:320px;overflow-y:auto;overscroll-behavior:contain;border:1px solid var(--divider);border-radius:var(--r-sm)}.sheet-list-empty{padding:var(--sp-4);text-align:center;font-size:var(--fs-secondary);color:var(--text-secondary)}.select-row{display:flex;width:100%;align-items:center;gap:10px;min-height:var(--pole);padding:10px 14px;text-align:left;background:none;color:var(--text)}.select-row+.select-row{border-top:1px solid var(--divider)}.select-row .checkbox{color:var(--primary);flex-shrink:0;display:inline-flex;align-items:center}.select-row:disabled{opacity:.5}.role-badge{font-size:var(--fs-micro);font-weight:600;color:var(--primary);background:var(--icon-square-bg);border-radius:var(--r-pill);padding:2px 8px;flex-shrink:0}.role-badge.owner{color:var(--role-owner);background:color-mix(in srgb,var(--role-owner) 14%,transparent)}.role-badge.moderator{color:var(--role-moderator);background:color-mix(in srgb,var(--role-moderator) 14%,transparent)}.badge-pill{font-size:var(--fs-micro);font-weight:600;color:var(--accent-on-tint);background:var(--icon-square-bg);border-radius:var(--r-pill);padding:2px 8px;flex-shrink:0}.chip-ghost{font-size:var(--fs-secondary);padding:8px 14px;border-radius:var(--r-sm);background:var(--surface-muted);color:var(--text-secondary);flex-shrink:0;min-height:36px}.divider-row+.divider-row{border-top:1px solid var(--divider)}.modal-overlay{position:fixed;inset:0;background:var(--scrim);display:flex;align-items:center;justify-content:center;z-index:100;padding:16px;animation:fade-in var(--t-sheet-out) var(--ease-out)}.modal-card{background:var(--surface);border-radius:var(--r-modal);box-shadow:var(--shadow-float);width:100%;max-width:480px;max-height:90vh;overflow-y:auto;overscroll-behavior:contain;border:1px solid var(--divider);animation:sheet-in var(--t-sheet-in) var(--ease-out)}.modal-grabber{display:none;width:36px;height:4px;border-radius:var(--r-pill);background:var(--surface-muted);margin:8px auto 0}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:12px var(--sp-2) 12px var(--sp-4);border-bottom:1px solid var(--divider)}.modal-title{font-size:var(--fs-title);font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-body{padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3)}.confirm-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:var(--sp-4)}@media (max-width: 767px){.modal-overlay{align-items:flex-end;padding:0}.modal-card{max-width:none;max-height:calc(100dvh - 8px);border-radius:var(--r-lg) var(--r-lg) 0 0;border:none;padding-bottom:env(safe-area-inset-bottom)}.modal-grabber{display:block}.confirm-actions{flex-direction:column-reverse}.confirm-actions>button{width:100%}}.modal-overlay--sheet{align-items:flex-end;padding:0}.modal-card--sheet{max-width:none;width:100%;max-height:calc(100dvh - 8px);border-radius:var(--r-lg) var(--r-lg) 0 0;border:none;padding-bottom:env(safe-area-inset-bottom);overscroll-behavior:contain}.modal-card--settings{background:var(--chat-canvas)}.modal-card--settings .modal-header{background:var(--surface)}.modal-card--settings .card .divider-row{padding-left:16px;padding-right:16px}.modal-grabber.is-visible{display:block}.auth-screen{height:100%;height:var(--shell-h, 100dvh);overflow-y:auto;-webkit-overflow-scrolling:touch;background:var(--background)}html.kb-open .auth-screen{height:var(--vv-h, 100%);transform:translateY(var(--vv-top, 0px))}.auth-inner{max-width:420px;margin:0 auto;padding:calc(48px + env(safe-area-inset-top)) var(--sp-4) calc(32px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:var(--sp-4)}.auth-hero{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}.logo-icon{width:64px;height:64px;border-radius:var(--r-sm);display:block;object-fit:cover;user-select:none}.link-btn{color:var(--primary);font-weight:600;font-size:var(--fs-secondary);min-height:var(--pole)}.ghost-btn{color:var(--text-secondary);font-size:var(--fs-caption);min-height:var(--pole)}.top-pill{position:fixed;z-index:80;top:calc(8px + env(safe-area-inset-top));left:50%;transform:translate(-50%);background:var(--pill-bg);border-radius:var(--r-pill);padding:6px 14px;font-size:var(--fs-caption);color:var(--text-secondary);box-shadow:var(--shadow-float);max-width:calc(100vw - 32px);text-align:center}.toast-card.above-tabs{bottom:calc(72px + env(safe-area-inset-bottom))}html.kb-open .tab-bar{display:none}html.kb-open .composer{padding-bottom:8px}html.kb-open .auth-screen{padding-bottom:0}.toast-card{position:fixed;bottom:calc(16px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);background:var(--surface);border:1px solid var(--divider);border-radius:var(--r-md);padding:12px var(--sp-4);display:flex;align-items:center;gap:12px;z-index:60;box-shadow:var(--shadow-float);max-width:min(92vw,480px)}.toast-card .toast-text{flex:1;font-size:var(--fs-secondary);line-height:1.4}.busy-overlay{position:fixed;inset:0;background:var(--scrim);z-index:300;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:#fff;font-size:var(--fs-body)}.lightbox{position:fixed;inset:0;background:var(--scrim-heavy);z-index:300;display:flex;align-items:center;justify-content:center;cursor:zoom-out;animation:fade-in var(--t-sheet-out) var(--ease-out)}.lightbox img,.lightbox video{max-width:96vw;max-height:96vh;cursor:default}.lightbox .lightbox-close{position:absolute;top:calc(12px + env(safe-area-inset-top));right:16px;color:#fff;display:inline-flex;align-items:center;justify-content:center;width:var(--pole);height:var(--pole);border-radius:var(--r-pill)}.lightbox-note{color:#fff;font-size:var(--fs-secondary)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:var(--sp-4);text-align:center;height:100%}.empty-art{width:120px;height:120px;display:flex;align-items:center;justify-content:center}.empty-art img{width:120px;height:120px;object-fit:contain}.empty-title{font-size:var(--fs-title);font-weight:600}.center-spinner{display:flex;justify-content:center;padding:32px}.spinner{width:28px;height:28px;border:3px solid var(--divider);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}.spinner.small{width:16px;height:16px;border-width:2px}.spinner.light{border-color:#ffffff4d;border-top-color:#fff}@keyframes spin{to{transform:rotate(360deg)}}.shell{height:100%;height:var(--shell-h, 100dvh);display:flex;background:var(--background)}html.kb-open .shell{height:var(--vv-h, 100%);transform:translateY(var(--vv-top, 0px))}.content-main{display:flex;flex:1;min-width:0;height:100%}.sidebar-pane{width:340px;min-width:300px;border-right:1px solid var(--divider);height:100%}.sidebar-pane.full-pane{width:100%;min-width:0;border-right:none}.chat-pane{flex:1;height:100%;min-width:0;background:var(--chat-canvas)}.chat-pane.slide-in{animation:view-slide-in var(--t-view-slide) var(--ease-out)}.hidden-pane{display:none}.pane-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.chat-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px;color:var(--text-secondary)}.contact-row{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--contact-row-h);width:100%;padding:8px var(--sp-4);text-align:left;background:transparent;color:var(--text);cursor:pointer;transition:background-color var(--t-row-press-out) var(--ease-out)}.contact-row:active{background-color:var(--row-press);transition-duration:var(--t-press)}@media (hover: hover){.contact-row:hover{background-color:var(--surface-muted)}}.row-actions{display:flex;gap:6px;flex-shrink:0}.bubble.own .status-icon{color:#ffffffbf}.bubble.own .status-icon.read{color:var(--on-primary)}.bubble-menu-open{display:none;position:absolute;top:3px;right:3px;width:28px;height:28px;padding:0;border-radius:50%;align-items:center;justify-content:center;background:transparent;opacity:.45;cursor:pointer;z-index:2;transition:opacity var(--t-hover) var(--ease-out),background-color var(--t-hover) var(--ease-out)}.bubble.own .bubble-menu-open{color:var(--on-primary)}.bubble.other .bubble-menu-open{color:var(--text-secondary)}@media (pointer: fine){.bubble-menu-open{display:inline-flex}.bubble-menu-open:active{background-color:var(--row-press)}}
