:root{--bg:#f6f4fb;--surface:#fff;--surface-2:#efedf5;--text:#1d1b24;--muted:#6e6a7c;--line:#e2dfea;--accent:#6a4cff;--bubble-mine:#4f6bff;--bubble-mine-text:#fff;--bubble-theirs:#fff;--bubble-theirs-text:#1d1b24;--shadow:0 1px 2px #1e143c14, 0 8px 24px #1e143c14;--danger:#ff4d6d;--ok:#1fae6b;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.35}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#121118;--surface:#1c1a24;--surface-2:#26232f;--text:#efedf6;--muted:#9b97a8;--line:#2e2b38;--bubble-mine:#3d55e0;--bubble-theirs:#26232f;--bubble-theirs-text:#efedf6;--shadow:0 1px 2px #0006, 0 8px 24px #0006}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html,body{overscroll-behavior:none;overflow:hidden}body{background:var(--bg)}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}textarea{font:inherit;color:inherit}.app{background:var(--bg);flex-direction:column;max-width:680px;height:100dvh;margin:0 auto;display:flex;position:relative;overflow:hidden}.header{padding:10px 12px;padding-top:max(10px, env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--line);z-index:5;align-items:center;gap:12px;display:flex}.contact{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.avatar{background:var(--surface-2);border-radius:50%;place-items:center;width:38px;height:38px;font-size:20px;display:grid}.contact-name{white-space:nowrap;text-overflow:ellipsis;font-weight:650;overflow:hidden}.loose-ends{border-radius:999px;align-items:center;gap:8px;padding:5px 12px 5px 5px;font-size:14px;font-weight:600;transition:transform .15s;display:flex}.loose-ends:active{transform:scale(.96)}.loose-ends .count{color:#fff;border-radius:999px;place-items:center;min-width:28px;height:28px;padding:0 8px;font-size:16px;font-weight:800;display:grid}.loose-ends.has-some{background:color-mix(in oklab, var(--danger) 14%, transparent);color:var(--danger)}.loose-ends.has-some .count{background:var(--danger)}.loose-ends.none{background:color-mix(in oklab, var(--ok) 14%, transparent);color:var(--ok)}.loose-ends.none .count{background:var(--ok)}.loose-ends.celebrate{animation:.5s cubic-bezier(.3,1.6,.5,1) pop}@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.18)rotate(-4deg)}to{transform:scale(1)}}.icon-button{width:36px;height:36px;color:var(--muted);border-radius:50%;place-items:center;font-size:18px;display:grid}.icon-button:hover{background:var(--surface-2)}.dev{position:relative}.dev-backdrop{z-index:9;position:fixed;inset:0}.dev-menu{z-index:10;background:var(--surface);border:1px solid var(--line);width:260px;box-shadow:var(--shadow);border-radius:14px;flex-direction:column;padding:8px;display:flex;position:absolute;top:42px;right:0}.dev-menu button{text-align:left;border-radius:8px;padding:10px}.dev-menu button:hover{background:var(--surface-2)}.dev-note{color:var(--muted);margin:4px 10px 8px;font-size:13px}.filter-banner{background:color-mix(in oklab, var(--topic) 14%, var(--surface));border-bottom:1px solid color-mix(in oklab, var(--topic) 30%, var(--line));align-items:center;gap:10px;padding:8px 12px;font-size:14px;animation:.2s ease-out slide-down;display:flex}.filter-banner span:nth-child(2){flex:1}.filter-banner button{color:var(--topic);background:var(--surface);border-radius:999px;padding:4px 10px;font-weight:600}.symbol-badge{width:28px;height:28px;color:var(--topic);background:color-mix(in oklab, var(--topic) 16%, transparent);border-radius:50%;flex:none;place-items:center;font-size:17px;line-height:1;display:inline-grid}.messages{overscroll-behavior:contain;overflow-anchor:none;flex-direction:column;flex:1;gap:7px;padding:8px 10px 16px;display:flex;overflow-y:auto}.messages>:first-child{margin-top:auto}.empty{text-align:center;color:var(--muted);margin:auto}.topic-divider{color:var(--topic);grid-template-columns:1fr auto 1fr;align-items:center;column-gap:10px;margin:18px 4px 8px;display:grid}.topic-divider .rule{background:linear-gradient(to right, transparent, var(--topic), transparent);opacity:.55;height:1.5px}.topic-divider .symbol{background:color-mix(in oklab, var(--topic) 13%, var(--bg));border:1.5px solid color-mix(in oklab, var(--topic) 45%, transparent);border-radius:50%;place-items:center;width:32px;height:32px;font-size:19px;line-height:1;transition:transform .2s;display:grid}.topic-divider:hover .symbol{transform:rotate(-12deg)scale(1.08)}.topic-divider .caption{color:var(--muted);text-align:center;grid-column:1/-1;margin-top:5px;font-size:12px}.message-row{touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;align-items:center;gap:6px;display:flex;position:relative}.message-row.mine{flex-direction:row-reverse}.bubble{overflow-wrap:anywhere;white-space:pre-wrap;border-radius:18px;max-width:min(78%,460px);padding:7px 11px 6px;transition:transform .18s ease-out;position:relative}.theirs .bubble{background:var(--bubble-theirs);color:var(--bubble-theirs-text);box-shadow:0 1px 1px #0000000d}.mine .bubble{background:var(--bubble-mine);color:var(--bubble-mine-text)}.message-row.flash .bubble{animation:1.3s ease-out flash}@keyframes flash{0%,30%{box-shadow:0 0 0 4px var(--topic)}to{box-shadow:0 0 #0000}}.meta{float:right;opacity:.72;align-items:center;gap:4px;margin:7px 0 -3px 10px;font-size:11px;display:inline-flex}.status{width:auto;height:12px}.quote{text-align:left;border-left:3px solid var(--topic);background:#00000012;border-radius:9px;flex-direction:column;width:100%;margin:1px 0 5px;padding:5px 8px;font-size:14px;display:flex}.mine .quote{background:#ffffff2b;border-left-color:#fff}.quote-author{font-size:13px;font-weight:650}.quote-text{opacity:.85;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.swipe-hint{color:var(--muted);pointer-events:none;font-size:18px;transition:scale .15s;position:absolute;left:4px}.hover-reply{opacity:0;width:30px;height:30px;color:var(--muted);border-radius:50%;transition:opacity .15s}.hover-reply:hover{background:var(--surface-2)}@media (hover:hover){.message-row:hover .hover-reply{opacity:1}}.reactions{color:var(--text);background:var(--surface);border:2px solid var(--bg);white-space:nowrap;border-radius:999px;padding:1px 6px;font-size:13px;line-height:20px;position:absolute;bottom:-19px}.theirs .reactions{right:8px}.mine .reactions{left:8px}.message-row.has-reactions{margin-bottom:18px}.focus-stack .bubble:has(.reactions){margin-bottom:18px;overflow:visible}.composer{padding:6px 10px 10px;padding-bottom:max(10px, env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--line)}.reply-preview{border-left:3px solid var(--topic);background:var(--surface-2);border-radius:12px;align-items:center;gap:8px;margin:4px 0 6px;padding:6px 4px 6px 10px;animation:.18s ease-out slide-up;display:flex}.reply-preview-body{flex-direction:column;flex:1;min-width:0;font-size:14px;display:flex}.topic-hint{color:var(--muted);align-items:center;gap:8px;padding:2px 2px 6px;font-size:12.5px;display:flex}.topic-hint .symbol-badge{width:22px;height:22px;font-size:13px;animation:.35s cubic-bezier(.3,1.5,.5,1) spin-in}.topic-hint.is-new{color:var(--topic);font-weight:600}.composer-row{align-items:flex-end;gap:8px;display:flex}.composer textarea{resize:none;border:1px solid var(--line);background:var(--bg);field-sizing:content;border-radius:20px;outline:none;flex:1;min-height:40px;max-height:140px;padding:9px 14px}.composer textarea:focus{border-color:color-mix(in oklab, var(--topic) 60%, var(--line))}.new-topic-button,.send-button{border-radius:50%;flex:none;place-items:center;width:40px;height:40px;display:grid}.new-topic-button{color:var(--topic);background:color-mix(in oklab, var(--topic) 14%, transparent);font-size:26px;font-weight:300;line-height:1;transition:transform .25s cubic-bezier(.3,1.5,.5,1),background .2s}.new-topic-button.active{background:var(--topic);color:#fff;transform:rotate(45deg)}.send-button{background:var(--bubble-mine);color:#fff;font-size:17px;transition:opacity .15s,transform .15s}.send-button:disabled{opacity:.35;cursor:default}.send-button:not(:disabled):active{transform:scale(.9)}.overlay{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0a051e59;justify-content:center;align-items:flex-end;animation:.15s ease-out fade;display:flex;position:absolute;inset:0}.overlay.top{align-items:flex-start}.sheet{background:var(--surface);width:100%;box-shadow:var(--shadow)}.overlay.focus{-webkit-backdrop-filter:blur(10px)saturate(.8);backdrop-filter:blur(10px)saturate(.8);background:#0a051e47;display:block}.focus-stack{flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100% - 24px);transition:top .28s cubic-bezier(.2,1.1,.4,1);display:flex;position:absolute}.focus-stack.mine{align-items:flex-end}.focus-stack .bubble{max-width:none;max-height:45dvh;box-shadow:var(--shadow);animation:.22s ease-out lift;overflow:hidden}.message-row.lifted .bubble{visibility:hidden}.reaction-bar{background:var(--surface);box-shadow:var(--shadow);border-radius:999px;gap:2px;padding:5px;animation:.2s cubic-bezier(.2,1.3,.4,1) rise;display:flex}.reaction-bar button{border-radius:50%;place-items:center;width:42px;height:42px;font-size:24px;line-height:1;transition:transform .12s,background .12s;animation:.3s cubic-bezier(.3,1.6,.5,1) backwards pop-in;display:grid}.reaction-bar button:hover{transform:scale(1.18)}.reaction-bar button.selected{background:color-mix(in oklab, var(--accent) 22%, transparent)}.menu{background:var(--surface);width:250px;box-shadow:var(--shadow);border-radius:16px;padding:6px;animation:.2s cubic-bezier(.2,1.2,.4,1) drop}.menu-item{text-align:left;border-radius:10px;align-items:center;gap:12px;width:100%;padding:10px;display:flex}.menu-item:hover{background:var(--surface-2)}.menu-icon{text-align:center;width:24px;font-size:18px}.topic-ink{color:var(--topic)}.topic-sheet{overscroll-behavior:contain;border-radius:0 0 22px 22px;max-height:75%;padding:8px 12px 14px;animation:.22s cubic-bezier(.2,1.1,.4,1) slide-down;overflow-y:auto}.topic-sheet section+section{margin-top:6px}.topic-sheet h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:12px 6px 6px;font-size:12px}.topic-sheet .empty{background:var(--surface-2);border-radius:12px;margin:6px;padding:14px}.topic-row{border-radius:14px;align-items:center;display:flex}.topic-row:hover{background:var(--surface-2)}.topic-row.needs-reply{background:color-mix(in oklab, var(--topic) 8%, transparent);margin-bottom:4px}.topic-row.waiting{opacity:.8}.topic-row.done{opacity:.6}.topic-row-main{text-align:left;flex:1;align-items:center;gap:12px;min-width:0;padding:10px;display:flex}.topic-row-main .symbol-badge{width:38px;height:38px;font-size:21px}.topic-row-text{flex-direction:column;min-width:0;display:flex}.topic-row-snippet{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.topic-row-meta{color:var(--muted);font-size:12px}.done-button{color:var(--ok);border:1.5px solid color-mix(in oklab, var(--ok) 40%, transparent);margin-right:6px}.done-button:hover{background:color-mix(in oklab, var(--ok) 15%, transparent)}.toast{z-index:30;background:var(--text);color:var(--bg);box-shadow:var(--shadow);white-space:nowrap;border-radius:999px;padding:9px 16px;font-size:14px;font-weight:600;animation:2.8s ease-in-out forwards toast;position:absolute;top:70px;left:50%;translate:-50%}@keyframes fade{0%{opacity:0}}@keyframes lift{0%{box-shadow:none;transform:scale(.97)}}@keyframes rise{0%{opacity:0;transform:translateY(8px)scale(.9)}}@keyframes drop{0%{opacity:0;transform:translateY(-8px)scale(.95)}}@keyframes pop-in{0%{opacity:0;transform:scale(.3)}}@keyframes slide-up{0%{opacity:0;transform:translateY(16px)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-16px)}}@keyframes spin-in{0%{opacity:0;transform:rotate(-120deg)scale(.4)}}@keyframes toast{0%{opacity:0;transform:translateY(-10px)scale(.9)}10%,85%{opacity:1;transform:none}to{opacity:0;transform:translateY(-6px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.key-screen{justify-content:center;padding:24px}.key-screen form{flex-direction:column;gap:12px;display:flex}.key-screen h1{margin:0;font-size:26px}.key-screen p{color:var(--muted);margin:0}.key-screen input{font:inherit;color:inherit;border:1px solid var(--line);background:var(--surface);border-radius:12px;outline:none;padding:12px 14px}.key-screen input:focus{border-color:var(--accent)}.key-screen .key-error{color:var(--danger);font-size:14px}.key-screen button{background:var(--accent);color:#fff;border-radius:12px;padding:12px;font-weight:600}.key-screen button:disabled{opacity:.4;cursor:default}.notify-banner{background:color-mix(in oklab, var(--accent) 10%, var(--surface));border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:8px 12px;font-size:14px;display:flex}.notify-banner span{flex:1}.notify-banner button:not(.icon-button){color:#fff;background:var(--accent);border-radius:999px;padding:4px 12px;font-weight:600}.notify-banner .icon-button{color:var(--muted);font-size:20px}
