.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#555;--xy-background-pattern-lines-color-default:#333;--xy-background-pattern-cross-color-default:#333;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.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__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray: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.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.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-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.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:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.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-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.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{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.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:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}:root{--bg:#3b121b;--bg-raised:#491b20;--bg-panel:#5b2525;--ink:#c1d3d3;--muted:#8eabaa;--faint:#5e7f7e;--line:#1a0717;--line-strong:#824336;--gold:#e5bd46;--gold-deep:#d4802c;--live:#589a4b;--live-hot:#c0dd98;--mixed:#d4802c;--alpha:#f1e668;--serif:Tiny5, "Courier New", monospace;--sans:Tiny5, "Courier New", monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--sans);color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:geometricprecision;-webkit-font-smoothing:none;font-smooth:never}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);text-shadow:0 2px #000;font-size:16px;line-height:1.35;overflow:hidden}button,input,select,textarea{font:inherit;text-shadow:none}.app{background:var(--bg);height:100%}.shell{grid-template-rows:72px minmax(0,1fr);grid-template-columns:300px minmax(0,1fr);height:100%;display:grid}.wiki-bar{background:#1a0717;grid-column:1/-1;height:72px;line-height:0;display:flex;position:relative}.wiki-bar img{image-rendering:pixelated;image-rendering:crisp-edges;display:block}.wiki-bar-menu{cursor:pointer;background:0 0;border:0;flex:none;width:72px;height:72px;padding:0;position:relative}.wiki-bar-box{width:72px;height:72px}.wiki-bar-gem{object-fit:contain;pointer-events:none;width:42px;height:42px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.wiki-bar-mid{flex:1;min-width:0;height:72px;display:flex}.wiki-bar-cap,.wiki-bar-end,.wiki-bar-edge{flex:none;width:auto;height:72px}.wiki-bar-body{background:url(/header/header_bar_body_column.png) 0 0/auto 72px repeat-x;flex:1;min-width:0;height:72px;position:relative}.wiki-bar-title{color:#e2ecec;text-shadow:0 2px #000;white-space:nowrap;align-items:center;gap:10px;margin:0;font-size:16px;line-height:18px;display:flex;position:absolute;inset:0 48px 0 10px;overflow:hidden}.wiki-bar-fill{background:url(/header/header_filler_column.png) 0 0/auto 72px repeat-x;flex:none;width:12px;height:72px}.wiki-bar-home{z-index:2;color:#f1e668;text-shadow:0 2px #000;align-items:center;height:72px;padding:0 8px;font-size:16px;line-height:18px;text-decoration:none;display:flex;position:absolute;top:0;right:16px}.wiki-bar-home:hover{color:#fffcdc}.side{min-height:0}.side .save-status{color:var(--k-g);letter-spacing:0;text-transform:none;margin:14px 4px 0;font-size:16px;font-weight:400}.side-actions{gap:8px;margin-top:14px;display:grid}.side-actions .btn{justify-content:center}.side-actions .btn:disabled{opacity:.45;cursor:default}.side-actions .btn:disabled:hover{border-image-source:var(--img-cell)}.shell .main{min-width:0;min-height:0;overflow:auto}.shell .main-fill,.main.app-slot{flex-direction:column;display:flex;overflow:hidden}.wiki-slot{flex-direction:column;flex:1;min-height:0;display:flex}.graph-bar{flex-wrap:wrap;flex:none;align-items:center;gap:8px 12px;padding:8px 12px 0;display:flex}.graph-bar .hint-bar{border-bottom:none;flex:240px;padding:4px 0 8px}.graph-bar .save-status{margin:0}.graph-actions{flex-wrap:wrap;gap:8px;margin-left:auto;display:flex}.save-status{color:var(--faint);letter-spacing:.02em;text-transform:uppercase;margin:0 8px 0 0;font-size:14px;font-weight:600}.save-status[data-state=saved]{color:var(--gold)}.save-status[data-state=saving],.save-status[data-state=loading]{color:var(--muted)}.save-status[data-state=error]{color:#d78257}a.tool-btn{align-items:center;text-decoration:none;display:inline-flex}.tool-btn,.close{appearance:none;color:var(--muted);border:1px solid var(--line-strong);letter-spacing:.02em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:0;flex:none;padding:7px 12px;font-size:14px;font-weight:600}.tool-btn:hover,.close:hover{color:var(--ink);border-color:var(--gold)}.tool-btn:focus-visible,.close:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.tool-btn:disabled{opacity:.4;cursor:default}.tool-btn.is-primary{color:#1a0717;background:var(--gold);border-color:var(--gold)}.tool-btn.is-primary:hover{color:#1a0717;background:#f1e668}.tool-btn.is-danger{color:#d78257;border-color:#65142f;width:100%}.tool-btn.is-danger:hover{color:#e5b27f;border-color:#b43f3f}.hint-bar{color:var(--faint);letter-spacing:.02em;border-bottom:1px solid var(--line);flex:none;margin:0;padding:8px 22px 10px;font-size:16px}.text-btn{appearance:none;color:var(--gold);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border:none;margin-top:8px;padding:0;font-size:14px;font-weight:600}.text-btn:hover{color:var(--ink)}.workspace{flex:1;min-height:0;display:flex}.canvas,.flow-host{flex:1;min-width:0;min-height:0;position:relative}.flow-host{height:100%}.canvas .react-flow{background:var(--bg);--xy-background-color:var(--bg);--xy-background-color-default:var(--bg)}.skill-node,.entity-node{border:2px solid var(--line);background:var(--bg-panel);width:100%;min-height:92px;color:var(--ink);cursor:grab;-webkit-user-select:none;user-select:none;border-radius:0;align-items:center;gap:12px;padding:14px 16px;transition:border-color .22s,box-shadow .22s,opacity .22s;display:flex;position:relative;overflow:visible;box-shadow:0 4px #000}.entity-node{border-style:dashed;min-height:84px}.skill-node:hover,.entity-node:hover{border-color:var(--gold)}.skill-node:focus-visible,.entity-node:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.skill-node.is-linked,.entity-node.is-linked{border-color:var(--gold);box-shadow:0 4px #000}.skill-node.is-selected,.entity-node.is-selected{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold), 0 4px 0 #000}.skill-node.is-live{border-color:var(--live);background:#115c49;box-shadow:0 4px #000}.skill-node.is-live:hover,.skill-node.is-live.is-linked{border-color:var(--live-hot)}.skill-node.is-live.is-selected{border-color:var(--live-hot);box-shadow:0 0 0 2px var(--live-hot), 0 4px 0 #000}.skill-node.is-live .skill-icon{color:var(--live-hot);border-color:#2d7745}.skill-badges{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.skill-badge{letter-spacing:.02em;text-transform:uppercase;border-radius:0;padding:2px 7px;font-size:14px;font-weight:700;line-height:1.3}.skill-badge.is-live{color:#1a0717;background:var(--live-hot)}.skill-badge.is-alpha{color:#1a0717;background:var(--alpha)}.skill-node.is-dimmed,.entity-node.is-dimmed{opacity:.28}.skill-node.is-dimmed:hover,.entity-node.is-dimmed:hover{opacity:.78}.skill-icon{width:44px;height:44px;color:var(--gold);border:2px solid var(--line);background:#300b17;border-radius:0;flex:none;place-items:center;display:grid}.skill-svg{width:26px;height:26px;display:block}.skill-copy{flex-direction:column;gap:1px;min-width:0;display:flex}.skill-category,.kicker,.rel-type{letter-spacing:.02em;text-transform:uppercase;color:var(--muted);font-size:14px;font-weight:600}.entity-node .skill-category{text-transform:capitalize;letter-spacing:.02em}.skill-name{font-family:var(--serif);letter-spacing:.01em;white-space:nowrap;font-size:28px;font-weight:600;line-height:1}.flow-handle{z-index:4;border:1.5px solid var(--gold);opacity:.95;background:#1a0717;width:14px;height:14px}.flow-handle:hover,.react-flow__handle-connecting,.react-flow__handle-valid{background:var(--gold)}.react-flow__node{font-family:var(--sans)}.react-flow__node.selected,.react-flow__node:focus,.react-flow__node:focus-visible{box-shadow:none;outline:none}.react-flow__edge-path{transition:stroke .24s,stroke-opacity .24s,stroke-width .24s}.react-flow__edge.edge-idle:hover .react-flow__edge-path,.react-flow__edge.edge-hot:hover .react-flow__edge-path{stroke:#fffcdc;stroke-opacity:1}.react-flow__edge.edge-live.edge-idle:hover .react-flow__edge-path,.react-flow__edge.edge-live.edge-hot:hover .react-flow__edge-path{stroke:#c0dd98}.react-flow__edge.edge-mixed.edge-idle:hover .react-flow__edge-path,.react-flow__edge.edge-mixed.edge-hot:hover .react-flow__edge-path{stroke:#f1e668}.react-flow__controls{border:1px solid var(--line);border-radius:0;overflow:hidden;box-shadow:0 10px 24px #00000047}.react-flow__controls-button{border-bottom:1px solid var(--line);fill:#c1d3d3;background:#491b20;width:28px;height:28px}.react-flow__controls-button:hover{background:#5b2525}.react-flow__attribution{color:var(--faint);background:0 0}.react-flow__attribution a{color:var(--gold-deep)}.panel{border-left:1px solid var(--line);background:#491b20;flex:none;width:min(360px,100%);padding:22px 22px 32px;animation:.22s panel-in;overflow:auto;box-shadow:-18px 0 40px #0000002e}.panel-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.panel-title{align-items:center;gap:12px;min-width:0;display:flex}.panel-icon{width:42px;height:42px}.panel h2{font-family:var(--serif);margin:0;font-size:36px;font-weight:600;line-height:.95}.kicker{margin:0 0 4px}.summary,.empty,.rel-desc,.rel-label,.rel-strength{color:var(--muted);font-size:14px;line-height:1.45}.summary{margin:14px 0 0}.panel-section{margin-top:22px}.panel-section h3{letter-spacing:.02em;text-transform:uppercase;color:var(--gold);margin:0 0 10px;font-size:14px;font-weight:600}.names,.rels{margin:0;padding:0;list-style:none}.names{flex-direction:column;gap:6px;display:flex}.names li{font-family:var(--serif);font-size:24px;line-height:1.15}.names li:before{content:"";background:var(--gold);width:12px;height:1px;margin:0 8px 5px 0;display:inline-block}.rels li{border-top:1px solid var(--line);padding:12px 0}.rels li:last-child{border-bottom:1px solid var(--line)}.rel-dir{font-family:var(--serif);flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;font-size:20px;display:flex}.arrow{color:var(--gold)}.rel-type,.rel-label,.rel-desc,.rel-strength{margin:4px 0 0}.rel-strength{color:var(--faint);letter-spacing:.04em;font-size:14px}.form-stack{flex-direction:column;gap:12px;margin-top:16px;display:flex}.field{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;flex-direction:column;gap:6px;font-size:14px;font-weight:600;display:flex}.field input,.field select,.field textarea{width:100%;color:var(--ink);border:1px solid var(--line-strong);letter-spacing:0;text-transform:none;background:#300b17;border-radius:0;padding:8px 10px;font-size:14px;font-weight:400}.field textarea{resize:vertical;min-height:72px}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline:2px solid var(--gold);outline-offset:1px}.icon-pick{flex-wrap:wrap;gap:6px;display:flex}.icon-pick button{width:36px;height:36px;color:var(--gold);border:2px solid var(--line);cursor:pointer;background:#300b17;border-radius:0;place-items:center;display:grid}.icon-pick button.is-on,.icon-pick button:hover{border-color:var(--gold)}.icon-pick .skill-svg{width:20px;height:20px}.dialog-backdrop{z-index:20;background:#0c030dc7;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.dialog{border:1px solid var(--line);background:#491b20;border-radius:0;width:min(420px,100%);padding:22px;box-shadow:0 24px 60px #00000073}.dialog h2{font-family:var(--serif);margin:0;font-size:32px;font-weight:600}.dialog-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.graph-error{height:100%;color:var(--ink);padding:32px}.graph-error p{font-family:var(--serif);margin-top:0;font-size:28px}.empty{margin:0}@keyframes panel-in{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:none}}@keyframes panel-in-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.main .page{flex:1;min-height:0;overflow:auto}.page-body{width:min(760px,100% - 44px);margin:0 auto;padding:28px 0 64px}.page-hero{align-items:center;gap:16px;margin-bottom:28px;display:flex}.page-icon{width:56px;height:56px}.page-hero h2{font-family:var(--serif);margin:0;font-size:42px;font-weight:600;line-height:1}.page-section{margin-bottom:32px}.page-section h3{letter-spacing:.02em;text-transform:uppercase;color:var(--gold);margin:0 0 12px;font-size:16px;font-weight:600}.section-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.section-head h3{margin:0}.page-overview,.system-card textarea{resize:vertical;width:100%;color:var(--ink);background:var(--bg-raised);border:1px solid var(--line);border-radius:0;padding:12px 14px}.system-list{gap:16px;display:grid}.system-card{background:var(--bg-panel);border:1px solid var(--line);border-radius:0;padding:16px}.system-card-head{grid-template-columns:1fr auto;align-items:end;gap:12px;margin-bottom:12px;display:grid}.page-links{margin:0;padding:0;list-style:none}.page-links li{border-bottom:1px solid var(--line);padding:12px 0}.page-links a{color:var(--gold);font-weight:600;text-decoration:none}.page-links a:hover{text-decoration:underline}.page-links span,.page-links p{color:var(--muted);margin:4px 0 0;font-size:16px;display:block}.page .tool-btn.is-danger{width:auto}.live-toggle{color:var(--ink);cursor:pointer;align-items:center;gap:10px;font-size:14px;display:flex}.live-toggle input{width:16px;height:16px;accent-color:var(--live)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.dict-body{width:min(1180px,100% - 44px);margin:0 auto;padding:22px 0 64px}.dict-toolbar{flex-wrap:wrap;align-items:end;gap:12px 16px;margin-bottom:18px;display:flex}.dict-search,.dict-filter{gap:6px;display:grid}.dict-search span,.dict-filter span{color:var(--gold);letter-spacing:.02em;text-transform:uppercase;font-size:14px;font-weight:600}.dict-search input,.dict-filter select{min-width:180px;color:var(--ink);background:var(--bg-raised);border:1px solid var(--line);border-radius:0;padding:8px 10px}.dict-search input{min-width:260px}.dict-count{color:var(--faint);letter-spacing:.08em;text-transform:uppercase;margin:0 0 8px auto;font-size:14px}.dict-table-wrap{border:1px solid var(--line);background:var(--bg-panel);border-radius:0;overflow:auto}.dict-table{border-collapse:collapse;width:100%}.dict-table th,.dict-table td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:12px 14px}.dict-table th{z-index:1;background:#491b20;position:sticky;top:0}.dict-table th button{appearance:none;color:var(--gold);letter-spacing:.02em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;padding:0;font-size:14px;font-weight:600}.dict-table th button:hover{color:var(--ink)}.dict-table tr:last-child td{border-bottom:0}.dict-name,.dict-category,.cost-name,.cost-amount{width:100%;min-width:0;color:var(--ink);border:1px solid var(--line);background:#300b17;border-radius:0;padding:7px 9px}.dict-name{min-width:140px;font-weight:600}.dict-category{width:120px}.cost-list{gap:6px;margin:0 0 8px;padding:0;list-style:none;display:grid}.cost-list li{align-items:center;gap:6px;display:flex}.cost-amount{flex:none;width:64px}.cost-name{width:160px}.skill-tags{flex-wrap:wrap;gap:6px;display:flex}.skill-tag{appearance:none;color:var(--muted);border:1px solid var(--line);letter-spacing:.06em;cursor:pointer;background:0 0;border-radius:0;padding:5px 9px;font-size:14px;font-weight:600}.skill-tag.is-on,.skill-tag:hover{color:var(--gold);border-color:var(--gold)}.dict-empty{color:var(--muted);text-align:center}@media (width<=860px){.shell{grid-template-columns:minmax(0,1fr)}.shell .side{z-index:20;background:var(--bg);width:300px;transition:transform .15s;position:fixed;top:72px;bottom:0;left:0;transform:translate(-100%)}.shell.nav-open .side{transform:none}.hint-bar{display:none}.road-edit-grid{grid-template-columns:1fr}.dict-search input{width:100%;min-width:0}.workspace{position:relative}.panel{z-index:5;border-left:none;border-top:1px solid var(--line);width:100%;max-height:48%;animation-name:panel-in-up;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -12px 32px #00000047}.panel h2{font-size:30px}}.road{flex-direction:column;flex:1;height:100%;min-height:0;display:flex}.road-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:14px 18px 0;display:flex}.road-head p{color:var(--muted);text-shadow:0 2px #000;margin:0;font-size:16px}.road-controls{gap:8px;display:flex}.road-scroll{scroll-snap-type:x mandatory;cursor:grab;scrollbar-color:var(--line-strong) #1a0717;flex:1;min-height:0;overflow:auto hidden}.road-scroll::-webkit-scrollbar{height:12px}.road-scroll::-webkit-scrollbar-track{background:#1a0717}.road-scroll::-webkit-scrollbar-thumb{background:var(--line-strong)}.road-scroll.is-dragging,.road-scroll.is-panning{scroll-snap-type:none;cursor:grabbing}.road-scroll:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}.road-track{-webkit-user-select:none;user-select:none;align-items:stretch;width:max-content;height:100%;padding:18px 12vw 28px;display:flex}.road-step{scroll-snap-align:center;flex-direction:column;width:300px;display:flex}.road-rail{align-items:center;height:28px;display:flex}.road-pip{background:var(--live);width:16px;height:16px;box-shadow:0 0 0 2px #1a0717, 0 0 0 4px var(--live-hot);flex:none}.road-step.is-next .road-pip{background:var(--faint);box-shadow:0 0 0 2px #1a0717,0 0 0 4px #3d5554}.road-step.is-current .road-pip{animation:.8s steps(2,end) infinite road-pip}.road-join{height:8px;margin:0 8px}.road-join.is-done{background:var(--live);flex:1;box-shadow:0 2px #1a0717}.road-join.is-open{background:repeating-linear-gradient(90deg, var(--faint) 0 6px, transparent 6px 12px);background-size:24px 8px;flex:1;animation:.7s steps(2,end) infinite road-march}.road-join.is-end{flex:none;width:18px}.road-card{background:var(--bg-panel);border:2px solid #1a0717;flex-direction:column;min-height:0;margin:8px 22px 0 0;padding:12px 14px 16px;display:flex;box-shadow:0 4px #2d7745}.road-step.is-next .road-card{color:var(--muted);background:#491b20;box-shadow:0 4px #1a0717}.road-step.is-active .road-card{transform:translateY(-2px)}.road-version{color:var(--live-hot);text-shadow:0 2px #000;justify-content:space-between;align-items:center;gap:8px;margin:0 0 6px;font-size:28px;line-height:1;display:flex}.road-step.is-next .road-version{color:var(--faint)}.road-badge{letter-spacing:.02em;text-transform:uppercase;color:#1a0717;text-shadow:none;background:var(--live-hot);padding:2px 7px;font-size:14px;line-height:1.3}.road-step.is-next .road-badge{color:#1a0717;background:var(--faint)}.road-card h2{color:#fffcdc;text-shadow:0 2px #000;margin:0;font-size:20px;font-weight:400}.road-step.is-next .road-card h2{color:var(--muted)}.road-when{color:var(--muted);text-shadow:0 2px #000;margin:4px 0 10px;font-size:15px}.road-card ul{margin:0;padding:0;list-style:none}.road-card li{text-shadow:0 2px #000;margin:0 0 6px;padding-left:14px;font-size:16px;line-height:1.25;position:relative}.road-card li:before{content:"";background:var(--live);width:6px;height:6px;position:absolute;top:6px;left:0;box-shadow:0 2px #1a0717}.road-step.is-next .road-card li:before{background:var(--faint)}.road-step{cursor:pointer}.road.is-editing .road-step:not(.is-editing) .road-card{opacity:.4}.road-step.is-editing{z-index:1;opacity:1;position:relative}.road-step.is-next.is-editing .road-pip{background:var(--gold);box-shadow:0 0 0 2px #1a0717, 0 0 0 4px var(--gold);animation:none}.road-step.is-done.is-editing .road-pip{background:var(--live);box-shadow:0 0 0 2px #1a0717, 0 0 0 4px var(--live-hot);animation:none}.road-step.is-editing .road-card,.road-step.is-next.is-editing .road-card{border-color:var(--gold);box-shadow:0 0 0 3px var(--gold), 0 6px 0 #1a0717;color:#fffcdc;background:#6a3030;transform:translateY(-6px)}.road-step.is-done.is-editing .road-card{background:var(--bg-panel);box-shadow:0 0 0 3px var(--gold), 0 6px 0 var(--live)}.road-step.is-editing .road-version,.road-step.is-next.is-editing .road-version,.road-step.is-editing .road-card h2,.road-step.is-next.is-editing .road-card h2{color:#fffcdc}.road-editing{color:#1a0717;background:var(--gold);letter-spacing:.06em;text-transform:uppercase;text-shadow:none;margin:-12px -14px 10px;padding:5px 10px;font-size:15px}.road-edit{background:var(--bg-panel);border:2px solid #1a0717;flex-direction:column;flex:none;gap:10px;margin:10px 18px 0;padding:12px;display:flex;box-shadow:0 4px #1a0717}.road-edit-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.road-edit-lead{color:#fffcdc;text-shadow:0 2px #000;margin:0;font-size:22px}.road-edit-lead span{color:var(--gold)}.road-edit-grid{grid-template-columns:140px minmax(160px,1fr) 180px;gap:8px 12px;display:grid}.road-edit .field input,.road-edit .field textarea{font-size:18px}.road-edit .field textarea{min-height:88px;max-height:140px}.road-edit-row{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.road-status{gap:8px;display:flex}.road-now{color:var(--ink);text-shadow:0 2px #000;align-items:center;gap:8px;font-size:16px;display:inline-flex}.road-add,.road-remove{appearance:none;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;border:2px solid #1a0717;flex:none;min-height:36px;padding:7px 16px;font-size:16px;box-shadow:0 3px #1a0717}.road-add:focus-visible,.road-remove:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.road-add:disabled,.road-remove:disabled{opacity:.4;cursor:default}.road-add{color:#1a0717;background:var(--gold);text-shadow:none}.road-add:hover{background:#f1e668}.road-remove{color:#fffcdc;text-shadow:0 2px #000;background:#9a3030;align-self:flex-start}.road-remove:hover{background:#c45448}.road-done,.road-next{appearance:none;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;min-height:36px;text-shadow:none;border:2px solid #1a0717;flex:none;padding:7px 16px;font-size:16px;box-shadow:0 3px #1a0717}.road-done{color:#1a0717;background:var(--live)}.road-done:hover{background:var(--live-hot)}.road-next{color:#1a0717;background:var(--faint)}.road-next:hover{background:#8eabaa}.road-done:focus-visible,.road-next:focus-visible{outline:2px solid var(--gold);outline-offset:2px}@keyframes road-pip{50%{transform:translateY(-2px)}}@keyframes road-march{to{background-position:12px 0}}@media (prefers-reduced-motion:reduce){.skill-node,.entity-node,.react-flow__edge-path,.panel,.road-pip,.road-join,.road-card{transition:none;animation:none}}
