:root{color-scheme:light;--bg: #F4F6FA;--surface: #FFFFFF;--surface-2: #F7F9FC;--surface-3: #EEF2F8;--ink: #0E1621;--ink-2: #46536B;--ink-3: #5D6A82;--line: #E2E8F2;--line-2: #CFD9E8;--line-3: #C2CCDB;--skeleton-hi: #E2E7EF;--accent: #1A4FBF;--accent-strong: #133C93;--accent-soft: rgba(26, 79, 191, .1);--accent-soft-2: rgba(26, 79, 191, .16);--accent-line: rgba(26, 79, 191, .3);--on-accent: #FFFFFF;--on-accent-muted: rgba(255, 255, 255, .82);--danger: #B42318;--danger-strong: #8F1B12;--danger-soft: rgba(180, 35, 24, .08);--danger-line: rgba(180, 35, 24, .3);--danger-line-strong: rgba(180, 35, 24, .5);--warn: #B45309;--warn-soft: rgba(180, 83, 9, .1);--warn-line: rgba(180, 83, 9, .45);--success: #047857;--success-soft: rgba(4, 120, 87, .1);--dark: #0E1726;--dark-2: #18233A;--dark-3: #223252;--dark-line: rgba(255, 255, 255, .1);--dark-line-2: rgba(255, 255, 255, .22);--dark-line-3: rgba(255, 255, 255, .3);--dark-hover: rgba(255, 255, 255, .08);--dark-ink: #E6EBF2;--dark-ink-2: #9AA6B8;--mask: rgba(8, 14, 26, .5);--nav-bg: rgba(255, 255, 255, .88);--nav-bg-solid: rgba(255, 255, 255, .96);--img-void: #0B1220;--scroll-thumb: rgba(16, 24, 40, .18);--scroll-thumb-hover: rgba(16, 24, 40, .3);--r-xs: 4px;--r-sm: 6px;--r-md: 8px;--r-lg: 10px;--r-xl: 14px;--r-pill: 999px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sh-1: 0 1px 2px rgba(16, 24, 40, .06);--sh-2: 0 4px 12px -2px rgba(16, 24, 40, .1);--sh-3: 0 16px 40px -12px rgba(16, 24, 40, .3);--ease: cubic-bezier(.32, .72, 0, 1);--nav-h: 60px;--fs-xs: 12px;--fs-sm: 13px;--fs-md: 14px;--fs-lg: 16px;--fs-xl: 20px;--fs-2xl: 26px}*,*:before,*:after{box-sizing:border-box}html,body,#app{margin:0;min-height:100%}body{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:var(--fs-md);line-height:1.55;touch-action:manipulation;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{margin:0 0 var(--sp-2);letter-spacing:-.01em;line-height:1.3}h1{font-size:var(--fs-2xl);font-weight:700}h2{font-size:var(--fs-lg);font-weight:650}h3{font-size:var(--fs-md);font-weight:650}p{margin:0 0 var(--sp-2)}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-strong);text-decoration:underline}img,video{max-width:100%}::selection{background:var(--accent-soft)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}*{scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border:3px solid transparent;border-radius:var(--r-pill);background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hover);background-clip:content-box}button{font:inherit;font-size:var(--fs-sm);font-weight:600;letter-spacing:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-md);padding:8px 14px;cursor:pointer;transition:background .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease),box-shadow .15s var(--ease),transform .12s var(--ease)}button:hover:not(:disabled){background:var(--surface-2);border-color:var(--line-3)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.go,.send-btn,.reload,.new-btn,.mini-btn.primary,.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.go:hover:not(:disabled),.send-btn:hover:not(:disabled),.reload:hover:not(:disabled),.new-btn:hover:not(:disabled),.mini-btn.primary:hover:not(:disabled),.btn-primary:hover:not(:disabled){background:var(--accent-strong);border-color:var(--accent-strong);color:var(--on-accent)}.stop-btn,.btn-danger{background:var(--danger);border-color:var(--danger);color:var(--on-accent)}.stop-btn:hover:not(:disabled),.btn-danger:hover:not(:disabled){background:var(--danger-strong);border-color:var(--danger-strong);color:var(--on-accent)}.ghost,.mini-btn,.mini,.chip,.op,.vip,.member-btn,.avatar-slot,.retry-btn,.switch-btn,.mini-chip,.ext-btn{background:var(--surface);border:1px solid var(--line-2);color:var(--ink)}.ghost:hover:not(:disabled),.mini-btn:hover:not(:disabled),.mini:hover:not(:disabled),.chip:hover:not(:disabled),.op:hover:not(:disabled),.vip:hover:not(:disabled),.member-btn:hover:not(:disabled),.avatar-slot:hover:not(:disabled),.retry-btn:hover:not(:disabled),.switch-btn:hover:not(:disabled),.mini-chip:hover:not(:disabled){background:var(--surface-2);border-color:var(--line-3)}.mini-btn,.mini,.chip,.op,.mini-chip,.retry-btn,.switch-btn,.avatar-slot{border-radius:var(--r-pill);font-size:var(--fs-xs);padding:5px 11px}.op{border-radius:var(--r-sm)}.op.danger{color:var(--danger);border-color:var(--danger-line)}.op.danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger-line-strong)}.vip.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-strong)}.mini.plus{color:var(--accent-strong)}.member-btn{border-radius:var(--r-pill);color:var(--accent-strong);background:var(--accent-soft);border-color:var(--accent-line)}.member-btn:hover:not(:disabled){background:var(--accent-soft-2);border-color:var(--accent-line)}.avatar-slot{border-style:dashed;color:var(--ink-2)}input,textarea,select{font:inherit;font-size:var(--fs-sm);color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-md);padding:8px 10px;width:100%;transition:border-color .15s var(--ease),box-shadow .15s var(--ease),background .15s var(--ease)}input:hover:not(:disabled),textarea:hover:not(:disabled),select:hover:not(:disabled){border-color:var(--line-3)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input::placeholder,textarea::placeholder{color:var(--ink-3)}input:disabled,textarea:disabled,select:disabled{background:var(--surface-2);color:var(--ink-3);cursor:not-allowed}select{padding-right:24px}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--accent)}input[type=file]{padding:6px 8px;font-size:var(--fs-xs);background:var(--surface-2)}label{display:block}.field,.draw-view label,.settings-view label,.toolbox-view label,.ext-row{display:flex;flex-direction:column;gap:6px;font-size:var(--fs-sm);font-weight:600;color:var(--ink-2);margin:0}.field>input,.field>textarea,.field>select,.draw-view label>input,.draw-view label>textarea,.draw-view label>select,.settings-view label>input,.settings-view label>textarea,.settings-view label>select,.toolbox-view label>select{font-weight:400;color:var(--ink)}.card,.panel,.modal,.login-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1)}.panel,.card{padding:var(--sp-4)}.modal{border-radius:var(--r-xl);box-shadow:var(--sh-3);padding:var(--sp-5);width:min(92vw,420px);max-height:84dvh;overflow-y:auto}.modal-mask,.mask{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--mask);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:60;padding:var(--sp-4)}.hint{color:var(--ink-2);font-size:var(--fs-sm);font-weight:400}.meta,.time,.url{color:var(--ink-3);font-size:var(--fs-xs)}.error,.err{color:var(--danger);font-size:var(--fs-sm)}.ok{color:var(--accent-strong);font-size:var(--fs-sm);font-weight:600}.tag{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);color:var(--ink-2);background:var(--surface-3);border:1px solid var(--line);border-radius:var(--r-pill);padding:2px 8px}button.chip.on,button.chip.is-on,button.mini-chip.on,button.mini-chip.is-on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.empty,.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);color:var(--ink-3);font-size:var(--fs-sm);text-align:center;padding:var(--sp-6) var(--sp-4)}.skeleton{background:linear-gradient(90deg,var(--surface-3) 25%,var(--skeleton-hi) 37%,var(--surface-3) 63%);background-size:400% 100%;animation:skeleton 1.4s ease infinite;border-radius:var(--r-sm)}@keyframes skeleton{0%{background-position:100% 50%}to{background-position:0 50%}}.app-shell{min-height:100dvh;background:var(--bg);color:var(--ink);padding-bottom:env(safe-area-inset-bottom,0px)}.app-shell.is-login{padding-bottom:0}.app-shell.is-login .app-nav{display:none}.app-nav{display:flex;align-items:center;gap:var(--sp-4);padding:0 var(--sp-5);height:var(--nav-h);background:var(--nav-bg);-webkit-backdrop-filter:blur(12px) saturate(1.4);backdrop-filter:blur(12px) saturate(1.4);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.app-nav::-webkit-scrollbar{display:none}.brand{display:inline-flex;align-items:center;gap:var(--sp-2);flex:0 0 auto;color:var(--ink);font-weight:700;font-size:var(--fs-sm);letter-spacing:-.01em}.brand:hover{text-decoration:none;color:var(--ink)}.brand-mark{width:26px;height:26px;border-radius:var(--r-sm);background:var(--accent);color:var(--on-accent);display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:800}.brand-text{white-space:nowrap}.nav-links{display:flex;align-items:center;gap:var(--sp-1);flex:1;min-width:0}.nav-link{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;padding:6px 12px;border-radius:var(--r-md);border:1px solid transparent;color:var(--ink-2);font-size:var(--fs-sm);font-weight:600;white-space:nowrap;transition:background .15s var(--ease),color .15s var(--ease),border-color .15s var(--ease),box-shadow .15s var(--ease)}.nav-link:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}.nav-link.router-link-active{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-strong)}.nav-icon{width:15px;height:15px;display:none}.nav-icon path{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.chat-page,.group-page{display:flex;height:calc(100dvh - var(--nav-h));overflow:hidden}.chat-page .sidebar,.group-page .sidebar{flex:0 0 264px;width:264px;display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);background:var(--dark);color:var(--dark-ink);border-right:1px solid var(--dark-line)}.chat-page .main,.group-page .main{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--surface)}.chat-page .new-btn,.group-page .new-btn{width:100%;padding:9px 12px}.chat-page .conv-list,.group-page .group-list{list-style:none;margin:0;padding:0;flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.chat-page .conv-list li,.group-page .group-list li{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:8px 10px;border-radius:var(--r-md);font-size:var(--fs-sm);color:var(--dark-ink-2);cursor:pointer;transition:background .15s var(--ease),color .15s var(--ease)}.chat-page .conv-list li:hover,.group-page .group-list li:hover{background:var(--dark-2);color:var(--dark-ink)}.chat-page .conv-list li.active,.group-page .group-list li.active{background:var(--dark-3);color:var(--dark-ink);box-shadow:inset 2px 0 0 var(--accent)}.conv-title,.group-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-meta{font-size:var(--fs-xs);color:var(--dark-ink-2);flex:0 0 auto}.chat-page .del-btn,.chat-page .logout-btn,.group-page .del-btn,.group-page .logout-btn{background:transparent;border:1px solid var(--dark-line-3);color:var(--dark-ink);padding:7px 10px;border-radius:var(--r-md);font-size:var(--fs-xs)}.chat-page .del-btn:hover,.group-page .del-btn:hover{background:var(--dark-hover);border-color:var(--dark-line-3);color:var(--dark-ink)}.chat-page .logout-btn,.group-page .logout-btn{background:var(--dark-hover)}.chat-page .logout-btn:hover,.group-page .logout-btn:hover{background:var(--dark-3);border-color:var(--dark-line-3);color:var(--dark-ink)}.chat-page .del-btn:hover,.chat-page .logout-btn:hover,.group-page .del-btn:hover,.group-page .logout-btn:hover{background:var(--dark-2);border-color:var(--dark-line-2);color:var(--dark-ink)}.chat-page .logout-btn,.group-page .logout-btn{margin-top:auto}.messages{flex:1;overflow-y:auto;padding:var(--sp-5) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3);background:var(--bg);-webkit-overflow-scrolling:touch}.bubble{max-width:min(76%,640px);padding:10px 14px;border-radius:var(--r-xl);border:1px solid transparent;white-space:pre-wrap;word-break:break-word;font-size:var(--fs-md);line-height:1.6}.bubble:not(.me){align-self:flex-start;background:var(--surface);border-color:var(--line);box-shadow:var(--sh-1);border-top-left-radius:var(--r-xs);color:var(--ink)}.bubble.me{align-self:flex-end;background:var(--accent);border-color:var(--accent);color:var(--on-accent);border-top-right-radius:var(--r-xs)}.bubble.ai{border-left:2px solid var(--accent-line)}.bubble.err{border-color:var(--warn-line);background:var(--warn-soft)}.bubble-name{font-size:var(--fs-xs);font-weight:700;color:var(--ink-2);margin-bottom:2px}.bubble.me .bubble-name{color:var(--on-accent-muted)}.cursor{animation:blink 1s step-end infinite}@keyframes blink{50%{opacity:0}}.composer{display:flex;gap:var(--sp-2);align-items:flex-end;padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--line);background:var(--surface)}.composer textarea{flex:1;resize:none;min-height:52px;max-height:180px;padding:10px 12px;border-radius:var(--r-lg);font-size:var(--fs-md);background:var(--surface-2)}.composer textarea:focus{background:var(--surface)}.composer .send-btn,.composer .stop-btn{flex:0 0 auto;min-width:84px;height:40px;padding:0 var(--sp-4)}.personas-view,.settings-view,.gallery-view,.draw-view,.toolbox-view,.admin-view{margin:0 auto;padding:var(--sp-5) var(--sp-4) var(--sp-6)}.reveal{opacity:0;transform:translateY(10px);transition:opacity .42s var(--ease),transform .42s var(--ease)}.reveal.is-visible{opacity:1;transform:translateY(0)}.page-enter-active,.page-leave-active{transition:opacity .16s var(--ease),transform .16s var(--ease)}.page-enter-from{opacity:0;transform:translateY(6px)}.page-leave-to{opacity:0;transform:translateY(-4px)}@media(prefers-reduced-motion:reduce){.page-enter-active,.page-leave-active,.reveal,.skeleton{transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}}@media(max-width:768px){:root{--nav-h: 58px}.app-nav{position:fixed;top:auto;bottom:0;left:0;right:0;gap:0;padding:0 4px env(safe-area-inset-bottom,0px);border-bottom:0;border-top:1px solid var(--line);background:var(--nav-bg-solid);overflow:hidden}.brand{display:none}.nav-links{gap:0;width:100%}.nav-link{flex:1 1 0;min-width:0;flex-direction:column;gap:1px;padding:6px 2px;border-radius:var(--r-sm);font-size:11px;font-weight:600}.nav-link span{overflow:hidden;text-overflow:ellipsis;max-width:100%}.nav-icon{display:block;width:19px;height:19px}.nav-link.router-link-active{background:transparent;box-shadow:none;border-color:transparent;color:var(--accent-strong);position:relative}.nav-link.router-link-active:after{content:"";position:absolute;top:3px;left:50%;transform:translate(-50%);width:18px;height:2px;border-radius:2px;background:var(--accent)}.nav-link.router-link-active .nav-icon path{stroke-width:2}.app-shell{padding-bottom:calc(var(--nav-h) + env(safe-area-inset-bottom,0px))}.chat-page,.group-page{flex-direction:column;height:calc(100dvh - var(--nav-h))}.chat-page .sidebar,.group-page .sidebar{flex:0 0 auto;flex-direction:row;align-items:center;gap:var(--sp-2);width:100%;max-height:none;padding:var(--sp-2) var(--sp-3);border-right:0;border-bottom:1px solid var(--dark-line);overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.chat-page .sidebar::-webkit-scrollbar,.group-page .sidebar::-webkit-scrollbar{display:none}.chat-page .new-btn,.group-page .new-btn{width:auto;flex:0 0 auto;white-space:nowrap}.chat-page .conv-list,.group-page .group-list{flex:0 0 auto;flex-direction:row;align-items:center;gap:6px;overflow:visible}.chat-page .conv-list li,.group-page .group-list li{flex:0 0 auto;max-width:158px;background:var(--dark-2);padding:7px 12px}.chat-page .del-btn,.chat-page .logout-btn,.group-page .del-btn,.group-page .logout-btn{flex:0 0 auto;margin-top:0;white-space:nowrap}.chat-page .sidebar-empty,.group-page .sidebar-empty{flex:0 0 auto;padding:0 var(--sp-2);white-space:nowrap}.chat-page .main,.group-page .main{min-height:0}.messages{padding:var(--sp-4) var(--sp-3)}.bubble{max-width:88%}.composer{padding:var(--sp-2) var(--sp-3)}.personas-view,.settings-view,.gallery-view,.draw-view,.toolbox-view,.admin-view{padding:var(--sp-4) var(--sp-3) var(--sp-5)}button.mini,button.chip,button.mini-chip,button.mini-btn,button.op,button.switch-btn,button.vip,button.retry-btn,button.skill-badge,button.avatar-slot{min-height:38px;padding-top:0;padding-bottom:0;display:inline-flex;align-items:center;justify-content:center}.panel,.card{padding:var(--sp-3)}.modal{width:94vw;padding:var(--sp-4)}}
