.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; } /* 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; padding-block: calc(var(--badge-spacing) / 2) var(--badge-spacing); } .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; } .header-menu-separator { border-top: var(--border-width) solid var(--f2-border); } .header-menu-label { padding: var(--badge-spacing) .75em; font-size: var(--font-size); opacity: var(--semi-transparent); white-space: nowrap; } .header-menu-cmd.running { opacity: var(--semi-transparent); } .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: .55em; height: 1.15em; background: var(--text); animation: blink .2s step-end infinite; vertical-align: text-bottom; margin-left: .15em; border-radius: 1px; } @keyframes blink { 0%, 50% { opacity: 1; } 50.1%, 100% { opacity: 0; } } .tool-box { align-self: flex-start; background: var(--f1-bg); border: var(--border-width) solid var(--f1-border); font-size: var(--font-size); } .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: var(--font-size); filter: sepia(1) saturate(1) hue-rotate(90deg); padding-bottom: var(--page-spacing); opacity: var(--semi-transparent); } .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 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; } /* Reply Button */ .msg { position: relative; } .msg-reply-btn, .msg-mark-btn { position: absolute; top: var(--badge-spacing); opacity: 0; transition: opacity var(--transition-duration); padding: .15em .35em; font-size: var(--font-size); background: var(--f2-bg); border: var(--border-width) solid var(--f2-border); border-radius: var(--border-radius); } .msg-reply-btn { right: calc(var(--badge-spacing) + 2em + var(--badge-spacing)); } .msg-mark-btn { right: var(--badge-spacing); } .msg:hover .msg-reply-btn, .msg:hover .msg-mark-btn { opacity: var(--semi-transparent); } .msg-reply-btn:hover, .msg-mark-btn:hover { opacity: 1 !important; } .msg-mark-btn.marked { opacity: 1 !important; color: var(--warning); } /* Markierte Nachrichten */ .msg.marked { border-left: 3px solid var(--warning); } /* Reply Quote in User Bubble */ .reply-quote { border-left: 3px solid var(--secondary); padding: var(--badge-padding); padding-left: var(--box-spacing); margin-bottom: var(--box-spacing); white-space: normal; } .reply-quote-meta { font-size: var(--font-size); margin-bottom: .2em; color: var(--secondary); } .reply-quote-text { font-size: var(--font-size); } /* Reply Preview */ .reply-preview { padding: var(--box-padding); padding-bottom: 0; } .reply-preview:not([hidden]) { display: flex; } .reply-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); border-left: 3px solid var(--primary); overflow: hidden; flex: 1; } .reply-icon { flex-shrink: 0; color: var(--primary); } .reply-meta { flex-shrink: 0; font-weight: bold; font-size: var(--font-size); } .reply-text { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; opacity: var(--semi-transparent); } /* 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: var(--font-size); white-space: nowrap; vertical-align: baseline; transition: background var(--transition-duration), border-color var(--transition-duration); } .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: rgb(from var(--f1-bg) r g b / var(--semi-transparent)); 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-body { padding: var(--page-padding); overflow-y: auto; flex: 1; display: flex; flex-direction: column; gap: var(--box-spacing); } .sp-block { border: var(--border-width) solid var(--f2-border); border-radius: var(--border-radius); } .sp-block-label { display: flex; align-items: center; gap: var(--badge-spacing); padding: var(--box-padding); background: rgb(from var(--f1-bg) r g b / var(--semi-transparent)); border-bottom: var(--border-width) solid var(--f1-border); font-size: var(--font-size); border-radius: var(--border-radius) var(--border-radius) 0 0; } .sp-block-content { background: rgb(from var(--f3-bg) r g b / var(--semi-transparent)); padding: var(--box-padding); border-radius: 0 0 var(--border-radius) var(--border-radius); } .sp-loading { text-align: center; opacity: var(--semi-transparent); padding: 2em; } /* Command Output Modal */ .cmd-output-modal { max-width: 800px; } .cmd-output-meta { display: flex; align-items: center; gap: var(--badge-spacing); padding-bottom: var(--box-spacing); border-bottom: var(--border-width) solid var(--f1-border); margin-bottom: var(--box-spacing); flex-wrap: wrap; } .cmd-output-meta code { flex: 1; font-family: var(--mono); font-size: var(--mono-size); opacity: var(--semi-transparent); } .cmd-exit-code { padding: var(--badge-padding); border-radius: var(--border-radius); font-size: var(--font-size); background: var(--f3-bg); border: var(--border-width) solid var(--f3-border); white-space: nowrap; } .cmd-exit-error { color: var(--dangerous); border-color: var(--dangerous); } .cmd-output-content { font-family: var(--mono); font-size: var(--mono-size); white-space: pre-wrap; word-break: break-word; margin: 0; max-height: 60vh; overflow: auto; } /* Krea Image Refs in Assistant Bubbles */ .krea-gallery { display: flex; flex-wrap: wrap; gap: var(--badge-spacing); margin: var(--box-spacing) 0; } .krea-ref { display: inline-block; cursor: pointer; border: var(--border-width) solid var(--f2-border); border-radius: var(--border-radius); overflow: hidden; vertical-align: middle; min-width: 240px; height: 240px; background: var(--f1-bg); } .krea-ref:hover { border-color: var(--primary); } .krea-thumb { display: block; width: 100%; height: 100%; object-fit: contain; } /* Krea Image Modal */ .krea-modal { max-width: 90vw; max-height: 90vh; } .krea-modal-body { display: flex; align-items: center; justify-content: center; padding: var(--box-spacing); } .krea-modal-image { max-width: 100%; max-height: 75vh; object-fit: contain; border-radius: var(--border-radius); }