:root{--bg: #ffffff;--bar: rgba(249, 249, 249, .88);--sidebar: #f2f2f7;--sidebar-bd: rgba(0, 0, 0, .08);--mesh-0: #4b2fe0;--mesh-1: #1e8cff;--mesh-2: #ff4fa3;--mesh-3: #3ee6ff;--side-veil: rgba(8, 10, 40, .16);--side-text-shadow: 0 1px 2px rgba(8, 10, 40, .45);--side-avatar-a: #ffffff;--side-avatar-b: #e6e3ff;--side-avatar-tx: #3a22c8;--side-avatar-shadow: 0 2px 8px rgba(8, 10, 40, .28);--sent: #007aff;--on-sent: #ffffff;--recv: #e9e9eb;--on-recv: #000000;--tx: #000000;--tx2: rgba(60, 60, 67, .6);--tx3: rgba(60, 60, 67, .3);--sep: rgba(60, 60, 67, .29);--fill: rgba(120, 120, 128, .2);--fill2: rgba(120, 120, 128, .12);--field-bd: #c7c7cc;--field-bg: #ffffff;--blue: #007aff;--red: #ff3b30;--purple: #af52de;--pink: #ff2d55;--yellow: #ffcc00;--card: #ffffff;--pill: rgba(250, 250, 250, .92);--pill-shadow: 0 10px 40px rgba(0, 0, 0, .2), 0 2px 6px rgba(0, 0, 0, .08);--dim: rgba(0, 0, 0, .18);--avatar-a: #b1b1b8;--avatar-b: #8a8a92;--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--ease-out: cubic-bezier(.2, .8, .2, 1);--ease-spring: cubic-bezier(.34, 1.4, .5, 1);--dur-fast: .15s;--dur-med: .24s;--dur-theme: .6s}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #000000;--bar: rgba(28, 28, 30, .86);--sidebar: #1c1c1e;--sidebar-bd: rgba(255, 255, 255, .1);--mesh-0: #2b1b96;--mesh-1: #1050b8;--mesh-2: #9a2170;--mesh-3: #0f86a3;--side-veil: transparent;--side-text-shadow: none;--side-avatar-a: #9a9aa2;--side-avatar-b: #6b6b73;--side-avatar-tx: #ffffff;--side-avatar-shadow: none;--sent: #0a84ff;--on-sent: #ffffff;--recv: #262628;--on-recv: #ffffff;--tx: #ffffff;--tx2: rgba(235, 235, 245, .6);--tx3: rgba(235, 235, 245, .3);--sep: rgba(84, 84, 88, .65);--fill: rgba(120, 120, 128, .36);--fill2: rgba(120, 120, 128, .24);--field-bd: #3a3a3c;--field-bg: #000000;--blue: #0a84ff;--red: #ff453a;--purple: #bf5af2;--pink: #ff375f;--yellow: #ffd60a;--card: #1c1c1e;--pill: rgba(44, 44, 46, .92);--pill-shadow: 0 10px 40px rgba(0, 0, 0, .55), 0 2px 6px rgba(0, 0, 0, .3);--dim: rgba(0, 0, 0, .42);--avatar-a: #9a9aa2;--avatar-b: #6b6b73}}:root[data-theme=dark]{--bg: #000000;--bar: rgba(28, 28, 30, .86);--sidebar: #1c1c1e;--sidebar-bd: rgba(255, 255, 255, .1);--mesh-0: #2b1b96;--mesh-1: #1050b8;--mesh-2: #9a2170;--mesh-3: #0f86a3;--side-veil: transparent;--side-text-shadow: none;--side-avatar-a: #9a9aa2;--side-avatar-b: #6b6b73;--side-avatar-tx: #ffffff;--side-avatar-shadow: none;--sent: #0a84ff;--on-sent: #ffffff;--recv: #262628;--on-recv: #ffffff;--tx: #ffffff;--tx2: rgba(235, 235, 245, .6);--tx3: rgba(235, 235, 245, .3);--sep: rgba(84, 84, 88, .65);--fill: rgba(120, 120, 128, .36);--fill2: rgba(120, 120, 128, .24);--field-bd: #3a3a3c;--field-bg: #000000;--blue: #0a84ff;--red: #ff453a;--purple: #bf5af2;--pink: #ff375f;--yellow: #ffd60a;--card: #1c1c1e;--pill: rgba(44, 44, 46, .92);--pill-shadow: 0 10px 40px rgba(0, 0, 0, .55), 0 2px 6px rgba(0, 0, 0, .3);--dim: rgba(0, 0, 0, .42);--avatar-a: #9a9aa2;--avatar-b: #6b6b73}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--bg);color:var(--tx);font-family:var(--font);font-size:15px;line-height:1.35;-webkit-font-smoothing:antialiased;overflow:hidden;transition:background-color var(--dur-theme) var(--ease-out),color var(--dur-theme) var(--ease-out)}button{font-family:inherit;cursor:pointer}.sidebar,.chat-header,.composer,.composer-pill textarea,.time-sep{transition:background-color var(--dur-theme) var(--ease-out),border-color var(--dur-theme) var(--ease-out),color var(--dur-theme) var(--ease-out)}.app-shell{display:grid;grid-template-columns:320px 1fr;height:100%}.sidebar{position:relative;isolation:isolate;margin:10px;border-radius:20px;overflow:hidden;background:var(--sidebar);box-shadow:0 0 0 1px var(--sidebar-bd),0 8px 28px #0000001a;display:flex;flex-direction:column;min-height:0;color-scheme:dark;color:var(--tx);--tx: #ffffff;--tx2: rgba(255, 255, 255, .78);--tx3: rgba(255, 255, 255, .45);--sep: rgba(255, 255, 255, .28);--fill: rgba(255, 255, 255, .26);--fill2: rgba(255, 255, 255, .16);--sidebar-bd: rgba(255, 255, 255, .16);--avatar-a: var(--side-avatar-a);--avatar-b: var(--side-avatar-b)}.sidebar .avatar{color:var(--side-avatar-tx);box-shadow:var(--side-avatar-shadow)}.sidebar .thread-card .meta,.sidebar .details,.sidebar .icon-btn,.sidebar .search{text-shadow:var(--side-text-shadow)}.sidebar .thread-card.active{background:#ffffff47;box-shadow:inset 0 0 0 1px #ffffff4d;-webkit-backdrop-filter:blur(14px) saturate(1.4);backdrop-filter:blur(14px) saturate(1.4)}.sidebar .unread-dot{background:#fff}.sidebar .thread-card .status.typing,.sidebar .details .row .lead,.sidebar .icon-btn.on{color:#fff}.sidebar-mesh{position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(90% 45% at 15% 10%,var(--mesh-1) 0%,transparent 70%),radial-gradient(90% 45% at 90% 45%,var(--mesh-2) 0%,transparent 70%),radial-gradient(90% 45% at 30% 95%,var(--mesh-3) 0%,transparent 70%),var(--mesh-0)}.sidebar-mesh:after{content:"";position:absolute;inset:0;background:var(--side-veil);transition:background-color var(--dur-theme) var(--ease-out)}.sidebar-mesh canvas{display:block;width:100%;height:100%}.sidebar-mesh.is-static canvas{display:none}.sidebar-top{padding:14px 14px 8px;display:flex;flex-direction:column;gap:10px}.sidebar-title{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600;letter-spacing:.12em;padding:4px 4px 0}.sidebar-title .logo{flex:none}.logo-link{display:inline-flex;flex:none;line-height:0;color:inherit;text-decoration:none;border-radius:6px;transition:opacity .12s ease}.logo-link:hover{opacity:.8}.logo-link:focus-visible{outline:2px solid var(--blue);outline-offset:3px}.search{display:flex;align-items:center;gap:6px;background:var(--fill2);border-radius:10px;padding:7px 9px;color:var(--tx2);font-size:14px}.search input{flex:1;border:none;background:transparent;outline:none;color:var(--tx);font:inherit}.search input::placeholder{color:var(--tx2)}.thread-list{flex:1;overflow-y:auto;padding:0 8px;display:flex;flex-direction:column}.thread-list .conv-head{order:-1}.thread-card[hidden]{display:none}.search-results{display:flex;flex-direction:column;padding-bottom:10px}.search-results[hidden]{display:none}.search-section-head{display:flex;align-items:baseline;justify-content:space-between;padding:10px 8px 4px;font-size:13px;font-weight:700;color:var(--tx);text-shadow:var(--side-text-shadow)}.search-section-head[hidden]{display:none}.search-more{border:none;background:transparent;padding:0;font:inherit;font-weight:500;color:var(--tx2);cursor:pointer}.search-more:hover{color:var(--tx)}.search-hit{display:flex;flex-direction:column;gap:4px;width:100%;padding:7px 4px 9px 8px;border:none;border-radius:12px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background var(--dur-fast) var(--ease-out)}.search-hit:hover{background:var(--fill2)}.search-hit:focus-visible{outline:2px solid #fff;outline-offset:-2px}.sh-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;text-shadow:var(--side-text-shadow)}.sh-name{font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sh-time{flex:none;font-size:11px;color:var(--tx2);padding-right:4px}.sh-body{display:flex;align-items:flex-end;gap:6px}.search-hit.sent .sh-body{justify-content:flex-end}.sh-body .avatar{flex:none;width:24px;height:24px;font-size:11px}.sh-chev{flex:none;align-self:center;display:grid;color:var(--tx3)}.bubble.search-bubble{min-width:0;max-width:calc(100% - 50px);padding:6px 11px 7px;border-radius:16px;font-size:13px;line-height:1.32;opacity:.92;cursor:inherit}.search-hit.recv .search-bubble{margin-right:auto}.search-bubble .txt{display:-webkit-box;-webkit-line-clamp:8;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.search-bubble.sent .txt{color:color-mix(in srgb,var(--on-sent) 68%,transparent)}.search-bubble.recv .txt{color:color-mix(in srgb,var(--on-recv) 68%,transparent)}.search-bubble .txt b{font-weight:600}.search-bubble.sent .txt b{color:var(--on-sent)}.search-bubble.recv .txt b{color:var(--on-recv)}.search-hit:hover .search-bubble{opacity:1}.search-note{padding:12px 8px;text-align:center;font-size:12px;color:var(--tx2);text-shadow:var(--side-text-shadow)}.search-note.pending{animation:search-pending 1.4s ease-in-out infinite}@keyframes search-pending{50%{opacity:.5}}.thread-card{display:grid;grid-template-columns:14px 46px 1fr;align-items:center;gap:8px;padding:9px 10px 9px 4px;border-radius:12px;background:transparent;border:none;width:100%;text-align:left;color:var(--tx);position:relative;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.thread-card:active{transform:scale(.99)}.thread-card+.thread-card:before{content:"";position:absolute;left:68px;right:10px;top:0;height:1px;background:var(--sep);opacity:.6}.thread-card.active{background:var(--blue);color:#fff}.thread-card.active:before,.thread-card.active+.thread-card:before{opacity:0}.thread-card:not(.active):hover{background:var(--fill2)}.unread-dot{width:10px;height:10px;border-radius:50%;background:var(--blue)}.unread-dot[hidden]{display:block;visibility:hidden}.thread-card.active .unread-dot{background:#fff}.thread-card .meta{min-width:0}.thread-card .line1{display:flex;align-items:baseline;gap:6px}.thread-card .name{font-weight:600;font-size:15px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.thread-card .time{font-size:12px;color:var(--tx2);flex:none}.thread-card.active .time,.thread-card.active .status{color:#ffffffd9}.thread-card .status{font-size:13px;color:var(--tx2);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3;min-height:1.3em}.thread-card .status:empty{display:none}.thread-card .status.typing{color:var(--blue)}.thread-card.active .status.typing{color:#fff}.avatar{flex:none;width:46px;height:46px;border-radius:50%;background:linear-gradient(180deg,var(--avatar-a),var(--avatar-b));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:19px;letter-spacing:.01em}.avatar,.avatar-lg{overflow:hidden;user-select:none;-webkit-user-select:none}.avatar img,.avatar-lg img{width:100%;height:100%;object-fit:cover;display:block;border-radius:50%;pointer-events:none}.avatar[data-style=photo],.avatar-lg[data-style=photo]{background:var(--fill2)}.avatar-emoji{font-size:1.3em;line-height:1;font-style:normal;font-weight:400}.sidebar .avatar.custom{color:#fff}.sidebar-footer{padding:10px 14px 14px;display:flex;flex-wrap:wrap;gap:8px;border-top:1px solid var(--sidebar-bd)}.icon-btn{flex:1 1 calc(50% - 4px);display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--fill2);color:var(--tx2);border:none;border-radius:9px;padding:7px 8px;font-size:12px;font-weight:500;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.icon-btn:hover{color:var(--tx);background:var(--fill)}.icon-btn:active{transform:scale(.96)}.icon-btn[disabled]{opacity:.55;cursor:default}.icon-btn.on{color:var(--blue)}.details{padding:4px 14px 12px;display:flex;flex-direction:column;gap:6px}.details .row{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--tx2)}.details .row .lead{display:flex;color:var(--blue)}.chat{display:flex;flex-direction:column;min-height:0;height:100%;background:var(--bg);position:relative;--chat-hdr-h: 106px}.chat-header{position:absolute;top:0;left:0;right:0;padding:8px 16px;display:flex;flex-direction:column;align-items:center;gap:4px;pointer-events:none;z-index:5}.chat-header>*{pointer-events:auto}.chat-header:before,.chat-header:after{content:"";position:absolute;top:0;bottom:-36px;left:50%;transform:translate(-50%);z-index:-1;pointer-events:none}.chat-header:before{width:min(680px,100%);background:color-mix(in srgb,var(--bg) 40%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);-webkit-mask-image:radial-gradient(ellipse 50% 100% at 50% 30%,#000 25%,transparent 100%);mask-image:radial-gradient(ellipse 50% 100% at 50% 30%,#000 25%,transparent 100%)}.chat-header:after{width:min(420px,80%);background:color-mix(in srgb,var(--bg) 50%,transparent);-webkit-backdrop-filter:saturate(180%) blur(26px);backdrop-filter:saturate(180%) blur(26px);-webkit-mask-image:radial-gradient(ellipse 50% 78% at 50% 34%,#000 45%,transparent 100%);mask-image:radial-gradient(ellipse 50% 78% at 50% 34%,#000 45%,transparent 100%)}.hdr-search{position:absolute;top:10px;right:12px;width:32px;height:32px;display:grid;place-items:center;border:none;background:transparent;color:var(--blue);cursor:pointer;border-radius:50%;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);transition:background .15s}.hdr-search.hdr-call{right:12px}.hdr-search.hdr-video{right:48px}.hdr-search:hover{background:var(--fill2)}.chat-header .avatar{width:46px;height:46px;font-size:19px}.chat-header .name-row{display:flex;align-items:center;gap:2px;font-size:12px;color:var(--tx)}.chat-header .name-row svg{color:var(--tx3)}.chat-header .name-row.clickable{cursor:pointer;border-radius:8px;padding:2px 6px}.chat-header .name-row.clickable:hover{background:var(--fill2)}.chat-header .e2e{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--tx2)}.chat-header .conn{font-size:11px;color:var(--tx2);min-height:0}.chat-header .conn:empty{display:none}.chat-header .conn.warn{color:var(--red)}@keyframes search-pop{0%{transform:scale(1)}32%{transform:scale(1.07)}to{transform:scale(1)}}.bubble.search-pop{animation:search-pop .55s cubic-bezier(.22,1,.36,1)}.messages-wrap{flex:1;min-height:0;display:flex;flex-direction:column;position:relative}.jump-latest{position:absolute;right:20px;bottom:14px;width:38px;height:38px;border:.5px solid var(--sep);border-radius:50%;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);box-shadow:0 4px 16px #00000029;color:var(--blue);display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transform:translateY(8px) scale(.85);pointer-events:none;transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-med) var(--ease-spring)}.jump-latest.show{opacity:1;transform:none;pointer-events:auto}.jump-latest:hover{filter:brightness(1.08)}.jump-latest:active{transform:scale(.94)}.jump-latest:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.messages{flex:1;min-height:0;overflow-y:auto;padding:calc(var(--chat-hdr-h) + 4px) 28px 8px;scroll-padding-top:var(--chat-hdr-h);display:flex;flex-direction:column;gap:2px;scroll-behavior:auto;overscroll-behavior:contain}.time-sep{align-self:center;font-size:11px;color:var(--tx2);margin:14px 0 8px}.time-sep b{font-weight:600}.msg-row{display:flex;flex-direction:column;max-width:68%}.msg-row.sent{align-self:flex-end;align-items:flex-end}.msg-row.recv{align-self:flex-start;align-items:flex-start}.msg-row.turn-gap{margin-top:8px}.msg-row.has-tapback{padding-top:12px}.bubble{position:relative;padding:7px 13px 8px;font-size:16px;line-height:1.3;border-radius:20px;word-wrap:break-word;overflow-wrap:anywhere;white-space:pre-wrap;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:pan-y;transform-origin:center center;transition:transform .55s cubic-bezier(.2,.7,.2,1),background-color var(--dur-med) var(--ease-out),color var(--dur-med) var(--ease-out);max-width:100%}.bubble .txt{position:relative;z-index:2}.bubble.pressing{transform:scale(.95)}.bubble.sent{background:var(--sent);color:var(--on-sent)}.bubble.recv{background:var(--recv);color:var(--on-recv)}.bubble.pending{opacity:.7}.bubble.undecryptable{font-style:italic;color:var(--tx2);background:var(--recv)}.bubble.anim{animation:rise .32s var(--ease-spring)}.bubble.sent.anim{transform-origin:bottom right}.bubble.recv.anim{transform-origin:bottom left}.bubble.lifted{visibility:hidden}.bubble.jumbo,.bubble.jumbo.sent,.bubble.jumbo.recv{background:none;padding:2px 2px 3px;line-height:1.15;border-radius:0}.bubble.jumbo-1{font-size:52px}.bubble.jumbo-2{font-size:44px}.bubble.jumbo-3{font-size:38px}.unsent-note{font-size:13px;font-style:italic;color:var(--tx2);padding:3px 2px}.bubble.tail{margin-bottom:2px}.bubble .tail-svg{position:absolute;bottom:-8px;width:16px;height:16px;z-index:1;pointer-events:none}.bubble.sent .tail-svg{right:4px}.bubble.recv .tail-svg{left:4px;transform:scaleX(-1)}.bubble.sent .tail-svg path{fill:var(--sent)}.bubble.recv .tail-svg path{fill:var(--recv)}.bubble.undecryptable .tail-svg path{fill:var(--recv)}.bubble.image{padding:0;background:var(--fill2);overflow:hidden;border-radius:20px;white-space:normal}.bubble.image.sent,.bubble.image.recv{background:var(--fill2)}.bubble.image.pending{opacity:1}.img-wrap{position:relative;display:block;max-width:100%;overflow:hidden;border-radius:inherit;cursor:zoom-in;background:var(--fill2)}.img-wrap img{display:block;width:100%;height:100%;object-fit:cover;transition:filter .25s ease}.img-wrap img.thumb{filter:blur(10px);transform:scale(1.08)}.img-wrap .ring,.img-wrap .retry{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#00000047;color:#fff}.img-wrap .ring svg{width:44px;height:44px;transform:rotate(-90deg)}.img-wrap .ring circle{fill:none;stroke-width:3.5;stroke-linecap:round}.img-wrap .ring-bg{stroke:#ffffff59}.img-wrap .ring-fg{stroke:#fff;transition:stroke-dashoffset .15s linear}.img-wrap .ring.spin svg{animation:img-ring-spin .9s linear infinite}@keyframes img-ring-spin{0%{transform:rotate(-90deg)}to{transform:rotate(270deg)}}.img-wrap .retry{flex-direction:column;gap:6px;border:none;font:inherit;font-size:12px;font-weight:600;cursor:pointer;background:#00000073}.img-wrap .retry svg{color:var(--red);width:26px;height:26px}.img-wrap.unavailable{cursor:default}.img-wrap.unavailable img{visibility:hidden}.img-wrap.unavailable:after{content:"Photo unavailable";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--tx2)}.bubble.image .tapbacks{z-index:3}.bubble.file{padding:8px 12px 8px 10px;white-space:normal}.file-wrap{position:relative;z-index:2;display:flex;align-items:center;gap:10px;width:236px;max-width:100%;cursor:pointer;outline:none}.file-wrap:focus-visible .file-icon{box-shadow:0 0 0 2px #ffffffb3}.file-icon{flex:none;width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:#ffffff38;color:#fff;transition:background var(--dur-med) var(--ease-out)}.bubble.recv .file-icon{background:var(--fill);color:var(--tx)}.file-text{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.file-name{font-size:15px;font-weight:600;line-height:1.25;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}.file-meta{font-size:12px;line-height:1.2;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bubble.recv .file-meta{color:var(--tx2);opacity:1}.file-wrap.loading .file-icon{opacity:.55}.file-wrap.unavailable{cursor:default}.file-wrap.unavailable .file-meta:before{content:"File unavailable · "}.file-wrap.failed .file-icon{background:transparent;color:var(--red)}.file-wrap.failed .file-meta{opacity:1;font-weight:600}.file-icon .ring{display:flex}.file-icon .ring svg{width:28px;height:28px;transform:rotate(-90deg)}.file-icon .ring circle{fill:none;stroke-width:3.5;stroke-linecap:round}.file-icon .ring-bg{stroke:#ffffff59}.file-icon .ring-fg{stroke:currentColor}.file-icon .ring.spin svg{animation:img-ring-spin .9s linear infinite}.bubble.recv .file-icon .ring-bg{stroke:#78788059}.bubble.file.has-preview{padding:0;border-radius:20px}.bubble.file.has-preview.pending{opacity:1}.fp-wrap{position:relative;z-index:2;display:flex;flex-direction:column;max-width:100%;overflow:hidden;border-radius:inherit;cursor:pointer;outline:none}.fp-wrap:after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px #78788038;pointer-events:none}.fp-wrap:focus-visible{box-shadow:0 0 0 2px var(--blue)}.fp-img{position:relative;overflow:hidden;background:#fff}.fp-wrap.video .fp-img{background:#000}.fp-img img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}.fp-wrap.video .fp-img img{object-position:center}.fp-img:after{content:"";position:absolute;inset:auto 0 0;height:1px;background:#0000001f}.fp-play{position:absolute;top:50%;left:50%;width:48px;height:48px;margin:-24px 0 0 -24px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;background:#00000073;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.fp-dur{position:absolute;right:8px;bottom:8px;padding:2px 6px;border-radius:6px;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;color:#fff;background:#0000008c}.fp-cap{display:flex;align-items:center;gap:8px;padding:8px 12px 9px 10px}.fp-icon{flex:none;display:flex;opacity:.9}.fp-name{font-size:14px;font-weight:600;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fp-img .ring,.fp-img .retry{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#00000047;color:#fff}.fp-img .ring svg{width:44px;height:44px;transform:rotate(-90deg)}.fp-img .ring circle{fill:none;stroke-width:3.5;stroke-linecap:round}.fp-img .ring-bg{stroke:#ffffff59}.fp-img .ring-fg{stroke:#fff}.fp-img .ring.spin svg{animation:img-ring-spin .9s linear infinite}.fp-img .retry{flex-direction:column;gap:6px;border:none;font:inherit;font-size:12px;font-weight:600;cursor:pointer;background:#00000073}.fp-img .retry svg{color:var(--red);width:26px;height:26px}.fp-wrap.loading .fp-img img{opacity:.6}.fp-wrap.unavailable{cursor:default}.fp-wrap.unavailable .fp-img img{opacity:.35}.fp-wrap.unavailable .file-meta:before{content:"File unavailable · "}.file-viewer{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;background:#000000f0;color:#fff;opacity:0;transition:opacity .18s ease}.file-viewer.in{opacity:1}.fv-bar{flex:none;display:flex;align-items:center;gap:6px;height:52px;padding:0 10px 0 16px;background:#1c1c1eeb;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.fv-name{flex:1;min-width:0;font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fv-btn{flex:none;width:36px;height:36px;border:none;border-radius:50%;background:transparent;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}.fv-btn:hover{background:#ffffff1f}.fv-body{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;overflow:auto}.fv-body iframe{width:100%;height:100%;border:none;background:#fff}.fv-body img,.fv-body video{max-width:96vw;max-height:92vh;object-fit:contain;border-radius:6px}.fv-body audio{width:min(480px,90vw)}.fv-text{align-self:stretch;flex:1;margin:0;padding:20px max(16px,calc((100vw - 820px)/2));overflow:auto;font:14px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;overflow-wrap:anywhere;color:#eee;user-select:text;-webkit-user-select:text}.bubble .txt a.linkified{color:inherit;text-decoration:underline;text-underline-offset:2px;text-decoration-color:color-mix(in srgb,currentColor 55%,transparent)}.bubble.recv .txt a.linkified{color:var(--blue);text-decoration-color:color-mix(in srgb,var(--blue) 45%,transparent)}.link-preview{margin-top:3px;width:260px;max-width:100%;display:block;border-radius:16px;overflow:hidden;background:var(--card);border:1px solid var(--sep);color:var(--tx);text-decoration:none;animation:rise .28s var(--ease-spring);transition:transform var(--dur-fast) var(--ease-out)}.msg-row.sent .link-preview{align-self:flex-end}.msg-row.recv .link-preview{align-self:flex-start}.link-preview:hover{transform:translateY(-1px)}.link-preview:active{transform:scale(.98)}.link-preview .lp-img{display:block;width:100%;aspect-ratio:1.91 / 1;overflow:hidden;background:var(--fill2)}.link-preview .lp-img img{display:block;width:100%;height:100%;object-fit:cover}.link-preview .lp-body{padding:9px 12px 11px}.link-preview .lp-site{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.03em;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.link-preview .lp-title{margin-top:2px;font-size:14px;font-weight:600;line-height:1.3;color:var(--tx);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.link-preview .lp-desc{margin-top:3px;font-size:12.5px;line-height:1.35;color:var(--tx2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.chat.dropping:after{content:"Drop to send";position:absolute;inset:8px;z-index:50;border:2px dashed var(--blue);border-radius:16px;background:color-mix(in srgb,var(--blue) 8%,transparent);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--blue);pointer-events:none}.lightbox{position:fixed;inset:0;z-index:200;background:#000000eb;color:#fff;opacity:0;transition:opacity .18s ease}.lightbox.in{opacity:1}.lb-stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:64px 2vw 2vh;cursor:zoom-out}.lb-stage img{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px;cursor:default;transform:scale(.96);transition:transform .22s cubic-bezier(.2,.8,.2,1)}.lightbox.in .lb-stage img{transform:scale(1)}.lb-bar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:flex-end;gap:6px;padding:calc(10px + env(safe-area-inset-top)) calc(12px + env(safe-area-inset-right)) 18px 16px;background:linear-gradient(180deg,#0000008c,#0000);pointer-events:none}.lb-bar>*{pointer-events:auto}.lb-sender{display:flex;align-items:center;gap:9px;min-width:0;margin-right:8px}.lb-sender .avatar{width:34px;height:34px;font-size:14px}.lb-who{display:flex;flex-direction:column;min-width:0;line-height:1.2;text-align:left}.lb-name{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lb-when{font-size:12px;color:#ffffffb3;white-space:nowrap}.lb-btn{flex:none;width:36px;height:36px;border:none;border-radius:50%;background:#ffffff24;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);transition:background-color var(--dur-fast, .15s) ease,transform var(--dur-fast, .15s) ease}.lb-btn:hover{background:#ffffff3d}.lb-btn:active{transform:scale(.94)}.lb-btn:focus-visible{outline:2px solid #fff;outline-offset:2px}.lb-btn.on{background:#fff;color:#000}.lb-info{position:absolute;top:calc(58px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right));width:min(300px,calc(100vw - 24px));margin:0;padding:6px 14px;border-radius:14px;background:#2c2c2edb;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);box-shadow:0 12px 40px #00000073;display:grid;grid-template-columns:auto 1fr;font-size:13px;animation:lb-info-in .18s cubic-bezier(.2,.8,.2,1);transform-origin:top right}.lb-info[hidden]{display:none}.lb-info dt,.lb-info dd{margin:0;padding:9px 0;border-top:.5px solid rgba(255,255,255,.14)}.lb-info dt:first-of-type,.lb-info dt:first-of-type+dd{border-top:none}.lb-info dt{color:#fff9;padding-right:16px}.lb-info dd{text-align:right;overflow-wrap:anywhere}@keyframes lb-info-in{0%{opacity:0;transform:scale(.94) translateY(-4px)}}.receipt{font-size:11px;color:var(--tx2);margin:3px 4px 2px 0}.receipt b{font-weight:600}@keyframes rise{0%{opacity:0;transform:translateY(9px) scale(.86)}55%{opacity:1}to{opacity:1;transform:translateY(0) scale(1)}}.tapbacks{position:absolute;top:-13px;display:flex;z-index:3;pointer-events:none}.bubble.sent .tapbacks{left:-8px}.bubble.recv .tapbacks{right:-8px;flex-direction:row-reverse}.chip{height:26px;min-width:26px;padding:0 6px;border-radius:999px;border:2px solid var(--bg);background:var(--recv);color:var(--on-recv);display:flex;align-items:center;justify-content:center;font-size:13px;line-height:1}.chip.mine{background:var(--sent);color:var(--on-sent)}.chip+.chip{margin-left:-7px}.bubble.recv .chip+.chip{margin-left:0;margin-right:-7px}.chip.pop{animation:chip-pop .45s cubic-bezier(.34,1.56,.64,1) both}@keyframes chip-pop{0%{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}.tb{display:inline-flex;align-items:center;justify-content:center;line-height:1}.tb-love{color:var(--pink)}.tb-love svg{width:1.15em;height:1.15em;fill:currentColor}.tb-haha{color:var(--blue);font-weight:800;font-size:.62em;letter-spacing:.02em;text-align:center;line-height:.95;flex-direction:column}.tb-emph{color:var(--red);font-weight:800;font-size:1.1em;letter-spacing:-.06em}.tb-q{color:var(--purple);font-weight:800;font-size:1.1em}.tb-emoji{font-size:1em}.chip.mine .tb-love,.chip.mine .tb-haha,.chip.mine .tb-emph,.chip.mine .tb-q{color:#fff}.typing-row{align-self:flex-start;margin-top:8px;position:relative;padding-left:0}.typing-bubble{position:relative;background:var(--recv);border-radius:18px;padding:12px 14px;display:inline-flex;gap:5px;align-items:center}.typing-bubble:before,.typing-bubble:after{content:"";position:absolute;background:var(--recv);border-radius:50%}.typing-bubble:before{width:12px;height:12px;left:-3px;bottom:-3px}.typing-bubble:after{width:6px;height:6px;left:-9px;bottom:-8px}.typing-bubble span{width:8px;height:8px;border-radius:50%;background:var(--tx2);animation:blink 1.2s infinite ease-in-out}.typing-bubble span:nth-child(2){animation-delay:.18s}.typing-bubble span:nth-child(3){animation-delay:.36s}@keyframes blink{0%,60%,to{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-2px)}}.empty-chat{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:24px}.empty-chat .avatar-lg{width:88px;height:88px;border-radius:50%;background:linear-gradient(180deg,var(--avatar-a),var(--avatar-b));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:36px;margin-bottom:6px}.empty-chat h2{font-size:17px;font-weight:600;margin:0}.empty-chat p{color:var(--tx2);font-size:13px;max-width:280px;margin:0}.empty-chat .e2e-line{display:inline-flex;gap:5px;align-items:center}.composer{padding:8px 14px 12px;display:flex;align-items:flex-end;gap:10px;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-top:1px solid var(--sep)}.plus-btn{flex:none;width:34px;height:34px;border-radius:50%;background:var(--fill);color:var(--tx2);border:none;display:flex;align-items:center;justify-content:center}.plus-btn{transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.plus-btn:hover{color:var(--tx)}.plus-btn:active{transform:scale(.9)}.composer-pill{flex:1;min-height:36px;border-radius:18px;background:var(--field-bg);border:1px solid var(--field-bd);display:flex;align-items:flex-end;padding:0 3px 0 0;position:relative;transition:border-color var(--dur-med) var(--ease-out),box-shadow var(--dur-med) var(--ease-out)}.composer-pill:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px color-mix(in srgb,var(--blue) 18%,transparent)}.composer-pill textarea{flex:1;border:none;outline:none;resize:none;background:transparent;color:var(--tx);font-family:inherit;font-size:16px;line-height:1.3;max-height:140px;padding:7px 8px 7px 13px}.composer-pill textarea::placeholder{color:var(--tx2)}.send-btn{flex:none;width:28px;height:28px;margin:3px 0;border-radius:50%;background:var(--blue);color:#fff;border:none;display:flex;align-items:center;justify-content:center;transition:transform .18s var(--ease-spring),opacity var(--dur-fast) ease,background-color var(--dur-med) var(--ease-out)}.send-btn:hover{transform:scale(1.08)}.send-btn:active{transform:scale(.9)}.send-btn[hidden]{display:none}.mic-btn{flex:none;width:28px;height:28px;margin:3px 0;border:none;background:transparent;color:var(--tx2);display:flex;align-items:center;justify-content:center}.mic-btn[hidden]{display:none}.mic-btn:hover{color:var(--tx)}.emoji-btn{flex:none;width:28px;height:28px;margin:3px 0;border:none;background:transparent;color:var(--tx2);display:flex;align-items:center;justify-content:center;transition:color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.emoji-btn:hover{color:var(--tx)}.emoji-btn:active{transform:scale(.9)}.emoji-btn.active{color:var(--blue)}.emoji-panel{position:fixed;z-index:300;width:336px;max-width:calc(100vw - 16px);max-height:380px;display:flex;flex-direction:column;background:var(--pill);border:1px solid var(--sep);border-radius:16px;box-shadow:var(--pill-shadow);-webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);overflow:hidden;transform-origin:bottom right;opacity:0;transform:scale(.94) translateY(6px);transition:opacity .14s var(--ease-out),transform .16s var(--ease-spring)}.emoji-panel.in{opacity:1;transform:none}.emoji-search{padding:10px 10px 6px;flex:none}.emoji-search input{width:100%;border:none;outline:none;border-radius:9px;background:var(--fill2);color:var(--tx);font-family:inherit;font-size:14px;padding:8px 11px}.emoji-search input::placeholder{color:var(--tx2)}.emoji-tabs{flex:none;display:flex;gap:2px;padding:0 8px 6px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--sep)}.emoji-tabs::-webkit-scrollbar{display:none}.emoji-tab{flex:none;width:30px;height:30px;border:none;background:transparent;border-radius:8px;font-size:17px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color var(--dur-fast) var(--ease-out)}.emoji-tab:hover{background:var(--fill2)}.emoji-scroll,.emoji-results{flex:1;overflow-y:auto;padding:6px 8px 10px;overscroll-behavior:contain}.emoji-section h4{margin:8px 4px 4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--tx2)}.emoji-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:1px}.emoji-cell{border:none;background:transparent;border-radius:8px;font-size:24px;line-height:1;aspect-ratio:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.emoji-cell:hover{background:var(--fill)}.emoji-cell:active{transform:scale(.85)}.emoji-empty{padding:24px 8px;text-align:center;font-size:13px;color:var(--tx2)}.plus-btn[hidden],.composer-pill[hidden],.record-bar[hidden]{display:none}.record-bar{flex:1;min-height:36px;border-radius:18px;background:var(--field-bg);border:1px solid var(--field-bd);display:flex;align-items:center;gap:10px;padding:0 3px 0 10px;position:relative;overflow:hidden}.record-bar .record-fill{position:absolute;inset:0;background:color-mix(in srgb,var(--blue) 8%,transparent);pointer-events:none}.record-cancel{flex:none;width:28px;height:28px;border:none;background:transparent;color:var(--tx2);display:flex;align-items:center;justify-content:center;z-index:1}.record-cancel:hover{color:#ff3b30}.record-dot{flex:none;width:9px;height:9px;border-radius:50%;background:#ff3b30;z-index:1;animation:recpulse 1.2s ease-in-out infinite}@keyframes recpulse{0%,to{opacity:1}50%{opacity:.3}}.record-timer{flex:1;font-size:15px;font-variant-numeric:tabular-nums;color:var(--tx);z-index:1}.record-send{flex:none;width:28px;height:28px;margin:3px 0;border-radius:50%;background:var(--blue);color:#fff;border:none;display:flex;align-items:center;justify-content:center;z-index:1}.record-send:active{transform:scale(.9)}.bubble.voice-bubble{padding:6px 10px}.voice{display:flex;align-items:center;gap:9px;min-width:150px;position:relative;z-index:2}.voice-play{flex:none;width:30px;height:30px;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;background:#ffffff40;color:#fff}.bubble.recv .voice-play{background:#78788047;color:var(--tx)}.voice-play.loading{opacity:.5}.voice-wave{flex:1;display:flex;align-items:center;gap:2px;height:24px}.voice-wave span{flex:1;min-width:2px;border-radius:2px;background:#ffffff73;transition:background .1s linear}.voice-wave span.played{background:#fff}.bubble.recv .voice-wave span{background:#78788066}.bubble.recv .voice-wave span.played{background:var(--tx)}.voice-dur{flex:none;font-size:12px;font-variant-numeric:tabular-nums;opacity:.85}.tapback-layer{position:fixed;inset:0;z-index:100}.tapback-blur{position:absolute;inset:0;background:var(--dim);-webkit-backdrop-filter:blur(24px) saturate(1.3);backdrop-filter:blur(24px) saturate(1.3);opacity:0;transition:opacity .24s ease}.tapback-layer.in .tapback-blur{opacity:1}.tapback-layer.out .tapback-blur{opacity:0;transition-duration:.18s}.tapback-lift{position:fixed;margin:0;z-index:2;transition:top .32s cubic-bezier(.2,.8,.2,1);animation:lift-pop .5s cubic-bezier(.34,1.56,.64,1) both;visibility:visible}.tapback-lift .tapbacks{display:none}.tapback-layer.out .tapback-lift{animation:lift-out .18s ease-in both}@keyframes lift-pop{0%{transform:scale(.95)}to{transform:scale(1)}}@keyframes lift-out{0%{transform:scale(1)}to{transform:scale(1)}}.tapback-pill{position:fixed;z-index:3;display:flex;align-items:center;gap:2px;padding:5px 7px;border-radius:999px;background:var(--pill);-webkit-backdrop-filter:blur(30px) saturate(1.6);backdrop-filter:blur(30px) saturate(1.6);box-shadow:var(--pill-shadow);animation:pill-in .42s cubic-bezier(.34,1.56,.64,1) both}.tapback-pill.from-right{transform-origin:90% 120%}.tapback-pill.from-left{transform-origin:10% 120%}.tapback-layer.out .tapback-pill{animation:pill-out .16s ease-in both}@keyframes pill-in{0%{transform:scale(.25);opacity:0}to{transform:scale(1);opacity:1}}@keyframes pill-out{0%{transform:scale(1);opacity:1}to{transform:scale(.6);opacity:0}}.tapback-pill:after{content:"";position:absolute;bottom:-8px;width:14px;height:14px;border-radius:50%;background:var(--pill);box-shadow:0 2px 6px #0000001f}.tapback-pill.from-right:after{right:16px}.tapback-pill.from-left:after{left:16px}.tapback-pill .item{width:42px;height:42px;border-radius:50%;border:none;background:transparent;display:flex;align-items:center;justify-content:center;font-size:24px;color:var(--tx);transition:transform .15s cubic-bezier(.34,1.56,.64,1),background .15s ease;padding:0}.tapback-pill .item:hover{transform:scale(1.18)}.tapback-pill .item:active{transform:scale(.92)}.tapback-pill .item.on{background:var(--blue)}.tapback-pill .item.on .tb-love,.tapback-pill .item.on .tb-haha,.tapback-pill .item.on .tb-emph,.tapback-pill .item.on .tb-q{color:#fff}.tapback-pill .item .tb-haha{font-size:13px}.tapback-pill .item .tb-emph,.tapback-pill .item .tb-q{font-size:25px}.tapback-pill .divider{width:1px;height:26px;background:var(--sep);margin:0 4px}.tapback-menu{position:fixed;z-index:3;width:250px;border-radius:13px;overflow:hidden;background:var(--pill);-webkit-backdrop-filter:blur(30px) saturate(1.6);backdrop-filter:blur(30px) saturate(1.6);box-shadow:var(--pill-shadow);animation:menu-in .36s cubic-bezier(.34,1.4,.64,1) both}.tapback-menu.from-right{transform-origin:90% -10%}.tapback-menu.from-left{transform-origin:10% -10%}.tapback-layer.out .tapback-menu{animation:pill-out .16s ease-in both}@keyframes menu-in{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.tapback-menu button{width:100%;display:flex;align-items:center;justify-content:space-between;padding:11px 16px;border:none;background:transparent;color:var(--tx);font-size:16px}.tapback-menu button+button{border-top:1px solid var(--sep)}.tapback-menu button:hover{background:var(--fill2)}.tapback-menu button svg{color:var(--tx)}.tapback-menu button.danger,.tapback-menu button.danger svg{color:var(--red)}.gate{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--bg);z-index:60}.gate.dimmed{background:var(--dim);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.gate-card{width:100%;max-width:300px;background:var(--card);border-radius:14px;padding:20px 18px 16px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--pill-shadow);animation:pill-in .3s cubic-bezier(.34,1.3,.64,1) both;transform-origin:center}.gate-card .lead{display:flex;justify-content:center;color:var(--blue)}.gate-card h1{font-size:17px;font-weight:600;text-align:center;margin:0}.gate-card p{color:var(--tx2);font-size:13px;text-align:center;margin:0}.gate-card input{width:100%;background:var(--fill2);border:1px solid var(--sep);border-radius:8px;padding:8px 10px;color:var(--tx);font-family:inherit;font-size:14px;outline:none}.gate-card input:focus{border-color:var(--blue)}.gate-card button.primary{background:var(--blue);color:#fff;border:none;border-radius:10px;padding:11px;font-weight:600;font-size:15px}.gate-card .err{color:var(--red);font-size:12px;text-align:center;min-height:14px}.gate-card .hint{font-size:11px;color:var(--tx3);text-align:center}.gate-card code{font-size:11px}.gate-card.wide{max-width:400px;max-height:calc(100vh - 48px);overflow:auto}.gate-card .notice{background:var(--fill2);color:var(--tx2);border-radius:8px;padding:8px 10px;font-size:12.5px;text-align:center}.gate-card .field{display:flex;flex-direction:column;gap:4px;font-size:11px;font-weight:500;color:var(--tx2);text-transform:uppercase;letter-spacing:.04em}.gate-card .field .ro{background:var(--fill2);border-radius:8px;padding:8px 10px;font-size:14px;color:var(--tx);text-transform:none;letter-spacing:0}.gate-card .inline{display:flex;gap:6px;align-items:stretch}.gate-card .inline input{flex:1;min-width:0}.gate-card button.secondary{background:var(--fill2);color:var(--tx);border:none;border-radius:10px;padding:9px 12px;font-weight:500;font-size:13px;white-space:nowrap}.gate-card button.secondary:hover{background:var(--fill)}.gate-card button.secondary.danger{color:var(--red)}.gate-card button.link{background:none;border:none;color:var(--blue);font-size:14px;padding:4px 6px}.gate-card button[disabled]{opacity:.6;cursor:default}.gate-card .row-btns{display:flex;gap:8px}.gate-card .row-btns>*{flex:1}.gate-card .card-head{display:flex;align-items:center;justify-content:space-between}.gate-card .card-head h1{text-align:left}.sister-list{display:flex;flex-direction:column;gap:8px}.sister-item{display:flex;flex-direction:column;gap:8px;background:var(--fill2);border-radius:10px;padding:10px 12px}.sister-item .who{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.sister-item .who .n{font-weight:600;font-size:14px}.sister-item .who .u{font-size:12px;color:var(--tx2)}.sister-item .actions{display:flex;gap:6px;flex-wrap:wrap}.sister-item .actions button{flex:1;padding:7px 8px;font-size:12px}.share-card{background:var(--fill2);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px;font-size:13px}.share-card .kv{display:flex;justify-content:space-between;align-items:center;gap:10px}.share-card .kv span{color:var(--tx2)}.share-card code{font-size:13px;user-select:all;background:var(--fill);padding:3px 8px;border-radius:6px;word-break:break-all;text-align:right}.gate-card .details-rows{display:flex;flex-direction:column;gap:6px}.gate-card .details-rows .row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--tx2);justify-content:center}.gate-card .details-rows .row svg{color:var(--blue)}.toast{position:fixed;top:16px;left:50%;transform:translate(-50%);background:var(--pill);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:var(--tx);padding:9px 16px;border-radius:999px;font-size:13px;font-weight:500;z-index:200;box-shadow:var(--pill-shadow);animation:rise .25s ease}@media (max-width: 760px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.msg-row{max-width:78%}.bubble{font-size:17px}.messages{padding:calc(var(--chat-hdr-h) + 2px) 18px 6px}}.login{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:24px;overflow:hidden;background:#0a0f1e;color:#fff;color-scheme:dark}.login-mesh{position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(60% 70% at 20% 15%,#1e8cff 0%,transparent 70%),radial-gradient(55% 65% at 85% 20%,#ff4fa3 0%,transparent 70%),radial-gradient(60% 60% at 70% 90%,#3ee6ff 0%,transparent 70%),#4b2fe0}.login-mesh canvas{display:block;width:100%;height:100%}.login-mesh.is-static canvas{display:none}.login-mesh:after{content:"";position:absolute;inset:0;background:radial-gradient(70% 60% at 50% 48%,rgba(6,8,24,.16),transparent),linear-gradient(180deg,#0608180a,#06081842)}.login-panel{position:relative;z-index:2;width:100%;max-width:372px;display:flex;flex-direction:column;align-items:center;gap:26px;animation:login-in .5s cubic-bezier(.2,.8,.2,1) both}@keyframes login-in{0%{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}.login-brand{display:flex;flex-direction:column;align-items:center;gap:14px}.login-brand .logo{filter:drop-shadow(0 4px 16px rgba(0,0,0,.28))}.login-brand h1{margin:0;font-size:26px;font-weight:700;letter-spacing:-.02em;text-shadow:0 1px 14px rgba(0,0,0,.25)}.login-card{width:100%;box-sizing:border-box;display:flex;flex-direction:column;gap:10px;padding:24px 22px;border-radius:26px;background:linear-gradient(150deg,#ffffff29,#ffffff0f);-webkit-backdrop-filter:blur(40px) saturate(1.5);backdrop-filter:blur(40px) saturate(1.5);border:1px solid rgba(255,255,255,.22);box-shadow:0 30px 70px #00000057,inset 0 1px 1px #ffffff59}.login-card .notice{background:#ffffff1f;color:#ffffffe6;border-radius:12px;padding:9px 12px;font-size:13px;text-align:center}.login-locked{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:4px;border-radius:14px;background:#ffcd7024;border:1px solid rgba(255,205,112,.38);box-shadow:inset 0 1px 1px #ffffff2e;color:#fff;text-align:left}.login-locked-icon{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#ffcd7038;color:#ffd98a}.login-locked-title{font-size:14px;font-weight:600;letter-spacing:-.005em;line-height:1.3;text-wrap:balance}.login-locked-sub{margin-top:2px;font-size:12.5px;color:#ffffffc7}.login-card.is-locked .login-field,.login-card.is-locked .login-forgot{opacity:.5}.login-card.is-locked .login-field,.login-card.is-locked .login-field input,.login-card.is-locked .login-show,.login-card.is-locked .login-submit{cursor:not-allowed}.login-card.is-locked .login-field:focus-within{border-color:#ffffff2e;background:#ffffff1a}.login-card.is-locked .login-submit{opacity:.45;box-shadow:inset 0 1px 1px #ffffff40;filter:saturate(.6)}.login-card.is-locked .login-submit:hover{filter:saturate(.6)}.login-card.is-locked .login-submit:active{transform:none}.login-field{display:flex;align-items:center;gap:11px;height:50px;box-sizing:border-box;border-radius:14px;background:#ffffff1a;border:1px solid rgba(255,255,255,.18);padding:0 16px;box-shadow:inset 0 1px 1px #ffffff24;color:#ffffffd9;transition:border-color .15s,background .15s}.login-field:focus-within{border-color:#ffffff80;background:#ffffff24}.login-field svg{flex:none}.login-field input{flex:1;min-width:0;border:none;background:transparent;outline:none;font:inherit;font-size:15px;color:#ffffffeb}.login-field input::placeholder{color:#ffffff8c}.login-field input[type=password]:not(:placeholder-shown){letter-spacing:3px}.login-field input:-webkit-autofill,.login-field input:-webkit-autofill:focus{-webkit-text-fill-color:#fff;-webkit-box-shadow:0 0 0 1000px #1b2a4a inset;transition:background-color 9999s}.login-show{border:none;background:none;padding:4px 0 4px 6px;font:inherit;font-size:13px;color:#ffffffbf;cursor:pointer}.login-show:hover{color:#fff}.login-forgot{align-self:flex-end;font-size:13px;color:#ffffffd1;margin:2px 2px 0}.login-card .err{color:#ffb4ad;font-size:12.5px;text-align:center;min-height:15px}.login-submit{height:50px;border:none;border-radius:14px;background:linear-gradient(135deg,#0a7cff,#7a4cff);color:#fff;font:inherit;font-size:16px;font-weight:600;cursor:pointer;box-shadow:0 10px 28px #0a7cff73,inset 0 1px 1px #fff6;transition:transform .15s,filter .15s}.login-submit:hover{filter:brightness(1.06)}.login-submit:active{transform:scale(.985)}.login-submit[disabled]{opacity:.7;cursor:default}.login-foot{max-width:320px;font-size:13px;line-height:1.45;color:#ffffffd9;text-shadow:0 1px 8px rgba(0,0,0,.25);text-align:center;text-wrap:balance}.login-foot svg{vertical-align:-2px;margin-right:5px}.login-site{position:absolute;right:20px;bottom:16px;z-index:1;font-size:13px;font-weight:500;letter-spacing:.01em;color:#fffc;text-decoration:none;text-shadow:0 1px 8px rgba(0,0,0,.3);transition:color .12s ease}.login-site:hover{color:#fff}.login-site:focus-visible{outline:2px solid rgba(255,255,255,.7);outline-offset:3px;border-radius:4px}.call-overlay{position:fixed;inset:0;z-index:150;display:flex;flex-direction:column;align-items:center;color:#fff;background:radial-gradient(120% 80% at 50% 0%,#3a3a42,#1c1c1e 55%,#000);animation:call-in var(--dur-med) var(--ease-out)}@keyframes call-in{0%{opacity:0;transform:scale(1.02)}}.call-remote{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000;opacity:0;transition:opacity var(--dur-med) var(--ease-out)}.call-overlay.has-remote-video .call-remote{opacity:1}.call-info{position:relative;margin-top:max(12vh,56px);display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:0 24px;transition:margin-top var(--dur-med) var(--ease-out)}.call-info .avatar{width:96px;height:96px;font-size:40px;margin-bottom:10px;transition:width var(--dur-med) var(--ease-out),height var(--dur-med) var(--ease-out),opacity var(--dur-fast)}.call-name{font-size:28px;font-weight:600;letter-spacing:-.01em}.call-status{font-size:16px;color:#ebebf5b3;font-variant-numeric:tabular-nums}.call-e2e{display:flex;align-items:center;gap:4px;margin-top:2px;font-size:11px;color:#ebebf573}.call-overlay[data-phase=incoming] .avatar,.call-overlay[data-phase=outgoing] .avatar{animation:call-pulse 1.8s ease-in-out infinite}@keyframes call-pulse{0%,to{box-shadow:0 0 #ffffff38}60%{box-shadow:0 0 0 18px #fff0}}.call-overlay.has-remote-video .call-info{margin-top:max(env(safe-area-inset-top),18px);text-shadow:0 1px 8px rgba(0,0,0,.6)}.call-overlay.has-remote-video .call-info .avatar,.call-overlay.has-remote-video .call-e2e{display:none}.call-overlay.has-remote-video .call-name{font-size:18px}.call-overlay.has-remote-video .call-status{font-size:13px;color:#ffffffd9}.call-peer-muted{position:relative;margin-top:14px;display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;font-size:13px;background:#00000073;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.call-peer-muted[hidden]{display:none}.call-local{position:absolute;right:16px;bottom:calc(132px + env(safe-area-inset-bottom));width:min(28vw,180px);aspect-ratio:3 / 4;object-fit:cover;transform:scaleX(-1);border-radius:14px;background:#000;box-shadow:0 8px 30px #00000080;display:none}.call-overlay.has-local-video .call-local{display:block}.call-overlay[data-phase=ended] .call-local{display:none}.call-controls{position:relative;margin-top:auto;margin-bottom:calc(40px + env(safe-area-inset-bottom));display:flex;gap:22px;padding:0 16px}.call-btn{width:64px;height:64px;border:none;border-radius:50%;display:grid;place-items:center;cursor:pointer;color:#fff;background:#ffffff2e;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);transition:background var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.call-btn:hover{background:#ffffff47}.call-btn:active{transform:scale(.94)}.call-btn:focus-visible{outline:2px solid #fff;outline-offset:3px}.call-btn:disabled{opacity:.4;cursor:default}.call-btn.off{background:#fff;color:#1c1c1e}.call-btn.call-hangup{background:#ff3b30}.call-btn.call-hangup:hover{background:#ff5147}.call-btn.call-accept{background:#34c759;display:none}.call-btn.call-accept:hover{background:#4cd36c}.call-overlay[data-phase=incoming] .call-accept{display:grid;order:2}.call-overlay[data-phase=incoming] .call-mic,.call-overlay[data-phase=incoming] .call-cam{display:none}.call-overlay[data-phase=incoming] .call-controls{gap:72px}.call-overlay[data-phase=ended] .call-controls{visibility:hidden}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.avatar.avatar-xl{width:88px;height:88px;font-size:36px}.avatar-edit{position:relative;padding:0;border:none;background:none;border-radius:50%;color:inherit}.avatar-edit:disabled{cursor:default}.avatar-edit:disabled .badge{display:none}.avatar-edit .badge{position:absolute;right:-2px;bottom:-2px;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--blue);color:#fff;border:2.5px solid var(--card);transition:transform var(--dur-fast) var(--ease-out)}.avatar-edit:hover .badge{transform:scale(1.08)}.avatar-edit:focus-visible{outline:2px solid var(--blue);outline-offset:3px}.gate-card.profile-editor{max-width:360px;gap:12px}.gate-card.profile-editor>p svg{vertical-align:-1px;margin-right:2px}.pe-stage{align-self:center;width:168px;height:168px;border-radius:50%;position:relative;flex:none;box-shadow:0 0 0 1px var(--sep),0 8px 28px #00000029;transition:box-shadow var(--dur-fast) var(--ease-out)}.pe-stage.drop{box-shadow:0 0 0 3px var(--blue),0 8px 28px #00000029}.pe-stage .pe-avatar{width:100%;height:100%;font-size:70px}.pe-stage .pe-canvas{width:100%;height:100%;border-radius:50%;display:block;cursor:grab;touch-action:none}.pe-stage .pe-canvas[hidden],.pe-stage .pe-avatar[hidden]{display:none}.pe-stage.cropping .pe-canvas:active{cursor:grabbing}.pe-seg{display:flex;padding:2px;border-radius:9px;background:var(--fill2)}.pe-seg button{flex:1;border:none;background:none;color:var(--tx);font-size:13px;font-weight:500;padding:6px 0;border-radius:7px}.pe-seg button.on{background:var(--seg-on, var(--card));box-shadow:0 1px 3px #00000029;font-weight:600}.pe-pane{display:flex;flex-direction:column;gap:8px}.pe-pane[hidden],.pe-colors-wrap[hidden],.pe-zoom[hidden]{display:none}.pe-pane button.secondary{display:flex;align-items:center;justify-content:center;gap:6px}.pe-label{font-size:11px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.04em}.pe-zoom{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--tx2)}.pe-zoom input{flex:1;accent-color:var(--blue);padding:0;border:none;background:none}.pe-colors-wrap{display:flex;flex-direction:column;gap:8px}.pe-colors{display:grid;grid-template-columns:repeat(11,1fr);gap:7px}.pe-swatch{width:100%;aspect-ratio:1;padding:0;border-radius:50%;border:none;background:linear-gradient(180deg,var(--avatar-a),var(--avatar-b));box-shadow:inset 0 0 0 1px #00000014;transition:transform var(--dur-fast) var(--ease-out)}.pe-swatch:hover{transform:scale(1.1)}.pe-swatch[aria-checked=true]{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--blue)}.pe-fonts{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.pe-font{display:flex;flex-direction:column;align-items:center;gap:1px;padding:7px 4px 6px;border:1.5px solid transparent;border-radius:10px;background:var(--fill2);color:var(--tx);font-size:11px}.pe-font .glyph{font-size:19px;line-height:1.2}.pe-font>span:last-child{color:var(--tx2)}.pe-font[aria-checked=true]{border-color:var(--blue);background:color-mix(in srgb,var(--blue) 12%,transparent)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .pe-seg{--seg-on: var(--fill)}}:root[data-theme=dark] .pe-seg{--seg-on: var(--fill)}
