.ctx { height: 100%; display: flex; flex-direction: column; }
.ctx-tabs { flex: none; padding: 0 8px; }
.ctx-tabs .tab { padding: 0 9px; }
.ctx-tabs .badge { margin-left: 2px; height: 16px; min-width: 16px; font-size: 10px; }
.ctx-scroll { flex: 1; min-height: 0; overflow: auto; }

/* brief */
.bt { padding: 14px 16px 28px; }
.bt-card { padding: 14px; border-radius: var(--r-lg); background: var(--surface-2); border: 1px solid var(--line); }
.bt-purpose { font-size: 14.5px; line-height: 1.7; color: var(--ink); font-weight: 500; }
.bt-grid { display: grid; grid-template-columns: auto 1fr; gap: 6px 10px; margin-top: 10px; font-size: var(--fs-13); color: var(--ink-2); }
.bt-k { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-12); color: var(--ink-3); font-weight: 500; white-space: nowrap; }
.bt-km { display: flex; flex-direction: column; gap: 6px; }
.bt-km li { display: flex; align-items: center; gap: 8px; font-size: var(--fs-13); padding: 7px 8px; border-radius: var(--r-sm); background: var(--surface); border: 1px solid var(--line-soft); }
.bt-n { width: 18px; height: 18px; border-radius: 5px; background: var(--paper-3); color: var(--ink-2); font-size: 10.5px; font-weight: 500; display: grid; place-items: center; flex: none; }
.bt-form { margin-top: 14px; }
.bt-f { display: flex; align-items: flex-start; gap: 10px; padding: 5px 0; border-bottom: 1px solid var(--line-soft); }
.bt-f > span:first-child { width: 72px; flex: none; padding-top: 8px; font-size: var(--fs-12); font-weight: 600; color: var(--ink-3); }
.bt-f .textarea { min-height: 0; }
.bt-chips { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; padding: 5px 0; flex: 1; }
.bt-chips .chip button { display: inline-flex; color: var(--ink-4); margin-left: 2px; }
.bt-chips .chip button:hover { color: var(--bad); }
.bt-chip-in { border: 0; background: transparent; font-size: var(--fs-12); width: 70px; padding: 4px; }
.bt-pbq { margin-top: 16px; padding: 12px; border-radius: var(--r-md); background: var(--paper); border: 1px solid var(--line); }
.bt-pbq .bt-f { border-bottom-color: var(--line); }

/* sources */
.sh, .sd { padding: 12px 14px 28px; }
.sh-search { display: flex; align-items: center; gap: 8px; height: 36px; padding: 0 4px 0 10px; border: 1px solid transparent; border-radius: var(--r-md); color: var(--ink-4); background: var(--paper-2); }
.sh-search:focus-within { border-color: var(--accent-2); background: var(--surface); box-shadow: 0 0 0 3px var(--accent-soft-2); }
.sh-search input { border: 0; background: transparent; font-size: var(--fs-13); color: var(--ink); }
.sh-group { margin-top: 16px; display: flex; flex-direction: column; gap: 2px; }
.sh-group > .row:first-child, .sh-group > .label { margin-bottom: 4px; padding: 0 4px; }
.sh-group.sugg { padding: 10px 6px 6px; border-radius: var(--r-md); background: var(--surface-2); border: 1px dashed var(--line-2); }
.sh-row { display: flex; align-items: center; gap: 10px; width: 100%; padding: 7px 6px; border-radius: var(--r-sm); text-align: left; }
.sh-row:hover { background: var(--paper); }
.sh-row.res button.grow { text-align: left; min-width: 0; }
.sd-reqs { display: flex; flex-direction: column; gap: 6px; padding: 10px; border-radius: var(--r-md); background: var(--surface-2); }
.req-dot { width: 8px; height: 8px; border-radius: 2px; flex: none; display: inline-block; }
.req-dot.met { background: var(--ok); }
.req-dot.partial { background: #d9a85a; }
.req-dot.missing { background: var(--bad); }
.req-dot.na { background: var(--ink-4); }
.psg { padding: 10px 12px; border-radius: 12px; border: 1px solid var(--line); margin-bottom: 8px; transition: all var(--t-med) var(--ease); }
.psg.on { border-color: var(--accent-2); box-shadow: 0 0 0 3px var(--accent-soft-2); }
.psg-text { margin-top: 6px; font-size: 13.5px; line-height: 1.75; }
.psg-text.locked { font-family: var(--font-ui); font-size: var(--fs-13); color: var(--ink-3); display: flex; align-items: center; gap: 6px; }
.psg-actions { opacity: 0.85; }

/* review stream */
.rv { display: flex; flex-direction: column; min-height: 100%; }
.rv-bar { position: sticky; top: 0; z-index: 2; padding: 12px 14px 10px; background: var(--surface); border-bottom: 1px solid var(--line-soft); }
.rv-bar .chip .faint { margin-left: 2px; font-weight: 500; }
.rv-bar .chip.on .faint { color: var(--accent-ink); opacity: 0.7; }
.rv-list { flex: 1; padding: 10px 12px; display: flex; flex-direction: column; gap: 8px; }
.rv-add { position: sticky; bottom: 0; display: flex; gap: 6px; padding: 10px 12px; background: var(--surface); border-top: 1px solid var(--line-soft); }
.ri { padding: 12px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface); cursor: pointer; transition: border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease); }
.ri:hover { border-color: var(--line-2); }
.ri.on { border-color: var(--accent-2); box-shadow: 0 0 0 3px var(--accent-soft-2); }
.ri.accepted, .ri.dismissed, .ri.resolved { opacity: 0.7; }
.ri-top { display: flex; align-items: center; gap: 6px; }
.ri-kind { width: 20px; height: 20px; border-radius: 6px; display: grid; place-items: center; background: var(--paper-2); color: var(--ink-2); }
.ri-kind.suggestion { background: var(--ok-soft); color: var(--ok); }
.ri-kind.finding { background: var(--paper-2); color: var(--ink-2); }
.ri-kind.comment { background: var(--hl); color: #8a6d1f; }
.ri-kind.question { background: var(--stale-soft); color: var(--stale); }
.ri-title { margin-top: 6px; font-size: var(--fs-13); font-weight: 600; line-height: 1.5; }
.ri-quote { margin-top: 4px; font-size: 13px; color: var(--ink-2); }
.ri-body { margin-top: 4px; font-size: var(--fs-12); color: var(--ink-3); line-height: 1.6; }
.ri-detached { margin-top: 4px; font-size: var(--fs-12); color: var(--warn); display: flex; align-items: center; gap: 4px; }
.ri-foot { display: flex; align-items: center; gap: 6px; margin-top: 8px; flex-wrap: wrap; }
.origin { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-11); color: var(--ink-3); }
.origin b { color: var(--ink-2); }
.diff { margin-top: 8px; padding: 7px 10px; border-radius: var(--r-sm); background: var(--paper-2); font-size: 13px; line-height: 1.7; }
.diff del { margin-right: 4px; }
.thread { margin-top: 8px; display: flex; flex-direction: column; gap: 8px; padding-left: 8px; border-left: 2px solid var(--line); }
.msg { display: flex; gap: 8px; }
.reply { display: flex; gap: 6px; margin-top: 8px; }
.reply .input { height: 28px; }

/* assistant */
.as { display: flex; flex-direction: column; height: 100%; }
.as-scope { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 14px; border-bottom: 1px solid var(--line-soft); }
.as-scope .chip { height: 22px; }
.as-thread { flex: 1; min-height: 0; overflow: auto; padding: 14px; display: flex; flex-direction: column; gap: 14px; }
.as-empty { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
.as-hello { display: flex; align-items: center; gap: 8px; font-size: var(--fs-13); color: var(--ink-3); margin-bottom: 6px; }
.as-starter { text-align: left; padding: 9px 12px; border-radius: var(--r-md); border: 1px solid var(--line); font-size: var(--fs-13); color: var(--ink-2); }
.as-starter:hover { border-color: var(--ai-soft-2); color: var(--ink); background: var(--ai-soft); }
.as-msg { display: flex; flex-direction: column; gap: 4px; }
.as-msg.user { align-items: flex-end; }
.as-bubble { max-width: 88%; padding: 8px 12px; border-radius: 14px 14px 4px 14px; background: var(--paper-2); color: var(--ink); font-size: var(--fs-13); line-height: 1.6; }
.as-answer { font-size: var(--fs-14); line-height: 1.8; color: var(--ink); }
.as-answer .cite { font-size: 10px; }
.as-tools { display: flex; gap: 2px; margin-left: -6px; }
.as-note { padding: 12px; border-radius: 12px; border: 1px solid var(--ai-soft-2); background: var(--ai-soft); }
.as-note > .row .icon { color: var(--ai); }
.as-points { display: flex; flex-direction: column; gap: 10px; font-size: var(--fs-13); line-height: 1.6; }
.as-points li { display: flex; flex-direction: column; gap: 4px; }
.as-src { display: flex; align-items: center; gap: 6px; font-size: var(--fs-11); color: var(--ink-3); }
.as-compose { flex: none; padding: 10px 12px 12px; border-top: 1px solid var(--line-soft); display: flex; flex-direction: column; gap: 8px; }
.as-inputrow { display: flex; align-items: flex-end; gap: 6px; padding: 6px 6px 6px 10px; border: 1px solid var(--line-2); border-radius: 12px; }
.as-inputrow:focus-within { border-color: var(--ai); box-shadow: 0 0 0 3px var(--ai-soft-2); }
.as-input { flex: 1; border: 0; resize: none; font-size: var(--fs-13); line-height: 1.6; background: transparent; }
.caret { display: inline-block; width: 2px; height: 1em; background: var(--ai); vertical-align: -2px; margin-left: 2px; animation: pulse 0.9s infinite; }

/* history */
.hi { padding: 14px 16px 28px; }
.hi-versions { margin-top: 8px; position: relative; }
.hi-versions::before { content: ""; position: absolute; left: 5px; top: 10px; bottom: 10px; width: 1px; background: var(--line-2); }
.hi-v { display: flex; gap: 12px; align-items: flex-start; padding: 8px 0; position: relative; }
.hi-dot { width: 11px; height: 11px; border-radius: 50%; background: var(--surface); border: 2px solid var(--line-2); margin-top: 4px; flex: none; position: relative; z-index: 1; }
.hi-v.named .hi-dot { border-color: var(--accent); }
.hi-v.cur .hi-dot { background: var(--accent); border-color: var(--accent); }
.hi-prov { padding: 10px; border-radius: var(--r-md); background: var(--surface-2); }
.hi-bar { display: flex; height: 8px; border-radius: 4px; overflow: hidden; background: var(--paper-3); }
.hi-bar i, .lg { display: block; }
.hi-bar .p, .lg.p { background: var(--ink-2); }
.hi-bar .a, .lg.a { background: var(--ai); }
.hi-bar .g, .lg.g { background: var(--ink-4); }
.lg { width: 8px; height: 8px; border-radius: 2px; }
.hi-var, .hi-dl { display: flex; align-items: center; gap: 8px; padding: 7px 8px; border-radius: var(--r-sm); font-size: var(--fs-13); }
.hi-var:hover { background: var(--paper); }
.hi-act { display: flex; flex-direction: column; gap: 8px; }
.hi-act li { display: flex; align-items: flex-start; gap: 8px; }

/* dialogs */
.share-row { padding: 8px 0; border-bottom: 1px solid var(--line-soft); }
.rr-route { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-radius: var(--r-md); background: var(--paper); }
.rr-people { display: flex; flex-wrap: wrap; gap: 6px; }
.rr-person { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 10px 0 6px; border-radius: var(--r-full); border: 1px solid var(--line); font-size: var(--fs-13); cursor: pointer; }
.rr-person input { display: none; }
.rr-person.on { border-color: var(--accent); background: var(--accent-soft); color: var(--accent-ink); }
.rr-ready { padding: 12px; border-radius: var(--r-md); border: 1px solid var(--line); }
.cmp-grid { display: grid; grid-template-columns: 220px 1fr; gap: 20px; }
.cmp-sum { padding-right: 16px; border-right: 1px solid var(--line); }
.cmp-srow { padding: 4px 0; color: var(--ink-3); }
.cmp-srow.on { color: var(--ink); font-weight: 600; }
.cmp-doc { }
.cmp-h { font-size: 16px; margin: 14px 0 6px; }
.cmp-p { font-size: 15px; line-height: 1.9; }
.cmp-p del { color: var(--bad); background: var(--bad-soft); }
.cmp-p ins { color: var(--ok); background: var(--ok-soft); text-decoration: none; }
.cf-claim { font-size: 15px; font-weight: 500; margin-bottom: 14px; }
.cf-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.cf-side { padding: 14px; border-radius: var(--r-md); border: 1px solid var(--line); }
.cf-side.ok { border-color: var(--ok-soft); background: var(--ok-soft); }
.cf-side.stale { background: var(--surface-2); }
.cf-text { margin-top: 10px; font-size: 14px; line-height: 1.8; }
.cov-bar { display: flex; height: 8px; border-radius: 4px; overflow: hidden; gap: 2px; }
.cov-bar i.met { background: var(--ok); }
.cov-bar i.partial { background: #d9a85a; }
.cov-bar i.missing { background: var(--bad); }
.cov-bar i.na { background: var(--ink-4); }
.req-state { font-size: var(--fs-12); font-weight: 600; padding: 2px 8px; border-radius: var(--r-full); }
.req-state.met { color: var(--ok); background: var(--ok-soft); }
.req-state.partial { color: var(--warn); background: var(--warn-soft); }
.req-state.missing { color: var(--bad); background: var(--bad-soft); }
.req-state.na { color: var(--ink-3); background: var(--paper-2); }
.bt-chip-in:focus { background: var(--surface); border-radius: 6px; box-shadow: 0 0 0 2px var(--accent-soft-2); }
