:root{--bg:#0b1020;--bg-soft:#141b30;--bg-panel:#182039;--line:#26304d;--text:#e8ecf6;--text-dim:#9aa6c2;--accent:#5b8cff;--accent-press:#4a76e0;--danger:#ef4444;--own:#2f6df6;--other:#232d49;--radius:16px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);overscroll-behavior:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:15px;line-height:1.5;position:fixed;inset:0;overflow:hidden}.screen{width:100%;max-width:720px;height:var(--app-height,100dvh);transform:translateY(var(--vv-top,0px));flex-direction:column;margin-inline:auto;display:flex;position:fixed;top:0;left:0;right:0}.lobby{padding:calc(20px + env(safe-area-inset-top)) 20px calc(20px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch;justify-content:center;overflow-y:auto}.lobby-card{background:var(--bg-soft);border:1px solid var(--line);border-radius:20px;padding:26px 22px}.brand{align-items:center;gap:10px;margin-bottom:14px;display:flex}.brand h1{margin:0;font-size:22px}.brand-dot{background:linear-gradient(135deg, var(--accent), #7d62ff);border-radius:50%;width:12px;height:12px;box-shadow:0 0 14px #5b8cffb3}.lobby-subtitle{color:var(--text-dim);margin:0 0 18px}.invite-box{margin-bottom:18px}.invite-label{color:var(--text-dim);margin-bottom:6px;font-size:12px;display:block}.invite-row{gap:8px;display:flex}.invite-input{background:var(--bg);border:1px solid var(--line);min-width:0;color:var(--text);border-radius:10px;flex:1;padding:10px 12px;font-size:13px}.lobby-form{flex-direction:column;gap:10px;display:flex}.field-label{color:var(--text-dim);font-size:13px}.text-input{background:var(--bg);border:1px solid var(--line);color:var(--text);border-radius:12px;width:100%;padding:13px 14px;font-size:16px}.text-input.small{width:90px;padding:9px 10px;font-size:16px}.text-input:focus,.invite-input:focus,.select:focus,.composer-input:focus{border-color:var(--accent);outline:none}.btn-primary{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:12px;padding:13px 16px;font-size:16px;font-weight:600}.btn-primary:active{background:var(--accent-press)}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-secondary{background:var(--bg-panel);color:var(--text);border:1px solid var(--line);cursor:pointer;white-space:nowrap;border-radius:10px;padding:10px 14px;font-size:14px}.lobby-hint{color:var(--text-dim);margin:18px 0 0;font-size:12px}.boot-error{color:var(--danger);margin:8px 0 0}.chat-header{padding:calc(12px + env(safe-area-inset-top)) 16px 12px;border-bottom:1px solid var(--line);background:var(--bg-soft);flex:none;justify-content:space-between;align-items:center;display:flex}.chat-title{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.chat-title-text{min-width:0}.chat-title strong{text-overflow:ellipsis;white-space:nowrap;font-size:16px;display:block;overflow:hidden}.chat-sub{color:var(--text-dim);font-size:12px}.status-dot{border-radius:50%;flex:none;width:10px;height:10px}.status-dot.online{background:#22c55e}.status-dot.connecting,.status-dot.reconnecting{background:#f59e0b}.chat-actions{flex:none;gap:8px;margin-left:10px;display:flex}.icon-btn{background:var(--bg-panel);border:1px solid var(--line);color:var(--text);cursor:pointer;border-radius:12px;width:40px;height:40px;font-size:18px}.icon-btn.danger{color:var(--danger)}.sheet-backdrop{z-index:35;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#030712a8;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.panel{border:1px solid var(--line);background:var(--bg-soft);width:min(720px,100%);padding:8px 16px calc(18px + env(safe-area-inset-bottom));overscroll-behavior:contain;border-bottom:none;border-radius:22px 22px 0 0;flex-direction:column;gap:0;max-height:min(78dvh,680px);display:flex;overflow-y:auto;box-shadow:0 -20px 60px #00000061}.sheet-handle{background:var(--line);border-radius:999px;flex:none;width:42px;height:4px;margin:2px auto 8px}.sheet-header{z-index:1;background:var(--bg-soft);justify-content:space-between;align-items:center;padding:4px 0 10px;display:flex;position:sticky;top:-8px}.sheet-header h2{margin:0;font-size:18px}.panel-block{padding:14px 0}.panel-block+.panel-block{border-top:1px solid var(--line)}.panel-block h3{color:var(--text-dim);margin:0 0 10px;font-size:13px;font-weight:600}.preset-row{flex-wrap:wrap;gap:8px;margin-bottom:10px;display:flex}.chip{background:var(--bg-panel);border:1px solid var(--line);color:var(--text);cursor:pointer;border-radius:999px;padding:7px 14px;font-size:13px}.chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.custom-burn{grid-template-columns:minmax(76px,1fr) minmax(84px,1fr) auto;align-items:center;gap:8px;display:grid}.custom-burn .text-input.small,.custom-burn .select{width:100%;min-width:0}.panel-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.btn-leave{background:#ef444414}.select{background:var(--bg);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:9px 10px;font-size:16px}.member-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.member-item{color:var(--text-dim);align-items:center;gap:10px;display:flex}.avatar{color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:30px;height:30px;font-size:13px;font-weight:600;display:inline-flex}.message-list{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex-direction:column;flex:1;gap:14px;min-height:0;padding:16px;display:flex;overflow-y:auto}.empty-hint{color:var(--text-dim);text-align:center;margin:auto;font-size:14px}.bubble-row{align-items:flex-end;gap:8px;max-width:86%;display:flex}.bubble-row.own{flex-direction:row-reverse;align-self:flex-end}.bubble-row.other{align-self:flex-start}.bubble-wrap{flex-direction:column;gap:3px;min-width:0;display:flex}.bubble-name{color:var(--text-dim);padding-left:4px;font-size:12px}.bubble{border-radius:var(--radius);word-break:break-word;white-space:pre-wrap;padding:9px 13px}.bubble-row.own .bubble{background:var(--own);color:#fff;border-bottom-right-radius:5px}.bubble-row.other .bubble{background:var(--other);border-bottom-left-radius:5px}.bubble-image{cursor:pointer;border-radius:10px;max-width:220px;max-height:280px;display:block}.bubble-meta{color:var(--text-dim);gap:8px;padding:0 4px;font-size:11px;display:flex}.bubble-row.own .bubble-meta{justify-content:flex-end}.burn-tag{font-variant-numeric:tabular-nums}.composer-area{background:var(--bg-soft);flex:none;position:relative}.composer{padding:10px 12px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--bg-soft);flex:none;align-items:flex-end;gap:8px;display:flex}.composer .icon-btn,.composer .btn-primary.send{flex:none}.composer-input{resize:none;scrollbar-width:thin;scrollbar-color:var(--line) transparent;background:var(--bg);border:1px solid var(--line);min-width:0;max-height:120px;color:var(--text);border-radius:14px;flex:1;padding:11px 14px;font-family:inherit;font-size:16px;line-height:1.4;overflow-y:hidden}.btn-primary.send{border-radius:50%;width:42px;height:42px;padding:0;font-size:22px;line-height:1}.toast{left:50%;top:calc(74px + env(safe-area-inset-top));color:#fff;z-index:30;text-align:center;overflow-wrap:anywhere;background:#000000d1;border-radius:999px;width:max-content;max-width:calc(100% - 28px);padding:10px 16px;font-size:13px;position:fixed;transform:translate(-50%)}.image-preview{z-index:40;touch-action:none;background:#000000eb;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0;overflow:hidden}.image-preview img{transform-origin:50%;will-change:transform;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;border-radius:8px;max-width:100%;max-height:100%}.preview-close{top:calc(12px + env(safe-area-inset-top));color:#fff;cursor:pointer;z-index:41;background:#00000080;border:none;border-radius:50%;width:40px;height:40px;font-size:24px;line-height:1;position:fixed;right:16px}.conn-badge{color:var(--text-dim);border:1px solid var(--line);border-radius:999px;margin-left:auto;padding:2px 10px;font-size:12px}.conn-badge.online{color:#22c55e;border-color:#22c55e55}.conn-badge.connecting,.conn-badge.reconnecting{color:#f59e0b;border-color:#f59e0b55}.tabs{background:var(--bg);border:1px solid var(--line);border-radius:12px;gap:6px;margin-bottom:18px;padding:4px;display:flex}.tab{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:9px;flex:1;padding:9px 0;font-size:14px}.tab.active{background:var(--accent);color:#fff;font-weight:600}.ok-text{color:#22c55e;margin:4px 0 0;font-size:13px}.btn-danger{width:100%;color:var(--danger);cursor:pointer;background:0 0;border:1px solid #ef444455;border-radius:12px;padding:11px;font-size:15px}.btn-danger:active{background:#ef44441a}.send-failed{color:var(--danger)}.overlay{z-index:50;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:calc(20px + env(safe-area-inset-top)) 20px calc(20px + env(safe-area-inset-bottom));background:#070b18e0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.overlay.lock{background:#070b18f7}.overlay-card{background:var(--bg-soft);border:1px solid var(--line);border-radius:20px;flex-direction:column;gap:12px;width:100%;max-width:360px;padding:24px 22px;display:flex}.overlay-card h2{text-align:center;margin:0;font-size:19px}.overlay-sub{color:var(--text-dim);text-align:center;margin:0 0 4px;font-size:13px}.overlay-actions{gap:10px;display:flex}.overlay-actions .btn-secondary,.overlay-actions .btn-primary{text-align:center;flex:1}.lock-icon{text-align:center;font-size:34px}.quote{background:#00000038;border-left:3px solid #ffffffb3;border-radius:8px;flex-direction:column;gap:1px;margin-top:6px;padding:4px 9px;font-size:12.5px;display:flex}.bubble-row.other .quote{border-left-color:var(--accent);background:#ffffff0f}.quote-name{opacity:.95;font-size:11.5px;font-weight:600}.quote-text{white-space:nowrap;text-overflow:ellipsis;opacity:.8;max-width:220px;overflow:hidden}.reply-btn{color:var(--text-dim);cursor:pointer;opacity:.6;background:0 0;border:none;padding:0;font-size:13px}.reply-btn:active{opacity:1}.read-ticks{color:#4fd1ff;cursor:pointer;background:0 0;border:none;align-items:center;padding:0;line-height:1;display:inline-flex}.read-ticks .tick{font-size:13px;font-weight:700}.read-ticks .tick-2{margin-left:-6px}.sent-tick{color:var(--text-dim);font-weight:700}.reply-bar{border-top:1px solid var(--line);background:var(--bg-panel);align-items:center;gap:8px;padding:8px 14px;display:flex}.reply-bar-text{border-left:3px solid var(--accent);flex-direction:column;flex:1;min-width:0;padding-left:8px;display:flex}.reply-bar-name{color:var(--accent);font-size:12px;font-weight:600}.reply-bar-preview{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.system-line{text-align:center;align-self:center;max-width:90%}.system-line span{color:var(--text-dim);background:#ffffff0f;border-radius:999px;padding:4px 12px;font-size:12.5px;display:inline-block}.pinpad{flex-direction:column;align-items:center;gap:22px;margin:8px 0 4px;display:flex}.pin-dots{gap:18px;display:flex}.pin-dot{border:1.5px solid var(--text-dim);border-radius:50%;width:14px;height:14px;transition:background .12s,border-color .12s}.pin-dot.filled{background:var(--accent);border-color:var(--accent)}.pin-keys{grid-template-columns:repeat(3,76px);gap:14px;display:grid}.pin-key{border:1px solid var(--line);background:var(--bg-panel);height:76px;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:50%;font-size:28px;font-weight:500}.pin-key:active{background:var(--accent);border-color:var(--accent);color:#fff}.pin-key-del{background:0 0;border:none;font-size:24px}.pin-key-del:active{color:var(--accent);background:0 0}.pin-key-empty{visibility:hidden}.bubble.bubble-media{background:var(--other);padding:4px}.bubble-row.own .bubble.bubble-media{background:var(--own)}.bubble-media .bubble-image{max-width:240px;max-height:300px}.media-status{text-align:center;min-width:120px;color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:22px 14px;font-size:13px;display:inline-block}.attach-menu{z-index:20;border:1px solid var(--line);background:var(--bg-panel);border-radius:16px;gap:8px;width:min(280px,100% - 68px);padding:8px;display:flex;position:absolute;bottom:calc(100% + 8px);left:56px;box-shadow:0 14px 36px #00000061}.attach-menu button{background:var(--bg-soft);border:1px solid var(--line);color:var(--text);cursor:pointer;border-radius:12px;flex:1;padding:12px 8px;font-size:14px}.emoji-picker{border-top:1px solid var(--line);background:var(--bg-soft);flex-direction:column;max-height:38dvh;display:flex}.emoji-tabs{border-bottom:1px solid var(--line);gap:4px;padding:8px;display:flex;overflow-x:auto}.emoji-tab{cursor:pointer;background:0 0;border:none;border-radius:9px;flex:none;width:40px;height:36px;font-size:20px}.emoji-tab.active{background:var(--bg-panel)}.emoji-grid{grid-template-columns:repeat(auto-fit,minmax(38px,1fr));gap:2px;padding:8px;display:grid;overflow-y:auto}.emoji-cell{cursor:pointer;background:0 0;border:none;border-radius:8px;padding:4px 0;font-size:26px}.emoji-cell:active{background:var(--bg-panel)}.overlay.recorder{background:#000000f2;flex-direction:column;gap:16px}.recorder-stage{width:100%;max-width:520px;max-height:calc(var(--app-height,100dvh) - 190px);aspect-ratio:3/4;background:#000;border-radius:16px;position:relative;overflow:hidden}.recorder-preview{object-fit:cover;width:100%;height:100%}.recorder-timer{color:#ff5b5b;font-variant-numeric:tabular-nums;background:#00000080;border-radius:999px;padding:4px 10px;font-size:13px;position:absolute;top:12px;left:12px}.recorder-actions{justify-content:space-between;align-items:center;width:100%;max-width:520px;padding:0 8px;display:flex}.rec-btn{cursor:pointer;background:#ef4444;border:4px solid #fff;border-radius:50%;width:64px;height:64px}.rec-btn.recording{background:#ef4444;border-radius:16px}.rec-btn:disabled{opacity:.4}.net-banner{text-align:center;color:#f59e0b;background:#f59e0b1f;flex:none;padding:5px 12px;font-size:12.5px}.typing-line{color:var(--text-dim);flex:none;padding:4px 16px;font-size:12.5px;font-style:italic}.composer-input::-webkit-scrollbar{width:6px}.composer-input::-webkit-scrollbar-thumb{background:var(--line);border-radius:999px}.composer-input::-webkit-scrollbar-track{background:0 0}.app-locked .screen{visibility:hidden}.privacy-shield{z-index:45;background:var(--bg);opacity:0;pointer-events:none;will-change:opacity;justify-content:center;align-items:center;font-size:44px;transition:none;display:flex;position:fixed;inset:0}.app-locked .privacy-shield{opacity:1}.media-wrap{display:inline-block;position:relative}.media-overlay{background:linear-gradient(#0000,#0000008c);border-bottom-right-radius:10px;border-bottom-left-radius:10px;flex-direction:column;gap:4px;padding:8px;display:flex;position:absolute;bottom:0;left:0;right:0}.media-overlay-text{color:#fff;text-align:center;font-size:12px}.media-loading{flex-direction:column;align-items:center;gap:8px;min-width:140px;padding:22px 14px;display:flex}.media-bar{background:#ffffff40;border-radius:999px;width:100%;height:5px;overflow:hidden}.media-bar-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .15s linear}@media (width<=390px){.chat-header{padding-left:12px;padding-right:12px}.message-list{padding:12px}.bubble-row{max-width:92%}.composer{gap:6px;padding-left:8px;padding-right:8px}.composer .icon-btn{width:38px;height:38px}.composer-input{padding-left:11px;padding-right:11px}.custom-burn{grid-template-columns:1fr 1fr}.custom-burn .btn-secondary{grid-column:1/-1;width:100%}.panel-actions{grid-template-columns:1fr}}@media (orientation:landscape) and (height<=600px){.overlay.recorder{padding:12px calc(12px + env(safe-area-inset-right)) 12px calc(12px + env(safe-area-inset-left));flex-direction:row}.recorder-stage{width:min(68vw,520px);height:calc(var(--app-height,100dvh) - 24px);aspect-ratio:auto;max-height:none}.recorder-actions{width:104px;height:100%;max-height:calc(var(--app-height,100dvh) - 24px);flex-direction:column;justify-content:center;gap:18px}.overlay.recorder .overlay-sub,.overlay.recorder .boot-error{display:none}}
