/* 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 10px 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 10px 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 9px 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 9px 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}


.eng-board-inspector{min-width:0;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);border-left:1px solid var(--eng-edge);background:var(--eng-paper)}
.eng-board-inspector>header{display:flex;justify-content:space-between;align-items:start;gap:var(--space-3);padding:var(--space-4);border-bottom:1px solid var(--eng-edge)}
.eng-board-inspector>header span{font:9px var(--eng-mono);letter-spacing:.05em;color:var(--eng-ink-3)}
.eng-board-inspector h3{margin:var(--space-1) 0 0;font-size:var(--t-h4-size);line-height:var(--t-h4-lh)}
.eng-board-inspector>header button{min-height:30px;padding:0 var(--space-3);border:1px solid var(--eng-edge-strong);border-radius:var(--radius-2);background:transparent;font:500 9px var(--eng-mono);text-transform:uppercase;letter-spacing:.06em}
.eng-board-inspector__body{min-height:0;overflow:auto;padding:var(--space-4);display:grid;gap:var(--space-4);align-content:start}
.eng-board-inspector__body h4{margin:0 0 var(--space-1);font:500 9px var(--eng-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--eng-ink-3)}
.eng-board-inspector__body p{margin:0;font-size:var(--t-caption-size);line-height:var(--t-small-lh)}
.eng-board-inspector__body ul{margin:0;padding-left:var(--space-4);font-size:var(--t-caption-size);line-height:var(--t-small-lh)}
.eng-board-inspector footer{font:8px var(--eng-mono);color:var(--eng-ink-3);overflow-wrap:anywhere}
@media(max-width:760px){.eng-board-inspector{border-left:0}}

.eng-board-filter{display:grid;gap:var(--space-1);padding:var(--space-3);border-bottom:1px solid var(--eng-edge);position:sticky;top:0;background:var(--eng-quiet);z-index:1}
.eng-board-filter p{margin:0;font:500 9px var(--eng-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--eng-ink-2)}
@media(max-width:760px){.eng-board-filter{position:static;flex:0 0 auto;min-width:170px;border-bottom:0;border-right:1px solid var(--eng-edge)}}
