:root{color-scheme:light;font-family:Outfit,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--brand: #7c5cff;--brand-dark: #6848eb;--accent: #6848eb;--brand-soft: #ede9ff;--brand-glow: rgba(124, 92, 255, .22);--ink: #121212;--ink-muted: #6b6b76;--surface: #ffffff;--surface-muted: #f6f6f8;--line: #e8e8ee;--sent: var(--brand);--sent-text: #ffffff;--received: #f0f0f4;--received-text: var(--ink);--danger: #ff4d4f;--success: #22c55e;--radius-pill: 999px;--radius-xl: 28px;--radius-lg: 20px;--radius-md: 14px;--radius-sm: 10px;--shadow-soft: 0 10px 40px rgba(0, 0, 0, .08);--shadow-btn: 0 8px 24px rgba(0, 0, 0, .12);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--chat-media-max: 260px;--composer-control: 36px;--composer-min-height: 36px;--composer-radius: 18px}*{box-sizing:border-box}html,body,#root{height:100%;overflow:hidden}body{margin:0;min-width:320px;background:var(--surface);color:var(--ink)}button,input{font:inherit}button{cursor:pointer}.hidden-input{display:none}.spin{animation:spin .9s linear infinite}.tap-spring{transition:transform .18s cubic-bezier(.34,1.56,.64,1),background .15s ease,box-shadow .15s ease}.tap-spring:active{transform:scale(.94)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}@keyframes mascotBob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes splashIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes splashOut{to{opacity:0;transform:scale(1.04)}}.splash-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;background:linear-gradient(165deg,#faf8ff,#fff 48%,#f3efff);animation:splashIn .5s ease}.splash-screen--exit{animation:splashOut .28s ease forwards}.splash-content{display:grid;justify-items:center;gap:10px;text-align:center}.splash-title{margin:10px 0 0;font-size:36px;font-weight:800;letter-spacing:-.04em}.splash-tagline{margin:0;color:var(--ink-muted);font-size:15px;font-weight:600}.splash-loader{margin-top:18px;display:flex;gap:8px}.splash-loader span{width:8px;height:8px;border-radius:50%;background:var(--brand);animation:splashIn .8s ease-in-out infinite alternate}.splash-loader span:nth-child(2){animation-delay:.15s}.splash-loader span:nth-child(3){animation-delay:.3s}.ciphera-mascot--animated{animation:mascotBob 2.4s ease-in-out infinite}.auth-nav-row{display:flex;align-items:center;width:100%}.auth-hero{display:flex;flex-direction:column;align-items:center;gap:4px;margin-bottom:2px;animation:fadeUp .45s ease}.auth-mascot-hero{filter:drop-shadow(0 8px 20px rgba(124,92,255,.28))}.auth-brand--hero{margin:2px 0 0;font-size:28px;font-weight:800;letter-spacing:-.03em}.auth-hero-tagline{margin:0;max-width:280px;text-align:center;color:var(--ink-muted);font-size:14px;line-height:1.4}.notification-gate{min-height:100dvh;display:grid;place-items:center;padding:calc(24px + var(--safe-top)) 20px calc(24px + var(--safe-bottom));background:var(--surface)}.notification-gate-card{width:min(420px,100%);display:grid;justify-items:center;gap:14px;text-align:center}.notification-gate-card h1{margin:0;color:var(--ink);font-size:28px;font-weight:800;letter-spacing:-.03em}.notification-gate-card p{margin:0;color:var(--ink);line-height:1.55;font-size:15px}.notification-gate-card p strong{color:var(--ink);font-weight:700}.notification-gate-note{width:100%;padding:12px 14px;border-radius:var(--radius-md);background:var(--surface-muted);color:var(--ink);font-size:14px;line-height:1.45}.notification-gate-note strong{color:var(--ink);font-weight:700}.notification-gate-error{width:100%;color:var(--danger);font-size:14px;font-weight:600}.notification-gate-btn{min-height:48px;padding:0 20px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:var(--radius-pill);background:var(--brand);color:#fff;font-size:15px;font-weight:700}.notification-gate-btn:disabled{opacity:.55}.notification-gate--overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;min-height:0;background:#080a1094;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.notification-gate--overlay .notification-gate-card{background:var(--surface);padding:28px 24px 22px;border-radius:var(--radius-lg);box-shadow:0 24px 60px #00000047}.notification-gate-actions{width:100%;display:grid;gap:10px}.notification-gate-skip{min-height:44px;border:0;background:transparent;color:var(--ink);font-size:14px;font-weight:600;opacity:.72}.notification-gate-skip:disabled{opacity:.55}.home-action-btn--notify-alert{position:relative}.home-notify-alert{position:absolute;top:4px;right:4px;min-width:16px;height:16px;display:grid;place-items:center;padding:0 4px;border-radius:var(--radius-pill);background:var(--danger);border:2px solid var(--brand);color:#fff;font-size:11px;font-weight:800;line-height:1;box-shadow:0 0 0 1px #ff4d4f59}.home-header-actions{display:flex;align-items:center;gap:8px}.auth-screen{position:relative;height:100dvh;max-height:100dvh;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;align-items:center;padding:calc(20px + var(--safe-top)) 20px 0;background:var(--surface);overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.auth-screen-inner{width:min(420px,100%);flex:1 0 auto;display:flex;flex-direction:column;gap:16px;padding-bottom:12px}.auth-screen-inner--centered{justify-content:flex-start;margin:auto 0}.auth-topbar{display:grid;grid-template-columns:44px 1fr 44px;align-items:center}.auth-topbar-spacer{width:44px;height:44px}.auth-icon-btn,.home-action-btn,.chat-back-btn,.home-search-btn{width:44px;height:44px;display:grid;place-items:center;border:0;border-radius:var(--radius-pill);background:var(--surface-muted);color:var(--ink);transition:transform .15s ease,background .15s ease}.auth-brand{margin:18px 0 8px;font-size:34px;font-weight:800;letter-spacing:-.03em}.auth-subtitle{margin:0;color:var(--ink-muted);font-size:16px}.auth-loading{margin-top:24px;color:var(--ink-muted)}.auth-invite-banner{display:grid;gap:2px;padding:14px 16px;border-radius:var(--radius-lg);background:var(--surface-muted);text-align:center;animation:fadeUp .35s ease}.auth-invite-banner strong{font-size:16px;overflow-wrap:anywhere;word-break:break-word}.auth-invite-banner span{color:var(--ink-muted);font-size:14px;line-height:1.4}.invite-accept-screen{min-height:100dvh;display:grid;place-items:center;padding:calc(24px + var(--safe-top)) 20px calc(24px + var(--safe-bottom));background:var(--surface)}.invite-accept-inner{width:min(420px,100%);display:grid;justify-items:center;gap:14px;text-align:center}.invite-accept-mascot{margin-bottom:4px}.invite-accept-inner h1{margin:0;color:var(--ink);font-size:28px;font-weight:800;letter-spacing:-.03em}.invite-accept-copy{margin:0;color:var(--ink);font-size:15px;line-height:1.5}.invite-accept-error{width:100%;color:var(--danger);font-size:14px;font-weight:600}.invite-accept-btn{min-height:48px;width:100%;margin-top:4px;padding:0 20px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:var(--radius-pill);background:var(--brand);color:#fff;font-size:15px;font-weight:700}.invite-accept-btn:disabled{opacity:.55}.invite-accept-dismiss{min-height:40px;border:0;background:transparent;color:var(--ink);font-size:14px;font-weight:600;opacity:.72}.invite-accept-dismiss:disabled{opacity:.45}.auth-form-wrap{display:grid;align-content:start;gap:16px;min-height:0}.auth-step{display:grid;gap:14px;animation-duration:.38s;animation-timing-function:cubic-bezier(.22,1,.36,1);animation-fill-mode:both}.auth-step--forward{animation-name:stepInForward}.auth-step--back{animation-name:stepInBack}@keyframes stepInForward{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:translate(0)}}@keyframes stepInBack{0%{opacity:0;transform:translate(-28px)}to{opacity:1;transform:translate(0)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.auth-eyebrow{margin:0;display:flex;justify-content:space-between;align-items:center;color:var(--ink-muted);font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.auth-title{margin:0;font-size:clamp(28px,7vw,34px);font-weight:800;line-height:1.08;letter-spacing:-.03em}.auth-hint{margin:0;color:var(--ink-muted);font-size:15px;line-height:1.5}.auth-field{display:flex;align-items:center;min-height:58px;padding:0 18px;border:2px solid var(--line);border-radius:var(--radius-pill);background:var(--surface-muted);transition:border-color .2s ease,box-shadow .2s ease}.auth-field:focus-within{border-color:var(--ink);box-shadow:0 0 0 4px #0000000d}.auth-field-prefix{margin-right:4px;color:var(--ink-muted);font-size:20px;font-weight:700}.auth-field input{width:100%;border:0;background:transparent;color:var(--ink);font-size:18px;font-weight:600;outline:none}.auth-field input::placeholder{color:var(--ink-muted);font-weight:500}.auth-primary-btn{width:100%;min-height:56px;display:inline-flex;justify-content:center;align-items:center;gap:10px;border:0;border-radius:var(--radius-pill);background:var(--brand);color:var(--sent-text);font-size:17px;font-weight:800;box-shadow:0 10px 28px var(--brand-glow)}.auth-primary-btn:disabled{opacity:.7;cursor:wait}.auth-error{padding:12px 14px;border-radius:var(--radius-md);background:#fff1f0;color:var(--danger);font-size:14px;font-weight:600;animation:fadeUp .25s ease}.auth-error--shake{animation:shake .42s ease,fadeUp .25s ease}.auth-progress{display:flex;justify-content:center;gap:8px}.auth-progress-dot{width:8px;height:8px;border-radius:var(--radius-pill);background:var(--line);transition:transform .25s ease,background .25s ease}.auth-progress-dot.active{background:var(--brand);transform:scale(1.15)}.auth-bottom-bar{position:sticky;bottom:0;z-index:2;width:100%;flex-shrink:0;padding:12px 20px calc(12px + var(--safe-bottom));display:flex;justify-content:center;border-top:1px solid var(--line);background:var(--surface)}.auth-bottom-content{display:grid;justify-items:center;gap:6px}.auth-bottom-copy{margin:0;color:var(--ink-muted);font-size:15px;font-weight:600}.auth-legal-links{display:inline-flex;align-items:center;gap:7px;color:var(--ink-muted);font-size:12px;font-weight:600}.auth-register-link,.auth-legal-links a{color:var(--brand);text-decoration:none}.auth-register-link{font-weight:800}.auth-register-link:hover,.auth-legal-links a:hover{text-decoration:underline}.legal-screen{height:100dvh;max-height:100dvh;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:radial-gradient(circle at top left,color-mix(in srgb,var(--brand) 14%,transparent),transparent 34rem),var(--surface);color:var(--ink)}.legal-page{width:min(860px,calc(100vw - 32px));margin:0 auto;padding:calc(24px + var(--safe-top)) 0 calc(56px + var(--safe-bottom))}.legal-header{display:grid;justify-items:center;gap:10px;padding:12px 0 22px;text-align:center}.legal-back{justify-self:start;min-height:38px;display:inline-flex;align-items:center;gap:8px;padding:0 12px;border-radius:var(--radius-pill);background:var(--surface-muted);color:var(--ink);font-size:14px;font-weight:800;text-decoration:none}.legal-kicker{margin:4px 0 0;color:var(--brand);font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.legal-header h1{margin:0;font-size:clamp(34px,7vw,58px);font-weight:900;line-height:.98}.legal-updated{margin:0;color:var(--ink-muted);font-size:14px;font-weight:600}.legal-content{display:grid;gap:18px}.legal-content section{padding:22px;border:1px solid var(--line);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 88%,white)}.legal-content .legal-notice{border-color:color-mix(in srgb,var(--brand) 24%,var(--line));background:color-mix(in srgb,var(--brand-soft) 42%,var(--surface))}.legal-content h2{margin:0 0 8px;font-size:19px;font-weight:850}.legal-content p{margin:0;color:var(--ink-muted);font-size:15px;font-weight:500;line-height:1.65}.legal-content p+p{margin-top:10px}.app-shell{height:100dvh;max-height:100dvh;overflow:hidden;display:grid;background:var(--surface)}.home-panel,.chat-panel{height:100dvh;max-height:100dvh;min-width:0;overflow:hidden}.home-panel{display:grid;grid-template-rows:auto auto minmax(0,1fr);background:var(--surface)}.home-panel--settings{grid-template-rows:minmax(0,1fr)}.settings-page{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr)}.settings-header{display:flex;align-items:center;gap:10px;padding:calc(10px + var(--safe-top)) 14px 10px;border-bottom:1px solid var(--line)}.settings-header h1{margin:0;font-size:22px;font-weight:800;letter-spacing:-.03em;color:var(--ink)}.settings-body{overflow-y:auto;min-height:0;padding:16px 16px calc(20px + var(--safe-bottom));display:grid;gap:18px;align-content:start}.settings-profile-card{display:grid;justify-items:center;gap:12px;padding:22px 18px;border-radius:var(--radius-lg);background:var(--surface-muted);text-align:center}.settings-profile-copy h2{margin:0;font-size:24px;font-weight:800;letter-spacing:-.03em;color:var(--ink)}.settings-profile-copy span{color:var(--ink-muted);font-size:14px;font-weight:600}.settings-section h3{margin:0 0 8px;padding:0 4px;color:var(--ink-muted);font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.settings-card{display:grid;gap:0;border-radius:var(--radius-lg);background:var(--surface-muted);overflow:hidden}.settings-row{display:grid;gap:6px;padding:14px 16px;border-bottom:1px solid var(--line)}.settings-row--inline{display:flex;align-items:center;justify-content:space-between;gap:12px}.settings-row--inline .settings-row-label{min-width:0}.settings-row:last-child{border-bottom:0}.settings-card-footer{padding:12px;border-top:1px solid var(--line)}.settings-card-footer--note p{margin:0;color:var(--ink-muted);font-size:13px;font-weight:500;line-height:1.45}.settings-row-label{display:inline-flex;align-items:center;gap:8px;color:var(--ink-muted);font-size:13px;font-weight:600}.settings-row-value{color:var(--ink);font-size:15px;font-weight:600;line-height:1.4;overflow-wrap:anywhere}.settings-row-value--muted{color:var(--ink-muted);font-weight:500}.settings-row-value--mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;font-weight:500}.settings-status{display:inline-flex;align-items:center;padding:4px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:700}.settings-status--on{background:#22c55e24;color:#15803d}.settings-status--off{background:#ff4d4f1f;color:var(--danger)}.settings-enable-btn{width:100%;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:var(--radius-md);background:color-mix(in srgb,var(--brand) 12%,var(--surface));color:var(--brand-dark);font-size:14px;font-weight:700}.settings-logout-btn{min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:var(--radius-pill);background:#ff4d4f1a;color:var(--danger);font-size:15px;font-weight:700}.home-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(14px + var(--safe-top)) 18px 12px}.home-header-brand{display:flex;align-items:center;gap:12px}.home-header-brand h1{margin:0;font-size:28px;font-weight:800;letter-spacing:-.03em}.home-header-brand span{color:var(--ink-muted);font-size:13px;font-weight:600}.home-action-btn{background:var(--brand);color:var(--sent-text);box-shadow:0 8px 22px var(--brand-glow)}.home-action-btn--muted{background:var(--surface-muted);color:var(--ink);box-shadow:none}.home-search{margin:0 16px 10px;min-height:50px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:0 8px 0 14px;border-radius:var(--radius-pill);background:var(--surface-muted);color:var(--ink-muted)}.home-search input{width:100%;border:0;background:transparent;color:var(--ink);font-size:16px;font-weight:600;outline:none}.home-search input::placeholder{color:var(--ink-muted);font-weight:500}.toast-host{position:fixed;left:50%;bottom:calc(16px + var(--safe-bottom));transform:translate(-50%);z-index:60;width:min(420px,calc(100vw - 24px));display:grid;gap:8px;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:var(--radius-md);background:#121218f0;color:#fff;font-size:14px;font-weight:600;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:toastIn .22s ease}.toast--success{background:#16422af2}.toast--error{background:#4a161cf2}.toast--info{background:#181824f2}.toast-dismiss{flex:0 0 auto;width:28px;height:28px;border:0;border-radius:50%;background:#ffffff1f;color:inherit;font-size:18px;line-height:1}@keyframes toastIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.conversation-list{overflow-y:auto;overflow-x:hidden;min-height:0;padding:4px 10px calc(16px + var(--safe-bottom));overscroll-behavior:contain}.conversation-item{width:100%;min-height:74px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:10px 12px;border:0;border-radius:var(--radius-lg);background:transparent;color:inherit;text-align:left;transition:background .15s ease,transform .15s ease}.conversation-item:active{transform:scale(.99)}.conversation-item.active{background:var(--surface-muted)}.conversation-item--unread .conversation-copy strong{font-weight:700}.conversation-preview--unread{font-weight:600}.avatar{width:52px;height:52px;display:inline-grid;place-items:center;border-radius:50%;color:var(--surface);font-size:15px;font-weight:800;letter-spacing:.02em;flex-shrink:0}.bitmoji-avatar{overflow:hidden;background:var(--surface-muted);border:2px solid var(--line);padding:0;box-sizing:border-box}.bitmoji-avatar svg{display:block;width:100%;height:100%}.avatar.large{width:74px;height:74px;font-size:22px}.conversation-copy{min-width:0;display:grid;gap:3px}.conversation-copy strong{font-size:16px;font-weight:700}.conversation-copy small,.conversation-meta small{color:var(--ink-muted);font-size:13px;font-weight:500}.conversation-copy strong,.conversation-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conversation-meta{display:grid;justify-items:end;gap:6px}.unread{min-width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px;border-radius:var(--radius-pill);background:var(--brand);color:#fff;font-size:11px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.list-state{margin:12px 8px;padding:18px;display:flex;align-items:center;justify-content:center;gap:10px;border-radius:var(--radius-lg);background:var(--surface-muted);color:var(--ink-muted);font-weight:600}.home-empty{margin:24px 12px;padding:28px 20px;display:grid;justify-items:center;gap:10px;text-align:center}.home-empty-icon{width:64px;height:64px;display:grid;place-items:center;border-radius:50%;background:var(--surface-muted);color:var(--ink)}.home-empty h3{margin:4px 0 0;font-size:22px;font-weight:800}.home-empty p{margin:0;max-width:28ch;color:var(--ink-muted);line-height:1.5}.home-empty-btn{margin-top:8px;min-height:48px;padding:0 20px;display:inline-flex;align-items:center;gap:8px;border:0;border-radius:var(--radius-pill);background:var(--brand);color:var(--sent-text);font-weight:800;box-shadow:0 8px 22px var(--brand-glow)}.chat-panel{display:flex;flex-direction:column;background:var(--surface)}.chat-header{flex:0 0 auto;display:flex;align-items:center;gap:8px;min-height:52px;padding:calc(6px + var(--safe-top)) 12px 6px;border-bottom:1px solid var(--line);background:var(--surface)}.chat-header--placeholder{color:var(--ink-muted)}.chat-header--placeholder h2{margin:0;font-size:18px;color:var(--ink)}.chat-header--placeholder span{font-size:13px}.peer-heading{min-width:0;display:flex;align-items:center;gap:12px}.peer-heading h2{margin:0;font-size:15px;font-weight:700;line-height:1.2}.peer-heading-copy{min-width:0}.peer-heading-copy span,.peer-status{color:var(--ink-muted);font-size:11px;font-weight:600}.peer-status--typing{display:inline-flex;align-items:center;gap:2px;color:var(--accent)}.typing-dots{display:inline-flex;align-items:center;gap:2px;margin-left:1px}.typing-dots span{width:3px;height:3px;border-radius:50%;background:currentColor;animation:typing-dot 1.2s infinite ease-in-out}.typing-dots span:nth-child(2){animation-delay:.15s}.typing-dots span:nth-child(3){animation-delay:.3s}@keyframes typing-dot{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}.message-pane{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:18px 16px 24px;display:flex;flex-direction:column;gap:10px;background:var(--surface-muted);overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.empty-state{margin:auto;width:min(360px,100%);display:grid;justify-items:center;gap:10px;text-align:center;color:var(--ink-muted)}.empty-state h3{margin:0;color:var(--ink);font-size:20px;font-weight:800}.empty-state p{margin:0;line-height:1.5}.bubble-row{display:flex;align-items:flex-start;gap:4px;width:fit-content;max-width:min(94%,540px);min-width:0;position:relative}.bubble-row:has(.bubble--media){max-width:min(calc(100% - 8px),calc(var(--chat-media-max) + 48px))}.bubble-swipe-zone{position:relative;display:flex;width:100%;max-width:100%;touch-action:pan-y;user-select:none;-webkit-user-select:none}.bubble-swipe-zone--dragging{z-index:2}.bubble-swipe-reply-hint{position:absolute;left:2px;top:50%;width:34px;height:34px;display:grid;place-items:center;border-radius:var(--radius-pill);color:var(--ink-muted);background:var(--surface);border:1px solid var(--line);box-shadow:0 4px 14px #11111a14;pointer-events:none;transform:translateY(-50%) scale(var(--reply-scale, .55));will-change:transform,opacity;transition:color .16s ease,background .16s ease,border-color .16s ease,box-shadow .16s ease}.bubble-swipe-reply-hint--ready{color:#fff;background:var(--accent);border-color:transparent;box-shadow:0 6px 18px #7c5cff61}.bubble-swipe-zone--triggered .bubble-swipe-reply-hint{animation:replyHintPop .34s cubic-bezier(.22,1,.36,1)}.bubble-swipeable{position:relative;z-index:1;max-width:100%;will-change:transform;transition:transform .34s cubic-bezier(.22,1,.36,1),box-shadow .2s ease}.bubble-swipeable--dragging{transition:none;box-shadow:0 8px 24px #11111a1f}.bubble-swipe-zone--triggered .bubble-swipeable{animation:replyBubbleSettle .34s cubic-bezier(.22,1,.36,1)}@keyframes replyHintPop{0%{transform:translateY(-50%) scale(1)}45%{transform:translateY(-50%) scale(1.18)}to{transform:translateY(-50%) scale(1)}}@keyframes replyBubbleSettle{0%{transform:translateZ(0)}35%{transform:translate3d(10px,0,0)}to{transform:translateZ(0)}}.bubble-row.mine{align-self:flex-end;flex-direction:row-reverse}.bubble-row.theirs{align-self:flex-start}.bubble-actions{position:relative;flex:0 0 auto;padding-top:6px}.bubble-menu-btn{width:30px;height:30px;display:grid;place-items:center;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--ink-muted);opacity:.45;transition:opacity .15s ease,background .15s ease,color .15s ease}.bubble-row:hover .bubble-menu-btn,.bubble-menu-btn--open,.bubble-menu-btn:focus-visible{opacity:1;background:var(--surface);color:var(--ink)}.bubble-menu{min-width:132px;padding:6px;display:grid;gap:2px;border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--line);box-shadow:0 10px 28px #11111a1f;animation:fadeUp .18s ease}.bubble-menu--floating{position:fixed;z-index:120}.bubble-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;border:0;border-radius:10px;background:transparent;color:var(--ink);font-size:14px;font-weight:600;text-align:left}.bubble-menu-item:hover,.bubble-menu-item:focus-visible{background:var(--surface-muted)}.bubble{width:max-content;max-width:100%;min-width:0;padding:12px 18px 10px;border-radius:22px;box-shadow:0 2px 8px #11111a0f}.bubble.bubble--media{width:100%;max-width:var(--chat-media-max)}.bubble.mine{background:var(--sent);color:var(--sent-text);border-bottom-right-radius:8px}.bubble.theirs{background:var(--received);color:var(--received-text);border:1px solid var(--line);border-bottom-left-radius:8px}.bubble-reply-quote{margin-bottom:8px;padding:8px 10px;display:grid;gap:2px;max-width:100%;min-width:0;overflow:hidden;border-radius:12px;border-left:3px solid var(--accent);background:#ffffff24}.bubble-reply-quote strong{font-size:12px;font-weight:700;opacity:.92;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bubble-reply-quote span{font-size:13px;line-height:1.35;opacity:.82;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;word-break:break-word;overflow-wrap:anywhere}.bubble-reply-quote--theirs{background:var(--surface-muted)}.bubble-reply-quote--mine{border-left-color:#ffffffb8}.bubble p{margin:0;line-height:1.5;overflow-wrap:anywhere;white-space:pre-wrap;font-size:16px;font-weight:500;letter-spacing:-.01em}.bubble footer{margin-top:8px;display:flex;justify-content:flex-end;align-items:center;gap:5px;font-size:11px;opacity:.82}.bubble .read{color:#b8e6ff}.bubble .queued{opacity:.72}.attachment-card{min-width:min(260px,70vw);margin-top:8px;padding:10px;display:grid;gap:8px;border-radius:var(--radius-md);background:#ffffff29}.bubble.theirs .attachment-card{background:var(--surface-muted)}.attachment-card-main,.attachment-actions{display:flex;align-items:center;gap:8px}.attachment-card-main{font-weight:700;font-size:14px}.attachment-actions{flex-wrap:wrap}.attachment-actions.muted{opacity:.85;font-size:13px}.attachment-actions.muted span{display:inline-flex;align-items:center;gap:6px}.attachment-actions button{min-height:32px;padding:0 10px;display:inline-flex;align-items:center;gap:6px;border:0;border-radius:var(--radius-pill);background:#ffffff38;color:inherit;font-weight:700;font-size:13px}.bubble.theirs .attachment-actions button{background:var(--surface);border:1px solid var(--line)}.attachment-card audio{width:100%;max-width:300px}.attachment-error{color:#ffd0cd}.bubble.theirs .attachment-error{color:var(--danger)}.attachment-preview,.error-state{flex:0 0 auto;margin:0;padding:10px 12px;border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--line)}.attachment-preview{display:flex;flex-wrap:wrap;gap:8px}.attachment-pill{max-width:100%;padding:7px 10px;display:inline-flex;align-items:center;gap:8px;border-radius:var(--radius-pill);background:var(--surface-muted);color:var(--ink);font-size:13px;font-weight:600}.attachment-pill>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:min(320px,52vw)}.error-state{color:var(--danger);font-weight:600;font-size:14px}.connection-banner{position:fixed;top:calc(8px + var(--safe-top));left:50%;z-index:60;transform:translate(-50%);display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:var(--radius-pill);background:#11111ae0;color:#fff;font-size:13px;font-weight:600;box-shadow:0 8px 24px #11111a2e;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fadeUp .2s ease}.chat-composer-stack{flex:0 0 auto;width:100%;min-width:0;display:flex;flex-direction:column;gap:4px;padding-top:4px;background:var(--surface);border-top:1px solid var(--line)}.chat-composer-stack .error-state,.chat-composer-stack .attachment-preview,.chat-composer-stack .reply-composer{margin:0 10px}.reply-composer{display:flex;align-items:stretch;gap:10px;width:auto;max-width:100%;min-width:0;box-sizing:border-box;padding:10px 12px;border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--line);animation:fadeUp .2s ease;overflow:hidden}.reply-composer-accent{width:3px;border-radius:var(--radius-pill);background:var(--accent);flex:0 0 auto}.reply-composer-body{flex:1;min-width:0;display:grid;gap:2px}.reply-composer-author{font-size:13px;font-weight:700;color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reply-composer-preview{font-size:13px;color:var(--ink-muted);line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;word-break:break-word;overflow-wrap:anywhere}.reply-composer-close{flex:0 0 auto;width:32px;height:32px;display:grid;place-items:center;align-self:center;border:0;border-radius:var(--radius-pill);background:var(--surface-muted);color:var(--ink-muted)}.reply-composer-close:hover,.reply-composer-close:focus-visible{color:var(--ink)}.composer{flex:0 0 auto;display:grid;grid-template-columns:auto 1fr auto auto;align-items:flex-end;gap:6px;min-width:0;padding:2px 10px calc(6px + var(--safe-bottom));background:var(--surface)}.composer-textarea{width:100%;min-height:var(--composer-min-height);max-height:128px;padding:7px 12px;border:0;border-radius:var(--composer-radius);background:var(--surface-muted);color:var(--ink);font:inherit;font-size:15px;font-weight:500;line-height:1.35;outline:none;box-shadow:none;resize:none;overflow-y:auto;overflow-x:hidden;white-space:pre-wrap;word-break:break-word;field-sizing:content;scrollbar-width:none;-ms-overflow-style:none}.composer-textarea::-webkit-scrollbar{display:none;width:0;height:0}.composer-textarea:focus,.composer-textarea:focus-visible{outline:none;box-shadow:none;border:0}.composer-textarea::placeholder{color:var(--ink-muted);font-weight:500}.icon-button{width:var(--composer-control);height:var(--composer-control);flex:0 0 auto;display:grid;place-items:center;border:0;border-radius:50%;background:var(--surface-muted);color:var(--ink)}.icon-button.compact{width:30px;height:30px}.icon-button.danger{color:var(--danger)}.icon-button.recording{background:#ffe8e6;color:var(--danger)}.send-button{width:var(--composer-control);height:var(--composer-control);border:0;border-radius:50%;background:var(--brand);color:var(--sent-text);display:grid;place-items:center;box-shadow:0 4px 14px var(--brand-glow)}.send-button:disabled{cursor:not-allowed;opacity:.45;box-shadow:none}.media-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:16px;background:#0a0a0ee0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:lightboxIn .22s ease}.media-lightbox-stage{max-width:min(96vw,920px);max-height:92vh;display:grid;place-items:center}.media-lightbox-image,.media-lightbox-video{max-width:100%;max-height:92vh;border-radius:var(--radius-md);object-fit:contain;box-shadow:0 12px 40px #00000047;animation:lightboxZoom .24s cubic-bezier(.22,1,.36,1)}.media-lightbox-close{position:fixed;top:calc(12px + var(--safe-top));right:12px;width:40px;height:40px;display:grid;place-items:center;border:0;border-radius:50%;background:#ffffff24;color:var(--surface)}@keyframes lightboxIn{0%{opacity:0}to{opacity:1}}@keyframes lightboxZoom{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.mobile-only{display:inline-grid}.desktop-only,.mobile-hidden{display:none}.user-search{position:relative;margin:0 16px 10px}.user-search .home-search{margin:0}.user-search-spinner{margin-right:8px;color:var(--ink-muted)}.user-search-results{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:12;max-height:280px;overflow-y:auto;border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-soft)}.user-search-item{width:100%;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:12px;padding:10px 12px;border:0;background:transparent;text-align:left}.user-search-item:hover,.user-search-item:active{background:var(--surface-muted)}.user-search-copy{min-width:0;display:grid;gap:2px}.user-search-copy strong,.user-search-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-search-copy small{color:var(--ink-muted)}.user-search-empty{padding:14px;color:var(--ink-muted);font-size:14px;font-weight:600}.pending-attachments{flex:0 0 auto;display:flex;gap:10px;padding:10px 12px 0;overflow-x:auto}.pending-attachment{position:relative;flex:0 0 auto}.pending-attachment-thumb{width:72px;height:72px;object-fit:cover;border-radius:var(--radius-md);border:2px solid var(--line);display:block}.pending-attachment-voice{min-width:220px;max-width:280px;padding:10px 12px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;border-radius:var(--radius-lg);background:var(--surface-muted);border:1px solid var(--line)}.pending-attachment-voice audio{width:100%;height:32px}.pending-attachment-file{min-width:120px;max-width:180px;padding:10px 12px;border-radius:var(--radius-md);background:var(--surface-muted);border:1px solid var(--line);font-size:13px;font-weight:600}.pending-attachment-remove{position:absolute;top:-6px;right:-6px;width:26px;height:26px;display:grid;place-items:center;border:0;border-radius:50%;background:var(--ink);color:var(--surface)}.bubble--media{padding:6px;overflow:hidden}.bubble--media footer{padding:6px 10px 2px}.bubble--media p{padding:6px 10px 0}.bubble--voice{width:min(300px,100%);min-width:min(268px,calc(100vw - 96px));padding:8px 10px 6px;box-sizing:border-box}.bubble--voice footer{padding:4px 8px 0}.attachment-image,.attachment-video-player{display:block;padding:0;border:0;background:transparent;border-radius:var(--radius-md);overflow:hidden;width:100%;max-width:var(--chat-media-max)}.attachment-image img,.attachment-video-player video{width:100%;max-width:100%;height:auto;max-height:min(320px,52vh);aspect-ratio:auto;object-fit:cover;display:block;border-radius:var(--radius-md);background:#111118}.attachment-video-player{position:relative}.attachment-video-player video{object-fit:contain}.attachment-video-expand{position:absolute;top:8px;right:8px;width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:50%;background:#0000008c;color:#fff}.attachment-loading{position:relative;width:100%;max-width:var(--chat-media-max);min-height:168px;border-radius:var(--radius-md);overflow:hidden;background:var(--surface-muted);border:1px solid var(--line)}.attachment-loading-shimmer{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(110deg,#fff0,#ffffff73,#fff0 90%);transform:translate(-100%);animation:attachmentShimmer 1.35s ease-in-out infinite}.attachment-loading-content{position:relative;z-index:1;min-height:168px;display:grid;justify-items:center;align-content:center;gap:8px;padding:18px;color:var(--ink-muted);font-size:13px;font-weight:600}@keyframes attachmentShimmer{to{transform:translate(100%)}}.voice-player{width:100%;min-width:0;max-width:100%;box-sizing:border-box;padding:10px 12px;display:grid;grid-template-columns:38px minmax(0,1fr) max-content;align-items:center;gap:8px;border-radius:var(--radius-lg);overflow:hidden}.voice-player--mine{background:#ffffff24}.voice-player--theirs{background:var(--surface);border:1px solid var(--line)}.voice-player-btn{width:38px;height:38px;flex-shrink:0;display:grid;place-items:center;border:0;border-radius:50%;background:#ffffff38;color:inherit}.voice-player--theirs .voice-player-btn{background:var(--brand-soft);color:var(--brand)}.voice-player-track{height:32px;min-width:0;overflow:hidden;display:flex;align-items:flex-end;gap:2px}.voice-player-bar{flex:1 1 2px;min-width:2px;max-width:3px;border-radius:999px;background:currentColor;opacity:.28;transition:opacity .12s ease}.voice-player-bar.active{opacity:.95}.voice-player-time{flex-shrink:0;min-width:4.5ch;padding-left:2px;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;opacity:.85;text-align:right;white-space:nowrap}.voice-player audio{display:none}.pending-attachment-voice-wrap{width:min(300px,100%);min-width:min(268px,100%);padding:4px;border-radius:var(--radius-lg);background:var(--surface-muted);border:1px solid var(--line)}.attachment-pending,.attachment-file{display:inline-flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--radius-md);font-size:13px;font-weight:600}.attachment-error{color:var(--danger)}@media (min-width: 900px){.app-shell{grid-template-columns:minmax(300px,380px) minmax(0,1fr)}.mobile-only{display:none}.desktop-only{display:flex}.mobile-hidden{display:grid}.home-panel{border-right:1px solid var(--line)}.chat-panel.mobile-hidden{display:flex}}@media (max-width: 899px){:root{--chat-media-max: min(72vw, 240px)}.app-shell--home .chat-panel,.app-shell--chat .home-panel{display:none}.app-shell--chat .chat-panel{display:flex;width:100%;min-width:0}.chat-header{padding-inline:10px}.message-pane{padding:12px 10px 16px}.bubble-row{max-width:min(96%,calc(100vw - 52px))}.bubble-row:has(.bubble--media){max-width:min(calc(100vw - 52px),calc(var(--chat-media-max) + 40px))}.bubble p{font-size:15px}.composer{gap:5px;padding:2px 8px calc(5px + var(--safe-bottom))}.composer-textarea{font-size:16px;padding:8px 12px}.chat-composer-stack .pending-attachments{padding-inline:8px}.settings-body{padding-inline:14px}}
