:root{--pod:#4ca64a;--pea:#eab308;--bg:#f5f7f2;--panel:#fff;--editor-bg:#fff;--fg:#111827;--muted:#4b5563;--border:#e5e7eb;--accent:#166534;--accent-fg:#fff;--good:#15803d;--bad:#c2410c;--bad-bg:#fff1eb;--active-line:#f0f3ec;--selection:#d6ebd3;--flash:#fef3c7;--lane-0:#5b5bd6;--lane-1:#0f8a80;--lane-2:#c2417a;--lane-3:#2b7bb9;--lane-4:#7c4dcc;--lane-5:#56657a;--spec:#d97706;--monitor-head:#fff4e0;--hot:#eab308;--syn-keyword:#7c3aed;--syn-type:#0e7490;--syn-event:#b45309;--syn-name:#1d4ed8;--syn-string:#15803d;--syn-number:#be185d;--syn-comment:#687083;--syn-op:#475569;--sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0e1210;--panel:#161b18;--editor-bg:#121714;--fg:#e7ebe6;--muted:#97a39a;--border:#28312b;--accent:#6cc46a;--accent-fg:#0e1210;--wordmark-pea:var(--pea);--good:#4ade80;--bad:#fb923c;--bad-bg:#2a1a12;--active-line:#1b221d;--selection:#26442b;--flash:#3b3517;--lane-0:#8b8bef;--lane-1:#3fbfb3;--lane-2:#e47aa8;--lane-3:#6aaee0;--lane-4:#a98ae6;--lane-5:#8a98ad;--spec:#fbbf24;--monitor-head:#352a17;--syn-keyword:#c4b5fd;--syn-type:#67e8f9;--syn-event:#fbbf24;--syn-name:#93c5fd;--syn-string:#86efac;--syn-number:#f9a8d4;--syn-comment:#8d95a8;--syn-op:#a3acbf;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--fg);font:14px/1.45 var(--sans);-webkit-text-size-adjust:100%}a{color:var(--accent)}.muted{color:var(--muted)}button,.button,select,input{font:inherit;color:var(--fg);background:var(--panel);border:1px solid var(--border);border-radius:8px;min-height:34px;padding:6px 10px}input[type=checkbox],input[type=range]{accent-color:var(--accent);min-height:0}button,.button{cursor:pointer;justify-content:center;align-items:center;gap:6px;text-decoration:none;display:inline-flex}button:hover:not(:disabled),.button:hover{border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button:focus-visible,.button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent);font-weight:600}button.danger{background:var(--bad);color:#fff;border-color:var(--bad);font-weight:600}.ghost{background:0 0;border-color:#0000}button.link{color:var(--accent);min-height:0;font-size:inherit;background:0 0;border:none;padding:0 0 0 8px;text-decoration:underline}input[type=number]{width:100%}.app{--g:16px;flex-direction:column;height:100%;display:flex}.top{height:52px;padding:0 calc(var(--g) - 4px) 0 var(--g);background:var(--panel);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:12px;display:flex}.brand{color:var(--fg);letter-spacing:-.01em;align-items:center;gap:8px;font-size:16px;font-weight:700;text-decoration:none;display:flex}.logo{align-items:center;gap:6px;display:inline-flex}.logo .pea-mark{flex-shrink:0}.wordmark{font:600 18px/1 var(--mono);letter-spacing:-.03em;color:var(--fg)}.wordmark span{color:var(--wordmark-pea,var(--accent))}.demo-select{min-width:0;max-width:280px;font-weight:600}.spacer{flex:1}.blurb{padding:10px var(--g);border-bottom:1px solid var(--border);flex-shrink:0;align-items:flex-start;gap:8px;font-size:13px;display:flex}.blurb p{text-wrap:pretty;max-width:110ch;margin:0}.blurb .more{display:none}.panes{flex:1;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);min-height:0;display:grid}.pane{flex-direction:column;min-width:0;min-height:0;display:flex}.editor-pane{border-right:1px solid var(--border);background:var(--editor-bg)}.run-pane{background:var(--panel)}.file-tabs,.out-tabs{background:var(--panel);padding:0 calc(var(--g) - 10px);scrollbar-width:none;flex-shrink:0;gap:2px;display:flex;overflow-x:auto}.file-tabs{border-bottom:1px solid var(--border)}.file-tab,.out-tab{white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;min-height:40px;padding:0 10px;font-size:13px}.file-tab .dir{color:var(--muted)}.file-tab.active,.out-tab.active{border-bottom-color:var(--accent);font-weight:600}.file-tab.add{color:var(--muted);font-size:16px}.badge{background:var(--bad);color:#fff;border-radius:8px;margin-left:2px;padding:0 6px;font-size:11px}.editor{flex:1;min-height:0;overflow:hidden}.controls{padding:12px var(--g);border-bottom:1px solid var(--border);flex-direction:column;gap:10px;display:flex}.controls label{color:var(--muted);flex-direction:column;gap:4px;min-width:0;font-size:12px;display:flex}.controls label>select,.controls label>input{color:var(--fg);width:100%}.run-bar{align-items:flex-end;gap:10px;display:flex}.run-bar .tc{flex:1}.run-bar .run{min-width:104px;min-height:36px;padding:0 20px}.options summary{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;padding:4px 0;font-size:13px;font-weight:600;list-style:none;overflow:hidden}.options summary::-webkit-details-marker{display:none}.options .chevron{color:var(--muted);vertical-align:-1px;margin-right:6px;transition:transform .15s}.options[open] .chevron{transform:rotate(90deg)}.options summary .muted{font-weight:400}.options-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:10px 12px;padding-top:8px;display:grid}.options-grid .span-all{grid-column:1/-1}.controls label.check{min-height:34px;color:var(--fg);flex-direction:row;align-items:center;gap:8px;font-size:13px}.controls label.check>input{width:auto}.out-head{border-bottom:1px solid var(--border);flex-shrink:0;scroll-margin-top:0}.status-line{padding:0 var(--g) 10px;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:13px;display:flex}.status{background:var(--active-line);border-radius:999px;padding:2px 10px;font-weight:600}.status.good{color:var(--good);background:color-mix(in srgb, var(--good) 12%, transparent)}.status.bad{color:var(--bad);background:var(--bad-bg)}button.diag{min-height:0;font:12px var(--mono);color:var(--bad);text-align:left;text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--bad) 40%, transparent);text-decoration-color:color-mix(in srgb, var(--bad) 40%, transparent);text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;flex:1;min-width:0;padding:0;display:block;overflow:hidden}.bug-dot{background:var(--bad);vertical-align:1px;border-radius:50%;width:7px;height:7px;margin-left:6px;display:inline-block}.goto-short{display:none}.downloads{align-items:center;gap:2px;margin-left:auto;display:flex}.download{min-height:32px;color:var(--muted);border-radius:6px;align-items:center;padding:8px;font-size:12px;text-decoration:none;display:inline-flex}.download:hover{color:var(--accent);background:var(--active-line)}.output{flex:1;min-height:0;overflow:auto}.console{padding:12px var(--g);font:12px/1.55 var(--mono);white-space:pre-wrap;word-break:break-word;margin:0}.console.empty{color:var(--muted);font-family:inherit;font-size:13px}.console .summary{white-space:pre-wrap;border-radius:8px;margin:0 0 10px;padding:6px 10px;font-weight:600}.console .summary.bad{color:var(--bad);background:var(--bad-bg)}.console .summary.good{color:var(--good);background:color-mix(in srgb, var(--good) 12%, transparent)}.console .line.bad{color:var(--bad)}.console .line.good{color:var(--good)}.console .line.cmd{color:var(--muted)}button.loc{color:var(--accent);font:inherit;background:0 0;border:none;min-height:0;padding:0;text-decoration:underline}.trace{flex-direction:column;height:100%;display:flex}.trace-error{padding:8px var(--g);background:var(--bad-bg);color:var(--bad);border-bottom:1px solid var(--border);flex-shrink:0;font-size:13px}.trace-controls{padding:8px var(--g);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:6px;display:flex}.trace-controls button{min-width:36px;padding:0 10px}.trace-controls button.primary{min-width:64px}.trace-controls input[type=range]{background:0 0;border:none;flex:1;min-width:60px;padding:0}.trace-controls .muted{font-variant-numeric:tabular-nums;text-align:right;min-width:44px;font-size:12px}.step-detail{border-top:1px solid var(--border);padding:10px var(--g);font:12px/1.5 var(--mono);flex-shrink:0;height:76px;overflow:auto}.step-detail pre{color:var(--muted);margin:4px 0 0}.trace-focus{padding:6px var(--g);border-bottom:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:6px;font-size:12px;display:flex}.trace-focus .chip{min-height:26px;font:600 12px var(--mono);color:color-mix(in srgb, var(--c) 70%, var(--fg));background:color-mix(in srgb, var(--c) 12%, var(--panel));border:1px solid color-mix(in srgb, var(--c) 45%, transparent);border-radius:999px;padding:0 10px}.trace-focus{flex-wrap:nowrap}.trace-focus>*{flex-shrink:0}.trace-focus .chip{flex-shrink:1;align-items:center;gap:6px;min-width:0;display:inline-flex}.trace-focus .chip-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.trace-focus button.link{white-space:nowrap;min-height:26px}.lane{-webkit-tap-highlight-color:transparent}.trace-main{flex:1;min-height:0;display:flex}.trace-main.list-side .step-list{border-left:1px solid var(--border);flex:0 0 340px}.trace-main.list-bottom{flex-direction:column}.trace-main.list-bottom .step-list{border-top:1px solid var(--border);flex:0 0 34%}.step-list{min-height:0;font:12px/1.45 var(--mono);flex:1;margin:0;padding:4px 0;list-style:none;overflow:auto}.step-list button{width:100%;min-height:0;padding:4px var(--g) 4px 0;color:var(--fg);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:0;align-items:baseline;gap:8px;display:flex}.step-list .n{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums;flex:0 0 4ch}.step-list .swatch{border-radius:2px;flex:0 0 8px;align-self:center;height:8px}.step-list .text{overflow-wrap:anywhere;flex:1;min-width:0}.step-list li.hover button,.step-list button:hover{background:var(--active-line)}.step-list li.current button{background:color-mix(in srgb, var(--accent) 14%, transparent);box-shadow:inset 3px 0 var(--accent)}.step-list li.error .text{color:var(--bad);font-weight:600}.lane{cursor:pointer}.lane:hover .lane-head{fill:color-mix(in srgb, var(--c) 18%, var(--panel))}.lane.focused .lane-head{fill:color-mix(in srgb, var(--c) 22%, var(--panel));stroke:var(--c);stroke-width:2px}.row.hover .row-hit{fill:var(--active-line)}.seq-wrap{flex:1;min-width:0;min-height:0;display:flex;position:relative}.seq{touch-action:pan-x pan-y;flex:1;min-width:0;position:relative;overflow:auto}.seq svg{display:block}.seq-head{z-index:1;background:var(--panel);box-shadow:0 1px 0 var(--border);position:sticky;top:0}.lane-head{fill:color-mix(in srgb, var(--c) 10%, var(--panel));stroke:color-mix(in srgb, var(--c) 45%, transparent);stroke-width:1.2px}.lane-head.monitor{stroke-dasharray:4 3}.lane-label{font:600 12.5px var(--mono);fill:color-mix(in srgb, var(--c) 70%, var(--fg))}.lifeline{stroke:color-mix(in srgb, var(--c) 28%, transparent);stroke-width:1.5px;stroke-linecap:round}.lifeline.monitor{stroke-dasharray:3 5}.row{cursor:pointer}.row-hit{fill:#0000}.row:hover .row-hit{fill:var(--active-line)}.row.selected .row-hit{fill:color-mix(in srgb, var(--accent) 14%, transparent)}@media (prefers-color-scheme:dark){.row.selected .row-hit{fill:color-mix(in srgb, var(--accent) 24%, transparent)}}.row.future{opacity:.25}.msg{stroke:var(--c);stroke-width:1.3px;stroke-opacity:.85;stroke-linecap:round;fill:none}.msg.create{stroke-dasharray:4 4;stroke:var(--muted)}.msg.pending{stroke-dasharray:1 4}.row.selected .msg{stroke-width:2.5px}.arrowhead{fill:var(--c);stroke:var(--c);stroke-width:1px;stroke-linejoin:round}.arrowhead.create{fill:var(--muted);stroke:var(--muted)}.msg-label,.note-label,.state-label{font:12px var(--mono);fill:var(--fg)}.state-label{font-size:12px}.note-label{paint-order:stroke;stroke:var(--panel);stroke-width:4px;stroke-linejoin:round}.label-bg{fill:var(--panel);opacity:.88}.msg-label .ev{font-weight:600}.msg-label .payload{fill:var(--muted)}.lane-id{fill:var(--muted);font-weight:400}.row-cursor{fill:var(--accent)}.msg-label.muted,.note-label{fill:var(--muted)}.print-label{font:italic 12px var(--mono);fill:var(--muted)}.dot{fill:var(--c)}.state{fill:color-mix(in srgb, var(--c) 8%, var(--panel));stroke:var(--c);stroke-width:1.2px}.state-label{stroke:none}.state.hot{stroke:var(--spec);fill:color-mix(in srgb, var(--spec) 14%, var(--panel))}.observe{stroke:var(--spec);stroke-dasharray:1 4;stroke-width:1.5px;stroke-linecap:round}.diamond{fill:var(--spec)}.error-bar{fill:var(--bad-bg);stroke:color-mix(in srgb, var(--bad) 60%, transparent)}.error-label{font:600 12px var(--mono);fill:var(--bad)}.zoom-controls{z-index:2;background:var(--panel);border:1px solid var(--border);border-radius:999px;display:flex;position:absolute;bottom:12px;right:12px;overflow:hidden;box-shadow:0 2px 8px #0000001f}.zoom-controls button{background:0 0;border:none;border-radius:0;justify-content:center;min-width:40px;height:36px;font-size:16px}.zoom-controls .key-toggle{color:var(--accent);border-right:1px solid var(--border);padding:0 12px;font-size:13px;font-weight:600}.legend{z-index:3;background:var(--panel);border:1px solid var(--border);border-radius:12px;width:min(320px,100% - 24px);padding:10px 14px 12px;font-size:13px;position:absolute;bottom:60px;right:12px;box-shadow:0 6px 24px #00000029}.legend-head{justify-content:space-between;align-items:center;display:flex}.legend-head button{min-width:32px;min-height:32px;padding:0}.legend ul{gap:8px;margin:4px 0 0;padding:0;list-style:none;display:grid}.legend li{align-items:center;gap:10px;line-height:1.3;display:flex}.legend svg{flex-shrink:0}.zoom-controls .zoom-level{font-variant-numeric:tabular-nums;min-width:52px;color:var(--muted);font-size:12px}@media (width<=900px){.app{height:100dvh;padding-bottom:calc(64px + env(safe-area-inset-bottom))}body{background:var(--panel);font-size:15px}button,.button,select,input{min-height:44px;font-size:16px}.top{height:56px;padding:0 calc(var(--g) - 6px) 0 var(--g);gap:10px}.brand-name{display:none}.demo-select{flex:1;min-width:0;max-width:none}.top .spacer{display:none}.top .ghost{min-height:40px;padding:0 8px;font-size:15px}.blurb{font-size:14px;line-height:1.5}.blurb p{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.blurb.open p{display:block}.blurb button.more{color:var(--accent);background:0 0;border:none;align-self:flex-end;min-height:0;margin:-8px -8px -8px 0;padding:8px;font-size:14px;display:inline-flex}.panes{flex-direction:column;display:flex}.run-pane{display:contents}.out-head{order:1}.controls{padding:0 var(--g);border-bottom:none;order:2}.controls.options-open{padding:4px var(--g) 8px;border-bottom:1px solid var(--border)}.options summary{display:none}.out-tabs{padding-right:4px}.out-tab.gear{color:var(--muted);margin-left:auto;padding:0 10px}.out-tab.gear.active{color:var(--accent);border-bottom-color:var(--accent)}.gh-text{display:none}.docs-link{white-space:nowrap;padding:0 6px}.top .gh{min-width:44px;padding:0}.status-line{padding-top:8px}.goto-long{display:none}.goto-short{display:inline}.trace-error{align-items:center;gap:8px;display:flex}.trace-error:not(.open) .trace-error-text{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.trace-error button.link{white-space:nowrap;flex-shrink:0}.editor-pane,.output{flex:1;order:3;min-height:0}.editor-pane{border-right:none}.panes:not(.tab-files) .editor-pane,.panes.tab-files .output{display:none}.file-tab,.out-tab{min-height:44px;padding:0 12px;font-size:14px}.file-tab .dir{display:none}.controls label{font-size:13px}.run-bar{z-index:10;padding:10px var(--g) calc(10px + env(safe-area-inset-bottom));background:var(--panel);border-top:1px solid var(--border);position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 16px #00000014}.run-bar .lbl{display:none}.run-bar .run{min-height:44px}.options[open]{max-height:45dvh;overflow:auto}.options-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding-bottom:8px}.controls label.check{min-height:44px;font-size:15px}.controls label.check input{width:20px;height:20px}.status-line{flex-wrap:wrap}button.diag{white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;flex-basis:100%;font-size:13px;display:-webkit-box}.trace-controls{gap:4px}.trace-controls .jump{display:none}.step-list{font-size:12.5px}.step-list button{padding-top:7px;padding-bottom:7px}.trace-controls input[type=range]{height:32px}.trace-controls button{min-width:40px;padding:0 8px}.trace-controls button.primary{min-width:60px}.trace-error{cursor:pointer;font-size:13px}.trace-error button.link{margin:-10px 0;padding:10px 0 10px 8px}.zoom-controls{box-shadow:none;opacity:.94;bottom:8px;right:8px}.zoom-controls button{min-width:36px;height:34px;min-height:34px;font-size:15px}.zoom-controls .zoom-level{min-width:46px;font-size:12px}.zoom-controls .key-toggle{padding:0 10px;font-size:12px}.console{white-space:pre;word-break:normal;font-size:12.5px;overflow-x:auto}.console .summary,.console.empty{white-space:pre-wrap}.editor{--editor-font:12.5px}}@media (width<=900px) and (height<=500px){.app{padding-bottom:56px}.top{height:48px}.blurb{display:none}.run-bar{padding:6px var(--g);box-shadow:none}.run-bar select,.run-bar .run{min-height:40px}.step-detail{display:none}.trace-error:not(.open){padding-top:6px;padding-bottom:6px}}
