@font-face{font-family:Pixel Operator;src:url(../fonts/PixelOperator.ttf) format("truetype");font-weight:400;font-display:block}@font-face{font-family:Pixel Operator;src:url(../fonts/PixelOperator-Bold.ttf) format("truetype");font-weight:700;font-display:block}@font-face{font-family:Pixel Operator Mono;src:url(../fonts/PixelOperatorMono.ttf) format("truetype");font-weight:400;font-display:block}@font-face{font-family:Instrument Sans;src:url(../fonts/instrument-sans-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Instrument Sans;src:url(../fonts/instrument-sans-latin-500-normal.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Instrument Sans;src:url(../fonts/instrument-sans-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}:root{--paper: #fff1e8;--paper-2: #f7e2d3;--ink: #1d2b53;--ink-dim: #5f574f;--accent: #7e2553;--accent-2: #29adff;--chrome: #c2c3c7;--win-bg: #ffffff;--outline: #1d2b53;--shadow: #1d2b53;--grid: rgba(29, 43, 83, .07);--grid-major: rgba(29, 43, 83, .14);--chip: #ffe3cf;--ok: #008751;--warn: #ab5236;--title-ink: #fff1e8;--focus: #1d2b53;--font-display: "Pixel Operator", "Courier New", monospace;--font-body: "Instrument Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "Pixel Operator Mono", ui-monospace, Menlo, monospace}@media(prefers-color-scheme:dark){:root{--paper: #111a33;--paper-2: #18234a;--ink: #fff1e8;--ink-dim: #c2c3c7;--accent: #ff77a8;--accent-2: #29adff;--chrome: #5f574f;--win-bg: #1d2b53;--outline: #000000;--shadow: #000000;--grid: rgba(255, 241, 232, .05);--grid-major: rgba(255, 241, 232, .11);--chip: #2a3563;--ok: #00e436;--warn: #ffa300;--title-ink: #111a33;--focus: #29adff;color-scheme:dark}}*{box-sizing:border-box}html,body{height:100%;overflow:hidden}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.55}a{color:inherit}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}#vp{position:fixed;inset:0;overflow:auto;overscroll-behavior:none;cursor:grab;scrollbar-width:thin;touch-action:none}#vp:focus-visible{outline-offset:-2px}#vp.panning{cursor:grabbing}#sizer{position:relative;width:3000px;height:1640px;overflow:hidden}#world{position:absolute;left:0;top:0;transform-origin:0 0;width:3000px;height:1640px;background-color:var(--paper);background-image:linear-gradient(var(--grid-major) 1px,transparent 1px),linear-gradient(90deg,var(--grid-major) 1px,transparent 1px),linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:120px 120px,120px 120px,24px 24px,24px 24px;border-right:2px solid var(--grid-major);border-bottom:2px solid var(--grid-major)}.titleblock{position:absolute;right:40px;bottom:40px;border:2px solid var(--ink-dim);font-family:var(--font-display);color:var(--ink-dim);font-size:15px;display:grid;grid-template-columns:auto auto;user-select:none;pointer-events:none}.titleblock div{padding:4px 10px;border:1px solid var(--grid-major)}.titleblock b{font-weight:700;color:var(--ink)}.sheet-win{position:absolute;left:0;top:0;border:2px solid var(--outline);background:var(--win-bg);box-shadow:5px 5px 0 var(--shadow);display:flex;flex-direction:column;overflow:clip;cursor:auto;transition:box-shadow .15s}.sheet-win.lifted{box-shadow:14px 18px color-mix(in srgb,var(--shadow) 55%,transparent)}.bar{display:flex;align-items:center;gap:8px;flex:none;background:var(--accent);color:var(--title-ink);font-family:var(--font-display);font-size:17px;padding:3px 4px 2px 8px;cursor:grab;touch-action:none;user-select:none;border-bottom:2px solid var(--outline)}.bar .t{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar .grip{opacity:.7;letter-spacing:-2px}.sheet-win.lifted .bar{cursor:grabbing}.bar button{width:20px;height:18px;flex:none;border:2px solid var(--outline);background:var(--chrome);padding:0;font-family:var(--font-display);font-size:13px;line-height:1;cursor:pointer;color:var(--ink)}.bar button:focus-visible{outline-color:var(--ink);outline-width:min(var(--ring, 2px),6px);outline-offset:calc(-2px - min(var(--ring, 2px),6px))}.sheet-win a:focus-visible{outline-width:var(--ring, 2px);outline-offset:0}.sheet-win:focus-visible{outline-width:var(--ring, 2px);outline-offset:var(--ring, 2px);box-shadow:0 0 0 calc(3 * var(--ring, 2px)) var(--paper);transition:none}.about{flex:none;padding:12px 14px;border-bottom:2px solid var(--outline);background:var(--paper);display:flex;flex-direction:column;gap:8px}.phead{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}.phead h2{font-family:var(--font-display);font-weight:700;font-size:28px;line-height:1;margin:0}.phead .yr{font-family:var(--font-display);color:var(--ink-dim);font-size:17px}.status{font-family:var(--font-display);font-size:13px;padding:1px 7px 0;border:2px solid;color:var(--ink);text-transform:uppercase;letter-spacing:.06em}.status.play{border-color:var(--ok)}.status.wip{border-color:var(--warn)}.status.demo{border-color:var(--accent-2)}.blurb{margin:0;font-size:15px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}.meta{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.chip{font-size:12px;padding:1px 7px;background:var(--chip-l, var(--chip));border-radius:2px}@media(prefers-color-scheme:dark){.chip{background:var(--chip-d, var(--chip))}}@media print{.chip{background:none;color:#000;border:1px solid #000}}.meta a{font-size:13px;margin-left:4px}.demo-area{flex:none}.mapbox{position:fixed;z-index:5000;right:max(16px,env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));border:2px solid var(--outline);box-shadow:4px 4px 0 var(--shadow);background:var(--paper);width:200px}#mini{display:block;width:100%;height:auto;cursor:pointer;touch-action:none}#mini:focus-visible{outline-offset:-2px}.zoom{display:flex;border-bottom:2px solid var(--outline);font-family:var(--font-display);font-size:15px}.zoom button{all:unset;cursor:pointer;padding:2px 9px 1px;border-right:2px solid var(--outline)}.zoom button:hover{background:var(--chip)}.zoom button:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.zoom output{flex:1;text-align:center;padding:2px 0 1px;font-variant-numeric:tabular-nums}.zoom button:last-child{border-right:0;border-left:2px solid var(--outline)}@media(max-width:760px){.mapbox{width:140px}}.rail{position:fixed;z-index:5000;left:max(16px,env(safe-area-inset-left,0px));top:calc(16px + env(safe-area-inset-top,0px));width:280px;max-height:calc(100% - 32px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));overflow:auto;background:var(--paper);border:2px solid var(--outline);box-shadow:5px 5px 0 var(--shadow);padding:18px 18px 14px;display:flex;flex-direction:column;gap:14px}.rail:before{content:"";position:absolute;top:6px;left:50%;width:10px;height:10px;margin-left:-5px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px var(--outline)}.railtop,.more{display:contents}.logo{font-family:var(--font-display);font-weight:700;font-size:40px;line-height:.9;letter-spacing:-.5px;margin:6px 0 0}.logo span{color:var(--accent)}.who{display:flex;flex-direction:column}.who b{font-size:17px}.who small{color:var(--ink-dim);font-size:14px}.tag{margin:0;font-size:15px}.cta{display:grid;grid-template-columns:1fr 1fr;gap:8px}.cta .btn:where(:not(.host-root *)){justify-content:center;white-space:nowrap}.btn:where(:not(.host-root *)){font-family:var(--font-display);font-size:17px;display:inline-flex;align-items:center;gap:6px;padding:4px 11px 3px;border:2px solid var(--outline);background:var(--win-bg);box-shadow:3px 3px 0 var(--shadow);text-decoration:none;cursor:pointer;line-height:1.1;transition:transform .08s,box-shadow .08s}.btn:hover:where(:not(.host-root *)){transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--shadow)}.btn:active:where(:not(.host-root *)){transform:translate(2px,2px);box-shadow:1px 1px 0 var(--shadow)}.btn.primary:where(:not(.host-root *)){background:var(--accent);color:var(--title-ink)}.btn.small:where(:not(.host-root *)){font-size:14px;padding:1px 8px;box-shadow:2px 2px 0 var(--shadow)}#reset{align-self:flex-start}.email{font-family:var(--font-mono);font-size:15px;user-select:all}.index{display:flex;flex-direction:column;gap:1px;border-top:2px solid var(--outline);padding-top:10px}.index h2{font-family:var(--font-display);font-size:14px;margin:0 0 2px;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.08em;font-weight:400}.index button{all:unset;cursor:pointer;display:flex;justify-content:space-between;align-items:baseline;padding:2px 6px;margin-inline:-6px;font-size:15px}.index button:hover,.index button[aria-current]{background:var(--chip)}.index button:focus-visible,.app:focus-visible{outline:2px solid var(--focus)}.index em{font-style:normal;font-family:var(--font-display);font-size:14px;color:var(--ink-dim)}.apps{display:flex;gap:6px;flex-wrap:wrap}.index .app{flex-direction:column;align-items:center;justify-content:flex-start;gap:3px;width:72px;margin:0;padding:6px 2px 4px;font-family:var(--font-display);font-size:14px;text-align:center;line-height:1}.app img{width:32px;height:32px;image-rendering:pixelated}.app:active img{transform:translateY(1px)}.hint{font-size:13px;color:var(--ink-dim);margin:0}.railtoggle{display:none}@media(max-width:760px){.rail{width:auto;right:max(16px,env(safe-area-inset-right,0px));padding:10px 14px;gap:10px}.rail:before{display:none}.logo{font-size:28px;margin:0}.railtop{display:flex;align-items:center;justify-content:space-between;gap:10px}.railtoggle{display:inline-flex}.rail.folds:not(.open) .more{display:none}}@media(min-width:761px){.rail{width:150px;padding:14px 6px 8px;gap:7px}.logo{font-size:20px;margin:4px 0 0}.cta{gap:3px}.rail .btn:where(:not(.host-root *)){font-size:10px;padding:0 3px;line-height:1.5;box-shadow:2px 2px 0 var(--shadow)}.rail .btn:hover:where(:not(.host-root *)){box-shadow:3px 3px 0 var(--shadow)}.rail .cta .btn:where(:not(.host-root *)){font-size:12px}.index{padding-top:6px}.index h2,.index em{font-size:10px}.index button{padding:1px 4px;margin-inline:-4px;font-size:10px}.apps{gap:6px}.index .app{width:36px;padding:4px 0 3px;font-size:10px}.app img{width:24px;height:24px}}a[data-mail][hidden]{display:none}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.sheet-win[data-win=notes]{--win-bg: #fff3a8;--accent: #f4dc6b;--title-ink: #3b2a14;--chrome: #e8cf55;--ink: #3b2a14;--ink-dim: #5c4423;--focus: #1d2b53}@media(prefers-color-scheme:dark){.sheet-win[data-win=notes]{--focus: #7f6b3a}}.sheet-win[data-win=notes] .host-root{--t-document: #fff3a8;--t-document-text: #3b2a14;--t-text: #3b2a14;--t-text-inverse: #fff3a8;--t-text-dim: #5c4423;--t-chrome: #e8cf55;--t-chrome-dark: #7a5c14;--t-chrome-light: #fff8cc;--t-title-active: #3b2a14;--t-selection-bg: #3b2a14;--t-selection-fg: #fff3a8;--t-hover: #f4dc6b;--t-highlight: #f4dc6b;--t-status-bg: #fff3a8;--t-status-text: #5c4423}.sheet-win[data-win=notes]:after{content:"";position:absolute;right:0;bottom:0;width:14px;height:14px;background:linear-gradient(135deg,transparent 50%,#e8cf55 50%);pointer-events:none}.demo-area[data-host]{overflow:clip}.host-root{position:relative;height:100%;box-sizing:border-box;overflow:clip;background:var(--chrome);font-family:var(--font-ui);font-size:var(--text-size);line-height:1;color:var(--text);-webkit-font-smoothing:none;text-rendering:optimizeSpeed;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;cursor:default}.host-root :is(input,textarea){user-select:text;-webkit-user-select:text}.host-root :focus-visible:not(input[type=radio]){outline:var(--ring, 2px) solid var(--focus)!important;outline-offset:calc(-2 * var(--ring, 2px))!important;box-shadow:inset 0 0 0 calc(3 * var(--ring, 2px)) var(--paper)!important}.host-root input[type=radio]:focus-visible{outline:none!important}.host-root label:has(input[type=radio]:focus-visible){position:relative}.host-root label:has(input[type=radio]:focus-visible):after{content:"";position:absolute;inset:0;pointer-events:none;outline:var(--ring, 2px) solid var(--focus);outline-offset:calc(-1.5 * var(--ring, 2px));box-shadow:inset 0 0 0 calc(2 * var(--ring, 2px)) var(--paper)}.dg{margin:16px 0}.dg-tiers{list-style:none;margin:0;padding:0}.dg-tier{display:flex;flex-direction:column;align-items:center}.dg-boxes{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(140px,100%),1fr));gap:8px;width:100%}.dg-box{min-width:0;display:flex;flex-direction:column;gap:2px;padding:6px 8px;border:2px solid var(--ink);background:var(--win-bg);text-align:center;overflow-wrap:anywhere}.dg-label,.dg-kw,.dg-loop,.dg figcaption{font-size:13px;color:var(--ink-dim)}.dg-label{font-family:var(--font-mono)}.dg-name{font-family:var(--font-display);font-size:16px;font-weight:400}.dg-note,.dg-mark{font-size:13px;font-weight:700}.dg-mark:empty{display:none}.dg-arrow{font-size:18px;line-height:1.5}.dg-loop{margin:4px 0 0}.dg figcaption{margin-top:8px}.dg-box.active{outline:3px solid var(--accent);outline-offset:1px}.dg-live{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.bar .tabs{display:flex;flex:none;gap:2px}.sheet-win [hidden]{display:none!important}.bar .tabs button{width:auto;padding:0 5px}.bar .tabs button[aria-selected=true]{background:var(--win-bg)}.sheet-win[data-mode=read] .about,.sheet-win[data-mode=read] .wfoot,.sheet-win[data-mode=try] .wfoot{display:none}.try-area,.read-area{flex:1 1 0;min-height:0}.read-area{position:relative;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;padding:0 16px 24px;background:var(--win-bg);scrollbar-width:thin}.r-head{display:flex;flex-direction:column;gap:6px;padding:14px 0 10px}.r-title{font-family:var(--font-display);font-weight:700;font-size:28px;line-height:1;margin:0}.r-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0}.r-meta .yr{font-family:var(--font-display);color:var(--ink-dim)}.r-role{font-size:14px;color:var(--ink-dim)}.r-lede{margin:0;font-size:17px}.r-nav{position:sticky;top:0;z-index:1;display:flex;gap:6px;overflow-x:auto;padding:8px 0;background:var(--win-bg);border-bottom:2px solid var(--ink);scrollbar-width:none}.r-nav a{flex:none;font-size:13px;padding:1px 8px;background:var(--chip);border:2px solid transparent;border-radius:2px;text-decoration:none}.r-nav a[aria-current=true]{border-color:var(--accent)}.r-body{max-width:68ch}.r-body h2{font-family:var(--font-display);font-size:22px;line-height:1.1;margin:24px 0 8px}.r-body p{margin:0 0 12px}.read-area:focus-visible{outline-offset:-2px}#lift{position:fixed;inset:0;z-index:6000}#lift[hidden]{display:none}.sheet-win.expanded{inset:0;width:auto!important;height:auto!important;box-shadow:none}.sheet-win.expanded .bar{cursor:auto}.sheet-win.expanded .bar .home{display:none}.sheet-win-ph{position:absolute;left:0;top:0;visibility:hidden}.dg-status{font-size:13px;font-weight:700}.dg-statusline{margin:8px 0 0;font-size:14px}.cs-notice{padding:8px 10px;border:2px solid var(--ink)}.cases h3{font-family:var(--font-display);font-size:18px;margin:16px 0 6px}@media(min-width:760px){.sheet-win.expanded .read-area{display:grid;grid-template-columns:180px minmax(0,68ch);column-gap:32px;justify-content:center;align-content:start;padding:0 24px 32px}.sheet-win.expanded .r-head{grid-column:1 / -1;max-width:calc(212px + 68ch)}.sheet-win.expanded .r-nav{grid-column:1;align-self:start;flex-direction:column;align-items:flex-start;top:16px;border-bottom:0;overflow:visible}.sheet-win.expanded .r-body{grid-column:2}}.pent-demo{--term-bg: #000000;--term-ink: #00e436;display:flex;flex-direction:column;padding:12px;min-width:0}.pent{flex:none;display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:12px}.pent canvas{display:block;width:100%;height:auto;border:2px solid var(--outline)}.pent .layers{border:2px solid var(--outline);font-size:13px}.pent .layers div{padding:5px 8px;border-bottom:1px solid var(--chrome);display:flex;gap:6px;align-items:center}.pent .layers div.new{background:var(--chip);animation:pent-pop .4s}.pent .eye{font-family:var(--font-display)}@keyframes pent-pop{0%{transform:scale(.96);opacity:.3}}.pent-demo .cmd{flex:none;height:calc(7.75em + 16px);overflow-y:auto;font-family:var(--font-mono);font-size:15px;line-height:1.55;background:var(--term-bg);color:var(--term-ink);padding:8px 10px;margin-top:10px;white-space:pre-wrap;overflow-wrap:anywhere}.pent-demo .tb{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:10px}.pent-demo .tb button{font-family:var(--font-display);font-size:15px;border:2px solid var(--outline);background:var(--chrome);color:var(--ink);padding:2px 9px 1px;cursor:pointer}.pent-demo .tb button:focus-visible,.pent-demo .cmd:focus-visible{outline-width:var(--ring, 2px);outline-offset:0}.pent-demo .tb button:focus-visible{outline-color:var(--ink)}.pent-demo .sketch{font-size:13px;color:var(--ink-dim)}.pent-demo .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}[data-win=pentimento] .wfoot{flex:none;border-top:2px solid var(--outline);background:var(--paper-2);font-family:var(--font-display);font-size:15px;padding:3px 10px 2px}.cw{padding:12px 12px 0;min-width:0}.cw .tb{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:5px}.cw-tabs{display:contents}.cw button{font-family:var(--font-display);font-size:15px;border:2px solid var(--outline);background:var(--chrome);color:var(--ink);padding:2px 9px 1px;cursor:pointer}.cw button[aria-pressed=true]{background:var(--accent);color:var(--title-ink)}.cw button:focus-visible{outline-color:var(--ink);outline-width:var(--ring, 2px);outline-offset:0}.cw-pause{margin-left:auto}.cw-stage{position:relative}.cw canvas{display:block;max-width:100%;image-rendering:pixelated}.cw-state{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-display);font-size:17px}.cw-state[hidden],.cw-state [hidden]{display:none}.cw-units{margin:2px 0 0;font-size:13px;line-height:14px;color:var(--ink-dim)}[data-win=castlewars] .wfoot{flex:none;display:flex;justify-content:space-between;gap:10px;border-top:2px solid var(--outline);background:var(--paper-2);font-family:var(--font-display);font-size:15px;padding:3px 10px 2px}.crawl-demo{padding:12px;min-width:0}.crawl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.crawl .col{border:2px solid var(--outline);min-width:0;display:flex;flex-direction:column}.crawl .col ul{list-style:none;margin:0;padding:4px 6px;height:178px;overflow:hidden;font-family:var(--font-mono);font-size:13px;line-height:1.35}.crawl-demo .note{font-size:13px;margin:8px 0 0}[data-win=crawler] .wfoot{flex:none;display:flex;justify-content:space-between;gap:10px;border-top:2px solid var(--outline);background:var(--paper-2);font-family:var(--font-display);font-size:15px;padding:3px 10px 2px}.crawl-demo .col h4{margin:0;font-family:var(--font-display);font-weight:400;font-size:15px;padding:3px 6px 2px;color:var(--ink);background:var(--paper-2);border-bottom:2px solid var(--outline);display:flex;justify-content:space-between}.crawl-demo .col li{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crawl-demo .col li i{font-style:normal;color:var(--accent)}.crawl-demo .col li.no{color:var(--ink-dim);text-decoration:line-through}.crawl-demo .col li.no i,.crawl-demo .note,.ins-demo .note{color:var(--ink-dim)}.ins-demo .flags div{color:var(--ink)}.ins-demo .flags b{color:var(--accent);font-weight:400}.ins-demo canvas{--chart-bg: var(--win-bg);--chart-axis: var(--ink-dim);--chart-spike: var(--warn);--chart-band: rgba(255, 163, 0, .15);--chart-grid: var(--grid);--chart-line: var(--ink);--chart-dot: rgba(41, 173, 255, .4);--chart-flag: rgba(255, 0, 77, .75)}.ins-demo{padding:12px;min-width:0}.ins{display:grid;grid-template-columns:minmax(0,1fr) 200px;gap:12px;align-items:start}.ins canvas{display:block;box-sizing:content-box;width:calc(100% - 4px);height:auto;aspect-ratio:900 / 420;border:2px solid var(--outline)}.ins .flags{font-size:13px;display:flex;flex-direction:column;gap:6px}.ins .flags div{border:2px solid var(--outline);padding:5px 7px;font-family:var(--font-mono);font-size:14px}.ins .flags .note{margin:0}.ins-demo .note{font-size:13px;margin:8px 0 0}.ins-demo .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}[data-win=insider] .wfoot{flex:none;display:flex;justify-content:space-between;gap:10px;border-top:2px solid var(--outline);background:var(--paper-2);font-family:var(--font-display);font-size:15px;padding:3px 10px 2px}
