@font-face{font-family:Martian Mono;src:url(/fonts/martian-mono-latin-wght-normal.woff2)format("woff2");font-weight:100 800;font-display:swap}@font-face{font-family:Hanken Grotesk;src:url(/fonts/hanken-grotesk-latin-wght-normal.woff2)format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:Martian Fallback;src:local(Courier New),local(Liberation Mono),local(DejaVu Sans Mono);size-adjust:96%;ascent-override:105%;descent-override:25%;line-gap-override:0%}@font-face{font-family:Hanken Fallback;src:local(Arial),local(Liberation Sans),local(Helvetica);size-adjust:102%;ascent-override:95%;descent-override:25%;line-gap-override:0%}:root{--font-mono:"Martian Mono", "Martian Fallback", ui-monospace, monospace;--font-ui:"Hanken Grotesk", "Hanken Fallback", system-ui, sans-serif;--fs-12:12px;--fs-14:14px;--fs-16:16px;--fs-19:19px;--fs-23:23px;--fs-28:28px;--fs-33:33px;--fs-40:40px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:64px;--r-tile:0;--r-ctl:4px;--r-panel:10px;--ease:cubic-bezier(.2, .7, .2, 1);--bg:#e9edf1;--surface:#f8fafb;--surface-2:#dde3e9;--line:#c3ccd5;--line-strong:#74808d;--text:#121922;--text-muted:#47525f;--accent:#2b45c4;--on-accent:#fff;--read:#ffc93c;--read-ink:#121922;--read-text:#8a5a00;--write:#b42b5a;--focus:#2b45c4;--danger:#b3261e;--h0:#0e7a6c;--h1:#5b47d6;--h2:#b2541a;--h3:#4e7a12;--h4:#a93b83;--h5:#1f6fae;--h6:#7d6420;--h7:#5a6875;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1c24;--surface:#152733;--surface-2:#1d3342;--line:#2c4656;--line-strong:#5e7c8e;--text:#e6eef2;--text-muted:#9db2be;--accent:#8fa3ff;--on-accent:#0f1c24;--read:#ffc93c;--read-ink:#121922;--read-text:#ffc93c;--write:#ff7aa2;--focus:#ffc93c;--danger:#ff8a80;--h0:#4fc1b0;--h1:#a99bff;--h2:#f29a5b;--h3:#9bcb5e;--h4:#ee8fc8;--h5:#6cb8f0;--h6:#d6c08a;--h7:#a3b1bd}}:root[data-theme=dark]{--bg:#0f1c24;--surface:#152733;--surface-2:#1d3342;--line:#2c4656;--line-strong:#5e7c8e;--text:#e6eef2;--text-muted:#9db2be;--accent:#8fa3ff;--on-accent:#0f1c24;--read:#ffc93c;--read-ink:#121922;--read-text:#ffc93c;--write:#ff7aa2;--focus:#ffc93c;--danger:#ff8a80;--h0:#4fc1b0;--h1:#a99bff;--h2:#f29a5b;--h3:#9bcb5e;--h4:#ee8fc8;--h5:#6cb8f0;--h6:#d6c08a;--h7:#a3b1bd}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font:400 var(--fs-16)/1.55 var(--font-ui);font-variant-numeric:tabular-nums;min-height:100vh;margin:0}h1,h2,h3,p{margin:0}a{color:var(--accent)}code{font-family:var(--font-mono);font-size:.9em;font-stretch:87.5%}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}main:focus{outline:none}.pw-sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.pw-skip{left:var(--sp-3);background:var(--accent);color:var(--on-accent);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-ctl);z-index:20;position:absolute;top:-60px}.pw-skip:focus{top:var(--sp-2)}[hidden]{display:none!important}.pw-bar{height:56px;padding:0 var(--sp-4);background:var(--bg);box-shadow:0 1px 0 var(--line);z-index:10;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.pw-brand{min-height:44px;font:500 var(--fs-16)/1 var(--font-mono);color:var(--text);letter-spacing:0;align-items:center;font-stretch:100%;text-decoration:none;display:inline-flex}.pw-nav{align-items:center;gap:var(--sp-2);display:flex}.pw-link{color:var(--text);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-ctl);align-items:center;min-height:44px;font-weight:500;text-decoration:none;display:inline-flex}.pw-link:hover{background:var(--surface-2)}.pw-btn{font:500 var(--fs-14)/1 var(--font-ui);color:var(--text);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-ctl);padding:0 var(--sp-4);justify-content:center;align-items:center;gap:var(--sp-2);cursor:pointer;min-width:44px;min-height:44px;transition:background-color .12s var(--ease), transform 80ms var(--ease);text-decoration:none;display:inline-flex}.pw-btn:hover{background:var(--surface-2)}.pw-btn:active{transform:translateY(1px)}.pw-btn:disabled{opacity:.5;cursor:default}.pw-primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.pw-primary:hover{background:var(--accent);filter:brightness(1.08)}.pw-icon{background:0 0;border-color:#0000;padding:0}.pw-icon:hover{background:var(--surface-2)}.pw-sun{display:none}:root[data-theme=dark] .pw-sun{display:block}:root[data-theme=dark] .pw-moon{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .pw-sun{display:block}:root:not([data-theme=light]) .pw-moon{display:none}}.pw-select{font:500 var(--fs-14)/1 var(--font-ui);color:var(--text);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-ctl);min-height:44px;padding:0 var(--sp-2)}.pw-toasts{left:50%;bottom:var(--sp-4);gap:var(--sp-2);z-index:30;width:min(92vw,420px);display:grid;position:fixed;transform:translate(-50%)}.pw-toast{background:var(--text);color:var(--bg);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-ctl);font-size:var(--fs-14);animation:pw-in .18s var(--ease);box-shadow:0 8px 24px #0000002e}@keyframes pw-in{0%{opacity:0;transform:translateY(6px)}}.ld-view{max-width:1240px;padding:0 var(--sp-4) var(--sp-8);margin:0 auto}.ld-hero{gap:var(--sp-4);padding-top:var(--sp-4);grid-template-columns:1fr;display:grid}.ld-title{font:300 clamp(30px, 7vw, 64px)/1.05 var(--font-mono);letter-spacing:-.02em;max-width:14ch;font-stretch:112.5%}.ld-lede{color:var(--text-muted);max-width:52ch;margin-top:var(--sp-3);font-size:var(--fs-16)}.ld-cta{gap:var(--sp-3);margin-top:var(--sp-4);flex-wrap:wrap;display:flex}.ld-stage{gap:var(--sp-2);min-width:0;display:grid}.ld-sql{font:400 var(--fs-12)/1.4 var(--font-mono);color:var(--text-muted);background:var(--surface);border-radius:var(--r-ctl);padding:var(--sp-2) var(--sp-3);white-space:nowrap;text-overflow:ellipsis;align-items:center;height:34px;font-stretch:87.5%;display:flex;overflow:hidden}.ld-map{background:var(--surface);border-radius:var(--r-panel);aspect-ratio:1;width:100%;max-height:62vh;overflow:hidden}.ld-map canvas,.pm-host canvas{width:100%;height:100%;display:block}.ld-readout{align-items:baseline;gap:var(--sp-3);flex-wrap:wrap;min-height:48px;display:flex}.ld-count,.pm-count{font:300 clamp(33px, 8vw, 48px)/1 var(--font-mono);color:var(--read-text);min-width:4ch;font-stretch:87.5%}.ld-unit,.pm-unit{color:var(--text-muted);font-size:var(--fs-16)}.ld-note{color:var(--text);font-size:var(--fs-14);font-weight:500}.ld-how{margin-top:var(--sp-8);max-width:72ch}.ld-how h2{font:400 var(--fs-28)/1.2 var(--font-mono);margin-bottom:var(--sp-4);font-stretch:100%}.ld-list{padding-left:var(--sp-5);gap:var(--sp-3);display:grid}.ld-about{margin-top:var(--sp-6);color:var(--text-muted);font-size:var(--fs-14)}@media (min-width:900px){.ld-hero{gap:var(--sp-7);padding-top:var(--sp-6);grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start}.ld-map{max-height:calc(100vh - 216px)}}.wb-view{padding:var(--sp-3) var(--sp-4) var(--sp-7);max-width:1500px;margin:0 auto}.wb-grid{gap:var(--sp-4);grid-template-columns:minmax(0,1fr);display:grid}.pm-panel{order:1}.ed-panel{order:2}.tv-panel{order:3}.pm-panel,.ed-panel,.tv-panel{background:var(--surface);border-radius:var(--r-panel);padding:var(--sp-4);min-width:0}.pm-head{justify-content:space-between;align-items:baseline;gap:var(--sp-3);flex-wrap:wrap;min-height:56px;display:flex}.pm-readout{align-items:baseline;gap:var(--sp-3);display:flex}.pm-meta{color:var(--text-muted);font-size:var(--fs-12);max-width:36ch}.pm-host{aspect-ratio:1;background:var(--bg);border-radius:var(--r-ctl);width:100%;max-height:56vh;margin-top:var(--sp-2);position:relative;overflow:hidden}.pm-tip{left:var(--sp-2);bottom:var(--sp-2);background:var(--text);color:var(--bg);font:400 var(--fs-12)/1.4 var(--font-mono);padding:var(--sp-1) var(--sp-2);border-radius:var(--r-ctl);pointer-events:none;max-width:calc(100% - 16px);font-stretch:87.5%;position:absolute}.tr-bar{align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap;display:flex}.tr-btn{min-width:44px;padding:0 var(--sp-3)}.tr-play{min-width:72px}.tr-scrub{min-width:100px;accent-color:var(--accent);flex:120px;min-height:44px}.tr-speed{align-items:center;gap:var(--sp-2);font-size:var(--fs-14);color:var(--text-muted);display:inline-flex}.pm-legend{gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap;min-height:36px;display:flex}.pm-chip{align-items:center;gap:var(--sp-2);font:500 var(--fs-12)/1 var(--font-ui);color:var(--text);background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-ctl);padding:0 var(--sp-2);cursor:pointer;min-height:44px;display:inline-flex}.pm-chip[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.pm-swatch{flex:none;width:12px;height:12px}.pm-chip-n{color:var(--text-muted);font-variant-numeric:tabular-nums}.pm-table{margin-top:var(--sp-3);font-size:var(--fs-14)}.pm-table summary{cursor:pointer;min-height:32px;color:var(--text-muted);align-items:center;display:flex}.pm-table table,.ed-results table{border-collapse:collapse;width:100%;font-size:var(--fs-12)}.pm-table th,.pm-table td,.ed-results th,.ed-results td{text-align:left;padding:var(--sp-1) var(--sp-2);border-bottom:1px solid var(--line);white-space:nowrap}.ed-top{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.ed-label{font-weight:600;font-size:var(--fs-14)}.ed-ds{align-items:center;gap:var(--sp-2);font-size:var(--fs-14);color:var(--text-muted);display:inline-flex}.ed-box{margin-top:var(--sp-2);background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-ctl);position:relative}.ed-hl,.ed-input{font:400 var(--fs-14)/1.6 var(--font-mono);padding:var(--sp-3);white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;tab-size:2;margin:0;font-stretch:87.5%}.ed-hl{pointer-events:none;color:var(--text);position:absolute;inset:0;overflow:hidden}.ed-input{resize:vertical;color:#0000;width:100%;min-height:120px;caret-color:var(--text);background:0 0;border:0;outline:none;display:block;position:relative}.ed-box:focus-within{outline:2px solid var(--focus);outline-offset:2px}.ed-input::selection{background:color-mix(in srgb, var(--accent) 35%, transparent);color:#0000}.sx-k{color:var(--accent);font-weight:600}.sx-s{color:var(--h2)}.sx-n{color:var(--h5)}.sx-c{color:var(--text-muted);font-style:italic}.sx-err{-webkit-text-decoration:underline wavy var(--danger);text-decoration:underline wavy var(--danger)}.ed-actions{align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap;display:flex}.ed-hint{color:var(--text-muted);font-size:var(--fs-12)}.ed-suggest{gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap;display:flex}.ed-chip{font:500 var(--fs-12)/1.2 var(--font-ui);background:var(--bg);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--r-ctl);padding:var(--sp-2) var(--sp-3);cursor:pointer;text-align:left;min-height:44px}.ed-chip:hover{background:var(--surface-2)}.ed-status{margin-top:var(--sp-3);min-height:44px;font-size:var(--fs-14);color:var(--text-muted)}.ed-status.is-err{color:var(--danger);font-weight:500}.ed-status.is-note{color:var(--text)}.ed-engine{padding:var(--sp-3);border:1px solid var(--danger);border-radius:var(--r-ctl);margin-top:var(--sp-3);gap:var(--sp-3);flex-wrap:wrap;align-items:center;display:flex}.ed-results{margin-top:var(--sp-2);border:1px solid var(--line);border-radius:var(--r-ctl);max-height:260px;font-family:var(--font-mono);min-height:64px;font-stretch:87.5%;overflow:auto}.ed-results th{background:var(--surface-2);position:sticky;top:0}.ed-empty{padding:var(--sp-3);color:var(--text-muted);font-family:var(--font-ui);font-size:var(--fs-14)}.tv-title{font:600 var(--fs-14)/1.2 var(--font-ui);margin-bottom:var(--sp-3)}.tv-empty{color:var(--text-muted);font-size:var(--fs-14)}.tv-obj{margin-bottom:var(--sp-4)}.tv-name{font:500 var(--fs-12)/1.2 var(--font-mono);margin-bottom:var(--sp-1);gap:var(--sp-2);align-items:center;font-stretch:87.5%;display:flex}.tv-svg{width:100%;height:auto;display:block}.tv-node{fill:var(--surface-2);stroke:var(--line-strong);stroke-width:1px}.tv-node.is-read{fill:var(--read);stroke:var(--read-ink)}.tv-edge{stroke:var(--read-text);stroke-width:1.5px;fill:none}.tv-node.tv-strip{stroke:none}.tv-lvl{fill:var(--text-muted);font:400 14px var(--font-mono)}.tour{right:var(--sp-4);bottom:var(--sp-4);background:var(--text);width:min(360px,100vw - 32px);color:var(--bg);border-radius:var(--r-panel);padding:var(--sp-4);z-index:25;animation:pw-in .18s var(--ease);position:fixed;box-shadow:0 8px 24px #0000002e}.tour-step{font-size:var(--fs-12);opacity:.75}.tour-title{font:500 var(--fs-19)/1.25 var(--font-ui);margin:var(--sp-1) 0 var(--sp-2)}.tour-body{font-size:var(--fs-14)}.tour-actions{gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap;display:flex}.tour .pw-btn{background:var(--bg);color:var(--text);border-color:var(--bg)}.tour .pw-primary{background:var(--read);color:var(--read-ink);border-color:var(--read)}.tour-target{outline-offset:3px;outline:3px solid var(--read)!important}@media (min-width:1024px){.wb-grid{grid-template-columns:minmax(340px,38fr) minmax(0,62fr);grid-template-areas:"ed pm""tv pm";align-items:start}.ed-panel{grid-area:ed}.pm-panel{grid-area:pm;position:sticky;top:68px}.tv-panel{grid-area:tv}.pm-host{aspect-ratio:auto;height:clamp(300px,100vh - 360px,620px);max-height:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@media (max-width:1023px){.wb-view{padding-left:var(--sp-2);padding-right:var(--sp-2)}.pm-panel{padding:var(--sp-2)}}.pm-host canvas{transition:opacity .18s var(--ease)}.pm-host.is-stale canvas{opacity:.45}
