.chat-page .page-content { align-items: stretch; } #chat { flex: 1; overflow-y: auto; padding: 2em 1em 1em; gap: calc(var(--box-spacing) / 2); display: flex; flex-direction: column; background: var(--chat-bg); border-radius: var(--border-radius) var(--border-radius) 0 0; } /* Custom Command Buttons */ .custom-cmd-bar { display: flex; gap: var(--badge-spacing); margin-left: var(--badge-spacing); flex-wrap: wrap; align-items: center; } .custom-cmd-bar:empty { display: none; } .custom-cmd-btn:hover { background: var(--f3-bg); border-color: var(--f3-border); } .custom-cmd-btn.running { opacity: var(--semi-transparent); } /* Header Menu */ .header-menu { position: relative; margin-left: auto; } .header-menu-dropdown { position: absolute; top: 100%; right: 0; margin-top: .5em; background: var(--f3-bg); border: var(--border-width) solid var(--f3-border); border-radius: var(--border-radius); min-width: 10em; z-index: 100; display: flex; flex-direction: column; overflow: hidden; } .header-menu-dropdown[hidden] { display: none; } .header-menu-item { border: none; border-radius: unset; text-align: left; padding: var(--menu-item-padding); background: none; white-space: nowrap; } .header-menu-item:not(:disabled):hover { background: var(--f2-bg); border: none; } .meta-bar { padding: var(--box-padding); background: var(--chat-bg); border-radius: 0 0 var(--border-radius) var(--border-radius); flex-shrink: 0; height: 3em; line-height: 1.3; } .msg, .tool-box { border-radius: var(--border-radius); padding: var(--box-padding); max-width: 80%; } .msg { white-space: pre-wrap; word-break: break-word; } .msg.user { align-self: flex-end; background: var(--f3-bg); border: var(--border-width) solid var(--f3-border); } .msg.assistant { align-self: flex-start; background: var(--f1-bg); border: var(--border-width) solid var(--f1-border); } .msg.system-info { align-self: center; text-align: center; border: var(--border-width) solid var(--f2-border); } .msg .cursor { display: inline-block; width: .125em; height: 1em; background: var(--text); animation: blink 0.8s infinite; vertical-align: text-bottom; margin-left: .125em; } @keyframes blink { 0%, 50% { opacity: 1; } 51%, 100% { opacity: 0; } } .tool-box { align-self: flex-start; background: var(--f1-bg); border: var(--border-width) solid var(--f1-border); } .tool-box > * { overflow-x: auto; } .tool-box:has(.tool-box-header) { padding: 0; } .tool-box:has([hidden]) { opacity: var(--semi-transparent); } .tool-box-header { display: flex; align-items: center; gap: var(--box-spacing); padding: var(--box-padding); flex-wrap: wrap; } .tool-error-badge { color: var(--dangerous); border: var(--border-width) solid var(--dangerous); padding: var(--badge-padding); } /* Diff View */ .tool-diff { max-height: 16.5em; overflow: auto; } .diff-line { display: flex; align-items: flex-start; white-space: pre; } .diff-removed { color: #f33; background: #f331 } .diff-added { color: #3f3; background-color: #3f31; } .diff-marker { flex-shrink: 0; width: 1.5em; text-align: center; user-select: none; border-right: var(--border-width) solid var(--f2-border); margin-right: .5em; } .diff-content { flex: 1; overflow: hidden; text-overflow: ellipsis; padding-right: .5em; } .tool-result { white-space: pre-wrap; word-break: break-word; padding: var(--box-padding); max-height: 16.5em; overflow: auto; } .tool-write-meta { opacity: var(--semi-transparent); margin-left: auto; } /* Chain Meta Badges */ .chain-meta { align-self: center; display: flex; flex-wrap: wrap; gap: var(--badge-spacing); justify-content: center; font-size: .8em; filter: sepia(1) saturate(1) hue-rotate(-45deg); padding: 0 0 var(--badge-spacing); } .chain-meta-badge { padding: var(--badge-padding); background: var(--f3-bg); border: var(--border-width) solid var(--f3-border); border-radius: var(--border-radius); white-space: nowrap; } .input-area { display: flex; flex-shrink: 0; align-items: center; margin: var(--badge-spacing) var(--badge-spacing) var(--page-spacing); gap: var(--badge-spacing); } .input-area button { width: 2em; aspect-ratio: 1; padding: 0; line-height: 1; overflow: hidden; } .input-area textarea { flex: 1; min-height: 0; height: 33px; overflow: hidden; } .archive-container { display: flex; flex-direction: column; gap: var(--box-spacing); } .archived { opacity: var(--semi-transparent); } .archive-load-btn { display: block; margin-inline: auto; } /* Workspace Refs */ .ref-preview { flex-wrap: wrap; padding: var(--box-padding); padding-bottom: 0; gap: var(--badge-spacing); } .ref-preview:not([hidden]) { display: flex; } .ref-preview-item { display: flex; align-items: center; padding: var(--badge-padding); gap: var(--badge-spacing); background: var(--f2-bg); border: var(--border-width) solid var(--f2-border); border-radius: var(--border-radius); } .ref-icon { flex-shrink: 0; } .ref-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* File Upload */ .file-preview { flex-direction: column; gap: var(--box-spacing); padding: var(--box-padding); } .file-preview:not([hidden]) { display: flex; } .file-preview-inner { display: flex; align-items: center; gap: var(--box-spacing); } .file-thumb { max-height: 60px; max-width: 100px; object-fit: contain; border: var(--border-width) solid var(--f2-border); } .file-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .file-remove { background: none; border: none; cursor: pointer; color: var(--text); opacity: var(--semi-transparent); padding: 0; line-height: 1; } .file-remove:hover { opacity: 1; } /* File Ref Chips in User-Bubbles */ .file-ref-chip { display: inline-flex; align-items: center; gap: .3em; padding: .15em .5em; background: var(--f2-bg); border: var(--border-width) solid var(--f2-border); border-radius: var(--border-radius); font-size: .9em; white-space: nowrap; vertical-align: baseline; transition: background .15s, border-color .15s; } .file-ref-chip:hover { border-color: var(--f3-border); background: var(--f3-bg); } /* Attachments in History */ .attachment-indicator { margin-top: var(--badge-spacing); opacity: var(--semi-transparent); } .attachment-indicator:hover { opacity: 1; } .attachment-container { margin-top: var(--badge-spacing); display: flex; flex-wrap: wrap; gap: var(--badge-spacing); } .attachment-image { max-width: 300px; max-height: 200px; object-fit: contain; border: var(--border-width) solid var(--f2-border); cursor: pointer; } .attachment-file { display: inline-block; padding: var(--badge-padding); background: var(--f2-bg); border: var(--border-width) solid var(--f2-border); text-decoration: none; color: var(--text); } /* System-Prompt Modal */ .sp-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.6); display: flex; align-items: center; justify-content: center; z-index: 1000; } .sp-modal { background: var(--f2-bg); border: var(--border-width) solid var(--f2-border); border-radius: var(--border-radius); overflow: hidden; width: 90vw; max-width: 700px; max-height: 80vh; display: flex; flex-direction: column; } .sp-header { display: flex; align-items: center; justify-content: space-between; padding: var(--box-padding); border-bottom: var(--border-width) solid var(--f1-border); background: var(--f1-bg); flex-shrink: 0; } .sp-close { width: 2em; aspect-ratio: 1; padding: 0; line-height: 1; } .sp-body { padding: var(--page-padding); overflow-y: auto; flex: 1; } .sp-loading { text-align: center; opacity: var(--semi-transparent); padding: 2em; }