* { margin: 0; padding: 0; box-sizing: border-box; } body { background: #222; color: #eee; display: flex; flex-direction: column; height: 100vh; } #app { flex: 1; display: flex; flex-direction: column; overflow: hidden; } .page { flex: 1; display: flex; flex-direction: column; overflow: hidden; } /* ── Nav ── */ #nav { padding: .75em 1.5em; border-bottom: 1px solid #444; display: flex; align-items: center; gap: 2em; flex-shrink: 0; } .nav-brand { font-weight: bold; font-size: 1.1em; } .nav-links { display: flex; gap: 1em; } .nav-link { color: #888; text-decoration: none; padding: .25em .5em; } .nav-link:hover { color: #eee; } .nav-link.active { color: #eee; border-bottom: 2px solid #eee; } body, input, select, button, textarea { font-family: monospace; font-size: 1em; line-height: 1.5; color: #eee; } button, select, textarea { padding: .5em; 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; } 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; } header h1 { font-size: 1em; } /* ── System Promp ── */ #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 Button ── */ .archive-load-btn { display: block; margin-inline: auto; } /* ── Dashboard ── */ .dashboard { padding: 2em; overflow-y: auto; } .dashboard section { margin-bottom: 2em; } .section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1em; } .section-header h2 { font-size: 1.1em; } .card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1em; } .card { background: #333; border: 1px solid #444; padding: 1em; display: flex; flex-direction: column; gap: .5em; } .card.clickable { cursor: pointer; } .card.clickable:hover { border-color: #888; } .card-icon { font-size: 2em; } .card-title { font-weight: bold; } .card-sub { color: #888; font-size: 0.85em; } .card.placeholder { border-style: dashed; color: #666; } /* ── Session Page ── */ .session-page { display: flex; flex-direction: column; } .session-header { padding: .75em 1.5em; border-bottom: 1px solid #444; display: flex; align-items: center; gap: 1em; flex-shrink: 0; } .session-header h1 { font-size: 1em; } .back-btn { background: none; border: none; font-size: 1.2em; padding: .25em .5em; } .header-btn { font-size: 0.85em; } .editable-title { cursor: pointer; } .editable-title:hover { text-decoration: underline; text-decoration-style: dotted; } /* ── Placeholder Pages ── */ .placeholder-page { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1em; color: #888; } .placeholder-icon { font-size: 4em; }