/* V1 Alpha Factory and Validation Center — signed-off screenshot visual pass.
   CSS-only decor carries no implicit live, validated or authorized status. */
.factory-cockpit .kpis,.validation-cockpit .kpis{grid-template-columns:repeat(6,minmax(0,1fr))}
.factory-pipeline{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:11px;padding:8px 0 3px}
.factory-stage{position:relative;min-width:0;min-height:112px;border:1px solid #345c7e;border-radius:10px;
 background:linear-gradient(145deg,#12436c,#10263f);padding:17px 12px}
.factory-stage:nth-child(3n){border-color:#575080;background:linear-gradient(145deg,#27395e,#14243f)}
.factory-stage:last-child{border-color:#408a75;background:linear-gradient(145deg,#135551,#112c3d)}
.factory-stage:not(:last-child):after{content:"›";position:absolute;right:-13px;top:32px;color:#5ac4ed;font-size:25px;z-index:1}
.factory-stage .icon{height:30px;width:30px;display:grid;place-items:center;border-radius:9px;
 color:#b7f0ff;background:#266391;border:1px solid #397dae;font-size:17px;font-weight:700}
.factory-stage strong{display:block;color:#edf7ff;font-size:12px;margin-top:13px}
.factory-stage small{color:#85b0cf;font-size:10px;display:block;margin-top:7px;line-height:1.45}
.factory-stage .count{font-size:11px;font-weight:750;color:#70dfd1;float:right}
.factory-toolbar{display:flex;justify-content:space-between;align-items:center;gap:11px;flex-wrap:wrap;margin-bottom:12px}
.factory-toolbar .subtitle{font-size:11px;color:#88bad6}
.factory-tag{display:inline-flex;align-items:center;gap:7px;font-size:10px;font-weight:700;
 border:1px solid #326481;border-radius:20px;padding:6px 10px;background:#0d354e;color:#8ed6f4}
.factory-tag .dot{width:6px;height:6px;display:inline-block;border-radius:50%;background:currentColor}
.factory-tag.alert{color:#f7bc87;background:#30261f;border-color:#815435}
.factory-layout .panel{min-height:225px}
.factory-layout .panel:first-child,.validation-layout .panel:first-child{border-color:#2b6b8d}
.factory-template-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.factory-template{border-radius:9px;background:#0d2d48;border:1px solid #335774;padding:14px;min-height:96px}
.factory-template .template-icon{font-size:17px;color:#76bff6;display:inline-grid;place-items:center;
 height:28px;width:28px;border-radius:8px;background:#18466c}
.factory-template b{display:block;color:#e1f4ff;margin-top:10px;font-size:12px}
.factory-template span{color:#85afca;font-size:10px;display:block;margin-top:6px;line-height:1.5}
.factory-builder{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.factory-field{border:1px solid #2f5371;border-radius:8px;background:#0a263c;padding:11px 12px;min-height:67px}
.factory-field label{display:block;color:#89adc9;font-size:10px}
.factory-field strong{display:block;margin-top:9px;font-size:11px;color:#c6dded}
.factory-field strong.unknown{color:#fac47f}
.factory-sensitivity{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;padding:10px 0 7px;max-height:200px}
.factory-sensitivity .blank{height:31px;background:#122f48;border:1px dashed #2a536f;border-radius:5px;display:grid;place-items:center;color:#6a9ab6;font-size:10px}
.factory-sensitivity .blank:nth-child(4n){background:#162b49}
.factory-scatter{height:230px;border-radius:9px;border:1px solid #31516b;position:relative;overflow:hidden;
 background:linear-gradient(0deg,#0c283d55 1px,transparent 1px),
 linear-gradient(90deg,#0c283d55 1px,transparent 1px),#0a2236;background-size:100% 38px,48px 100%,auto}
.factory-scatter:before{content:"";position:absolute;top:13px;bottom:34px;left:39px;width:1px;background:#4a7e9b}
.factory-scatter:after{content:"";position:absolute;bottom:34px;left:39px;right:14px;height:1px;background:#4a7e9b}
.factory-scatter .axis-y{position:absolute;top:10px;left:10px;writing-mode:vertical-rl;transform:rotate(180deg);font-size:10px;color:#7fabc6}
.factory-scatter .axis-x{position:absolute;bottom:9px;right:14px;font-size:10px;color:#7fabc6}
.factory-scatter .scatter-empty{position:absolute;inset:32px 22px 48px 56px;display:grid;place-items:center;
 border:1px dashed #3a5971;border-radius:9px;color:#8db3cb;text-align:center;font-size:11px;background:#091e30d4;padding:12px}
.factory-scatter .scatter-empty strong{display:block;color:#b9d7e8;margin-bottom:6px}
.alpha-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.alpha-status-tile{padding:13px 14px;border:1px solid #325976;border-radius:9px;background:#0b2b41}
.alpha-status-tile small{font-size:10px;color:#85b5d3;display:block}
.alpha-status-tile strong{font-size:24px;color:#d8ebfc;display:block;margin-top:9px}
.alpha-status-tile.validated{border-color:#316b66;background:#102e39}
.alpha-status-tile.validated strong{color:#62dab5}
.alpha-status-tile.failed{border-color:#764e58;background:#332431}
.alpha-status-tile.failed strong{color:#ec9aa9}
.alpha-status-tile.unknown strong{color:#ecc38c}
.factory-failure-list{display:grid;gap:10px;padding-top:5px}
.factory-failure-row{display:grid;grid-template-columns:minmax(0,1fr) 36px;gap:12px;padding:10px 12px;background:#0c293e;border:1px solid #32506a;border-radius:7px;color:#cce5f5;font-size:11px}
.factory-failure-row strong{color:#f5ad99;text-align:right}
.factory-quiet-note{font-size:10px;color:#8cafc9;line-height:1.7;padding:9px 11px;margin-top:12px;
 background:#0a283c;border:1px solid #30506b;border-radius:7px}
.factory-quiet-note.warn{color:#e9bc85;border-color:#74543b;background:#32261d}
.validation-cockpit .panel h2{letter-spacing:.12px}
.validation-gate{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.validation-gate-item{border:1px solid #6d553b;background:#31291f;border-radius:8px;padding:13px}
.validation-gate-item strong{font-size:12px;display:block;color:#f5d59b}
.validation-gate-item span{font-size:10px;display:block;margin-top:8px;color:#c8af85}
.validation-gate-lock{display:flex;align-items:center;gap:12px;padding:12px;margin-top:12px;border-radius:8px;
 border:1px solid #855066;background:#351f30;color:#f6b4c6;font-size:11px;font-weight:700}
.validation-series-legend{display:flex;align-items:center;gap:13px;flex-wrap:wrap;margin-bottom:13px;font-size:10px;color:#98bacf}
.validation-series-legend .key{display:inline-block;height:7px;width:19px;border-radius:4px;margin-right:5px;vertical-align:middle}
.validation-series-legend .train{background:#55aff0}.validation-series-legend .oos{background:#52d5b3}.validation-series-legend .holdout{background:#b895ef}
.validation-empty-plot{height:232px;border:1px solid #305573;border-radius:9px;display:grid;place-items:center;text-align:center;
 background:repeating-linear-gradient(to bottom,transparent 0 44px,#315b7620 44px 45px),
 repeating-linear-gradient(to right,transparent 0 65px,#315b7620 65px 66px),#0b2539;padding:25px;color:#8bb1c8}
.validation-empty-plot b{display:block;color:#d0e6f7;font-size:13px;margin-bottom:7px}
.validation-empty-plot small{font-size:10px;line-height:1.7;max-width:430px;display:block}
.validation-stress-list{display:grid;gap:9px}
.validation-stress{display:grid;grid-template-columns: 1fr auto;align-items:center;gap:10px;background:#0c283f;border:1px solid #31516b;border-radius:7px;padding:11px}
.validation-stress span{font-size:11px;color:#bdd8ec}
.validation-stress strong{font-size:10px;font-weight:700;color:#f6c080}
.validation-record-note{color:#90b0c9;font-size:10px;line-height:1.6;margin:9px 0 0}
@media(max-width:1549px){
 .factory-cockpit .kpis,.validation-cockpit .kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
 .factory-pipeline{grid-template-columns:repeat(3,minmax(0,1fr))}
 .factory-stage:nth-child(3):after{content:none}
}
@media(max-width:1050px){
 .factory-pipeline{grid-template-columns:repeat(2,minmax(0,1fr))}
 .factory-stage:nth-child(3):after{content:"›"}
 .factory-stage:nth-child(2n):after{content:none}
 .factory-builder{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
 .factory-cockpit .kpis,.validation-cockpit .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
 .factory-template-grid,.validation-gate{grid-template-columns:1fr}
 .factory-builder{grid-template-columns:1fr 1fr}
 .factory-scatter{height:205px}
}

/* Visual fidelity: six named factor categories, no pretend inventory numbers. */
.factor-library-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.factor-mini-card{min-width:0;min-height:117px;padding:12px 10px;
 border:1px solid #315f7c;border-radius:9px;background:linear-gradient(150deg,#143754,#0d263d)}
.factor-mini-card:nth-child(3n + 2){border-color:#286e70;background:linear-gradient(150deg,#123c47,#0d2939)}
.factor-mini-card:nth-child(3n){border-color:#585081;background:linear-gradient(150deg,#292c52,#16243e)}
.factor-mini-card .factor-symbol{display:grid;place-items:center;
 width:28px;height:28px;border-radius:8px;background:#245d8d;color:#8de5fa;font-size:17px}
.factor-mini-card b{display:block;color:#dbf0ff;font-size:11px;margin-top:9px}
.factor-mini-card span:not(.factor-symbol){display:block;color:#81abc8;font-size:10px;margin-top:3px}
.factor-mini-card small{display:block;margin-top:10px;color:#f2c081;font-size:9px}
.factor-failure-layout{display:grid;grid-template-columns:140px minmax(0,1fr);gap:17px;align-items:center;padding:12px 0 7px}
.factor-donut{height:130px;width:130px;border-radius:50%;display:grid;place-items:center;
 border:1px solid #4c6d87;box-shadow:0 0 23px #21659f36}
.factor-donut-hole{width:84px;height:84px;border-radius:50%;display:grid;place-content:center;
 text-align:center;border:1px solid #294a66;background:#0a2236}
.factor-donut-hole strong{font-size:26px;color:#edf8ff}
.factor-donut-hole small{font-size:10px;color:#9ebbd2;margin-top:4px}
.factor-failure-legend{display:grid;gap:7px;max-height:210px;overflow:auto;min-width:0}
.factor-legend-row{display:grid;grid-template-columns:9px minmax(0,1fr) auto;align-items:center;gap:8px}
.factor-legend-row .legend-dot{width:8px;height:8px;border-radius:50%}
.factor-legend-row .legend-label{font-size:10px;color:#aecde4;overflow-wrap:anywhere}
.factor-legend-row strong{font-size:11px;color:#edf3ff}
@media(max-width:1050px){.factor-library-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){
 .factor-library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .factor-failure-layout{grid-template-columns:1fr;justify-items:center}
 .factor-failure-legend{width:100%}
}
