* { margin: 0; padding: 0; box-sizing: border-box; } body { background: var(--f2-bg); color: var(--text); height: 100vh; } body, input, select, button, textarea { font-family: monospace; font-size: 1em; line-height: 1.5; color: var(--text); } input, textarea, select { padding: var(--s2); } h1, h2, h3, h4, h5 { font-size: 1em; } textarea, p { line-height: 1.5; } button, select, input, textarea { border: var(--border-width) solid var(--f3-border); background: var(--f3-bg); outline: none; } button:hover, select:hover, input:hover, textarea:hover { border-color: var(--primary); } button { cursor: pointer; line-height: 1.25; padding: var(--s2) var(--s3); } textarea { height: 8em; min-height: 8em; } .toggle { display: flex; align-items: center; gap: var(--s2); margin-left: auto; } .toggle label { cursor: pointer; } .session-rename { background: var(--f2-bg); border: var(--border-width) solid var(--f2-border); outline: none; } /* ── Header ── */ header { padding: var(--s4) calc(var(--s4) * 2); border-bottom: var(--border-width) solid var(--f1-border); display: flex; align-items: center; gap: var(--s4); flex-shrink: 0; } /* ── System Prompt ── */ #systemPrompt { display: none; width: calc(100% - calc(var(--s4) * 2)); margin: var(--s4); padding: var(--s4); } #systemPrompt.visible { display: block; } /* ── Meta Bar ── */ .meta-bar { padding: var(--s2); background: var(--f1-bg); border-bottom: var(--border-width) solid var(--f1-border); flex-shrink: 0; min-height: 2.5em; } /* ── Chat ── */ #chat { flex: 1; overflow-y: auto; padding: var(--s4); display: flex; flex-direction: column; gap: var(--s4); } .msg { padding: var(--s3) var(--s4); 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; border: var(--border-width) solid var(--f2-border); text-align: center; padding: var(--s2); } /* ── Cursor ── */ .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 Boxes ── */ .tool-box { align-self: center; padding: var(--s2); background: var(--f3-bg); border: var(--border-width) solid var(--f3-border); } /* ── Input Area ── */ .input-area { border-top: var(--border-width) solid var(--f1-border); display: flex; flex-shrink: 0; gap: var(--s4); padding: var(--s4); } .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: var(--s4); } .archived { opacity: 0.6; } .archive-load-btn { display: block; margin-inline: auto; }