@font-face{font-family:"Instrument Serif";font-style:normal;font-weight:400;font-display:swap;src:url(/assets/instrument-serif-latin-400-normal-DnYpCC2O.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Instrument Serif";font-style:italic;font-weight:400;font-display:swap;src:url(/assets/instrument-serif-latin-400-italic-DKMiL14s.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Instrument Serif Fallback";font-style:normal;src:local("Times New Roman"),local("Tinos"),local("Liberation Serif"),local("Times");size-adjust:83%;ascent-override:119%;descent-override:37%;line-gap-override:0%}@font-face{font-family:"Instrument Serif Fallback";font-style:italic;src:local("Times New Roman Italic"),local("TimesNewRomanPS-ItalicMT"),local("Tinos Italic"),local("Liberation Serif Italic"),local("Times Italic");size-adjust:87%;ascent-override:114%;descent-override:36%;line-gap-override:0%}:root{color-scheme:light dark;--font-display: "Instrument Serif", "Instrument Serif Fallback", "Times New Roman", serif;--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, "Liberation Mono", monospace;--gutter: clamp(1.25rem, 5vw, 3rem);--max: 72rem;--radius: 1.25rem;--bg: #f6f1e7;--surface: #fbf8f1;--sunken: #efe8da;--ink: #1c1915;--ink-2: #5b544a;--ink-3: #6b6256;--rule: #d9d0bf;--rule-strong: #b9ae99;--accent: #ad3c16;--accent-ink: #ffffff;--focus: #ad3c16;--ok: #2c7a45;--warn: #a8690a;--pp-stage: #efe2cb;--pp-ink: #3b2f39;--pp-ink-soft: #62505c;--pp-frame: #4a3a46;--pp-edge: #4a3a46;--pp-line: rgba(74, 58, 70, .22);--pp-r0: #b0cfa2;--pp-r1: #c4b2e5;--pp-r2: #fcc794;--pp-r3: #efadbb;--pp-x: #46343f;--pp-hover: rgba(255, 255, 255, .3);--pp-focus: #3b2a9e;--pp-halo: #fffdf8;--pp-clue-ring: #d9a63a;--pp-badge-bg: #5b4a8c;--pp-badge-ink: #fffaf0;--pp-conflict: #d4493e;--pp-solved: #4a7a5b}@media(prefers-color-scheme:dark){:root:not([data-theme]){--bg: #15120e;--surface: #1d1913;--sunken: #26211a;--ink: #f2ebdd;--ink-2: #b9afa0;--ink-3: #a39988;--rule: #3a3329;--rule-strong: #564c3e;--accent: #ff8f66;--accent-ink: #15120e;--focus: #ff8f66;--ok: #6fcf8c;--warn: #f0b45a;--pp-stage: #1f1b2c;--pp-ink: #f3eadf;--pp-ink-soft: #d3c7d6;--pp-frame: #0d0a15;--pp-edge: #0d0a15;--pp-line: rgba(13, 10, 21, .4);--pp-r0: #4e7452;--pp-r1: #6b5d8e;--pp-r2: #a77038;--pp-r3: #a9656f;--pp-x: #fffaf2;--pp-hover: rgba(255, 255, 255, .14);--pp-focus: #efe9ff;--pp-halo: #1f1b2c;--pp-clue-ring: #f0c15a;--pp-badge-bg: #efe3c9;--pp-badge-ink: #3c2f5a;--pp-conflict: #ff8a7e;--pp-solved: #8cc79c}}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark;--bg: #15120e;--surface: #1d1913;--sunken: #26211a;--ink: #f2ebdd;--ink-2: #b9afa0;--ink-3: #a39988;--rule: #3a3329;--rule-strong: #564c3e;--accent: #ff8f66;--accent-ink: #15120e;--focus: #ff8f66;--ok: #6fcf8c;--warn: #f0b45a;--pp-stage: #1f1b2c;--pp-ink: #f3eadf;--pp-ink-soft: #d3c7d6;--pp-frame: #0d0a15;--pp-edge: #0d0a15;--pp-line: rgba(13, 10, 21, .4);--pp-r0: #4e7452;--pp-r1: #6b5d8e;--pp-r2: #a77038;--pp-r3: #a9656f;--pp-x: #fffaf2;--pp-hover: rgba(255, 255, 255, .14);--pp-focus: #efe9ff;--pp-halo: #1f1b2c;--pp-clue-ring: #f0c15a;--pp-badge-bg: #efe3c9;--pp-badge-ink: #3c2f5a;--pp-conflict: #ff8a7e;--pp-solved: #8cc79c}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:400 1.0625rem/1.6 var(--font-sans);-webkit-font-smoothing:antialiased}h1,h2,h3,h4,p,ul,ol,dl,dd,figure{margin:0}ul,ol{padding:0;list-style:none}h1,h2,h3,h4{font-weight:400}svg{display:block;max-width:100%}a{color:inherit;text-decoration-color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.22em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:4px}[id]{scroll-margin-top:1.5rem}main:focus-visible{outline:none}.wrap{width:min(100% - 2 * var(--gutter),var(--max));margin-inline:auto}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip{position:absolute;top:-5rem;left:1rem;z-index:10;padding:.75rem 1.1rem;border-radius:999px;background:var(--ink);color:var(--bg);font-weight:600}.skip:focus{top:1rem}html:not(.js) .js-only{display:none!important}.sprite{position:absolute;width:0;height:0;overflow:hidden}.site-header{padding-block:.9rem}.bar{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem 1.5rem}.brand{display:inline-flex;align-items:center;gap:.55rem;min-height:44px;font-family:var(--font-display);font-size:1.75rem;line-height:1;text-decoration:none}.mark{width:1.75rem;height:1.75rem}.mark-head{fill:var(--accent)}.eye{fill:var(--bg);transform-box:fill-box;transform-origin:center}.brand:hover .eye,.brand:focus-visible .eye{animation:blink .34s ease-in-out}@keyframes blink{50%{transform:scaleY(.1)}}.nav{order:3;width:100%}.nav ul,.foot-nav ul,.foot-links{display:flex;flex-wrap:wrap;gap:0 .15rem;margin-inline-start:-.6rem}.nav a,.foot-nav a,.foot-links a{display:inline-flex;align-items:center;min-height:44px;padding-inline:.6rem;color:var(--ink-2);font-size:.95rem;text-decoration:none}.nav a:hover,.foot-nav a:hover,.foot-links a:hover{color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:.3em}.theme-toggle{display:inline-grid;place-items:center;width:44px;height:44px;margin-inline-start:auto;border:1.5px solid var(--rule-strong);border-radius:999px;background:transparent;color:var(--ink);cursor:pointer}.theme-toggle:hover{background:var(--sunken)}.cell,.tool,.btn,.theme-toggle{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.ico{grid-area:1 / 1;width:1.3rem;height:1.3rem;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.ico-sun{display:none}:root[data-theme=dark] .ico-sun{display:block}:root[data-theme=dark] .ico-moon{display:none}@media(prefers-color-scheme:dark){:root:not([data-theme]) .ico-sun{display:block}:root:not([data-theme]) .ico-moon{display:none}}@media(min-width:40rem){.nav{order:0;width:auto;margin-inline-start:auto}.theme-toggle{margin-inline-start:0}}.hero{padding-block:clamp(2rem,6vw,4.5rem) clamp(3rem,7vw,5.5rem)}.eyebrow{font:600 .78rem/1.4 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}h1{margin-top:1.1rem;font-family:var(--font-display);font-size:clamp(2.9rem,14.4vw,9.25rem);line-height:.94;letter-spacing:-.025em;text-wrap:balance}.nobr{white-space:nowrap}.scribble{position:relative;display:inline-block}.scribble svg{position:absolute;left:-2%;bottom:-.06em;width:104%;height:.13em;overflow:visible;fill:none;stroke:var(--accent);stroke-width:4px;stroke-linecap:round;vector-effect:non-scaling-stroke}.scribble path{vector-effect:non-scaling-stroke}.hero-grid{display:grid;gap:2rem 4rem;margin-top:clamp(1.75rem,4vw,3rem)}.deck{font:italic 400 clamp(1.9rem,4vw,3rem) / 1.08 var(--font-display);color:var(--accent)}.margin-note{display:flex;align-items:flex-start;gap:.5rem;margin-top:.75rem;padding-left:.25rem;font:italic 400 1.3rem/1.2 var(--font-display);color:var(--ink-2)}.margin-note svg{flex:none;width:2.6rem;height:1.4rem;margin-top:.1rem;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.intro{max-width:38rem;font-size:clamp(1.0625rem,1.6vw,1.25rem);line-height:1.62}.intro>*+*{margin-top:1.25rem}.profile-links{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem}@media(min-width:56rem){.hero-grid{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4em;min-height:44px;padding:.55rem 1.2rem;border:1.5px solid var(--ink);border-radius:999px;background:transparent;color:var(--ink);font:600 .9375rem/1.2 var(--font-sans);text-align:center;text-decoration:none}.btn:hover{background:var(--ink);color:var(--bg);transform:translateY(-1px)}.btn-primary{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.btn-primary:hover{border-color:var(--ink);background:var(--ink);color:var(--bg)}.btn:disabled,.btn:disabled:hover{border-style:dashed;border-color:var(--ink-3);background:transparent;color:var(--ink-2);cursor:not-allowed;transform:none}.ext:after{content:"↗";content:"↗" / "";font-size:.9em}.featured{padding-bottom:clamp(2.5rem,6vw,4.5rem)}.stack{display:grid;gap:clamp(2rem,5vw,3.5rem)}.card{display:grid;overflow:hidden;border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface)}.card-copy{display:flex;flex-direction:column;gap:1rem;padding:clamp(1.5rem,4vw,3rem)}.kicker{font:600 .78rem/1.4 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.card-title{font-family:var(--font-display);font-size:clamp(3.25rem,8vw,5.5rem);line-height:.92;letter-spacing:-.025em}.card-tagline{margin-top:-.35rem;font:italic 400 1.6rem/1.15 var(--font-display);color:var(--ink-2)}.card-desc{max-width:34rem}.points{display:grid;gap:.65rem;max-width:36rem;margin-top:.25rem}.points li{position:relative;padding-left:1.5rem}.points li:before{content:"";position:absolute;left:0;top:.78em;width:.7rem;height:.16rem;border-radius:2px;background:var(--accent)}.card-note{max-width:36rem;padding:.2rem 0 .2rem .9rem;border-left:3px solid var(--accent);color:var(--ink-2);font-size:.95rem}.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.5rem}.action-note{margin-top:-.35rem;color:var(--ink-2);font-size:.875rem}.filed{display:grid;gap:.6rem;margin-top:auto;padding-top:1.25rem;border-top:1px dashed var(--rule-strong)}.filed>div,.row-meta>div{display:grid;grid-template-columns:6rem minmax(0,1fr);gap:.75rem;align-items:baseline}.card-copy>.actions+.filed,.card-copy>.action-note+.filed,.card-copy>.card-more+.filed{margin-top:1rem}dt{font:600 .72rem/1.4 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}dd{margin:0}.status{display:inline-flex;align-items:center;gap:.45rem;font:600 .8125rem/1.4 var(--font-mono);letter-spacing:.03em}.status:before{content:"";width:.6rem;height:.6rem;border-radius:50%;background:var(--ok)}.status-soon:before,.status-building:before,.status-experiment:before{background:var(--warn)}.status-archived:before{background:var(--ink-3)}.chips{display:flex;flex-wrap:wrap;gap:.4rem}.chips li{padding:.38rem .65rem;border:1px solid var(--rule);border-radius:999px;background:var(--sunken);color:var(--ink-2);font:500 .75rem/1 var(--font-mono)}.status-private{align-items:flex-start}.status-private:before{flex:none;margin-top:.33em;border:2px solid var(--ink-2);background:transparent}.card-secondary .card-copy{gap:.75rem;padding:clamp(1.25rem,3.2vw,2.25rem)}.card-secondary .card-title{font-size:clamp(2.4rem,5.5vw,3.75rem)}.card-secondary .card-tagline{font-size:1.35rem}.card-secondary .card-tagline,#group-private+.rows .row-line{text-wrap:balance}.card-secondary .card-note{border-left-color:var(--rule-strong)}.card-contact+.action-note{margin-top:-.5rem}.card-secondary .stage>figure{max-width:28rem}#group-private+.rows .link-arrow{display:block}#group-private+.rows .link-arrow:after{margin-left:.3em}.stage{display:grid;align-content:center;justify-items:center;gap:1rem;padding:clamp(1.25rem,4vw,2.75rem)}@media(min-width:60rem){.card{grid-template-columns:minmax(0,1.08fr) minmax(0,1fr)}.card-ryan{grid-template-columns:minmax(0,1fr) minmax(0,1.08fr)}.card-ryan .stage{order:-1}}.stage-purrplex{background:var(--pp-stage);color:var(--pp-ink)}.stage-label{font:italic 400 1.6rem/1.1 var(--font-display);text-align:center}.board{display:grid;grid-template-rows:repeat(4,1fr);width:min(100%,26rem);aspect-ratio:1;overflow:hidden;user-select:none;-webkit-user-select:none;border:6px solid var(--pp-frame);border-radius:18px;background:var(--pp-frame);box-shadow:0 14px 26px -14px #21161e8c}.board[data-solved]{box-shadow:0 0 0 4px var(--pp-solved),0 14px 26px -14px #21161e8c}.b-row{display:grid;grid-template-columns:repeat(4,1fr)}.cell{position:relative;display:grid;place-items:center;min-width:0;min-height:0;background:var(--rc);border-right:1px solid var(--pp-line);border-bottom:1px solid var(--pp-line);color:var(--pp-x)}.cell:last-child{border-right:0}.b-row:last-child .cell{border-bottom:0}.cell.e-r{border-right:3px solid var(--pp-edge)}.cell.e-b{border-bottom:3px solid var(--pp-edge)}.r0{--rc: var(--pp-r0)}.r1{--rc: var(--pp-r1)}.r2{--rc: var(--pp-r2)}.r3{--rc: var(--pp-r3)}.mk{grid-area:1 / 1;width:80%;height:80%}.cell[data-mark=empty] .mk{display:none}.js .cell{cursor:pointer}@media(hover:hover){.js .cell:not(.is-clue):hover{box-shadow:inset 0 0 0 100px var(--pp-hover)}}.js .cell.is-clue{cursor:default}.cell:focus-visible{outline:3px solid var(--pp-focus);outline-offset:-3px;border-radius:0;box-shadow:inset 0 0 0 3px var(--pp-halo)}.is-clue:after{content:"";position:absolute;inset:6%;border:2px solid var(--pp-clue-ring);border-radius:12px;pointer-events:none}.badge{position:absolute;top:5%;right:5%;display:grid;place-items:center;width:32%;max-width:1.5rem;aspect-ratio:1;border-radius:50%;background:var(--pp-badge-bg);color:var(--pp-badge-ink);box-shadow:0 0 0 1.5px var(--pp-clue-ring)}.badge svg{width:72%;height:72%}.is-conflict:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(135deg,transparent 0 6px,color-mix(in srgb,var(--pp-conflict) 45%,transparent) 6px 9px);box-shadow:inset 0 0 0 3px var(--pp-conflict);pointer-events:none}.fresh .mk{animation:pop .2s ease-out}@keyframes pop{0%{transform:scale(.7);opacity:.25}}.board[data-solved] .cell[data-mark=cat] .mk{animation:hop .6s ease-out both}.board[data-solved] .b-row:nth-child(2) .mk{animation-delay:.08s}.board[data-solved] .b-row:nth-child(3) .mk{animation-delay:.16s}.board[data-solved] .b-row:nth-child(4) .mk{animation-delay:.24s}@keyframes hop{30%{transform:translateY(-14%)}60%{transform:translateY(0) scale(1.06)}}.tools{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem}.tool{display:inline-flex;align-items:center;gap:.45rem;min-height:44px;padding:.4rem 1.1rem;border:1.5px solid var(--pp-ink);border-radius:999px;background:transparent;color:var(--pp-ink);font:600 .9375rem/1.2 var(--font-sans);cursor:pointer}.tool:hover{background:color-mix(in srgb,var(--pp-ink) 12%,transparent)}.tool[aria-pressed=true]{background:var(--pp-ink);color:var(--pp-stage)}.tool:focus-visible{outline-color:var(--pp-focus)}.tool-ico{width:1.5rem;height:1.5rem}.board-status{min-height:2.9em;max-width:24rem;font-weight:600;font-size:.95rem;line-height:1.45;text-align:center}.board-help{max-width:24rem;color:var(--pp-ink-soft);font-size:.85rem;line-height:1.5;text-align:center}.stage-ryan{--ry-bg: #0d1117;--ry-panel: #161d27;--ry-line: #364152;--ry-grid: #19212c;--ry-ink: #d7dee8;--ry-muted: #8b96a5;--ry-ok: #3fb950;--ry-bad: #f85149;--ry-a: #6cb6ff;--ry-b: #c297ff;align-content:center;padding:clamp(1rem,3vw,2.25rem);background:var(--ry-bg);color:var(--ry-ink)}.trace-figure{width:100%;max-width:34rem}.trace{width:100%;height:auto;border:1px solid var(--ry-line);border-radius:14px;font-family:var(--font-mono);font-size:14px}.grid-line{fill:none;stroke:var(--ry-grid);stroke-width:1}.rail{fill:none;stroke:var(--ry-line);stroke-width:2}.node-ok{fill:var(--ry-ok)}.node-bad{fill:var(--ry-bad)}.mark-ok,.mark-bad{fill:none;stroke:var(--ry-bg);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.chip{fill:var(--ry-panel);stroke:var(--ry-line);stroke-width:1.2}.chip-bad{fill:color-mix(in srgb,var(--ry-bad) 18%,var(--ry-panel));stroke:var(--ry-bad);stroke-width:2}.badge-a{fill:color-mix(in srgb,var(--ry-a) 16%,var(--ry-bg));stroke:var(--ry-a)}.badge-b{fill:color-mix(in srgb,var(--ry-b) 16%,var(--ry-bg));stroke:var(--ry-b)}.t-ink{fill:var(--ry-ink)}.t-muted{fill:var(--ry-muted);font-size:12px}.t-badge{fill:var(--ry-ink);font-size:12px;font-weight:700}.t-ok{fill:var(--ry-ok);font-size:12px}.t-bad{fill:var(--ry-bad);font-size:12px}.t-strong{font-weight:700}.split-line{fill:none;stroke:var(--ry-bad);stroke-width:1.5;stroke-dasharray:4 4}.match-line,.bad-line{fill:none;stroke-width:3;stroke-linecap:round}.match-line{stroke:var(--ry-ok)}.bad-line{stroke:var(--ry-bad)}.stage-caption{margin-top:.85rem;color:var(--ry-muted);font:500 .8125rem/1.5 var(--font-mono)}.stage-payguard{--pg-bg: #11373c;--pg-paper: #f6f1e6;--pg-paper-2: #e9e3d4;--pg-paper-3: #d8d2c2;--pg-edge: #b3ab97;--pg-ink: #17434a;--pg-field: #a2b2aa;--pg-link: #1c6b6b;--pg-flag: #ad3c16;--pg-route: #2f6266;--pg-muted: #a9c9c4;background:var(--pg-bg);color:var(--pg-muted)}.pg-figure{width:100%;max-width:34rem}.pg-art{width:100%;height:auto}.pg-caption{margin-top:.85rem;font:500 .8125rem/1.5 var(--font-mono);text-align:center}.pg-sheet{fill:var(--pg-paper);stroke:var(--pg-edge);stroke-width:1.2}.pg-mid{fill:var(--pg-paper-2)}.pg-back{fill:var(--pg-paper-3)}.pg-head{stroke:var(--pg-ink);stroke-width:7}.pg-sub,.pg-field{stroke:var(--pg-field);stroke-width:5}.pg-sub{stroke-width:3}.pg-link,.pg-tick{stroke:var(--pg-link);stroke-width:1.8}.pg-flag,.pg-ring{stroke:var(--pg-flag);stroke-width:2.4}.pg-route,.pg-node{stroke:var(--pg-route);stroke-width:2}.pg-route{stroke-dasharray:0 7}.pg-node{fill:var(--pg-bg)}@media(forced-colors:active){.pg-art *{stroke:CanvasText}.pg-sheet{fill:Canvas}.pg-flag,.pg-ring{stroke:Highlight}.pg-route,.pg-node{display:none}}.section{padding-block:clamp(3.5rem,8vw,6rem);border-top:1px solid var(--rule)}.section-head{display:grid;gap:.6rem;align-content:start}h2{font-family:var(--font-display);font-size:clamp(2.6rem,6.4vw,4.5rem);line-height:1;letter-spacing:-.02em}.lede{max-width:38rem;font:italic 400 clamp(1.45rem,2.8vw,2rem) / 1.2 var(--font-display);color:var(--ink-2)}#projects .section-head{margin-bottom:2.25rem}.group+.group{margin-top:2.5rem}.group-title{margin-bottom:.6rem;font:600 .78rem/1.4 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}.rows{border-top:2px solid var(--ink)}.row{display:grid;gap:.9rem 2rem;padding-block:1.5rem;border-bottom:1px solid var(--rule-strong)}.row-name{font-family:var(--font-display);font-size:2.4rem;line-height:1;letter-spacing:-.015em}.row-line{margin:.4rem 0 .8rem;color:var(--ink-2)}.row-meta{display:grid;gap:.35rem;align-content:start}.row-links{display:flex;flex-wrap:wrap;gap:0 1.25rem;align-content:start}.link-arrow{display:inline-flex;align-items:center;gap:.3em;min-height:44px;font-weight:600;text-decoration:none}.link-arrow span{text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.22em}.link-arrow:hover span{text-decoration-thickness:2px}.more{margin-top:1.75rem;font:italic 400 1.4rem/1.3 var(--font-display);color:var(--ink-2)}@media(min-width:52rem){.row{grid-template-columns:minmax(0,1fr) 17rem 9rem;align-items:start}.row-meta>div{grid-template-columns:6.25rem minmax(0,1fr)}}.about-grid{display:grid;gap:1.75rem 4rem}.about-body{display:grid;gap:1.25rem;max-width:40rem;font-size:clamp(1.0625rem,1.6vw,1.25rem);line-height:1.65}@media(min-width:56rem){.about-grid{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}}.site-footer{padding-block:2.75rem 2.25rem;border-top:2px solid var(--ink)}.foot{display:grid;gap:1.5rem 3rem}.foot-brand p{max-width:22rem;color:var(--ink-2)}.legal{color:var(--ink-3);font-size:.85rem}@media(min-width:52rem){.foot{grid-template-columns:1.3fr 1fr auto;align-items:start}.legal{grid-column:1 / -1}}.page-hero{padding-bottom:clamp(2rem,5vw,3.5rem)}.page-hero h1{font-size:clamp(3.5rem,12vw,7.5rem)}.page-deck{max-width:40rem;margin-top:1.25rem;font:italic 400 clamp(1.35rem,2.6vw,1.85rem) / 1.25 var(--font-display);color:var(--ink-2)}.crumbs ol{display:flex;flex-wrap:wrap;gap:0 .1rem}.crumbs li{display:inline-flex;align-items:center;font:600 .8rem/1.4 var(--font-mono);letter-spacing:.04em;color:var(--ink-2)}.crumbs li+li:before{content:"/";content:"/" / "";padding-inline:.4rem;color:var(--ink-3)}.crumbs a,.crumbs [aria-current]{display:inline-flex;align-items:center;min-height:44px}.crumbs [aria-current]{color:var(--ink)}.toc{margin-top:2rem}.toc ol{display:flex;flex-wrap:wrap;gap:.5rem}.toc a{display:inline-flex;align-items:center;min-height:44px;padding:.4rem .95rem;border:1px solid var(--rule-strong);border-radius:999px;background:var(--surface);color:var(--ink);font-size:.9rem;text-decoration:none}.toc a:hover{background:var(--ink);color:var(--bg)}.doc{padding-bottom:clamp(3rem,7vw,5rem)}.doc>section{display:grid;gap:1.1rem;padding-block:clamp(2.25rem,5vw,3.5rem);border-top:1px solid var(--rule)}.doc>section>*{min-width:0}.doc>section>:not(.table-wrap,.diagram-figure,.spec,.link-list){max-width:44rem}.doc>section>h2{margin-bottom:.4rem;font-size:clamp(2.3rem,5vw,3.5rem)}.doc>section>h3{margin-top:1.25rem;font:400 clamp(1.6rem,3vw,2rem) / 1.15 var(--font-display);letter-spacing:-.01em}.doc p,.doc li,.doc dd{overflow-wrap:break-word}.doc code{padding:.08em .35em;border-radius:.3em;background:var(--sunken);font:500 .88em var(--font-mono);overflow-wrap:anywhere}.bullets,.steps,.alt,.alt ul{padding-left:1.4rem}.bullets,.alt ul{list-style:disc}.steps,.alt{list-style:decimal}.bullets li,.steps li,.alt li{padding-left:.3rem}.bullets li+li,.steps li+li,.alt>li+li,.alt li li{margin-top:.55rem}.bullets li::marker,.steps li::marker,.alt li::marker{color:var(--accent);font-weight:600}.glance,.spec{border-top:2px solid var(--ink)}.glance>div,.spec>div{display:grid;gap:.3rem 1.5rem;padding-block:.9rem;border-bottom:1px solid var(--rule-strong)}.spec dt{font:600 1rem/1.35 var(--font-sans);letter-spacing:0;text-transform:none;color:var(--ink)}@media(min-width:40rem){.glance>div{grid-template-columns:7.5rem minmax(0,1fr)}}@media(min-width:52rem){.spec>div{grid-template-columns:13rem minmax(0,1fr)}}.table-wrap{overflow-x:auto}.rules{width:100%;border-collapse:collapse;font-size:.95rem}.rules caption{padding-bottom:.6rem;color:var(--ink-2);font-size:.875rem;text-align:left}.rules th,.rules td{padding:.55rem .5rem;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top;overflow-wrap:break-word}.rules th{border-bottom:2px solid var(--ink);color:var(--ink-3);font:600 .72rem/1.4 var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.rules td:first-child{white-space:nowrap;font-family:var(--font-mono);font-weight:600}.diagram-figure{display:grid;gap:.75rem}.figure-scroll{overflow-x:auto;border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface)}.figure-scroll .diagram{width:100%;min-width:42rem;max-width:62rem;height:auto;margin-inline:auto}.diagram-figure figcaption{color:var(--ink-2);font-size:.875rem}.bd{fill:var(--sunken);stroke:var(--rule)}.bl{fill:var(--ink-2);font:600 11px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.n rect{fill:var(--surface);stroke:var(--rule-strong);stroke-width:1.5;rx:8px}.n text{fill:var(--ink-2);font:400 12.5px/1 var(--font-sans)}.n .l{fill:var(--ink);font-size:15px;font-weight:600}.e{fill:none;stroke:var(--ink-2);stroke-width:1.5}.d{stroke-dasharray:5 4}marker path{fill:var(--ink-2)}.k-ui rect{stroke:var(--pp-r3)}.k-game rect{stroke:var(--pp-r1)}.k-runtime rect{stroke:var(--pp-r2)}.k-core rect{stroke:var(--pp-r0)}.k-store rect{stroke:var(--pp-clue-ring)}.k-build rect,.k-hosting rect{stroke:var(--ink-3)}.k-artifact rect{stroke:var(--ok)}.n[class*=k-] rect{stroke-width:3}.link-list{display:grid;margin-top:.5rem;border-top:2px solid var(--ink)}.link-list li{display:grid;gap:.15rem 1.5rem;padding-block:.7rem;border-bottom:1px solid var(--rule-strong)}.link-label{font:600 .72rem/1.4 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.link-list a{display:inline-flex;align-items:center;justify-self:start;min-height:44px}@media(min-width:40rem){.link-list li{grid-template-columns:9rem minmax(0,1fr);align-items:baseline}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.btn:hover{transform:none}}@media(forced-colors:active){.btn,.tool,.theme-toggle,.chips li,.card,.board{border:1px solid CanvasText}.cell{border-color:CanvasText}.mark-head{fill:CanvasText}.eye{fill:Canvas}.is-clue:after{border-color:Highlight}.bd,.n rect,.e{stroke:CanvasText}.bd,.n rect{fill:Canvas}.n text,.bl,marker path{fill:CanvasText}.tool[aria-pressed=true]{border:3px solid Highlight;background:ButtonFace;color:ButtonText}}
