:root{--desk: #e9e7e1;--paper: #f7f6f2;--sheet: #fcfbf9;--ink: #2b323c;--ink-soft: #545b67;--ink-faint: #686f7b;--line: #dcd8cf;--line-soft: #eceae4;--hair: rgba(51, 58, 68, .28);--hair-soft: rgba(51, 58, 68, .16);--hair-strong: rgba(51, 58, 68, .8);--fill-ink: #2b2723;--stroke: var(--hair);--chrome-bg: #39404b;--chrome-line: #2a303a;--chrome-ink: #eef0f3;--chrome-dim: #c2cad4;--chrome-field: rgba(255, 255, 255, .09);--chrome-edge: rgba(255, 255, 255, .22);--chrome-crown: rgba(255, 255, 255, .2);--bar-bg: #e8e4db;--bar-ink: #575146;--code-bg: #f2f3f5;--tok-keyword: #6a4c96;--tok-string: #37704f;--tok-number: #8a5528;--tok-call: #2a5f87;--draw: #7a7f88;--grid: #e0dcd2;--c-event: #e9e3f6;--c-sense: #dae7f4;--c-act: #fbe0d6;--c-ctrl: #ebe5d7;--c-op: #dcebe0;--c-var: #f6e3e8;--ok: #8fcba6;--warn: #e8c48a;--err: #e2a3a0;--r: 9px;--row: 44px;--field: 26px;--field-sm: 20px;--tab-w: 22px;--tab-x: 12px;--tab-h: 7px;--notchfill: var(--paper);--font: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--font);font-size:14px;-webkit-font-smoothing:antialiased;overflow:hidden}.mono{font-family:var(--mono)}.no-select{user-select:none;-webkit-user-select:none}button{font:inherit;color:inherit}.stack{display:flex;flex-direction:column;align-items:flex-start}.blk,.cblk,.rep,.hex{--stroke: color-mix(in srgb, var(--fill) 76%, var(--fill-ink))}@supports (color: oklch(from white l c h)){.blk,.cblk,.rep,.hex{--stroke: oklch(from var(--fill) calc(l - .2) calc(c*2.8) h)}}.blk{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:var(--row);padding:0 12px;border:1px solid var(--stroke);border-radius:var(--r);background:var(--fill);font-size:13.5px;letter-spacing:-.005em;white-space:nowrap;cursor:grab}.blk.hat{border-top-width:3px}.tab,.notch{position:absolute;left:var(--tab-x);width:var(--tab-w);height:var(--tab-h);line-height:0;pointer-events:none}.tab{bottom:calc(-1 * var(--tab-h));z-index:1}.notch{top:-1px}.stack>*+*{margin-top:-1px}.blk.lead-chip,.c-head.lead-chip{padding-left:20px}.fld{display:inline-flex;align-items:center;gap:5px;height:var(--field);padding:0 8px;border:1px solid var(--stroke);border-radius:6px;background:#ffffffbd;font-size:12.5px;font-family:var(--font);color:var(--ink);cursor:pointer}.fld:hover{background:#fff}.fld:focus-visible{outline:1px solid var(--hair-strong);outline-offset:1px}.fld.num{font-family:var(--mono);font-size:12px;padding:0 6px;min-width:38px;text-align:center;cursor:text}input.fld.num{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}input.fld.num::-webkit-outer-spin-button,input.fld.num::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.fld.txt{min-width:56px;cursor:text}select.fld{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:20px;background-image:linear-gradient(45deg,transparent 50%,var(--ink-soft) 50%),linear-gradient(135deg,var(--ink-soft) 50%,transparent 50%);background-position:calc(100% - 11px) calc(50% + 1px),calc(100% - 7px) calc(50% + 1px);background-size:4px 4px,4px 4px;background-repeat:no-repeat}.swatch{width:24px;height:16px;border-radius:4px;border:1px solid var(--stroke);display:inline-block;cursor:pointer}.swatch input{opacity:0;width:0;height:0;display:block}.dev{display:inline-flex;align-items:center;gap:6px;height:var(--field);padding:0 8px 0 6px;border:1px solid var(--stroke);border-radius:6px;background:#ffffffbd;font-weight:500;font-size:12.5px}.lbl{opacity:.85}.unit{color:var(--ink-soft);font-size:12px}.rep{position:relative;display:inline-flex;align-items:center;gap:6px;height:var(--field);padding:0 10px 0 8px;border:1px solid var(--stroke);border-radius:999px;background:var(--fill);font-size:12.5px;white-space:nowrap;cursor:grab}.rep.bare{padding:0;border:none;background:none;height:auto}.hex{position:relative;display:inline-flex;padding:1px;background:var(--stroke);clip-path:polygon(9px 0,100% 0,100% 100%,9px 100%,0 50%);cursor:grab}.hex>.hex-in{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 11px 0 14px;background:var(--fill);clip-path:polygon(8px 0,100% 0,100% 100%,8px 100%,0 50%);font-size:12.5px;white-space:nowrap}.hex-in .rep,.hex-in .fld,.hex-in .socket,.rep .rep,.rep .fld{height:var(--field-sm)}.hex-in .rep.bare,.rep .rep.bare{height:auto}.rep .dev,.hex-in .dev{border:none;background:none;padding:0;height:auto;gap:5px}.socket{display:inline-block;height:var(--field);min-width:34px;border:1px dashed var(--stroke);border-radius:999px;background:#ffffff59}.socket.bool{border-radius:0;clip-path:polygon(8px 0,100% 0,100% 100%,8px 100%,0 50%);min-width:46px}.socket.drop-target,.rep.drop-target,.hex.drop-target{box-shadow:0 0 0 2px #333a444d}.cblk{position:relative;display:inline-block;--spine: 16px}.c-head{position:relative;display:flex;align-items:center;gap:8px;min-height:var(--row);padding:0 12px;border:1px solid var(--stroke);border-bottom:none;border-radius:var(--r) var(--r) 0 0;background:var(--fill);font-size:13.5px;white-space:nowrap;cursor:grab}.c-head:after{content:"";position:absolute;left:calc(var(--spine) - 2px);right:0;bottom:-1px;height:1px;background:var(--stroke)}.c-body{display:flex;align-items:stretch}.c-spine{width:var(--spine);flex:none;background:var(--fill);border-left:1px solid var(--stroke);border-right:1px solid var(--stroke)}.c-slot{padding:8px 0 8px 10px;min-height:22px;min-width:96px}.c-mid{position:relative;display:flex;align-items:center;padding:0 12px;min-height:30px;border:1px solid var(--stroke);border-top:none;border-bottom:none;background:var(--fill);font-size:13.5px}.c-mid:before,.c-mid:after{content:"";position:absolute;left:calc(var(--spine) - 2px);right:0;height:1px;background:var(--stroke)}.c-mid:before{top:-1px}.c-mid:after{bottom:-1px}.c-foot{position:relative;height:15px;border:1px solid var(--stroke);border-top:none;border-radius:0 0 var(--r) var(--r);background:var(--fill);min-width:112px}.c-foot:before{content:"";position:absolute;left:calc(var(--spine) - 2px);right:0;top:-1px;height:1px;background:var(--stroke)}.c-tag{position:absolute;right:9px;top:50%;transform:translateY(-50%);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);opacity:.6;pointer-events:none}.pn{font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;color:var(--ink-soft);opacity:.5;margin-left:2px;pointer-events:none}.blk.ghosted,.cblk.ghosted{opacity:.28}.drag-layer{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:900}.drag-payload{position:absolute;filter:drop-shadow(0 10px 18px rgba(51,58,68,.18));transform:rotate(-1.2deg);transform-origin:30px 18px}.dropline{position:absolute;height:3px;border-radius:2px;background:#333a4442;pointer-events:none;z-index:5}.dropline:before,.dropline:after{content:"";position:absolute;top:-3px;width:1px;height:9px;background:#333a4452}.dropline:before{left:0}.dropline:after{right:0}.blk.selected,.rep.selected{border-color:var(--hair-strong)}.hex.selected{background:var(--hair-strong)}.cblk.selected>.c-head,.cblk.selected>.c-foot,.cblk.selected>.c-mid,.cblk.selected>div>.c-body>.c-spine{border-color:var(--hair-strong)}.cblk.selected>.c-head:after,.cblk.selected>.c-foot:before,.cblk.selected>.c-mid:before,.cblk.selected>.c-mid:after{background:var(--hair-strong)}.fld.mono,select.fld.mono{font-family:var(--mono);letter-spacing:-.01em}.app{display:grid;grid-template-rows:48px 1fr;height:100%;background:var(--paper)}.topbar{display:flex;align-items:center;gap:14px;padding:0 14px;background:var(--chrome-bg);border-bottom:1px solid var(--chrome-line);color:var(--chrome-ink);box-shadow:inset 0 1px 0 var(--chrome-crown)}.topbar .sep{background:var(--chrome-edge)}.topbar .logo{color:var(--chrome-ink)}.topbar .logo .muted{color:var(--chrome-dim)}.topbar .projname{color:var(--chrome-ink)}.topbar .pill{background:var(--chrome-field);border-color:var(--chrome-edge);color:var(--chrome-dim)}.topbar .pill .port{color:var(--chrome-dim);opacity:.75}.topbar .btn{background:var(--chrome-field);border-color:var(--chrome-edge);color:var(--chrome-ink)}.topbar .btn.quiet{color:var(--chrome-dim)}.topbar .btn:not(:disabled):hover{background:#ffffff29}.topbar .btn.run{background:var(--c-op);border-color:var(--c-op);color:var(--ink)}.logo{display:flex;align-items:center;gap:8px;font-weight:600;letter-spacing:-.015em;font-size:14.5px}.logo .muted{color:var(--ink-faint);font-weight:500}.sep{width:1px;height:20px;background:var(--line)}.projname{font-weight:500}.topbar .spacer{flex:1}.pill{display:inline-flex;align-items:center;gap:7px;height:27px;padding:0 11px;border:1px solid var(--line);border-radius:999px;background:#fff;font-size:12.5px;color:var(--ink-soft);cursor:pointer}.pill:disabled{opacity:.6;cursor:default}.pill .led{width:6px;height:6px;border-radius:50%;background:var(--ink-faint)}.pill.live .led{background:var(--ok);box-shadow:0 0 0 2.5px #8fcba638}.pill .port{font-family:var(--mono);font-size:12px;color:var(--ink-faint)}.btn{display:inline-flex;align-items:center;gap:7px;height:29px;padding:0 13px;border:1px solid var(--hair);border-radius:7px;background:#fff;font-size:13px;font-weight:500;cursor:pointer}.btn:disabled{opacity:.45;cursor:default}.btn.run{background:var(--c-op)}.btn.quiet{border-color:var(--line);color:var(--ink-soft)}.btn.icon{padding:0 9px}.btn.on{background:var(--c-sense);border-color:var(--hair);color:var(--ink)}.body{display:grid;grid-template-columns:266px 1fr 306px;min-height:0}.panel{position:relative;background:#fff;min-height:0;display:flex;flex-direction:column;--notchfill: #fff}.resizer{position:absolute;top:0;bottom:0;width:9px;cursor:col-resize;z-index:12;touch-action:none}.resizer.left{right:-4px}.resizer.right{left:-4px}.resizer:after{content:"";position:absolute;top:0;bottom:0;left:4px;width:1px;background:transparent;transition:background 90ms ease-out}.resizer:hover:after,.resizer.active:after{background:var(--hair-strong)}.panel.left{border-right:1px solid var(--line)}.panel.right{border-left:1px solid var(--line)}.p-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px 8px}.p-section{position:sticky;top:0;z-index:3;flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 14px;background:var(--bar-bg);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.p-section:first-child{border-top:none}.p-section .p-title,.p-section .p-action{color:var(--bar-ink)}.p-section .p-action:hover{color:var(--ink)}.p-body{padding:12px 14px 18px;flex:none}.p-body.grow{flex:1 0 auto}.p-title{display:inline-flex;align-items:center;gap:6px;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.p-action{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);background:none;border:none;padding:0;cursor:pointer}.p-action:hover{color:var(--ink)}.p-scroll{overflow:auto;padding:0;flex:1;display:flex;flex-direction:column}.pane-blocks{flex:1 1 auto;min-height:120px}.pane-library{flex:0 1 auto;max-height:46%;min-height:132px}.group-label{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin:12px -14px 0;padding:13px 16px 6px;border-top:1px solid var(--line-soft)}.p-body>.group-label:first-child{margin-top:0;padding-top:0;border-top:none}.hint{font-size:12px;color:var(--ink-faint);line-height:1.6;padding:2px 2px 6px}.divider{height:1px;background:var(--line);margin:10px 0 0}.search{display:flex;align-items:center;gap:8px;margin:10px 14px 4px;height:30px;padding:0 10px;border:1px solid var(--line);border-radius:7px;background:var(--paper)}.search-icon{color:var(--ink-faint);flex:none}.search-clear{display:grid;place-items:center;flex:none;width:19px;height:19px;margin-right:-3px;padding:0;border:none;border-radius:50%;background:none;color:var(--ink-faint);cursor:pointer}.search-clear:hover{background:var(--line);color:var(--ink)}.search input{border:none;background:none;outline:none;font:inherit;font-size:13px;width:100%;color:var(--ink)}.devrow{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:8px;border:1px solid transparent;cursor:pointer;width:100%;background:none;text-align:left}.devrow .lead{flex:none;width:46px;display:grid;place-items:center}.devrow:hover{background:var(--paper)}.devrow.sel{background:var(--paper);border-color:var(--hair-strong)}.devrow.off{opacity:.62}.devrow .meta{display:flex;flex-direction:column;gap:1px;min-width:0}.devrow .nm{font-weight:500;font-size:13.5px;letter-spacing:-.01em}.devrow .sub{font-size:11.5px;color:var(--ink-faint)}.devrow .ad{font-size:11.5px;color:var(--ink-faint);margin-left:auto;font-family:var(--mono)}.palette-blocks{display:flex;flex-direction:column;align-items:flex-start;gap:9px;zoom:.86}.palette-blocks>div{cursor:grab}.palette-blocks{animation:list-in .16s ease-out}@keyframes list-in{0%{opacity:0;transform:translateY(-3px)}}@media(prefers-reduced-motion:reduce){.palette-blocks{animation:none}.resizer:after{transition:none}}.cat-icon{border-radius:7px;border:1px solid var(--hair);display:grid;place-items:center}.canvas{position:relative;overflow:auto;background:radial-gradient(circle at 1px 1px,var(--grid) 1px,transparent 0) 0 0 / 16px 16px,linear-gradient(var(--paper),var(--paper));background-attachment:local,local}.canvas-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;text-align:center;color:var(--ink-faint);font-size:13px;line-height:1.7;pointer-events:none}.stack-wrap{position:absolute}.stack-label{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 7px 2px;display:flex;align-items:center;gap:8px}.stack-label:after{content:"";flex:1;height:1px;background:var(--line)}.livecard{border:1px solid var(--line);border-radius:9px;padding:10px;display:flex;gap:11px;align-items:center;background:var(--paper);margin-bottom:8px}.livecard .info{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.livecard .nm{font-size:12.5px;font-weight:500}.livecard .val{font-family:var(--mono);font-size:21px;letter-spacing:-.03em;line-height:1}.livecard .val small{font-size:11.5px;color:var(--ink-soft);letter-spacing:0}.livecard .val.idle{color:var(--ink-faint)}.bar{height:4px;border-radius:2px;background:#fff;border:1px solid var(--line);overflow:hidden}.bar i{display:block;height:100%;background:var(--c-sense)}.code{margin:0;font-family:var(--mono);font-size:12px;line-height:1.6;color:var(--ink);overflow-x:auto;white-space:pre}.p-title .muted{color:#665f52;letter-spacing:.1em}.tok-k{color:var(--tok-keyword)}.tok-s{color:var(--tok-string)}.tok-n{color:var(--tok-number)}.tok-c{color:var(--ink-faint)}.tok-f{color:var(--tok-call)}.warnbox{border:1px solid var(--line);border-left:3px solid var(--warn);border-radius:7px;background:#fff;padding:9px 11px;font-size:12px;line-height:1.55;color:var(--ink-soft);margin-bottom:8px}.warnbox b{color:var(--ink);font-weight:500}.console{margin:0;font-family:var(--mono);font-size:12px;line-height:1.6;color:var(--ink-soft);max-height:180px;overflow:auto;white-space:pre-wrap;word-break:break-word}.console:empty:after{content:"nothing yet";color:var(--ink-faint)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 8px 16px;text-align:center}.empty-state .label{font-size:12.5px;font-weight:500;color:var(--ink-soft)}.empty-state .hint-line{font-size:12px;color:var(--ink-faint);line-height:1.5;margin-top:-4px}.p-body.code-surface{background:var(--code-bg)}.p-body.code-surface,.p-body.code-surface *{user-select:text;-webkit-user-select:text}.code,.console{cursor:text}.projname{display:flex;align-items:center;gap:7px;font-weight:500}.projname input{border:1px solid transparent;border-radius:6px;background:none;font:inherit;font-weight:500;color:var(--chrome-ink);padding:3px 6px;min-width:70px}.projname input:hover{border-color:var(--chrome-edge)}.projname input:focus{outline:none;background:var(--chrome-field);border-color:var(--chrome-edge)}.projname .dirty{width:6px;height:6px;border-radius:50%;background:transparent;flex:none}.projname .dirty.on{background:var(--warn)}.filebar{display:flex;align-items:center;gap:6px}.var-tools{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.var-chip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 8px;border:1px solid var(--hair);border-radius:999px;background:var(--c-var);font-size:12px;cursor:pointer}.var-chip .x{color:var(--ink-soft);font-size:13px;line-height:1}.var-chip:hover .x{color:var(--ink)}
