@font-face{font-family:NaikaiFont-Bold;src:url(/fonts/NaikaiFont-Bold.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--grid-size: 40px;--gray-light: #e5e1e1;--gray: #c4c1c1;--gray-dark: #5f5d5d;--yellow-light: #f5f08a;--yellow: #fffa00;--black-light: #3d3d3d;--black: rgb(29, 29, 29, .8);--black-dark: #121212;--green: #abcd41;--orange-light: #ffcc00;--orange: #e79c3a;--orange-dark: #d17700}body{margin:0;padding:0;font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;background-color:var(--gray-light);color:#fff;overflow:hidden}*{box-sizing:border-box}.gray-btn{background-color:var(--gray-light);border:2px solid var(--gray-light);box-shadow:inset 0 0 2px #000c,0 4px 4px #00000080;border-radius:999px;min-width:120px;color:var(--gray-dark);font-weight:700;transition:all .2s}.gray-btn:hover{transform:translateY(-2px)}.yellow-btn{background-color:var(--yellow);border:2px solid var(--yellow);box-shadow:inset 0 0 2px #000c,0 4px 4px #00000080;border-radius:999px;min-width:120px;color:var(--gray-dark);font-weight:700;transition:all .2s}.yellow-btn:hover{transform:translateY(-2px)}html[lang=zh-CN] body{font-family:Microsoft YaHei,SimHei,Noto Sans SC,sans-serif!important}.machine-container{user-select:none;-webkit-user-select:none;position:absolute;left:calc(var(--x) * var(--grid-size));top:calc(var(--y) * var(--grid-size));width:calc(var(--w) * var(--grid-size));height:calc(var(--h) * var(--grid-size));padding:3px;z-index:10}.machine-container:hover{z-index:2000}.machine-body{width:100%;height:100%;background-color:transparent;border:3px solid var(--gray-dark);border-radius:1px;position:relative;display:flex;align-items:center;justify-content:center;box-shadow:none;box-sizing:border-box}.machine-body.has-skin{border:none;background-color:transparent;overflow:visible}.machine-body .machine-skin{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;z-index:1;transform-origin:center}.machine-body .machine-toolbar-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:2;opacity:.82;filter:drop-shadow(0 1px 2px rgba(0,0,0,.35))}.machine-body .machine-toolbar-overlay img{width:100%;height:100%;object-fit:contain}.machine-body .machine-conduit-status{position:absolute;top:0;right:0;z-index:8;padding:3px 7px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:#181818eb;color:var(--gray-light);font-size:11px;font-weight:700;line-height:1;letter-spacing:.04em;transform-origin:center;pointer-events:none}.machine-body .machine-conduit-status.connected{background:#144a2ef0;color:#dff8e9}.machine-body .machine-conduit-status.disconnected{background:#5b3f1ff0;color:#ffe1c0}.machine-body .machine-simulation-status,.machine-body .machine-simulation-progress{position:absolute;z-index:9;transform-origin:center;pointer-events:none}.machine-body .machine-simulation-status{top:0;left:0;padding:3px 7px;border-radius:999px;border:1px solid rgba(255,255,255,.16);background:#181818eb;color:var(--gray-light);font-size:11px;font-weight:700;line-height:1;letter-spacing:.04em}.machine-body .machine-simulation-status--running{background:#135839f0;color:#e4faed}.machine-body .machine-simulation-status--waiting-input{background:#6a5022f0;color:#ffe4b5}.machine-body .machine-simulation-status--blocked-output{background:#7d3e18f0;color:#ffd0a8}.machine-body .machine-simulation-status--paused-power{background:#5b2222f0;color:#ffd2d2}.machine-body .machine-simulation-status--unsupported{background:#393939f0;color:#ececec}.machine-body .machine-simulation-progress{left:50%;bottom:8px;width:calc(100% - 20px);height:8px;border-radius:999px;background:#00000075;border:1px solid rgba(255,255,255,.08);overflow:hidden;translate:-50% 0}.machine-body .machine-simulation-progress__fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,#fff0a8,#f5d548);transition:width .12s linear}.machine-body .machine-label{position:absolute;inset:100% auto auto 100%;background-color:var(--black);color:#fff;padding:4px 8px;border-radius:4px 12px 4px 4px;border-top:4px solid var(--green);font-weight:400;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .2s;z-index:1000;box-shadow:0 2px 4px #0003;font-size:12px}.machine-body .machine-label>div:first-child{font-size:16px}.machine-body:hover .machine-label{opacity:1}.machine-container{border:2px solid transparent;border-radius:2px;box-sizing:border-box}.machine-container:hover{border-color:#fff;box-shadow:0 0 8px #2d2d2d99}.machine-container.conduit-link-target{border-color:#6ec7ffe6;box-shadow:0 0 18px #6ec7ff6b}.machine-container.conduit-link-source{border-color:#ffd763f2;box-shadow:0 0 20px #ffd7636b}.machine-container.conduit-link-blocked{opacity:.38}.machine-container.whole-cell-wiring .machine-skin{z-index:6}.machine-container.whole-cell-wiring .port,.machine-container.whole-cell-wiring .port *{pointer-events:none}.port{position:absolute;width:20px;height:28px;background-color:#c4c1c1;border:1.5px solid var(--gray-dark);border-radius:0;display:flex;align-items:center;justify-content:center;font-size:0;z-index:4}.port.left{justify-content:flex-start;padding:3px 4px 3px 0}.port.right{justify-content:flex-end;padding:3px 0 3px 4px}.port.top{width:28px;height:20px;align-items:flex-start;padding:0 3px 4px}.port.bottom{width:28px;height:20px;align-items:flex-end;padding:4px 3px 0}.port-inner{width:100%;height:100%;background-color:var(--gray-light);display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--gray-dark);font-family:monospace;font-weight:700;line-height:1}.machine-port-index{position:absolute;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:999px;border:1.5px solid #1f5d84;background:#f6fbff;color:#1f5d84;font-size:11px;font-weight:800;line-height:1;box-shadow:0 2px 6px #00000038;pointer-events:none}.machine-port-index--right{right:calc(100% + 4px);top:50%;transform:translateY(-50%)}.machine-port-index--left{left:calc(100% + 4px);top:50%;transform:translateY(-50%)}.machine-port-index--bottom{bottom:calc(100% + 4px);left:50%;transform:translate(-50%)}.machine-port-index--top{top:calc(100% + 4px);left:50%;transform:translate(-50%)}.machine-port-flow-indicator{position:absolute;min-width:46px;height:22px;display:inline-flex;align-items:center;gap:4px;padding:2px 6px 2px 4px;border-radius:999px;border:1px solid rgba(255,255,255,.16);background:#121318f0;color:#f3f7fb;font-size:11px;font-weight:700;line-height:1;box-shadow:0 3px 10px #00000047;pointer-events:none;transform-origin:center;z-index:5}.machine-port-flow-indicator--right{left:calc(100% + 8px);top:50%}.machine-port-flow-indicator--left{right:calc(100% + 8px);top:50%}.machine-port-flow-indicator--bottom{top:calc(100% + 8px);left:50%}.machine-port-flow-indicator--top{bottom:calc(100% + 8px);left:50%}.machine-port-flow-indicator__icon,.machine-port-flow-indicator__fallback{width:14px;height:14px;flex:0 0 14px;border-radius:3px}.machine-port-flow-indicator__icon{object-fit:contain}.machine-port-flow-indicator__fallback{display:inline-flex;align-items:center;justify-content:center;background:#ffffff29;color:inherit;font-size:10px;font-weight:800}.machine-port-flow-indicator__rate{white-space:nowrap}.port.uniform-router-port{border-width:1.5px;border-radius:2px}.port.uniform-router-port.left,.port.uniform-router-port.right{width:10px;height:20px}.port.uniform-router-port.top,.port.uniform-router-port.bottom{width:20px;height:10px}.port.uniform-router-port.left{padding:2px 2px 2px 0}.port.uniform-router-port.right{padding:2px 0 2px 2px}.port.uniform-router-port.top{padding:0 2px 2px}.port.uniform-router-port.bottom{padding:2px 2px 0}.port.uniform-router-port .port-inner svg{width:12px;height:12px}.port.fluid-port{background-color:#84d7ff;border-color:#1f5d84}.port.fluid-port .port-inner{background-color:#e2f6ff}.port.input .port-inner svg,.port.output .port-inner svg{width:100%;height:100%;color:var(--gray);display:block}.port.fluid-port .port-inner svg{color:#1f5d84}.port.shrink-depth,.port.shrink-length{border-width:1px;padding:1px}.port.shrink-depth .port-inner svg,.port.shrink-length .port-inner svg{width:12px;height:12px}.port.shrink-depth.left,.port.shrink-depth.right{width:8px}.port.shrink-depth.top,.port.shrink-depth.bottom{height:8px}.port.shrink-depth .port-inner svg{width:10px;height:10px}.port.shrink-length.left,.port.shrink-length.right{height:12px}.port.shrink-length.top,.port.shrink-length.bottom{width:12px}.port.shrink-length .port-inner svg{width:10px;height:10px}.port.shrink-depth.shrink-length.left{padding:1px 2px 1px 0}.port.shrink-depth.shrink-length.right{padding:1px 0 1px 2px}.port.shrink-depth.shrink-length.top{padding:0 1px 2px}.port.shrink-depth.shrink-length.bottom{padding:2px 1px 0}.port.shrink-depth:not(.shrink-length).left{padding:1px 2px 1px 0}.port.shrink-depth:not(.shrink-length).right{padding:1px 0 1px 2px}.port.shrink-depth:not(.shrink-length).top{padding:0 1px 2px}.port.shrink-depth:not(.shrink-length).bottom{padding:2px 1px 0}.port.left.input .port-inner svg{transform:rotate(0)}.port.top.input .port-inner svg{transform:rotate(90deg)}.port.right.input .port-inner svg{transform:rotate(180deg)}.port.bottom.input .port-inner svg{transform:rotate(270deg)}.port.right.output .port-inner svg{transform:rotate(0)}.port.bottom.output .port-inner svg{transform:rotate(90deg)}.port.left.output .port-inner svg{transform:rotate(180deg)}.port.top.output .port-inner svg{transform:rotate(270deg)}.port.output.clickable{cursor:pointer}.port.output.clickable:hover .port-inner{background:var(--yellow-light)}.port.fluid-port.output.clickable:hover .port-inner{background:#ccefff}.port.output.active{border-color:var(--yellow-light)}.port.output.active .port-inner{background:var(--yellow-light)}.port.fluid-port.output.active{border-color:#6ec7ff}.port.fluid-port.output.active .port-inner{background:#ccefff}.grid-container{width:100%;height:100%;position:relative;overflow:hidden;cursor:crosshair;background-color:var(--gray-light)}.grid-container.wiring-mode{cursor:alias}.grid-container.conduit-link-mode{cursor:pointer}.grid-container.panning{cursor:grabbing}.grid-container.rotating-view{cursor:wait}.zoom-content{position:absolute;top:0;left:0;transform-origin:0 0}.rotation-content{position:relative;width:100%;height:100%;will-change:transform}.grid-background{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;background-image:linear-gradient(var(--gray) 1px,transparent 1px),linear-gradient(90deg,var(--gray) 1px,transparent 1px);background-size:var(--grid-size) var(--grid-size);opacity:.5}.core-grid-boundary{position:absolute;pointer-events:none;border:4px solid var(--black-light);box-sizing:content-box;z-index:3}.connections-layer{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.connections-hit-layer{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.machine-container{z-index:10}.conveyor-line-outline,.conveyor-line-fill,.conveyor-preview-outline,.conveyor-preview-fill,.pipe-line-outline,.pipe-line-fill,.pipe-preview-outline,.pipe-preview-fill{fill:none;stroke-linecap:round;stroke-linejoin:round}.conveyor-line-outline{stroke:var(--gray);stroke-width:24}.conveyor-preview-outline{stroke:var(--gray);stroke-width:20;stroke-dasharray:10 10;opacity:.6}.conveyor-line-fill{stroke:var(--yellow-light);stroke-width:18}.conveyor-preview-fill{stroke:var(--yellow-light);stroke-width:13;stroke-dasharray:10 10;animation:dash 1s linear infinite}.pipe-line-outline{stroke:#142e44d9;stroke-width:12;transition:stroke .14s ease,stroke-width .14s ease,opacity .14s ease}.pipe-line-outline.empty{stroke:#142e4438;stroke-width:8}.pipe-line-fill{stroke:#6ec7ff;stroke-width:6;transition:stroke .14s ease,opacity .14s ease}.pipe-line-fill.empty{stroke:transparent}.pipe-preview-outline{stroke:#142e44d9;stroke-width:10;stroke-dasharray:8 8;opacity:.7}.pipe-preview-fill{stroke:#6ec7ff;stroke-width:4;stroke-dasharray:8 8;animation:dash 1s linear infinite}.connection-hit-line{fill:none;stroke:transparent;stroke-width:28;stroke-linecap:round;stroke-linejoin:round;pointer-events:stroke;cursor:pointer}.conveyor-flow-direction,.pipe-flow-direction{stroke-width:1.4;stroke-linejoin:round;pointer-events:none;transition:fill .14s ease,stroke .14s ease,opacity .14s ease}.conveyor-flow-direction{fill:#603d0ff2;stroke:#fff8d6eb;filter:drop-shadow(0 0 2px rgba(92,64,17,.22))}.conveyor-flow-direction.preview{fill:#764d11f0}.conveyor-flow-direction.invalid{fill:#b42318;stroke:#ffffffeb}.pipe-flow-direction{fill:#fffffff0;stroke:#0c1a24a6;filter:drop-shadow(0 0 2px rgba(12,26,36,.24))}.pipe-flow-direction.preview{fill:#ffffffe6;stroke:#0c1a248c}.pipe-flow-direction.invalid{stroke:#f44}.pipe-flow-direction.empty{fill:#fffffffa;stroke:#142e44b8}.connection-packet{pointer-events:none}.connection-packet__shell{fill:#181818eb;stroke:#fff0b8f5;stroke-width:2;filter:drop-shadow(0 0 5px rgba(0,0,0,.28))}.connection-packet__shell--arrived{fill:#2d5738f0;stroke:#cdffdcf0}.connection-packet__icon{overflow:hidden}.connection-packet__fallback{fill:#fff;font-size:9px;font-weight:700;text-anchor:middle;dominant-baseline:middle}@keyframes dash{to{stroke-dashoffset:-20}}.conveyor-preview-outline.invalid.invalid,.conveyor-preview-fill.invalid.invalid,.pipe-preview-outline.invalid.invalid,.pipe-preview-fill.invalid.invalid{stroke:#f44}.machine-ghost{position:absolute;pointer-events:none;z-index:20;background:repeating-linear-gradient(-45deg,#c4c1c1,#c4c1c1 5px,transparent 5px,transparent 10px);border:1px solid #c4c1c1;box-shadow:0 0 10px #fff3}.machine-ghost.has-skin{background:transparent;border:none;box-shadow:none}.machine-ghost.invalid-placement{background:repeating-linear-gradient(-45deg,rgba(255,0,0,.2),rgba(255,0,0,.2) 5px,transparent 5px,transparent 10px);border:4px solid rgba(255,0,0,.2)}.machine-ghost-skin{width:100%;height:100%;object-fit:contain;opacity:.78;transform-origin:center;filter:drop-shadow(0 0 6px rgba(255,255,255,.22))}.ghost-arrow{position:absolute;width:var(--grid-size);height:var(--grid-size);display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:25}.ghost-arrow.input-arrow,.ghost-arrow.output-arrow{color:var(--gray)}.ghost-arrow.fluid-arrow{color:#6ec7ff;filter:drop-shadow(0 0 4px rgba(110,199,255,.35))}.selection-box{position:absolute;background-color:#4287f533;border:1px solid rgba(66,135,245,.6);pointer-events:none;z-index:100}.selection-box__size{position:absolute;top:6px;left:6px;padding:4px 8px;border-radius:999px;background:#121212d1;color:#fff;font-size:12px;font-weight:700;line-height:1;white-space:nowrap;box-shadow:0 4px 12px #0000002e}.connection-endpoint-handle{position:absolute;width:18px;height:18px;transform:translate(-50%,-50%);border-radius:999px;border:2px solid #4dadf7;background:#fff59df2;box-shadow:0 0 0 2px #12121233;cursor:pointer;z-index:18}.connection-endpoint-handle.fluid{background:#6ec7ff}.connection-endpoint-handle.active{box-shadow:0 0 0 3px #4dadf759}.selected-connection-cell-segment,.selected-connection-cell-cap{pointer-events:none}.selected-connection-cell-cap{fill:var(--yellow-light);stroke:#4dadf7;stroke-width:6;filter:drop-shadow(0 0 6px rgba(77,173,247,.35))}.selected-connection-cell-cap.fluid{fill:#6ec7ff}.machine-container.selected .machine-body{outline:2px solid #4dabf7;box-shadow:0 0 15px #4dabf766;z-index:15}.machine-container.selected.whole-cell-wiring{border-color:#4dabf7;background-color:#4dabf729;box-shadow:inset 0 0 0 999px #4dabf714,0 0 0 1px #4dabf7f2,0 0 15px #4dabf773}.machine-container.selected.whole-cell-wiring .machine-body{outline:none;box-shadow:none;z-index:auto}.conveyor-line-outline.selected{stroke:#4dadf7;stroke-width:30;opacity:.8}.pipe-line-outline.selected,.pipe-line-outline.empty.selected{stroke:#4dadf7;stroke-width:18;opacity:.9}.toolbar-container{position:absolute;bottom:2rem;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.toolbar-container.is-locked{opacity:.45}.toolbar-container.is-locked .toolbar,.toolbar-container.is-locked [role=tablist]{pointer-events:none}.toolbar{display:flex;align-items:center;justify-content:flex-start;min-width:90vw;gap:1rem;padding:.5rem 1rem;background:var(--black-dark);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px;border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px #0000004d;pointer-events:auto;z-index:100}.toolbar .section{display:flex;gap:8px}.toolbar .section button{border:2px solid transparent}.toolbar .section button.active{background:var(--black);color:var(--gray-light);border:2px solid var(--gray)}.toolbar .divider{width:2px;height:32px;background:#555}.toolbar .btn-wrap{cursor:pointer}.toolbar .btn-wrap.is-disabled{cursor:default}.toolbar .btn-wrap button{transition:transform .25s cubic-bezier(.4,0,.2,1),background-color .2s ease,color .2s ease}.toolbar .btn-wrap:hover button{transform:translateY(-16px);background:var(--gray-light);color:var(--black-light);border:2px solid var(--gray)}.toolbar .btn-wrap.is-disabled:hover button{transform:none;background:var(--black-light);color:var(--gray-light);border:2px solid var(--black-light)}.toolbar button{background:transparent;border:none;outline:none;cursor:pointer;border-radius:6px;display:flex;align-items:center;justify-content:center;padding:8px;color:var(--gray-light)}.toolbar .machine-btn{width:150px;height:48px;background:var(--black-light);justify-content:flex-start;gap:8px;border:2px solid var(--black-light)}.toolbar .machine-btn.is-disabled{opacity:.88;cursor:default}.toolbar .machine-btn .icon{width:36px;height:36px;min-width:36px;min-height:36px;border-radius:4px;object-fit:contain;background:linear-gradient(to bottom,var(--black-light) 60%,var(--machine-color) 150%);border-bottom:2px solid var(--machine-color)}.header{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:12px;padding:14px 36px 14px 20px;background-color:var(--gray-light);box-shadow:0 4px 10px #0003;flex-shrink:0;z-index:1000;box-sizing:border-box}.header.is-locked .header-middle,.header.is-locked .header-sub-row,.header.is-locked .center-actions,.header.is-locked .actions{opacity:.48}.header.is-locked .center-actions,.header.is-locked .actions{pointer-events:none}.header.is-locked .mode-btn{cursor:not-allowed}.header .header-main-row{display:grid;grid-template-columns:minmax(220px,1fr) auto minmax(220px,1fr);align-items:center;column-gap:20px;min-height:44px;position:relative;z-index:2}.header .logo{display:flex;align-items:center;min-width:0;justify-self:start}.header .logo .title{font-size:1.3rem;font-weight:800;letter-spacing:.08em;color:var(--gray-dark)}.header .header-middle{display:flex;align-items:center;justify-content:center;justify-self:center;min-width:0}.header .header-middle .tool-switch{display:inline-flex;align-items:center;gap:8px;padding:4px;border-radius:999px;background:#111111f0;border:1px solid rgba(255,255,255,.12);box-shadow:0 8px 18px #00000038}.header .header-middle .mode-btn{width:40px;height:40px;border:none;border-radius:999px;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--gray-light);cursor:pointer;transition:background-color .2s ease,color .2s ease,transform .2s ease}.header .header-middle .mode-btn:hover{background:#ffffff1f;color:#fff}.header .header-middle .mode-btn.active,.header .header-middle .mode-btn.active:hover{background:var(--yellow);color:var(--black-dark)}.header .header-middle .mode-btn:disabled{opacity:.7}.header .header-sub-row{display:flex;align-items:center;justify-content:flex-end;position:relative;z-index:2}.header .center-actions{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;min-width:0}.header .center-actions-main{display:flex;align-items:center;gap:12px;min-width:0;flex-wrap:wrap}.header .center-actions-grid{display:flex;justify-content:flex-end;flex-shrink:0}.header .center-actions button{background:var(--gray-dark)!important}.header .center-actions .chakra-select__item{color:var(--black-light)!important}.header .center-actions .factory-mode-switch,.header .center-actions .simulation-controls,.header .center-actions .simulation-speed-group{display:inline-flex;align-items:center;gap:8px}.header .center-actions .factory-mode-switch{padding:4px;border-radius:999px;background:#111111e6;border:1px solid rgba(255,255,255,.08)}.header .center-actions .factory-mode-switch button{min-height:34px;padding:0 14px;border-radius:999px;border:0;background:transparent!important;color:#ffffffc2;font-weight:700}.header .center-actions .factory-mode-switch button.active{background:var(--yellow)!important;color:var(--black-dark)}.header .center-actions .simulation-controls{padding:6px 10px;border-radius:16px;background:#ffffff14;border:1px solid rgba(255,255,255,.08)}.header .center-actions .simulation-primary,.header .center-actions .simulation-secondary,.header .center-actions .simulation-speed-chip{min-height:32px;padding:0 12px;border-radius:999px;border:0;font-weight:700}.header .center-actions .simulation-primary{background:linear-gradient(180deg,#fff5b6,#f5d548)!important;color:#302a16}.header .center-actions .simulation-secondary{background:#111111eb!important;color:#ffffffd1}.header .center-actions .simulation-speed-chip{background:#111111d6!important;color:#ffffffb8;min-width:50px}.header .center-actions .simulation-speed-chip.active{background:#ffdd4d38!important;color:var(--yellow-light)}.header .center-actions .simulation-readout{display:inline-flex;align-items:baseline;gap:8px;padding-left:2px;color:var(--gray-dark)}.header .center-actions .simulation-readout span{font-size:.78rem;color:#1119;white-space:nowrap}.header .center-actions .simulation-readout strong{font-size:1rem;color:var(--black-dark)}.header .actions{display:flex;align-items:center;justify-self:end;justify-content:flex-end;flex-wrap:wrap;gap:16px}.header .actions button{background-color:var(--gray-light);border:3px solid var(--gray-dark);color:var(--black-light);padding:6px 12px;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .2s,color .2s}.header .actions button:hover{background-color:var(--gray-dark);color:var(--yellow)}.header .actions button:disabled{cursor:not-allowed}.header .actions .recipe-browser-trigger{min-height:38px;padding:0 16px;border-radius:999px;border-width:2px;background:linear-gradient(180deg,#fffce0,#f5f08a);color:#3d3d3d;font-size:.92rem;font-weight:800;letter-spacing:.04em;white-space:nowrap}.header .actions .recipe-browser-trigger:hover{background:linear-gradient(180deg,#fffa00,#f5f08a);color:#1f1b16}.header .actions .simulation-reset-reason{max-width:220px;padding:6px 10px;border-radius:999px;background:#fff0b8eb;color:#5e4e1d;font-size:.78rem;font-weight:700;line-height:1.35}@media(max-width:1100px){.header{padding:14px;gap:12px}.header .header-main-row{grid-template-columns:1fr;row-gap:12px}.header .logo{width:100%}.header .header-middle{width:100%;justify-self:start;justify-content:flex-start}.header .header-sub-row{width:100%}.header .center-actions{flex-direction:column;align-items:stretch}.header .center-actions-main{width:100%}.header .center-actions-grid{width:100%;justify-content:stretch}.header .center-actions-grid>*{width:100%}.header .actions{width:100%;justify-self:stretch;justify-content:flex-end;flex-wrap:wrap}}.icon-button{background:none;border:none;cursor:pointer;outline:none;padding:0;border-radius:50%!important;width:36px;height:36px;display:flex;align-items:center;justify-content:center;color:#c1bebd;transition:background-color .2s,color .2s;position:relative}.icon-button:hover{background-color:#ffffff1a;color:#fff}.icon-button:hover .tooltip{opacity:1;visibility:visible;transform:translate(-50%) translateY(0)}.icon-button .icon-svg{transform:scale(3)}.icon-button .tooltip{position:absolute;top:100%;left:50%;transform:translate(-50%) translateY(-5px);background-color:#333;color:#fff;padding:4px 8px;border-radius:4px;font-size:12px;white-space:nowrap;opacity:0;visibility:hidden;transition:all .2s ease;pointer-events:none;z-index:10;margin-top:8px}.icon-button .tooltip:before{content:"";position:absolute;top:-4px;left:50%;transform:translate(-50%);border-width:0 4px 4px 4px;border-style:solid;border-color:transparent transparent #333 transparent}.loading-screen{position:fixed;top:0;left:0;width:100%;height:100vh;background-color:var(--black-dark);z-index:9999;display:flex;justify-content:center;align-items:center;overflow:hidden;transition:opacity .5s ease-out}.loading-screen.fade-out{opacity:0;pointer-events:none}.loading-screen .yellow-bar{position:absolute;top:0;left:0;width:10px;background-color:var(--yellow, #fff000);z-index:10;transition:width .5s cubic-bezier(.65,0,.35,1),height .1s linear}.loading-screen .yellow-bar.expanded{width:100%;height:100%!important}.loading-screen .content-container{position:relative;width:100%;height:100%;display:flex;z-index:5}.loading-screen .left-section{position:absolute;bottom:40px;left:40px;display:flex;flex-direction:column;align-items:flex-start;color:var(--yellow, #fff000);font-family:Segoe UI,sans-serif}.loading-screen .left-section .progress-text{display:flex;align-items:baseline;font-size:3rem;font-weight:700;line-height:1}.loading-screen .left-section .progress-text .percent{font-size:2rem;margin-left:5px}.loading-screen .left-section .loading-label{margin-top:5px;font-size:.9rem;opacity:.8;letter-spacing:1px;text-transform:uppercase}.loading-screen .right-section{position:absolute;right:12%;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;justify-content:center;align-items:center;min-width:260px}.loading-screen .right-section .sub-text{margin-top:8px;font-family:inherit;font-size:1.6rem;font-weight:800;color:#fff;letter-spacing:.12em;text-align:center;opacity:.9}.operation-hints{position:absolute;top:45%;left:20px;transform:translateY(-50%);z-index:90;display:flex;flex-direction:column;gap:12px;pointer-events:none;align-items:flex-start}.operation-hints .hint-item{display:flex;align-items:center;gap:8px;color:var(--gray-dark);font-family:JetBrains Mono,monospace;font-size:14px;text-shadow:0 0 4px rgba(0,0,0,.2)}.operation-hints .hint-item .key-icon{display:flex;align-items:center;justify-content:center;min-width:32px;height:32px;background:var(--black-light);border:1px solid var(--gray);border-radius:6px;font-weight:700;color:#fff;padding:4px;box-shadow:0 0 4px #0003}.operation-hints .hint-item .key-icon.wide{padding:0 8px;min-width:auto}.operation-hints .hint-item span{opacity:.9;font-weight:500}#root{width:100vw;height:100vh;margin:0;padding:0;display:flex;flex-direction:column}.app-content{flex:1;position:relative;overflow:hidden;width:100%}.factory-insights{position:absolute;top:20px;right:20px;width:min(380px,100vw - 40px);max-height:calc(100vh - 100px);background:#121212f0;color:var(--gray-light);border:1px solid rgba(255,255,255,.08);border-radius:18px;box-shadow:0 18px 40px #00000059;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);z-index:1100;overflow:hidden;display:flex;flex-direction:column}.factory-insights .panel-header{display:flex;justify-content:space-between;align-items:flex-start;padding:18px 18px 12px;border-bottom:1px solid rgba(255,255,255,.08)}.factory-insights .panel-header h2{margin:4px 0 0;font-size:1.15rem;color:#fff}.factory-insights .issue-pill{padding:6px 10px;border-radius:999px;background:#ffdd4d24;color:var(--yellow-light);font-size:.8rem;white-space:nowrap}.factory-insights .tab-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:12px 18px}.factory-insights .tab-row button{border:0;border-radius:999px;padding:8px 10px;background:#ffffff0f;color:#ffffffb8;cursor:pointer;transition:all .2s ease;min-width:0}.factory-insights .tab-row button.active{background:var(--yellow);color:var(--black-dark);font-weight:700}.factory-insights .simulation-tab-row{grid-template-columns:repeat(4,minmax(0,1fr))}.factory-insights .tab-panel{padding:0 18px 18px}.factory-insights .scrollable{overflow:auto;padding-bottom:18px}.factory-insights .stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.factory-insights .stat-card,.factory-insights .summary-block,.factory-insights .building-card,.factory-insights .issue-card,.factory-insights .graph-node,.factory-insights .graph-edge,.factory-insights .outbound-material-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:14px}.factory-insights .stat-card{padding:12px;display:flex;flex-direction:column;gap:6px}.factory-insights .stat-card span{font-size:.82rem;color:#ffffffa8}.factory-insights .stat-card strong{font-size:1.1rem;color:#fff}.factory-insights .summary-block{margin-top:12px;padding:14px}.factory-insights .summary-block h3{margin:0 0 8px;font-size:.92rem;color:#fff}.factory-insights .summary-block p{margin:0;font-size:.88rem;line-height:1.5;color:#ffffffb8}.factory-insights .summary-row{display:flex;justify-content:space-between;gap:12px;padding:6px 0}.factory-insights .summary-row strong.ok{color:#7bffa3}.factory-insights .summary-row strong.warn{color:#ffd45b}.factory-insights .building-card{padding:14px;margin-bottom:10px}.factory-insights .building-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px}.factory-insights .badge{padding:4px 8px;border-radius:999px;font-size:.78rem;font-weight:700}.factory-insights .badge.ok{background:#7bffa324;color:#7bffa3}.factory-insights .badge.warn{background:#ffd45b24;color:#ffd45b}.factory-insights .building-meta{display:flex;justify-content:space-between;gap:12px;font-size:.82rem;color:#ffffffb8;margin-bottom:6px}.factory-insights .issue-line{margin-top:6px;padding-top:6px;border-top:1px dashed rgba(255,255,255,.08);font-size:.82rem;color:#ffcb6b}.factory-insights .issue-card{padding:14px;margin-bottom:10px;width:100%;text-align:left}.factory-insights .issue-card.error{border-color:#ff787859}.factory-insights .issue-card.warning{border-color:#ffd45b59}.factory-insights .issue-card.info{border-color:#79c5ff59}.factory-insights .issue-card.clickable{cursor:pointer;transition:border-color .2s ease,transform .2s ease,background .2s ease}.factory-insights .issue-card.clickable:hover{transform:translateY(-1px);background:#ffffff14;border-color:#4dabf78c}.factory-insights .issue-title{font-weight:700;color:#fff;margin-bottom:6px}.factory-insights .issue-message-list{display:flex;flex-direction:column;gap:6px}.factory-insights .issue-text{font-size:.88rem;line-height:1.5;color:#ffffffc2}.factory-insights .empty-state{padding:20px 14px;border-radius:14px;background:#ffffff0a;color:#ffffffa8;text-align:center}.factory-insights .empty-state.success{color:#7bffa3}.factory-insights .graph-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:14px}.factory-insights .graph-column{display:flex;flex-direction:column;gap:10px}.factory-insights .column-title{font-size:.8rem;color:#ffffff94;text-transform:uppercase;letter-spacing:.06em}.factory-insights .graph-node{padding:12px;display:flex;flex-direction:column;gap:6px}.factory-insights .graph-node strong{color:#fff}.factory-insights .graph-node span{font-size:.82rem;color:#ffffffb8}.factory-insights .graph-edges{display:flex;flex-direction:column;gap:8px}.factory-insights .graph-edge{padding:10px 12px;display:grid;grid-template-columns:1fr auto 1fr auto;gap:10px;align-items:center}.factory-insights .graph-edge em{font-style:normal;color:var(--yellow-light)}.factory-insights .graph-edge strong{color:#fff;text-align:right}.factory-insights .outbound-material-list{display:flex;flex-direction:column;gap:10px}.factory-insights .outbound-material-card{padding:12px 14px;display:flex;justify-content:space-between;align-items:center;gap:12px}.factory-insights .outbound-material-main{min-width:0;display:flex;align-items:center;gap:12px}.factory-insights .outbound-material-icon{width:44px;height:44px;flex:0 0 44px;border-radius:12px;background:#ffffff14;border:1px solid rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center;overflow:hidden}.factory-insights .outbound-material-icon img{width:100%;height:100%;object-fit:contain}.factory-insights .outbound-material-icon span{font-size:1rem;font-weight:700;color:#fff}.factory-insights .outbound-material-meta{min-width:0;display:flex;flex-direction:column;gap:4px}.factory-insights .outbound-material-meta strong{color:#fff}.factory-insights .outbound-material-meta span{font-size:.78rem;color:#ffffff85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.factory-insights .outbound-material-rate{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:4px;text-align:right}.factory-insights .outbound-material-rate span{font-size:.78rem;color:#ffffff94}.factory-insights .outbound-material-rate strong{color:#fff;font-size:1rem}.factory-insights .diagnostics-panel{display:flex;flex-direction:column;gap:12px}.factory-insights .diagnostic-toolbar,.factory-insights .diagnostic-action-row{display:flex;gap:8px}.factory-insights .diagnostic-toolbar{justify-content:space-between}.factory-insights .diagnostic-toolbar button{border:0;border-radius:999px;padding:8px 12px;cursor:pointer;transition:all .2s ease}.factory-insights .diagnostic-toolbar button:first-child{background:#ffffff0f;color:#ffffffc2}.factory-insights .diagnostic-toolbar button:first-child.active{background:#ffd45b2e;color:var(--yellow-light);font-weight:700}.factory-insights .diagnostic-copy-button,.factory-insights .diagnostic-action-button,.factory-insights .diagnostic-secondary-button{border:0;border-radius:999px;padding:8px 12px;cursor:pointer;transition:all .2s ease}.factory-insights .diagnostic-copy-button,.factory-insights .diagnostic-action-button{background:var(--yellow);color:var(--black-dark);font-weight:700}.factory-insights .diagnostic-secondary-button{background:#ffffff0f;color:#ffffffc2}.factory-insights .diagnostic-copy-button:hover,.factory-insights .diagnostic-action-button:hover,.factory-insights .diagnostic-secondary-button:hover,.factory-insights .diagnostic-toolbar button:first-child:hover{transform:translateY(-1px)}.factory-insights .diagnostic-summary-block,.factory-insights .diagnostic-export-block{margin-top:0}.factory-insights .diagnostic-export-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px}.factory-insights .diagnostic-export-head h3{margin:0}.factory-insights .diagnostic-export-head span{font-size:.78rem;color:#ffffff8f}.factory-insights .diagnostic-export-text{width:100%;min-height:160px;resize:vertical;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:#00000038;color:#ffffffd1;padding:12px;font:inherit;line-height:1.45}.factory-insights .diagnostic-card-list{display:flex;flex-direction:column;gap:10px}.factory-insights .diagnostic-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:10px}.factory-insights .diagnostic-card.flagged{border-color:#ffd45b66;box-shadow:inset 0 0 0 1px #ffd45b14}.factory-insights .diagnostic-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.factory-insights .diagnostic-route-group{min-width:0;display:flex;flex-direction:column;gap:6px}.factory-insights .diagnostic-transport-chip{width:fit-content;padding:4px 8px;border-radius:999px;font-size:.76rem;font-weight:700}.factory-insights .diagnostic-transport-chip.item{background:#79c5ff29;color:#9bd4ff}.factory-insights .diagnostic-transport-chip.fluid{background:#58d4b429;color:#7cf0d3}.factory-insights .diagnostic-route-title{color:#fff;line-height:1.4}.factory-insights .diagnostic-metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.factory-insights .diagnostic-metric{padding:10px 12px;border-radius:12px;background:#ffffff0a;display:flex;flex-direction:column;gap:4px}.factory-insights .diagnostic-metric span{font-size:.78rem;color:#ffffff8f}.factory-insights .diagnostic-metric strong{color:#fff;line-height:1.4}.factory-insights .diagnostic-meta-list{display:flex;flex-wrap:wrap;gap:8px}.factory-insights .diagnostic-meta-list span{padding:4px 8px;border-radius:999px;background:#ffffff0d;font-size:.76rem;color:#ffffffa3}.factory-insights .diagnostic-status-list{display:flex;flex-direction:column;gap:6px}.factory-insights .diagnostic-status{padding:10px 12px;border-radius:12px;font-size:.84rem;line-height:1.45}.factory-insights .diagnostic-status--hint{background:#ffd45b1f;color:#ffd45b}.factory-insights .diagnostic-status--issue{background:#ff78781f;color:#ffb5b5}.factory-insights .diagnostic-action-row{justify-content:flex-end}.factory-insights .simulation-reset-block{margin-top:12px}.factory-insights .simulation-machine-list{display:flex;flex-direction:column;gap:10px}.factory-insights .simulation-machine-card{width:100%;padding:14px;text-align:left;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:#ffffff0d;cursor:pointer;transition:transform .2s ease,background .2s ease,border-color .2s ease}.factory-insights .simulation-machine-card:hover{transform:translateY(-1px);background:#ffffff14}.factory-insights .simulation-machine-card--running{border-color:#7bffa347}.factory-insights .simulation-machine-card--waiting-input{border-color:#ffd45b47}.factory-insights .simulation-machine-card--blocked-output,.factory-insights .simulation-machine-card--paused-power{border-color:#ff787847}.factory-insights .simulation-machine-card__head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.factory-insights .simulation-machine-card__head strong{color:#fff}.factory-insights .simulation-status-badge--running{background:#7bffa324;color:#7bffa3}.factory-insights .simulation-status-badge--waiting-input{background:#ffd45b24;color:#ffd45b}.factory-insights .simulation-status-badge--blocked-output,.factory-insights .simulation-status-badge--paused-power{background:#ff787824;color:#ffb5b5}.factory-insights .simulation-progress{width:100%;height:8px;margin-bottom:10px;border-radius:999px;background:#ffffff14;overflow:hidden}.factory-insights .simulation-progress__fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,#fff0a8,#f5d548)}.factory-insights .simulation-materials-panel{display:flex;flex-direction:column;gap:12px}.factory-insights .simulation-material-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.factory-insights .simulation-material-columns section{min-width:0}.factory-insights .simulation-material-columns h3{margin:0 0 8px;font-size:.92rem;color:#fff}@media(max-width:1100px){.factory-insights{inset:auto 20px 20px;width:auto;max-height:42vh}.factory-insights .tab-row{grid-template-columns:repeat(3,minmax(0,1fr))}.factory-insights .diagnostic-card-head,.factory-insights .diagnostic-toolbar{flex-direction:column}.factory-insights .diagnostic-metric-grid,.factory-insights .simulation-material-columns{grid-template-columns:1fr}}
