@import "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;600;700&family=Space+Grotesk:wght@400;500;600&display=swap";.boot-screen{z-index:9999;background:#0a0f1e;flex-direction:column;justify-content:center;align-items:center;gap:24px;display:flex;position:fixed;inset:0}.boot-screen.light-theme{background:#f0f4f8}.light-theme .page-enter-active,.light-theme .page-leave-active{transition:opacity .2s,transform .2s}.light-theme .page-enter-from{opacity:0;transform:translate(12px)}.light-theme .page-leave-to{opacity:0;transform:translate(-12px)}.boot-logo{animation:2s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.boot-arc{transition:stroke-dashoffset .5s}.boot-text{color:#ffffff80;letter-spacing:2px;font-size:13px}.boot-error{color:#f87171;text-align:center;max-width:280px;font-size:13px}.boot-retry{color:#22d3b9;cursor:pointer;background:#22d3b926;border:1px solid #22d3b966;border-radius:8px;padding:8px 24px;font-size:14px}.global-toast{color:#fff;z-index:9999;pointer-events:none;text-align:center;word-break:break-word;background:#000000d9;border-radius:8px;max-width:80vw;padding:12px 24px;font-size:14px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.toast-enter-active,.toast-leave-active{transition:opacity .25s}.toast-enter-from,.toast-leave-to{opacity:0}.light-theme .global-toast{color:var(--color-text);background:#fffffff2;border:1px solid #0000001a;box-shadow:0 4px 20px #00000026}:root{--color-bg:#080d1a;--color-bg-2:#0e1628;--color-surface:#101a32d9;--color-surface-2:#162446b3;--color-primary:#3d7fff;--color-primary-glow:#3d7fff59;--color-accent:#00d4ff;--color-accent-2:#a78bfa;--color-text:#e8eef8;--color-text-2:#8fa3c8;--color-text-3:#4a6080;--color-border:#3d7fff26;--color-border-2:#ffffff14;--color-success:#34d399;--color-warning:#fbbf24;--color-danger:#f87171;--bubble-mine:linear-gradient(135deg, #2563eb, #3d7fff);--bubble-other:#162446e6;--radius-sm:8px;--radius-md:14px;--radius-lg:20px;--radius-xl:28px;--radius-full:9999px;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:40px;--font-main:"Noto Sans SC", "PingFang SC", "Hiragino Sans GB", sans-serif;--font-display:"Space Grotesk", var(--font-main);--glass-bg:#0c162dbf;--glass-blur:blur(20px) saturate(160%);--glass-border:1px solid #3d7fff2e;--shadow-sm:0 2px 12px #00000040;--shadow-md:0 8px 32px #0006;--shadow-glow:0 0 30px #3d7fff40;--shadow-glow-sm:0 0 12px #3d7fff33;--safe-bottom:env(safe-area-inset-bottom,0px);--safe-top:env(safe-area-inset-top,0px);--ease-spring:cubic-bezier(.16, 1, .3, 1);--ease-smooth:cubic-bezier(.4, 0, .2, 1);--dur-fast:.15s;--dur-normal:.3s;--dur-slow:.5s}:root.light-theme,.light-theme{--color-bg:#f0f4f8;--color-bg-2:#fff;--color-surface:#ffffffeb;--color-surface-2:#ffffffd9;--color-primary:#3d7fff;--color-primary-glow:#3d7fff40;--color-accent:#09f;--color-accent-2:#8b5cf6;--color-text:#1a2332;--color-text-2:#5a6a80;--color-text-3:#9aa8b8;--color-border:#3d7fff33;--color-border-2:#00000014;--color-success:#10b981;--color-warning:#f59e0b;--color-danger:#ef4444;--bubble-mine:linear-gradient(135deg, #3d7fff, #5b9cff);--bubble-other:#fffffff2;--glass-bg:#ffffffd9;--glass-blur:blur(16px) saturate(180%);--glass-border:1px solid #3d7fff1f;--shadow-sm:0 2px 12px #00000014;--shadow-md:0 8px 32px #0000001f;--shadow-glow:0 0 20px #3d7fff26;--shadow-glow-sm:0 0 8px #3d7fff26}.light-theme .btn-ghost:active{background:#0000000d}.light-theme ::-webkit-scrollbar-thumb{background:#3d7fff40}.light-theme ::-webkit-scrollbar-track{background:#0000000d}.light-theme .app-bg{background:radial-gradient(ellipse 120% 80% at 80% 0%, #3d7fff14 0%, transparent 50%), var(--color-bg)}.light-theme .app-bg:after{background-image:linear-gradient(#3d7fff08 1px,#0000 1px),linear-gradient(90deg,#3d7fff08 1px,#0000 1px)}.light-theme .glass-card{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffe6;border:1px solid #3d7fff26}.light-theme .conv-header,.light-theme .chat-header{background:#fffffffa;border-bottom-color:#00000014;box-shadow:0 1px 3px #0000000d}.light-theme .header-name{color:var(--color-text)}.light-theme .header-status{color:var(--color-text-3)}.light-theme .header-status.ready{color:var(--color-success)}.light-theme .back-btn svg{fill:var(--color-text)}.light-theme .chat-input-area{background:#fffffff2;border-top-color:#00000014}.light-theme .bubble-other{background:#fff;border:1px solid #00000014}.light-theme .bubble-mine{background:linear-gradient(135deg,#3d7fff,#5b9cff)}.light-theme .icon-btn{background:#0000000a;border-color:#0000001a}.light-theme .icon-btn:active{background:#00000014}.light-theme .conv-item{background:#ffffffe6;border:1px solid #0000000f;box-shadow:0 1px 4px #0000000a}.light-theme .conv-item:active{background:#3d7fff14;transform:scale(.98)}.light-theme .conv-name{color:var(--color-text)}.light-theme .conv-time{color:var(--color-text-3)}.light-theme .conv-preview{color:var(--color-text-2)}.light-theme .contact-name{color:var(--color-text)}.light-theme .contact-status{color:var(--color-text-2)}.light-theme .conv-avatar{border-color:#00000014}.light-theme .conv-unread{background:var(--color-primary)}.light-theme .skeleton-item{background:#00000008}.light-theme .skeleton-line{background:linear-gradient(90deg,#0000000f 25%,#00000014 50%,#0000000f 75%) 0 0/200%}.light-theme .empty-state{color:var(--color-text-3)}.light-theme .empty-icon{opacity:.4}.light-theme .new-conv-btn{background:var(--color-primary);color:#fff}.light-theme .contact-item{background:#ffffffe6;border-bottom-color:#0000000f}.light-theme .contact-avatar{border-color:#00000014}.light-theme .conv-page,.light-theme .chat-page{background:var(--color-bg)}.app-bg{z-index:-1;background:var(--color-bg);position:fixed;inset:0}.light-theme .status-dot{border-color:#fff}.light-theme .input-toolbar{background:#fffffff2}.light-theme .tool-btn{color:var(--color-text-2);background:#0000000d}.light-theme .tool-btn:active,.light-theme .tool-btn.active{color:var(--color-primary);background:#3d7fff26}.light-theme .input-box{color:var(--color-text);background:#0000000a;border-color:#00000014}.light-theme .input-box:focus-within{border-color:var(--color-primary)}.light-theme .input-box textarea{color:var(--color-text);background:0 0}.light-theme .input-box textarea::placeholder{color:var(--color-text-3)}.light-theme .send-btn{background:var(--color-primary);color:#fff}.light-theme .send-btn:disabled{background:#3d7fff4d}.light-theme .emoji-picker{background:#fffffffa;border:1px solid #00000014;box-shadow:0 -4px 20px #0000001a}.light-theme .emoji-category{border-top:1px solid #0000000f}.light-theme .emoji-item:hover{background:#3d7fff1a}.light-theme .image-preview-modal{background:#000000e6}.light-theme .preview-close{color:#fff;background:#fff3}.light-theme .bubble-custom{color:var(--color-text-2);background:#0000000a;border:1px solid #0000000f}.light-theme .file-msg{background:#0000000a;border:1px solid #0000000f}.light-theme .video-msg{background:#0000000a}.light-theme .custom-link{color:var(--color-primary)}.light-theme .call-signal,.light-theme .survey-msg,.light-theme .group-create-msg{color:var(--color-text-2)}.light-theme .rich-text-msg{color:var(--color-text)}.light-theme .rich-text-msg a{color:var(--color-primary)}.light-theme .msg-list{background:0 0}.light-theme .bubble{color:var(--color-text)}.light-theme .bubble-other{background:#fff;border:1px solid #00000014;box-shadow:0 1px 3px #0000000d}.light-theme .bubble-mine{color:#fff;background:linear-gradient(135deg,#3d7fff,#5b9cff)}.light-theme .sender-name{color:var(--color-text-2)}.light-theme .msg-time,.light-theme .msg-sending{color:var(--color-text-3)}.light-theme .msg-actions{background:#fffffff2;border:1px solid #00000014;box-shadow:0 2px 12px #0000001a}.light-theme .msg-failed{color:var(--color-danger)}.light-theme .msg-image{border-radius:var(--radius-md)}.light-theme .audio-wave{background:var(--color-primary)}.light-theme .emoji-msg{font-size:40px}.light-theme .time-group-label{color:var(--color-text-3);background:#0000000a}.video-call-page{background:#0a0a0a}.light-theme .video-call-page{background:linear-gradient(#1a1a2e 0%,#0f0f1a 100%)}.light-theme .incoming-card{background:#fffffff2;border:1px solid #00000014;box-shadow:0 8px 40px #0003}.light-theme .dial-card{background:#fffffff2;border:1px solid #00000014}.light-theme .call-duration{color:#ffffffe6;background:#0000004d}.light-theme .reject-btn{color:#fff;background:#ef4444}.light-theme .accept-btn{color:#fff;background:#10b981}.light-theme .local-preview{border:2px solid #ffffff4d;box-shadow:0 4px 20px #0000004d}.light-theme .mute-btn.active,.light-theme .camera-btn.active{background:#ffffff40;border-color:#fff6}.light-theme .switch-camera-btn{background:#ffffff26;border-color:#fff3}.light-theme .ctrl-btn{color:#fff;background:#ffffff26;border-color:#fff3}.light-theme .back-btn{color:#fff;background:#ffffff26}.light-theme .user-card{background:#ffffff1a}.light-theme .call-tip{color:#fffc}.light-theme .call-username{color:#fff}.light-theme .call-ended{color:#fff;background:#000000b3}.light-theme .remote-avatar{border-color:#ffffff4d}.light-theme .call-controls{background:#0006}*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{background:var(--color-bg);width:100%;height:100%;font-family:var(--font-main);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:15px;overflow:hidden}#app{width:100%;height:100%;position:relative;overflow:hidden}.app-bg{z-index:0;background:radial-gradient(ellipse 120% 80% at 80% 0%, #2563eb1f 0%, transparent 60%), radial-gradient(ellipse 80% 60% at 0% 100%, #00d4ff12 0%, transparent 50%), var(--color-bg);pointer-events:none;position:fixed;inset:0}.app-bg:after{content:"";background-image:linear-gradient(#3d7fff0a 1px,#0000 1px),linear-gradient(90deg,#3d7fff0a 1px,#0000 1px);background-size:40px 40px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(100% 100% at 50% 0,#000 0%,#0000 70%);mask-image:radial-gradient(100% 100% at 50% 0,#000 0%,#0000 70%)}.glass{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);border:var(--glass-border)}.glass-card{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);border:var(--glass-border);border-radius:var(--radius-lg)}.gradient-text{background:linear-gradient(135deg, var(--color-primary), var(--color-accent));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.text-2{color:var(--color-text-2)}.text-3{color:var(--color-text-3)}.btn{border-radius:var(--radius-full);font-family:var(--font-main);cursor:pointer;transition:all var(--dur-normal) var(--ease-spring);-webkit-user-select:none;user-select:none;border:none;justify-content:center;align-items:center;gap:6px;padding:10px 20px;font-size:15px;font-weight:500;display:inline-flex}.btn-primary{background:linear-gradient(135deg, #2563eb, var(--color-primary));color:#fff;box-shadow:0 4px 20px #2563eb66}.btn-primary:active{transform:scale(.97);box-shadow:0 2px 10px #2563eb4d}.btn-ghost{color:var(--color-text-2);border:1px solid var(--color-border);background:0 0}.btn-ghost:active{background:#ffffff0d}.btn-danger{color:#fff;background:linear-gradient(135deg,#dc2626,#f87171);box-shadow:0 4px 20px #dc262666}.btn-success{color:#fff;background:linear-gradient(135deg,#059669,#34d399);box-shadow:0 4px 20px #05966966}.avatar{object-fit:cover;background:var(--color-surface-2);border-radius:50%;flex-shrink:0;overflow:hidden}.divider{background:var(--color-border-2);height:1px;margin:var(--space-md) 0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-200%}to{background-position:200%}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes glowPulse{0%,to{box-shadow:var(--shadow-glow-sm)}50%{box-shadow:var(--shadow-glow)}}.page-enter-active,.page-leave-active{transition:all var(--dur-normal) var(--ease-smooth)}.page-enter-from{opacity:0;transform:translate(30px)}.page-leave-to{opacity:0;transform:translate(-20px)}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#3d7fff4d;border-radius:2px}.truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}
