* { margin: 0; padding: 0; box-sizing: border-box; } body { background: #222; color: #eee; height: 100vh; } body, input, select, button, textarea { padding: .5em; font-family: monospace; font-size: 1em; line-height: 1.5; color: #eee; } h1, h2, h3, h4, h5 { font-size: 1em; } button, select, textarea { border: 1px solid #444; background: #333; outline: none; } button:hover, select:hover, input:hover, textarea:hover { border-color: #666; } button { cursor: pointer; line-height: 1.25; padding: .5em .75em; } textarea { height: 8em; min-height: 8em; } .toggle { display: flex; align-items: center; gap: .5em; margin-left: auto; } .toggle label { cursor: pointer; } .session-rename { background: #222; border: 1px solid #888; outline: none; } /* ── Header ── */ header { padding: 1em 2em; border-bottom: 1px solid #444; display: flex; align-items: center; gap: 1em; flex-shrink: 0; } /* ── System Prompt ── */ #systemPrompt { display: none; width: calc(100% - 2em); margin: 1em; padding: 1em; } #systemPrompt.visible { display: block; } /* ── Meta Bar ── */ .meta-bar { padding: .5em; background: #111; border-bottom: 1px solid #333; flex-shrink: 0; min-height: 2.5em; } /* ── Chat ── */ #chat { flex: 1; overflow-y: auto; padding: 1em; display: flex; flex-direction: column; gap: 1em; } .msg { max-width: 85%; padding: 1em; white-space: pre-wrap; word-break: break-word; } .msg.user { align-self: flex-end; background: #333; border: 1px solid #444; } .msg.assistant { align-self: flex-start; background: #111; border: 1px solid #333; } .msg.system-info { align-self: center; border: 1px solid #444; text-align: center; } /* ── Cursor ── */ .msg .cursor { display: inline-block; width: .125em; height: 1em; background: #fff; animation: blink 0.8s infinite; vertical-align: text-bottom; margin-left: .125em; } @keyframes blink { 0%, 50% { opacity: 1; } 51%, 100% { opacity: 0; } } /* ── Tool Boxes ── */ .tool-box { align-self: center; padding: .5em; background: #333; border: 1px solid #444; } /* ── Input Area ── */ .input-area { border-top: 1px solid #333; display: flex; flex-shrink: 0; gap: 1em; padding: 1em; } .input-area textarea { flex: 1; } .input-area button { align-self: flex-end; } .input-area button:disabled { opacity: 0.5; cursor: not-allowed; } /* ── Archive ── */ .archive-container { display: flex; flex-direction: column; gap: 1em; } .archived { opacity: 0.6; } .archive-load-btn { display: block; margin-inline: auto; }