:root{--bg: #ffffff;--bar: rgba(249, 249, 249, .88);--sidebar: #f2f2f7;--sidebar-bd: rgba(0, 0, 0, .08);--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}@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);--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);--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}button{font-family:inherit;cursor:pointer}.app-shell{display:grid;grid-template-columns:300px 1fr;height:100%}.sidebar{background:var(--sidebar);border-right:1px solid var(--sidebar-bd);display:flex;flex-direction:column;min-height:0}.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-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}.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.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}.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}.icon-btn:hover{color:var(--tx);background:var(--fill)}.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-header{position:relative;padding:8px 16px;display:flex;flex-direction:column;align-items:center;gap:4px;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--sep);z-index:2}.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:8px;transition:background .15s}.hdr-search:hover{background:var(--fill2)}.hdr-search.active{background:var(--fill)}.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)}.chat-search{position:relative;z-index:4;padding:8px 12px;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--sep);animation:search-drop .18s cubic-bezier(.2,.8,.2,1)}.chat-search-field{display:flex;align-items:center;gap:8px;background:var(--fill2);border-radius:10px;padding:7px 10px;color:var(--tx2)}.chat-search-field input{flex:1;min-width:0;border:none;background:transparent;outline:none;color:var(--tx);font:inherit;font-size:14px}.chat-search-field input::placeholder{color:var(--tx2)}.chat-search-field input::-webkit-search-cancel-button{-webkit-appearance:none}.chat-search-close{flex:none;display:grid;place-items:center;width:22px;height:22px;border:none;background:transparent;color:var(--tx2);cursor:pointer;border-radius:6px}.chat-search-close:hover{color:var(--tx)}.chat-search-results{position:absolute;left:12px;right:12px;top:calc(100% - 1px);max-height:min(52vh,360px);overflow-y:auto;background:var(--card);border:1px solid var(--sep);border-radius:12px;box-shadow:var(--pill-shadow);padding:6px;display:flex;flex-direction:column;gap:1px}.chat-search-item{display:flex;flex-direction:column;gap:3px;width:100%;text-align:left;border:none;background:transparent;cursor:pointer;padding:8px 10px;border-radius:8px;font:inherit}.chat-search-item:hover{background:var(--fill2)}.csi-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.csi-who{font-size:12px;font-weight:600;color:var(--tx)}.csi-time{font-size:11px;color:var(--tx2);flex:none}.csi-text{font-size:13px;line-height:1.35;color:var(--tx2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.csi-text b{font-weight:700;color:var(--tx)}.chat-search-empty{padding:14px;text-align:center;color:var(--tx2);font-size:13px}@keyframes search-drop{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@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{flex:1;overflow-y:auto;padding:12px 18px 8px;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:18px;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);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.sent.tail{border-bottom-right-radius:4px}.bubble.recv.tail{border-bottom-left-radius:4px}.bubble.sent.grp-prev{border-top-right-radius:5px}.bubble.sent.grp-next{border-bottom-right-radius:5px}.bubble.recv.grp-prev{border-top-left-radius:5px}.bubble.recv.grp-next{border-bottom-left-radius:5px}.bubble.pending{opacity:.7}.bubble.undecryptable{font-style:italic;color:var(--tx2);background:var(--fill2)}.bubble.anim{animation:rise .22s cubic-bezier(.2,.8,.2,1)}.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-svg{position:absolute;bottom:0;width:20px;height:20px;z-index:1;pointer-events:none}.bubble.sent .tail-svg{right:-7px}.bubble.recv .tail-svg{left:-7px;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(--fill2)}.bubble.image{padding:0;background:var(--fill2);overflow:hidden;border-radius:18px;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}.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;display:flex;align-items:center;justify-content:center;background:#000000eb;cursor:zoom-out;opacity:0;transition:opacity .18s ease}.lightbox.in{opacity:1}.lightbox img{max-width:96vw;max-height:96vh;object-fit:contain;border-radius:6px;transform:scale(.96);transition:transform .22s cubic-bezier(.2,.8,.2,1)}.lightbox.in img{transform:scale(1)}.receipt{font-size:11px;color:var(--tx2);margin:3px 4px 2px 0}.receipt b{font-weight:600}@keyframes rise{0%{opacity:0;transform:translateY(6px) scale(.98)}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:hover{color:var(--tx)}.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}.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 .15s cubic-bezier(.34,1.56,.64,1),opacity .15s ease}.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)}.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:10px 12px 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}
