/* ontology_chat.css — Ontology 神经系统对话页。深色基调与 system_flow 一致。 */
* { box-sizing: border-box; margin: 0; padding: 0; }
body { background:#0b1020; color:#cdd6ff; font:13px/1.6 -apple-system,"PingFang SC","Microsoft YaHei",sans-serif; height:100vh; display:flex; flex-direction:column; overflow:hidden; }

#topbar { display:flex; align-items:center; gap:14px; padding:10px 18px; border-bottom:1px solid #1d2747; background:#0e1530; flex-wrap:wrap; }
.brand h1 { font-size:16px; display:inline; }
.brand .sub { color:#7e8cc0; font-size:11px; margin-left:10px; }
.beat { margin-left:auto; font-size:11px; color:#8b97c9; border:1px solid #2a3566; border-radius:12px; padding:2px 10px; }
.beat.ok { color:#4ade80; border-color:rgba(74,222,128,.4); }
.beat.warn { color:#fbbf24; border-color:rgba(251,191,36,.4); }
.ghost-link { color:#7c8cff; text-decoration:none; font-size:12px; }
.ghost-link:hover { text-decoration:underline; }

#layout { flex:1; display:flex; min-height:0; }
.side { width:230px; flex:none; border-right:1px solid #1d2747; padding:14px; overflow:auto; }
.side-title { font-size:11px; color:#8b97c9; text-transform:uppercase; letter-spacing:.05em; margin-bottom:8px; }
.side-note { font-size:11px; color:#5b668f; line-height:1.7; margin-bottom:8px; }
.side-foot { margin-top:18px; padding-top:10px; border-top:1px solid #1d2747; font-size:10.5px; color:#5b668f; }
.chips { display:flex; flex-direction:column; gap:6px; }
.chip { text-align:left; background:#0b1020; border:1px solid #2a3566; border-radius:8px; padding:6px 10px; font-size:12px; color:#9fb0e8; cursor:pointer; }
.chip:hover { border-color:#3a4a82; color:#cdd6ff; }

.chat-col { flex:1; display:flex; flex-direction:column; min-width:0; }
.chat { flex:1; overflow-y:auto; padding:18px 22px; }
.welcome { text-align:center; padding:30px 0 10px; }
.w-title { font-size:15px; color:#e6ebff; margin-bottom:6px; }
.w-desc { font-size:12px; color:#7e8cc0; margin-bottom:14px; }
.welcome .chips { flex-direction:row; flex-wrap:wrap; justify-content:center; }

.msg { margin-bottom:14px; max-width:88%; }
.msg.user { margin-left:auto; }
.msg.user .bubble { background:#1a2444; border:1px solid #2a3566; }
.msg.assistant .bubble { background:#0e1530; border:1px solid #1d2747; }
.bubble { border-radius:10px; padding:10px 13px; }
.msg .who { font-size:10.5px; color:#5b668f; margin-bottom:4px; display:flex; align-items:center; gap:6px; }
.msg .who .intent { color:#7c8cff; border:1px solid #2a3566; border-radius:4px; padding:0 6px; font-size:10px; }
.msg .who .dot { width:7px; height:7px; border-radius:50%; display:inline-block; }
.bubble pre { white-space:pre-wrap; word-break:break-word; font:12px/1.75 ui-monospace,Menlo,monospace; color:#cdd6ff; margin:0; font-family:inherit; }
.msg .entities { margin-top:8px; display:flex; flex-wrap:wrap; gap:5px; }
.ent-tag { font-size:10.5px; color:#9fb0e8; border:1px solid #2a3566; border-radius:5px; padding:1px 7px; cursor:pointer; }
.ent-tag:hover { color:#cdd6ff; border-color:#3a4a82; }
.msg .nerv-eff { margin-top:8px; display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.eff-btn { background:#12305a; border:1px solid #2f6fd6; color:#9fd0ff; border-radius:6px; padding:3px 10px; font-size:11.5px; cursor:pointer; }
.eff-btn:hover { background:#1a4a8f; border-color:#5b9cff; color:#fff; }
.eff-btn.confirm-mode { border-color:#f87171; color:#f87171; background:rgba(248,113,113,.08); }
.eff-hint { font-size:10px; color:#5b668f; }
.msg .exec-result { margin-top:8px; background:#0b1020; border:1px solid #1d2747; border-radius:8px; padding:9px 11px; max-height:300px; overflow:auto; }
.msg .exec-result pre { white-space:pre-wrap; word-break:break-word; font:11.5px/1.7 ui-monospace,Menlo,monospace; color:#cdd6ff; font-family:inherit; }
.msg .exec-head { font-size:11px; margin-bottom:4px; color:#9fb0e8; }
.msg .exec-head.ok { color:#4ade80; } .msg .exec-head.warn { color:#fbbf24; } .msg .exec-head.bad { color:#f87171; }
.write-warn { margin-top:8px; padding:7px 10px; border:1px solid #f87171; border-radius:6px; background:rgba(248,113,113,.08); font-size:11.5px; color:#f87171; }
.write-cb { display:flex; align-items:center; gap:6px; margin-top:6px; color:#cdd6ff; font-size:11.5px; cursor:pointer; }
.msg .typing { color:#7e8cc0; font-size:12px; }
.msg .typing::after { content:"▌"; animation:blink 1s infinite; }
@keyframes blink { 50% { opacity:0; } }

.composer { display:flex; gap:8px; padding:12px 22px; border-top:1px solid #1d2747; background:#0e1530; }
.composer textarea { flex:1; background:#0b1020; border:1px solid #2a3566; color:#cdd6ff; border-radius:8px; padding:8px 12px; font-size:12.5px; font-family:inherit; resize:none; outline:none; max-height:120px; }
.composer textarea:focus { border-color:#3a4a82; }
.send-btn { background:#12305a; border:1px solid #2f6fd6; color:#9fd0ff; border-radius:8px; padding:0 18px; font-size:12.5px; cursor:pointer; }
.send-btn:hover { background:#1a4a8f; color:#fff; }
.send-btn:disabled { opacity:.5; cursor:default; }

/* UiRender 内核主题变量（映射到本页调色板） */
.chat, .bubble {
  --accent:#7c8cff; --bg-card:#111a3a; --bg-elevated:#0b1020; --bg-input:#0b1020;
  --border:#2a3566; --border-light:#1d2747; --fail:#f87171;
  --font-mono:ui-monospace,Menlo,monospace; --radius:8px; --radius-lg:12px; --radius-md:6px;
  --success:#4ade80; --text-muted:#8b97c9; --text-primary:#cdd6ff; --text-secondary:#9aa6d8;
}
[data-uiform] { background:#0b1020; border:1px solid #2a3566; border-radius:8px; padding:10px 12px; margin-top:8px; }
[data-uiform] label { display:block; font-size:11.5px; color:#9fb0e8; margin:7px 0 3px; }
[data-uiform] input[type=text], [data-uiform] input[type=number], [data-uiform] textarea,
[data-uiform] select { width:100%; background:#0b1020; border:1px solid #2a3566; color:#cdd6ff; border-radius:6px; padding:5px 9px; font-size:12px; outline:none; }
[data-uiform] .btn { background:#12305a; border:1px solid #2f6fd6; color:#9fd0ff; border-radius:6px; padding:4px 12px; font-size:11.5px; cursor:pointer; }
[data-uiform] .btn:hover { background:#1a4a8f; color:#fff; }
[data-uiform] .desc, [data-uiform] .gray { color:#5b668f; font-size:10.5px; }
[data-uiform] .req { color:#f87171; }

/* ── 会话历史（左栏）────────────────────────────────────────────── */
.side-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.new-sess-btn { background:#12305a; border:1px solid #2f6fd6; color:#9fd0ff; border-radius:6px; padding:2px 8px; font-size:11px; cursor:pointer; }
.new-sess-btn:hover { background:#1a4a8f; color:#fff; }
.sess-list { display:flex; flex-direction:column; gap:4px; }
.sess-item { display:flex; align-items:center; gap:6px; background:#0b1020; border:1px solid #1d2747; border-radius:7px; padding:6px 9px; cursor:pointer; }
.sess-item:hover { border-color:#3a4a82; }
.sess-item.active { border-color:#7c8cff; }
.sess-main { flex:1; min-width:0; }
.sess-title { font-size:12px; color:#cdd6ff; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sess-time { font-size:10px; color:#5b668f; }
.sess-del { background:none; border:none; color:#3a4a82; font-size:11px; cursor:pointer; flex:none; }
.sess-del:hover { color:#f87171; }
.sess-empty { color:#5b668f; font-size:11px; }
