@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=DM+Sans:wght@400;500;600;700&display=swap";:root{--bg-base: #1e1e1e;--bg-sidebar: #252526;--bg-activitybar: #333333;--bg-tabbar: #252526;--bg-tab-active: #1e1e1e;--bg-tab-inactive: #2d2d2d;--bg-statusbar: #007acc;--bg-terminal: #1e1e1e;--bg-input: #3c3c3c;--bg-hover: #2a2d2e;--bg-selection: #04395e;--bg-scrollbar: #424242;--bg-context-menu: #252526;--border: #3c3c3c;--border-active: #007acc;--text-primary: #cccccc;--text-secondary: #858585;--text-bright: #e4e4e7;--text-dimmed: #5a5a5a;--text-accent: #007acc;--text-white: #ffffff;--accent: #007acc;--accent-hover: #1a8ad4;--danger: #f14c4c;--success: #89d185;--warning: #cca700;--font-ui: "DM Sans", "Segoe UI", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", Consolas, "Courier New", monospace;--activity-bar-width: 48px;--sidebar-width: 260px;--tabbar-height: 35px;--statusbar-height: 22px}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;background:var(--bg-base);color:var(--text-primary);font-family:var(--font-ui);font-size:13px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:var(--bg-selection)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-scrollbar);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#555}a{color:var(--text-accent);text-decoration:none}a:hover{text-decoration:underline}.auth-page{min-height:100vh;background:var(--bg-base);color:var(--text-primary);display:flex;align-items:center;justify-content:center;padding:24px;position:relative;overflow:hidden}.auth-page:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(0deg,rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);background-size:36px 36px;opacity:.22;pointer-events:none}.auth-page:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 10% 15%,rgba(0,122,204,.16),transparent 42%),radial-gradient(circle at 90% 80%,rgba(0,122,204,.11),transparent 45%);pointer-events:none}.auth-grid{width:min(1120px,100%);display:grid;grid-template-columns:1.08fr .92fr;gap:18px;position:relative;z-index:1}.auth-showcase{background:var(--bg-sidebar);border:1px solid var(--border);border-radius:10px;padding:22px;display:flex;flex-direction:column;gap:18px;box-shadow:0 24px 48px #0000004d;animation:authEnter .45s ease}.auth-showcase-window{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#1a1a1a}.auth-window-bar{height:34px;background:#232323;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:7px;padding:0 12px}.auth-window-bar span{width:10px;height:10px;border-radius:50%;display:block}.auth-window-bar span:nth-child(1){background:#f14c4c}.auth-window-bar span:nth-child(2){background:#cca700}.auth-window-bar span:nth-child(3){background:#89d185}.auth-window-bar p{margin-left:8px;color:var(--text-secondary);font-size:11px;font-family:var(--font-ui);letter-spacing:.2px}.auth-window-body{padding:14px 14px 16px;font-family:var(--font-mono);display:grid;gap:8px}.auth-code-line{display:grid;grid-template-columns:24px 1fr;align-items:baseline;gap:10px;font-size:12px;color:#d4d4d4;opacity:0;transform:translateY(6px);animation:authCodeIn .5s ease forwards}.auth-code-line:nth-child(1){animation-delay:.1s}.auth-code-line:nth-child(2){animation-delay:.2s}.auth-code-line:nth-child(3){animation-delay:.3s}.auth-code-line:nth-child(4){animation-delay:.4s}.auth-code-line span{color:#6a9955;text-align:right}.auth-code-line code{font-family:inherit;color:#9cdcfe;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.auth-showcase-copy h3{font-family:var(--font-mono);font-size:25px;line-height:1.2;color:var(--text-bright)}.auth-showcase-copy p{margin-top:10px;color:var(--text-secondary);max-width:48ch;line-height:1.6}.auth-showcase-list{list-style:none;display:grid;gap:10px}.auth-showcase-list li{border:1px solid var(--border);border-radius:7px;background:#ffffff05;padding:11px 13px;color:var(--text-primary);font-size:13px}.auth-card{background:var(--bg-sidebar);border:1px solid var(--border);border-radius:10px;padding:26px;box-shadow:0 24px 48px #0000005c;display:flex;flex-direction:column;justify-content:center;animation:authEnter .45s ease}.auth-header{margin-bottom:24px}.auth-brand{display:inline-flex;align-items:center;gap:9px}.auth-brand-icon{width:30px;height:30px;border-radius:6px;background:var(--accent);color:#fff;font-family:var(--font-mono);font-weight:700;display:flex;align-items:center;justify-content:center}.auth-brand-name{font-family:var(--font-mono);font-size:19px;color:var(--text-bright);font-weight:700}.brand-dot{color:var(--accent)}.auth-tagline{margin-top:9px;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--text-secondary)}.auth-title{font-size:24px;font-weight:700;color:var(--text-bright);margin-bottom:4px}.auth-subtitle{color:var(--text-secondary);margin-bottom:18px}.auth-error{margin-bottom:14px;border:1px solid rgba(241,76,76,.4);background:#f14c4c1a;color:#f3b0b0;border-radius:6px;padding:9px 10px;display:flex;align-items:center;gap:8px}.auth-error-icon{width:17px;height:17px;border-radius:50%;background:#f14c4c47;color:var(--danger);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.auth-form{display:grid;gap:12px}.auth-input-group{display:grid;gap:6px}.auth-input-label{font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:var(--text-secondary)}.auth-input-wrapper{position:relative}.auth-input-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-family:var(--font-mono);color:var(--text-secondary);pointer-events:none}.auth-input{width:100%;height:40px;border-radius:6px;border:1px solid var(--border);background:var(--bg-input);color:var(--text-bright);padding:0 58px 0 34px;font-family:var(--font-ui);font-size:13px;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.auth-input-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:none;background:transparent;color:var(--text-secondary);font-size:11px;font-weight:600;letter-spacing:.2px;cursor:pointer;padding:2px 4px;border-radius:4px}.auth-input-toggle:hover{color:var(--text-bright);background:#ffffff0f}.auth-input::placeholder{color:#8c8c8c}.auth-input:hover{border-color:#5a5a5a}.auth-input:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.auth-submit{margin-top:4px;height:40px;border-radius:6px;border:1px solid #136ea7;background:linear-gradient(180deg,#1780bf,#0069ac);color:#fff;font-weight:600;font-size:13px;cursor:pointer;transition:transform .12s ease,filter .12s ease}.auth-submit:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.08)}.auth-submit:active:not(:disabled){transform:translateY(0)}.auth-submit:disabled{cursor:not-allowed;opacity:.65}.auth-spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;vertical-align:text-bottom;margin-right:7px;animation:authSpin .6s linear infinite}.auth-switch{margin-top:15px;color:var(--text-secondary);font-size:13px}.auth-switch a{color:var(--accent);font-weight:600;text-decoration:none}.auth-switch a:hover{text-decoration:underline}.auth-footer{margin-top:17px;padding-top:12px;border-top:1px solid var(--border)}.auth-footer p{color:var(--text-dimmed);font-family:var(--font-mono);font-size:11px}.footer-cursor{display:inline-block;width:6px;height:11px;background:var(--accent);margin-left:3px;animation:authBlink 1s step-end infinite}@keyframes authEnter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes authCodeIn{to{opacity:1;transform:translateY(0)}}@keyframes authSpin{to{transform:rotate(360deg)}}@keyframes authBlink{50%{opacity:0}}@media (max-width: 980px){.auth-page{padding:16px}.auth-grid{grid-template-columns:1fr;max-width:520px}.auth-showcase{display:none}}@media (max-width: 480px){.auth-card{padding:20px}.auth-title{font-size:21px}}.ide{display:grid;grid-template-columns:var(--activity-bar-width) var(--current-sidebar-width, var(--sidebar-width)) 1fr;grid-template-rows:1fr var(--statusbar-height);height:100vh;overflow:hidden;background:var(--bg-base)}.ide.sidebar-hidden{grid-template-columns:var(--activity-bar-width) 0px 1fr}.activity-bar{grid-row:1;grid-column:1;background:var(--bg-activitybar);display:flex;flex-direction:column;align-items:center;padding-top:4px;border-right:1px solid var(--border);z-index:10}.activity-bar-top{display:flex;flex-direction:column;gap:2px}.activity-bar-bottom{margin-top:auto;display:flex;flex-direction:column;gap:2px;padding-bottom:8px}.activity-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary);position:relative;transition:color .15s}.activity-icon:hover,.activity-icon.active{color:var(--text-bright)}.activity-icon.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:2px;background:var(--text-bright);border-radius:0 2px 2px 0}.activity-icon svg{width:24px;height:24px;fill:currentColor}.sidebar{grid-row:1;grid-column:2;background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;min-width:0;position:relative}.sidebar-hidden .sidebar{display:none}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:0 16px;height:35px;flex-shrink:0;-webkit-user-select:none;user-select:none}.sidebar-header h2{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-project-label{display:flex;align-items:center;gap:6px;min-width:0}.sidebar-back-btn{width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;border-radius:4px;font-size:14px;flex-shrink:0;transition:all .15s}.sidebar-back-btn:hover{background:var(--bg-hover);color:var(--text-bright)}.sidebar-actions{display:flex;gap:2px}.sidebar-action-btn{width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;border-radius:4px;font-size:14px;transition:background .15s,color .15s}.sidebar-action-btn:hover{background:var(--bg-hover);color:var(--text-bright)}.sidebar-content{flex:1;overflow-y:auto;overflow-x:hidden}.sidebar-resize-handle{position:absolute;right:-3px;top:0;bottom:0;width:6px;cursor:col-resize;z-index:20}.sidebar-resize-handle:hover,.sidebar-resize-handle.dragging{background:var(--accent);transition:background .15s .1s}.file-explorer{-webkit-user-select:none;user-select:none}.file-tree-node{display:flex;align-items:center;height:22px;padding-right:8px;cursor:pointer;white-space:nowrap;font-size:13px;color:var(--text-primary);transition:background .08s}.file-tree-node:hover{background:var(--bg-hover)}.file-tree-node.selected,.file-tree-node.renaming{background:var(--bg-selection)}.tree-indent{flex-shrink:0}.tree-chevron{width:16px;height:22px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:10px;color:var(--text-secondary);transition:transform .12s}.tree-chevron.open{transform:rotate(90deg)}.tree-chevron.hidden{visibility:hidden}.tree-icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-right:4px;font-size:12px}.tree-icon.folder{color:#dcb67a}.tree-icon.file-js{color:#e8d44d}.tree-icon.file-jsx{color:#61dafb}.tree-icon.file-ts,.tree-icon.file-tsx{color:#3178c6}.tree-icon.file-css{color:#a277ff}.tree-icon.file-html{color:#e34f26}.tree-icon.file-json{color:#89d185}.tree-icon.file-md{color:#fff}.tree-icon.file-default{color:var(--text-secondary)}.tree-name{overflow:hidden;text-overflow:ellipsis}.tree-rename-input{flex:1;min-width:0;height:18px;padding:0 4px;background:var(--bg-input);border:1px solid var(--accent);color:var(--text-bright);font-family:var(--font-ui);font-size:13px;outline:none;border-radius:2px}.new-item-input-row{display:flex;align-items:center;height:22px;padding-right:8px}.new-item-input{flex:1;min-width:0;height:18px;padding:0 4px;background:var(--bg-input);border:1px solid var(--accent);color:var(--text-bright);font-family:var(--font-ui);font-size:13px;outline:none;border-radius:2px}.main-content{grid-row:1;grid-column:3;display:flex;flex-direction:column;overflow:hidden;min-width:0}.tab-bar{display:flex;align-items:stretch;height:var(--tabbar-height);background:var(--bg-tabbar);border-bottom:1px solid var(--border);overflow-x:auto;overflow-y:hidden;flex-shrink:0}.tab-bar::-webkit-scrollbar{height:3px}.tab{display:flex;align-items:center;gap:6px;padding:0 10px;min-width:100px;max-width:200px;height:100%;background:var(--bg-tab-inactive);border-right:1px solid var(--border);cursor:pointer;font-size:13px;color:var(--text-secondary);position:relative;-webkit-user-select:none;user-select:none;flex-shrink:0;transition:background .1s}.tab:hover{background:var(--bg-tab-active)}.tab.active{background:var(--bg-tab-active);color:var(--text-bright)}.tab.active:after{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--accent)}.tab-icon{width:14px;height:14px;display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0}.tab-icon.file-js{color:#e8d44d}.tab-icon.file-jsx{color:#61dafb}.tab-icon.file-ts,.tab-icon.file-tsx{color:#3178c6}.tab-icon.file-css{color:#a277ff}.tab-icon.file-html{color:#e34f26}.tab-icon.file-json{color:#89d185}.tab-icon.file-md{color:#fff}.tab-icon.file-default{color:var(--text-secondary)}.tab-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.tab-dirty{width:8px;height:8px;border-radius:50%;background:var(--text-bright);flex-shrink:0}.tab-close{width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;font-size:14px;color:var(--text-secondary);flex-shrink:0;transition:background .1s,color .1s;opacity:0}.tab:hover .tab-close,.tab.active .tab-close{opacity:1}.tab-close:hover{background:#ffffff1a;color:var(--text-bright)}.tab .tab-dirty{display:none}.tab.dirty .tab-dirty{display:block}.tab.dirty .tab-close{opacity:0;display:none}.tab.dirty:hover .tab-dirty{display:none}.tab.dirty:hover .tab-close{display:flex;opacity:1}.editor-panel{flex:1;overflow:hidden;min-height:0}.editor-panel .monaco-wrapper{height:100%}.welcome-tab{height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-base);overflow-y:auto}.welcome-content{text-align:center;max-width:520px;padding:40px 20px;animation:fadeInWelcome .5s ease forwards}@keyframes fadeInWelcome{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.welcome-logo{width:64px;height:64px;background:linear-gradient(135deg,#007acc,#6366f1);border-radius:16px;display:flex;align-items:center;justify-content:center;margin:0 auto 20px;font-family:var(--font-mono);font-weight:700;font-size:28px;color:#fff;box-shadow:0 8px 32px #007acc40}.welcome-title{font-size:28px;font-weight:700;color:var(--text-bright);margin-bottom:4px;font-family:var(--font-mono)}.welcome-title .dot{color:var(--accent)}.welcome-subtitle{font-size:14px;color:var(--text-secondary);margin-bottom:36px;letter-spacing:.5px}.welcome-shortcuts{display:flex;flex-direction:column;gap:10px;margin-bottom:36px}.welcome-shortcut{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#ffffff08;border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all .15s}.welcome-shortcut:hover{background:var(--bg-hover);border-color:var(--accent)}.welcome-shortcut-label{font-size:13px;color:var(--text-primary)}.welcome-shortcut-key{font-family:var(--font-mono);font-size:11px;color:var(--text-secondary);padding:2px 8px;background:#ffffff0d;border-radius:4px;border:1px solid var(--border)}.welcome-actions{display:flex;gap:10px;justify-content:center}.welcome-action-btn{padding:8px 20px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;border:1px solid var(--border);background:transparent;color:var(--text-primary);font-family:var(--font-ui)}.welcome-action-btn:hover{background:var(--bg-hover);border-color:var(--text-secondary)}.welcome-action-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.welcome-action-btn.primary:hover{background:var(--accent-hover)}.welcome-action-btn.danger{border-color:var(--danger);color:var(--danger)}.welcome-action-btn.danger:hover{background:#f14c4c1a}.terminal-panel{border-top:1px solid var(--border);display:flex;flex-direction:column;background:var(--bg-terminal);overflow:hidden}.terminal-panel.terminal-hidden{display:none}.terminal-resize-handle{height:4px;cursor:row-resize;flex-shrink:0;transition:background .15s}.terminal-resize-handle:hover,.terminal-resize-handle.dragging{background:var(--accent)}.terminal-header{display:flex;align-items:center;justify-content:space-between;padding:0 12px;height:30px;flex-shrink:0;background:var(--bg-sidebar);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none}.terminal-header-tabs{display:flex;gap:0;align-items:center;overflow-x:auto;overflow-y:hidden;flex:1;min-width:0}.terminal-header-tabs::-webkit-scrollbar{height:0}.terminal-tab{display:flex;align-items:center;gap:6px;padding:0 8px;height:28px;font-size:12px;color:var(--text-secondary);cursor:pointer;border-right:1px solid var(--border);white-space:nowrap;flex-shrink:0;transition:background .1s,color .1s;-webkit-user-select:none;user-select:none}.terminal-tab:hover{background:#ffffff0d;color:var(--text-primary)}.terminal-tab.active{color:var(--text-bright);background:var(--bg-terminal)}.terminal-tab-icon{font-family:var(--font-mono);font-size:11px;font-weight:700;color:inherit;opacity:.7}.terminal-tab-name{font-family:var(--font-ui);font-size:12px;cursor:default}.terminal-tab-rename{width:72px;height:18px;padding:0 4px;background:var(--bg-input);border:1px solid var(--accent);color:var(--text-bright);font-family:var(--font-ui);font-size:12px;outline:none;border-radius:2px}.terminal-tab-pane-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.terminal-tab-pane-dot.split{background:var(--accent)}.terminal-tab-close{width:18px;height:18px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;border-radius:3px;font-size:14px;line-height:1;opacity:0;transition:all .1s}.terminal-tab:hover .terminal-tab-close{opacity:1}.terminal-tab.active .terminal-tab-close{opacity:.7}.terminal-tab-close:hover{background:#ffffff1a;color:var(--text-bright);opacity:1!important}.terminal-new-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:16px;border-radius:4px;flex-shrink:0;transition:all .1s}.terminal-new-btn:hover{background:#ffffff14;color:var(--text-bright)}.terminal-split-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;border-radius:4px;flex-shrink:0;transition:all .1s}.terminal-split-btn:hover{background:#ffffff14;color:var(--text-bright)}.terminal-split-btn.active{color:var(--accent)}.terminal-split-btn.active:hover{color:var(--text-bright)}.terminal-tab.split-tab{border-bottom:2px solid var(--accent)}.terminal-header-actions{display:flex;gap:2px}.terminal-action-btn{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;border-radius:4px;font-size:12px;transition:background .1s,color .1s}.terminal-action-btn:hover{background:var(--bg-hover);color:var(--text-bright)}.terminal-bodies{flex:1;overflow:hidden;position:relative}.terminal-body{display:none;height:100%;padding:4px;position:absolute;top:0;right:0;bottom:0;left:0}.terminal-body.active{display:block}.terminal-body .xterm{height:100%}.terminal-bodies.split .terminal-body.active{right:auto;width:calc(var(--split-left, 50%) - 2px)}.terminal-bodies.split .terminal-body.split-right{display:block;left:auto;right:0;width:calc(100% - var(--split-left, 50%) - 2px)}.terminal-split-gutter{position:absolute;top:0;bottom:0;left:var(--split-left, 50%);width:4px;transform:translate(-50%);background:var(--border);cursor:col-resize;z-index:2;transition:background .15s}.terminal-split-gutter:hover{background:var(--accent)}.status-bar{grid-row:2;grid-column:1 / -1;background:var(--bg-statusbar);display:flex;align-items:center;justify-content:space-between;padding:0 10px;font-size:12px;color:#fff;z-index:10;-webkit-user-select:none;user-select:none}.status-bar-left,.status-bar-right{display:flex;align-items:center;gap:2px}.status-item{display:flex;align-items:center;gap:4px;padding:0 6px;height:var(--statusbar-height);cursor:default;transition:background .1s}.status-item:hover{background:#ffffff1f}.status-item.clickable{cursor:pointer}.context-menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999}.context-menu{position:fixed;z-index:1000;min-width:180px;background:var(--bg-context-menu);border:1px solid var(--border);border-radius:6px;padding:4px 0;box-shadow:0 4px 24px #00000080;animation:menuFadeIn .1s ease}@keyframes menuFadeIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.context-menu-item{display:flex;align-items:center;gap:10px;padding:6px 24px 6px 12px;font-size:13px;color:var(--text-primary);cursor:pointer;transition:background .08s}.context-menu-item:hover{background:var(--accent);color:#fff}.context-menu-item-icon{width:16px;text-align:center;font-size:12px;color:var(--text-secondary)}.context-menu-item:hover .context-menu-item-icon{color:#fff}.context-menu-item.danger{color:var(--danger)}.context-menu-item.danger:hover{background:var(--danger);color:#fff}.context-menu-separator{height:1px;background:var(--border);margin:4px 0}.context-menu-item-shortcut{margin-left:auto;font-size:11px;color:var(--text-dimmed);font-family:var(--font-mono)}.context-menu-item:hover .context-menu-item-shortcut{color:#ffffffb3}.container-loading{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-base);position:relative;overflow:hidden}.container-loading:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 60% 50% at 50% 50%,rgba(0,122,204,.06) 0%,transparent 70%)}.container-loading-content{text-align:center;z-index:1;animation:fadeInWelcome .4s ease forwards}.container-loading-icon{width:80px;height:80px;margin:0 auto 24px;display:flex;align-items:center;justify-content:center;font-size:40px;background:#007acc1a;border:1px solid rgba(0,122,204,.2);border-radius:20px;animation:dockerPulse 2s ease-in-out infinite}.container-loading-icon.error{background:#f14c4c1a;border-color:#f14c4c4d;color:var(--danger);font-size:32px;font-weight:700;animation:none}@keyframes dockerPulse{0%,to{transform:scale(1);opacity:.8}50%{transform:scale(1.05);opacity:1}}.container-loading-title{font-size:22px;font-weight:600;color:var(--text-bright);margin-bottom:8px;font-family:var(--font-mono)}.container-loading-message{font-size:14px;color:var(--text-secondary);margin-bottom:28px}.container-loading-bar{width:200px;height:3px;background:var(--border);border-radius:3px;margin:0 auto;overflow:hidden}.container-loading-bar-fill{height:100%;width:40%;background:var(--accent);border-radius:3px;animation:loadingSlide 1.5s ease-in-out infinite}@keyframes loadingSlide{0%{transform:translate(-100%)}to{transform:translate(350%)}}.container-loading-retry{padding:8px 24px;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font-ui);transition:background .15s}.container-loading-retry:hover{background:var(--accent-hover)}.docker-status{font-size:11px}.search-panel{display:flex;flex-direction:column;height:100%}.search-input-wrapper{display:flex;align-items:center;gap:6px;margin:8px 10px;padding:0 8px;height:28px;background:var(--bg-input);border:1px solid var(--border);border-radius:4px;transition:border-color .15s}.search-input-wrapper:focus-within{border-color:var(--accent)}.search-input-icon{color:var(--text-secondary);flex-shrink:0}.search-input{flex:1;min-width:0;background:none;border:none;outline:none;color:var(--text-bright);font-family:var(--font-ui);font-size:13px}.search-input::placeholder{color:var(--text-dimmed)}.search-clear{width:18px;height:18px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;border-radius:3px;font-size:16px;line-height:1;flex-shrink:0}.search-clear:hover{background:var(--bg-hover);color:var(--text-bright)}.search-results{flex:1;overflow-y:auto}.search-status{padding:12px 16px;font-size:12px;color:var(--text-secondary)}.search-result{display:flex;align-items:flex-start;gap:6px;padding:4px 10px;cursor:pointer;transition:background .08s}.search-result:hover{background:var(--bg-hover)}.search-result.is-folder{opacity:.7}.search-result-icon{flex-shrink:0;font-size:12px;margin-top:2px}.search-result-info{min-width:0;flex:1}.search-result-path{font-size:13px;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result:hover .search-result-path{color:var(--text-bright)}.ports-panel{display:flex;flex-direction:column;height:100%;padding:8px 0}.ports-input-section{padding:0 10px;margin-bottom:8px}.ports-input-row{display:flex;gap:4px}.ports-input{flex:1;min-width:0;height:28px;padding:0 8px;background:var(--bg-input);border:1px solid var(--border);border-radius:4px;color:var(--text-bright);font-family:var(--font-mono);font-size:13px;outline:none;transition:border-color .15s}.ports-input:focus{border-color:var(--accent)}.ports-input::placeholder{color:var(--text-dimmed);font-family:var(--font-ui)}.ports-input::-webkit-inner-spin-button,.ports-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ports-open-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--accent);border:none;border-radius:4px;color:#fff;cursor:pointer;flex-shrink:0;transition:background .15s}.ports-open-btn:hover{background:var(--accent-hover)}.ports-error{font-size:11px;color:var(--danger);margin-top:4px;padding:0 2px}.ports-list{flex:1;overflow-y:auto}.ports-list-header{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);padding:8px 12px 4px}.ports-item{display:flex;align-items:center;gap:6px;padding:5px 10px;cursor:default;transition:background .08s}.ports-item:hover{background:var(--bg-hover)}.ports-item-icon{font-size:13px;flex-shrink:0}.ports-item-label{flex:1;font-size:13px;font-family:var(--font-mono);color:var(--text-primary);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ports-item-btn{width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;border-radius:3px;flex-shrink:0;opacity:0;transition:all .1s}.ports-item:hover .ports-item-btn{opacity:1}.ports-item-btn:hover{background:#ffffff1a;color:var(--text-bright)}.ports-item-btn.danger:hover{color:var(--danger)}.ports-hint{padding:16px 14px;font-size:12px;color:var(--text-secondary);line-height:1.6}.ports-hint-example{margin-top:12px;padding:10px;background:#ffffff08;border:1px solid var(--border);border-radius:6px}.ports-hint-example code{display:inline-block;margin-top:4px;padding:1px 6px;background:var(--bg-input);border-radius:3px;font-family:var(--font-mono);font-size:12px;color:var(--success)}.webview-container{display:flex;flex-direction:column;height:100%;background:var(--bg-base)}.webview-toolbar{display:flex;align-items:center;gap:6px;padding:4px 8px;height:36px;background:var(--bg-sidebar);border-bottom:1px solid var(--border);flex-shrink:0}.webview-toolbar-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;border-radius:4px;flex-shrink:0;transition:all .1s}.webview-toolbar-btn:hover{background:var(--bg-hover);color:var(--text-bright)}.webview-url-bar{flex:1;display:flex;align-items:center;gap:6px;height:26px;padding:0 8px;background:var(--bg-input);border:1px solid var(--border);border-radius:13px;min-width:0;transition:border-color .15s}.webview-url-bar:focus-within{border-color:var(--accent)}.webview-url-icon{font-size:12px;flex-shrink:0}.webview-url-input{flex:1;min-width:0;background:none;border:none;outline:none;color:var(--text-primary);font-family:var(--font-mono);font-size:12px}.webview-body{flex:1;position:relative;overflow:hidden;min-height:0}.webview-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg-base);gap:12px}.webview-loading-spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:webviewSpin .8s linear infinite}@keyframes webviewSpin{to{transform:rotate(360deg)}}.webview-loading-text{font-size:13px;color:var(--text-primary);margin:0}.webview-loading-port{font-size:12px;font-family:var(--font-mono);color:var(--text-secondary);margin:0}.webview-iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:none;background:#fff}.search-result-line{display:flex;gap:6px;margin-top:2px;font-size:11px}.search-result-line-num{color:var(--accent);flex-shrink:0;font-family:var(--font-mono)}.search-result-line-text{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono)}.dash-sidebar-loading{display:flex;align-items:center;gap:8px;padding:16px;font-size:12px;color:var(--text-secondary)}.dash-sidebar-spinner{width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:dashSpin .7s linear infinite}@keyframes dashSpin{to{transform:rotate(360deg)}}.dash-sidebar-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px 16px;text-align:center}.dash-sidebar-empty p{font-size:13px;color:var(--text-secondary)}.dash-sidebar-create-btn{padding:5px 14px;background:none;border:1px dashed var(--border);color:var(--text-secondary);border-radius:4px;font-family:var(--font-ui);font-size:12px;cursor:pointer;transition:all .15s}.dash-sidebar-create-btn:hover{border-color:var(--accent);color:var(--accent);background:#007acc0f}.dash-project-list{display:flex;flex-direction:column}.dash-sidebar-hint{padding:6px 12px;font-size:11px;color:var(--text-dimmed);letter-spacing:.3px}.dash-project-item{display:flex;align-items:center;height:24px;padding:0 8px 0 12px;cursor:pointer;white-space:nowrap;font-size:13px;color:var(--text-primary);transition:background .08s;gap:4px;position:relative}.dash-project-item:hover{background:var(--bg-hover)}.dash-project-item .tree-name{flex:1;overflow:hidden;text-overflow:ellipsis;min-width:0}.dash-project-time{font-size:10px;color:var(--text-dimmed);flex-shrink:0;margin-left:auto;padding-left:8px}.dash-project-delete{width:18px;height:18px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;border-radius:3px;font-size:14px;line-height:1;flex-shrink:0;opacity:0;transition:all .1s;margin-left:4px}.dash-project-item:hover .dash-project-delete{opacity:1}.dash-project-delete:hover{background:#f14c4c26;color:var(--danger)}.dash-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:24px 32px 48px}.dash-error{display:flex;align-items:center;gap:8px;padding:10px 16px;margin-bottom:20px;background:#f14c4c14;border:1px solid rgba(241,76,76,.2);border-radius:8px;color:var(--danger);font-size:13px;animation:fadeInDash .2s ease}@keyframes fadeInDash{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dash-error-badge{width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:var(--danger);color:#fff;border-radius:50%;font-size:11px;font-weight:700;flex-shrink:0}.dash-error-close{margin-left:auto;width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--danger);cursor:pointer;border-radius:3px;font-size:16px;opacity:.6;transition:opacity .15s}.dash-error-close:hover{opacity:1}.dash-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px;background:#ffffff05;border:1px solid var(--border);border-radius:12px;margin-bottom:28px;animation:fadeInDash .3s ease}.dash-hero-left{display:flex;align-items:center;gap:16px;min-width:0}.dash-hero-logo{width:48px;height:48px;background:linear-gradient(135deg,#007acc,#6366f1);border-radius:12px;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:700;font-size:22px;color:#fff;flex-shrink:0;box-shadow:0 4px 16px #007acc33}.dash-hero-text{min-width:0}.dash-hero-title{font-family:var(--font-mono);font-size:22px;font-weight:700;color:var(--text-bright);line-height:1.2}.dash-hero-dot{color:var(--accent)}.dash-hero-subtitle{font-size:13px;color:var(--text-secondary);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-hero-btn{display:flex;align-items:center;gap:6px;padding:8px 18px;background:var(--accent);border:none;border-radius:6px;color:#fff;font-family:var(--font-ui);font-size:13px;font-weight:600;cursor:pointer;flex-shrink:0;transition:background .15s}.dash-hero-btn:hover{background:var(--accent-hover)}.dash-section{margin-bottom:28px}.dash-section-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.dash-section-title{font-family:var(--font-mono);font-size:15px;font-weight:600;color:var(--text-bright)}.dash-section-count{font-family:var(--font-mono);font-size:11px;color:var(--text-secondary);background:#ffffff0f;padding:1px 8px;border-radius:10px}.dash-section-desc{font-size:12px;color:var(--text-secondary);margin-bottom:12px}.dash-loading{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 0;color:var(--text-secondary);font-size:13px}.dash-loading-spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:dashSpin .8s linear infinite}.dash-project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}.dash-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;padding:22px 14px 16px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:10px;cursor:pointer;transition:all .2s ease;text-align:center}.dash-card:hover{background:#007acc0f;border-color:#007acc40;transform:translateY(-1px);box-shadow:0 4px 16px #00000040}.dash-card-delete{position:absolute;top:6px;right:6px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-dimmed);border-radius:4px;cursor:pointer;opacity:0;transition:all .15s}.dash-card:hover .dash-card-delete{opacity:1}.dash-card-delete:hover{background:#f14c4c26;color:var(--danger)}.dash-card-icon{color:#dcb67a;opacity:.8;transition:all .2s}.dash-card:hover .dash-card-icon{opacity:1;transform:scale(1.05)}.dash-card-icon-new{color:var(--text-secondary)}.dash-card-name{font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--text-bright);word-break:break-all;line-height:1.3}.dash-card-time{font-size:11px;color:var(--text-dimmed)}.dash-card-new{border-style:dashed;border-color:#ffffff1a;background:transparent}.dash-card-new:hover{border-color:#007acc66;background:#007acc0a}.dash-card-new .dash-card-name{color:var(--text-secondary)}.dash-card-new:hover .dash-card-name{color:var(--text-bright)}.dash-tools-grid{display:flex;flex-direction:column;gap:6px}.dash-tool{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:8px;transition:all .2s ease}.dash-tool:hover{background:#ffffff0d;border-color:#ffffff1a}.dash-tool.installed{border-color:#89d1851f}.dash-tool.installing{border-color:#007acc33;background:#007acc0a}.dash-tool-icon{font-size:22px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#ffffff0a;border-radius:8px;flex-shrink:0}.dash-tool-info{flex:1;min-width:0}.dash-tool-name{font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--text-bright);margin-bottom:1px}.dash-tool-desc{font-size:12px;color:var(--text-secondary)}.dash-tool-version{font-family:var(--font-mono);font-size:11px;color:var(--success);margin-top:2px;display:block}.dash-tool-error{font-size:11px;color:var(--danger);margin-top:2px;display:block}.dash-tool-action{flex-shrink:0}.dash-tool-install{padding:5px 16px;background:var(--accent);border:none;border-radius:5px;color:#fff;font-family:var(--font-ui);font-size:12px;font-weight:600;cursor:pointer;transition:background .15s}.dash-tool-install:hover{background:var(--accent-hover)}.dash-tool-badge{font-family:var(--font-mono);font-size:11px;padding:3px 10px;border-radius:10px}.dash-tool-badge.installed{background:#89d1851a;color:var(--success);border:1px solid rgba(137,209,133,.2)}.dash-tool-installing{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--accent)}.dash-tool-spinner{width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:dashSpin .7s linear infinite}.dash-info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}.dash-info-item{display:flex;flex-direction:column;gap:4px;padding:14px 16px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:8px}.dash-info-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary)}.dash-info-value{font-family:var(--font-mono);font-size:13px;color:var(--text-bright)}.dash-info-value.running{color:var(--success)}@media (max-width: 700px){.dash-content{padding:16px}.dash-hero{flex-direction:column;align-items:flex-start;gap:14px}.dash-project-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.dash-tool{flex-wrap:wrap}.dash-tool-action{width:100%;margin-top:4px}.dash-tool-install{width:100%}.dash-info-grid{grid-template-columns:1fr 1fr}}/**
 * Copyright (c) 2014 The xterm.js authors. All rights reserved.
 * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
 * https://github.com/chjj/term.js
 * @license MIT
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 * Originally forked from (with the author's permission):
 *   Fabrice Bellard's javascript vt100 for jslinux:
 *   http://bellard.org/jslinux/
 *   Copyright (c) 2011 Fabrice Bellard
 *   The original design remains. The terminal itself
 *   has been extended to include xterm CSI codes, among
 *   other features.
 */.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}
