* { margin: 0; padding: 0; box-sizing: border-box; } :root { /* Accent colors (set per theme) */ --theme-border: #1b5e20; --theme-bg: #e8f5e9; --theme-hover-bg: #c8e6c9; --theme-accent: #1b5e20; --theme-accent-rgb: 27, 94, 32; /* UI surface colors */ --bg-primary: #ffffff; --bg-secondary: #f5f5f5; --bg-tertiary: #fafafa; --bg-input: #ffffff; --bg-hover: #f0f0f0; --bg-card: #ffffff; /* Text colors */ --text-primary: #1a1a1a; --text-secondary: #666666; --text-muted: #999999; /* Border colors */ --border-primary: #e0e0e0; --border-subtle: #f0f0f0; } body { font-family: 'JetBrains Mono', monospace; background-color: var(--bg-primary); color: var(--text-primary); height: 100vh; overflow: hidden; } .app-container { display: flex; flex-direction: column; height: 100vh; } /* Tab Bar */ .tab-bar { display: flex; align-items: stretch; background: var(--bg-primary); padding: 0; gap: 0; overflow: hidden; border-bottom: 1px solid var(--border-primary); height: 25px; position: relative; z-index: 10; } .tab-bar-spacer { flex: 1; } #dynamicTabs { display: flex; align-items: stretch; min-width: 0; flex: 0 1 auto; overflow: hidden; } .tab { display: flex; align-items: center; gap: 4px; padding: 0 8px; background: var(--bg-primary); color: var(--text-muted); cursor: pointer; border: none; white-space: nowrap; transition: all 0.15s; border-right: 1px solid var(--border-subtle); font-size: 10px; font-weight: 400; letter-spacing: 0.5px; position: relative; flex-shrink: 1; min-width: 36px; overflow: hidden; } .tab:hover { color: var(--text-primary); } .tab.active { color: var(--theme-accent); font-weight: 500; } .tab.active::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 1.5px; background: var(--theme-accent); } .tab-bar > .tab { flex-shrink: 0; } .tab-title { font-size: 10px; font-weight: inherit; overflow: hidden; text-overflow: ellipsis; } .tab-close { margin-left: 6px; font-size: 11px; opacity: 0; transition: opacity 0.15s; line-height: 1; } .tab:hover .tab-close { opacity: 0.4; } .tab-close:hover { opacity: 1 !important; } .tab-status { width: 8px; height: 8px; position: relative; margin-left: 2px; } .tab-status.generating { animation: orbit-rotate 1.2s linear infinite; } .tab-status span { position: absolute; width: 2px; height: 2px; border-radius: 50%; background: var(--theme-accent); top: 50%; left: 50%; } .tab-status span:nth-child(1) { transform: translate(-50%, -50%) translateY(-3px); } .tab-status span:nth-child(2) { transform: translate(-50%, -50%) rotate(120deg) translateY(-3px); } .tab-status span:nth-child(3) { transform: translate(-50%, -50%) rotate(240deg) translateY(-3px); } @keyframes orbit-rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .settings-btn, .files-btn, .debug-btn, .sessions-btn { background: transparent; color: var(--text-muted); border: none; border-left: 1px solid var(--border-subtle); padding: 0 8px; font-size: 10px; font-weight: 400; letter-spacing: 0.3px; flex-shrink: 0; cursor: pointer; transition: all 0.15s; font-family: inherit; } .settings-btn:hover, .files-btn:hover, .debug-btn:hover, .sessions-btn:hover { color: var(--text-primary); } .settings-btn.active, .files-btn.active, .debug-btn.active, .sessions-btn.active { color: var(--theme-accent); font-weight: 500; } .new-tab-wrapper { position: static; display: flex; align-items: center; flex-shrink: 0; border-right: 1px solid var(--border-subtle); } .new-tab-btn { background: transparent; color: var(--text-muted); border: none; padding: 0 8px; font-size: 13px; cursor: pointer; transition: all 0.15s; font-family: inherit; line-height: 1; } .new-tab-btn:hover { color: var(--text-primary); } .new-tab-menu { display: none; position: fixed; background: var(--bg-card); border: 1px solid var(--border-primary); box-shadow: 0 2px 8px rgba(0,0,0,0.1); z-index: 9999; min-width: 180px; } .new-tab-menu.active { display: block; } .menu-item { padding: 8px 12px; font-size: 10px; font-weight: 400; letter-spacing: 0.3px; cursor: pointer; border-bottom: 1px solid var(--border-subtle); transition: all 0.15s; color: var(--text-primary); background: var(--bg-card); } .menu-item:last-child { border-bottom: none; } .menu-item:hover { background: var(--theme-accent); color: var(--bg-primary); } /* Content Area */ .content-area { flex: 1; overflow: hidden; position: relative; z-index: 1; transition: margin-right 0.3s ease; display: flex; } .panel-open .content-area { margin-right: 480px; } .files-panel-open .content-area { margin-right: 320px; } /* Left Sidebar - Agents Overview */ .agents-sidebar { width: var(--sidebar-width, 180px); min-width: 140px; max-width: 400px; background: var(--bg-primary); border-right: 1px solid var(--border-primary); display: flex; flex-direction: column; overflow: visible; position: relative; z-index: 10; flex-shrink: 0; } .sidebar-resize-handle { position: absolute; top: 0; right: -3px; width: 6px; height: 100%; cursor: col-resize; z-index: 11; } .sidebar-content { flex: 1; overflow-y: auto; overflow-x: clip; padding: 8px 12px; } .sidebar-empty { padding: 12px; font-size: 10px; color: var(--text-muted); text-align: center; } /* Sidebar Legend */ .sidebar-legend { padding: 8px 12px; border-top: 1px solid var(--border-primary); display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 9px; color: var(--text-muted); } .sidebar-legend span { display: flex; align-items: center; gap: 4px; } .legend-square { width: 5px; height: 5px; background: var(--theme-accent); } .legend-circle { width: 5px; height: 5px; background: var(--theme-accent); border-radius: 50%; } .legend-box { width: 12px; height: 6px; background: var(--bg-card); border: 1px solid var(--theme-accent); border-radius: 1px; } /* Sidebar Controls */ .sidebar-controls { padding: 6px 12px; border-top: 1px solid var(--border-primary); display: flex; align-items: center; gap: 8px; } .sidebar-controls-label { font-size: 9px; color: var(--text-muted); white-space: nowrap; } .sidebar-checkbox { display: flex; align-items: center; gap: 4px; font-size: 9px; color: var(--text-muted); cursor: pointer; user-select: none; } .sidebar-checkbox input[type="checkbox"] { -webkit-appearance: none; -moz-appearance: none; appearance: none; width: 12px; height: 12px; margin: 0; border: 1px solid var(--text-muted); background: transparent; cursor: pointer; position: relative; flex-shrink: 0; } .sidebar-checkbox input[type="checkbox"]:checked { background: var(--theme-accent); border-color: var(--theme-accent); } .sidebar-checkbox input[type="checkbox"]:checked::after { content: ''; position: absolute; left: 3px; top: 1px; width: 3px; height: 6px; border: solid var(--bg-primary); border-width: 0 1.5px 1.5px 0; transform: rotate(45deg); } /* Timeline Widget */ .tl-widget { font-size: 11px; color: var(--text-secondary); margin-bottom: 10px; } .tl-widget:last-child { margin-bottom: 0; } .tl-widget.active .tl-name { color: var(--theme-accent); } /* Active tab indicator arrow — right side of workspace-block and agent-box */ .tl-widget.active > .workspace-block::before { content: ''; position: absolute; right: -8px; top: 50%; transform: translateY(-50%); width: 0; height: 0; border-top: 4px solid transparent; border-bottom: 4px solid transparent; border-right: 5px solid var(--theme-accent); } .tl-widget.closed { opacity: 0.5; } .tl-widget.closed .tl-name::after { content: ' (closed)'; font-weight: normal; font-size: 8px; } /* Workspace block - left edge aligned with vertical line */ .workspace-block { display: flex; align-items: stretch; margin-bottom: 8px; margin-left: 4px; /* Align left edge with vertical line at 4px */ position: relative; border: 1px solid var(--theme-accent); } /* Line connecting workspace block to timeline */ .tl-widget.compact > .workspace-block::after { content: ''; position: absolute; left: -1px; /* Align with vertical line */ top: calc(100% + 1px); /* Start below the border */ width: 1px; height: 8px; background: var(--border-primary); } .workspace-label { padding: 3px 6px; font-size: 8px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; white-space: nowrap; background: var(--theme-accent); color: var(--bg-primary); flex-shrink: 0; } .workspace-name { padding: 3px 8px; font-size: 9px; background: var(--bg-tertiary); color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; min-width: 0; } .tl-widget.closed .workspace-block { opacity: 0.5; } /* Timeline - vertical line from first to last dot */ .tl { position: relative; margin-left: 2px; padding-left: 16px; } /* The vertical line - centered on dots */ .tl::before { content: ''; position: absolute; left: 2px; top: var(--line-top, 0); height: var(--line-height, 0); width: 1px; background: var(--border-primary); } /* Row */ .tl-row { position: relative; margin-bottom: 4px; } .tl-row:last-child { margin-bottom: 0; } /* Dot - sits on the vertical line */ .tl-dot { position: absolute; left: -16px; top: -2px; width: 5px; height: 5px; border-radius: 50%; background: var(--theme-accent); cursor: pointer; transition: transform 0.1s; z-index: 2; } .tl-dot:hover { transform: scale(1.3); } /* User messages are square */ .tl-row.user .tl-dot { border-radius: 0; } /* Generating dot animation */ .tl-dot.generating { animation: pulse 1s ease-in-out infinite; } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } } /* Inline label next to dot — always visible, single line truncated */ .tl-label { position: absolute; left: -6px; right: 0; top: -5px; font-size: 8px; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Tool tag widget — colored label + description */ .tl-tool { position: absolute; left: -6px; right: 0; top: -6px; display: flex; align-items: center; gap: 4px; } .tl-tool-tag { font-size: 6px; font-weight: 600; letter-spacing: 0.3px; background: var(--theme-accent); color: var(--bg-primary); padding: 1px 4px; border-radius: 0; white-space: nowrap; flex-shrink: 0; } .tl-tool-text { font-size: 8px; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; } /* On hover: show popup with full text for tool entries */ .tl-row.turn:hover .tl-tool { z-index: 10; right: auto; max-width: calc(var(--sidebar-width, 180px) - 40px); background: var(--bg-secondary); border: 1px solid var(--border-primary); border-radius: 3px; padding: 3px 6px; box-shadow: 0 2px 6px rgba(0,0,0,0.12); } .tl-row.turn:hover .tl-tool-text { white-space: normal; word-break: break-word; overflow: visible; color: var(--text-primary); } /* On hover: show popup with full text */ .tl-row.turn:hover .tl-label { z-index: 10; white-space: normal; word-break: break-word; overflow: visible; right: auto; max-width: calc(var(--sidebar-width, 180px) - 40px); color: var(--text-primary); background: var(--bg-secondary); border: 1px solid var(--border-primary); border-radius: 3px; padding: 3px 6px; box-shadow: 0 2px 6px rgba(0,0,0,0.12); } /* Horizontal connector to agent */ .tl-row.has-agent .tl-dot::after { content: ''; position: absolute; left: 5px; top: 2px; width: 11px; height: 1px; background: var(--theme-accent); } /* Agent box - compact style */ .agent-box { display: flex; align-items: stretch; border: 1px solid var(--theme-accent); overflow: hidden; position: relative; z-index: 1; } /* Active tab indicator arrow on agent-box */ .agent-box.active { overflow: visible; } .agent-box.active::after { content: ''; position: absolute; right: -8px; top: 50%; transform: translateY(-50%); width: 0; height: 0; border-top: 4px solid transparent; border-bottom: 4px solid transparent; border-right: 5px solid var(--theme-accent); } .agent-header { display: flex; align-items: center; gap: 3px; padding: 2px 4px; margin: -1px 0 -1px -1px; font-size: 8px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; white-space: nowrap; background: var(--theme-accent); color: var(--bg-primary); flex-shrink: 0; } /* Collapse toggle - inside agent header, white arrow */ .agent-header .collapse-toggle { width: 8px; height: 8px; padding: 10px; margin: -10px; box-sizing: content-box; display: flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0; position: relative; z-index: 1; } .agent-header .collapse-toggle::before { content: ''; width: 0; height: 0; border-left: 3px solid transparent; border-right: 3px solid transparent; border-top: 4px solid var(--bg-primary); transition: transform 0.2s; } .agent-header .collapse-toggle.collapsed::before { transform: rotate(-90deg); } .agent-body { padding: 2px 6px; font-size: 9px; background: var(--bg-tertiary); border: none; display: flex; align-items: center; color: var(--text-primary); flex: 1; min-width: 0; } .agent-body-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .agent-status { display: flex; align-items: center; gap: 4px; margin-left: auto; padding-left: 6px; color: var(--text-muted); font-size: 8px; flex-shrink: 0; } /* Progress spinner */ .agent-progress { width: 8px; height: 8px; position: relative; animation: orbit-rotate 1.2s linear infinite; } .agent-progress span { position: absolute; width: 1.5px; height: 1.5px; border-radius: 50%; background: var(--theme-accent); top: 50%; left: 50%; } .agent-progress span:nth-child(1) { transform: translate(-50%, -50%) translateY(-3px); } .agent-progress span:nth-child(2) { transform: translate(-50%, -50%) rotate(120deg) translateY(-3px); } .agent-progress span:nth-child(3) { transform: translate(-50%, -50%) rotate(240deg) translateY(-3px); } /* Done checkmark */ .agent-done { width: 8px; height: 8px; display: flex; align-items: center; justify-content: center; } .agent-done::before { content: ''; width: 2px; height: 5px; border: 1px solid var(--theme-accent); border-top: none; border-left: none; transform: rotate(45deg) translate(-1px, -1px); } /* Aborted agent - cross instead of checkmark */ .agent-done.aborted::before { content: '×'; width: auto; height: auto; border: none; transform: none; font-size: 10px; line-height: 1; color: var(--text-secondary); } /* Simple turn - natural height from label, min-height fallback */ .tl-row.turn { min-height: 12px; } .tl-turn-count { font-size: 8px; color: var(--text-muted); white-space: nowrap; position: absolute; left: -6px; top: -5px; } /* Nested timeline for sub-agents */ .tl-nested { position: relative; margin-left: -2px; margin-top: 0; } .tl-nested .tl { margin-left: 0; padding-top: 6px; } /* Return row - positioned dynamically by JS to align with last nested dot */ .tl-row.tl-return { position: relative; } /* Horizontal connector - positioned from dot's right edge, width set by JS */ .tl-return-connector { position: absolute; left: -11px; /* dot is at -16px, width 5px, so right edge is -11px */ top: 0; height: 1px; background: var(--border-primary); } /* Collapsible sub-agents */ .tl-nested.collapsed .tl-row, .tl-nested.collapsed .tl-widget { display: none; } .tl-nested.collapsed { padding-bottom: 6px; } .tl-nested.collapsed .tl { --line-height: 0 !important; --line-top: 0 !important; padding-top: 0; min-height: 0; } .tl-nested.collapsed .tl::before { display: none; } /* Main Content Area (right of sidebar) */ .main-content { flex: 1; min-width: 0; overflow: hidden; position: relative; z-index: 1; } .tab-content { display: none; height: 100%; overflow-y: auto; padding: 20px; } .tab-content.active { display: flex; flex-direction: column; } /* Launcher Buttons */ .launcher-btn { background: var(--bg-card); border: 1px solid var(--border-primary); color: var(--text-primary); padding: 6px 12px; font-family: inherit; font-size: 10px; font-weight: 500; border-radius: 4px; cursor: pointer; transition: all 0.2s; letter-spacing: 0.5px; white-space: nowrap; } .launcher-btn:hover { background: var(--theme-accent); color: var(--bg-primary); border-color: var(--theme-accent); } .launcher-btn:active { transform: translateY(1px); } /* Agent Content */ .agent-interface { height: 100%; display: flex; flex-direction: column; } .agent-interface > .agent-header { background: var(--bg-secondary); padding: 15px 20px; border-bottom: 1px solid var(--border-primary); display: none; /* Hidden for cleaner UI */ justify-content: space-between; align-items: center; gap: 20px; } .header-actions { display: flex; gap: 10px; align-items: center; } .agent-type { font-size: 10px; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 1px; } .agent-interface > .agent-header h2 { font-size: 14px; font-weight: 500; letter-spacing: 1px; color: var(--text-primary); margin-top: 4px; } .agent-interface > .agent-body { flex: 1; display: block; align-items: initial; background: var(--bg-primary); padding: 20px; overflow-y: auto; } .chat-container { max-width: 1000px; width: 100%; margin: 0 auto; font-size: 12px; } .jupyter-notebook-container { width: 100%; margin: 0; max-width: 100%; font-size: 13px; } .welcome-message { color: var(--text-muted); font-size: 13px; line-height: 1.6; max-width: 700px; margin: 0 auto; padding: 20px 20px; } .welcome-message p { margin-bottom: 10px; } .welcome-message ul { list-style: none; padding-left: 0; margin: 12px 0; } .welcome-message li { margin: 8px 0; padding-left: 20px; position: relative; } .welcome-message li::before { content: "•"; position: absolute; left: 0; color: var(--theme-accent); } .welcome-message strong { color: var(--text-secondary); font-weight: 500; } .welcome-diagram { margin: 20px auto; max-width: 280px; } /* Disable hover popups and click behaviors on static welcome diagram */ .welcome-diagram .tl-dot { cursor: default; } .welcome-diagram .tl-dot:hover { transform: none; } .welcome-diagram .tl-row.turn:hover .tl-label, .welcome-diagram .tl-row.turn:hover .tl-tool { background: none; border: none; box-shadow: none; padding: 0; border-radius: 0; z-index: auto; } .welcome-diagram .tl-row.turn:hover .tl-tool-text { color: var(--text-muted); white-space: nowrap; overflow: hidden; } .welcome-diagram .tl-row.turn:hover .tl-label { color: var(--text-muted); white-space: nowrap; overflow: hidden; } .welcome-diagram .tl-row.user:hover .tl-label { color: var(--text-primary); } .welcome-diagram .agent-box { cursor: default; } .welcome-diagram .collapse-toggle { cursor: default; } /* Messages */ .message { margin-bottom: 20px; line-height: 1.6; } .message.user { padding: 6px 12px; background: rgba(var(--theme-accent-rgb), 0.12); border-left: 2px solid var(--theme-accent); color: var(--text-primary); } .message.assistant { padding: 0; color: var(--text-primary); } .message.assistant > .action-widget { margin-left: 15px; } /* Unified message content styling for both user and assistant messages */ .message-content { line-height: 1.6; } .message.assistant .message-content { padding-left: 15px; } .message-content ul, .message-content ol { margin: 8px 0; padding-left: 24px; list-style-position: outside; } .message-content li { margin-bottom: 4px; } .message-content code { background: var(--border-primary); padding: 2px 6px; border-radius: 3px; font-family: 'JetBrains Mono', monospace; font-size: 12px; } .message-content pre { background: var(--bg-tertiary); color: var(--text-primary); padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0; border: 1px solid var(--border-primary); } .message-content pre code { background: transparent; padding: 0; color: inherit; font-size: 12px; } .message-content p { margin: 0 0 8px 0; } .message-content p:last-child { margin-bottom: 0; } .message-content h1, .message-content h2, .message-content h3, .message-content h4, .message-content h5, .message-content h6 { margin: 12px 0 8px 0; font-weight: 600; } .message-content h1:first-child, .message-content h2:first-child, .message-content h3:first-child, .message-content h4:first-child, .message-content h5:first-child, .message-content h6:first-child { margin-top: 0; } .message-content h1 { font-size: 1.5em; } .message-content h2 { font-size: 1.3em; } .message-content h3 { font-size: 1.15em; } .message-content h4 { font-size: 1.05em; } .message-content h5 { font-size: 1em; } .message-content h6 { font-size: 0.95em; color: var(--text-secondary); } /* Blockquotes */ .message-content blockquote { margin: 8px 0; padding: 8px 16px; border-left: 4px solid var(--theme-accent, #4a9eff); background: var(--bg-secondary); color: var(--text-secondary); } .message-content blockquote p { margin: 0; } /* Strikethrough */ .message-content del { text-decoration: line-through; color: var(--text-muted); } /* Horizontal rule */ .message-content hr { border: none; border-top: 1px solid var(--border-primary); margin: 16px 0; } .message-content img { max-width: 400px; max-height: 400px; height: auto; margin: 8px 0; border-radius: 3px; cursor: pointer; transition: opacity 0.2s; } .message-content img:hover { opacity: 0.85; } /* LaTeX / KaTeX */ .message-content .katex-display { margin: 12px 0; overflow: visible; } .message-content .katex-error { color: #c62828; font-family: 'JetBrains Mono', monospace; font-size: 12px; } .system-message { padding: 8px 12px; margin: 8px 0; font-size: 11px; color: var(--text-secondary); text-align: center; border-radius: 4px; background: var(--bg-tertiary); } .message-content ul, .message-content ol { margin: 8px 0; padding-left: 24px; list-style-position: outside; } .message-content li { margin-bottom: 4px; white-space: normal; } .message-content h1, .message-content h2, .message-content h3 { margin: 12px 0 8px 0; font-weight: 500; white-space: normal; } .message-content h1 { font-size: 16px; } .message-content h2 { font-size: 15px; } .message-content h3 { font-size: 14px; } .message-content p { margin: 0; white-space: pre-wrap; } .message-content p:not(:last-child) { margin-bottom: 8px; } .message-content code { background: var(--border-primary); padding: 2px 6px; border-radius: 3px; font-family: 'JetBrains Mono', monospace; font-size: 12px; } .message-content pre { background: var(--bg-tertiary); color: var(--text-primary); padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0; border: 1px solid var(--border-primary); } .message-content pre code { background: transparent; padding: 0; color: inherit; font-size: 12px; } /* Override Prism.js defaults (white text-shadow and semi-transparent backgrounds) */ code[class*="language-"], pre[class*="language-"] { text-shadow: none !important; } pre code [class*="token"] { background: transparent !important; text-shadow: none !important; } /* Code Cell Styling */ .code-cell { margin: 16px 0; overflow: hidden; } .code-cell-label { font-size: 10px; font-weight: 600; color: var(--bg-primary); text-transform: uppercase; letter-spacing: 0.5px; padding: 6px 12px; background: var(--theme-accent); cursor: pointer; display: flex; align-items: center; gap: 8px; } .code-cell-label:hover { opacity: 0.9; } .code-cell-code { background: var(--bg-tertiary); padding: 0; margin: 0; border: 1px solid var(--border-primary); border-top: none; } .code-cell-code pre { margin: 0; padding: 12px; background: transparent; } .code-cell-code code { font-family: 'JetBrains Mono', monospace; font-size: 12px; color: var(--text-primary); background: transparent; } .code-cell-output { padding: 12px; background: var(--bg-tertiary); border-top: 1px solid var(--border-primary); font-family: 'JetBrains Mono', monospace; font-size: 12px; white-space: pre-wrap; word-wrap: break-word; color: var(--text-primary); } .code-cell-output.error { background: #ffebee; color: #c62828; } .code-cell-image { padding: 12px; background: var(--bg-tertiary); border-top: 1px solid var(--border-primary); } .code-cell-image img { max-width: 400px; max-height: 400px; height: auto; border-radius: 4px; cursor: pointer; transition: opacity 0.2s; } .code-cell-image img:hover { opacity: 0.85; } .code-cell-image svg { max-width: 100%; height: auto; } .figure-label { font-size: 10px; font-weight: 500; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 8px; padding: 4px 8px; background: var(--border-primary); border-radius: 3px; } /* Tool cell label with spinner */ .code-cell-label { display: flex; align-items: center; gap: 8px; } .code-cell-label .tool-spinner { width: 12px; height: 12px; position: relative; animation: orbit-rotate 1.2s linear infinite; } .code-cell-label .tool-spinner span { position: absolute; width: 3px; height: 3px; border-radius: 50%; background: var(--bg-card); top: 50%; left: 50%; } .code-cell-label .tool-spinner span:nth-child(1) { transform: translate(-50%, -50%) translateY(-4.5px); } .code-cell-label .tool-spinner span:nth-child(2) { transform: translate(-50%, -50%) rotate(120deg) translateY(-4.5px); } .code-cell-label .tool-spinner span:nth-child(3) { transform: translate(-50%, -50%) rotate(240deg) translateY(-4.5px); } /* Progress widget - shown while waiting for model response */ .progress-widget { display: flex; align-items: center; gap: 8px; padding: 8px 20px; font-size: 12px; color: var(--text-muted); } .progress-widget .progress-spinner { width: 14px; height: 14px; position: relative; animation: orbit-rotate 1.2s linear infinite; } .progress-widget .progress-spinner span { position: absolute; width: 3px; height: 3px; border-radius: 50%; background: var(--theme-accent); top: 50%; left: 50%; } .progress-widget .progress-spinner span:nth-child(1) { transform: translate(-50%, -50%) translateY(-5px); } .progress-widget .progress-spinner span:nth-child(2) { transform: translate(-50%, -50%) rotate(120deg) translateY(-5px); } .progress-widget .progress-spinner span:nth-child(3) { transform: translate(-50%, -50%) rotate(240deg) translateY(-5px); } .progress-widget .progress-text { font-family: 'JetBrains Mono', monospace; letter-spacing: 0.5px; } .input-area { padding: 10px 20px; background: var(--bg-primary); border-top: 1px solid var(--border-primary); } .input-container { max-width: 900px; margin: 0 auto; display: flex; gap: 12px; align-items: flex-end; } .input-container textarea { flex: 1; padding: 10px 12px; border: 1px solid var(--border-primary); min-height: 38px; max-height: 200px; resize: none; overflow-y: hidden; border-radius: 4px; font-family: inherit; font-size: 13px; background: var(--bg-secondary); color: var(--text-primary); outline: none; transition: border-color 0.2s ease; } .input-container textarea:focus { border-color: var(--theme-accent); box-shadow: 0 0 0 1px var(--theme-accent); } .input-container textarea::placeholder { color: var(--text-muted); } .input-container button { padding: 10px 20px; background: var(--bg-secondary); border: 1px solid var(--border-primary); color: var(--text-primary); font-family: inherit; font-size: 12px; font-weight: 500; border-radius: 4px; cursor: pointer; transition: all 0.2s; letter-spacing: 0.5px; } .input-container button:hover { background: var(--theme-accent); color: var(--bg-primary); border-color: var(--theme-accent); } .input-container button:active { transform: translateY(1px); } /* Scrollbar styling — global */ *::-webkit-scrollbar { width: 6px; height: 6px; } *::-webkit-scrollbar-track { background: var(--bg-secondary); border-left: 1px solid var(--border-primary); } *::-webkit-scrollbar-thumb { background: var(--text-muted); border-radius: 0; } *::-webkit-scrollbar-thumb:hover { background: var(--text-secondary); } /* Settings Interface */ .settings-interface { height: 100%; display: flex; flex-direction: column; background: var(--bg-card); } .settings-header { background: var(--bg-secondary); padding: 20px; border-bottom: 1px solid var(--border-primary); } .settings-header h2 { font-size: 18px; font-weight: 500; letter-spacing: 2px; color: var(--text-primary); } .settings-body { flex: 1; padding: 16px; overflow-y: auto; max-width: 800px; } /* Collapsible settings groups */ .settings-group { margin-bottom: 6px; } .settings-group-header { display: flex; align-items: center; gap: 8px; padding: 6px 12px; background: var(--theme-accent); cursor: pointer; user-select: none; } .settings-group-header:hover { opacity: 0.9; } .settings-group-title { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; color: var(--bg-primary); } .settings-group-body { padding: 12px 12px 4px; border: 1px solid var(--border-primary); border-top: none; } .settings-group.collapsed .settings-group-body { display: none; } .settings-section { margin-bottom: 16px; } .settings-label { display: flex; flex-direction: column; gap: 2px; margin-bottom: 6px; } .label-text { font-size: 10px; font-weight: 500; color: var(--text-primary); letter-spacing: 0.5px; } .label-description { font-size: 9px; color: var(--text-secondary); font-weight: 300; } .settings-input { width: 100%; padding: 6px 8px; border: 1px solid var(--border-primary); border-radius: 0; font-family: inherit; font-size: 11px; background: var(--bg-secondary); color: var(--text-primary); outline: none; transition: border-color 0.15s ease; -moz-appearance: textfield; } .settings-input::-webkit-outer-spin-button, .settings-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; } .settings-input:focus { border-color: var(--theme-accent); background: var(--bg-card); } .settings-input::placeholder { color: var(--text-muted); } .settings-textarea { width: 100%; padding: 6px 8px; border: 1px solid var(--border-primary); border-radius: 3px; font-family: 'JetBrains Mono', monospace; font-size: 10px; background: var(--bg-tertiary); color: var(--text-primary); outline: none; transition: border-color 0.15s ease; resize: vertical; min-height: 48px; box-sizing: border-box; } .settings-textarea:focus { border-color: var(--theme-accent); background: var(--bg-card); } .settings-textarea::placeholder { color: var(--text-muted); } /* Theme Color Picker */ .theme-color-picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); gap: 6px; margin-top: 6px; } .theme-option { display: flex; flex-direction: column; align-items: center; gap: 3px; cursor: pointer; padding: 4px; border-radius: 3px; border: 1.5px solid transparent; transition: all 0.15s; } .theme-option:hover { background: var(--bg-secondary); } .theme-option.selected { border-color: var(--theme-accent); background: var(--bg-secondary); } .theme-preview { width: 36px; height: 20px; border-left: 3px solid; border-radius: 2px; box-shadow: 0 1px 2px rgba(0,0,0,0.1); } .theme-name { font-size: 9px; font-weight: 500; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.3px; } .theme-option.selected .theme-name { color: var(--theme-accent); } .settings-actions { display: flex; gap: 8px; margin-top: 16px; } .settings-save-btn, .settings-cancel-btn { padding: 6px 14px; font-family: inherit; font-size: 10px; font-weight: 500; border-radius: 3px; cursor: pointer; transition: all 0.15s; letter-spacing: 0.3px; border: 1px solid var(--border-primary); } .settings-save-btn { background: var(--theme-accent); color: var(--bg-primary); border-color: var(--theme-accent); } .settings-save-btn:hover { opacity: 0.85; } .settings-cancel-btn { background: var(--bg-secondary); color: var(--text-primary); } .settings-cancel-btn:hover { background: var(--bg-hover); } .settings-status { margin-top: 8px; font-size: 10px; padding: 6px 8px; border-radius: 3px; display: none; } .settings-status.success { display: block; background: var(--theme-bg); color: var(--theme-accent); border: 1px solid var(--theme-accent); } .settings-status.error { display: block; background: #ffebee; color: #c62828; border: 1px solid #c62828; } /* Task Widget (matches mock.html design) */ .action-widget { margin: 12px 0; overflow: hidden; } .action-widget-clickable { cursor: pointer; } .action-widget-header { display: flex; align-items: center; gap: 8px; padding: 6px 12px; background: var(--theme-accent); transition: opacity 0.2s; } .action-widget-clickable:hover .action-widget-header { opacity: 0.9; } .action-widget-type { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; color: var(--bg-primary); } .action-widget-bar-right { display: flex; align-items: center; gap: 12px; margin-left: auto; } /* Orbiting Dots Indicator for action widget */ .action-widget .orbit-indicator { width: 14px; height: 14px; position: relative; animation: orbit-rotate 1.2s linear infinite; } .action-widget .orbit-indicator span { position: absolute; width: 3px; height: 3px; border-radius: 50%; background: var(--bg-card); top: 50%; left: 50%; } .action-widget .orbit-indicator span:nth-child(1) { transform: translate(-50%, -50%) translateY(-5px); } .action-widget .orbit-indicator span:nth-child(2) { transform: translate(-50%, -50%) rotate(120deg) translateY(-5px); } .action-widget .orbit-indicator span:nth-child(3) { transform: translate(-50%, -50%) rotate(240deg) translateY(-5px); } /* Done indicator - checkmark */ .action-widget .done-indicator { width: 14px; height: 14px; position: relative; display: flex; align-items: center; justify-content: center; } .action-widget .done-indicator::before { content: ''; position: absolute; width: 4px; height: 7px; border: 1.5px solid var(--bg-primary); border-top: none; border-left: none; transform: rotate(45deg) translate(-1px, -1px); } /* Aborted action widget - cross instead of checkmark */ .action-widget .done-indicator.aborted::before { content: '×'; width: auto; height: auto; border: none; transform: none; font-size: 12px; line-height: 1; color: var(--bg-primary); } /* Errored action widget - red background with exclamation */ .action-widget .done-indicator.errored { background: #c62828; } .action-widget .done-indicator.errored::before { content: '!'; width: auto; height: auto; border: none; transform: none; font-size: 11px; font-weight: bold; line-height: 1; color: white; } .action-widget-body { padding: 12px; background: var(--bg-tertiary); border: 1px solid var(--border-primary); border-top: none; } .action-widget .section-label { font-size: 9px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-muted); margin-bottom: 4px; } .action-widget .section-content { font-size: 12px; line-height: 1.5; color: var(--text-primary); } .action-widget .section-content ul, .action-widget .section-content ol { margin: 8px 0; padding-left: 24px; list-style-position: outside; } .action-widget .section-content li { margin-bottom: 4px; } .action-widget .section-content img, .action-widget img { max-width: 400px !important; max-height: 400px !important; width: auto !important; height: auto !important; margin: 8px 0; border-radius: 3px; } .action-widget-result { padding: 12px; font-size: 12px; line-height: 1.6; color: var(--text-primary); background: var(--bg-card); border-top: 1px solid var(--border-primary); } .action-widget-result ul, .action-widget-result ol { margin: 8px 0; padding-left: 24px; list-style-position: outside; } .action-widget-result li { margin-bottom: 4px; } .action-widget-result h1, .action-widget-result h2, .action-widget-result h3 { margin: 12px 0 8px 0; font-weight: 500; } .action-widget-result h1 { font-size: 14px; } .action-widget-result h2 { font-size: 13px; } .action-widget-result h3 { font-size: 12px; } .action-widget-result p { margin-bottom: 8px; } .action-widget-result-header { font-size: 11px; font-weight: 600; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 8px; padding-bottom: 6px; border-bottom: 1px solid var(--border-primary); } .action-widget-result img { max-width: 400px; max-height: 400px; height: auto; margin: 8px 0; border-radius: 3px; cursor: pointer; transition: opacity 0.2s; } .action-widget-result img:hover { opacity: 0.85; } /* File transfer (upload/download) widget styles */ .transfer-paths { margin: 0; padding-left: 20px; font-family: 'JetBrains Mono', monospace; font-size: 12px; } .transfer-paths li { margin: 4px 0; color: var(--text-primary); } .transfer-output { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border-primary); font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--text-secondary); white-space: pre-wrap; } .transfer-output.error { color: #c62828; } .transfer-path-link { color: var(--theme-accent); text-decoration: underline; cursor: pointer; } .transfer-path-link:hover { opacity: 0.8; } /* Result Preview in CODE agent */ .result-preview { margin: 16px 0; overflow: hidden; } .result-preview-label { font-size: 10px; font-weight: 600; color: var(--bg-primary); text-transform: uppercase; letter-spacing: 0.5px; padding: 6px 12px; background: var(--theme-accent); } .result-preview-content { padding: 12px 15px; color: var(--text-primary); line-height: 1.6; font-size: 12px; background: var(--bg-tertiary); border: 1px solid var(--border-primary); border-top: none; } .result-preview-content img { max-height: 400px; cursor: pointer; transition: opacity 0.2s; } .result-preview-content img:hover { opacity: 0.85; } @media (max-width: 1024px) { .agent-types { grid-template-columns: 1fr; } .settings-body { padding: 20px; } } /* Research Agent Styles */ .research-container, .research-container.message.assistant { margin-bottom: 16px; margin-left: 0 !important; padding: 0 !important; padding-left: 0 !important; display: flex; flex-direction: column; gap: 0; overflow: hidden; } .research-container::before, .research-container.message.assistant::before { content: none !important; display: none !important; } .research-body { padding: 12px; background: var(--bg-tertiary); border: 1px solid var(--border-primary); border-top: none; line-height: 1.6; } .research-header { display: flex; align-items: center; justify-content: space-between; padding: 6px 12px; background: var(--theme-accent); min-height: 28px; } .research-header-title { font-size: 10px; font-weight: 600; color: var(--bg-primary); text-transform: uppercase; letter-spacing: 0.5px; } .queries-section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; } .queries-title { font-size: 12px; font-weight: 500; color: var(--text-secondary); } .toggle-irrelevant-label { display: flex; align-items: center; gap: 4px; font-size: 11px; color: var(--text-secondary); cursor: pointer; user-select: none; } .toggle-irrelevant-label input[type="checkbox"] { margin: 0; cursor: pointer; } .toggle-irrelevant-label span { cursor: pointer; } .research-reasoning-section { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border-primary); } .research-reasoning { font-size: 11px; color: var(--text-secondary); font-style: italic; line-height: 1.5; } /* Tree structure for queries */ .queries-tree-container { position: relative; padding-left: 20px; } .queries-tree-container::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 1px; background: var(--border-primary); } .query-tree { position: relative; padding-bottom: 8px; } .query-tree::before { content: ''; position: absolute; left: -20px; top: 10px; width: 12px; height: 1px; background: var(--border-primary); } .query-tree.last::after { content: ''; position: absolute; left: -20px; top: 11px; bottom: 0; width: 1px; background: var(--bg-secondary); } .query-node { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; } .query-text { font-size: 12px; color: var(--text-primary); font-weight: 500; flex: 1; } .query-stats { font-size: 10px; white-space: nowrap; margin-left: 8px; } .stat-relevant { color: #2e7d32; } .stat-irrelevant { color: var(--text-muted); } .stat-error { color: #c62828; } .query-sources-tree { position: relative; padding-left: 20px; } .query-sources-tree::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 1px; background: var(--border-primary); } /* Tree structure for sources */ .source-tree-node { position: relative; margin-bottom: 1px; } .source-tree-node::before { content: ''; position: absolute; left: -20px; top: 10px; width: 12px; height: 1px; background: var(--border-primary); } .source-tree-node.last::after { content: ''; position: absolute; left: -20px; top: 11px; bottom: 0; width: 1px; background: var(--bg-secondary); } .source-tree-line { display: flex; align-items: center; gap: 5px; padding: 3px 0; } .source-status { font-size: 11px; min-width: 12px; text-align: center; user-select: none; flex-shrink: 0; } .source-status.status-relevant { color: #2e7d32; } .source-status.status-irrelevant { color: var(--text-muted); } .source-status.status-error { color: #d32f2f; } .source-title { font-size: 11px; color: var(--text-primary); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .source-controls { display: flex; gap: 3px; align-items: center; flex-shrink: 0; } .source-control-btn { background: var(--bg-card); border: 1px solid var(--border-primary); border-radius: 2px; padding: 0px 4px; font-size: 10px; line-height: 16px; cursor: pointer; color: var(--text-secondary); text-decoration: none; display: inline-flex; align-items: center; justify-content: center; min-width: 16px; height: 16px; transition: all 0.15s; } .source-control-btn:hover { background: var(--bg-secondary); border-color: var(--text-muted); color: var(--text-primary); } .source-control-btn.toggle-btn { font-weight: 600; } .source-control-btn.link-btn { font-size: 11px; } .source-tree-content { max-height: 0; overflow: hidden; opacity: 0; transition: max-height 0.3s ease, opacity 0.2s ease, margin 0.2s ease; font-size: 11px; line-height: 1.5; color: var(--text-secondary); } .source-tree-content.expanded { max-height: 2000px; opacity: 1; margin-top: 4px; margin-bottom: 6px; padding: 6px 8px; background: var(--bg-tertiary); border-left: 2px solid var(--border-primary); border-radius: 2px; } .source-tree-content ul, .source-tree-content ol { margin: 6px 0; padding-left: 20px; list-style-position: outside; } .source-tree-content li { margin-bottom: 3px; } .source-tree-content h1, .source-tree-content h2, .source-tree-content h3 { margin: 8px 0 4px 0; font-weight: 500; } .source-tree-content h1 { font-size: 12px; } .source-tree-content h2 { font-size: 11px; } .source-tree-content h3 { font-size: 11px; } .source-tree-content p { margin-bottom: 6px; } .research-sources-section { margin-bottom: 16px; } .research-progress-section { padding-top: 12px; border-top: 1px solid var(--border-subtle); } .progress-bar-container { display: flex; align-items: center; gap: 12px; } .progress-bar { flex: 1; height: 6px; background: var(--border-primary); border-radius: 3px; overflow: hidden; } .progress-fill { height: 100%; background: var(--theme-accent); transition: width 0.3s ease; } .progress-text { font-size: 11px; color: var(--text-secondary); white-space: nowrap; } .research-source { margin: 6px 0; border: 1px solid var(--border-primary); border-radius: 3px; background: var(--bg-card); } .research-source.irrelevant { opacity: 0.6; background: var(--bg-tertiary); } .research-source.error { background: #fff5f5; border-color: #ffcdd2; } .source-header { display: flex; align-items: center; gap: 8px; padding: 8px 10px; cursor: pointer; user-select: none; } .source-header:hover { background: var(--bg-tertiary); } .source-status-icon { font-size: 12px; min-width: 16px; text-align: center; } .research-source.relevant .source-status-icon { color: #2e7d32; } .research-source.irrelevant .source-status-icon { color: var(--text-muted); } .research-source.error .source-status-icon { color: #d32f2f; } .source-url { color: #1976d2; text-decoration: none; font-size: 12px; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .source-url:hover { text-decoration: underline; } .source-toggle { color: var(--text-muted); font-size: 10px; } .source-analysis { font-size: 12px; line-height: 1.6; color: var(--text-primary); padding: 0 12px 12px 12px; border-top: 1px solid var(--border-primary); overflow-wrap: break-word; word-wrap: break-word; } .source-analysis ul, .source-analysis ol { margin: 8px 0; padding-left: 24px; list-style-position: outside; } .source-analysis li { margin-bottom: 4px; } .source-analysis h1, .source-analysis h2, .source-analysis h3 { margin: 12px 0 8px 0; font-weight: 500; } .source-analysis h1 { font-size: 15px; } .source-analysis h2 { font-size: 14px; } .source-analysis h3 { font-size: 13px; } .source-analysis p { margin-bottom: 8px; } .research-assessment { margin: 20px 0; padding: 15px; background: var(--bg-card); border: 1px solid var(--border-primary); border-radius: 4px; } .assessment-status { font-size: 14px; font-weight: 500; margin-bottom: 10px; padding: 8px 12px; border-radius: 3px; } .assessment-status.complete { background: var(--theme-bg); color: var(--theme-accent); } .assessment-status.continuing { background: #fff3e0; color: #f57c00; } .assessment-info { font-size: 11px; color: var(--text-secondary); margin-bottom: 10px; } .missing-aspects { margin-top: 12px; padding: 10px 12px; background: var(--bg-tertiary); border-radius: 3px; font-size: 12px; } .missing-aspects strong { color: var(--text-secondary); font-weight: 500; display: block; margin-bottom: 6px; } .missing-aspects ul { list-style: none; padding: 0; margin: 0; } .missing-aspects li { padding: 4px 0; color: var(--text-primary); padding-left: 16px; position: relative; } .missing-aspects li::before { content: "•"; position: absolute; left: 0; color: #f57c00; } .agent-result { margin: 12px 0; overflow: hidden; } .result-header { padding: 6px 12px; background: var(--theme-accent); font-size: 10px; font-weight: 600; color: var(--bg-primary); text-transform: uppercase; letter-spacing: 0.5px; } .result-content { padding: 12px; font-size: 12px; line-height: 1.6; color: var(--text-primary); background: var(--bg-tertiary); border: 1px solid var(--border-primary); border-top: none; } .result-content h1, .result-content h2, .result-content h3 { margin-top: 16px; margin-bottom: 8px; color: var(--text-primary); font-weight: 500; } .result-content h1 { font-size: 14px; } .result-content h2 { font-size: 13px; } .result-content h3 { font-size: 12px; } .result-content p { margin-bottom: 12px; } .result-content ul, .result-content ol { margin-bottom: 12px; padding-left: 24px; } .result-content li { margin-bottom: 6px; } .result-content img { max-width: 400px; max-height: 400px; height: auto; margin: 8px 0; border-radius: 3px; } .result-content strong { font-weight: 500; color: var(--text-primary); } .result-content a, .result-preview-content a, .source-analysis a, .action-widget-result a { color: var(--theme-accent); text-decoration: underline; } .result-content a:visited, .result-preview-content a:visited, .source-analysis a:visited, .action-widget-result a:visited { color: color-mix(in srgb, var(--theme-accent) 60%, var(--text-muted)); } /* Markdown tables */ .markdown-table, .message-content table, .result-preview-content table, .action-widget-result table, .action-widget .section-content table, .result-content table { border-collapse: collapse; width: 100%; margin: 12px 0; font-size: 12px; background: var(--bg-card); border: 1px solid var(--border-primary); table-layout: auto; } .markdown-table th, .message-content table th, .result-preview-content table th, .action-widget-result table th, .action-widget .section-content table th, .result-content table th { background: var(--bg-tertiary); padding: 6px 8px; text-align: left; font-weight: 500; color: var(--text-primary); border-bottom: 2px solid var(--border-primary); } .markdown-table td, .message-content table td, .result-preview-content table td, .action-widget-result table td, .action-widget .section-content table td, .result-content table td { padding: 6px 8px; border-bottom: 1px solid var(--border-subtle); color: var(--text-primary); vertical-align: top; } .markdown-table tr:last-child td, .message-content table tr:last-child td, .result-preview-content table tr:last-child td, .action-widget-result table tr:last-child td, .action-widget .section-content table tr:last-child td, .result-content table tr:last-child td { border-bottom: none; } .markdown-table tr:hover, .message-content table tr:hover, .result-preview-content table tr:hover, .action-widget-result table tr:hover, .action-widget .section-content table tr:hover, .result-content table tr:hover { background: var(--bg-tertiary); } .result-content code, .result-preview-content code, .action-widget-result code, .action-widget .section-content code { background: var(--bg-secondary); padding: 2px 6px; border-radius: 3px; font-family: 'JetBrains Mono', monospace; font-size: 12px; } /* Code blocks in reports, result previews, and action widgets */ .result-content pre, .result-preview-content pre, .action-widget-result pre, .action-widget .section-content pre { background: var(--bg-tertiary); color: var(--text-primary); padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0; border: 1px solid var(--border-primary); } .result-content pre code, .result-preview-content pre code, .action-widget-result pre code, .action-widget .section-content pre code { background: transparent; padding: 0; color: inherit; font-family: 'JetBrains Mono', monospace; font-size: 12px; } /* Debug Panel */ .debug-panel { position: fixed; top: 25px; right: -450px; width: 450px; height: calc(100vh - 25px); background: var(--bg-card); border-left: 1px solid var(--border-primary); z-index: 1000; display: flex; flex-direction: column; transition: right 0.3s ease; } .debug-panel.active { right: 0; } .debug-header { padding: 6px 12px; border-bottom: 1px solid var(--border-primary); display: flex; align-items: center; gap: 8px; background: var(--theme-accent); } .debug-header h3 { margin: 0; font-size: 10px; font-weight: 500; color: var(--bg-primary); text-transform: uppercase; letter-spacing: 0.5px; flex: 1; } .debug-close { background: none; border: none; font-size: 16px; color: var(--bg-primary); cursor: pointer; padding: 0; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; border-radius: 3px; transition: background 0.15s; } .debug-close:hover { background: rgba(255, 255, 255, 0.2); } .debug-body { flex: 1; overflow: hidden; display: flex; flex-direction: column; } .debug-content { flex: 1; padding: 0; margin: 0; overflow: auto; font-family: 'JetBrains Mono', monospace; font-size: 11px; line-height: 1.5; background: var(--bg-card); } .debug-call-item { border-bottom: 1px solid var(--border-primary); } .debug-call-item.expanded { border-bottom: none; } .debug-call-header { padding: 2px 10px; cursor: pointer; display: flex; align-items: center; gap: 8px; line-height: 1.5; transition: background 0.15s; user-select: none; } .debug-call-header:hover { background: var(--bg-secondary); } .debug-call-arrow { color: var(--text-secondary); font-size: 9px; width: 10px; display: inline-block; } .debug-call-title { font-weight: 500; font-size: 11px; color: var(--text-primary); flex: 1; } .debug-call-time { color: var(--text-muted); font-size: 9px; } .debug-call-content { padding: 8px 12px; overflow-x: auto; font-size: 10px; } .debug-call-content pre { margin: 0; white-space: pre-wrap; word-wrap: break-word; font-size: 10px; } .debug-section-label { font-size: 10px; font-weight: 600; text-transform: uppercase; color: var(--text-muted); margin: 8px 0 4px 0; letter-spacing: 0.5px; } .debug-section-label:first-child { margin-top: 0; } .debug-image-placeholder { background: var(--theme-bg); color: var(--theme-accent); padding: 1px 4px; border-radius: 3px; cursor: pointer; position: relative; display: inline; } .debug-image-tooltip { display: none; position: absolute; bottom: 100%; left: 0; z-index: 1001; padding: 4px; background: var(--bg-card); border: 1px solid var(--border-primary); border-radius: 4px; box-shadow: 0 2px 8px rgba(0,0,0,0.15); } .debug-image-tooltip img { max-width: 200px; max-height: 200px; display: block; } /* Debug button uses same styling as settings/files buttons */ /* Settings Panel (side panel like debug) */ .settings-panel { position: fixed; top: 25px; right: -480px; width: 480px; height: calc(100vh - 25px); background: var(--bg-card); border-left: 1px solid var(--border-primary); z-index: 1000; display: flex; flex-direction: column; transition: right 0.3s ease; overflow-y: auto; } .settings-panel.active { right: 0; } .settings-panel-header { padding: 6px 12px; border-bottom: 1px solid var(--border-primary); display: flex; justify-content: space-between; align-items: center; background: var(--theme-accent); position: sticky; top: 0; z-index: 1; } .settings-panel-header h3 { margin: 0; font-size: 10px; font-weight: 500; color: var(--bg-primary); text-transform: uppercase; letter-spacing: 0.5px; } .settings-path { font-size: 9px; color: var(--bg-primary); opacity: 0.6; font-weight: 400; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; margin: 0 12px; } .settings-panel-close { background: none; border: none; font-size: 16px; color: var(--bg-primary); cursor: pointer; padding: 0; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; border-radius: 3px; transition: background 0.15s; } .settings-panel-close:hover { background: rgba(255, 255, 255, 0.2); } .settings-panel-body { flex: 1; padding: 12px; overflow-y: auto; } /* Settings List (providers/models) */ .settings-list { display: flex; flex-direction: column; gap: 4px; margin-bottom: 8px; } .provider-item, .model-item { display: flex; align-items: center; justify-content: space-between; padding: 5px 8px; background: var(--bg-secondary); border: 1px solid var(--border-primary); border-radius: 3px; font-size: 11px; } .provider-info, .model-info { display: flex; flex-direction: column; gap: 1px; flex: 1; min-width: 0; } .provider-name, .model-name { font-weight: 500; font-size: 11px; color: var(--text-primary); } .provider-endpoint, .model-details { font-size: 9px; color: var(--text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .provider-actions, .model-actions { display: flex; gap: 4px; margin-left: 8px; } .provider-edit-btn, .provider-delete-btn, .model-edit-btn, .model-delete-btn { background: none; border: none; font-size: 12px; color: var(--text-secondary); cursor: pointer; padding: 2px 4px; border-radius: 2px; transition: all 0.15s; } .provider-edit-btn:hover, .model-edit-btn:hover { background: var(--border-primary); color: var(--text-primary); } .provider-delete-btn:hover, .model-delete-btn:hover { background: #ffebee; color: #c62828; } .empty-list { padding: 8px; text-align: center; color: var(--text-muted); font-size: 10px; font-style: italic; background: var(--bg-tertiary); border: 1px dashed var(--border-primary); border-radius: 3px; } .settings-add-btn { background: none; border: 1px dashed var(--border-primary); padding: 5px 10px; font-family: inherit; font-size: 10px; color: var(--text-secondary); cursor: pointer; border-radius: 3px; transition: all 0.15s; width: 100%; text-align: center; } .settings-add-btn:hover { border-color: var(--theme-accent); color: var(--theme-accent); background: var(--theme-bg); } /* Settings Select (dropdowns) */ .settings-select { width: 100%; padding: 5px 24px 5px 8px; border: 1px solid var(--border-primary); border-radius: 0; font-family: inherit; font-size: 10px; background: var(--bg-card); color: var(--text-primary); outline: none; cursor: pointer; transition: border-color 0.15s ease; -webkit-appearance: none; -moz-appearance: none; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23999' d='M6 8L2 4h8z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 6px center; } .settings-select:hover { border-color: var(--theme-accent); } .settings-select:focus { border-color: var(--theme-accent); } /* Notebook models grid */ .agent-models-grid { display: grid; grid-template-columns: 80px 1fr; gap: 4px 8px; align-items: center; } .agent-models-grid label { font-size: 10px; font-weight: 500; color: var(--text-secondary); letter-spacing: 0.3px; } /* Settings Dialog (modal) */ .settings-dialog-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); z-index: 2000; display: none; align-items: center; justify-content: center; } .settings-dialog-overlay.active { display: flex; } .settings-dialog { background: var(--bg-card); border-radius: 6px; width: 380px; max-width: 90vw; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); overflow: hidden; } .settings-dialog-header { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; background: var(--theme-accent); } .settings-dialog-header h3 { margin: 0; font-size: 10px; font-weight: 500; color: var(--bg-primary); text-transform: uppercase; letter-spacing: 0.5px; } .settings-dialog-close { background: none; border: none; font-size: 14px; color: var(--bg-primary); cursor: pointer; padding: 0; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; border-radius: 3px; transition: background 0.15s; } .settings-dialog-close:hover { background: rgba(255, 255, 255, 0.2); } .settings-dialog-body { padding: 12px; display: flex; flex-direction: column; gap: 10px; } .dialog-field { display: flex; flex-direction: column; gap: 4px; } .dialog-label { font-size: 9px; font-weight: 500; color: var(--text-secondary); letter-spacing: 0.3px; } .dialog-hint { font-size: 10px; color: var(--text-muted); font-style: italic; } .dialog-checkbox-label { font-size: 11px; color: var(--text-secondary); display: flex; align-items: center; gap: 6px; cursor: pointer; } .dialog-checkbox-label input[type="checkbox"] { margin: 0; } .settings-dialog-actions { display: flex; gap: 6px; padding: 8px 12px; background: var(--bg-secondary); border-top: 1px solid var(--border-primary); justify-content: flex-end; } .settings-dialog-actions .settings-save-btn, .settings-dialog-actions .settings-cancel-btn { padding: 5px 12px; font-size: 10px; } /* Files Panel (right side panel, like settings/debug) */ .files-panel { position: fixed; top: 25px; right: -320px; width: 320px; height: calc(100vh - 25px); background: var(--bg-card); border-left: 1px solid var(--border-primary); z-index: 1000; display: flex; flex-direction: column; transition: right 0.3s ease; } .files-panel.active { right: 0; } .files-panel-header { padding: 6px 12px; border-bottom: 1px solid var(--border-primary); display: flex; justify-content: space-between; align-items: center; background: var(--theme-accent); gap: 8px; } .files-panel-header h3 { margin: 0; font-size: 10px; font-weight: 500; color: var(--bg-primary); text-transform: uppercase; letter-spacing: 0.5px; } .files-panel-controls { display: flex; align-items: center; gap: 6px; margin-left: auto; } .files-show-hidden { display: flex; align-items: center; gap: 4px; font-size: 9px; color: var(--bg-primary); opacity: 0.8; cursor: pointer; } .files-show-hidden input[type="checkbox"] { appearance: none; -webkit-appearance: none; width: 12px; height: 12px; border: 1px solid var(--bg-primary); border-radius: 2px; background: transparent; cursor: pointer; position: relative; opacity: 0.5; } .files-show-hidden input[type="checkbox"]:checked { background: var(--bg-card); border-color: var(--bg-primary); opacity: 1; } .files-show-hidden input[type="checkbox"]:checked::after { content: '✓'; position: absolute; top: -2px; left: 1px; font-size: 10px; color: var(--theme-accent); font-weight: bold; } .files-upload-btn, .files-refresh-btn { background: none; border: none; color: var(--bg-primary); font-size: 13px; cursor: pointer; padding: 2px 4px; border-radius: 3px; transition: background 0.15s; } .files-upload-btn:hover, .files-refresh-btn:hover { background: rgba(255, 255, 255, 0.2); } .files-panel-close { background: none; border: none; font-size: 16px; color: var(--bg-primary); cursor: pointer; padding: 0; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; border-radius: 3px; transition: background 0.15s; } .files-panel-close:hover { background: rgba(255, 255, 255, 0.2); } .files-panel-body { flex: 1; padding: 6px 0; overflow-y: auto; font-size: 11px; } .files-loading { padding: 12px; color: var(--text-secondary); text-align: center; font-size: 10px; } .files-panel-legend { padding: 6px 12px; border-top: 1px solid var(--border-primary); display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 9px; color: var(--text-muted); flex-shrink: 0; } /* File Tree Styles - matching research tree pattern */ .file-tree-root { padding: 6px 10px; } .file-tree-header { font-size: 10px; color: var(--text-secondary); padding: 0 0 3px 0; margin-bottom: 3px; } /* Container for tree items - has vertical line */ .file-tree-container { position: relative; padding-left: 20px; } .file-tree-container::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 1px; background: var(--border-primary); } /* Individual tree item */ .file-tree-item { position: relative; margin-bottom: 1px; } /* Horizontal branch line */ .file-tree-item::before { content: ''; position: absolute; left: -20px; top: 10px; width: 12px; height: 1px; background: var(--border-primary); } /* Last item covers the vertical line below it */ .file-tree-item.last::after { content: ''; position: absolute; left: -20px; top: 11px; bottom: 0; width: 1px; background: var(--bg-card); } .file-tree-line { display: flex; align-items: center; gap: 4px; padding: 2px 0; cursor: pointer; user-select: none; white-space: nowrap; font-size: 11px; color: var(--text-primary); } .file-tree-line:hover { color: var(--theme-accent); } .file-tree-line:hover .file-tree-name { text-decoration: underline; } .file-tree-icon { font-size: 10px; min-width: 12px; text-align: center; color: var(--theme-accent); flex-shrink: 0; } .file-tree-item.file .file-tree-icon { color: transparent; } .file-tree-name { overflow: hidden; text-overflow: ellipsis; } /* Children container - same pattern as parent */ .file-tree-children { display: none; position: relative; padding-left: 20px; } .file-tree-children::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 1px; background: var(--border-primary); } .file-tree-children.expanded { display: block; } .file-tree-actions { margin-left: auto; flex-shrink: 0; } .file-tree-action-btn { background: none; border: none; cursor: pointer; font-size: 10px; padding: 0 2px; color: var(--text-muted); } .file-tree-action-btn:hover { color: var(--theme-accent); } .file-tree-highlight { background: rgba(var(--theme-accent-rgb), 0.15); border-radius: 3px; } .file-tree-item.folder.drag-over > .file-tree-line { background: rgba(var(--theme-accent-rgb), 0.15); border-radius: 3px; } #fileTree.drag-over-root { background: rgba(var(--theme-accent-rgb), 0.06); } /* Inline code file path links */ .file-path-link { text-decoration: none; cursor: pointer; } .file-path-link code { border-color: var(--theme-accent) !important; cursor: pointer; } .file-path-link:hover code { background: rgba(var(--theme-accent-rgb), 0.1); } /* Retry Indicator */ .retry-indicator { padding: 12px 16px; margin: 8px 0; background: #fff3e0; border: 1px solid #ffb74d; border-radius: 6px; animation: retryPulse 2s ease-in-out infinite; } @keyframes retryPulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } .retry-content { display: flex; align-items: center; gap: 12px; } .retry-spinner { width: 20px; height: 20px; border: 2px solid #ffb74d; border-top-color: #f57c00; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .retry-text { flex: 1; } .retry-message { font-size: 11px; color: #e65100; margin-bottom: 4px; } .retry-status { font-size: 10px; color: #f57c00; font-weight: 500; } /* Session Selector (inside welcome message) */ .session-selector { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--border-primary); } /* Welcome explanation section (below session selector) */ .welcome-explanation { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--border-primary); color: var(--text-secondary); } .session-selector-form { display: flex; gap: 20px; align-items: flex-end; } .session-new { flex: 1; } .session-existing { flex: 1; } .session-new label, .session-existing label { display: block; font-size: 10px; font-weight: 600; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 6px; } .session-new-input { display: flex; gap: 6px; } .session-input-wrapper { flex: 1; position: relative; display: flex; } .session-input-wrapper input { flex: 1; padding: 7px 28px 7px 10px; border: 1px solid var(--border-primary); border-radius: 4px; font-size: 12px; font-family: inherit; height: 32px; box-sizing: border-box; background: var(--bg-input); color: var(--text-primary); } .session-input-wrapper input:focus { outline: none; border-color: var(--theme-accent); } .session-regenerate-btn { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); background: transparent; border: none; color: var(--text-muted); font-size: 13px; cursor: pointer; padding: 0; line-height: 1; transition: color 0.2s; } .session-regenerate-btn:hover { color: var(--theme-accent); } .session-new-input button:not(.session-regenerate-btn) { padding: 7px 14px; background: var(--bg-secondary); color: var(--text-primary); border: 1px solid var(--border-primary); border-radius: 4px; font-size: 11px; font-weight: 500; cursor: pointer; transition: all 0.2s; letter-spacing: 0.5px; } .session-new-input button:not(.session-regenerate-btn):hover { background: var(--theme-accent); color: var(--bg-primary); border-color: var(--theme-accent); } .session-existing { position: relative; } .session-existing::after { content: ''; position: absolute; right: 14px; bottom: 13px; width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 5px solid var(--text-muted); pointer-events: none; } .session-existing select { width: 100%; padding: 7px 32px 7px 10px; border: 1px solid var(--border-primary); border-radius: 4px; font-size: 12px; font-family: inherit; background: var(--bg-card); color: var(--text-primary); cursor: pointer; height: 32px; box-sizing: border-box; -webkit-appearance: none; -moz-appearance: none; appearance: none; transition: border-color 0.2s ease; } .session-existing select:hover { border-color: var(--theme-accent); } .session-existing select:focus { outline: none; border-color: var(--theme-accent); } /* Sessions Panel (right side) */ .sessions-panel { position: fixed; top: 25px; right: -320px; width: 320px; height: calc(100vh - 25px); background: var(--bg-card); border-left: 1px solid var(--border-primary); z-index: 1000; display: flex; flex-direction: column; transition: right 0.3s ease; } .sessions-panel.active { right: 0; } .sessions-panel-open .content-area { margin-right: 320px; } .sessions-panel-header { padding: 6px 12px; border-bottom: 1px solid var(--border-primary); display: flex; justify-content: space-between; align-items: center; background: var(--theme-accent); } .sessions-panel-header h3 { margin: 0; font-size: 10px; font-weight: 500; color: var(--bg-primary); text-transform: uppercase; letter-spacing: 0.5px; } .sessions-panel-close { background: none; border: none; font-size: 16px; color: var(--bg-primary); cursor: pointer; padding: 0; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; border-radius: 3px; transition: background 0.15s; } .sessions-panel-close:hover { background: rgba(255, 255, 255, 0.2); } .sessions-panel-body { flex: 1; padding: 12px; overflow-y: auto; } .sessions-panel-body label { display: block; font-size: 9px; font-weight: 500; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.3px; margin-bottom: 6px; } .sessions-current-name, .sessions-new-input { display: flex; gap: 6px; } .sessions-current-name input, .sessions-new-input input { flex: 1; padding: 5px 24px 5px 8px; border: 1px solid var(--border-primary); border-radius: 3px; font-size: 11px; font-family: inherit; } .sessions-new-input .session-input-wrapper { width: 180px; position: relative; display: flex; } .sessions-new-input .session-input-wrapper input { width: 100%; flex: none; } .sessions-current-name input:focus, .sessions-new-input input:focus { outline: none; border-color: var(--theme-accent); } .sessions-current-name button, .sessions-new-input button:not(.session-regenerate-btn) { padding: 5px 10px; background: var(--theme-accent); color: var(--bg-primary); border: none; border-radius: 3px; font-size: 10px; font-weight: 500; cursor: pointer; transition: opacity 0.15s; flex-shrink: 0; } .sessions-current-name button:hover, .sessions-new-input button:not(.session-regenerate-btn):hover { opacity: 0.9; } .sessions-divider { height: 1px; background: var(--border-primary); margin: 10px 0; } .sessions-list { display: flex; flex-direction: column; gap: 3px; } .sessions-list-item { padding: 5px 8px; background: var(--bg-secondary); border-radius: 3px; cursor: pointer; transition: background 0.15s; display: flex; justify-content: space-between; align-items: center; } .sessions-list-item:hover { background: var(--bg-hover); } .sessions-list-item.current { background: var(--theme-accent-bg); border: 1px solid var(--theme-accent); } .sessions-list-item-name { font-size: 11px; font-weight: 500; color: var(--text-primary); } .sessions-list-item-date { font-size: 9px; color: var(--text-muted); flex: 1; text-align: right; margin-right: 6px; } .sessions-delete-btn { background: none; border: none; color: var(--text-muted); font-size: 13px; cursor: pointer; padding: 0 2px; line-height: 1; transition: color 0.15s; } .sessions-delete-btn:hover { color: #e53935; } .sessions-loading { text-align: center; color: var(--text-secondary); font-size: 10px; padding: 12px; } /* ==================== Dark theme shared overrides ==================== */ /* Dark themes: code/pre syntax colors */ [data-theme="terminal"] .message-content code, [data-theme="terminal"] .action-widget-result code, [data-theme="terminal"] .result-preview-content code { color: #33ff33; } [data-theme="noir"] .message-content code, [data-theme="noir"] .action-widget-result code, [data-theme="noir"] .result-preview-content code { color: #d4d4d4; } [data-theme="eclipse"] .message-content code, [data-theme="eclipse"] .action-widget-result code, [data-theme="eclipse"] .result-preview-content code { color: #a8c8f0; } [data-theme="terminal"] .message-content pre, [data-theme="terminal"] .message-content pre code { color: #33ff33; } [data-theme="noir"] .message-content pre, [data-theme="noir"] .message-content pre code { color: #d4d4d4; } [data-theme="eclipse"] .message-content pre, [data-theme="eclipse"] .message-content pre code { color: #c8daf0; } /* Links */ .chat-container a { color: var(--theme-accent); text-decoration: underline; } .chat-container a:visited { color: color-mix(in srgb, var(--theme-accent) 60%, var(--text-muted)); text-decoration: underline; } /* Dark themes: links */ [data-theme="terminal"] .chat-container a { color: #33ff33; } [data-theme="terminal"] .chat-container a:visited { color: #22aa22; } [data-theme="noir"] .chat-container a { color: #cccccc; } [data-theme="noir"] .chat-container a:visited { color: #999999; } [data-theme="eclipse"] .chat-container a { color: #7ab0ff; } [data-theme="eclipse"] .chat-container a:visited { color: #5a8acc; } /* Dark themes: active dot glow */ [data-theme="terminal"] .tl-row.active .tl-dot { box-shadow: 0 0 4px #00ff00; } [data-theme="noir"] .tl-row.active .tl-dot { box-shadow: 0 0 4px #ffffff40; } [data-theme="eclipse"] .tl-row.active .tl-dot { box-shadow: 0 0 4px #5c9eff60; } /* Dark themes: input caret */ [data-theme="terminal"] .input-container textarea { caret-color: #00ff00; } [data-theme="noir"] .input-container textarea { caret-color: #e0e0e0; } [data-theme="eclipse"] .input-container textarea { caret-color: #5c9eff; } /* Dark themes: research tree lines (hardcoded #666/#888) */ [data-theme="terminal"] .query-tree-container::before, [data-theme="terminal"] .query-tree::before, [data-theme="terminal"] .source-tree-container::before, [data-theme="terminal"] .source-tree-node::before, [data-theme="noir"] .query-tree-container::before, [data-theme="noir"] .query-tree::before, [data-theme="noir"] .source-tree-container::before, [data-theme="noir"] .source-tree-node::before, [data-theme="eclipse"] .query-tree-container::before, [data-theme="eclipse"] .query-tree::before, [data-theme="eclipse"] .source-tree-container::before, [data-theme="eclipse"] .source-tree-node::before { background: var(--border-primary); } /* ============================================================ Agent Tool Cells (search, read, screenshot) ============================================================ */ .tool-cell { margin: 16px 0; overflow: hidden; } .tool-cell-label { font-size: 10px; font-weight: 600; color: var(--bg-primary); text-transform: uppercase; letter-spacing: 0.5px; padding: 6px 12px; background: var(--theme-accent); display: flex; align-items: center; gap: 8px; cursor: pointer; } .tool-cell-label:hover { opacity: 0.9; } .tool-cell-desc { font-weight: 400; text-transform: none; letter-spacing: 0; opacity: 0.8; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; } .tool-cell-input { background: var(--bg-tertiary); padding: 10px 12px; border: 1px solid var(--border-primary); border-top: none; font-family: 'JetBrains Mono', monospace; font-size: 12px; color: var(--text-primary); word-break: break-all; } .tool-cell-output { padding: 10px 12px; background: var(--bg-tertiary); border: 1px solid var(--border-primary); border-top: none; font-size: 12px; } .tool-cell-output .show-html-iframe { width: 100%; height: 400px; border: 1px solid var(--border-primary); border-radius: 4px; background: var(--bg-primary); } .search-results-content { display: flex; flex-direction: column; gap: 8px; } .search-result-item { display: flex; flex-direction: column; gap: 1px; } .search-result-item a { color: var(--accent-primary); text-decoration: none; font-weight: 500; font-size: 12px; } .search-result-item a:hover { text-decoration: underline; } .search-snippet { color: var(--text-muted); font-size: 11px; line-height: 1.3; } .tool-cell-read-summary { color: var(--text-muted); font-size: 11px; } .read-content-toggle { background: none; border: 1px solid var(--border-color); color: var(--accent-color); font-size: 10px; cursor: pointer; padding: 1px 6px; border-radius: 3px; margin-left: 6px; } .read-content-toggle:hover { background: var(--accent-color); color: var(--bg-primary); } .read-content-body { display: none; max-height: 400px; overflow-y: auto; padding: 8px 10px; margin-top: 6px; border: 1px solid var(--border-color); border-radius: 4px; font-size: 12px; line-height: 1.5; background: var(--bg-primary); } .read-content-body.expanded { display: block; } .screenshot-img { max-width: 100%; max-height: 400px; border-radius: 2px; } .generated-img { max-width: 100%; border-radius: 4px; cursor: pointer; } /* Widget collapse toggle — used in tool-cell, code-cell, action-widget headers */ .widget-collapse-toggle { width: 14px; height: 14px; padding: 10px; margin: -10px; box-sizing: content-box; display: flex; align-items: center; justify-content: center; flex-shrink: 0; opacity: 0.6; cursor: pointer; transition: opacity 0.2s; position: relative; z-index: 1; } .widget-collapse-toggle:hover { opacity: 1; } .widget-collapse-toggle::before { content: ''; width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 5px solid var(--bg-primary); transition: transform 0.2s; } .widget-collapse-toggle.collapsed::before { transform: rotate(-90deg); } /* Collapsed state for tool-cell, code-cell, action-widget */ .tool-cell.collapsed > :not(.tool-cell-label), .code-cell.collapsed > :not(.code-cell-label), .action-widget.collapsed > :not(.action-widget-clickable):not(.action-widget-header) { display: none; } /* Username overlay for multi-user mode */ .username-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.7); display: flex; align-items: center; justify-content: center; z-index: 10000; } .username-dialog { background: var(--bg-primary); border: 1px solid var(--border-primary); padding: 32px; text-align: center; max-width: 320px; width: 90%; } .username-dialog h2 { margin: 0 0 8px; font-size: 16px; color: var(--theme-accent); } .username-dialog p { margin: 0 0 20px; font-size: 12px; color: var(--text-secondary); } .username-dialog input { width: 100%; padding: 8px 12px; font-family: 'JetBrains Mono', monospace; font-size: 14px; background: var(--bg-secondary); border: 1px solid var(--border-primary); color: var(--text-primary); margin-bottom: 12px; box-sizing: border-box; -webkit-appearance: none; appearance: none; border-radius: 0; } .username-dialog input:focus { outline: none; border-color: var(--theme-accent); } .username-dialog button { width: 100%; padding: 8px; background: var(--theme-accent); color: var(--bg-primary); border: none; font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; } .username-dialog button:hover { opacity: 0.9; } .username-warning { font-size: 11px; color: var(--text-secondary); margin: -6px 0 10px; text-align: left; } .username-dialog .username-notice { margin: 24px 0 0; font-size: 10px; color: var(--text-muted); line-height: 1.4; } .username-notice strong { color: var(--theme-accent); } .username-notice a { color: var(--theme-accent); text-decoration: none; } .username-notice a:hover { text-decoration: underline; } .user-indicator-block { display: flex; align-items: stretch; margin: 8px 12px 0 16px; border: 1px solid var(--theme-accent); cursor: pointer; } .user-indicator-block:hover { opacity: 0.8; } .user-indicator-name { padding: 3px 8px; font-size: 9px; background: var(--bg-tertiary); color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; min-width: 0; }