.toast{position:fixed;left:50%;bottom:calc(var(--space-5) + var(--safe-bottom));transform:translate(-50%);background:var(--color-text);color:var(--color-bg);padding:var(--space-3) var(--space-4);border-radius:var(--radius-pill);font-size:var(--font-small);max-width:80vw;box-shadow:var(--shadow-card);z-index:1000}.connection-banner{position:sticky;top:0;z-index:100;background:var(--color-text-muted);color:var(--color-bg);font-size:var(--font-small);text-align:center;padding:5px var(--space-4);transition:opacity var(--transition-fast)}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%}body{font-family:-apple-system,SF Pro Text,system-ui,sans-serif;font-size:var(--font-base);line-height:var(--line-body);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button{font-family:inherit;font-size:inherit;cursor:pointer}input,textarea,button{font-family:inherit;color:inherit}button,a,[role=button]{-webkit-tap-highlight-color:transparent}a{color:var(--color-accent)}.back-btn{display:flex;align-items:center;justify-content:center;width:var(--tap-target);height:var(--tap-target);background:none;border:none;cursor:pointer;color:var(--color-brand-text-dim);padding:0;flex-shrink:0}.back-btn svg{width:var(--icon-md);height:var(--icon-md)}.back-btn:active{opacity:.65;transition:opacity var(--transition-fast)}.back-btn--neutral{color:var(--color-accent)}.error-boundary-fallback{padding:var(--space-6);text-align:center;font-family:system-ui,sans-serif}.error-boundary-fallback__message{color:var(--color-text-muted);font-size:var(--text-sm)}.auth-shell{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:calc(var(--space-5) + var(--safe-top)) var(--space-5) calc(var(--space-5) + var(--safe-bottom));background-color:var(--color-bg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='600'%3E%3Cpath d='M0 300 Q150 250 300 300 Q450 350 600 300 M0 340 Q150 290 300 340 Q450 390 600 340 M0 380 Q150 330 300 380 Q450 430 600 380 M0 420 Q150 370 300 420 Q450 470 600 420 M0 260 Q150 210 300 260 Q450 310 600 260 M0 220 Q150 170 300 220 Q450 270 600 220 M0 180 Q150 130 300 180 Q450 230 600 180 M0 460 Q150 410 300 460 Q450 510 600 460 M0 500 Q150 450 300 500 Q450 550 600 500' stroke='currentColor' stroke-width='1' fill='none' opacity='0.04'/%3E%3C/svg%3E");background-size:600px 600px;background-position:center}.auth-card{width:100%;max-width:380px;background:var(--color-bg-elev);border-radius:var(--radius-md);padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4);border-top:3px solid var(--color-brand);box-shadow:0 8px 32px #0000002e,0 0 0 1px #ffffff0f}@media (prefers-color-scheme: dark){.auth-card{background:#ffffff0a;box-shadow:0 8px 32px #0000004d,0 0 0 1px #ffffff0f}}.auth-card h1{margin:0;font-size:var(--text-lg);font-weight:600;color:var(--color-text)}.auth-card p{margin:0;color:var(--color-text);line-height:var(--line-body)}.auth-card label{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-small);color:var(--color-text)}.auth-card input[type=text],.auth-card input[type=tel]{height:var(--tap-target);border:1px solid var(--color-divider);border-radius:var(--radius-sm);padding:0 var(--space-3);font-size:var(--font-base);background:var(--color-bg-elev);color:var(--color-text)}.auth-card input:focus{outline:2px solid var(--color-accent);outline-offset:-2px}.auth-card button.primary{height:var(--tap-target);border:none;border-radius:var(--radius-sm);background:var(--color-accent);color:#fff;font-weight:600}.auth-card button.primary:disabled{opacity:.5;cursor:not-allowed}.auth-card .field-error{color:var(--color-error);font-size:var(--font-small)}.auth-card .link-button{background:none;border:none;padding:0;color:var(--color-accent);font-size:var(--font-small);text-align:center;cursor:pointer}.auth-card .link-button:disabled{color:var(--color-text-faint);cursor:default}.phone-entry__outer{display:flex;flex-direction:column;align-items:center;width:100%;max-width:480px;padding-top:10vh}.auth-logo{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);margin-bottom:var(--space-5)}.auth-logo__icon{width:96px;height:96px;border-radius:22px;display:block}.auth-logo__name{font-size:2rem;font-weight:800;color:var(--color-text);letter-spacing:-.04em}.phone-entry__form{width:100%}.phone-entry__disclaimer{font-size:var(--font-tiny);color:var(--color-text-faint);text-align:center;margin:0}.dev-login{margin-top:var(--space-5);padding:var(--space-3) var(--space-4);background:#fadc502e;border-radius:var(--radius-md);display:flex;flex-direction:column;align-items:center;gap:var(--space-2);width:100%;max-width:380px;box-sizing:border-box}.dev-login__label{font-size:11px;color:#8c6e00b3;font-weight:600;letter-spacing:.4px}.dev-login__row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--space-2);width:100%}.dev-login__btn{background:#785a0014;border:1px solid rgba(120,90,0,.5);border-radius:var(--space-1);color:#644600;font-size:var(--text-base);font-weight:600;cursor:pointer;padding:var(--space-2) var(--space-3);text-align:center;width:100%}.dev-login__btn:active{background:#785a002e;transition:background var(--transition-fast)}.dev-login__btn:disabled{opacity:.5;cursor:default}.otp-entry .otp-input{text-align:center;letter-spacing:.4em;font-size:var(--text-xl);font-variant-numeric:tabular-nums}.otp-entry .meta-row{display:flex;flex-direction:column;gap:var(--space-2);align-items:center}.avatar{border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--color-brand-text);text-shadow:0 1px 1px var(--color-avatar-text-shadow);flex-shrink:0;-webkit-user-select:none;user-select:none;position:relative}.avatar__online{position:absolute;bottom:0;right:0;width:11px;height:11px;border-radius:50%;background:var(--color-online);border:2px solid var(--color-bg)}.avatar__img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;border-radius:50%}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton{background:linear-gradient(90deg,var(--color-divider) 25%,var(--color-bg-elev) 50%,var(--color-divider) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite linear;border-radius:var(--radius-sm);display:inline-block}.skeleton--circle{border-radius:50%}.skeleton-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4)}.skeleton-row__body{flex:1;display:flex;flex-direction:column;gap:var(--space-1)}.skeleton-bubble-row{display:flex;padding:var(--space-1) var(--space-3)}.skeleton-bubble-row.mine{justify-content:flex-end}.skeleton-bubble{height:32px;border-radius:var(--bubble-radius)}.skeleton--avatar-list{width:var(--avatar-md);height:var(--avatar-md)}.skeleton--line-name{width:40%;height:var(--text-sm)}.skeleton--line-preview{width:70%;height:var(--text-xs)}.push-prompt{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-bg-elev);border-bottom:.5px solid var(--color-divider)}.push-prompt__text{flex:1;font-size:var(--font-small);color:var(--color-text-muted);line-height:1.4}.push-prompt__enable{background:none;border:none;color:var(--color-accent);font-size:var(--font-small);font-weight:600;padding:var(--space-1) var(--space-2);cursor:pointer;white-space:nowrap}.push-prompt__dismiss{background:none;border:none;color:var(--color-text-faint);font-size:var(--font-small);padding:var(--space-1) var(--space-2);cursor:pointer}.conversation-list__title-row{padding:var(--space-4) var(--space-4);padding-top:calc(var(--space-4) + var(--safe-top));display:flex;align-items:center;justify-content:space-between;background:var(--color-brand)}.conversation-list__title{font-size:var(--font-title-sm);font-weight:700;letter-spacing:.4px;color:var(--color-brand-text);line-height:1}.conversation-list__header-actions{display:flex;align-items:center;gap:var(--space-5)}.conversation-list__row{display:flex;align-items:center;gap:var(--space-5);padding:var(--space-4) var(--space-4);cursor:pointer;text-decoration:none;color:inherit;position:relative}.conversation-list__row:active{background:var(--color-bg-elev);transition:background var(--transition-fast)}.conversation-list__row-body{flex:1;min-width:0}.conversation-list__row:not(:last-child):after{content:"";position:absolute;bottom:0;height:.5px;left:calc(var(--space-4) + var(--avatar-md) + var(--space-5));right:var(--space-4);background:var(--color-divider)}.conversation-list__row-top{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-2)}.conversation-list__row-name{font-size:calc(var(--font-ui-lg) * var(--user-font-scale));font-weight:600;letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conversation-list__row-time{font-size:var(--font-small);color:var(--color-text-muted);flex-shrink:0;font-variant-numeric:tabular-nums}.conversation-list__empty{flex:1;display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);font-size:var(--font-small);padding:var(--space-5);text-align:center}.unread-badge{background:var(--color-accent);color:var(--color-brand-text);font-size:11px;font-weight:600;border-radius:var(--radius-pill);min-width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;padding:0 var(--space-1);flex-shrink:0}.conversation-list__row-preview{font-size:calc(var(--font-small) * var(--user-font-scale));color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.conversation-list__row-preview--unread{color:var(--color-text);font-weight:500}.conversation-list__row-time--unread{color:var(--color-accent);font-weight:600}.conversation-list__row-bottom{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);margin-top:2px}.conversation-list__settings-gear{display:flex;align-items:center;justify-content:center;width:44px;height:44px;background:none;border:none;color:var(--color-brand-text-dim);font-size:22px;cursor:pointer;padding:0}.conversation-list__settings-gear:active{opacity:.65;transition:opacity var(--transition-fast)}.conversation-list__new-link{color:var(--color-brand-text-dim);text-decoration:none;display:flex;align-items:center}.conversation-list__new-link:active{opacity:.65;transition:opacity var(--transition-fast)}.avatar-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:1000;animation:avatarLbFadeIn var(--transition-base) ease-out}@keyframes avatarLbFadeIn{0%{opacity:0}to{opacity:1}}.avatar-lightbox__close{position:fixed;top:var(--space-4);right:var(--space-4);width:var(--tap-target);height:var(--tap-target);display:flex;align-items:center;justify-content:center;background:#ffffff1f;border:none;border-radius:50%;color:#fff;font-size:var(--text-lg);cursor:pointer}.avatar-lightbox__close:active{opacity:.7}.avatar-lightbox__content{display:flex;flex-direction:column;align-items:center;gap:var(--space-5)}.avatar-lightbox__img{width:min(80vw,320px);height:min(80vw,320px);border-radius:50%;object-fit:cover;box-shadow:0 8px 48px #0009}.avatar-lightbox__change{background:#ffffff26;border:1px solid rgba(255,255,255,.3);border-radius:var(--radius-md);color:#fff;font-size:var(--text-sm);font-weight:600;padding:var(--space-2) var(--space-5);cursor:pointer;transition:background var(--transition-fast)}.avatar-lightbox__change:active{background:#ffffff40}.settings .back-btn{margin-top:calc(var(--space-2) + var(--safe-top))}.settings__title-row{padding:var(--space-2) var(--space-4) var(--space-4)}.settings__title{font-size:var(--font-title-lg);font-weight:700;letter-spacing:.4px;color:var(--color-text)}.settings__group{background:var(--color-bg-elev);border-radius:var(--radius-md);margin:0 var(--space-4) 22px;overflow:hidden}.settings__row{display:flex;align-items:center;padding:var(--space-2) var(--space-4);min-height:var(--tap-target);position:relative;font-size:var(--font-ui)}.settings__row:active{background:var(--color-bg-elev);transition:background var(--transition-fast)}.settings__row:not(:last-child):after{content:"";position:absolute;bottom:0;left:var(--space-4);right:0;height:.5px;background:var(--color-divider)}.settings__row-label{flex:1;color:var(--color-text)}.settings__row-value{color:var(--color-text-muted);font-size:var(--font-small);margin-right:var(--space-2)}.settings__logout{width:100%;background:none;border:none;text-align:left;padding:var(--space-2) var(--space-4);min-height:var(--tap-target);font-size:var(--font-ui);font-weight:500;color:var(--color-error);cursor:pointer}.settings__logout:active{opacity:.7;transition:opacity var(--transition-fast)}.settings__section-label{font-size:var(--font-tiny);text-transform:uppercase;letter-spacing:.2px;color:var(--color-text-muted);padding:0 30px var(--space-1)}.settings__bg-swatches{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2);padding:var(--space-3) var(--space-4)}.settings__bg-swatch{display:flex;flex-direction:column;align-items:center;gap:5px;background:none;border:none;padding:0;cursor:pointer}.settings__bg-swatch:active{opacity:.7;transition:opacity var(--transition-fast)}.settings__bg-swatch-tile{width:100%;aspect-ratio:1;border-radius:var(--radius-sm);border:2px solid transparent;overflow:hidden;transition:border-color var(--transition-fast)}.settings__bg-swatch--active .settings__bg-swatch-tile{border-color:var(--color-accent)}.settings__bg-swatch-label{font-size:var(--font-tiny);color:var(--color-text-muted)}.settings__bg-swatch--active .settings__bg-swatch-label{color:var(--color-accent);font-weight:600}.settings__profile-group{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);padding:var(--space-6) var(--space-4);background:var(--color-surface);border-radius:var(--radius-md);margin:0 var(--space-4) 22px}.settings__avatar-btn{background:none;border:none;cursor:pointer;padding:0}.settings__avatar-btn:not(:disabled):active{opacity:.7;transition:opacity var(--transition-fast)}.settings__avatar-btn:disabled{cursor:default;opacity:.6}.settings__profile-name{font-size:1.25rem;font-weight:600;color:var(--color-text)}.settings__profile-phone{font-size:var(--font-ui);color:var(--color-text-muted)}.settings__change-photo{background:none;border:none;color:var(--color-accent);font-size:var(--text-sm);font-weight:500;cursor:pointer;padding:var(--space-1) var(--space-2)}.settings__change-photo:not(:disabled):active{opacity:.65;transition:opacity var(--transition-fast)}.settings__change-photo:disabled{color:var(--color-text-muted)}.settings__file-input{display:none}.settings__name-btn{position:relative;background:none;border:none;cursor:pointer;color:var(--color-text);padding:0 var(--space-5) 0 var(--space-5);font-size:var(--font-ui-lg);font-weight:600;text-align:center}.settings__name-btn:after{content:"✎";position:absolute;right:0;top:50%;transform:translateY(-50%);font-size:var(--text-sm);color:var(--color-text-faint)}.settings__name-btn:active{opacity:.7;transition:opacity var(--transition-fast)}.settings__name-edit-hint{display:none}.settings__name-edit{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3) 0;width:100%;align-items:center}.settings__name-input{font-size:var(--font-ui-lg);font-weight:600;background:var(--color-bg-elev);border:1px solid var(--color-accent);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);color:var(--color-text);outline:none;width:min(240px,80%);box-sizing:border-box;text-align:center}.settings__name-edit-actions{display:flex;gap:var(--space-2);justify-content:center}.settings__name-cancel,.settings__name-save{padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);border:none;cursor:pointer;font-size:var(--text-sm);font-weight:600;transition:opacity var(--transition-fast)}.settings__name-cancel{background:var(--color-bg);color:var(--color-text-muted)}.settings__name-save{background:var(--color-accent);color:var(--color-brand-text)}.settings__name-save:disabled{opacity:.4;cursor:default}.settings__name-cancel:active,.settings__name-save:not(:disabled):active{opacity:.7}.settings__notifications-btn{border:none;background:none;width:100%;text-align:left;cursor:pointer;color:var(--color-accent);font-size:var(--font-ui)}.settings__notifications-btn:active{opacity:.65;transition:opacity var(--transition-fast)}.settings__notifications-denied{font-size:var(--font-small);color:var(--color-text-muted)}.settings__section{margin:0 var(--space-4) 22px;background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4)}.settings__font-size{display:flex;align-items:center;gap:var(--space-3)}.settings__font-size-label{color:var(--color-text-muted);font-weight:600;flex-shrink:0;line-height:1}.settings__font-size-label--sm{font-size:var(--text-sm)}.settings__font-size-label--lg{font-size:var(--text-xl)}.settings__font-slider-wrap{flex:1;position:relative;height:24px;display:flex;align-items:center}.settings__font-slider{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:4px;border-radius:2px;background:var(--color-divider);outline:none;cursor:pointer}.settings__font-slider::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:var(--color-accent);box-shadow:var(--shadow-card);cursor:pointer}.settings__font-slider::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:var(--color-accent);border:none;cursor:pointer}.settings__font-notches{position:absolute;top:50%;transform:translateY(-50%);left:0;right:0;display:flex;justify-content:space-between;pointer-events:none;padding:0 11px}.settings__font-notch{width:4px;height:4px;border-radius:50%;background:var(--color-text-faint)}.settings__font-notch--active{background:var(--color-accent)}.settings__font-size-name{text-align:center;font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-2);letter-spacing:.04em}.composer-wrap{background:var(--color-bg-elev);border-top:.5px solid var(--color-divider);padding-top:0}.composer-wrap .composer{border-top:none;padding-top:var(--space-1)}.composer{display:flex;flex-direction:row;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-bg-elev);border-top:.5px solid var(--color-divider)}.composer__plus-wrap{position:relative;flex-shrink:0;width:var(--tap-target);height:var(--tap-target);display:flex;align-items:center;justify-content:center}.composer__plus{display:flex;align-items:center;justify-content:center;width:var(--tap-target);height:var(--tap-target);background:none;border:none;cursor:pointer;color:var(--color-text-muted);padding:0;flex-shrink:0}.composer__plus:active{opacity:.6;transition:opacity var(--transition-fast)}.composer__plus:disabled{opacity:.4;cursor:default}.composer__picker{position:absolute;bottom:calc(100% + var(--space-2));left:0;background:var(--color-bg-elev);border:1px solid var(--color-divider);border-radius:var(--space-2);box-shadow:var(--shadow-card);padding:var(--space-2) 0;min-width:180px;z-index:10;animation:slideUp var(--transition-fast) ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(var(--space-2))}to{opacity:1;transform:translateY(0)}}.composer__picker-option{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);background:none;border:none;text-align:left;cursor:pointer;font-size:var(--text-sm);color:var(--color-text)}.composer__picker-option:active{background:var(--color-bg)}.composer__picker-hint{padding:var(--space-1) var(--space-3);font-size:var(--text-xs);color:var(--color-text-faint);margin:0;border-top:1px solid var(--color-divider);margin-top:var(--space-1);padding-top:var(--space-2)}.composer__field{flex:1;background:var(--color-bg-elev);border-radius:var(--space-3);padding:var(--space-2) var(--space-3);font-size:var(--font-ui);color:var(--color-text);border:1px solid var(--color-divider);outline:none;resize:none;min-height:36px;max-height:120px;overflow-y:auto;line-height:1.4;font-family:inherit}.composer__send{width:var(--tap-target);height:var(--tap-target);border-radius:50%;background:var(--color-accent);border:none;padding:var(--space-2);display:flex;align-items:center;justify-content:center;color:var(--color-brand-text);flex-shrink:0;cursor:pointer;transition:opacity var(--transition-fast)}.composer__send:not(:disabled):active{opacity:.75;filter:brightness(.9);transition:opacity var(--transition-fast),filter var(--transition-fast)}.composer__send:disabled{opacity:.35;cursor:default}.composer__pending{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:var(--color-bg-elev);border-radius:var(--radius-sm);font-size:var(--font-tiny);color:var(--color-text-muted);margin-bottom:var(--space-1)}.composer__pending-remove{background:none;border:none;color:var(--color-error);cursor:pointer;font-size:var(--text-sm);padding:0 2px}.composer__pending-remove:active{opacity:.65;transition:opacity var(--transition-fast)}.composer__file-input{display:none}.sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-overlay-scrim);z-index:50;animation:sheet-fade-in .2s ease-out}.sheet{position:fixed;left:0;right:0;bottom:0;background:var(--color-bg-elev);border-radius:20px 20px 0 0;z-index:51;padding:0 0 calc(var(--space-4) + var(--safe-bottom));transform:translateY(0);animation:sheet-slide-up var(--transition-sheet);box-shadow:var(--shadow-sheet);max-height:85vh;display:flex;flex-direction:column}.sheet__handle{width:36px;height:4px;border-radius:2px;background:var(--color-divider);margin:var(--space-3) auto var(--space-4);flex-shrink:0}.sheet__avatar-block{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:0 var(--space-4) var(--space-4);border-bottom:.5px solid var(--color-divider)}.sheet__name{font-size:22px;font-weight:700;color:var(--color-text)}.sheet__phone{font-size:var(--text-sm);color:var(--color-text-muted)}.sheet__scroll{flex:1;overflow-y:auto}@keyframes sheet-fade-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.group-info__header{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:0 var(--space-4) var(--space-3);border-bottom:.5px solid var(--color-divider)}.group-info__name-btn{background:none;border:none;font-size:22px;font-weight:700;color:var(--color-text);cursor:pointer;text-align:center}.group-info__name-btn:active{opacity:.7;transition:opacity var(--transition-fast)}.group-info__edit{display:flex;flex-direction:column;gap:var(--space-2);align-items:stretch;width:100%;padding:var(--space-2) 0}.group-info__name-input{font-size:var(--font-ui-lg);padding:var(--space-2) var(--space-3);border:1px solid var(--color-divider);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text)}.group-info__edit-actions{display:flex;justify-content:flex-end;gap:var(--space-3)}.group-info__edit-actions button{background:none;border:none;color:var(--color-accent);font-size:var(--font-small);cursor:pointer;padding:var(--space-1) var(--space-2)}.group-info__edit-actions button:active{opacity:.65;transition:opacity var(--transition-fast)}.group-info__error{color:var(--color-error);font-size:var(--font-small)}.group-info__count{font-size:var(--font-small);color:var(--color-text-muted)}.group-info__members{list-style:none;margin:0;padding:0}.group-info__member-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:.5px solid var(--color-divider);cursor:pointer}.group-info__member-row:active{background:var(--color-bg-elev);transition:background var(--transition-fast)}.group-info__member-name{flex:1;font-size:var(--font-small);color:var(--color-text)}.group-info__remove{background:none;border:none;color:var(--color-error);font-size:18px;cursor:pointer;padding:var(--space-1) var(--space-2)}.group-info__remove:active{opacity:.7;transition:opacity var(--transition-fast)}.group-info__add-row{padding:var(--space-3) var(--space-4)}.group-info__add-btn{background:none;border:none;color:var(--color-accent);font-size:var(--font-small);font-weight:500;cursor:pointer;padding:0}.group-info__add-btn:active{opacity:.65;transition:opacity var(--transition-fast)}.group-info__leave{display:block;width:calc(100% - var(--space-6));margin:var(--space-2) var(--space-4) 0;background:none;border:none;color:var(--color-error);font-size:var(--font-small);font-weight:500;cursor:pointer;padding:var(--space-3);border-top:.5px solid var(--color-divider);text-align:left}.group-info__leave:active{opacity:.7;transition:opacity var(--transition-fast)}.group-info__add-header{display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-3) var(--space-3);border-bottom:.5px solid var(--color-divider);font-size:var(--font-small);font-weight:600;color:var(--color-text)}.group-info__add-header button{background:none;border:none;color:var(--color-accent);font-size:var(--font-small);cursor:pointer}.group-info__add-header button:active{opacity:.65;transition:opacity var(--transition-fast)}.group-info-add__spacer{width:50px;flex-shrink:0}.group-info__add-loading,.group-info__add-empty{padding:var(--space-5);text-align:center;color:var(--color-text-muted);font-size:var(--text-sm)}.receipt-sheet__title{font-size:var(--font-ui);font-weight:600;text-align:center;padding:0 var(--space-4) var(--space-3);color:var(--color-text);border-bottom:.5px solid var(--color-divider);flex-shrink:0}.receipt-sheet__loading{padding:var(--space-5);text-align:center;color:var(--color-text-muted);font-size:var(--font-small)}.receipt-sheet__list{list-style:none;margin:0;padding:0}.receipt-sheet__row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:.5px solid var(--color-divider)}.receipt-sheet__row:last-child{border-bottom:none}.receipt-sheet__name{flex:1;font-size:var(--font-ui);color:var(--color-text)}.receipt-sheet__status{font-size:var(--text-sm);flex-shrink:0;letter-spacing:-2px}.receipt-sheet__status--read{color:var(--color-accent)}.receipt-sheet__status--delivered{color:var(--color-text-muted)}.receipt-sheet__status--sent{color:var(--color-text-faint)}.bubble-row{display:flex;flex-direction:column;margin-bottom:var(--space-2)}.bubble-row--out{align-items:flex-end}.bubble-row--in{align-items:flex-start}.bubble{max-width:72%;padding:7px 11px 6px;border-radius:var(--bubble-radius);font-size:calc(var(--font-base) * var(--user-font-scale));line-height:var(--line-body);word-break:break-word;white-space:pre-wrap;position:relative}.bubble:active{opacity:.92;transition:opacity var(--transition-fast)}.bubble--out{background:var(--color-bubble-out);color:var(--color-bubble-out-text);border-top-right-radius:var(--bubble-tail-radius)}.bubble--in{background:var(--color-bubble-in);color:var(--color-bubble-in-text);border-top-left-radius:var(--bubble-tail-radius)}.bubble--out.bubble--notail{border-top-right-radius:var(--bubble-radius)}.bubble--in.bubble--notail{border-top-left-radius:var(--bubble-radius)}.bubble__footer{display:flex;justify-content:flex-end;align-items:center;gap:3px;font-size:var(--font-tiny);margin-top:3px;opacity:.85}.bubble--out .bubble__footer{color:var(--color-bubble-out-meta)}.bubble--in .bubble__footer{color:var(--color-bubble-in-meta)}.bubble--failed{opacity:.6;cursor:pointer}.bubble__retry{font-size:var(--font-tiny);color:var(--color-error);text-align:right;margin-top:var(--space-1)}.bubble__sender-name{font-size:var(--text-sm);font-weight:600;color:var(--color-accent);margin-bottom:var(--space-1);padding-left:var(--space-1);max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bubble__sender-name--tappable{background:none;border:none;cursor:pointer;padding:0;padding-left:var(--space-1);text-align:left}.bubble__sender-name--tappable:active{opacity:.7;transition:opacity var(--transition-fast)}.typing-bubble{background:var(--color-bubble-in);border-radius:var(--bubble-radius);border-top-left-radius:var(--bubble-tail-radius);padding:var(--space-3) var(--space-4);display:inline-flex;gap:var(--space-1);align-items:center;align-self:flex-start;margin-bottom:var(--space-1)}.typing-dot{width:6px;height:6px;border-radius:50%;background:var(--color-bubble-in-text);opacity:.6;animation:typing-pulse 1.2s infinite ease-in-out}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes typing-pulse{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-3px);opacity:1}}.bubble__image{display:block;width:100%;max-width:240px;height:auto;max-height:320px;object-fit:cover;border-radius:var(--radius-md);margin-top:var(--space-1);cursor:pointer}.bubble__file{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-small);color:inherit;margin-top:var(--space-1);text-decoration:none;opacity:.85}.bubble__image-wrap{display:block;margin-top:var(--space-1)}.tick-icon--sending{opacity:.5;font-size:10px}.tick-icon--failed{color:var(--color-error);font-size:var(--text-xs)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000eb;display:flex;align-items:center;justify-content:center;z-index:1000;animation:lightboxFadeIn var(--transition-base) ease-out}@keyframes lightboxFadeIn{0%{opacity:0}to{opacity:1}}.lightbox__image{max-width:90vw;max-height:85vh;object-fit:contain;border-radius:var(--radius-md)}.lightbox__close,.lightbox__download{position:fixed;top:var(--space-4);width:var(--tap-target);height:var(--tap-target);display:flex;align-items:center;justify-content:center;background:#ffffff1f;border:none;border-radius:50%;color:#fff;font-size:var(--text-lg);cursor:pointer;text-decoration:none}.lightbox__close{right:var(--space-4)}.lightbox__download{right:calc(var(--space-4) + var(--tap-target) + var(--space-2))}.lightbox__close:active,.lightbox__download:active{opacity:.7}.date-separator{display:flex;align-items:center;gap:var(--space-2);margin:var(--space-4) 0 var(--space-4);color:var(--color-day-sep-text);font-size:var(--font-tiny);text-transform:uppercase;letter-spacing:.4px}.date-separator:before,.date-separator:after{content:"";flex:1;height:.5px;background:var(--color-divider)}.date-separator__label{flex-shrink:0}.thread__header{display:flex;align-items:center;padding:var(--space-2) var(--space-3) var(--space-2) var(--space-1);padding-top:calc(var(--space-2) + var(--safe-top));background:var(--color-brand);min-height:56px;gap:var(--space-1)}.thread__header-tap{background:none;border:none;flex:1;display:flex;flex-direction:row;align-items:center;gap:var(--space-3);cursor:pointer;padding:var(--space-1) 0;color:inherit;min-width:0;text-align:left}.thread__header-tap:active{opacity:.65;transition:opacity var(--transition-fast)}.thread__header-center{display:flex;flex-direction:column;gap:1px;min-width:0}.thread__header-name{font-size:var(--font-ui-lg);font-weight:600;color:var(--color-brand-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.thread__messages{padding:var(--space-2) var(--space-3);display:flex;flex-direction:column;gap:var(--space-1);min-height:100%}.system-message{text-align:center;font-size:var(--font-tiny);color:var(--color-text-faint);padding:var(--space-1) var(--space-4);margin:var(--space-1) 0;-webkit-user-select:none;user-select:none}.new-conversation__header{display:flex;align-items:center;padding:var(--space-2) var(--space-3);gap:var(--space-2);padding-top:calc(var(--space-2) + var(--safe-top));background:var(--color-brand);min-height:56px}.new-conversation__title{font-size:var(--font-ui);font-weight:600;color:var(--color-brand-text);flex:1;text-align:center}.new-conversation__row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);cursor:pointer;border:none;background:none;width:100%;text-align:left;color:var(--color-text);position:relative}.new-conversation__row:active{background:var(--color-bg-elev);transition:background var(--transition-fast)}.new-conversation__row:not(:last-child):after{content:"";position:absolute;bottom:0;height:.5px;left:calc(var(--space-4) + var(--avatar-md) + var(--space-3));right:var(--space-4);background:var(--color-divider)}.new-conversation__row-name{font-size:var(--font-ui-lg);font-weight:500}.new-conversation__create{background:none;border:none;color:var(--color-brand-text);font-size:var(--font-small);font-weight:600;cursor:pointer;padding:var(--space-1) var(--space-2);width:50px;text-align:right;opacity:.95}.new-conversation__create:not(:disabled):active{opacity:.65;transition:opacity var(--transition-fast)}.new-conversation__create:disabled{color:var(--color-text-faint);cursor:default}.new-conversation__name-input{margin:var(--space-3) var(--space-4) 0;background:var(--color-bg-elev);border:1px solid var(--color-divider);border-radius:var(--radius-md);padding:var(--space-3);font-size:var(--font-ui);color:var(--color-text);outline:none;width:calc(100% - var(--space-6));box-sizing:border-box}.new-conversation__row--group-entry{background:var(--color-surface)}.new-conversation__group-icon{width:42px;height:42px;border-radius:50%;background:var(--color-accent);display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}.new-conversation__row-name--accent{color:var(--color-accent);font-weight:500}.new-conversation__check{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--color-divider);display:flex;align-items:center;justify-content:center;font-size:var(--font-small);color:var(--color-brand-text);flex-shrink:0}.new-conversation__check--on{background:var(--color-accent);border-color:var(--color-accent)}.new-conversation__header-spacer{width:50px}.new-conversation__loading{padding:var(--space-5);color:var(--color-text-muted);font-size:var(--font-small);text-align:center}:root{--color-brand: #3D4FAD;--color-brand-dark: #2d3d8a;--color-brand-text: #ffffff;--color-bg: #f2f2f7;--color-bg-elev: #ffffff;--color-surface: #ffffff;--color-divider: rgba(60, 60, 67, .18);--color-text: #000000;--color-text-muted: rgba(60, 60, 67, .7);--color-text-faint: rgba(60, 60, 67, .35);--color-accent: #0a84ff;--color-error: #ff453a;--color-online: #34c759;--color-bubble-out: #0a84ff;--color-bubble-out-text: #ffffff;--color-bubble-out-meta: rgba(255, 255, 255, .7);--color-bubble-in: #ffffff;--color-bubble-in-text: #000000;--color-bubble-in-meta: rgba(60, 60, 67, .55);--color-tick-read: #ffffff;--color-react-bg: #ffffff;--color-react-border: rgba(60, 60, 67, .12);--color-react-shadow: 0 2px 8px rgba(0, 0, 0, .08);--color-day-sep-text: rgba(60, 60, 67, .55);--color-brand-text-dim: rgba(255, 255, 255, .9);--color-overlay-scrim: rgba(0, 0, 0, .4);--color-avatar-text-shadow: rgba(0, 0, 0, .2);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--font-title-lg: 2.125rem;--font-title-sm: 1.125rem;--font-ui-lg: 1rem;--font-ui: .9375rem;--font-base: .875rem;--font-small: .8125rem;--font-tiny: .625rem;--line-body: 1.32;--avatar-sm: 32px;--avatar-md: 40px;--avatar-lg: 64px;--icon-sm: 20px;--icon-md: 24px;--tap-target: 44px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 18px;--radius-pill: 999px;--bubble-radius: 18px;--bubble-tail-radius: 4px;--shadow-sheet: 0 -4px 24px rgba(0, 0, 0, .12);--shadow-card: 0 1px 4px rgba(0, 0, 0, .06);--transition-fast: .15s ease-out;--transition-base: .25s ease-out;--transition-sheet: .28s cubic-bezier(.2, .8, .2, 1);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--user-font-scale: 1}@media (prefers-color-scheme: dark){:root{--color-bg: #0c0c0e;--color-bg-elev: #1c1c1e;--color-surface: #1c1c1e;--color-divider: rgba(84, 84, 88, .4);--color-text: #ffffff;--color-text-muted: rgba(235, 235, 245, .6);--color-text-faint: rgba(235, 235, 245, .3);--color-bubble-in: #1c1c1e;--color-bubble-in-text: #ffffff;--color-bubble-in-meta: rgba(235, 235, 245, .5);--color-react-bg: #2c2c2e;--color-react-border: rgba(255, 255, 255, .08);--color-react-shadow: 0 4px 12px rgba(0, 0, 0, .5);--color-day-sep-text: rgba(235, 235, 245, .45);--shadow-sheet: 0 -4px 32px rgba(0, 0, 0, .5);--shadow-card: 0 1px 6px rgba(0, 0, 0, .25)}}.screen{display:flex;flex-direction:column;height:100dvh;overflow:hidden;background:var(--color-bg)}.screen__header{flex-shrink:0}.screen__body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.screen__footer{flex-shrink:0;padding-bottom:var(--safe-bottom)}
