:root{--bg:#0a0a0f;--bg-2:#101018;--bg-3:#16161f;--panel:#14141eb8;--panel-solid:#14141e;--border:#ffffff14;--border-strong:#ffffff29;--text:#e8e8ef;--text-dim:#9a9aad;--text-faint:#62627a;--accent:#7aa2ff;--accent-2:#b48cff;--accent-glow:#7aa2ff59;--danger:#ff6b7a;--ok:#4ade80;--radius:14px;--radius-lg:22px;--font-sans:"Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:15px;line-height:1.6;overflow:hidden}::selection{background:#7aa2ff4d}.cosmos{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.cosmos:before{content:"";background:radial-gradient(60% 45% at 50% 110%,#7aa2ff29,#0000 60%),radial-gradient(45% 35% at 85% -10%,#b48cff1a,#0000 60%),radial-gradient(40% 30% at 8% 20%,#5a78dc14,#0000 60%);animation:26s ease-in-out infinite alternate nebula-drift;position:absolute;inset:-20%}@keyframes nebula-drift{0%{transform:translate(-1.5%,-1%)scale(1)}to{transform:translate(1.5%,1.5%)scale(1.06)}}.stars{background-image:radial-gradient(1px 1px at 12% 22%,#fffc,#0000),radial-gradient(1px 1px at 28% 68%,#ffffff80,#0000),radial-gradient(1.5px 1.5px at 44% 14%,#ffffffb3,#0000),radial-gradient(1px 1px at 61% 42%,#ffffff73,#0000),radial-gradient(1.5px 1.5px at 73% 77%,#fff9,#0000),radial-gradient(1px 1px at 86% 25%,#ffffff80,#0000),radial-gradient(1px 1px at 93% 58%,#fff6,#0000),radial-gradient(1px 1px at 7% 84%,#ffffff73,#0000),radial-gradient(1.5px 1.5px at 52% 91%,#ffffff8c,#0000),radial-gradient(1px 1px at 37% 47%,#ffffff59,#0000);animation:7s ease-in-out infinite alternate twinkle;position:absolute;inset:0}.stars.layer-2{background-image:radial-gradient(1px 1px at 18% 38%,#c8d7ff80,#0000),radial-gradient(1px 1px at 33% 9%,#c8d7ff66,#0000),radial-gradient(1.5px 1.5px at 57% 63%,#c8d7ff8c,#0000),radial-gradient(1px 1px at 69% 18%,#c8d7ff59,#0000),radial-gradient(1px 1px at 81% 88%,#c8d7ff80,#0000),radial-gradient(1.5px 1.5px at 95% 41%,#c8d7ff66,#0000),radial-gradient(1px 1px at 24% 96%,#c8d7ff59,#0000);animation:9s ease-in-out infinite alternate-reverse twinkle}@keyframes twinkle{0%{opacity:.45}to{opacity:1}}.app{z-index:1;height:100%;display:flex;position:relative}.sidebar{border-right:1px solid var(--border);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#0c0c12b3;flex-direction:column;flex-shrink:0;width:268px;transition:margin-left .28s cubic-bezier(.4,0,.2,1);display:flex}.sidebar.hidden{margin-left:-268px}.sidebar-head{align-items:center;gap:10px;padding:16px 16px 12px;display:flex}.logo{letter-spacing:.02em;align-items:center;gap:10px;font-size:17px;font-weight:700;display:flex}.logo img{border-radius:7px;width:26px;height:26px}.btn-new-chat{border:1px solid var(--border-strong);border-radius:var(--radius);color:var(--text);cursor:pointer;background:linear-gradient(135deg,#7aa2ff24,#b48cff1a);align-items:center;gap:8px;margin:4px 12px 10px;padding:10px 14px;font-family:inherit;font-size:14px;font-weight:500;transition:border-color .2s,box-shadow .2s,transform .15s;display:flex}.btn-new-chat:hover{border-color:var(--accent);box-shadow:0 0 18px var(--accent-glow);transform:translateY(-1px)}.convo-list{flex:1;padding:4px 8px 12px;overflow-y:auto}.convo-item{width:100%;color:var(--text-dim);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:6px;margin-bottom:2px;padding:9px 10px;font-family:inherit;font-size:13.5px;transition:background .15s,color .15s;display:flex}.convo-item:hover{color:var(--text);background:#ffffff0d}.convo-item.active{color:var(--text);background:#7aa2ff1f;border-color:#7aa2ff40}.convo-title{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.convo-del{color:var(--text-faint);cursor:pointer;opacity:0;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:2px 5px;font-size:14px;transition:opacity .15s,color .15s}.convo-item:hover .convo-del{opacity:1}.convo-del:hover{color:var(--danger)}.sidebar-foot{border-top:1px solid var(--border);color:var(--text-faint);padding:12px;font-size:12px}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0a0a0f8c;align-items:center;gap:10px;padding:12px 18px;display:flex}.icon-btn{border:1px solid var(--border);width:34px;height:34px;color:var(--text-dim);cursor:pointer;background:0 0;border-radius:10px;justify-content:center;align-items:center;transition:border-color .2s,color .2s,box-shadow .2s;display:inline-flex}.icon-btn:hover{border-color:var(--accent);color:var(--text);box-shadow:0 0 14px var(--accent-glow)}.topbar-model{color:var(--text-dim);font-size:13px;font-family:var(--font-mono);border:1px solid var(--border);background:#ffffff08;border-radius:999px;padding:4px 10px}.topbar-spacer{flex:1}.badge{border:1px solid var(--border);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;display:inline-flex}.badge .dot{border-radius:50%;width:7px;height:7px}.badge.ok{color:var(--ok);border-color:#4ade804d}.badge.ok .dot{background:var(--ok);box-shadow:0 0 8px #4ade80b3}.badge.warn{color:#fbbf24;border-color:#fbbf244d}.badge.warn .dot{background:#fbbf24;box-shadow:0 0 8px #fbbf2499}.chat-scroll{flex:1;overflow-y:auto}.chat-inner{flex-direction:column;gap:22px;max-width:780px;margin:0 auto;padding:28px 20px 20px;display:flex}.hero{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;min-height:55vh;animation:.6s cubic-bezier(.2,.8,.2,1) both rise-in;display:flex}.hero-orb{background:radial-gradient(circle at 32% 28%,#dbe6ff,#7aa2ff 45%,#1a2340 100%);border-radius:50%;width:92px;height:92px;animation:5.5s ease-in-out infinite orb-float;box-shadow:0 0 44px #7aa2ff80,0 0 110px #7aa2ff38,inset 0 0 24px #ffffff47}@keyframes orb-float{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-9px)scale(1.03)}}.hero h1{background:linear-gradient(120deg,#fff,#aebfff 60%,#c9b2ff);color:#0000;-webkit-background-clip:text;background-clip:text;margin:6px 0 0;font-size:30px;font-weight:700}.hero p{color:var(--text-dim);max-width:460px;margin:0}.hero-hints{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:10px;display:flex}.hint-chip{border:1px solid var(--border-strong);color:var(--text-dim);cursor:pointer;background:#ffffff0a;border-radius:999px;padding:9px 16px;font-family:inherit;font-size:13.5px;transition:border-color .2s,color .2s,box-shadow .2s,transform .15s}.hint-chip:hover{border-color:var(--accent);color:var(--text);box-shadow:0 0 16px var(--accent-glow);transform:translateY(-1px)}.msg{gap:12px;animation:.35s cubic-bezier(.2,.8,.2,1) both rise-in;display:flex}@keyframes rise-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.avatar{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;margin-top:2px;font-size:13px;font-weight:600;display:flex}.msg.user .avatar{border:1px solid var(--border-strong);color:var(--text-dim);background:#ffffff17}.msg.assistant .avatar{box-shadow:0 0 14px var(--accent-glow);color:#0a0a12;background:radial-gradient(circle at 32% 28%,#dbe6ff,#7aa2ff 55%,#26314f)}.msg-body{flex:1;min-width:0}.msg-role{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin-bottom:4px;font-size:12px;font-weight:600}.msg.assistant .msg-role{color:var(--accent)}.msg-content{overflow-wrap:break-word}.msg-content p{margin:0 0 10px}.msg-content p:last-child{margin-bottom:0}.msg-content h3,.msg-content h4{margin:14px 0 6px}.msg-content ul,.msg-content ol{margin:6px 0 10px;padding-left:22px}.msg-content li{margin:3px 0}.msg-content a{color:var(--accent)}.msg-content code{font-family:var(--font-mono);background:#7aa2ff1f;border:1px solid #7aa2ff2e;border-radius:6px;padding:1px 6px;font-size:.88em}.msg-content pre{border:1px solid var(--border);background:#0d0d15;border-radius:12px;margin:10px 0;padding:14px 16px;position:relative;overflow-x:auto}.msg-content pre[data-lang]:before{content:attr(data-lang);color:var(--text-faint);font-size:11px;font-family:var(--font-mono);position:absolute;top:8px;left:14px}.msg-content pre[data-lang]{padding-top:30px}.code-block{position:relative}.code-copy{z-index:2;border:1px solid var(--border-strong);color:var(--text-dim);font-family:var(--font-mono);cursor:pointer;opacity:0;background:#ffffff0d;border-radius:8px;padding:3px 10px;font-size:11px;transition:opacity .15s,border-color .15s,color .15s;position:absolute;top:7px;right:8px}.code-block:hover .code-copy,.code-copy.copied,.code-copy:focus-visible{opacity:1}.code-copy:hover{border-color:var(--accent);color:var(--text)}.code-copy.copied{border-color:var(--ok,#4ade80);color:var(--ok,#4ade80)}@media (hover:none){.code-copy{opacity:1}}.msg-content pre code{background:0 0;border:none;padding:0;font-size:13px;line-height:1.55}.msg.error .msg-content{color:var(--danger)}.msg-actions{gap:8px;margin-top:-8px;padding-left:44px;animation:.25s both fade-in;display:flex}.msg-actions .btn.small{color:var(--text-dim);font-size:12.5px}.msg-actions .btn.small:hover{color:var(--text)}.typing{gap:5px;padding:6px 2px;display:inline-flex}.typing span{background:var(--accent);border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite bounce}.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-6px)}}.cursor-blink{vertical-align:text-bottom;background:var(--accent);border-radius:2px;width:8px;height:1.1em;margin-left:2px;animation:.9s steps(2,end) infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.composer-wrap{padding:10px 20px 22px}.composer{border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--panel);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);align-items:flex-end;gap:10px;max-width:780px;margin:0 auto;padding:12px 14px;transition:border-color .25s,box-shadow .25s;display:flex;position:relative}.composer:focus-within{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 0 28px var(--accent-glow)}.composer textarea{resize:none;color:var(--text);background:0 0;border:none;outline:none;flex:1;max-height:200px;padding:4px 2px;font-family:inherit;font-size:15px;line-height:1.55}.composer textarea::placeholder{color:var(--text-faint)}.btn-send{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#0a0a12;cursor:pointer;width:38px;height:38px;box-shadow:0 0 16px var(--accent-glow);border:none;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;transition:transform .15s,box-shadow .2s,opacity .2s;display:flex}.btn-send:hover:not(:disabled){box-shadow:0 0 26px var(--accent-glow);transform:translateY(-2px)scale(1.04)}.btn-send:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.btn-send.stop{background:linear-gradient(135deg, #ff8a95, var(--danger))}.composer-note{text-align:center;max-width:780px;color:var(--text-faint);margin:8px auto 0;font-size:11.5px}.drawer-backdrop{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0404088c;animation:.2s both fade-in;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.drawer{z-index:21;background:var(--panel-solid);border-left:1px solid var(--border-strong);flex-direction:column;width:min(430px,94vw);animation:.3s cubic-bezier(.2,.8,.2,1) both slide-in;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-18px 0 60px #0000008c}@keyframes slide-in{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.drawer-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:18px 20px 14px;display:flex}.drawer-head h2{margin:0;font-size:17px;font-weight:600}.drawer-body{flex-direction:column;flex:1;gap:18px;padding:18px 20px;display:flex;overflow-y:auto}.field label{color:var(--text-dim);align-items:center;gap:6px;margin-bottom:7px;font-size:13px;font-weight:600;display:flex}.field .req{color:var(--danger);border:1px solid #ff6b7a59;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600}.field input[type=text],.field input[type=password],.field textarea,.field select{border:1px solid var(--border-strong);width:100%;color:var(--text);background:#ffffff0a;border-radius:10px;outline:none;padding:10px 12px;font-family:inherit;font-size:14px;transition:border-color .2s,box-shadow .2s}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 0 16px var(--accent-glow)}.field textarea{resize:vertical;min-height:130px;line-height:1.55}.field .hint{color:var(--text-faint);margin-top:5px;font-size:12px}.field .hint a{color:var(--accent)}.field-error{color:var(--danger);margin-top:5px;font-size:12.5px}.input-row{align-items:stretch;gap:8px;display:flex}.input-row input{flex:1;min-width:0}.btn.small{white-space:nowrap;flex-shrink:0;padding:8px 14px;font-size:13px}.btn.small:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.btn.add-inject{align-self:flex-start;margin-top:4px}.model-chips{flex-wrap:wrap;gap:6px;max-height:132px;margin-top:8px;padding:2px;display:flex;overflow-y:auto}.model-chip{border:1px solid var(--border-strong);color:var(--text-dim);font-family:var(--font-mono);cursor:pointer;background:#ffffff0a;border-radius:999px;padding:4px 11px;font-size:12px;transition:border-color .15s,color .15s,background .15s}.model-chip:hover{border-color:var(--accent);color:var(--text)}.model-chip.active{border-color:var(--accent);color:var(--text);background:#7aa2ff29}.profile-list{flex-direction:column;gap:6px;max-height:210px;margin-bottom:8px;padding:2px;display:flex;overflow-y:auto}.profile-row{align-items:stretch;gap:6px;display:flex}.profile-apply{border:1px solid var(--border-strong);min-width:0;color:var(--text);cursor:pointer;text-align:left;background:#ffffff0a;border-radius:10px;flex-direction:column;flex:1;align-items:flex-start;gap:2px;padding:8px 12px;font-family:inherit;transition:border-color .15s,background .15s;display:flex}.profile-apply:hover{border-color:var(--accent)}.profile-row.active .profile-apply{border-color:var(--accent);background:#7aa2ff24}.profile-name{font-size:13.5px;font-weight:600}.profile-meta{color:var(--text-dim);font-size:11.5px;font-family:var(--font-mono);white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.inject-row{align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.inject-row textarea{flex:1;min-height:68px}.icon-btn.danger:hover{border-color:var(--danger);color:var(--danger);box-shadow:0 0 14px #ff6b7a4d}.range-row{align-items:center;gap:12px;display:flex}.range-row input[type=range]{accent-color:var(--accent);flex:1}.range-val{font-family:var(--font-mono);color:var(--text-dim);text-align:right;min-width:34px;font-size:13px}.drawer-foot{border-top:1px solid var(--border);gap:10px;padding:14px 20px 18px;display:flex}.btn{border:1px solid var(--border-strong);color:var(--text);cursor:pointer;background:0 0;border-radius:11px;padding:10px 18px;font-family:inherit;font-size:14px;font-weight:500;transition:border-color .2s,box-shadow .2s,transform .15s}.btn:hover{border-color:var(--accent);box-shadow:0 0 14px var(--accent-glow)}.btn.primary{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#0a0a12;box-shadow:0 0 18px var(--accent-glow);border:none;flex:1;font-weight:600}.btn.primary:hover{box-shadow:0 0 28px var(--accent-glow);transform:translateY(-1px)}.sidebar-backdrop{display:none}.login-screen{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.discord-btn{letter-spacing:.01em;color:#fff;background:linear-gradient(135deg,#5865f2 0%,#7289da 60%,#8b9df8 100%);border-radius:14px;align-items:center;gap:12px;margin-top:26px;padding:14px 30px;font-size:15.5px;font-weight:600;text-decoration:none;transition:transform .18s,box-shadow .25s;display:inline-flex;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff1f,0 8px 26px #5865f26b,0 2px 8px #00000059}.discord-btn svg{filter:drop-shadow(0 1px 3px #0000004d);flex:none}.discord-btn:after{content:"";pointer-events:none;background:linear-gradient(115deg,#0000 30%,#ffffff59 48%,#ffffff1f 54%,#0000 70%);transition:transform .6s;position:absolute;inset:0;transform:translate(-120%)}.discord-btn:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 1px #fff3,0 12px 36px #5865f299,0 0 60px #7aa2ff40,0 3px 10px #0006}.discord-btn:hover:after{transform:translate(120%)}.discord-btn:active{transform:translateY(0);box-shadow:inset 0 0 0 1px #ffffff1a,0 4px 16px #5865f266}.login-error{color:#ff9b9b;background:#ff6b6b14;border:1px solid #ff6b6b66;border-radius:10px;max-width:440px;margin-top:18px;padding:10px 16px;font-size:14px}.login-note{color:var(--text-dim);margin-top:14px;font-size:13px}.topbar-user{align-items:center;gap:8px;max-width:180px;display:inline-flex;overflow:hidden}.topbar-avatar{border:1px solid var(--border-strong);border-radius:50%;flex:none;width:26px;height:26px}.topbar-username{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff1f padding-box content-box;border:2px solid #0000;border-radius:99px}::-webkit-scrollbar-thumb:hover{background-color:#ffffff38}@media (width<=720px){.sidebar{z-index:16;position:fixed;inset:0 auto 0 0;box-shadow:18px 0 50px #00000080}.sidebar-backdrop{z-index:15;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#04040880;animation:.2s both fade-in;display:block;position:fixed;inset:0}.topbar-model{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}}
