/* Engineering component layer.
   Composed interaction patterns used by more than one route. A component owns
   its markup, its enumerated variants and its own state treatment, so a route
   supplies typed data and never restyles it. Every family here is registered
   in config/components.json with its variants, allowed consumers, specimen and
   behaviour assertion; the ESF-3 library gate fails a variant that is not.
   Raw colour, shadow, easing and millisecond values are illegal in this file
   exactly as they are in the primitive and composition layers. */

.eng-definition{display:grid;grid-template-columns:170px minmax(0,1fr);gap:var(--space-2) var(--space-4)}
.eng-definition dt{color:var(--eng-ink-3);font:500 var(--t-label-size) var(--eng-mono);text-transform:uppercase;letter-spacing:.05em}
.eng-definition dd{margin:0;overflow-wrap:anywhere}
.eng-definition--compact{grid-template-columns:112px minmax(0,1fr);margin:var(--space-5) 0}
.eng-ledger-row{display:grid;grid-template-columns:120px 1fr auto;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--eng-edge);align-items:start}
.eng-ledger-row--terminal{border-left:3px solid var(--eng-signal);padding-left:var(--space-3)}
.eng-ledger-row--artifact{border-left:3px solid var(--eng-info);padding-left:var(--space-3)}
.eng-ledger-row--receipt{border-left:3px solid var(--eng-warning);padding-left:var(--space-3)}
.eng-system-bar{min-height:64px;display:flex;align-items:center;gap:var(--space-5);border-bottom:1px solid var(--eng-edge-strong);font:500 var(--t-label-size) var(--eng-mono);text-transform:uppercase;color:var(--eng-ink-3)}
.eng-system-bar time{margin-left:auto;text-transform:none}
.eng-integration-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--space-6)}
.eng-integration-grid article{border-bottom:1px solid var(--eng-edge);background:var(--eng-paper);padding:var(--space-5) 0;min-height:190px}
.eng-integration-grid article>div{display:flex;justify-content:space-between;align-items:start;gap:var(--space-3)}
.eng-integration-grid h3{font-size:var(--t-h3-size);margin:0}
.eng-integration-grid dl{display:grid;grid-template-columns:86px minmax(0,1fr);gap:var(--space-2) var(--space-3);font-size:var(--t-caption-size);margin:var(--space-5) 0 0}
.eng-integration-grid dt{color:var(--eng-ink-3);text-transform:capitalize}
.eng-integration-grid dd{margin:0}
.eng-seam-read{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--eng-edge-strong)}
.eng-seam-read>div{display:grid;gap:var(--space-2);padding:var(--space-4) 0}
.eng-seam-read>div+div{border-left:1px solid var(--eng-edge);padding-left:var(--space-4)}
.eng-seam-read span,.eng-seam-read small{font:500 var(--t-micro-size) var(--eng-mono);text-transform:uppercase;color:var(--eng-ink-3)}
.eng-seam-read strong{font-size:var(--t-h2-size)}
.eng-status-line{display:inline-flex;align-items:center;gap:var(--space-2);text-transform:capitalize}
.eng-status-line i{width:6px;height:6px;border-radius:var(--radius-pill);background:var(--eng-signal-deep)}
.eng-status-line--pending i{background:var(--eng-warning)}
.eng-source-dot{display:block;width:6px;height:6px;border-radius:50%;background:var(--eng-ink-3)}
.eng-source-dot--ready{background:var(--eng-signal-deep)}
.eng-source-dot--warning{background:var(--eng-warning)}
.eng-source-dot--error{background:var(--eng-danger)}
.eng-source-dot--quiet{background:var(--eng-edge-strong)}
.eng-surface-full-frame{display:block;width:100%;height:100%;border:0;background:var(--eng-paper)}
.eng-surface-full-frame--live{height:calc(100% - 36px)}

.eng-specimen-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-5);margin-top:var(--space-5)}
.eng-specimen{display:grid;gap:var(--space-3);border-top:1px solid var(--eng-edge);padding-top:var(--space-3);min-width:0}
.eng-specimen>header{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-2)}
.eng-specimen>header small{font:500 var(--t-micro-size) var(--eng-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--eng-ink-3)}
.eng-specimen__stage{display:grid;gap:var(--space-2);align-content:start;min-height:72px;overflow:hidden}
.eng-specimen>p{font-size:var(--t-caption-size);color:var(--eng-ink-3);margin:0}
