  /* ---------- ДС / таймлайн (Модуль 7) ---------- */
  .ds-timeline{display:flex;align-items:center;flex-wrap:wrap;gap:0;margin:10px 0 16px;padding:10px 0}
  .ds-node{display:flex;align-items:center;gap:8px}
  .ds-node .dot{width:9px;height:9px;border-radius:50%;background:var(--accent);flex-shrink:0}
  .ds-node .lbl{font-size:11.5px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:4px 8px;white-space:nowrap}
  .ds-connector{width:26px;height:1px;background:var(--line);flex-shrink:0}
  .kekv-select{border:1px solid var(--line);border-radius:4px;padding:3px 4px;background:var(--paper);font-size:12px;max-width:100%}
  .kekv-select.invalid{border-color:var(--danger)}


/* Phase 2 — sticky save status on ДУ card */
.ds-save-status {
  font-size: 12px;
  font-weight: 500;
  padding: 2px 8px;
  border-radius: 6px;
  border: 1px solid var(--line);
  background: var(--paper);
  color: var(--ink-muted, #5a6570);
  white-space: nowrap;
}
.ds-save-status.is-dirty {
  border-color: #e6b800;
  color: #8a6d00;
  background: #fff8e1;
}
.ds-save-status.is-saved {
  border-color: #9ccc9c;
  color: #1b5e20;
  background: #e8f5e9;
}
.doc-erp.addendum-detail .doc-erp-footer {
  position: sticky;
  bottom: 0;
  z-index: 20;
  background: var(--paper, #fff);
  border-top: 1px solid var(--line);
  padding: 10px 16px;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}

/* Phase 3 — spec buffer panel */
.spec-clip-badge {
  display: inline-block;
  min-width: 1.25em;
  padding: 0 5px;
  margin-left: 2px;
  border-radius: 9px;
  background: var(--accent, #1a56a8);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
}
.spec-clip-source {
  font-size: 12.5px;
  color: var(--ink-muted, #5a6570);
  margin: 4px 0 6px;
}
.spec-clip-warn {
  font-size: 12px;
  color: #8a6d00;
  background: #fff8e1;
  border: 1px solid #e6d59a;
  border-radius: 6px;
  padding: 6px 8px;
  margin-bottom: 6px;
}
.spec-clip-preview {
  font-size: 11.5px;
  font-family: ui-monospace, monospace;
  margin-bottom: 6px;
  max-height: 4.5em;
  overflow: hidden;
}
.spec-clip-live {
  font-size: 12px;
  min-height: 1.2em;
  margin-top: 4px;
  color: var(--ink-muted, #5a6570);
}
.spec-io-more {
  display: inline-block;
  position: relative;
}
.spec-io-more > summary {
  list-style: none;
  cursor: pointer;
}
.spec-io-more > summary::-webkit-details-marker { display: none; }
.spec-io-more-menu {
  position: absolute;
  z-index: 40;
  right: 0;
  top: 100%;
  margin-top: 4px;
  min-width: 180px;
  background: var(--paper, #fff);
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: 0 6px 20px rgba(0,0,0,.12);
  padding: 6px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.spec-io-more-menu .btn {
  justify-content: flex-start;
  width: 100%;
}

/* Phase 4 — overview progressive disclosure */
.ds-overview {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ds-overview-row {
  margin: 0;
}
.ds-cpv-hint {
  font-size: 12.5px;
  margin: 4px 0 0;
  line-height: 1.35;
}
.ds-collapse {
  padding: 0;
  overflow: hidden;
}
.ds-collapse > summary.ds-collapse-sum {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  font-weight: 600;
  font-size: 13.5px;
  user-select: none;
}
.ds-collapse > summary.ds-collapse-sum::-webkit-details-marker { display: none; }
.ds-collapse > summary.ds-collapse-sum::before {
  content: "▸";
  margin-right: 6px;
  color: var(--ink-muted, #5a6570);
  font-weight: 400;
}
.ds-collapse[open] > summary.ds-collapse-sum::before {
  content: "▾";
}
.ds-collapse-meta {
  font-weight: 500;
  font-size: 12.5px;
  color: var(--ink-muted, #5a6570);
  margin-left: auto;
}
.ds-collapse > .field-grid,
.ds-collapse > .muted {
  padding: 0 14px 12px;
}
.cpv-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.cpv-row input {
  flex: 1 1 120px;
  min-width: 100px;
}
