/* Ontology v2 — AI editor, conflict inbox, edit-area modal.
   EH tokens only. One lime accent reserved as signal: it marks the *proposed*
   side of a diff and the primary action. No red/green diff coding — "current"
   is a quiet, struck-through neutral; "proposed" carries the lime. Depth from
   hairlines and surface steps, never shadow. */

/* ============================================================== EDITOR shell */
.ov2-editor {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.ov2-ed-head {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 16px 18px 14px;
  border-bottom: 1px solid var(--border-faint);
}
.ov2-ed-head .ed-title-row { display: flex; align-items: center; gap: 10px; }
.ov2-ed-head h2 {
  font-size: 24px;
  font-weight: 500;
  letter-spacing: -0.02em;
  line-height: 1.1;
  color: var(--text-primary);
}
.ov2-ed-head .ed-grow { flex: 1; min-width: 0; }
.ov2-ed-tags {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 14px;
  margin-top: 9px;
}
.ed-tag {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.04em;
  color: var(--text-tertiary);
  background: var(--surface-2);
  border: 1px solid var(--border-faint);
  border-radius: var(--radius-sm);
  padding: 2px 8px;
  white-space: nowrap;
}
.ed-tag.dot { display: inline-flex; align-items: center; gap: 6px; }
.ed-tag-sep {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.04em;
  color: var(--text-tertiary);
}
.ed-changes {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.04em;
  color: var(--accent-ink);
}

/* area colour dot — muted categorical marker, never a fill */
.area-dot {
  width: 9px; height: 9px; border-radius: 50%;
  flex: 0 0 auto;
  background: var(--area-color, var(--text-tertiary));
}
.area-dot.lg { width: 11px; height: 11px; }

/* ------------------------------------------------------------- split body */
.ov2-ed-body { flex: 1; min-height: 0; display: flex; }
.ov2-ed-chat {
  width: 44%;
  min-width: 360px;
  display: flex;
  flex-direction: column;
  border-right: 1px solid var(--border-faint);
  min-height: 0;
}
.ov2-ed-detail {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  min-height: 0;
  background: var(--surface-1);
}

/* --------------------------------------------------------------- AI chat */
.ed-chat-head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border-faint);
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--text-secondary);
}
.ed-chat-head .eh-signal-stroke { color: var(--accent-ink); }
.ed-chat-head { white-space: nowrap; }
.ed-chat-scroll {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 18px 16px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.ed-msg-agent {
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--text-secondary);
  max-width: 60ch;
  display: flex;
  flex-direction: column;
  gap: 9px;
}
.ed-msg-agent strong { color: var(--text-primary); font-weight: 500; }
.ed-msg-agent code {
  font-family: var(--mono);
  font-size: 0.86em;
  color: var(--accent-ink);
  background: var(--accent-soft);
  border-radius: 4px;
  padding: 1px 5px;
}
.ed-msg-agent ul, .ed-msg-agent ol { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: 6px; }
.ed-msg-agent li { padding-left: 2px; }
.ed-msg-user {
  align-self: flex-end;
  max-width: 80%;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--text-primary);
  background: var(--surface-3);
  border: 1px solid var(--border-faint);
  border-radius: var(--radius-lg);
  padding: 9px 13px;
}
.ed-tool-row {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  align-self: flex-start;
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.04em;
  color: var(--text-tertiary);
  background: var(--surface-2);
  border: 1px solid var(--border-faint);
  border-radius: var(--radius-sm);
  padding: 6px 11px;
  cursor: default;
}
.ed-note {
  border: 1px solid var(--border-soft);
  border-left: 2px solid var(--accent-ink);
  border-radius: var(--radius-md);
  background: var(--surface-2);
  padding: 11px 13px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.ed-note .nt-title {
  font-size: 12.5px;
  font-weight: 500;
  letter-spacing: -0.005em;
  color: var(--text-primary);
}
.ed-note .nt-line { font-size: 12.5px; line-height: 1.5; color: var(--text-secondary); }

.ed-composer { padding: 12px 14px 14px; border-top: 1px solid var(--border-faint); }
.ed-composer-box {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-lg);
  padding: 8px 8px 8px 14px;
  transition: border-color var(--dur-hover) var(--ease), box-shadow 0.25s var(--ease);
}
.ed-composer-box:focus-within {
  border-color: var(--accent-border);
  box-shadow: 0 0 0 3px var(--accent-soft), 0 0 24px var(--focus-glow);
}
.ed-composer-box textarea {
  flex: 1;
  border: 0;
  background: transparent;
  resize: none;
  color: var(--text-primary);
  font-family: var(--sans);
  font-size: 13.5px;
  line-height: 1.5;
  padding: 4px 0;
  max-height: 120px;
}
.ed-composer-box textarea:focus { outline: none; }
.ed-composer-box textarea::placeholder { color: var(--text-tertiary); }

/* --------------------------------------------------- detail / sections */
.ed-pending-strip {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 14px 16px 0;
  padding: 9px 13px;
  background: var(--accent-soft);
  border: 1px solid var(--accent-border);
  border-radius: var(--radius-md);
  font-size: 12.5px;
  color: var(--text-secondary);
}
.ed-pending-strip .pc-count {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--on-accent);
  background: var(--accent-ink);
  border-radius: 999px;
  min-width: 19px; height: 19px;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0 6px;
}
.ed-detail-scroll { flex: 1; min-height: 0; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; gap: 14px; }

.ed-section {
  border: 1px solid var(--border-faint);
  border-radius: var(--radius-lg);
  background: var(--canvas);
  padding: 16px 18px;
}
.ed-section.flush { background: var(--surface-2); }
.ed-sec-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 11px;
}
.ed-sec-head .eyebrow { font-size: 10.5px; }
.ed-sec-head .sec-right { margin-left: auto; }
.ed-sec-toggle {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  background: transparent;
  border: 0;
  cursor: pointer;
  text-align: left;
  color: inherit;
}
.ed-sec-toggle .chev { color: var(--text-tertiary); transition: transform var(--dur-hover) var(--ease); }
.ed-sec-toggle.collapsed .chev { transform: rotate(-90deg); }
.ed-group-label {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--text-tertiary);
  margin: 6px 2px 2px;
}
.ed-body-text { font-size: 14px; line-height: 1.6; color: var(--text-secondary); }
.ed-body-text.primary { color: var(--text-primary); }

.ed-identity { display: flex; align-items: center; gap: 10px; }
.ed-identity .id-name { font-size: 17px; font-weight: 500; letter-spacing: -0.01em; color: var(--text-primary); }

/* key/value storage grid */
.ed-kv { display: grid; grid-template-columns: max-content 1fr; gap: 8px 24px; }
.ed-kv dt { font-family: var(--mono); font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-tertiary); white-space: nowrap; }
.ed-kv dd { font-family: var(--mono); font-size: 12.5px; color: var(--text-primary); word-break: break-all; }
.ed-rawcfg {
  margin-top: 12px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--text-tertiary);
  display: inline-flex; align-items: center; gap: 6px;
  cursor: pointer;
}

/* goals / challenges rows */
.ed-charter-row {
  padding: 12px 0;
  border-top: 1px solid var(--border-faint);
}
.ed-charter-row:first-child { border-top: 0; padding-top: 4px; }
.ed-charter-row .cr-text { font-size: 13.5px; line-height: 1.55; color: var(--text-primary); }
.ed-charter-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.ed-mini-tag {
  font-family: var(--mono);
  font-size: 9.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-tertiary);
  border: 1px solid var(--border-faint);
  border-radius: var(--radius-sm);
  padding: 2px 7px;
}

/* facet block */
.ed-facet { border: 1px solid var(--border-faint); border-radius: var(--radius-lg); background: var(--surface-2); padding: 14px 16px; }
.ed-facet-head { display: flex; align-items: center; gap: 8px; }
.ed-facet-head .fc-name { font-size: 14px; font-weight: 500; letter-spacing: -0.008em; color: var(--text-primary); flex: 1; min-width: 0; }
.ed-facet-head .fc-meta { margin-left: auto; display: inline-flex; align-items: center; gap: 7px; font-size: 11.5px; color: var(--text-tertiary); white-space: nowrap; flex: 0 0 auto; }
.ed-facet-body { margin-top: 10px; }
.ed-facet-actions { display: flex; align-items: center; gap: 8px; margin-top: 12px; }
.ed-facet-actions .grow { flex: 1; }
.ed-empty-line { font-size: 12.5px; font-style: italic; color: var(--text-tertiary); }
.btn-danger {
  background: transparent;
  color: var(--error-ink);
  border-color: transparent;
}
.btn-danger:hover { background: var(--error-soft); border-color: var(--error-border); }
.ed-add-facet {
  display: flex; align-items: center; gap: 8px;
  width: 100%;
  justify-content: center;
  padding: 12px;
  border: 1px dashed var(--border-soft);
  border-radius: var(--radius-lg);
  background: transparent;
  color: var(--text-secondary);
  font-size: 13px;
  cursor: pointer;
  transition: border-color var(--dur-hover) var(--ease), color var(--dur-hover) var(--ease);
}
.ed-add-facet:hover { border-color: var(--accent-border); color: var(--accent-ink); }

/* ================================================================= DIFF card */
.ed-diff {
  border: 1px solid var(--accent-border);
  border-radius: var(--radius-lg);
  background: var(--surface-1);
  overflow: hidden;
  margin-top: 12px;
}
.ed-diff-head {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 11px 14px;
  border-bottom: 1px solid var(--border-faint);
}
.ed-diff-head .dh-icon { color: var(--accent-ink); flex: 0 0 auto; }
.ed-diff-head .dh-title { font-size: 13px; font-weight: 500; letter-spacing: -0.005em; color: var(--text-primary); }
.ed-diff-head .dh-kind { font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-tertiary); margin-top: 2px; }
.ed-diff-badge {
  margin-left: auto;
  font-family: var(--mono);
  font-size: 9.5px;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--accent-ink);
  border: 1px solid var(--accent-border);
  background: var(--accent-soft);
  border-radius: 999px;
  padding: 2px 9px;
  white-space: nowrap;
}
.ed-diff-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--border-faint); }
.ed-diff-col { background: var(--surface-1); padding: 13px 14px; }
.ed-diff-col .dc-label {
  font-family: var(--mono);
  font-size: 9.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 8px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.ed-diff-col.current .dc-label { color: var(--text-tertiary); }
.ed-diff-col.proposed .dc-label { color: var(--accent-ink); }
.ed-diff-col .dc-text { font-size: 12.5px; line-height: 1.55; }
.ed-diff-col.current .dc-text { color: var(--text-tertiary); text-decoration: line-through; text-decoration-color: var(--border-strong); }
.ed-diff-col.current.empty .dc-text { font-style: italic; text-decoration: none; }
.ed-diff-col.proposed { border-left: 2px solid var(--accent-ink); }
.ed-diff-col.proposed .dc-text { color: var(--text-primary); }
.ed-diff-actions { display: flex; align-items: center; gap: 8px; padding: 11px 14px; border-top: 1px solid var(--border-faint); }

/* resolved (accepted) inline marker */
.ed-resolved {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-top: 10px;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--accent-ink);
}
.ed-resolved .eh-signal-stroke { color: var(--accent-ink); }

/* ================================================================== INBOX */
.ov2-inbox { flex: 1; min-height: 0; display: flex; flex-direction: column; overflow: hidden; }
.ib-head {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 16px 18px 14px;
  border-bottom: 1px solid var(--border-faint);
}
.ib-head h2 { font-size: 17px; font-weight: 500; letter-spacing: -0.01em; color: var(--text-primary); }
.ib-head .ib-sub { font-size: 13px; line-height: 1.5; color: var(--text-secondary); margin-top: 3px; max-width: 60ch; }
.ib-head .ib-right { margin-left: auto; display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }
.ib-checked { font-family: var(--mono); font-size: 10px; letter-spacing: 0.04em; color: var(--text-tertiary); white-space: nowrap; }

.ib-filters {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 10px 16px;
  border-bottom: 1px solid var(--border-faint);
  flex-wrap: wrap;
}
.ib-filter {
  display: inline-flex;
  align-items: baseline;
  gap: 7px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  padding: 5px 11px;
  cursor: pointer;
  font-size: 13px;
  color: var(--text-secondary);
  transition: background var(--dur-hover) var(--ease), color var(--dur-hover) var(--ease);
}
.ib-filter:hover { background: var(--surface-2); color: var(--text-primary); }
.ib-filter.on { background: var(--surface-2); color: var(--text-primary); border-color: var(--border-soft); }
.ib-filter .if-count { font-family: var(--mono); font-size: 10px; color: var(--text-tertiary); }
.ib-filter .if-note { font-size: 11px; color: var(--text-tertiary); }
.ib-filter .if-note::before { content: "· "; }

.ib-typebar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  border-bottom: 1px solid var(--border-faint);
}
.ib-type-chip {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.05em; text-transform: uppercase;
  color: var(--text-secondary);
  border: 1px solid var(--border-soft);
  border-radius: 999px;
  padding: 3px 10px;
}
.ib-type-chip .tc-count { color: var(--text-tertiary); }
.ib-sort { margin-left: auto; font-family: var(--mono); font-size: 10px; letter-spacing: 0.04em; color: var(--text-tertiary); }

.ib-list { flex: 1; min-height: 0; overflow-y: auto; }
.ib-card {
  display: flex;
  gap: 13px;
  padding: 16px 18px;
  border-bottom: 1px solid var(--border-faint);
}
.ib-card .ic-glyph {
  width: 30px; height: 30px; flex: 0 0 auto;
  border-radius: var(--radius-sm);
  border: 1px solid var(--accent-border);
  background: var(--accent-soft);
  color: var(--accent-ink);
  display: flex; align-items: center; justify-content: center;
}
.ib-card .ic-main { flex: 1; min-width: 0; }
.ib-card .ic-top { display: flex; align-items: flex-start; gap: 12px; }
.ib-card .ic-headings { flex: 1; min-width: 0; }
.ib-card .ic-title { font-size: 14px; font-weight: 500; letter-spacing: -0.008em; color: var(--text-primary); display: block; }
.ib-card .ic-tags { margin-left: auto; flex: 0 0 auto; display: inline-flex; align-items: center; gap: 9px; white-space: nowrap; padding-top: 1px; }
.ic-typebadge {
  font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--text-secondary);
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  border-radius: 999px;
  padding: 2px 9px;
}
.ic-source { font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.04em; color: var(--text-tertiary); }
.ib-card .ic-area { display: inline-flex; align-items: center; gap: 7px; margin-top: 6px; font-size: 11.5px; color: var(--text-secondary); white-space: nowrap; }
.ib-card .ic-lines { margin: 9px 0 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 4px; }
.ib-card .ic-lines li { font-size: 12.5px; line-height: 1.5; color: var(--text-secondary); padding-left: 14px; position: relative; }
.ib-card .ic-lines li::before { content: "·"; position: absolute; left: 4px; color: var(--text-tertiary); }
.ib-card .ic-actions { display: flex; gap: 8px; margin-top: 12px; }

.ib-empty {
  flex: 1; min-height: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 10px; padding: 60px 20px; text-align: center;
}
.ib-empty .ie-glyph {
  width: 40px; height: 40px;
  border-radius: 50%;
  background: var(--surface-2);
  border: 1px solid var(--border-faint);
  display: flex; align-items: center; justify-content: center;
  color: var(--text-tertiary);
  margin-bottom: 4px;
}
.ib-empty .ie-title { font-size: 14px; font-weight: 500; color: var(--text-primary); }
.ib-empty .ie-sub { font-size: 13px; line-height: 1.5; color: var(--text-secondary); max-width: 42ch; }

/* ================================================================== MODAL */
.ov2-modal-scrim {
  position: fixed;
  inset: 0;
  z-index: 60;
  background: var(--scrim);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}
.ov2-modal {
  width: 420px;
  max-width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  background: var(--surface-1);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-xl);
  padding: 22px;
}
.ov2-modal .md-head { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 16px; }
.ov2-modal .md-head h3 { font-size: 18px; font-weight: 500; letter-spacing: -0.01em; color: var(--text-primary); }
.ov2-modal .md-head .md-sub { font-size: 12.5px; line-height: 1.5; color: var(--text-secondary); margin-top: 4px; }
.md-field { margin-bottom: 14px; }
.md-field > label {
  display: block;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--text-tertiary);
  margin-bottom: 6px;
}
.md-input, .md-select {
  width: 100%;
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md);
  padding: 9px 12px;
  font-family: var(--sans);
  font-size: 13.5px;
  color: var(--text-primary);
  transition: border-color var(--dur-hover) var(--ease), box-shadow 0.25s var(--ease);
}
.md-input:focus, .md-select:focus {
  outline: none;
  border-color: var(--accent-border);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
.md-input.mono { font-family: var(--mono); font-size: 12.5px; }
.md-swatches { display: flex; flex-wrap: wrap; gap: 9px; }
.md-swatch {
  width: 26px; height: 26px;
  border-radius: 50%;
  border: 1px solid var(--border-soft);
  background: var(--sw, var(--text-tertiary));
  cursor: pointer;
  position: relative;
  transition: transform var(--dur-press) var(--ease);
}
.md-swatch:hover { transform: scale(1.08); }
.md-swatch.on { box-shadow: 0 0 0 2px var(--surface-1), 0 0 0 4px var(--accent-ink); }
.md-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; margin-top: 20px; }

/* area action bar (bottom-left of the graph when an area is pinned) */
.ov2-area-actions {
  position: absolute;
  left: 14px;
  bottom: 14px;
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.ov2-area-actions .ov2-clear-filter { position: static; }
