@import "./theme.css"; .app { display: grid; grid-template-columns: var(--rail-w) 1fr; height: 100%; overflow: hidden; } /* —— left rail (DSH-like) —— */ .rail { display: flex; flex-direction: column; gap: 12px; padding: 14px 12px; background: var(--bg-elev); border-right: 1px solid var(--border); } .brand { display: flex; align-items: center; gap: 10px; padding: 4px 6px; } .brand-mark { width: 28px; height: 28px; border-radius: 8px; background: linear-gradient(145deg, var(--brand), var(--brand-dim)); box-shadow: inset 0 0 0 1px rgba(169, 217, 215, 0.25); display: grid; place-items: center; color: var(--accent-text); font-weight: 700; font-size: 13px; } .brand-name { font-weight: 650; letter-spacing: 0.02em; } .brand-sub { color: var(--text-faint); font-size: 11px; } .btn-new { display: flex; align-items: center; justify-content: center; gap: 8px; height: 40px; border-radius: var(--radius-sm); background: var(--brand); color: #fff; font-weight: 600; transition: background 0.15s ease; } .btn-new:hover { background: #2f94ab; } .rail-sec { display: flex; align-items: center; justify-content: space-between; padding: 4px 6px 0; color: var(--text-faint); font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em; } .sess-search { width: 100%; height: 34px; padding: 0 10px; border-radius: var(--radius-sm); border: 1px solid var(--border); background: var(--bg); outline: none; } .sess-search:focus { border-color: var(--brand); } .sessions { flex: 1; overflow: auto; display: flex; flex-direction: column; gap: 4px; padding-right: 2px; } .sess { text-align: left; padding: 10px 10px; border-radius: var(--radius-sm); color: var(--text-muted); border: 1px solid transparent; } .sess:hover { background: var(--bg-hover); color: var(--text); } .sess.active { background: var(--bg-card); border-color: var(--border-strong); color: var(--text); } .sess-title { font-weight: 550; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .sess-meta { font-size: 11px; color: var(--text-faint); margin-top: 2px; } .rail-foot { display: flex; flex-direction: column; gap: 6px; padding-top: 8px; border-top: 1px solid var(--border); } .workspace { padding: 8px 10px; border-radius: var(--radius-sm); background: var(--bg); border: 1px solid var(--border); color: var(--text-muted); font-size: 12px; font-family: var(--mono); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .rail-actions { display: flex; gap: 6px; } .icon-btn { flex: 1; height: 34px; border-radius: var(--radius-sm); border: 1px solid var(--border); color: var(--text-muted); } .icon-btn:hover { background: var(--bg-hover); color: var(--text); } /* —— main column —— */ .main { display: flex; flex-direction: column; min-width: 0; background: var(--bg); } .topbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px var(--pad); border-bottom: 1px solid var(--border); } .topbar h1 { margin: 0; font-size: 15px; font-weight: 600; } .chips { display: flex; gap: 8px; flex-wrap: wrap; } .chip { height: 28px; padding: 0 10px; border-radius: 999px; border: 1px solid var(--border); background: var(--bg-elev); color: var(--text-muted); font-size: 12px; display: inline-flex; align-items: center; gap: 6px; } .chip strong { color: var(--text); font-weight: 550; } .chip.ok { border-color: rgba(61, 154, 106, 0.35); color: var(--ok); } .transcript { flex: 1; overflow: auto; padding: 20px var(--pad) 8px; display: flex; flex-direction: column; gap: 14px; } .empty { margin: auto; max-width: 420px; text-align: center; color: var(--text-muted); } .empty h2 { margin: 0 0 8px; color: var(--text); font-weight: 600; font-size: 20px; } .empty p { margin: 0; color: var(--text-faint); } .msg { max-width: 820px; width: 100%; margin: 0 auto; display: flex; flex-direction: column; gap: 6px; } .msg.user { align-items: flex-end; } .msg-role { font-size: 11px; color: var(--text-faint); letter-spacing: 0.04em; text-transform: uppercase; } .bubble { padding: 12px 14px; border-radius: var(--radius); background: var(--bg-card); border: 1px solid var(--border); box-shadow: var(--shadow); white-space: pre-wrap; word-break: break-word; } .msg.user .bubble { background: linear-gradient(160deg, var(--brand-dim), #1a4a56); border-color: transparent; } .msg.assistant .bubble { background: var(--bg-elev); } .thought, .tool-card { max-width: 820px; width: 100%; margin: 0 auto; border-radius: var(--radius); border: 1px solid var(--border); background: var(--bg-elev); overflow: hidden; } .thought summary, .tool-head { list-style: none; cursor: pointer; padding: 10px 12px; color: var(--text-muted); font-size: 12px; display: flex; align-items: center; gap: 8px; } .thought summary::-webkit-details-marker { display: none; } .thought[open] summary { border-bottom: 1px solid var(--border); } .thought-body, .tool-body { padding: 10px 12px; font-family: var(--mono); font-size: 12px; color: var(--text-muted); white-space: pre-wrap; } .tool-head .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--crab); } .tool-head .name { color: var(--text); font-weight: 550; } .tool-head .status { margin-left: auto; color: var(--text-faint); } .composer-wrap { padding: 10px var(--pad) 16px; } .composer { max-width: 820px; margin: 0 auto; border: 1px solid var(--border-strong); background: var(--bg-card); border-radius: 16px; padding: 10px 12px 8px; box-shadow: var(--shadow); display: flex; flex-direction: column; gap: 8px; } .composer textarea { width: 100%; min-height: 56px; max-height: 200px; resize: none; border: none; outline: none; background: transparent; padding: 4px 2px; } .composer-bar { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .composer-left { display: flex; gap: 6px; flex-wrap: wrap; } .send { height: 34px; min-width: 72px; padding: 0 14px; border-radius: 999px; background: var(--crab); color: #1a100c; font-weight: 650; } .send:disabled { opacity: 0.45; cursor: default; } .send.stop { background: var(--danger); color: #fff; } .consent { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.55); display: grid; place-items: center; z-index: 40; } .consent-card { width: min(480px, calc(100% - 32px)); background: var(--bg-card); border: 1px solid var(--border-strong); border-radius: var(--radius); padding: 18px; box-shadow: var(--shadow); } .consent-card h3 { margin: 0 0 8px; } .consent-card pre { margin: 0 0 14px; padding: 10px; background: var(--bg); border-radius: var(--radius-sm); font-family: var(--mono); font-size: 12px; color: var(--text-muted); max-height: 180px; overflow: auto; } .consent-actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; } .consent-actions button { height: 34px; padding: 0 12px; border-radius: var(--radius-sm); border: 1px solid var(--border); } .consent-actions .primary { background: var(--brand); border-color: transparent; color: #fff; } @media (max-width: 880px) { .app { grid-template-columns: 1fr; } .rail { display: none; } }