:root{--bg:#eff1f5;--surface:#dce0e8;--fg:#4c4f69;--muted:#6c6f85;--link:#8839ef;--accent:#8839ef;--rule:#8c8fa1;--tier-s:#f38ba8;--tier-a:#fab387;--tier-b:#f9e2af;--tier-c:#a6e3a1;--tier-d:#89b4fa;--tier-text:#11111b;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--font-mono:ui-monospace, "Fira Code", SFMono-Regular, Menlo, Consolas, monospace}@media(prefers-color-scheme:dark){:root{--bg:#1e1e2e;--surface:#313244;--fg:#cdd6f4;--muted:#a6adc8;--link:#cba6f7;--accent:#cba6f7;--rule:#7f849c}}html{font-family:var(--font-sans)}body{background-color:var(--bg);color:var(--fg);max-width:800px;margin:auto;padding:.2em;line-height:1.5em}h1{line-height:1.5em}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}img,iframe,video{max-width:100%;height:auto;display:block;margin-left:auto;margin-right:auto}.content-wrapper{padding:0 12px}main{hyphens:auto;max-width:750px;margin-left:auto;margin-right:auto;line-height:1.7em;display:block;font-size:1.1em}main a{text-decoration:underline;text-underline-offset:.15em}main h2{padding-top:1.2em;padding-bottom:.3em;border-bottom:1px solid var(--rule)}blockquote{margin:1em 0;padding:.25em 1em;border-left:4px solid var(--accent);background:var(--surface)}pre{border:1px solid var(--rule);border-radius:5px;padding:1em;overflow-x:auto}code{font-family:var(--font-mono);font-size:85%;padding:1px 4px;border-radius:3px;background:var(--surface)}pre code{padding:0;background:0 0}.highlight pre.chroma{background-color:var(--surface)}.highlight code{font-size:.75em;line-height:1.2em}#TableOfContents a,.posts a,.project-links a,.gameSummary a,a.tag-badge{text-decoration:none}#TableOfContents,#TOC{border:1px solid var(--rule);border-radius:5px;margin:1rem 0}.img-circle{border-radius:50%}header{border-bottom:3px dotted var(--rule);font-size:1rem}header nav{padding:0 .5rem}header ul{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none;font-size:.95rem}header li.end{margin-left:auto}header a{color:var(--fg);line-height:1.75rem;padding:0 .5rem}header a:hover,header li.current a{color:var(--accent)}.nav-toggle{display:none}@media(max-width:480px){.nav-toggle{display:block;padding:0 .5rem;color:var(--fg);background:0 0;border:0;cursor:pointer}.nav-toggle svg{display:block;margin:.5rem 0}.nav-toggle .cross,.nav-toggle[aria-expanded=true] .bars{display:none}.nav-toggle[aria-expanded=true] .cross{display:inline}.nav-toggle[aria-expanded=true]{color:var(--accent)}header ul{display:none;flex-direction:column;padding-bottom:.5rem}header ul.open{display:flex}header li.end{margin-left:0}header a{display:block;line-height:2.5rem}}.footer{margin-top:2rem;padding:20px 10px 10px;border-top:1px solid var(--rule);text-align:center}.contact-button{display:inline-block;padding:10px 20px;border-radius:5px;background:var(--surface);color:var(--fg)}.icon{width:1em;height:1em;vertical-align:-.125em}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.article-head{margin-bottom:1.5rem}.article-tags,.pills{display:flex;flex-wrap:wrap;gap:.4rem;font-size:.8rem;line-height:1.4}a.tag-badge{font-weight:400;color:var(--fg);border:1px solid;border-radius:999px;padding:.1rem .6rem;opacity:.85}a.tag-badge:hover{opacity:1;text-decoration:none;background:var(--surface)}a.tag-badge.category{background:var(--link);border-color:var(--link);color:var(--bg);opacity:1}a.tag-badge[aria-current=page]{font-weight:700;box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--accent)}.tag-badge .count{margin-left:.15em;opacity:.7}.pills{margin:1rem 0 1.5rem}.muted{color:var(--muted)}.posts{list-style:none;margin:0 0 1rem;padding:0}.posts li{display:grid;grid-template-columns:7em 1fr;gap:.5rem;padding:.2rem 0}.posts a{font-weight:400}a.tag-badge.category:hover{filter:brightness(1.1)}.article-title{margin:.5rem 0;font-size:2rem;line-height:1.2}.article-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem 1rem;color:var(--muted);font-size:.9rem}.article-last-mod{position:relative;display:inline-block;border-bottom:1px dashed;cursor:default}.article-last-mod .last-mod-tooltip{visibility:hidden;position:absolute;z-index:1;bottom:100%;left:50%;width:140px;margin-left:-70px;padding:5px 0;border-radius:6px;text-align:center;background:var(--surface);color:var(--fg)}.article-last-mod:hover .last-mod-tooltip{visibility:visible}img.cover{height:200px;width:auto;margin-bottom:1rem}.date{font-family:var(--font-mono);font-size:.85em;color:var(--muted);margin-right:.5em}.spoiler-text{display:inline-block;filter:blur(5px);transition:filter .3s;cursor:pointer}.spoiler-text.revealed{filter:none}.game-review-scoreboard{margin:1.5rem 0;padding:.25rem 1rem;border:1px solid color-mix(in srgb,var(--fg) 15%,transparent);border-radius:12px;background:var(--surface)}.game-review-scoreboard table{width:100%;border-collapse:collapse}.game-review-scoreboard td{padding:8px 0;text-align:left;white-space:nowrap;border-bottom:1px solid color-mix(in srgb,var(--fg) 12%,transparent)}.game-review-scoreboard tr:last-child td{border-bottom:0}.game-review-scoreboard td:nth-child(2){text-align:right;padding-left:1rem;padding-right:1.5rem}.game-review-scoreboard .final-score{text-align:center;vertical-align:middle;font-size:2em;line-height:1.4em;padding-left:1.5rem;border-bottom:0;border-left:1px solid color-mix(in srgb,var(--fg) 12%,transparent);color:var(--accent)}.game-review-scoreboard .final-score strong,.game-review-scoreboard .final-score small{font-size:.5em;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.game-review-scoreboard .final-score small{font-weight:600}.tier-badge{display:inline-block;min-width:1.7em;padding:0 .3em;border-radius:8px;font-weight:700;text-align:center;color:var(--tier-text)}.tier-badge[data-tier=S],.tier-label[data-tier=S]{background:var(--tier-s)}.tier-badge[data-tier=A],.tier-label[data-tier=A]{background:var(--tier-a)}.tier-badge[data-tier=B],.tier-label[data-tier=B]{background:var(--tier-b)}.tier-badge[data-tier=C],.tier-label[data-tier=C]{background:var(--tier-c)}.tier-badge[data-tier=D],.tier-label[data-tier=D]{background:var(--tier-d)}.tier-list{display:grid;gap:8px;margin:1.5rem 0}.tier-row{display:flex;overflow:hidden;border:1px solid color-mix(in srgb,var(--fg) 15%,transparent);border-radius:12px;background:var(--surface)}.tier-label{flex:0 0 5.5em;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.5rem .25rem;text-align:center;color:var(--tier-text)}.tier-label strong{font-size:1.8em;line-height:1}.tier-label span{font-size:.75em;font-weight:600}.tier-games{flex:1;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px;min-height:3.5rem}.tier-card{display:block;width:130px;font-size:.8em;line-height:1.25;color:var(--fg);text-decoration:none}.tier-card img{display:block;width:100%;aspect-ratio:460/215;object-fit:cover;border-radius:6px}.tier-card span{display:block;margin-top:4px;text-align:center}.tier-card:hover span{color:var(--accent)}.tier-games .muted{color:var(--muted);padding-left:.5rem}@media(max-width:480px){.tier-label{flex-basis:4.8em}.tier-card{width:100px}}.gameSummary{overflow-x:auto}.gameSummary table{width:100%;border-collapse:collapse;text-align:center}.gameSummary th{padding:0;border-bottom:2px solid var(--accent)}.gameSummary th button{width:100%;padding:8px 11px;font:inherit;font-weight:600;color:var(--muted);background:0 0;border:0;cursor:pointer;white-space:nowrap}.gameSummary th button:hover,.gameSummary th[aria-sort] button{color:var(--fg)}.gameSummary th[aria-sort=ascending] button::after{content:" ▲";font-size:.6em}.gameSummary th[aria-sort=descending] button::after{content:" ▼";font-size:.6em}.gameSummary td{padding:9px 11px;border-bottom:1px solid color-mix(in srgb,var(--fg) 12%,transparent)}.gameSummary td:nth-child(2),.gameSummary th:nth-child(2) button{text-align:left;white-space:nowrap;max-width:24em;overflow:hidden;text-overflow:ellipsis}.gameSummary .muted{color:var(--muted)}@media(max-width:480px){.gameSummary th:nth-child(8),.gameSummary td:nth-child(8){display:none}.gameSummary td,.gameSummary th button{padding-left:6px;padding-right:6px}.gameSummary td:nth-child(2){max-width:9em}}.gameSummary a{color:var(--fg)}.gameSummary tbody tr:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.project{display:grid;grid-template-columns:96px 1fr;gap:1rem;padding:1rem 0;border-bottom:1px dashed var(--rule)}.project:last-of-type{border-bottom:0}.project-img{width:96px;height:96px;margin:0;object-fit:contain}.project-title{display:flex;justify-content:space-between;align-items:baseline;margin:0 0 .3rem;font-size:1.1em}.project-year{font-size:.8em;font-weight:400;opacity:.7}.project-description>:first-child{margin-top:0}.project-description>:last-child{margin-bottom:0}.project-links{margin:.5rem 0 0}.project-links a{margin-right:1rem;white-space:nowrap}.project>.project-body:only-child{grid-column:1/-1}.project+h2,.intro+h2{margin-top:3rem}h2+.project{padding-top:0}@media(max-width:480px){.project{grid-template-columns:1fr}.project-img{width:64px;height:64px}}.project-button{padding:6px 16px;border:0;border-radius:6px;background:var(--accent);color:var(--bg);font:inherit;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap}.project-button:hover{filter:brightness(1.1)}.donationTable table{width:100%;table-layout:fixed;word-break:break-all;border-top:1px solid var(--accent);border-bottom:1px solid var(--accent)}.donationTable th{letter-spacing:.3px;border-bottom:1px solid var(--accent)}@media(max-width:480px){.donationTable table{word-break:normal}.donationTable .project-button{padding:6px 8px;font-size:12px;white-space:normal}}.page-break-div{page-break-before:always}@media print{header,footer{display:none}body{font-family:merriweather,lora,noto serif,serif;font-size:10pt;background:#fff;color:#000}}.bg{color:#4c4f69;background-color:#eff1f5}.chroma{color:#4c4f69;background-color:#eff1f5;-webkit-text-size-adjust:none}.chroma .x{color:#4c4f69}.chroma .err{color:#d20f39}.chroma .cl{color:#4c4f69}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#bcc0cc}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#8c8fa1}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#8c8fa1}.chroma .line{display:flex}.chroma .k{color:#8839ef}.chroma .kc{color:#fe640b}.chroma .kd{color:#d20f39}.chroma .kn{color:#179299}.chroma .kp{color:#8839ef}.chroma .kr{color:#8839ef}.chroma .kt{color:#d20f39}.chroma .na{color:#1e66f5}.chroma .nc{color:#df8e1d}.chroma .no{color:#df8e1d}.chroma .nd{color:#1e66f5;font-weight:700}.chroma .ni{color:#179299}.chroma .ne{color:#fe640b}.chroma .nl{color:#04a5e5}.chroma .nn{color:#fe640b}.chroma .nx{color:#4c4f69}.chroma .py{color:#fe640b}.chroma .nt{color:#8839ef}.chroma .nb{color:#04a5e5}.chroma .bp{color:#04a5e5}.chroma .nv{color:#dc8a78}.chroma .vc{color:#dc8a78}.chroma .vg{color:#dc8a78}.chroma .vi{color:#dc8a78}.chroma .vm{color:#dc8a78}.chroma .nf{color:#1e66f5}.chroma .fm{color:#1e66f5}.chroma .ld{color:#4c4f69}.chroma .s{color:#40a02b}.chroma .sa{color:#d20f39}.chroma .sb{color:#40a02b}.chroma .sc{color:#40a02b}.chroma .dl{color:#1e66f5}.chroma .sd{color:#9ca0b0}.chroma .s2{color:#40a02b}.chroma .se{color:#1e66f5}.chroma .sh{color:#9ca0b0}.chroma .si{color:#40a02b}.chroma .sx{color:#40a02b}.chroma .sr{color:#179299}.chroma .s1{color:#40a02b}.chroma .ss{color:#40a02b}.chroma .m{color:#fe640b}.chroma .mb{color:#fe640b}.chroma .mf{color:#fe640b}.chroma .mh{color:#fe640b}.chroma .mi{color:#fe640b}.chroma .il{color:#fe640b}.chroma .mo{color:#fe640b}.chroma .o{color:#04a5e5;font-weight:700}.chroma .ow{color:#04a5e5;font-weight:700}.chroma .or{color:#04a5e5;font-weight:700}.chroma .c{color:#9ca0b0;font-style:italic}.chroma .ch{color:#acb0be;font-style:italic}.chroma .cm{color:#9ca0b0;font-style:italic}.chroma .c1{color:#9ca0b0;font-style:italic}.chroma .cs{color:#9ca0b0;font-style:italic}.chroma .cp{color:#9ca0b0;font-style:italic}.chroma .cpf{color:#9ca0b0;font-weight:700;font-style:italic}.chroma .gd{color:#d20f39;background-color:#ccd0da}.chroma .ge{font-style:italic}.chroma .gr{color:#d20f39}.chroma .gh{color:#fe640b;font-weight:700}.chroma .gi{color:#40a02b;background-color:#ccd0da}.chroma .go{color:#4c4f69}.chroma .gp{color:#4c4f69}.chroma .gs{font-weight:700}.chroma .gu{color:#fe640b;font-weight:700}.chroma .gt{color:#d20f39}.chroma .gl{text-decoration:underline}@media(prefers-color-scheme:dark){.bg{color:#cdd6f4;background-color:#1e1e2e}.chroma{color:#cdd6f4;background-color:#1e1e2e;-webkit-text-size-adjust:none}.chroma .x{color:#cdd6f4}.chroma .err{color:#f38ba8}.chroma .cl{color:#cdd6f4}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#45475a}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f849c}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f849c}.chroma .line{display:flex}.chroma .k{color:#cba6f7}.chroma .kc{color:#fab387}.chroma .kd{color:#f38ba8}.chroma .kn{color:#94e2d5}.chroma .kp{color:#cba6f7}.chroma .kr{color:#cba6f7}.chroma .kt{color:#f38ba8}.chroma .na{color:#89b4fa}.chroma .nc{color:#f9e2af}.chroma .no{color:#f9e2af}.chroma .nd{color:#89b4fa;font-weight:700}.chroma .ni{color:#94e2d5}.chroma .ne{color:#fab387}.chroma .nl{color:#89dceb}.chroma .nn{color:#fab387}.chroma .nx{color:#cdd6f4}.chroma .py{color:#fab387}.chroma .nt{color:#cba6f7}.chroma .nb{color:#89dceb}.chroma .bp{color:#89dceb}.chroma .nv{color:#f5e0dc}.chroma .vc{color:#f5e0dc}.chroma .vg{color:#f5e0dc}.chroma .vi{color:#f5e0dc}.chroma .vm{color:#f5e0dc}.chroma .nf{color:#89b4fa}.chroma .fm{color:#89b4fa}.chroma .ld{color:#cdd6f4}.chroma .s{color:#a6e3a1}.chroma .sa{color:#f38ba8}.chroma .sb{color:#a6e3a1}.chroma .sc{color:#a6e3a1}.chroma .dl{color:#89b4fa}.chroma .sd{color:#6c7086}.chroma .s2{color:#a6e3a1}.chroma .se{color:#89b4fa}.chroma .sh{color:#6c7086}.chroma .si{color:#a6e3a1}.chroma .sx{color:#a6e3a1}.chroma .sr{color:#94e2d5}.chroma .s1{color:#a6e3a1}.chroma .ss{color:#a6e3a1}.chroma .m{color:#fab387}.chroma .mb{color:#fab387}.chroma .mf{color:#fab387}.chroma .mh{color:#fab387}.chroma .mi{color:#fab387}.chroma .il{color:#fab387}.chroma .mo{color:#fab387}.chroma .o{color:#89dceb;font-weight:700}.chroma .ow{color:#89dceb;font-weight:700}.chroma .or{color:#89dceb;font-weight:700}.chroma .c{color:#6c7086;font-style:italic}.chroma .ch{color:#585b70;font-style:italic}.chroma .cm{color:#6c7086;font-style:italic}.chroma .c1{color:#6c7086;font-style:italic}.chroma .cs{color:#6c7086;font-style:italic}.chroma .cp{color:#6c7086;font-style:italic}.chroma .cpf{color:#6c7086;font-weight:700;font-style:italic}.chroma .gd{color:#f38ba8;background-color:#313244}.chroma .ge{font-style:italic}.chroma .gr{color:#f38ba8}.chroma .gh{color:#fab387;font-weight:700}.chroma .gi{color:#a6e3a1;background-color:#313244}.chroma .go{color:#cdd6f4}.chroma .gp{color:#cdd6f4}.chroma .gs{font-weight:700}.chroma .gu{color:#fab387;font-weight:700}.chroma .gt{color:#f38ba8}.chroma .gl{text-decoration:underline}}