*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--game-background: #020617;--game-surface: #0f172a;--game-surface-elevated: #1e293b;--game-border: #334155;--game-text-main: #f1f5f9;--game-text-muted: #94a3b8;--game-text-dimmed: #64748b;--game-primary: #3b82f6;--game-primary-hover: #2563eb;--game-accent: #8b5cf6;--game-success: #10b981;--game-warning: #f59e0b;--game-error: #ef4444;--game-background-secondary: #1e293b;--game-control-bar: #1e293b;--game-active: #1e40af;--game-hover: #1e3a8a;--game-purple: #7c3aed;--game-pink: #db2777}[data-theme=light]{--game-background: #f8fafc;--game-surface: #ffffff;--game-surface-elevated: #f1f5f9;--game-border: #e2e8f0;--game-text-main: #1e293b;--game-text-muted: #64748b;--game-text-dimmed: #94a3b8;--game-primary: #3b82f6;--game-primary-hover: #2563eb;--game-accent: #8b5cf6;--game-success: #10b981;--game-warning: #f59e0b;--game-error: #ef4444;--game-background-secondary: #f8fafc;--game-control-bar: #f8fafc;--game-active: #dbeafe;--game-hover: #eff6ff;--game-purple: #c7d2fe;--game-pink: #fbcfe8}html,body,#root{height:100%;width:100%;overflow:hidden}#root{display:flex;flex-direction:column}::-webkit-scrollbar-track{background:var(--background)}::-webkit-scrollbar-thumb{background:var(--surface-elevated);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--border)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideInLeft{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideInUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.animate-slide-in{animation:slideIn .3s ease-out}.fade-in{animation:fadeIn .3s ease-in-out}.slide-in-right{animation:slideInRight .3s ease-out}.slide-in-left{animation:slideInLeft .3s ease-out}.slide-in-up{animation:slideInUp .3s ease-out}.pulse{animation:pulse 2s infinite}.world-outliner{height:100%;display:flex;flex-direction:column;background:var(--game-surface);transition:all .3s ease}.world-outliner.collapsed{opacity:0;pointer-events:none}.outliner-header{padding:16px;border-bottom:1px solid var(--game-border)}.outliner-header h3{margin:0;font-size:14px;font-weight:600;color:var(--game-text-main);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.outliner-content{flex:1;overflow-y:auto;padding:8px}.outliner-section{margin-bottom:8px}.section-header{width:100%;padding:8px 12px;background:transparent;border:none;color:var(--game-text-muted);cursor:pointer;display:flex;align-items:center;gap:8px;font-size:12px;font-weight:500;transition:all .2s ease;border-radius:4px}.section-header:hover{background:var(--game-border);color:var(--game-text-main)}.section-content{margin-left:20px;overflow:hidden}.outliner-item{padding:8px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:12px;border-radius:4px;transition:all .2s ease;position:relative}.outliner-item:hover{background:var(--game-border)}.outliner-item.selected{background:var(--game-active);color:var(--game-accent)}.item-icon{flex-shrink:0;color:var(--game-text-dimmed)}.outliner-item.selected .item-icon{color:var(--game-accent)}.item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-level{font-size:10px;background:var(--game-surface-elevated);padding:2px 6px;border-radius:10px;color:var(--game-text-muted)}.item-status{width:8px;height:8px;border-radius:50%;background:currentColor;flex-shrink:0}.empty-state{padding:20px 12px;text-align:center;color:var(--game-text-dimmed);font-size:12px;font-style:italic}.add-entity-button{width:100%;padding:8px 12px;margin-top:8px;background:transparent;border:1px dashed var(--game-border);color:var(--game-text-dimmed);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;font-size:12px;border-radius:4px;transition:all .2s ease}.add-entity-button:hover{background:var(--game-active);border-color:var(--game-accent);color:var(--game-accent)}.marketplace-dock{height:100%;display:flex;flex-direction:column;background:var(--game-surface)}.dock-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--game-border);background:var(--game-surface-elevated)}.dock-tabs{display:flex;gap:4px}.dock-tab{display:flex;align-items:center;gap:6px;padding:8px 12px;background:transparent;border:none;color:var(--game-text-dimmed);cursor:pointer;font-size:12px;font-weight:500;border-radius:4px 4px 0 0;transition:all .2s ease}.dock-tab:hover{background:var(--game-border);color:var(--game-text-muted)}.dock-tab.active{background:var(--game-background);color:var(--game-text-main)}.dock-controls{display:flex;align-items:center;gap:8px}.create-law-button{display:flex;align-items:center;gap:6px;padding:6px 12px;background:linear-gradient(135deg,#a855f7,#ec4899);border:none;border-radius:4px;color:#fff;font-size:12px;font-weight:500;cursor:pointer;transition:all .2s ease}.create-law-button:hover{transform:translateY(-1px);box-shadow:0 2px 8px #a855f766}.search-container{position:relative;display:flex;align-items:center}.search-icon{position:absolute;left:8px;color:var(--game-text-dimmed);pointer-events:none}.search-input{padding:6px 8px 6px 32px;background:var(--game-border);border:1px solid var(--game-border);border-radius:4px;color:var(--game-text-main);font-size:12px;width:200px;transition:all .2s ease}.search-input:focus{outline:none;border-color:var(--game-primary);background:var(--game-surface)}.search-input::placeholder{color:var(--game-text-dimmed)}.filter-button{padding:6px 8px;background:var(--game-border);border:1px solid var(--game-border);border-radius:4px;color:var(--game-text-dimmed);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.filter-button:hover{background:var(--game-surface);color:var(--game-text-muted)}.dock-content{flex:1;overflow-y:auto;padding:16px}.custom-laws-section{margin-bottom:16px}.custom-laws-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding:0 4px}.custom-laws-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.custom-law-item{display:flex;flex-direction:column;padding:12px;background:var(--game-surface-elevated);border:1px solid var(--game-border);border-radius:8px;cursor:grab;transition:all .2s ease;position:relative;overflow:hidden}.custom-law-item:hover{background:var(--game-border);transform:translateY(-2px)}.custom-law-item .law-icon{width:40px;height:40px;background:linear-gradient(135deg,#a855f7,#ec4899);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;margin-bottom:8px}.custom-law-item .law-info{margin-bottom:8px}.custom-law-item .law-name{font-size:13px;font-weight:500;color:var(--game-text-main);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.custom-law-item .law-description{font-size:11px;color:var(--game-text-dimmed);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.custom-law-item .law-rarity.custom{position:absolute;top:8px;right:8px;background:linear-gradient(135deg,#a855f7,#ec4899);color:#fff;font-size:10px;padding:2px 6px;border-radius:10px;font-weight:500;text-transform:uppercase}.law-delete-button{position:absolute;top:6px;right:6px;width:20px;height:20px;background:var(--game-border);border:none;border-radius:4px;display:flex;align-items:center;justify-content:center;color:var(--game-text-dimmed);cursor:pointer;opacity:0;transition:all .2s ease;z-index:10}.custom-law-item:hover .law-delete-button{opacity:1}.law-delete-button:hover{background:#ef4444;color:#fff}.items-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.marketplace-item{background:var(--game-surface-elevated);border:1px solid var(--game-border);border-radius:8px;padding:12px;cursor:grab;transition:all .2s ease;position:relative;overflow:visible}.item-delete-button{position:absolute;top:6px;right:6px;width:20px;height:20px;background:var(--game-border);border:none;border-radius:4px;display:flex;align-items:center;justify-content:center;color:var(--game-text-dimmed);cursor:pointer;opacity:0;transition:all .2s ease;z-index:10}.marketplace-item:hover .item-delete-button{opacity:1}.item-delete-button:hover{background:#ef4444;color:#fff}.marketplace-item:hover{background:var(--game-border);border-color:var(--game-border);transform:translateY(-2px)}.marketplace-item:active{cursor:grabbing;transform:scale(.98)}.item-icon{width:40px;height:40px;background:var(--game-border);border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:8px;color:var(--game-text-dimmed)}.item-info{margin-bottom:8px}.item-name{font-size:13px;font-weight:500;color:var(--game-text-main);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-description{font-size:11px;color:var(--game-text-dimmed);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.item-rarity{position:absolute;top:8px;right:8px;font-size:10px;padding:2px 6px;border-radius:10px;font-weight:500;text-transform:uppercase}.item-rarity.common{background:var(--game-text-dimmed);color:#fff}.item-rarity.rare{background:var(--game-active);color:var(--game-accent)}.item-rarity.epic{background:var(--game-purple);color:#fff}.item-rarity.legendary{background:var(--game-warning);color:#fff}.inspector-panel{height:100%;display:flex;flex-direction:column;background:var(--game-surface)}.inspector-panel.empty{justify-content:center;align-items:center}.empty-state{text-align:center;color:var(--game-text-dimmed)}.empty-state svg{margin-bottom:12px;opacity:.3}.empty-state p{margin:0 0 4px;font-size:14px;font-weight:500}.empty-state .hint{font-size:12px;color:var(--game-text-dimmed)}.inspector-header{padding:16px;border-bottom:1px solid var(--game-border);display:flex;align-items:center;justify-content:space-between}.inspector-header .flex{display:flex;align-items:center;gap:8px}.entity-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--game-surface-elevated);border-radius:6px;color:var(--game-text-muted)}.inspector-header h3{margin:0;font-size:16px;font-weight:600;color:var(--game-text-main);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inspector-type{font-size:11px;color:var(--game-text-dimmed);text-transform:uppercase;font-weight:500;letter-spacing:.5px}.badge{display:inline-block;padding:4px 8px;background:var(--game-surface-elevated);border:1px solid var(--game-border);border-radius:4px;font-size:11px;color:var(--game-text-muted);margin-right:4px;margin-bottom:4px}.inspector-tabs{display:flex;border-bottom:1px solid var(--game-border);background:var(--game-surface-elevated)}.tab{flex:1;padding:12px;background:transparent;border:none;color:var(--game-text-dimmed);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;font-size:12px;font-weight:500;transition:all .2s ease}.tab:hover{background:var(--game-border);color:var(--game-text-muted)}.tab.active{background:var(--game-surface);color:var(--game-text-main);border-bottom:2px solid var(--game-primary)}.inspector-content{flex:1;overflow-y:auto}.tab-content{padding:16px}.property-group{margin-bottom:24px}.property-group h4{margin:0 0 12px;font-size:12px;font-weight:600;color:var(--game-text-muted);text-transform:uppercase;letter-spacing:.5px}.property{display:flex;align-items:center;margin-bottom:8px;gap:12px}.property label{flex:0 0 80px;font-size:12px;color:var(--game-text-muted)}.property input,.property textarea{flex:1;padding:6px 8px;background:var(--game-border);border:1px solid var(--game-border);border-radius:4px;color:var(--game-text-main);font-size:12px;font-family:SF Mono,Monaco,Inconsolata,Roboto Mono,monospace}.property input:focus,.property textarea:focus{outline:none;border-color:var(--game-primary);background:var(--game-surface)}.property input:disabled{background:var(--game-surface-elevated);color:var(--game-text-dimmed);cursor:not-allowed}.property span{font-size:12px;color:var(--game-text-main)}.config-preview{background:var(--game-surface-elevated);border:1px solid var(--game-border);border-radius:4px;padding:12px;font-size:11px;line-height:1.4;color:var(--game-text-muted);overflow-x:auto}.status-badge{padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.status-badge.running,.status-badge.active{background:var(--game-success);color:#fff}.status-badge.stopped,.status-badge.inactive{background:var(--game-text-dimmed);color:var(--game-text-muted)}.status-badge.error{background:var(--game-error);color:#fff}.status-badge.idle{background:var(--game-warning);color:#fff}.level-badge{background:linear-gradient(135deg,var(--game-purple),var(--game-accent));color:#fff;padding:4px 8px;border-radius:12px;font-size:11px;font-weight:600}.progress-bar{flex:1;position:relative;height:20px;background:var(--game-border);border-radius:10px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--game-primary),var(--game-accent));transition:width .3s ease}.progress-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:10px;font-weight:500;color:var(--game-text-main);text-shadow:0 1px 2px rgba(0,0,0,.5)}.history-log{font-family:SF Mono,Monaco,Inconsolata,Roboto Mono,monospace;font-size:11px}.log-entry{display:flex;align-items:center;gap:8px;padding:8px;border-bottom:1px solid var(--game-border)}.log-entry:last-child{border-bottom:none}.log-timestamp{color:var(--game-text-dimmed);flex:0 0 80px}.log-level{font-weight:600;flex:0 0 60px}.log-level.info{color:var(--game-primary)}.log-level.warn{color:#f59e0b}.log-level.error{color:#ef4444}.log-level.debug{color:#8b5cf6}.log-message{color:var(--game-text-muted);flex:1}.logs-tab{display:flex;flex-direction:column;height:100%;padding:0;overflow:hidden}.logs-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--game-border);background:var(--game-surface-elevated)}.logs-status{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--game-text-muted)}.status-indicator{width:8px;height:8px;border-radius:50%;background:var(--game-text-dimmed);transition:all .2s ease}.status-indicator.connected{background:#10b981;box-shadow:0 0 8px #10b98180;animation:pulse 2s ease-in-out infinite}.status-indicator.disconnected{background:var(--game-text-dimmed)}.clear-logs-button{padding:4px 12px;background:transparent;border:1px solid var(--game-border);border-radius:4px;color:var(--game-text-muted);font-size:11px;cursor:pointer;transition:all .2s ease}.clear-logs-button:hover{background:var(--game-border);color:var(--game-text-main)}.refresh-button{padding:4px 12px;background:transparent;border:1px solid var(--game-border);border-radius:4px;color:var(--game-text-muted);font-size:11px;cursor:pointer;transition:all .2s ease}.refresh-button:hover:not(:disabled){background:var(--game-border);color:var(--game-text-main)}.status-indicator.loading{background:#f59e0b;animation:spin 1s linear infinite}.logs-container{flex:1;overflow-y:auto;background:var(--game-background)}.logs-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--game-text-dimmed);padding:32px;text-align:center}.logs-empty svg{margin-bottom:16px;opacity:.3}.logs-empty p{margin:0 0 8px;font-size:14px;font-weight:500}.logs-empty .hint{font-size:12px;color:var(--game-text-dimmed)}.logs-list{font-family:SF Mono,Monaco,Inconsolata,Roboto Mono,monospace;font-size:11px;line-height:1.6;padding:8px}.log-item{display:flex;align-items:flex-start;gap:8px;padding:6px 8px;border-radius:4px;transition:background .1s ease}.log-item:hover{background:var(--game-surface-elevated)}.log-time{flex:0 0 auto;color:var(--game-text-dimmed);font-size:10px;margin-right:8px}.log-level-badge{flex:0 0 auto;padding:2px 8px;border-radius:3px;font-size:9px;font-weight:600;color:#fff;text-align:center;text-transform:uppercase;margin-right:8px}.log-text{flex:1;color:var(--game-text-muted);word-break:break-all;white-space:pre-wrap}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.environment-node{background:var(--game-surface);border:2px solid var(--game-border);border-radius:12px;padding:12px 16px;min-width:180px;max-width:240px;box-shadow:0 4px 12px #0000001a;transition:all .2s ease}.environment-node:hover{border-color:var(--game-primary);box-shadow:0 6px 16px #3b82f633}.environment-node.status-active{border-color:#3b82f6}.environment-node.status-error{border-color:#ef4444}.environment-node .node-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.environment-node .node-icon{color:#3b82f6;flex-shrink:0}.environment-node .node-title{font-weight:600;font-size:14px;color:var(--game-text-main);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.environment-node .status-active{color:#10b981}.environment-node .status-error{color:#ef4444}.environment-node .status-inactive{color:var(--game-text-dimmed)}.environment-node .node-description{font-size:12px;color:var(--game-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.environment-node .react-flow__handle{width:8px;height:8px;background:var(--game-border);border:2px solid var(--game-surface)}.environment-node .react-flow__handle-connecting{background:#3b82f6}.agent-node{background:var(--game-surface);border:2px solid var(--game-border);border-radius:10px;padding:10px 14px;min-width:160px;max-width:200px;box-shadow:0 3px 10px #0000001a;transition:all .2s ease}.agent-node:hover{border-color:var(--game-accent);box-shadow:0 5px 14px #8b5cf633}.agent-node.status-running{border-color:#10b981}.agent-node.status-error{border-color:#ef4444}.agent-node.online{background:linear-gradient(135deg,var(--game-surface) 0%,rgba(16,185,129,.05) 100%)}.agent-node.offline{opacity:.7}.agent-node .node-header{display:flex;align-items:center;gap:6px;margin-bottom:4px}.agent-node .node-icon{color:#8b5cf6;flex-shrink:0}.agent-node .node-title{font-weight:600;font-size:13px;color:var(--game-text-main);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-node .status-running{color:#10b981}.agent-node .status-error{color:#ef4444}.agent-node .status-idle,.agent-node .status-stopped{color:var(--game-text-dimmed)}.agent-node .node-footer{display:flex;align-items:center;justify-content:space-between;margin-top:6px;padding-top:6px;border-top:1px solid var(--game-border)}.agent-node .connection-status{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--game-text-dimmed)}.agent-node.online .connection-status{color:#10b981}.agent-node.offline .connection-status{color:var(--game-text-dimmed)}.agent-node .status-text{font-size:11px;color:var(--game-text-muted);text-transform:capitalize}.agent-node .react-flow__handle{width:8px;height:8px;background:var(--game-border);border:2px solid var(--game-surface)}.agent-node .react-flow__handle-connecting{background:#8b5cf6}.agent-node.drag-over{border-color:#8b5cf6;box-shadow:0 0 0 2px #8b5cf64d;transform:scale(1.05)}.agent-node .drop-hint{display:flex;align-items:center;justify-content:center;gap:6px;padding:6px;margin:8px 0;background:#8b5cf61a;border:1px dashed #8b5cf6;border-radius:6px;color:#8b5cf6;font-size:12px;font-weight:500;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.entity-graph-view{width:100%;height:100%;background:var(--game-background);position:relative;min-height:400px}.entity-graph-view>div{width:100%!important;height:100%!important}.graph-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--game-text-dimmed);gap:1rem}.graph-empty h3{font-size:1.25rem;color:var(--game-text-muted);margin:0}.graph-empty p{color:var(--game-text-dimmed);margin:0}.graph-controls{background:var(--game-surface)!important;border:1px solid var(--game-border)!important;border-radius:8px!important}.graph-controls button{background:var(--game-surface)!important;border-color:var(--game-border)!important;color:var(--game-text-main)!important}.graph-controls button:hover{background:var(--game-surface-elevated)!important}.graph-minimap{background:var(--game-surface)!important;border:1px solid var(--game-border)!important;border-radius:8px!important}.react-flow__edge-path{stroke:var(--game-border)}.react-flow__edge.selected .react-flow__edge-path{stroke:var(--game-primary)}.react-flow__handle{background:var(--game-border);border:2px solid var(--game-border)}.react-flow__handle-connecting{background:var(--game-primary)}.react-flow__attribution{display:none}.react-flow__node{background:var(--game-surface)!important;border:2px solid var(--game-primary)!important;min-width:150px!important;min-height:60px!important}.react-flow__node.selected{box-shadow:0 0 0 2px var(--game-primary)!important}.react-flow__edge path{stroke-width:2!important}.workbench-empty,.workbench-welcome,.workbench-entity,.workbench-graph{height:100%;display:flex;flex-direction:column}.workbench-empty,.workbench-welcome,.workbench-entity{align-items:center;justify-content:center;padding:40px}.workbench-graph{padding:0;position:relative}.empty-content{text-align:center;max-width:500px}.empty-icon{margin-bottom:24px;color:var(--game-text-dimmed)}.empty-content h2{margin:0 0 12px;font-size:24px;font-weight:600;color:var(--game-text-main)}.empty-content p{margin:0 0 32px;font-size:16px;color:var(--game-text-muted);line-height:1.5}.empty-actions{display:flex;gap:16px;justify-content:center}.primary-button,.secondary-button{padding:12px 24px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.primary-button{background:var(--game-primary);color:#fff;border:none}.primary-button:hover{background:var(--game-primary-hover);transform:translateY(-1px)}.secondary-button{background:transparent;color:var(--game-text-muted);border:1px solid var(--game-border)}.secondary-button:hover{background:var(--game-border);color:var(--game-text-main);border-color:var(--game-border)}.welcome-content{text-align:center;max-width:600px}.welcome-content h2{margin:0 0 12px;font-size:28px;font-weight:600;color:var(--game-text-main)}.welcome-content p{margin:0 0 32px;font-size:16px;color:var(--game-text-muted)}.quick-actions{display:flex;gap:24px;justify-content:center}.action-card{padding:24px;background:var(--game-surface-elevated);border:1px solid var(--game-border);border-radius:12px;cursor:pointer;transition:all .3s ease;text-align:center;max-width:200px}.action-card:hover{background:var(--game-border);border-color:var(--game-border);transform:translateY(-4px)}.action-card svg{margin-bottom:12px;color:var(--game-text-dimmed)}.action-card h3{margin:0 0 8px;font-size:16px;font-weight:600;color:var(--game-text-main)}.action-card p{margin:0;font-size:13px;color:var(--game-text-muted);line-height:1.4}.entity-placeholder{text-align:center;max-width:500px}.placeholder-icon{margin-bottom:24px;color:var(--game-text-dimmed)}.entity-placeholder h2{margin:0 0 8px;font-size:24px;font-weight:600;color:var(--game-text-main)}.entity-placeholder p{font-size:14px;color:var(--game-text-muted);line-height:1.5;max-width:400px;margin:0 auto 32px}.placeholder-actions{display:flex;gap:16px;justify-content:center}.workbench-graph{flex:1;overflow:hidden}.workbench-graph .entity-graph-view{flex:1}.graph-breadcrumb,.entity-breadcrumb{position:absolute;top:16px;left:16px;z-index:10;display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--game-surface);border:1px solid var(--game-border);border-radius:8px;font-size:14px}.graph-breadcrumb .breadcrumb-item,.entity-breadcrumb .breadcrumb-item{display:flex;align-items:center;gap:4px;color:var(--game-text-muted);cursor:pointer;transition:color .2s ease}.graph-breadcrumb .breadcrumb-item:hover,.entity-breadcrumb .breadcrumb-item:hover{color:var(--game-primary)}.graph-breadcrumb .breadcrumb-item:last-child,.entity-breadcrumb .breadcrumb-item:last-child{color:var(--game-text-main);cursor:default}.graph-breadcrumb .breadcrumb-separator,.entity-breadcrumb .breadcrumb-separator{color:var(--game-text-dimmed)}.entity-breadcrumb{position:static;margin-bottom:16px;align-self:flex-start}.workbench-entity{align-items:stretch;padding:0}.workbench-entity>*{flex:1}.time-control-bar{height:60px;background:var(--game-control-bar);border-bottom:1px solid var(--game-border);display:flex;align-items:center;justify-content:space-between;padding:0 20px;position:relative;z-index:10}.status-light-container{display:flex;align-items:center;gap:10px;padding:8px 16px;background:var(--game-surface-elevated);border:1px solid var(--game-border);border-radius:8px;margin-right:16px}.status-light{width:12px;height:12px;border-radius:50%;transition:all .3s ease;animation:pulse-glow 2s ease-in-out infinite}.status-light.stopped{animation:none}@keyframes pulse-glow{0%,to{opacity:1}50%{opacity:.7}}.status-label{font-size:12px;font-weight:500;color:var(--game-text-main);text-transform:uppercase;letter-spacing:.5px}.time-controls{display:flex;align-items:center;gap:24px;flex:1}.playback-controls{display:flex;align-items:center;gap:4px;background:var(--game-surface-elevated);padding:4px;border-radius:8px;border:1px solid var(--game-border)}.control-button{width:36px;height:36px;background:transparent;border:none;color:var(--game-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s ease}.control-button:hover{background:var(--game-border);color:var(--game-text-main)}.control-button:disabled{opacity:.3;cursor:not-allowed}.control-button:disabled:hover{background:transparent;color:var(--game-text-muted)}.control-button.primary{background:var(--game-primary);color:#fff}.control-button.primary:hover{background:var(--game-primary-hover)}.control-button svg{pointer-events:none}.speed-control{display:flex;align-items:center;gap:8px}.speed-control label{font-size:12px;color:var(--game-text-muted);font-weight:500}.speed-selector{display:flex;align-items:center;background:var(--game-surface-elevated);border:1px solid var(--game-border);border-radius:6px;overflow:hidden}.speed-button{width:24px;height:24px;background:transparent;border:none;color:var(--game-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;transition:all .2s ease}.speed-button:hover:not(:disabled){background:var(--game-border);color:var(--game-text-main)}.speed-button:disabled{opacity:.3;cursor:not-allowed}.speed-value{padding:0 12px;font-size:12px;font-weight:600;color:var(--game-text-main);min-width:32px;text-align:center;background:var(--game-border)}.time-display{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--game-surface-elevated);border:1px solid var(--game-border);border-radius:6px}.time-display svg{color:var(--game-text-dimmed)}.time-value{font-family:SF Mono,Monaco,Inconsolata,Roboto Mono,monospace;font-size:13px;font-weight:500;color:var(--game-text-main);letter-spacing:.5px}.bar-controls{display:flex;align-items:center;gap:8px}.icon-button{width:32px;height:32px;background:transparent;border:1px solid var(--game-border);color:var(--game-text-dimmed);cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:all .2s ease}.icon-button:hover{background:var(--game-border);color:var(--game-text-main);border-color:var(--game-border)}.icon-button.start-project-button{background:var(--game-primary);color:#fff;border-color:var(--game-primary);padding:0 12px;width:auto;gap:6px}.icon-button.start-project-button:hover:not(:disabled){background:var(--game-primary-hover);border-color:var(--game-primary-hover)}.icon-button.start-project-button:disabled{opacity:.5;cursor:not-allowed}.icon-button.stop-project-button{background:#ef4444;color:#fff;border-color:#ef4444;padding:0 12px;width:auto;gap:6px}.icon-button.stop-project-button:hover:not(:disabled){background:#dc2626;border-color:#dc2626}.icon-button.stop-project-button:disabled{opacity:.5;cursor:not-allowed}.icon-button .button-text{font-size:12px;font-weight:500}.icon-button .spinning{animation:spin 1s linear infinite}.progress-bar{position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--game-surface-elevated);overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--game-primary),var(--game-accent));position:relative}.progress-fill:after{content:"";position:absolute;top:0;right:0;bottom:0;width:20px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2));animation:shimmer 2s infinite}@keyframes shimmer{0%{transform:translate(-20px)}to{transform:translate(20px)}}.batch-apply-button{background:transparent;border:1px solid var(--game-border);padding:0 10px;height:24px;border-radius:6px;font-size:11px;font-weight:500;color:var(--game-text-dimmed);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:4px}.batch-apply-button:hover:not(:disabled){background:var(--game-surface-elevated);border-color:var(--game-accent);color:var(--game-accent)}.batch-apply-button:disabled{opacity:.3;cursor:not-allowed}.game-engine-layout{position:relative;width:100vw;height:100vh;display:flex;flex-direction:column;background:var(--game-background);color:var(--game-text-main);font-family:SF Mono,Monaco,Inconsolata,Roboto Mono,monospace;overflow:hidden}.engine-main{flex:1;display:flex;overflow:hidden;position:relative;width:100%;height:100%}.sidebar-panel{background:var(--game-surface);border-right:1px solid var(--game-border);overflow:hidden}.sidebar-panel:last-child{border-right:none;border-left:1px solid var(--game-border)}.center-panel,.workbench-panel{background:var(--game-background);overflow:hidden}.resize-handle{position:absolute;background:transparent;transition:all .2s ease;z-index:10}.resize-handle.vertical{top:0;bottom:0;width:4px;cursor:col-resize}.resize-handle.horizontal{left:0;right:0;height:4px;cursor:row-resize}.resize-handle.vertical{background:var(--game-border);width:2px}.resize-handle.vertical:hover{background:var(--game-primary);width:6px}.resize-handle:hover{background:var(--game-primary)}.resize-handle.vertical:hover{background:linear-gradient(90deg,transparent,var(--game-primary),transparent)}.resize-handle.horizontal:hover{background:linear-gradient(180deg,transparent,var(--game-primary),transparent)}.resize-handle.dragging{background:var(--game-primary)!important;opacity:.8}.resizable-layout>.resize-handle.horizontal{background:var(--game-border);transition:all .2s ease}.resizable-layout>.resize-handle.horizontal:hover{background:var(--game-primary);height:6px}.resizable-layout>.resize-handle.horizontal:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:40px;height:2px;background:repeating-linear-gradient(90deg,var(--game-text-muted),var(--game-text-muted) 3px,transparent 3px,transparent 6px);opacity:0;transition:opacity .2s ease}.resizable-layout>.resize-handle.horizontal:hover:after{opacity:.6}.resizable-layout{width:100%;height:100%;overflow:hidden}.resizable-layout>div{position:relative;overflow:hidden}.sidebar-toggle{position:absolute;right:-20px;top:50%;transform:translateY(-50%);width:40px;height:40px;background:var(--game-surface);border:1px solid var(--game-border);border-left:none;border-radius:0 8px 8px 0;color:var(--game-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;z-index:20}.sidebar-toggle:hover{background:var(--game-surface-elevated);color:var(--game-text-main)}.dock-toggle{position:absolute;right:20px;width:40px;height:40px;background:var(--game-surface);border:1px solid var(--game-border);border-top:none;border-radius:8px 8px 0 0;color:var(--game-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease;z-index:20}.dock-toggle:hover{background:var(--game-surface-elevated);color:var(--game-text-main)}.notification-container{position:fixed;top:80px;right:20px;z-index:10000;display:flex;flex-direction:column;gap:10px;pointer-events:none}.notification{background:var(--game-surface);border:1px solid var(--game-border);border-radius:8px;padding:16px;min-width:300px;max-width:400px;box-shadow:0 10px 40px #0000004d;pointer-events:all;cursor:pointer;position:relative;overflow:hidden}[data-theme=light] .notification{box-shadow:0 10px 40px #0000001a}.notification:before{content:"";position:absolute;top:0;left:0;width:4px;height:100%}.notification-success:before{background:var(--game-success)}.notification-error:before{background:var(--game-error)}.notification-warning:before{background:var(--game-warning)}.notification-info:before{background:var(--game-primary)}.notification-title{font-weight:600;margin-bottom:4px;color:var(--game-text-main)}.notification-message{font-size:14px;color:var(--game-text-muted);line-height:1.4}.notification-close{position:absolute;top:12px;right:12px;background:none;border:none;color:var(--game-text-muted);cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease;z-index:10}.notification-close:hover{background:var(--game-hover);color:var(--game-text-main)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--game-surface)}::-webkit-scrollbar-thumb{background:var(--game-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--game-text-dimmed)}@media(max-width:1024px){.sidebar-right{width:250px}}@media(max-width:768px){.sidebar-left{position:absolute;height:100%;z-index:100;box-shadow:2px 0 10px #00000080}.sidebar-right{width:200px}.marketplace-dock{height:150px!important}}@media(max-width:480px){.sidebar-right{display:none}.notification-container{right:10px;left:10px}.notification{min-width:auto;max-width:none}}.recharge-page{max-width:600px;margin:0 auto;padding:24px;color:var(--text-main)}.recharge-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.recharge-header h1{display:flex;align-items:center;gap:12px;font-size:24px;font-weight:600;margin:0}.back-button{display:flex;align-items:center;gap:8px;padding:8px 16px;background:transparent;border:1px solid var(--border);border-radius:8px;color:var(--text-muted);cursor:pointer;transition:all .2s}.back-button:hover{background:var(--surface);color:var(--text-main)}.refresh-button{padding:8px;background:transparent;border:1px solid var(--border);border-radius:8px;color:var(--text-muted);cursor:pointer;transition:all .2s}.refresh-button:hover:not(:disabled){background:var(--surface);color:var(--text-main)}.refresh-button:disabled{opacity:.5;cursor:not-allowed}.spinning{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.balance-card{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:24px;border-radius:16px;margin-bottom:32px;box-shadow:0 8px 24px #667eea4d}.balance-label{font-size:14px;opacity:.9;margin-bottom:8px}.balance-value{font-size:36px;font-weight:700;margin-bottom:4px}.balance-yuan{font-size:14px;opacity:.8}.recharge-form{background:var(--surface);border-radius:16px;padding:24px;box-shadow:0 2px 8px #0000001a}.recharge-form h2{margin:0 0 20px;font-size:18px;font-weight:600}.quick-amounts{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}.quick-amount-button{padding:12px;background:var(--background);border:2px solid var(--border);border-radius:12px;font-size:16px;font-weight:600;color:var(--text-main);cursor:pointer;transition:all .2s}.quick-amount-button:hover{border-color:#667eea;color:#667eea}.custom-amount{margin-bottom:20px}.custom-amount label{display:block;margin-bottom:8px;font-size:14px;font-weight:500;color:var(--text-muted)}.custom-amount input{width:100%;padding:12px 16px;background:var(--background);border:2px solid var(--border);border-radius:12px;font-size:16px;color:var(--text-main);transition:all .2s}.custom-amount input:focus{outline:none;border-color:#667eea}.credits-preview{padding:16px;background:var(--background);border-radius:12px;margin-bottom:20px;text-align:center;font-size:14px}.credits-preview strong{color:#667eea;font-size:20px;font-weight:700}.recharge-button{width:100%;padding:16px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:12px;font-size:18px;font-weight:600;cursor:pointer;transition:all .2s}.recharge-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.recharge-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.recharge-tips{margin-top:24px;padding:16px;background:var(--background);border-radius:12px;border:1px solid var(--border)}.recharge-tips p{margin:4px 0;font-size:13px;color:var(--text-muted)}.recharge-tips p:before{content:"• ";color:#667eea}.notification{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:16px;display:flex;align-items:flex-start;gap:12px;animation:slideIn .3s ease}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.notification-success{border-left:4px solid #22c55e}.notification-error{border-left:4px solid #ef4444}.notification-warning{border-left:4px solid #f59e0b}.notification-content{flex:1}.notification-title{font-weight:600;margin-bottom:4px;color:var(--text-main)}.notification-message{font-size:14px;color:var(--text-muted)}.notification-close{padding:4px 8px;background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-size:18px;line-height:1}.notification-close:hover{color:var(--text-main)}
