:root{--ground:#E9E7E1;--panel:#FFFFFF;--panel-2:#F4F2ED;--ink:#1A1A1E;--muted:#706B64;--line:#1A1A1E;--line-soft:#CBC7C0;--amber:#C77B14;--amber-fill:#F5C462;--green:#1F7A4C;--green-fill:#8FD6AE;--red:#B5342A;--red-fill:#F0A69E;--violet:#5347B8;--violet-fill:#BDB6F0;--u:8px;--fp:"Handjet","JetBrains Mono",monospace;--fm:"JetBrains Mono",ui-monospace,Menlo,monospace}*{box-sizing:border-box}body,html{height:100%}body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--fm);font-size:13px;line-height:1.5;-webkit-font-smoothing:none}canvas,img{image-rendering:pixelated}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--violet);outline-offset:2px}.panel{box-shadow:3px 3px 0 var(--line)}.btn,.panel{background:var(--panel);border:1px solid var(--line)}.btn{font-family:var(--fm);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:7px 12px;box-shadow:2px 2px 0 var(--line);cursor:pointer;color:var(--ink)}.btn:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--line)}.btn:disabled{opacity:.45;cursor:default}.btn.stop{background:var(--red-fill)}.btn.go{background:var(--green-fill)}.btn.primary{background:var(--amber-fill)}.label{font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 var(--u)}.bar{gap:calc(var(--u) * 2);padding:0 calc(var(--u) * 2);height:52px;background:var(--panel);border-bottom:1px solid var(--line);flex:none}.bar,.brand{display:flex;align-items:center}.brand{gap:10px;font-family:var(--fp);font-weight:800;font-size:30px;line-height:1;letter-spacing:.02em}.bar-sep{width:1px;height:24px;background:var(--line-soft)}.bar-spacer{flex:1 1}.nav{display:flex;gap:4px}.nav a{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:6px 10px;border:1px solid transparent;color:var(--muted)}.nav a:hover{color:var(--ink)}.nav a[data-on="1"]{color:var(--ink);background:var(--panel-2);border-color:var(--line)}.stat{display:flex;align-items:baseline;gap:6px}.stat .k{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.stat .v{font-family:var(--fp);font-size:22px;font-weight:600;line-height:1}.shell{display:flex;flex-direction:column;height:100%}.body{flex:1 1;min-height:0;display:flex}.pad{padding:calc(var(--u) * 2);overflow:auto;width:100%}.cols3{display:grid;grid-template-columns:236px minmax(0,1fr) 300px;min-height:0;width:100%}.cols3>aside{border-right:1px solid var(--line-soft)}.cols3>.side,.cols3>aside{padding:calc(var(--u) * 2);overflow:auto}.cols3>.side{border-left:1px solid var(--line-soft)}@media (max-width:1100px){.cols3{grid-template-columns:1fr}.cols3>div:has(.react-flow){min-height:60vh}.cols3>aside{border-right:0;border-bottom:1px solid var(--line-soft)}.cols3>.side{border-left:0;border-top:1px solid var(--line-soft)}}.row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;grid-gap:var(--u);gap:var(--u);align-items:center;padding:var(--u);background:var(--panel);border:1px solid var(--line-soft);margin-bottom:6px}.row.on{border-color:var(--line);box-shadow:2px 2px 0 var(--line)}.row .nm{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .sub{font-size:10px;color:var(--muted)}.dot{width:8px;height:8px;background:var(--line-soft)}.dot.work{background:var(--amber-fill);border:1px solid var(--amber)}.dot.ok{background:var(--green-fill);border:1px solid var(--green)}.dot.err{background:var(--red-fill);border:1px solid var(--red)}.state{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:3px 6px;border:1px solid var(--line);white-space:nowrap}.state.work{background:var(--amber-fill)}.state.ok{background:var(--green-fill)}.state.err{background:var(--red-fill)}.state.idle{background:var(--panel-2);color:var(--muted);border-color:var(--line-soft)}table.grid{border-collapse:collapse;width:100%;font-size:12.5px}table.grid th{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-align:left;padding:0 14px 8px 0;border-bottom:1px solid var(--line);white-space:nowrap}table.grid td{padding:10px 14px 10px 0;border-bottom:1px solid var(--line-soft);vertical-align:top}table.grid tr:hover td{background:var(--panel-2)}.log{background:var(--ink);color:#E9E7E1;padding:var(--u);font-size:11px;line-height:1.65;border:1px solid var(--line);max-height:340px;overflow:auto;white-space:pre-wrap;word-break:break-word}.log .t{color:#8E8A84}.log .a{color:var(--amber-fill)}.log .g{color:var(--green-fill)}.log .r{color:var(--red-fill)}.meter{height:10px;background:var(--panel-2);border:1px solid var(--line);margin-top:5px}.meter i{display:block;height:100%;background:var(--amber-fill)}.kv{display:flex;justify-content:space-between;gap:var(--u);font-size:11px;padding:3px 0}.kv .k{color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.kv .v{font-weight:500;text-align:right}.stack{display:flex;flex-direction:column;gap:calc(var(--u) * 2)}hr.sep{border:0;border-top:1px solid var(--line-soft);margin:calc(var(--u) * 2) 0}.empty{color:var(--muted);font-size:12px;padding:calc(var(--u) * 2);text-align:center}.react-flow{background:var(--panel-2)}.react-flow__background{color:var(--line-soft)}.react-flow__edge-path{stroke:var(--line);stroke-width:2}.react-flow__edge.loop .react-flow__edge-path{stroke:var(--amber);stroke-dasharray:6 4}.react-flow__edge-text{font-family:var(--fm);font-size:10px;fill:var(--muted)}.react-flow__handle{background:var(--line);border:0;width:7px;height:7px;border-radius:0}.react-flow__controls{box-shadow:3px 3px 0 var(--line);border:1px solid var(--line)}.react-flow__controls-button{background:var(--panel);border-bottom:1px solid var(--line-soft);fill:var(--ink)}.react-flow__attribution{display:none}.node{width:196px;background:var(--panel);border:1px solid var(--line);box-shadow:3px 3px 0 var(--line)}.node.active{box-shadow:3px 3px 0 var(--amber)}.node-head{display:flex;align-items:center;gap:var(--u);padding:var(--u);border-bottom:1px solid var(--line-soft)}.node-title{font-family:var(--fp);font-size:20px;font-weight:600;line-height:1}.node-body{padding:var(--u);display:flex;flex-direction:column;gap:3px}.caret{display:inline-block;width:6px;height:11px;background:var(--ink);vertical-align:-1px;animation:blink 1s steps(2) infinite}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}@media (prefers-reduced-motion:reduce){.caret{animation:none}}.field{margin-bottom:12px}.field>label{display:block;font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}.field .hint{font-size:10.5px;color:var(--muted);margin-top:3px;line-height:1.45}.row2{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.err{background:var(--red-fill);border:1px solid var(--red)}.err,.ok-note{padding:7px 9px;font-size:11.5px;margin-bottom:12px}.ok-note{background:var(--green-fill);border:1px solid var(--green)}.seed-pick{display:flex;gap:4px;flex-wrap:wrap}.seed-pick button{background:var(--panel);border:1px solid var(--line-soft);padding:3px;cursor:pointer;line-height:0}.seed-pick button[data-on="1"]{border-color:var(--line);box-shadow:2px 2px 0 var(--line)}.toolbar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.hintbar{font-size:10.5px;color:var(--muted);background:var(--panel-2);border:1px solid var(--line-soft);padding:5px 8px;margin-bottom:8px}.gate{min-height:100%;display:grid;place-items:center;padding:calc(var(--u) * 3);background-image:linear-gradient(90deg,rgba(26,26,30,.05) 1px,transparent 0),linear-gradient(180deg,rgba(26,26,30,.05) 1px,transparent 0);background-size:var(--u) var(--u)}.gate-card{width:100%;max-width:328px;padding:calc(var(--u) * 4);display:flex;flex-direction:column}.gate-mark{display:grid;grid-template-columns:repeat(4,10px);grid-gap:3px;gap:3px;margin-bottom:calc(var(--u) * 2)}.gate-mark span{width:10px;height:10px;border:1px solid var(--line);background:var(--panel-2)}.gate-mark span:nth-child(2){background:var(--amber-fill);animation:gate-blink 2.4s step-end infinite}.gate-mark span:nth-child(7){background:var(--green-fill);animation:gate-blink 3.1s step-end .4s infinite}.gate-mark span:nth-child(9){background:var(--violet-fill);animation:gate-blink 2.8s step-end 1.1s infinite}.gate-mark span:nth-child(12){background:var(--amber-fill);animation:gate-blink 3.6s step-end .7s infinite}@keyframes gate-blink{0%,62%{opacity:1}63%,to{opacity:.18}}.gate-title{font-family:var(--fp);font-size:46px;font-weight:800;line-height:.9;letter-spacing:.06em;margin:0}.gate-sub{margin:4px 0 calc(var(--u) * 3);font-size:11px;letter-spacing:.14em}.gate-label,.gate-sub{text-transform:uppercase;color:var(--muted)}.gate-label{font-size:10px;font-weight:700;letter-spacing:.12em;margin-bottom:6px}.gate-input{font-family:var(--fm);font-size:14px;letter-spacing:.22em;padding:10px 11px;background:var(--panel-2);border:1px solid var(--line);color:var(--ink);outline:none}.gate-input:focus{background:var(--panel);box-shadow:inset 0 0 0 1px var(--line)}.gate-error{min-height:15px;margin:6px 0 10px;font-size:11px;line-height:1.3;color:var(--red);opacity:0}.gate-error.on{opacity:1}.gate-btn{width:100%;padding:10px;background:var(--ink);color:var(--ground);box-shadow:3px 3px 0 var(--line)}.gate-btn:disabled{opacity:.45;box-shadow:1px 1px 0 var(--line);cursor:default}.gate-btn:not(:disabled):active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--line)}@media (prefers-reduced-motion:reduce){.gate-mark span{animation:none}}.px-field{display:flex;flex-direction:column;min-width:0}.px-field.wide{grid-column:1/-1}.px-label{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}.px-hint{margin:5px 0 0;font-size:11px;line-height:1.45;color:var(--muted)}.px-input,.px-number,.px-select-head,.px-textarea{font-family:var(--fm);font-size:12px;background:var(--panel-2);border:1px solid var(--line);color:var(--ink)}.px-input,.px-textarea{padding:8px 10px;outline:none;width:100%}.px-input.prose{font-family:var(--fm);letter-spacing:0}.px-textarea{resize:vertical;line-height:1.55}.px-input:focus,.px-textarea:focus{background:var(--panel);box-shadow:inset 0 0 0 1px var(--line)}.px-input:disabled,.px-textarea:disabled{opacity:.5}.px-input::placeholder,.px-textarea::placeholder{color:var(--line-soft)}.px-select{position:relative}.px-select-head{display:flex;align-items:center;justify-content:space-between;gap:var(--u);width:100%;padding:8px 10px;cursor:pointer;text-align:left}.px-select-head:focus-visible{outline:2px solid var(--violet);outline-offset:1px}.px-select.open .px-select-head{background:var(--panel);box-shadow:inset 0 0 0 1px var(--line)}.px-select.off .px-select-head{opacity:.5;cursor:default}.px-select-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.px-select-arrow{font-size:8px;color:var(--muted);flex:none}.px-select-list{position:absolute;z-index:40;top:calc(100% + 3px);left:0;right:0;margin:0;padding:0;list-style:none;max-height:232px;overflow-y:auto;background:var(--panel);border:1px solid var(--line);box-shadow:3px 3px 0 var(--line)}.px-select-item{display:flex;align-items:baseline;gap:8px;padding:7px 10px;font-size:12px;cursor:pointer}.px-select-item.cursor{background:var(--violet-fill)}.px-select-item.picked{font-weight:700}.px-select-mark{font-size:9px;color:var(--muted);flex:none}.px-select-item.picked .px-select-mark{color:var(--ink)}.px-select-label{display:flex;flex-direction:column;gap:2px;min-width:0}.px-select-hint{font-style:normal;font-size:10px;color:var(--muted)}.px-select-item.cursor .px-select-hint{color:var(--ink)}.px-number{display:flex;align-items:stretch}.px-number.off{opacity:.5}.px-number-input{flex:1 1;min-width:0;width:100%;padding:8px 4px;font-family:var(--fm);font-size:12px;text-align:center;background:transparent;border:0;color:inherit;outline:none}.px-number-suffix{align-self:center;padding-right:6px;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.px-step{font-family:var(--fm);font-size:13px;line-height:1;width:26px;flex:none;background:var(--panel);border:0;border-right:1px solid var(--line);color:var(--ink);cursor:pointer}.px-step:last-child{border-right:0;border-left:1px solid var(--line)}.px-step:hover:not(:disabled){background:var(--amber-fill)}.px-step:disabled{cursor:default;opacity:.4}.px-check{display:inline-flex;align-items:center;gap:8px;padding:4px 0;font-family:var(--fm);font-size:12px;background:none;border:0;color:var(--ink);cursor:pointer}.px-check-box{display:grid;place-items:center;width:14px;height:14px;flex:none;font-size:8px;background:var(--panel-2);border:1px solid var(--line)}.px-check.on .px-check-box{background:var(--green-fill)}.px-check:disabled{opacity:.5;cursor:default}.px-checks{display:flex;flex-direction:column;gap:2px;margin:4px 0 10px}.node-row{display:flex;align-items:center;gap:8px;width:100%;margin-bottom:4px;padding:5px 6px;font-family:var(--fm);text-align:left;background:var(--panel);border:1px solid var(--line-soft);color:var(--ink);cursor:pointer}.node-row.on,.node-row:hover{border-color:var(--line)}.node-row.on{background:var(--violet-fill)}.node-row-text{display:flex;flex-direction:column;min-width:0;flex:1 1}.node-row-mark{font-size:9px;color:var(--muted)}.node-card{padding:calc(var(--u) * 1.5);margin-top:8px}.node-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--line-soft)}.px-password{letter-spacing:.22em;font-size:14px}