:root{--bg-base: #0b0d16;--bg-deep: #070810;--text-primary: rgba(240, 242, 252, .96);--text-secondary: rgba(200, 205, 228, .72);--text-muted: rgba(170, 176, 205, .5);--accent: #8b7bff;--accent-strong: #a394ff;--accent-soft: rgba(139, 123, 255, .16);--accent-border: rgba(139, 123, 255, .45);--danger: #ff6b7a;--danger-soft: rgba(255, 107, 122, .14);--warn: #ffb454;--ok: #5fd4a2;--glass-bg: rgba(22, 25, 44, .55);--glass-bg-strong: rgba(20, 23, 40, .78);--glass-bg-subtle: rgba(255, 255, 255, .04);--glass-border: rgba(255, 255, 255, .09);--glass-border-strong: rgba(255, 255, 255, .16);--glass-blur: blur(18px) saturate(1.4);--glass-blur-light: blur(10px) saturate(1.2);--bubble-user: linear-gradient(135deg, rgba(139, 123, 255, .28), rgba(96, 80, 220, .22));--bubble-assistant: rgba(255, 255, 255, .05);--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.5rem;--sp-6: 2rem;--radius-s: 8px;--radius-m: 12px;--radius-l: 16px;--radius-xl: 20px;--radius-full: 999px;--shadow-panel: 0 8px 32px rgba(0, 0, 0, .45);--shadow-pop: 0 12px 48px rgba(0, 0, 0, .6);--fs-xs: clamp(.69rem, .65rem + .2vw, .75rem);--fs-s: clamp(.8rem, .76rem + .2vw, .875rem);--fs-m: clamp(.92rem, .88rem + .25vw, 1rem);--fs-l: clamp(1.05rem, 1rem + .4vw, 1.2rem);--fs-xl: clamp(1.3rem, 1.15rem + .9vw, 1.75rem);--t-fast: .14s ease;--t-med: .22s cubic-bezier(.33, 1, .68, 1);--t-slow: .34s cubic-bezier(.33, 1, .68, 1);--sidebar-w: clamp(240px, 24vw, 300px);--content-max: 860px;--touch: 44px;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:var(--fs-m);line-height:1.55;color:var(--text-primary);background:var(--bg-base);overflow:hidden;overscroll-behavior:none;-webkit-font-smoothing:antialiased}.app-bg{position:fixed;inset:0;z-index:-1;background:radial-gradient(1100px 700px at 85% -10%,rgba(88,68,200,.28),transparent 60%),radial-gradient(900px 600px at -10% 100%,rgba(50,120,200,.14),transparent 55%),linear-gradient(160deg,#101328 0%,var(--bg-base) 45%,var(--bg-deep) 100%)}.app-bg:before,.app-bg:after{content:"";position:absolute;border-radius:50%;filter:blur(90px);opacity:.5;pointer-events:none}.app-bg:before{width:clamp(240px,36vw,460px);height:clamp(240px,36vw,460px);top:-8%;right:-6%;background:radial-gradient(circle,rgba(139,123,255,.5),transparent 70%)}.app-bg:after{width:clamp(200px,30vw,380px);height:clamp(200px,30vw,380px);bottom:-10%;left:-8%;background:radial-gradient(circle,rgba(60,130,210,.4),transparent 70%)}.glass{background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius-l);box-shadow:var(--shadow-panel)}.glass-strong{background:var(--glass-bg-strong);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border-strong);border-radius:var(--radius-xl);box-shadow:var(--shadow-pop)}button{font:inherit;color:inherit;border:none;background:none;cursor:pointer;padding:0;-webkit-tap-highlight-color:transparent}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--touch);padding:0 var(--sp-4);border-radius:var(--radius-m);font-size:var(--fs-s);font-weight:600;background:var(--glass-bg-subtle);border:1px solid var(--glass-border);color:var(--text-primary);transition:background var(--t-fast),border-color var(--t-fast),transform var(--t-fast);user-select:none}.btn:hover{background:#ffffff17;border-color:var(--glass-border-strong)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-primary{background:linear-gradient(135deg,var(--accent),#6a58e8);border-color:var(--accent-border);color:#fff}.btn-primary:hover{background:linear-gradient(135deg,var(--accent-strong),#7a68f5)}.btn-danger{background:var(--danger-soft);border-color:#ff6b7a66;color:var(--danger)}.btn-danger:hover{background:#ff6b7a38}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--glass-bg-subtle)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--touch);height:var(--touch);min-width:var(--touch);border-radius:var(--radius-m);font-size:1.15rem;color:var(--text-secondary);transition:background var(--t-fast),color var(--t-fast),transform var(--t-fast)}.icon-btn:hover{background:var(--glass-bg-subtle);color:var(--text-primary)}.icon-btn:active{transform:scale(.92)}input,textarea,select{font:inherit;color:var(--text-primary);background:#00000047;border:1px solid var(--glass-border);border-radius:var(--radius-m);padding:var(--sp-3);min-height:var(--touch);width:100%;transition:border-color var(--t-fast),background var(--t-fast),box-shadow var(--t-fast)}input::placeholder,textarea::placeholder{color:var(--text-muted)}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none;border-color:var(--accent-border);box-shadow:0 0 0 3px var(--accent-soft)}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23aab0cd' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--sp-3) center;padding-right:calc(var(--sp-3) * 2 + 12px);cursor:pointer}textarea{resize:vertical;line-height:1.55}label.field{display:flex;flex-direction:column;gap:var(--sp-1);font-size:var(--fs-s);color:var(--text-secondary);font-weight:600}*{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.14) transparent}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-thumb{background:#ffffff24;border-radius:3px}*::-webkit-scrollbar-track{background:transparent}.app{display:flex;height:100%;height:100dvh}.main{flex:1;display:flex;flex-direction:column;min-width:0;height:100%}.auth-screen{display:grid;place-items:center;height:100%;padding:var(--sp-4)}.auth-card{width:min(92vw,380px);padding:clamp(1.5rem,4vw,2.5rem);text-align:center;display:flex;flex-direction:column;gap:var(--sp-4);align-items:center;animation:rise-in var(--t-slow) both}.auth-logo{width:clamp(56px,14vw,72px);height:auto;filter:drop-shadow(0 4px 16px rgba(139,123,255,.5))}.auth-title{font-size:var(--fs-xl);font-weight:700;margin:0;background:linear-gradient(120deg,#fff,var(--accent-strong));-webkit-background-clip:text;background-clip:text;color:transparent}.auth-sub{color:var(--text-secondary);font-size:var(--fs-s);margin:0}.auth-error{width:100%;padding:var(--sp-3);border-radius:var(--radius-m);background:var(--danger-soft);border:1px solid rgba(255,107,122,.35);color:var(--danger);font-size:var(--fs-s)}.sidebar{width:var(--sidebar-w);height:100%;display:flex;flex-direction:column;border-right:1px solid var(--glass-border);background:#0c0e1a99;backdrop-filter:var(--glass-blur-light);-webkit-backdrop-filter:var(--glass-blur-light);flex-shrink:0}.sidebar-head{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3);padding-top:calc(var(--sp-3) + env(safe-area-inset-top));border-bottom:1px solid var(--glass-border)}.sidebar-brand{display:flex;align-items:center;gap:var(--sp-2);font-weight:700;font-size:var(--fs-l);flex:1;min-width:0}.sidebar-brand img{width:28px;height:28px}.convo-list{flex:1;overflow-y:auto;padding:var(--sp-2);display:flex;flex-direction:column;gap:2px;overscroll-behavior:contain}.convo-item{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);min-height:var(--touch);border-radius:var(--radius-m);color:var(--text-secondary);font-size:var(--fs-s);text-align:left;width:100%;transition:background var(--t-fast),color var(--t-fast)}.convo-item:hover{background:var(--glass-bg-subtle);color:var(--text-primary)}.convo-item.active{background:var(--accent-soft);color:var(--text-primary)}.convo-item .title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.convo-item .del{opacity:0;width:28px;height:28px;min-width:28px;border-radius:var(--radius-s);display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted);transition:opacity var(--t-fast),background var(--t-fast),color var(--t-fast)}.convo-item:hover .del,.convo-item.active .del{opacity:1}.convo-item .del:hover{background:var(--danger-soft);color:var(--danger)}.sidebar-foot{padding:var(--sp-3);padding-bottom:calc(var(--sp-3) + env(safe-area-inset-bottom));border-top:1px solid var(--glass-border);display:flex;align-items:center;gap:var(--sp-2)}.user-chip{display:flex;align-items:center;gap:var(--sp-2);flex:1;min-width:0;font-size:var(--fs-s)}.user-chip img,.user-chip .avatar-fallback{width:32px;height:32px;border-radius:var(--radius-full);border:1px solid var(--glass-border-strong);flex-shrink:0}.user-chip .avatar-fallback{display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-strong);font-weight:700}.user-chip .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.drawer-backdrop{display:none}@media (max-width: 767px){.sidebar{position:fixed;inset:0 auto 0 0;z-index:40;width:min(84vw,320px);transform:translate(-102%);transition:transform var(--t-med);box-shadow:none}.sidebar.open{transform:translate(0);box-shadow:var(--shadow-pop)}.drawer-backdrop{display:block;position:fixed;inset:0;z-index:39;background:#00000080;opacity:0;pointer-events:none;transition:opacity var(--t-med)}.drawer-backdrop.open{opacity:1;pointer-events:auto}}.topbar{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);padding-top:calc(var(--sp-2) + env(safe-area-inset-top));border-bottom:1px solid var(--glass-border);background:#0c0e1a66;backdrop-filter:var(--glass-blur-light);-webkit-backdrop-filter:var(--glass-blur-light);flex-shrink:0}.topbar .convo-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;font-size:var(--fs-m)}.menu-btn{display:none}@media (max-width: 767px){.menu-btn{display:inline-flex}}.chat-scroll{flex:1;overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth;padding:var(--sp-4) var(--sp-3)}.chat-inner{max-width:var(--content-max);margin:0 auto;display:flex;flex-direction:column;gap:var(--sp-4)}.msg{display:flex;flex-direction:column;gap:var(--sp-1);animation:rise-in var(--t-med) both}.msg.user{align-items:flex-end}.msg.assistant{align-items:flex-start}.bubble{max-width:min(88%,640px);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-l);font-size:var(--fs-m);white-space:pre-wrap;word-break:break-word;border:1px solid var(--glass-border)}.msg.user .bubble{background:var(--bubble-user);border-color:var(--accent-border);border-bottom-right-radius:var(--radius-s)}.msg.assistant .bubble{background:var(--bubble-assistant);border-bottom-left-radius:var(--radius-s)}.bubble.error{background:var(--danger-soft);border-color:#ff6b7a66;color:var(--danger)}.bubble code{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.9em;background:#00000059;padding:.1em .35em;border-radius:4px}.bubble pre{background:#0006;border:1px solid var(--glass-border);border-radius:var(--radius-m);padding:var(--sp-3);overflow-x:auto;margin:var(--sp-2) 0}.bubble pre code{background:none;padding:0}.msg-meta{font-size:var(--fs-xs);color:var(--text-muted);padding:0 var(--sp-2);display:flex;gap:var(--sp-2);align-items:center}.msg-actions{display:flex;gap:2px;opacity:0;transition:opacity var(--t-fast)}.msg:hover .msg-actions,.msg:focus-within .msg-actions{opacity:1}@media (hover: none){.msg-actions{opacity:.7}}.msg-actions button{font-size:var(--fs-xs);color:var(--text-muted);padding:4px 8px;border-radius:var(--radius-s);min-height:28px;transition:background var(--t-fast),color var(--t-fast)}.msg-actions button:hover{background:var(--glass-bg-subtle);color:var(--text-primary)}.attach-strip{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-2)}.attach-thumb{max-width:160px;max-height:120px;border-radius:var(--radius-m);border:1px solid var(--glass-border);object-fit:cover}.attach-file{display:inline-flex;align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-s);background:#0000004d;border:1px solid var(--glass-border);font-size:var(--fs-xs);color:var(--text-secondary);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.compacted-toggle{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-full);background:var(--accent-soft);border:1px dashed var(--accent-border);color:var(--accent-strong);font-size:var(--fs-s);font-weight:600;min-height:var(--touch);transition:background var(--t-fast),transform var(--t-fast)}.compacted-toggle:hover{background:#8b7bff3d}.compacted-toggle:active{transform:scale(.97)}.typing{display:inline-flex;gap:4px;padding:var(--sp-2) 0}.typing span{width:7px;height:7px;border-radius:50%;background:var(--text-muted);animation:pulse 1.2s ease-in-out infinite}.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}.empty-state{margin:auto;text-align:center;color:var(--text-muted);display:flex;flex-direction:column;gap:var(--sp-3);align-items:center;padding:var(--sp-6) var(--sp-4)}.empty-state img{width:64px;opacity:.8}.composer-wrap{flex-shrink:0;padding:var(--sp-2) var(--sp-3);padding-bottom:calc(var(--sp-2) + env(safe-area-inset-bottom))}.composer{max-width:var(--content-max);margin:0 auto;display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-2);border-radius:var(--radius-xl)}.composer-row{display:flex;align-items:flex-end;gap:var(--sp-2)}.composer textarea{flex:1;border:none;background:transparent;resize:none;max-height:40dvh;min-height:var(--touch);padding:var(--sp-2) var(--sp-2);font-size:16px;line-height:1.5}.composer textarea:focus-visible{box-shadow:none;border:none}.send-btn{width:var(--touch);height:var(--touch);min-width:var(--touch);border-radius:var(--radius-full);background:linear-gradient(135deg,var(--accent),#6a58e8);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:1.1rem;transition:transform var(--t-fast),opacity var(--t-fast),background var(--t-fast);flex-shrink:0}.send-btn:hover{background:linear-gradient(135deg,var(--accent-strong),#7a68f5)}.send-btn:active{transform:scale(.9)}.send-btn:disabled{opacity:.4;cursor:not-allowed}.send-btn.stop{background:var(--danger-soft);border:1px solid rgba(255,107,122,.5);color:var(--danger)}.context-meter{display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-2);font-size:var(--fs-xs);color:var(--text-muted);min-height:28px}.meter-bar{flex:1;height:4px;border-radius:2px;background:#ffffff14;overflow:hidden}.meter-fill{height:100%;border-radius:2px;background:var(--ok);transition:width var(--t-med),background var(--t-med)}.meter-fill.warn{background:var(--warn)}.meter-fill.critical{background:var(--danger)}.meter-label{font-variant-numeric:tabular-nums;white-space:nowrap;cursor:pointer;border-radius:var(--radius-s);padding:2px 6px;transition:background var(--t-fast)}.meter-label:hover{background:var(--glass-bg-subtle);color:var(--text-secondary)}.compact-btn{font-size:var(--fs-xs);color:var(--accent-strong);padding:4px 10px;min-height:28px;border-radius:var(--radius-full);border:1px solid var(--accent-border);background:var(--accent-soft);white-space:nowrap;transition:background var(--t-fast),transform var(--t-fast)}.compact-btn:hover{background:#8b7bff3d}.compact-btn:active{transform:scale(.96)}.compact-btn:disabled{opacity:.5;cursor:not-allowed}.breakdown-pop{position:absolute;bottom:calc(100% + 8px);right:0;z-index:30;min-width:230px;padding:var(--sp-3);font-size:var(--fs-xs);display:flex;flex-direction:column;gap:var(--sp-1);animation:rise-in var(--t-fast) both}.breakdown-pop .row{display:flex;justify-content:space-between;gap:var(--sp-3);color:var(--text-secondary)}.breakdown-pop .row b{color:var(--text-primary);font-variant-numeric:tabular-nums}.breakdown-pop .row.total{border-top:1px solid var(--glass-border);padding-top:var(--sp-1);margin-top:var(--sp-1);color:var(--text-primary);font-weight:600}.sheet-backdrop{position:fixed;inset:0;z-index:50;background:#0000008c;display:grid;place-items:center;animation:fade-in var(--t-fast) both;padding:var(--sp-4)}.sheet{width:min(94vw,560px);max-height:min(86dvh,780px);display:flex;flex-direction:column;overflow:hidden;animation:rise-in var(--t-med) both}@media (max-width: 767px){.sheet-backdrop{place-items:end center;padding:0}.sheet{width:100%;max-height:92dvh;border-radius:var(--radius-xl) var(--radius-xl) 0 0;animation:slide-up var(--t-med) both}}.sheet-head{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--glass-border);flex-shrink:0}.sheet-head h2{flex:1;margin:0;font-size:var(--fs-l)}.sheet-body{flex:1;overflow-y:auto;padding:var(--sp-4);padding-bottom:calc(var(--sp-4) + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:var(--sp-5);overscroll-behavior:contain}.settings-section{display:flex;flex-direction:column;gap:var(--sp-3)}.settings-section>h3{margin:0;font-size:var(--fs-m);font-weight:700;display:flex;align-items:center;gap:var(--sp-2)}.dropdown-row{display:flex;gap:var(--sp-2);align-items:center}.dropdown-row select{flex:1;min-width:0}.subform{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-m);background:var(--glass-bg-subtle);border:1px solid var(--glass-border);animation:rise-in var(--t-fast) both}.subform .actions{display:flex;gap:var(--sp-2);justify-content:flex-end;flex-wrap:wrap}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--sp-3)}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:var(--touch);font-size:var(--fs-s)}.switch{position:relative;width:46px;height:26px;min-width:46px;border-radius:var(--radius-full);background:#ffffff1f;border:1px solid var(--glass-border);transition:background var(--t-fast)}.switch:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform var(--t-med)}.switch.on{background:var(--accent)}.switch.on:after{transform:translate(20px)}.inject-item{display:flex;gap:var(--sp-2);align-items:flex-start}.inject-item textarea{flex:1;min-height:60px}.hint{font-size:var(--fs-xs);color:var(--text-muted);margin:0}.error-text{font-size:var(--fs-s);color:var(--danger);margin:0}.toast{position:fixed;bottom:calc(var(--sp-5) + env(safe-area-inset-bottom) + 70px);left:50%;transform:translate(-50%);z-index:60;padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-full);font-size:var(--fs-s);background:var(--glass-bg-strong);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border-strong);box-shadow:var(--shadow-pop);animation:rise-in var(--t-med) both;max-width:88vw;text-align:center}.toast.error{border-color:#ff6b7a80;color:var(--danger)}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-up{0%{transform:translateY(30%);opacity:.5}to{transform:translateY(0);opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pulse{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
