.factory{--line: var(--rule);--node: #fff;--soft: rgba(29, 34, 44, .06);--accent-soft: rgba(242, 90, 67, .12);--grid: rgba(29, 34, 44, .03);position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:3.5%;background:linear-gradient(var(--grid) 1px,transparent 1px) 0 0 / 24px 24px,linear-gradient(90deg,var(--grid) 1px,transparent 1px) 0 0 / 24px 24px;font-family:var(--font)}.factory-stage{position:relative;display:block}.factory-canvas{position:absolute;left:0;top:0;display:block;transform-origin:0 0;font-size:13px;line-height:1.3;letter-spacing:.01em}.fx-colhead{position:absolute;top:0;font-size:11px;line-height:1;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap}.fx-colhead b{font-weight:500;color:var(--rule);margin-right:8px}.fx-title-main{position:absolute;top:0;font-size:40px;line-height:44px;font-weight:500;letter-spacing:-.01em;color:var(--fg);white-space:nowrap}.fx-board{position:absolute;left:0}.fx-layer{position:absolute;top:0;right:0;bottom:0;left:0}.fx-edges{position:absolute;top:0;right:0;bottom:0;left:0;overflow:visible;pointer-events:none}.fx-edge{fill:none;stroke:var(--line);stroke-width:1.25;transition:opacity .2s,stroke .2s}.fx-edge--dashed{stroke-dasharray:4 4}.fx-rail{fill:none;stroke:var(--line);stroke-width:1;stroke-dasharray:3 4}.fx-arrow{fill:var(--line)}.fx-trail{fill:none;stroke:var(--accent);stroke-width:2}.fx-dot{fill:var(--accent)}.fx-label{position:absolute;transform:translate(-50%,-50%);padding:2px 6px;border-radius:6px;background:var(--shot);font-size:10px;line-height:1.2;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap;pointer-events:none;transition:opacity .2s}.fx-group{position:absolute;border-radius:16px;background:#1d222c09;box-shadow:inset 0 0 0 1px var(--soft);transition:opacity .2s}.fx-group-label{position:absolute;top:10px;left:14px;display:flex;align-items:center;gap:6px;font-size:10px;line-height:1;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.fx-group-label svg{width:11px;height:11px;color:var(--accent)}.fx-node{position:absolute;display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:12px;background:var(--node);box-shadow:var(--elev-1);transition:opacity .2s,box-shadow .25s var(--ease-out)}.fx-eyebrow{display:flex;align-items:center;gap:6px;padding-bottom:8px;border-bottom:1px solid var(--soft);font-size:10px;line-height:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.fx-eyebrow svg{width:11px;height:11px;flex:none;color:var(--accent)}.fx-logo{width:12px;height:12px;flex:none;border-radius:3px;object-fit:contain}.fx-title{display:flex;align-items:center;gap:8px;font-size:16px;line-height:20px;font-weight:500;color:var(--fg)}.fx-title svg,.fx-signal svg{width:17px;height:17px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.fx-meta{display:block;font-size:10px;line-height:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.fx-badge{position:absolute;top:-10px;right:10px;padding:4px 7px;border-radius:6px;background:var(--fg);color:#fff;font-size:11px;line-height:1}.fx-signal{flex-direction:row;align-items:center;gap:11px}.fx-signal .fx-ic{width:30px;height:30px;flex:none;display:grid;place-items:center;border-radius:8px;background:var(--bg);color:var(--fg)}.fx-signal .fx-ic svg{width:15px;height:15px}.fx-ic-logo{width:30px;height:30px;border-radius:8px;object-fit:contain}.fx-ic:has(.fx-ic-logo){background:none}.fx-signal .fx-txt{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}.fx-signal .fx-nm{font-size:14px;line-height:16px;font-weight:500;color:var(--fg)}.fx-signal .fx-sb{overflow:hidden;font-size:11.5px;line-height:14px;color:var(--muted);white-space:nowrap;text-overflow:ellipsis}.fx-signal .fx-play{position:absolute;top:8px;right:10px;font-size:9.5px;line-height:1;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);opacity:0;transition:opacity .15s}.shot.is-open .fx-signal{cursor:pointer}@media(hover:hover)and (pointer:fine){.shot.is-open .fx-signal:hover{box-shadow:var(--elev-2)}.shot.is-open .fx-signal:hover .fx-play{opacity:1}}.fx-chips{display:flex;flex-wrap:wrap;gap:5px}.fx-chip{padding:5px 7px;border-radius:6px;background:var(--bg);font-size:10.5px;line-height:1;color:var(--fg);transition:background .2s,color .2s}.fx-chip.is-on{background:var(--accent-soft);color:var(--accent)}.fx-duo{display:grid;grid-template-columns:1fr 1fr;gap:6px}.fx-duo>span{display:flex;align-items:center;gap:8px;padding:8px;border-radius:8px;background:var(--bg);font-size:13px;line-height:1;font-weight:500;color:var(--fg)}.fx-duo>span>span{display:flex;flex-direction:column;gap:4px}.fx-duo-logo{width:22px;height:22px;flex:none;border-radius:6px;object-fit:contain}.fx-duo small{font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.fx-checks{display:flex;flex-direction:column;gap:8px;font-size:13px;line-height:16px;color:var(--fg)}.fx-checks>span{display:flex;align-items:center;gap:9px}.fx-checks i{width:10px;height:10px;border-radius:3px;border:1.5px solid var(--fg);transition:background .2s,border-color .2s}.fx-checks>span.is-done i{background:var(--accent);border-color:var(--accent)}.fx-row{position:absolute;left:12px;right:12px;height:40px;display:flex;align-items:center;justify-content:space-between;gap:6px;padding:0 10px;border-radius:8px;background:var(--bg);font-size:10.5px;line-height:1.2;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);transition:background .2s,color .2s}.fx-row b{font-weight:500;color:var(--fg)}.fx-row.is-on{background:var(--accent-soft);color:var(--accent)}.fx-row.is-on b{color:var(--accent)}.fx-node.is-current{box-shadow:var(--elev-1),0 0 0 2px var(--accent),0 0 0 6px var(--accent-soft)}.fx-node.is-on .fx-eyebrow{color:var(--fg)}.factory-canvas.is-hovering .fx-node:not(.is-rel),.factory-canvas.is-hovering .fx-group,.factory-canvas.is-hovering .fx-label:not(.is-rel){opacity:.3}.factory-canvas.is-hovering .fx-edge:not(.is-rel){opacity:.2}.factory-canvas.is-hovering .fx-edge.is-rel{stroke:var(--fg);stroke-width:1.5}
