:root{--pat-gray-0:#ffffff;--pat-gray-50:#f7f7f6;--pat-gray-100:#eeedeb;--pat-gray-200:#e0dedb;--pat-gray-300:#c9c6c1;--pat-gray-400:#a3a09a;--pat-gray-500:#757269;--pat-gray-600:#575450;--pat-gray-700:#3c3a37;--pat-gray-800:#262523;--pat-gray-900:#151413;--pat-gray-950:#0b0a0a;--pat-green-100:#d6e4e2;--pat-green-300:#7fa9a5;--pat-green-500:#2f6d68;--pat-green-700:#0b3b39;--pat-green-900:#062523;--pat-gold-100:#f3e9d5;--pat-gold-300:#ddc48c;--pat-gold-500:#c8a45c;--pat-gold-700:#9a7c3d;--pat-red-100:#f8dcda;--pat-red-300:#e58f8a;--pat-red-500:#b4413d;--pat-red-700:#862e2b;--pat-red-900:#3d1210;--pat-amber-100:#f9ebd2;--pat-amber-300:#e6b768;--pat-amber-500:#b8842a;--pat-amber-700:#8a6115;--pat-amber-900:#3a2708;--pat-teal-100:#d3e8e6;--pat-teal-300:#7cc6bf;--pat-teal-500:#2f8079;--pat-teal-700:#1f5f5a;--pat-teal-900:#06302d;--pat-red-200:#f0b5b1;--pat-red-800:#621f1d;--pat-teal-200:#a9d9d4;--pat-teal-800:#134745;--pat-blue-100:#dde6f1;--pat-blue-300:#8fadd0;--pat-blue-500:#3d6591;--pat-blue-700:#28425f;--pat-blue-900:#16263a;--pat-violet-100:#e6e0ee;--pat-violet-300:#b0a0c9;--pat-violet-500:#6f5490;--pat-violet-700:#4a3761;--pat-violet-900:#291d38;--pat-blue-400:#4a86c8;--pat-blue-600:#2f72bd;--pat-amber-600:#d07b00;--pat-violet-400:#724aab;--pat-violet-600:#613897;--pat-magenta-400:#bf5da2;--pat-magenta-600:#ab4b90;--pat-space-0:0;--pat-space-1:0.25rem;--pat-space-2:0.5rem;--pat-space-3:0.75rem;--pat-space-4:1rem;--pat-space-5:1.5rem;--pat-space-6:2rem;--pat-space-7:3rem;--pat-space-8:4rem;--pat-size-1:0.625rem;--pat-size-2:0.6875rem;--pat-size-3:0.78125rem;--pat-size-4:0.84375rem;--pat-size-5:1.3125rem;--pat-size-6:2rem;--pat-weight-regular:400;--pat-weight-medium:500;--pat-leading-tight:1.2;--pat-leading-normal:1.55;--pat-tracking-tight:-0.011em;--pat-tracking-wide:0.08em;--pat-radius-1:0.25rem;--pat-radius-2:0.375rem;--pat-radius-3:0.625rem;--pat-radius-full:999px;--pat-border-1:1px;--pat-border-2:2px;--pat-shadow-1:0 1px 2px rgb(0 0 0/0.05);--pat-shadow-2:0 4px 16px rgb(0 0 0/0.09);--pat-duration-1:90ms;--pat-duration-2:180ms;--pat-duration-3:700ms;--pat-ease:cubic-bezier(0.2,0,0.2,1);--pat-font-display:"Sulphur Point",ui-sans-serif,-apple-system,sans-serif;--pat-font-latin:"IBM Plex Sans",ui-sans-serif,-apple-system,"Segoe UI",Roboto,sans-serif;--pat-font-arabic:"Noto Kufi Arabic","Noto Sans Arabic","Geeza Pro",Tahoma,sans-serif;--pat-font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;--pat-leading-display:1.05;--pat-leading-title:1.15;--pat-leading-prose:1.45;--pat-leading-prose-arabic:1.9;--pat-leading-caption:1.4;--pat-leading-row:1;--pat-leading-code:1.2;--pat-leading-mark:1.3;--pat-tracking-display:-0.011em;--pat-tracking-label:0.09em;--pat-tracking-mark:0.02em;--pat-tracking-mark-word:0.04em;--pat-surface:var(--pat-tenant-surface,var(--pat-gray-0));--pat-surface-sunken:var(--pat-gray-50);--pat-surface-raised:var(--pat-gray-0);--pat-surface-inverse:var(--pat-gray-900);--pat-surface-accent:var(--pat-tenant-accent,var(--pat-green-700));--pat-surface-accent-subtle:var(--pat-green-100);--pat-surface-danger-subtle:var(--pat-red-100);--pat-surface-warning-subtle:var(--pat-amber-100);--pat-surface-success-subtle:var(--pat-teal-100);--pat-content:var(--pat-tenant-content,var(--pat-gray-900));--pat-content-muted:var(--pat-gray-600);--pat-content-subtle:var(--pat-gray-500);--pat-content-inverse:var(--pat-gray-0);--pat-content-accent:var(--pat-green-700);--pat-content-danger:var(--pat-red-700);--pat-content-warning:var(--pat-amber-700);--pat-content-success:var(--pat-teal-700);--pat-content-on-accent:var(--pat-gray-0);--pat-border:var(--pat-tenant-border,var(--pat-gray-200));--pat-border-strong:var(--pat-gray-500);--pat-border-accent:var(--pat-green-500);--pat-border-danger:var(--pat-red-500);--pat-border-warning:var(--pat-amber-500);--pat-border-success:var(--pat-teal-500);--pat-focus-ring:var(--pat-gold-700);--pat-focus-ring-width:var(--pat-border-2);--pat-positive:var(--pat-teal-700);--pat-negative:var(--pat-red-700);--pat-viz-1:var(--pat-blue-600);--pat-viz-2:var(--pat-amber-600);--pat-viz-3:var(--pat-violet-600);--pat-viz-4:var(--pat-magenta-600);--pat-viz-scale-negative-3:var(--pat-red-300);--pat-viz-scale-negative-2:var(--pat-red-200);--pat-viz-scale-negative-1:var(--pat-red-100);--pat-viz-scale-zero:var(--pat-gray-0);--pat-viz-scale-positive-1:var(--pat-teal-100);--pat-viz-scale-positive-2:var(--pat-teal-200);--pat-viz-scale-positive-3:var(--pat-teal-300);--pat-viz-content:var(--pat-content);--pat-viz-content-muted:var(--pat-content-muted);--pat-viz-grid:var(--pat-border);--pat-viz-axis:var(--pat-border-strong);--pat-viz-reference:var(--pat-content-subtle);--pat-viz-selected:var(--pat-focus-ring);--pat-viz-positive:var(--pat-positive);--pat-viz-negative:var(--pat-negative);--pat-viz-track:var(--pat-surface-sunken);--pat-font-body:var(--pat-font-latin);--pat-font-numeric:var(--pat-font-mono);--pat-leading-prose-resolved:var(--pat-leading-prose);--pat-leading-caption-resolved:var(--pat-leading-caption);--pat-radius-control:0;--pat-radius-container:0;--pat-row-compact:28px;--pat-row-default:34px;--pat-row-relaxed:40px;--pat-gutter-inline:40px;--pat-band-fine:14px;--pat-band-coarse:13px;--pat-tick-target:64px;--pat-tick-floor:48px;--pat-tick-floor-short:32px;--pat-measure:66ch;--pat-measure-flow:88ch;--pat-control-height:2.25rem;--pat-control-padding-inline:var(--pat-space-4);--pat-container-padding:var(--pat-space-5);--pat-motion-instant:var(--pat-duration-1);--pat-motion-move:var(--pat-duration-2);--pat-motion-loop:var(--pat-duration-3);--pat-motion-ease:var(--pat-ease)}@media (prefers-reduced-motion:reduce){:root{--pat-motion-instant:0ms;--pat-motion-move:0ms;--pat-motion-loop:2400ms}}:root:lang(ar),[dir=rtl]{--pat-font-body:var(--pat-font-arabic);--pat-leading-prose-resolved:var(--pat-leading-prose-arabic);--pat-leading-caption-resolved:var(--pat-leading-prose-arabic)}@media (prefers-color-scheme:dark){:root:not([data-pat-theme=light]){--pat-surface:var(--pat-gray-950);--pat-surface-sunken:var(--pat-gray-900);--pat-surface-raised:var(--pat-gray-800);--pat-surface-inverse:var(--pat-gray-50);--pat-surface-accent:var(--pat-green-500);--pat-surface-accent-subtle:var(--pat-green-900);--pat-surface-danger-subtle:var(--pat-red-900);--pat-surface-warning-subtle:var(--pat-amber-900);--pat-surface-success-subtle:var(--pat-teal-900);--pat-content:var(--pat-gray-50);--pat-content-muted:var(--pat-gray-400);--pat-content-subtle:var(--pat-gray-500);--pat-content-inverse:var(--pat-gray-900);--pat-content-accent:var(--pat-green-300);--pat-content-danger:var(--pat-red-300);--pat-content-warning:var(--pat-amber-300);--pat-content-success:var(--pat-teal-300);--pat-border:var(--pat-gray-700);--pat-border-strong:var(--pat-gray-500);--pat-focus-ring:var(--pat-gold-500);--pat-positive:var(--pat-teal-300);--pat-negative:var(--pat-red-300);--pat-viz-1:var(--pat-blue-400);--pat-viz-2:var(--pat-amber-600);--pat-viz-3:var(--pat-violet-400);--pat-viz-4:var(--pat-magenta-400);--pat-viz-scale-negative-3:var(--pat-red-700);--pat-viz-scale-negative-2:var(--pat-red-800);--pat-viz-scale-negative-1:var(--pat-red-900);--pat-viz-scale-zero:var(--pat-gray-900);--pat-viz-scale-positive-1:var(--pat-teal-900);--pat-viz-scale-positive-2:var(--pat-teal-800);--pat-viz-scale-positive-3:var(--pat-teal-700)}}:root[data-pat-theme=dark],[data-pat-theme=dark]{--pat-surface:var(--pat-gray-950);--pat-surface-sunken:var(--pat-gray-900);--pat-surface-raised:var(--pat-gray-800);--pat-surface-inverse:var(--pat-gray-50);--pat-surface-accent:var(--pat-green-500);--pat-surface-accent-subtle:var(--pat-green-900);--pat-surface-danger-subtle:var(--pat-red-900);--pat-surface-warning-subtle:var(--pat-amber-900);--pat-surface-success-subtle:var(--pat-teal-900);--pat-content:var(--pat-gray-50);--pat-content-muted:var(--pat-gray-400);--pat-content-subtle:var(--pat-gray-500);--pat-content-inverse:var(--pat-gray-900);--pat-content-accent:var(--pat-green-300);--pat-content-danger:var(--pat-red-300);--pat-content-warning:var(--pat-amber-300);--pat-content-success:var(--pat-teal-300);--pat-border:var(--pat-gray-700);--pat-border-strong:var(--pat-gray-500);--pat-focus-ring:var(--pat-gold-500);--pat-positive:var(--pat-teal-300);--pat-negative:var(--pat-red-300);--pat-viz-1:var(--pat-blue-400);--pat-viz-2:var(--pat-amber-600);--pat-viz-3:var(--pat-violet-400);--pat-viz-4:var(--pat-magenta-400);--pat-viz-scale-negative-3:var(--pat-red-700);--pat-viz-scale-negative-2:var(--pat-red-800);--pat-viz-scale-negative-1:var(--pat-red-900);--pat-viz-scale-zero:var(--pat-gray-900);--pat-viz-scale-positive-1:var(--pat-teal-900);--pat-viz-scale-positive-2:var(--pat-teal-800);--pat-viz-scale-positive-3:var(--pat-teal-700)}:root{font-family:var(--pat-font-body);font-size:100%;line-height:var(--pat-leading-prose-resolved)}[lang=ar]{font-family:var(--pat-font-arabic);line-height:var(--pat-leading-prose-arabic)}.pat-type-display{font-size:var(--pat-size-6);line-height:var(--pat-leading-display);letter-spacing:var(--pat-tracking-display)}.pat-type-display,.pat-type-title{font-family:var(--pat-font-display);font-weight:var(--pat-weight-regular)}.pat-type-title{font-size:var(--pat-size-5);line-height:var(--pat-leading-title)}.pat-type-body{font-weight:var(--pat-weight-regular)}.pat-type-body,.pat-type-body-strong{font-family:var(--pat-font-body);font-size:var(--pat-size-4);line-height:var(--pat-leading-prose-resolved)}.pat-type-body-strong{font-weight:var(--pat-weight-medium)}.pat-type-caption{font-family:var(--pat-font-body);font-size:var(--pat-size-3);font-weight:var(--pat-weight-regular);line-height:var(--pat-leading-caption-resolved)}.pat-type-numeric{font-weight:var(--pat-weight-regular);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.pat-type-numeric,.pat-type-numeric-strong{font-family:var(--pat-font-mono);font-size:var(--pat-size-3);line-height:var(--pat-leading-row);direction:ltr;unicode-bidi:-webkit-isolate;unicode-bidi:isolate}.pat-type-numeric-strong{font-weight:var(--pat-weight-medium);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.pat-type-code{font-family:var(--pat-font-mono);font-size:var(--pat-size-2);font-weight:var(--pat-weight-regular);line-height:var(--pat-leading-code);direction:ltr;unicode-bidi:-webkit-isolate;unicode-bidi:isolate}.pat-type-label{line-height:var(--pat-leading-code);letter-spacing:var(--pat-tracking-label);text-transform:uppercase}.pat-type-label,.pat-type-mark{font-family:var(--pat-font-mono);font-size:var(--pat-size-1);font-weight:var(--pat-weight-medium)}.pat-type-mark{letter-spacing:var(--pat-tracking-mark)}.pat-type-mark,.pat-type-mark-word{line-height:var(--pat-leading-mark)}.pat-type-mark-word{font-family:var(--pat-font-mono);font-size:var(--pat-size-2);font-weight:var(--pat-weight-medium);letter-spacing:var(--pat-tracking-mark-word)}@font-face{font-family:Sulphur Point;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/sulphur-point-400.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans-400.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-500.woff2) format("woff2")}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;color-scheme:dark}body{margin:0;min-height:100vh;background:var(--pat-surface);color:var(--pat-content);font-family:var(--pat-font-body);-webkit-font-smoothing:antialiased;overflow-x:hidden}::selection{background:var(--pat-surface-accent);color:var(--pat-content-on-accent)}button,input{font:inherit;color:inherit}.away{position:absolute;width:1px;height:1px;clip:rect(0 0 0 0);white-space:nowrap}.away,.stage{overflow:hidden}.stage{isolation:isolate}.split,.stage{position:relative}.split{z-index:2;display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);align-items:center;grid-gap:var(--pat-space-8);gap:var(--pat-space-8);min-block-size:100vh;max-inline-size:1400px;margin-inline:auto;padding-inline:var(--pat-container-padding);pointer-events:none}.well{pointer-events:auto}.plot{min-block-size:560px}h1{margin:0 0 var(--pat-space-5);font-family:var(--pat-font-display);font-weight:300;font-size:clamp(38px,4.6vw,60px);line-height:1.1;word-spacing:-.07em;text-wrap:balance;color:var(--pat-content)}h1 em{font-style:normal;color:var(--pat-content-subtle)}.sub{margin:0 0 var(--pat-space-6);max-inline-size:40ch;font-size:clamp(14px,1.5vw,17px);line-height:var(--pat-leading-prose-resolved);color:var(--pat-content-muted);text-wrap:pretty}form{display:flex;gap:var(--pat-space-2);max-inline-size:420px}.field{flex:1 1 auto;min-inline-size:0;padding:var(--pat-space-4) var(--pat-space-5);border:var(--pat-border-1) solid var(--pat-border);border-radius:2px;background:var(--pat-surface-raised);color:var(--pat-content);font-family:var(--pat-font-mono);font-size:12px;transition:border-color var(--pat-duration-2) var(--pat-ease),background var(--pat-duration-2) var(--pat-ease)}.field::placeholder{color:var(--pat-content-subtle)}.field:hover{border-color:var(--pat-border-strong)}.field:focus{outline:none;border-color:var(--pat-border-accent)}form.wrong .field{border-color:var(--pat-border-danger)}.go{flex:none;padding:var(--pat-space-4) var(--pat-space-6);border:var(--pat-border-1) solid var(--pat-content);border-radius:2px;background:var(--pat-content);color:var(--pat-content-inverse);font-family:var(--pat-font-mono);font-size:12px;cursor:pointer;transition:transform var(--pat-duration-2) var(--pat-ease),box-shadow var(--pat-duration-2) var(--pat-ease)}.go:hover{transform:translateY(-1px);box-shadow:var(--pat-shadow-1)}.go:focus-visible{outline:var(--pat-focus-ring-width) solid var(--pat-focus-ring);outline-offset:3px}.note{margin:var(--pat-space-5) 0 0;min-block-size:1.4em;font-family:var(--pat-font-mono);font-size:11px;color:var(--pat-content-subtle)}.note.good{color:var(--pat-content-success)}.note.bad{color:var(--pat-content-danger)}.graph{z-index:1;pointer-events:none}.graph,.weave{position:absolute;inset:0}.weave{display:block}.node{position:absolute;inset-block-start:0;inset-inline-start:0;padding:var(--pat-space-3);border:var(--pat-border-1) solid var(--pat-border);border-radius:var(--pat-radius-3);background:var(--pat-surface-raised);box-shadow:var(--pat-shadow-2);cursor:-webkit-grab;cursor:grab;pointer-events:auto;touch-action:none;-moz-user-select:none;user-select:none;-webkit-user-select:none;transition:border-color var(--pat-duration-2) var(--pat-ease),box-shadow var(--pat-duration-2) var(--pat-ease)}.node:hover{border-color:var(--pat-border-strong)}.node.picked{border-color:color-mix(in oklab,var(--pat-content) 30%,transparent);box-shadow:0 0 0 1px color-mix(in oklab,var(--pat-content) 5%,transparent),var(--pat-shadow-2)}.node.held{cursor:-webkit-grabbing;cursor:grabbing;z-index:3;box-shadow:0 0 0 1px color-mix(in oklab,var(--pat-content) 12%,transparent),var(--pat-shadow-2)}.node-head{display:flex;align-items:center;gap:var(--pat-space-2)}.node-dot{flex:none;inline-size:5px;block-size:5px;border-radius:50%;background:var(--hue)}.node-kind{font-size:10px;letter-spacing:.04em;color:var(--pat-content-subtle)}.node-kind,.node-title{font-family:var(--pat-font-mono)}.node-title{-webkit-margin-before:var(--pat-space-2);margin-block-start:var(--pat-space-2);font-size:12px;line-height:1.4;color:var(--pat-content)}.node-foot{display:flex;justify-content:space-between;gap:var(--pat-space-2);-webkit-margin-before:var(--pat-space-3);margin-block-start:var(--pat-space-3);-webkit-padding-before:var(--pat-space-2);padding-block-start:var(--pat-space-2);-webkit-border-before:var(--pat-border-1) solid var(--pat-border);border-block-start:var(--pat-border-1) solid var(--pat-border);font-family:var(--pat-font-mono);font-size:10px;color:var(--pat-content-muted)}.node-foot .val{color:var(--pat-content)}.readout{position:absolute;inset-block-start:calc(100% + 7px);inset-inline-start:0;font-family:var(--pat-font-mono);font-size:10px;white-space:nowrap;color:var(--pat-content-subtle)}@media (max-width:1080px){.split{grid-template-columns:minmax(0,1fr);gap:var(--pat-space-7);padding-block:calc(var(--pat-space-8) + var(--pat-space-6) + env(safe-area-inset-top, 0px)) var(--pat-space-8)}.plot{min-block-size:560px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}