*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f1117;--bg2:#161b27;--bg3:#1e2535;--border:#2a3347;--text:#c8d0e0;--text-dim:#6b7a99;--text-bright:#e8edf8;--accent:#6366f1;--accent-hover:#818cf8;--accent-bg:#6366f11f;--accent-border:#6366f166;--green:#22c55e;--red:#ef4444;--yellow:#f59e0b;--radius:10px;--radius-sm:6px;--shadow:0 4px 24px #0006;--font:"Inter", system-ui, -apple-system, sans-serif;--mono:"JetBrains Mono", "Fira Code", ui-monospace, monospace}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.6}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.btn{border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:500;font-family:var(--font);white-space:nowrap;border:none;align-items:center;gap:8px;padding:10px 20px;text-decoration:none;transition:all .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-ghost{color:var(--text);border:1px solid var(--border);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--bg3);border-color:var(--text-dim)}.btn-danger{color:var(--red);background:0 0;border:1px solid #0000}.btn-danger:hover:not(:disabled){background:#ef44441a}.btn-icon{color:var(--text-dim);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;padding:8px;transition:all .15s;display:inline-flex}.btn-icon:hover{background:var(--bg3);color:var(--text)}.btn-sm{padding:6px 14px;font-size:13px}.input{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text-bright);font-size:14px;font-family:var(--font);outline:none;padding:10px 14px;transition:border-color .15s}.input:focus{border-color:var(--accent)}.input::placeholder{color:var(--text-dim)}.auth-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex;overflow:auto}.auth-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:420px;box-shadow:var(--shadow);padding:40px}.auth-logo{align-items:center;gap:12px;margin-bottom:32px;display:flex}.auth-logo-icon{background:var(--accent-bg);border:1px solid var(--accent-border);border-radius:10px;justify-content:center;align-items:center;width:44px;height:44px;font-size:22px;display:flex}.auth-logo-text{color:var(--text-bright);font-size:20px;font-weight:700}.auth-logo-sub{color:var(--text-dim);font-size:12px}.auth-title{color:var(--text-bright);margin-bottom:6px;font-size:22px;font-weight:700}.auth-subtitle{color:var(--text-dim);margin-bottom:28px;font-size:14px}.auth-form{flex-direction:column;gap:16px;display:flex}.form-group{flex-direction:column;gap:6px;display:flex}.form-label{color:var(--text);font-size:13px;font-weight:500}.auth-error{border-radius:var(--radius-sm);color:var(--red);background:#ef44441a;border:1px solid #ef44444d;padding:10px 14px;font-size:13px}.auth-switch{text-align:center;color:var(--text-dim);margin-top:20px;font-size:13px}.auth-switch button{color:var(--accent-hover);cursor:pointer;background:0 0;border:none;margin-left:4px;padding:0;font-size:13px}.auth-switch button:hover{text-decoration:underline}.app-layout{height:100vh;display:flex;overflow:hidden}@supports (height:100dvh){.app-layout{height:100dvh}}.sidebar{background:var(--bg2);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:280px;transition:transform .2s;display:flex;overflow:hidden}.sidebar-inner{flex-direction:column;height:100%;display:flex;overflow:hidden}.sidebar-header{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:16px;display:flex}.sidebar-logo{flex:1;align-items:center;gap:8px;display:flex}.sidebar-logo-icon{background:var(--accent-bg);border:1px solid var(--accent-border);border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;display:flex}.sidebar-logo-name{color:var(--text-bright);font-size:15px;font-weight:700}.sidebar-new-btn{border-bottom:1px solid var(--border);padding:14px 16px}.sidebar-new-btn .btn{justify-content:center;width:100%}.sidebar-section-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);padding:10px 16px 6px;font-size:11px;font-weight:600}.sidebar-dialogs{flex:1;padding:4px 8px;overflow-y:auto}.dialog-item{border-radius:var(--radius-sm);cursor:pointer;group:true;align-items:center;gap:8px;padding:8px 10px;transition:background .1s;display:flex}.dialog-item:hover{background:var(--bg3)}.dialog-item.active{background:var(--accent-bg)}.dialog-item-icon{color:var(--text-dim);flex-shrink:0;font-size:14px}.dialog-item.active .dialog-item-icon{color:var(--accent-hover)}.dialog-item-title{color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px;overflow:hidden}.dialog-item.active .dialog-item-title{color:var(--text-bright)}.dialog-item-del{opacity:0;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:12px;transition:opacity .1s}.dialog-item:hover .dialog-item-del{opacity:1}.dialog-item-del:hover{color:var(--red);background:#ef44441a}.sidebar-footer{border-top:1px solid var(--border);align-items:center;gap:10px;padding:12px 16px;display:flex}.sidebar-user-avatar{background:var(--accent-bg);border:1px solid var(--accent-border);width:32px;height:32px;color:var(--accent-hover);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.sidebar-user-info{flex:1;min-width:0}.sidebar-user-name{color:var(--text-bright);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.sidebar-user-email{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.chat-main{background:var(--bg);flex-direction:column;flex:1;display:flex;overflow:hidden}.chat-header{border-bottom:1px solid var(--border);background:var(--bg2);flex-shrink:0;align-items:center;gap:12px;padding:14px 20px;display:flex}.chat-header-title{color:var(--text-bright);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:15px;font-weight:600;overflow:hidden}.chat-messages{flex-direction:column;flex:1;gap:20px;padding:24px 20px;display:flex;overflow-y:auto}.chat-empty{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;padding:40px;display:flex}.chat-empty-icon{font-size:56px;line-height:1}.chat-empty-title{color:var(--text-bright);font-size:22px;font-weight:700}.chat-empty-sub{color:var(--text-dim);max-width:400px;font-size:14px}.chat-empty-suggestions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:8px;display:flex}.suggestion-chip{background:var(--bg3);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:12px;padding:8px 16px;font-size:13px;transition:all .15s}.suggestion-chip:hover{background:var(--accent-bg);border-color:var(--accent-border);color:var(--text-bright)}.message{gap:12px;width:100%;max-width:820px;display:flex}.message.user{flex-direction:row-reverse;align-self:flex-end}.message.assistant{align-self:flex-start}.message-avatar{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;margin-top:2px;font-size:15px;display:flex}.message.user .message-avatar{background:var(--accent-bg);border:1px solid var(--accent-border);color:var(--accent-hover);font-size:13px;font-weight:600}.message.assistant .message-avatar{color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6)}.message-body{flex:1;min-width:0}.message-bubble{border-radius:var(--radius);word-break:break-word;padding:12px 16px;font-size:14px;line-height:1.7}.message.user .message-bubble{background:var(--accent);color:#fff;border-bottom-right-radius:4px}.message.assistant .message-bubble{background:var(--bg2);border:1px solid var(--border);color:var(--text);border-bottom-left-radius:4px}.message-image{border-radius:var(--radius-sm);border:1px solid var(--border);max-width:300px;margin-bottom:8px}.message-time{color:var(--text-dim);margin-top:4px;padding:0 4px;font-size:11px}.message.user .message-time{text-align:right}.message-bubble h1,.message-bubble h2,.message-bubble h3{color:var(--text-bright);margin:12px 0 6px;font-weight:600}.message-bubble h1{font-size:18px}.message-bubble h2{font-size:16px}.message-bubble h3{font-size:14px}.message-bubble p{margin:6px 0}.message-bubble ul,.message-bubble ol{margin:6px 0;padding-left:20px}.message-bubble li{margin:3px 0}.message-bubble code{background:var(--bg3);font-family:var(--mono);color:var(--accent-hover);border-radius:4px;padding:2px 6px;font-size:13px}.message.user .message-bubble code{color:#fff;background:#ffffff26}.message-bubble pre{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-sm);margin:8px 0;padding:12px;overflow-x:auto}.message-bubble pre code{color:var(--text);background:0 0;padding:0}.message-bubble strong{color:var(--text-bright);font-weight:600}.message.user .message-bubble strong{color:#fff}.message-bubble blockquote{border-left:3px solid var(--accent);color:var(--text-dim);margin:8px 0;padding-left:12px}.message-bubble a{color:var(--accent-hover);text-decoration:underline}.typing-indicator{align-items:center;gap:4px;padding:14px 16px;display:flex}.typing-dot{background:var(--text-dim);border-radius:50%;width:7px;height:7px;animation:1.2s infinite typing-bounce}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes typing-bounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-6px)}}.chat-input-area{border-top:1px solid var(--border);background:var(--bg2);flex-shrink:0;padding:16px 20px}.chat-input-wrapper{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);align-items:flex-end;gap:10px;padding:10px 12px;transition:border-color .15s;display:flex}.chat-input-wrapper:focus-within{border-color:var(--accent)}.chat-input-image-preview{margin-bottom:8px;position:relative}.chat-input-image-preview img{border-radius:var(--radius-sm);border:1px solid var(--border);max-height:80px}.chat-input-image-remove{background:var(--red);color:#fff;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:12px;display:flex;position:absolute;top:-6px;right:-6px}.chat-textarea{color:var(--text-bright);font-size:14px;font-family:var(--font);resize:none;background:0 0;border:none;outline:none;flex:1;min-height:24px;max-height:160px;line-height:1.6}.chat-textarea::placeholder{color:var(--text-dim)}.chat-input-actions{flex-shrink:0;align-items:center;gap:6px;display:flex}.chat-send-btn{background:var(--accent);border-radius:var(--radius-sm);color:#fff;cursor:pointer;border:none;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;transition:background .15s;display:flex}.chat-send-btn:hover:not(:disabled){background:var(--accent-hover)}.chat-send-btn:disabled{opacity:.4;cursor:not-allowed}.interactive-card{background:var(--bg3);border:1px solid var(--accent-border);border-radius:var(--radius);margin-top:12px;overflow:hidden}.interactive-header{background:var(--accent-bg);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:10px 14px;display:flex}.interactive-header-icon{font-size:16px}.interactive-header-title{color:var(--text-bright);flex:1;font-size:13px;font-weight:600}.interactive-header-badge{background:var(--accent);color:#fff;border-radius:10px;padding:2px 8px;font-size:11px;font-weight:500}.interactive-body{padding:16px}.interactive-canvas-wrapper{border-radius:var(--radius-sm);border:1px solid var(--border);background:#0a0e1a;width:100%;overflow:hidden}.interactive-canvas-wrapper canvas{width:100%;display:block}.interactive-controls{flex-wrap:wrap;gap:12px;margin-top:12px;display:flex}.interactive-control{flex-direction:column;flex:1;gap:4px;min-width:120px;display:flex}.interactive-control label{color:var(--text-dim);font-size:12px;font-weight:500}.interactive-control input[type=range]{width:100%;accent-color:var(--accent)}.interactive-control-value{color:var(--accent-hover);font-size:12px;font-weight:600;font-family:var(--mono)}.interactives-page{flex:1;padding:24px;overflow-y:auto}.interactives-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:20px;display:grid}.interactive-gallery-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:20px;transition:all .15s}.interactive-gallery-card:hover{border-color:var(--accent-border);background:var(--bg3);box-shadow:var(--shadow);transform:translateY(-2px)}.interactive-gallery-icon{margin-bottom:12px;font-size:32px}.interactive-gallery-title{color:var(--text-bright);margin-bottom:6px;font-size:15px;font-weight:600}.interactive-gallery-desc{color:var(--text-dim);font-size:13px;line-height:1.5}.modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b3;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:560px;max-height:80vh;box-shadow:var(--shadow);overflow-y:auto}.modal-header{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:20px 24px 16px;display:flex}.modal-title{color:var(--text-bright);flex:1;font-size:18px;font-weight:700}.modal-body{padding:24px}.tutorial-section{margin-bottom:24px}.tutorial-section:last-child{margin-bottom:0}.tutorial-section-title{color:var(--accent-hover);align-items:center;gap:8px;margin-bottom:10px;font-size:14px;font-weight:600;display:flex}.tutorial-item{color:var(--text);gap:10px;margin-bottom:8px;font-size:13px;line-height:1.5;display:flex}.tutorial-item-icon{flex-shrink:0;font-size:16px}.interactive-list-item{background:var(--bg3);border-radius:var(--radius-sm);color:var(--text);align-items:center;gap:10px;margin-bottom:6px;padding:8px 12px;font-size:13px;display:flex}.interactive-list-icon{font-size:18px}.mobile-header{border-bottom:1px solid var(--border);background:var(--bg2);z-index:60;flex-shrink:0;align-items:center;gap:12px;padding:12px 16px;display:none}@supports (padding-top:env(safe-area-inset-top)){.mobile-header{padding-top:calc(12px + env(safe-area-inset-top));padding-left:calc(16px + env(safe-area-inset-left));padding-right:calc(16px + env(safe-area-inset-right))}}.mobile-overlay{z-index:40;background:#0009;display:none;position:fixed;inset:0}@media (width<=768px){.sidebar{z-index:50;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.mobile-header{display:flex;position:sticky;top:0}.mobile-overlay.visible{display:block}.chat-messages{padding:16px 12px}.chat-input-area{padding:12px}.interactives-page{padding:16px}.interactives-grid{grid-template-columns:1fr}}.page-tabs{border-bottom:1px solid var(--border);background:var(--bg2);flex-shrink:0;gap:4px;padding:8px 16px;display:flex}.page-tab{border-radius:var(--radius-sm);cursor:pointer;color:var(--text-dim);background:0 0;border:none;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:500;transition:all .15s;display:flex}.page-tab:hover{background:var(--bg3);color:var(--text)}.page-tab.active{background:var(--accent-bg);color:var(--accent-hover)}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.page-title{color:var(--text-bright);margin-bottom:4px;font-size:22px;font-weight:700}.page-subtitle{color:var(--text-dim);font-size:14px}
