  /* ---------- Contract page ---------- */
  .doc{max-width:980px;margin:0 auto;padding:22px 24px 60px}
  .doc-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}
  .doc-title{font-size:19px;font-weight:700}
  .doc-title .num{font-family:var(--sans);font-variant-numeric:tabular-nums;color:var(--accent-dark);letter-spacing:.02em}
  .doc-actions{display:flex;gap:8px;flex-shrink:0}

  .field-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px 14px;margin-bottom:22px}
  .field{display:flex;flex-direction:column;gap:4px}
  .field.span-2{grid-column:span 2}
  .field.span-4{grid-column:span 4}
  .field label{font-size:11px;color:var(--ink-soft);font-weight:600}
  .field input,.field textarea,.field select{
    border:1px solid var(--line);border-radius:var(--radius);padding:7px 9px;background:var(--paper);
    width:100%;
  }
  .field textarea{resize:vertical;min-height:36px;font-family:inherit}
  /* Read-only status (Є-ДАТА / Уточнені) — same chrome as inputs, non-editable */
  .field .field-readonly,
  .field .field-status{
    border:1px solid var(--line);border-radius:var(--radius);padding:7px 9px;background:var(--paper);
    width:100%;min-height:34px;box-sizing:border-box;
    font-size:13px;font-weight:600;color:var(--ink);line-height:1.3;
    display:flex;align-items:center;user-select:none;cursor:default;
  }
  .field .field-status{letter-spacing:.02em}
  .field .cpv-row{display:flex;gap:6px}
  .field .cpv-row input:first-child{width:130px;flex-shrink:0;font-family:var(--mono)}
  .field-amount{font-family:var(--mono);font-size:15px;font-weight:700;padding:7px 0}

  .section{margin-bottom:24px}
  .section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
  .section-head h3{font-size:12.5px;text-transform:none;letter-spacing:.1px;color:var(--ink-soft);font-weight:700;margin:0}

  .req-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}
  .req-row input.req-label{width:220px;flex-shrink:0;border:1px solid var(--line);border-radius:var(--radius);padding:6px 8px;background:var(--paper);font-weight:600}
  .req-row input.req-value{flex:1;border:1px solid var(--line);border-radius:var(--radius);padding:6px 8px;background:var(--paper)}
  .req-row .icon-btn{flex-shrink:0}
  .req-empty{color:var(--ink-soft);font-size:12.5px;padding:6px 0}

  .cp-list{display:flex;flex-wrap:wrap;gap:8px}
  .cp-card{
    display:flex;align-items:center;gap:8px;background:var(--paper);border:1px solid var(--line);
    border-radius:var(--radius);padding:7px 8px;
  }
  .cp-card input{border:none;background:transparent;padding:2px 3px;border-radius:3px}
  .cp-card input.cp-name{width:200px;font-weight:600}
  .cp-card input.cp-code{width:100px;font-family:var(--mono);color:var(--ink-soft)}
  .cp-card input:focus{background:#fff;outline:1px solid var(--line)}

  .icon-btn{
    width:24px;height:24px;border-radius:5px;border:none;background:transparent;color:var(--ink-soft);
    display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;
  }
  .icon-btn:hover{background:var(--danger-tint);color:var(--danger)}

  /* Spec tables (договір / акт): content-driven like table.reg
     Atomic cols: width 1% + nowrap + min-width → не стискаються при inline-edit.
     Name sponge: width auto + wrap → takes remaining space. */
  table.spec{
    border-collapse:collapse;width:100%;table-layout:auto;min-width:0;
  }
  table.spec th{
    text-align:left;font-size:11.5px;color:var(--ink-soft);font-weight:600;
    padding:6px 10px;border-bottom:1px solid var(--line);vertical-align:bottom;
    white-space:nowrap;overflow:visible;text-overflow:unset;line-height:1.25;
  }
  table.spec th.cell-money, table.spec th.th-money{text-align:right}
  table.spec th.cell-center, table.spec th.th-center{text-align:center}
  table.spec th.cell-num, table.spec th.th-num{text-align:left}
  table.spec th.cell-wrap, table.spec th.th-wrap{
    white-space:normal;overflow-wrap:break-word;word-break:normal;
  }
  table.spec td{
    padding:6px 10px;border-bottom:1px solid var(--line-soft);vertical-align:middle;
    overflow:visible;text-overflow:unset;white-space:normal;
    overflow-wrap:break-word;word-break:normal;
  }
  table.spec td.cell-money{
    text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;
    white-space:nowrap;overflow-wrap:normal;word-break:normal;
    min-width:5.5rem;
  }
  table.spec td.cell-center{
    text-align:center;white-space:nowrap;overflow-wrap:normal;word-break:normal;
    min-width:3.25rem;
  }
  table.spec td.cell-num, table.spec td.cell-num-text{
    white-space:nowrap;overflow-wrap:normal;word-break:normal;
    min-width:4rem;
  }
  table.spec td.cell-wrap{
    white-space:normal;overflow-wrap:break-word;word-break:normal;
    min-width:10rem;
  }
  table.spec tfoot td{
    border-bottom:none;border-top:1px solid var(--line);font-weight:700;padding:8px 10px;
  }
  table.spec tfoot td.spec-total-label{text-align:right;color:var(--ink-soft);font-weight:600}
  table.spec tfoot td.cell-money{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
  /* col widths: 1% = content-sized atomic; auto = sponge; min-width тримає edit-стабільність */
  table.spec col.c-name{width:auto;min-width:12rem}
  table.spec col.c-dk{width:1%;min-width:4.5rem}
  table.spec col.c-unit{width:1%;min-width:3.5rem}
  table.spec col.c-qty{width:1%;min-width:4.5rem}
  table.spec col.c-decl{width:1%;min-width:4.5rem}
  table.spec col.c-price{width:1%;min-width:5.5rem}
  table.spec col.c-sum{width:1%;min-width:5.5rem}
  table.spec col.c-rem{width:1%;min-width:4rem}
  table.spec col.c-act{width:1%;min-width:2.5rem}

  /* Inline edit у специфікації: поле не стискається під короткий текст */
  table.spec .editable{
    display:inline-block;max-width:100%;box-sizing:border-box;
    min-height:1.35em;line-height:1.35;padding:2px 4px;margin:-2px -4px;
    border-radius:4px;vertical-align:middle;
  }
  table.spec td.cell-wrap .editable{display:block;width:100%}
  table.spec .editable:focus-within,
  table.spec .editable:has(.cell-input){
    display:block;width:100%;
    background:var(--paper,#fff);
    box-shadow:0 0 0 1px var(--accent);
    padding:2px 4px;margin:-2px -4px;
  }
  table.spec .cell-input{
    display:block;width:100%;min-width:4.5rem;max-width:100%;
    box-sizing:border-box;border:1px solid var(--accent);border-radius:4px;
    padding:5px 8px;background:#fff;font-family:inherit;font-size:inherit;
    line-height:1.35;outline:none;
  }
  table.spec td.cell-money .cell-input,
  table.spec .cell-input.money,
  table.spec .cell-input.num{
    font-family:var(--mono);text-align:right;min-width:5.5rem;
  }
  table.spec td.cell-wrap .cell-input{min-width:10rem}
  table.spec td.cell-center .cell-input{min-width:3.5rem;text-align:center}
  /* Segmented control (contractor contracts lifecycle filter) */
  .seg-control{
    display:inline-flex;align-items:center;gap:0;border:1px solid var(--line);
    border-radius:var(--radius);overflow:hidden;background:var(--paper);
  }
  .seg-control button{
    height:28px;padding:0 12px;border:none;border-right:1px solid var(--line);
    background:transparent;color:var(--ink-soft);cursor:pointer;font-size:12px;font-weight:600;
  }
  .seg-control button:last-child{border-right:none}
  .seg-control button:hover{background:var(--line-soft);color:var(--ink)}
  .seg-control button.active{background:var(--accent);color:#fff}
  .badge.badge-success{background:var(--accent-tint);color:var(--accent-dark)}
  .badge.badge-muted{background:var(--line-soft);color:var(--ink-soft)}
  .badge.badge-closed{background:var(--line-soft);color:var(--ink-soft)}
  tr.contract-closed td{opacity:.78}
  .contract-status-actions{display:inline-flex;gap:4px;align-items:center;white-space:nowrap}
  .spec-empty{padding:16px 8px;color:var(--ink-soft);text-align:center;border:1px dashed var(--line);border-radius:var(--radius)}
  .spec-hint{font-size:11.5px;color:var(--ink-soft);margin-top:6px}

  /* Spec IO toolbar (буфер / dump / CSV) */
  .spec-head-actions{
    display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;margin-left:auto;
  }
  .section-head .spec-head-actions{margin-left:8px}
  .spec-io-toolbar{
    display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap;
  }
  .spec-io-toolbar .btn.small{padding:4px 8px;font-size:11.5px}
  .spec-clip-panel{
    margin:8px 0 12px;padding:10px 12px;border:1px solid var(--line);
    border-radius:var(--radius);background:var(--paper,#fafafa);
  }
  .spec-clip-head{
    display:flex;align-items:center;justify-content:space-between;gap:10px;
    flex-wrap:wrap;margin-bottom:6px;
  }
  .spec-clip-head label{font-size:12px;font-weight:600;color:var(--ink)}
  .spec-clip-head .muted{font-weight:500;font-size:11px}
  .spec-clip-actions{display:inline-flex;gap:6px;flex-wrap:wrap}
  .spec-clip-text{
    width:100%;min-height:72px;box-sizing:border-box;resize:vertical;
    border:1px solid var(--line);border-radius:var(--radius);
    padding:8px 10px;font-family:var(--mono);font-size:12px;line-height:1.4;
    background:#fff;color:var(--ink);
  }
  .spec-clip-text:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}

  /* ---------- Smart Contract Dashboard ---------- */
  .scd-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
  .scd-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
  .scd-title{font-size:18px;font-weight:700}
  .scd-timeline{
    display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;
    padding:10px 14px;border-radius:var(--radius);background:var(--accent-tint);
    border:1px solid var(--line);margin-bottom:14px;font-size:13px;
  }
  .scd-timeline.scd-bad{background:var(--danger-tint);border-color:var(--danger);color:var(--danger)}
  .scd-timeline b{font-family:var(--mono)}
  .scd-contractor{
    border:1px solid var(--line);border-radius:8px;padding:12px 14px;background:var(--paper);margin-bottom:14px;
  }
  .scd-contractor .scd-k-name{font-size:14.5px;font-weight:700;margin-bottom:4px}
  .scd-contractor .scd-k-meta{font-size:12.5px;color:var(--ink-soft);line-height:1.5}
  .scd-pulse{
    border:1px solid var(--line);border-radius:8px;padding:12px 14px;background:var(--surface);margin-bottom:14px;
  }
  .scd-pulse h3{margin:0 0 10px;font-size:13px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}
  .scd-pulse-row{display:flex;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px dashed var(--line-soft);font-size:13px}
  .scd-pulse-row:last-child{border-bottom:none;font-weight:700;padding-top:8px}
  .scd-pulse-row b{font-family:var(--mono);font-variant-numeric:tabular-nums}
  .scd-pulse-row.neg b{color:var(--danger)}
  .scd-pulse-row.ok b{color:var(--accent-dark)}
  .ds-row-blocked{background:var(--danger-tint) !important;opacity:.85}
  .ds-row-blocked td{text-decoration:line-through;color:var(--danger)}
  .ds-row-blocked td.ds-block-msg{text-decoration:none;font-size:11.5px;color:var(--danger);font-weight:600}
  .field.field-error input{border-color:var(--danger);background:var(--danger-tint)}
  .field-error-msg{font-size:11.5px;color:var(--danger);margin-top:4px}
  .act-link-ok{color:var(--accent-dark);font-weight:600;font-size:12px}
  .act-link-bad{color:var(--danger);font-weight:600;font-size:12px}
  .act-link-warn{color:var(--amber);font-weight:600;font-size:12px}

  /* ---------- Linked Entity Widget (акт → договір) ---------- */
  .lew{
    border:1px solid var(--line);border-radius:8px;background:var(--paper);
    padding:14px 16px;margin-bottom:18px;
  }
  .lew.lew-ok{border-color:var(--accent);background:var(--accent-tint)}
  .lew.lew-warn{border-color:var(--amber);background:#FBF2DE}
  .lew.lew-danger{border-color:var(--danger);background:var(--danger-tint)}
  .lew.lew-empty{border-style:dashed;background:var(--surface)}
  .lew-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
  .lew-title{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);display:inline-flex;align-items:center;gap:8px}
  .lew-status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ink-soft);flex-shrink:0}
  .lew-status-dot.ok{background:var(--accent)}
  .lew-status-dot.warn{background:var(--amber)}
  .lew-status-dot.danger{background:var(--danger)}
  .lew-doc-title{font-size:14.5px;font-weight:700;color:var(--ink);line-height:1.35;margin-bottom:4px}
  .lew-doc-meta{font-size:12.5px;color:var(--ink-soft);line-height:1.45}
  .lew-tree{margin:8px 0 0;padding:8px 10px;border-left:3px solid var(--accent);background:var(--surface);border-radius:0 var(--radius) var(--radius) 0;font-size:12.5px}
  .lew-tree .lew-ds{color:var(--accent-dark);font-weight:600}
  .lew-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 18px;margin-top:12px}
  @media (max-width:720px){.lew-grid{grid-template-columns:1fr}}
  .lew-block h4{margin:0 0 6px;font-size:11px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}
  .lew-block .lew-line{font-size:13px;line-height:1.45}
  .lew-fin-row{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;padding:3px 0;border-bottom:1px dashed var(--line-soft)}
  .lew-fin-row:last-child{border-bottom:none;font-weight:700;padding-top:6px}
  .lew-fin-row b{font-family:var(--mono);font-variant-numeric:tabular-nums}
  .lew-fin-row.neg b{color:var(--danger)}
  .lew-health{margin-top:10px;padding:8px 10px;border-radius:var(--radius);font-size:12.5px;line-height:1.4;background:var(--surface);border:1px solid var(--line)}
  .lew-health.ok{border-color:var(--accent);color:var(--accent-dark);background:var(--accent-tint)}
  .lew-health.warn{border-color:var(--amber);color:var(--amber);background:#FBF2DE}
  .lew-health.danger{border-color:var(--danger);color:var(--danger);background:var(--danger-tint)}
  .lew-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:10px;border-top:1px solid var(--line-soft)}
  .lew-search-wrap{position:relative;flex:1 1 240px;min-width:180px}
  .lew-search-wrap input{width:100%;height:32px;border:1px solid var(--line);border-radius:var(--radius);padding:0 10px;background:var(--surface)}
  .lew-search-wrap .ac-list{max-height:220px}
  .lew-sig{font-family:var(--mono);font-size:10.5px;color:var(--ink-soft);word-break:break-all;margin-top:6px}
  .lew-sig.valid{color:var(--accent-dark)}
  .lew-sig.broken{color:var(--danger);font-weight:600}
  .batch-sticky-bar{
    position:sticky;bottom:0;z-index:40;display:flex;flex-wrap:wrap;align-items:center;gap:8px;
    padding:10px 14px;margin-top:12px;background:var(--ink);color:#fff;border-radius:var(--radius);
    box-shadow:0 -4px 18px rgba(31,36,33,.18);
  }
  .batch-sticky-bar .batch-count{font-weight:700;margin-right:6px}
  .batch-sticky-bar .btn{background:#fff;color:var(--ink);border-color:#fff}
  .batch-sticky-bar .btn.danger{background:var(--danger);color:#fff;border-color:var(--danger)}
  .batch-sticky-bar .btn.primary{background:var(--accent);color:#fff;border-color:var(--accent-dark)}
  .batch-sticky-bar .btn.ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.35)}
  .batch-sticky-bar .btn.ghost:hover{background:rgba(255,255,255,.12)}
  .audit-code-group{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:12px;background:var(--paper);overflow:hidden}
  table.audit-data-grid thead th[draggable="true"]{cursor:grab;user-select:none}
  table.audit-data-grid thead th[draggable="true"]:active{cursor:grabbing}
  table.audit-data-grid thead th.audit-col-drag-over{background:var(--accent-tint);box-shadow:inset 0 -2px 0 0 var(--accent)}
  table.audit-data-grid td .audit-desc{line-height:1.35}

  .audit-code-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;background:var(--surface);border-bottom:1px solid var(--line-soft)}
  .audit-code-head b{font-size:13px}
  .audit-code-head .muted{font-size:12px}
  .audit-desc-nav{cursor:pointer}
  .audit-desc-nav:hover{background:rgba(47,111,98,.06)}
  .audit-select-all{accent-color:var(--accent);width:16px;height:16px}
  .dry-run-modal{max-width:520px}
  .dry-run-modal .dr-row{display:flex;justify-content:space-between;padding:4px 0;font-size:13px;border-bottom:1px dashed var(--line-soft)}
    .resolver-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 14px;padding:10px 12px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius)}


/* ——— Contract copy dialog (2026-10-02) ——— */
.ccopy-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: rgba(0, 0, 0, 0.45);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.ccopy-card {
  background: #fff;
  border-radius: 10px;
  max-width: 720px;
  width: 100%;
  max-height: 90vh;
  overflow: auto;
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.2);
  font: 14px/1.45 system-ui, sans-serif;
  color: #1a1a1a;
  display: flex;
  flex-direction: column;
}
.ccopy-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 18px 8px;
  border-bottom: 1px solid #e8e8e8;
}
.ccopy-head h2 {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
}
.ccopy-body {
  padding: 12px 18px;
  flex: 1;
}
.ccopy-hint {
  margin: 0 0 10px;
  color: #556;
  font-size: 13px;
}
.ccopy-series-hints {
  margin-bottom: 10px;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.ccopy-gen {
  margin-bottom: 10px;
}
.ccopy-gen summary {
  cursor: pointer;
  color: #356;
  font-size: 13px;
}
.ccopy-gen-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 8px;
  margin-top: 8px;
  padding: 8px;
  background: #f7f8fa;
  border-radius: 6px;
}
.ccopy-gen-grid label {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 12px;
  color: #445;
}
.ccopy-gen-grid input {
  padding: 4px 6px;
  border: 1px solid #ccd;
  border-radius: 4px;
}
.ccopy-paste {
  margin-bottom: 10px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: flex-start;
}
.ccopy-paste textarea {
  flex: 1;
  min-width: 180px;
  padding: 6px 8px;
  border: 1px solid #ccd;
  border-radius: 4px;
  font: 13px/1.3 ui-monospace, monospace;
}
.ccopy-table-wrap {
  overflow-x: auto;
  margin-bottom: 8px;
}
.ccopy-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.ccopy-table th {
  text-align: left;
  padding: 6px 8px;
  border-bottom: 1px solid #dde;
  color: #556;
  font-weight: 600;
}
.ccopy-table td {
  padding: 4px 6px;
  border-bottom: 1px solid #f0f0f0;
  vertical-align: middle;
}
.ccopy-table input[type="text"] {
  width: 100%;
  min-width: 72px;
  padding: 5px 6px;
  border: 1px solid #ccd;
  border-radius: 4px;
  box-sizing: border-box;
}
.ccopy-row-err {
  color: #b42318;
  font-size: 12px;
  padding: 2px 0;
}
.ccopy-err-row td {
  border-bottom: 1px solid #fde8e8;
  background: #fff8f8;
}
.ccopy-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 4px;
}
.ccopy-count {
  color: #667;
  font-size: 12px;
}
.ccopy-foot {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 12px 18px;
  border-top: 1px solid #e8e8e8;
}
.ccopy-foot .btn.primary:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
@media (max-width: 560px) {
  .ccopy-card { max-height: 96vh; }
  .ccopy-gen-grid { grid-template-columns: 1fr 1fr; }
}

/* Phase 4 polish — a11y + toast action + narrow screens */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.toast.toast-with-action {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.toast-action-btn {
  border: 1px solid rgba(255,255,255,.45);
  background: transparent;
  color: inherit;
  border-radius: 4px;
  padding: 2px 8px;
  font: inherit;
  cursor: pointer;
  white-space: nowrap;
}
.toast-action-btn:hover {
  background: rgba(255,255,255,.12);
}
.ccopy-table input[aria-invalid="true"] {
  border-color: #b42318;
  background: #fff8f8;
}
@media (max-width: 480px) {
  .ccopy-overlay { padding: 8px; align-items: flex-end; }
  .ccopy-card { border-radius: 12px 12px 0 0; max-height: 92vh; }
  .ccopy-gen-grid { grid-template-columns: 1fr; }
  .ccopy-paste { flex-direction: column; }
  .ccopy-paste textarea { width: 100%; min-width: 0; }
  .ccopy-foot { flex-wrap: wrap; }
  .ccopy-foot .btn { flex: 1; min-width: 120px; }
  .ccopy-table th:nth-child(3),
  .ccopy-table th:nth-child(4),
  .ccopy-table td:nth-child(3),
  .ccopy-table td:nth-child(4) {
    /* keep terms visible but tighter */
    min-width: 64px;
  }
}
