@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600&family=Instrument+Sans:wght@300;400;500&display=swap";.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:rgba(255,255,255,.5);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:rgba(0,89,220,.08);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%}.rf-dim{opacity:.34;filter:saturate(.5);transition:opacity .16s ease,filter .16s ease}.rf-shift{transition:transform .76s cubic-bezier(.5,0,.2,1)}.react-flow__edge{transition:opacity .2s ease}.rf-edge-hide{opacity:0}.rf-minimap-behind{opacity:.22;z-index:0;transition:opacity .2s ease}@keyframes rf-swap-in{0%{opacity:0}to{opacity:1}}@keyframes rf-fade-in{0%{opacity:0}to{opacity:1}}.rf-fade-in{animation:rf-fade-in .26s ease both}.rf-swap-in>*{animation:rf-swap-in .18s ease both}@keyframes rf-frame-grow{0%{transform:scale(var(--rf-from))}to{transform:scale(var(--rf-to))}}.rf-frame-grow{animation:rf-frame-grow .76s cubic-bezier(.5,0,.2,1) both}.rf-iso *,.rf-frame-grow *{scrollbar-width:thin;scrollbar-color:#3a3a3a transparent}.rf-iso ::-webkit-scrollbar,.rf-frame-grow ::-webkit-scrollbar{width:0;height:9px}.rf-iso ::-webkit-scrollbar-track,.rf-frame-grow ::-webkit-scrollbar-track{background:transparent}.rf-iso ::-webkit-scrollbar-thumb,.rf-frame-grow ::-webkit-scrollbar-thumb{background:#3a3a3a;border-radius:5px}.rf-iso ::-webkit-scrollbar-thumb:hover{background:#4d4d4d}.rf-flow-edge{stroke-dasharray:6 5;animation:rf-flow-dash .9s linear infinite}@keyframes rf-flow-dash{to{stroke-dashoffset:-11}}@media (prefers-reduced-motion: reduce){.rf-flow-edge{animation:none}}@keyframes rf-reveal-fade{0%{opacity:0}to{opacity:1}}@keyframes rf-reveal-edge-draw{to{stroke-dashoffset:0}}.rf-reveal-edge{stroke-dasharray:100;stroke-dashoffset:100;animation:rf-reveal-edge-draw .2s ease-out forwards}.rf-reveal-node{position:relative;animation:rf-reveal-border-in .2s ease-out both;animation-delay:var(--rf-outline-delay, 0ms)}@keyframes rf-reveal-border-in{0%,92%{border-color:transparent}to{border-color:var(--rf-reveal-accent, #8a8a8a);border-color:color-mix(in srgb,var(--rf-reveal-accent, #8a8a8a) 40%,transparent)}}.rf-reveal-node:before,.rf-reveal-node:after{content:"";position:absolute;box-sizing:border-box;border:0 solid var(--rf-reveal-accent, #8a8a8a);border-radius:inherit;pointer-events:none;width:0;height:0;animation-duration:.2s;animation-timing-function:ease-out;animation-delay:var(--rf-outline-delay, 0ms);animation-fill-mode:both}.rf-reveal-node:before{top:0;right:0;border-top-width:2px;border-right-width:2px;animation-name:rf-reveal-trace-tr}.rf-reveal-node:after{bottom:0;left:0;border-bottom-width:2px;border-left-width:2px;animation-name:rf-reveal-trace-bl}@keyframes rf-reveal-trace-tr{0%{width:0;height:0}50%{width:100%;height:0}to{width:100%;height:100%}}@keyframes rf-reveal-trace-bl{0%{width:0;height:0}50%{width:100%;height:0}to{width:100%;height:100%}}.rf-reveal-text{animation:rf-reveal-fade .14s ease-out both;animation-delay:var(--rf-text-delay, .3s)}.rf-reveal-backing{animation:rf-reveal-fade .16s ease-out both;animation-delay:var(--rf-box-delay, .5s)}@media (prefers-reduced-motion: reduce){.rf-reveal-node:before,.rf-reveal-node:after{content:none}.rf-reveal-node{animation:rf-reveal-fade .16s ease both;animation-delay:0ms!important}.rf-reveal-text{animation:rf-reveal-fade .12s ease both;animation-delay:0ms!important}.rf-reveal-backing{animation:rf-reveal-fade .16s ease both;animation-delay:0ms!important}.rf-reveal-edge{animation:none;stroke-dasharray:none;stroke-dashoffset:0}}.edit-mode .react-flow__handle{opacity:0!important;width:10px!important;height:10px!important;min-width:0!important;min-height:0!important;background:var(--link)!important;border:2px solid var(--bg)!important;border-radius:50%!important;transition:opacity .12s ease}.edit-mode .react-flow__node:hover .react-flow__handle,.edit-mode .react-flow__handle.connecting,.edit-mode .react-flow__handle-connecting{opacity:1!important}.edit-mode .react-flow__edge.selected .react-flow__edge-path{stroke:var(--text)!important;stroke-width:3!important}.isolate-code-pane code[class*=language-]{padding-left:0!important}.isolate-code-pane .linenumber{min-width:1.4em!important;padding-right:0!important;margin-right:8px!important;text-align:right}.react-flow__node.rf-happy>div{border-color:#c6f135!important;box-shadow:0 0 0 2px #c6f13547,0 0 24px 4px #c6f13559!important}.react-flow__node.rf-happy-failure>div{border-color:#f5a524!important;box-shadow:0 0 0 2px #f5a52447,0 0 24px 4px #f5a52459!important}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--mono: "IBM Plex Mono", monospace;--sans: "Instrument Sans", sans-serif;--radius: 4px;--transition: .12s ease}:root{--area: var(--blue);--area-rim: var(--blue-rim);--area-fill: var(--blue-fill)}:root[data-area=maps]{--area: var(--orange);--area-rim: var(--orange-rim);--area-fill: var(--orange-fill)}:root[data-area=tour]{--area: var(--green);--area-rim: var(--green-rim);--area-fill: var(--green-fill)}:root[data-area=plain]{--area: var(--grey);--area-rim: var(--grey-rim);--area-fill: var(--grey-fill)}:root[data-mode=edit]{--area: var(--purple);--area-rim: var(--purple-rim);--area-fill: var(--purple-fill)}.area-rail{border-left:2px solid var(--area)}.area-header{border-bottom:1px solid var(--area-rim);padding-bottom:.7rem}html,body,#root{height:100%;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}.error{color:var(--error);font-family:var(--mono);font-size:.8rem}.home{height:100vh;display:grid;place-items:center;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:48px 48px}.home-inner{display:flex;flex-direction:column;align-items:center;gap:1rem;background:var(--bg);border:1px solid var(--border-hi);padding:3rem 4rem;text-align:center}.wordmark{font-family:var(--mono);font-size:2.4rem;font-weight:600;letter-spacing:-.03em;line-height:1}.wordmark-slash{color:var(--accent);text-shadow:0 0 12px var(--accent-glow),0 0 30px var(--accent-glow)}.wordmark-name{color:var(--text);margin-left:.25rem}.wordmark-sub{font-family:var(--mono);font-size:.72rem;color:var(--muted);letter-spacing:.12em;text-transform:uppercase}.home-actions{display:flex;gap:.75rem;margin-top:.75rem;flex-wrap:wrap;justify-content:center}.btn-primary,.btn-ghost{font-family:var(--mono);font-size:.78rem;font-weight:600;letter-spacing:.04em;padding:.65rem 1.4rem;border-radius:var(--radius);cursor:pointer;transition:all var(--transition);border:1px solid transparent}.btn-primary{background:var(--action);color:var(--on-action);border-color:var(--action)}.btn-primary:hover{background:transparent;color:var(--action)}.btn-ghost{background:transparent;color:var(--muted);border-color:var(--border-hi)}.btn-ghost:hover{color:var(--text);border-color:var(--accent)}.page{max-width:600px;margin:0 auto;padding:3rem 2rem;display:flex;flex-direction:column;gap:1.25rem}.back{background:none;border:none;color:var(--muted);font-family:var(--mono);font-size:.75rem;cursor:pointer;padding:0;align-self:flex-start;transition:color var(--transition)}.back:hover{color:var(--area)}.page-title{font-family:var(--mono);font-size:1.4rem;font-weight:600;color:var(--text)}.page-sub{color:var(--muted);font-size:.85rem}.card-list{display:flex;flex-direction:column;gap:.5rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;cursor:pointer;text-align:left;display:flex;flex-direction:column;gap:.2rem;transition:border-color var(--transition)}.card:hover:not(:disabled){border-color:var(--accent)}.card:disabled{opacity:.35;cursor:not-allowed}.card--recommended{border-color:var(--recommend)}.card--recommended:hover:not(:disabled){border-color:var(--recommend)}.card-badge-hint{color:var(--recommend);font-size:.72rem}.card-badge{font-family:var(--mono);font-size:.6rem;font-weight:600;color:var(--accent);letter-spacing:.12em}.card-title{font-family:var(--mono);font-size:.85rem;color:var(--text)}.card-sub{font-size:.8rem;color:var(--muted)}.badge{font-family:var(--mono);font-size:.62rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;padding:.18rem .55rem;border:1px solid var(--primary-container-hover);border-radius:2px;color:var(--accent);background:var(--primary-container)}.loading-bar{height:1px;background:var(--border);overflow:hidden}.loading-bar span{display:block;height:100%;width:45%;background:var(--action);animation:sweep 1.2s ease-in-out infinite}@keyframes sweep{0%{transform:translate(-100%)}to{transform:translate(320%)}}.diagram-page{min-height:100vh;display:flex;flex-direction:column;padding:1.5rem 2rem;gap:1.25rem;max-width:1600px;margin:0 auto}.diagram-header{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap}.diagram-meta{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.diagram-repo{font-family:var(--mono);font-size:.95rem;font-weight:600;color:var(--text)}.mermaid-wrap{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);padding:2rem;overflow:auto;min-height:300px}.mermaid-wrap svg{max-width:100%;height:auto}.raw{border:1px solid var(--border);border-radius:var(--radius)}.raw summary{padding:.65rem 1rem;font-family:var(--mono);font-size:.72rem;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--surface)}.raw summary:hover{color:var(--text)}.raw pre{padding:1rem;font-family:var(--mono);font-size:.72rem;color:var(--text);overflow:auto;max-height:360px;line-height:1.7}.token-create{display:flex;gap:.5rem}.token-input{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .75rem;color:var(--text);font-family:var(--mono);font-size:.8rem}.token-input:focus{outline:none;border-color:var(--accent)}.token-reveal{display:flex;flex-direction:column;gap:.4rem;background:var(--surface);border:1px solid var(--warning);border-radius:var(--radius);padding:.75rem 1rem}.token-value{font-family:var(--mono);font-size:.8rem;color:var(--accent);word-break:break-all}.token-row{display:flex;align-items:center;gap:.75rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.6rem 1rem}.token-row .card-title{flex:1}@keyframes tourBubbleIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes edgeFlow{to{stroke-dashoffset:-18}}@keyframes nodeSettle{0%{transform:scale(.94)}60%{transform:scale(1.02)}to{transform:scale(1)}}@keyframes nodeBreathe{0%,to{transform:scale(1)}50%{transform:scale(1.022)}}@keyframes ringSweep{to{stroke-dashoffset:0}}@keyframes wordIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes armIn{0%{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}@keyframes drawIn{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.tour-word{display:inline-block;animation:wordIn .38s ease both;animation-delay:calc(var(--i) * 22ms)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.react-flow__node-group{width:auto;height:auto;padding:0;border:none;border-radius:0;background:none}
