/* Chat Agent Mode — Z.ai toggle + OpenClaw multi-panel layout */ /* ============================================ AGENT / CHAT MODE TOGGLE (Z.ai style) ============================================ */ .chat-mode-toggle { display: flex; align-items: center; gap: 2px; background: var(--surface, #1a1a24); border: 1px solid var(--border, #2a2a2a); border-radius: 20px; padding: 2px; margin-right: 8px; } .chat-mode-btn { padding: 5px 14px; border: none; border-radius: 18px; font-family: 'Fira Code', monospace; font-size: 12px; font-weight: 600; cursor: pointer; transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); background: transparent; color: var(--text-secondary, #888); letter-spacing: 0.3px; } .chat-mode-btn.active { background: #84d669; color: #fff; box-shadow: 0 2px 8px rgba(132, 214, 105, 0.3); } .chat-mode-btn:not(.active):hover { color: var(--text, #fff); background: var(--hover, rgba(255, 255, 255, 0.05)); } /* ============================================ QUICK ACTION CHIPS (Z.ai style) ============================================ */ .quick-actions-container { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; justify-content: center; animation: quickActionsIn 0.4s ease; } @keyframes quickActionsIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } .quick-action-chip { display: inline-flex; align-items: center; gap: 6px; padding: 8px 16px; border: 1px solid var(--border, #2a2a2a); border-radius: 24px; background: var(--surface, #1a1a24); color: var(--text, #fff); font-family: 'Fira Code', monospace; font-size: 12px; font-weight: 500; cursor: pointer; transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); white-space: nowrap; } .quick-action-chip:hover { border-color: #84d669; background: rgba(132, 214, 105, 0.08); transform: translateY(-2px); box-shadow: 0 4px 12px rgba(132, 214, 105, 0.15); } .quick-action-chip:active { transform: translateY(0); } .quick-action-icon { font-size: 14px; } /* ============================================ AGENT MODE — MULTI-PANEL LAYOUT ============================================ */ .chat-layout.agent-mode { max-width: none; padding: 0; display: grid; grid-template-columns: 48px 1fr 1fr; grid-template-rows: 1fr auto auto; gap: 0; } /* Agent Mode Left Sidebar */ .agent-sidebar { display: none; grid-row: 1 / -1; grid-column: 1; background: #f8f8f8; border-right: 1px solid #f0f1f2; flex-direction: column; z-index: 50; } .agent-mode .agent-sidebar { display: flex; } .agent-sidebar-item { width: 48px; height: 44px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.15s ease; position: relative; border-bottom: 1px solid #f0f1f2; background: transparent; border-left: none; border-right: none; border-top: none; color: #666; } .agent-sidebar-item:hover { background: #fff; color: #3b3b3b; } .agent-sidebar-item.active { background: #fff; border-left: 3px solid #84d669; color: #3b3b3b; } .agent-sidebar-badge { position: absolute; top: 4px; right: 4px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px; background: #84d669; color: #fff; font-size: 9px; font-weight: 700; display: flex; align-items: center; justify-content: center; font-family: 'Fira Code', monospace; } /* Chat Panel (in agent mode) */ .agent-mode #messages { padding: 16px; } .agent-mode footer { grid-column: 2 / -1; padding: 8px 16px; border-top: 1px solid #f0f1f2; } /* ============================================ THOUGHT PROCESS BLOCK ============================================ */ .thought-process { margin: 12px 0; border: 1px solid var(--border, #e0e0e0); border-radius: 8px; overflow: hidden; background: var(--surface, #f8f9fa); } .thought-process-header { display: flex; align-items: center; gap: 8px; padding: 10px 14px; cursor: pointer; font-family: 'Fira Code', monospace; font-size: 12px; font-weight: 600; color: var(--text, #3b3b3b); background: var(--surface, #f0f1f2); transition: background 0.15s; border: none; width: 100%; text-align: left; } .thought-process-header:hover { background: var(--hover, #e8e9ea); } .thought-process-toggle { transition: transform 0.2s; font-size: 10px; } .thought-process.expanded .thought-process-toggle { transform: rotate(90deg); } .thought-process-body { display: none; padding: 12px 14px; font-size: 13px; line-height: 1.6; color: var(--text-secondary, #666); border-top: 1px solid var(--border, #e0e0e0); } .thought-process.expanded .thought-process-body { display: block; } /* ============================================ BROWSER PANEL ============================================ */ .agent-browser-panel { display: none; grid-column: 3; grid-row: 1; border-left: 1px solid #f0f1f2; flex-direction: column; background: #fff; } .agent-mode .agent-browser-panel { display: flex; } .browser-panel-header { display: flex; align-items: center; gap: 8px; padding: 8px 12px; background: #f8f8f8; border-bottom: 1px solid #f0f1f2; font-family: 'Fira Code', monospace; font-size: 12px; font-weight: 600; color: #3b3b3b; } .browser-url-bar { flex: 1; padding: 4px 10px; background: #fff; border: 1px solid #e0e0e0; border-radius: 4px; font-family: 'Fira Code', monospace; font-size: 11px; color: #666; } .browser-panel-content { flex: 1; background: #fff; } .browser-panel-content iframe { width: 100%; height: 100%; border: none; } .browser-panel-empty { display: flex; align-items: center; justify-content: center; height: 100%; color: #ccc; font-family: 'Fira Code', monospace; font-size: 13px; } /* ============================================ TERMINAL PANEL ============================================ */ .agent-terminal-panel { display: none; grid-column: 2; grid-row: 2; border-top: 1px solid #f0f1f2; flex-direction: column; max-height: 200px; min-height: 120px; } .agent-mode .agent-terminal-panel { display: flex; } .terminal-panel-header { display: flex; align-items: center; gap: 8px; padding: 6px 12px; background: #1e1e1e; border-bottom: 1px solid #333; font-family: 'Fira Code', monospace; font-size: 11px; font-weight: 600; color: #84d669; } .terminal-panel-content { flex: 1; overflow-y: auto; background: #1e1e1e; padding: 8px 12px; font-family: 'Fira Code', monospace; font-size: 12px; line-height: 1.5; color: #d4d4d4; } .terminal-line { white-space: pre-wrap; word-break: break-all; } .terminal-line.stderr { color: #f87171; } .terminal-line.stdout { color: #d4d4d4; } /* ============================================ AGENT INFO CARD ============================================ */ .agent-info-card { display: none; grid-column: 3; grid-row: 2; border-top: 1px solid #f0f1f2; border-left: 1px solid #f0f1f2; padding: 12px 16px; background: #f8f8f8; flex-direction: column; gap: 8px; } .agent-mode .agent-info-card { display: flex; } .agent-info-name { display: flex; align-items: center; gap: 8px; font-family: 'Fira Code', monospace; font-size: 13px; font-weight: 600; color: #3b3b3b; } .agent-info-dot { width: 8px; height: 8px; border-radius: 50%; background: #84d669; } .agent-level-badge { display: inline-block; padding: 2px 8px; border-radius: 4px; font-family: 'Fira Code', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.5px; text-transform: uppercase; } .badge-evolved { background: #84d669; color: #fff; } .badge-bred { background: #f59e0b; color: #fff; } .badge-wild { background: #ef4444; color: #fff; } .agent-info-model { font-family: 'Fira Code', monospace; font-size: 11px; color: #888; } .agent-info-toggles { display: flex; gap: 8px; align-items: center; } .agent-toggle { display: flex; align-items: center; gap: 4px; font-family: 'Fira Code', monospace; font-size: 11px; color: #666; } .agent-toggle-switch { width: 28px; height: 16px; border-radius: 8px; background: #ccc; position: relative; cursor: pointer; transition: background 0.2s; border: none; padding: 0; } .agent-toggle-switch.on { background: #84d669; } .agent-toggle-switch::after { content: ''; position: absolute; top: 2px; left: 2px; width: 12px; height: 12px; border-radius: 50%; background: #fff; transition: transform 0.2s; } .agent-toggle-switch.on::after { transform: translateX(12px); } /* ============================================ STEP COUNTER BAR ============================================ */ .agent-step-bar { display: none; grid-column: 1 / -1; grid-row: 3; align-items: center; justify-content: space-between; padding: 8px 16px; background: #f8f8f8; border-top: 1px solid #f0f1f2; } .agent-mode .agent-step-bar { display: flex; } .step-counter { display: flex; align-items: center; gap: 12px; font-family: 'Fira Code', monospace; font-size: 13px; color: #3b3b3b; } .step-nav-btn { width: 28px; height: 28px; border-radius: 50%; border: 1px solid #e0e0e0; background: #fff; color: #666; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.15s; font-size: 14px; padding: 0; } .step-nav-btn:hover { border-color: #84d669; color: #84d669; } .step-action-btns { display: flex; gap: 6px; } .step-action-btn { width: 36px; height: 36px; border-radius: 50%; border: none; background: #84d669; color: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.15s; font-size: 16px; padding: 0; } .step-action-btn:hover { transform: scale(1.1); box-shadow: 0 2px 8px rgba(132, 214, 105, 0.3); } /* ============================================ TODO LIST (OpenClaw style) ============================================ */ .agent-todo-list { margin: 12px 0; border: 1px solid var(--border, #e0e0e0); border-radius: 8px; overflow: hidden; } .agent-todo-header { display: flex; align-items: center; gap: 8px; padding: 8px 14px; background: var(--surface, #f0f1f2); font-family: 'Fira Code', monospace; font-size: 12px; font-weight: 600; color: var(--text, #3b3b3b); } .agent-todo-count { background: #84d669; color: #fff; padding: 1px 6px; border-radius: 10px; font-size: 10px; } .agent-todo-item { display: flex; align-items: center; gap: 10px; padding: 8px 14px; border-top: 1px solid var(--border, #e0e0e0); font-size: 13px; color: var(--text, #3b3b3b); transition: opacity 0.2s; } .agent-todo-item.done { opacity: 0.5; text-decoration: line-through; } .agent-todo-check { width: 16px; height: 16px; border-radius: 50%; border: 2px solid #ccc; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .agent-todo-item.done .agent-todo-check { background: #84d669; border-color: #84d669; color: #fff; font-size: 10px; }