.factory-section{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;border:1px solid #668a8940;border-radius:20px;background:#101f2bdd}.factory-section[hidden],.galaxy-section[hidden]{display:none}.factory-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:18px 22px;border-bottom:1px solid #8aafab30}.factory-heading h2{margin:3px 0;font:25px Georgia;color:#e2d4ae}.factory-heading p{font-size:12px;color:#9eb7b9;margin:0}.factory-toolbar{display:flex;align-items:center;gap:8px}.factory-toolbar button{padding:8px 12px}.factory-viewport{flex:1;overflow:auto;min-height:0;position:relative;overscroll-behavior:contain;background:radial-gradient(circle,#81b7b619 1px,transparent 1px),radial-gradient(ellipse at 30% 20%,#36565760,transparent 70%);background-size:24px 24px,100% 100%}.factory-scroll-space{position:relative}.factory-plane{position:absolute;inset:0 auto auto 0;transform-origin:0 0}.factory-nodes,.factory-links{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.factory-links{overflow:visible}.factory-links .connection-path{fill:none;stroke:var(--wire);stroke-width:2;opacity:.35}.factory-links .flowing .connection-path{opacity:.85;stroke-width:3;filter:drop-shadow(0 0 4px var(--wire))}.wire-badge{pointer-events:all;cursor:help}.wire-badge circle,.wire-delivery circle{fill:#122b35;stroke:currentColor;stroke-width:1.4}.wire-delivery{opacity:0;pointer-events:none}.flowing .wire-delivery{opacity:1}.resource-icon{width:22px;height:22px;vertical-align:middle;flex-shrink:0}.factory-card{position:absolute;width:216px;min-height:318px;pointer-events:auto;border:1px solid var(--card-accent);border-radius:12px;padding:8px;background:linear-gradient(150deg,color-mix(in srgb,var(--card-accent) 15%,#162732),#13252f 65%);box-shadow:0 15px 30px #0008,inset 0 0 0 3px #1a3038;isolation:isolate}.factory-card.selected{outline:2px solid #a5e7d7;outline-offset:4px;box-shadow:0 0 25px #82d8ba35}.factory-card header{height:52px;text-align:center;cursor:grab;touch-action:none;border-bottom:1px solid #bed4b625}.factory-card header>span{position:absolute;top:-14px;left:94px;background:#17313a;border:1px solid var(--card-accent);border-radius:6px;padding:3px 6px;color:var(--card-accent)}.factory-card h3{font:17px Georgia;color:#f2e4c3;margin:10px 0 3px}.factory-card header small{font-size:9px;letter-spacing:.7px;color:#a5bcb9}.factory-art{height:120px;border:1px solid #a3c4b22c;border-radius:6px;overflow:hidden;background:radial-gradient(ellipse at center,#44625c55,#132631)}.factory-art svg{width:100%;height:100%}.factory-recipe{min-height:73px;text-align:center;padding:10px 7px;font-size:12px;background:linear-gradient(#d4caac,#bbb394);color:#20333c;line-height:1.6;border-radius:0 0 4px 4px}.factory-recipe b{display:block;line-height:1}.factory-progress{height:4px;background:#0b1924;margin:6px 0}.factory-progress i{display:block;height:100%;background:#8edeae;transition:width .4s}.factory-status{display:flex;align-items:center;gap:5px;color:#c6d1cb;font-size:11px;min-height:26px;line-height:1.4}.factory-card.off .factory-art{filter:saturate(.35)}.factory-card .status-dot:not(.healthy){background:#ff9e53;box-shadow:0 0 8px #ff9e5370;animation:factory-attention 2s infinite}.factory-card .status-dot.healthy{background:#85e3b5;box-shadow:0 0 8px #85e3b570;animation:none}.factory-ports{position:absolute;top:160px;display:flex;flex-direction:column;gap:5px}.factory-ports.inputs{left:-12px}.factory-ports.outputs{right:-12px}.factory-port{position:relative;display:flex;align-items:center;justify-content:center;width:22px;height:22px;min-height:22px;padding:0;border-radius:50%;border:1px solid #a2c7bd;background:#142831}.factory-port i{width:6px;height:6px;border-radius:50%;background:#b4d5c9}.factory-port span{position:absolute;white-space:nowrap;font-size:10px;background:#11242ee8;padding:2px 5px;border-radius:4px;color:#d8e3d5;pointer-events:none}.factory-port.out span{left:28px}.factory-port.in span{right:28px}.factory-port.port-selected,.factory-port.port-ready{border-color:#ff9e53;box-shadow:0 0 10px #ff9e5370;animation:factory-attention 1.5s infinite}.factory-card.intake{min-height:500px}.factory-card.intake .factory-status{max-width:170px}.factory-purpose{font-size:12px;color:#b7c9c7;line-height:1.7;margin:10px 0 20px}.factory-shop{display:grid;gap:10px}.factory-blueprint{display:flex;align-items:center;border:1px solid #849f8930;background:#20343b66;padding:9px;border-radius:10px;gap:8px}.factory-mini-art{width:78px;height:80px;flex-shrink:0}.factory-mini-art svg{width:100%;height:100%}.factory-blueprint h4{font:15px Georgia;margin:0 0 7px}.factory-blueprint button{font-size:11px;padding:6px 10px}.factory-blueprint .cost-list{margin:0 0 8px}.factory-blueprint.locked{opacity:.55}.factory-research{margin-top:24px}.factory-research article{border-top:1px solid #87a69d30;padding:12px 0}.factory-research h4{margin:0}.factory-research p{font-size:12px;color:#a7bdba;line-height:1.6}.factory-complete{color:#8ee4b0}.factory-inspector-art{height:150px}.factory-inspector-art svg{height:100%;width:100%}.factory-inspector-status{font-size:13px;color:#e2d5a8}.factory-stores h3{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#9bb2b5}.factory-stores p{font-size:13px}.factory-inspector-actions{display:flex;gap:5px;flex-wrap:wrap}.factory-links-title{margin-top:25px}.factory-link-row{display:flex;justify-content:space-between;gap:8px;font-size:11px;padding:10px 0;border-bottom:1px solid #8ba79825}.factory-link-row b{display:block;color:#cfbf90;margin-top:5px}.factory-link-row button{padding:5px 10px}.factory-footer{display:flex;align-items:center;gap:12px;padding:12px 18px;font-size:12px;color:#b5c7c4}.factory-route-row{padding:14px;border:1px solid #8aad9b50;border-radius:12px;margin-bottom:12px;background:#1a333b}.factory-route-row h4{margin:0 0 9px}.factory-route-row p{font-size:12px;line-height:1.7;color:#b8c9c5}.factory-route-row .route-state{color:#9de5bd}.factory-route-row .route-state.waiting{color:#ffa361}.factory-route-row .route-state.critical{color:#ff8f88}.route-actions{display:flex;gap:8px}.route-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.route-fields label{font-size:13px;display:flex;flex-direction:column;gap:8px}.route-fields input,.route-fields select{width:100%;padding:10px;background:#132731;color:#e0e4d6;border:1px solid #809d9755;border-radius:7px}.route-fields .wide{grid-column:1/-1}.resource-bar{overflow-x:auto;min-width:0}.resource-chip{min-width:72px}.workspace-tabs{flex-wrap:wrap}.factory-guide{border:1px solid #ff9e5355;background:#4e372925;border-radius:10px;padding:13px;font-size:12px;line-height:1.7}.factory-guide strong{color:#ffc28c;display:block;margin-bottom:5px}.factory-guide ol{padding-left:18px;margin:6px 0}.factory-guide li.done{color:#91dbb3}.factory-guide li.current{color:#ffd3a4}.route-empty{color:#a2bbb7;font-size:12px;line-height:1.7}@keyframes factory-attention{50%{box-shadow:0 0 15px #ff9e5380}}
@media(max-width:1100px){.factory-heading{padding:14px}.factory-heading h2{font-size:20px}.factory-toolbar{gap:3px}.factory-toolbar button{padding:7px}.factory-footer{font-size:11px}}@media(max-width:880px){.factory-section{min-height:600px}.factory-heading{flex-wrap:wrap}.factory-viewport{height:540px;flex:none}.factory-section{order:0}.factory-footer{flex-wrap:wrap}.resource-chip{min-width:70px}}@media(prefers-reduced-motion:reduce){.factory-card *,.factory-port,.factory-card .status-dot{animation:none!important}.wire-delivery{display:none!important}.factory-progress i{transition:none}}

@media(min-width:881px){.factory-section{height:100%}.factory-footer{margin:0;flex-shrink:0}.factory-heading{flex-shrink:0}}

/* Category footprints are authoritative geometry, not scaled-down detail cards.
   All detailed controls and named ports remain full-sized in the inspector. */
.factory-card.compact-card{box-sizing:border-box;width:var(--card-width);height:var(--card-height);min-height:0;padding:0;border-radius:9px;box-shadow:0 6px 12px #0006,inset 0 0 0 2px #1a3038}
.factory-card.compact-card header{box-sizing:border-box;height:100%;text-align:left;padding:11px 13px 14px 66px;border:0;overflow:hidden;display:flex;flex-direction:column;justify-content:center;gap:3px}
.factory-card.compact-card h3,html[data-reading="large"] .factory-card.compact-card h3{font:600 13px/1.2 system-ui,sans-serif;margin:0;color:#f1e5c9;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.factory-card.compact-card header small,html[data-reading="large"] .factory-card.compact-card header small{font:10px/1.2 system-ui,sans-serif;color:#a8c5bd;letter-spacing:.5px}
.factory-card.compact-card .factory-compact-art{position:absolute;left:9px;top:50%;width:50px;height:48px;transform:translateY(-50%);overflow:hidden;pointer-events:none}
.factory-compact-art>svg{display:block;width:100%;height:100%}
.factory-card.compact-card .factory-status{position:absolute;top:5px;right:5px;min-height:0;padding:0;line-height:1}
.factory-card.compact-card .factory-status span:last-child{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.factory-card.compact-card .factory-status .status-dot{width:6px;height:6px;min-width:6px}
.factory-card.compact-card .factory-progress{position:absolute;left:6px;right:6px;bottom:4px;height:3px;margin:0;border-radius:2px;overflow:hidden}
.factory-card.compact-card[data-category="heavy"]{border-top-width:4px;background:linear-gradient(130deg,color-mix(in srgb,var(--card-accent) 20%,#1d313a),#142a32)}
.factory-card.compact-card[data-category="heavy"] .factory-compact-art{width:64px;height:66px;left:8px}
.factory-card.compact-card[data-category="heavy"] header{padding-left:81px}
.factory-card.compact-card[data-category="routing"]{border-radius:15px;background:linear-gradient(135deg,#274e4c,#153037)}
.factory-card.compact-card[data-category="routing"] header{padding:4px 3px 10px;text-align:center;justify-content:flex-end;gap:0}
.factory-card.compact-card[data-category="routing"] h3{font-size:10px;line-height:11px;-webkit-line-clamp:1}
.factory-card.compact-card[data-category="routing"] header small{display:none}
.factory-card.compact-card[data-category="routing"] .factory-compact-art{left:19px;top:8px;transform:none;width:32px;height:32px}
.factory-card.compact-card[data-category="power"]{border-radius:24px}
.factory-card.compact-card[data-category="power"] header{padding:52px 10px 14px;text-align:center}
.factory-card.compact-card[data-category="power"] .factory-compact-art{left:32px;top:8px;transform:none;width:42px;height:42px}
.factory-card.compact-card[data-category="power"] h3{font-size:11px;line-height:12px}
.factory-card.compact-card[data-category="storage"]{border-radius:5px;border-bottom-width:4px}
.factory-card.compact-card[data-category="storage"] header{padding-left:55px}
.factory-card.compact-card[data-category="storage"] .factory-compact-art{left:4px;width:47px;height:53px}
.factory-flow-symbol{fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;color:#8ee2ca}
.factory-socket{box-sizing:border-box;position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;min-height:44px;padding:0;border:0;border-radius:50%;background:transparent;color:#d2ece2;display:grid;place-items:center;isolation:isolate}
.factory-socket::before{content:"";position:absolute;inset:12px;border-radius:50%;border:1px solid #8aaea2;background:#19373c;z-index:-1}
.factory-socket.in{left:-22px}.factory-socket.out{right:-22px}.factory-socket span{font-size:20px;line-height:1;pointer-events:none}
.factory-socket.port-ready::before,.factory-socket.port-selected::before{border-color:#ffb16b;background:#785034;box-shadow:0 0 7px #ff9e5370}
.factory-socket:focus-visible{outline:2px solid #a8e7cd;outline-offset:-6px}
.factory-port-picker,.factory-flow-controls{border-top:1px solid #72998b40;margin-top:20px;padding-top:14px}
.factory-port-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.factory-port-choice{display:flex;align-items:center;gap:7px;min-height:44px;min-width:0;padding:8px;white-space:normal;text-align:left;font-size:13px}
.factory-port-choice span:last-child{overflow-wrap:anywhere}.factory-port-picker h4{margin:12px 0 7px;font-size:12px;color:#a6c4b8}
.factory-control-form{display:flex;align-items:flex-end;gap:7px;margin:12px 0;min-width:0}
.factory-control-form label{flex:1;min-width:0;display:grid;gap:6px;font-size:13px}
.factory-control-form input,.factory-control-form select{box-sizing:border-box;min-width:0;width:100%;min-height:44px;background:#122b32;border:1px solid #749c8b77;border-radius:7px;color:#e1e9d8;padding:8px;font-size:14px}
.factory-control-form button{min-height:44px;flex-shrink:0;padding:8px 10px;font-size:12px}.factory-energy{font-size:14px;color:#b0ddcf}
.factory-inspector-art>.factory-flow-symbol,.factory-mini-art>.factory-flow-symbol{max-width:100%;height:100%;display:block;margin:auto}
.factory-wire.wire-dimmed{opacity:.08}
.factory-card.compact-card.edition-copper{background-image:linear-gradient(135deg,#ad754922,transparent 55%);box-shadow:inset 0 -3px #b9875c}
.factory-card.compact-card.edition-awakened{box-shadow:inset 0 0 0 2px #b9cfb3,inset 0 -5px #698d64}.factory-card.compact-card.edition-awakened::after{content:'✧';position:absolute;left:7px;bottom:8px;color:#e3dfbd;font-size:17px;pointer-events:none}
.factory-card.compact-card{background-image:linear-gradient(145deg,color-mix(in srgb,var(--card-accent) 16%,#18333d),#10252f);transition:outline-color .16s,box-shadow .16s}
.factory-card.compact-card .factory-compact-art{left:5px;width:60px;height:51px;border-radius:5px}
.factory-card.compact-card[data-category="heavy"] .factory-compact-art{left:4px;width:77px;height:72px}
.factory-card.compact-card[data-category="routing"]{background-image:linear-gradient(145deg,color-mix(in srgb,var(--card-accent) 23%,#18333d),#10252f)}
.factory-card.compact-card[data-category="routing"] .factory-compact-art{left:5px;top:4px;width:60px;height:43px}
.factory-card.compact-card[data-category="power"] .factory-compact-art{left:13px;top:5px;width:80px;height:48px}
.factory-card.compact-card[data-category="storage"] .factory-compact-art{left:2px;width:53px;height:64px}
.factory-card.compact-card[data-tier="2"]{box-shadow:0 6px 12px #0006,inset 0 0 0 2px #b8965c77}
.factory-card.compact-card[data-tier="3"]{box-shadow:0 6px 12px #0006,inset 0 0 0 2px #b7cbd08c,inset 0 0 0 5px #b89a5c44}
.factory-card.compact-card[data-tier="2"]::before,.factory-card.compact-card[data-tier="3"]::before{content:"";position:absolute;left:9px;top:2px;width:24px;height:2px;background:#d7bd82;box-shadow:0 3px #d7bd82;pointer-events:none}
.factory-card.compact-card[data-tier="3"]::before{width:33px;background:#c6d7db;box-shadow:0 3px #c6d7db,0 6px #c6d7db}
.factory-card.compact-card.selected{outline:2px solid #a5e7d7;outline-offset:4px}
.factory-card.compact-card.traced{outline:2px solid #ffb574;outline-offset:5px}
.factory-blueprint[data-machine]{border-color:color-mix(in srgb,var(--card-accent) 28%,transparent);background:linear-gradient(145deg,color-mix(in srgb,var(--card-accent) 7%,#19313a),#142a32)}
.factory-blueprint .factory-build-footprint{display:block;font-size:10px;color:#aac4bd;letter-spacing:.6px;margin-top:-3px;margin-bottom:5px}
.factory-card[data-severity="critical"] .status-dot{background:#f48f83;box-shadow:0 0 6px #f48f8340;animation:none}
.factory-wire-lens{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;padding:10px 18px;border-bottom:1px solid #72998b30;font-size:12px;min-width:0}
.factory-wire-lens label{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.factory-wire-lens select{max-width:100%;min-height:44px;padding:8px;border:1px solid #72998b70;border-radius:7px;background:#142c34;color:#e0ece6}.factory-wire-lens small{flex-basis:100%;color:#a8c2b9}
.recipe-comparison{margin-top:18px;border-top:1px solid #72998b40;padding-top:12px}.recipe-comparison>p{font-size:12px;color:#b4c9bf}.recipe-comparison-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:10px}
.recipe-choice{min-width:0;padding:12px;border:1px solid #71978b70;border-radius:9px;background:#102830}.recipe-choice.selected{border-color:#e0ba78}.recipe-choice h4{margin:0 0 8px;overflow-wrap:anywhere}.recipe-choice>strong{font-size:11px;color:#e0ba78}.recipe-choice dl{margin:10px 0;font-size:12px}.recipe-choice dt{color:#adc7bd;margin-top:8px}.recipe-choice dd{margin:3px 0;overflow-wrap:anywhere}.recipe-choice h5{margin:12px 0 8px}.recipe-choice button{width:100%;min-height:44px;white-space:normal;margin-top:10px}.recipe-input{display:grid;gap:4px;border-top:1px solid #72998b30;padding:8px 0;font-size:12px}.recipe-input small{color:#b0c6bc}.recipe-input span{font-size:11px}
.factory-card.compact-card header,.factory-card.compact-card[data-category] header{height:49px;padding:6px 18px 4px 68px;text-align:left;justify-content:center;gap:2px}.factory-card.compact-card h3,.factory-card.compact-card[data-category] h3{font-size:14px;line-height:16px;-webkit-line-clamp:2}.factory-card.compact-card header small{font-size:10px}.factory-card.compact-card .factory-compact-art,.factory-card.compact-card[data-category] .factory-compact-art{left:6px;top:3px;transform:none;width:55px;height:42px}.factory-card.compact-card .factory-status{top:auto;bottom:9px;left:10px;right:10px;gap:5px}.factory-card.compact-card .factory-status span:last-child{position:static;width:auto;height:auto;clip-path:none;font-size:10px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.factory-card.compact-card .factory-status .status-dot{flex-shrink:0}.machine-rates{padding:0 11px 22px;font:12px/1.25 system-ui,sans-serif;pointer-events:none}.machine-rate-caption{display:flex;justify-content:space-between;gap:8px;color:#a7bdb8;font-size:10px;border-top:1px solid #72998b30;padding:3px 0}.machine-rate-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px}.machine-rate-columns section{min-width:0}.machine-rate-columns h4{font-size:11px;text-transform:uppercase;letter-spacing:.4px;margin:0 0 3px;color:#d0ddcc}.machine-rate-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px;align-items:baseline;min-height:18px}.machine-rate-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.machine-rate-row b{color:#f0ddb8;font-variant-numeric:tabular-nums}.machine-rate-row small{color:#89d0b3;font-size:11px;min-width:22px;text-align:right;font-variant-numeric:tabular-nums}.machine-rate-columns p{margin:0;color:#a7bdb8;font-size:11px}.machine-rate-foot{display:flex;justify-content:space-between;gap:5px;font-size:10px;margin-top:3px;color:#a7bdb8}.machine-power-rate,.machine-passive-rate{display:grid;gap:6px;padding:9px 0;margin:0;color:#b7d1c4}.machine-power-rate b,.machine-passive-rate b{font-size:18px;color:#e0dac2}.factory-card.compact-card[data-category="routing"] header{height:61px;padding:4px 8px 0;text-align:center}.factory-card.compact-card[data-category="routing"] .factory-compact-art{display:none}.factory-card.compact-card[data-category="routing"] h3{font-size:13px;line-height:16px}.factory-card.compact-card[data-category="routing"] .machine-rates{font-size:11px;text-align:center}.factory-card.compact-card[data-category="routing"] .machine-passive-rate{padding:0;gap:4px}.factory-card.compact-card[data-category="routing"] .machine-passive-rate b{font-size:12px}.factory-card.compact-card[data-category="power"]{border-radius:16px}
