@font-face{font-family:ibm plex mono;src:url(../fonts/IBMPlexMono-Regular.woff2)format('woff2');font-weight:400;font-display:swap}@font-face{font-family:silkscreen;src:url(../fonts/Silkscreen-Regular.woff2)format('woff2');font-weight:400;font-display:swap}@font-face{font-family:silkscreen;src:url(../fonts/Silkscreen-Bold.woff2)format('woff2');font-weight:700;font-display:swap}@font-face{font-family:jetbrains mono;font-weight:400 700;font-display:swap;src:url(../fonts/jetbrains-mono-latin.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:jetbrains mono;font-weight:400 700;font-display:swap;src:url(../fonts/jetbrains-mono-latin-ext.woff2)format('woff2');unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--field:#0a0a0f;--field-rgb:10, 10, 15;--ink:#dfe0ea;--ink-dim:#9a9cb0;--ink-faint:#808298;--line:#262838;--line-bright:#363850;--accent:#a6e3a1;--accent-dim:#4a5c48;--glow-rgb:166, 227, 161;--frame-fill:rgba(var(--field-rgb), 0.9);--ctp-crust:#11111b;--ctp-text:#cdd6f4;--ctp-subtext:#9399b2;--ctp-overlay:#6c7086;--ctp-green:#a6e3a1;--ctp-yellow:#f9e2af;--ctp-peach:#fab387;--ctp-mauve:#cba6f7;--ctp-red:#f38ba8;--ctp-blue:#89b4fa;--ctp-teal:#94e2d5;--font-display:'Silkscreen', monospace;--font-body:'IBM Plex Mono', monospace;--font-code:'JetBrains Mono', 'IBM Plex Mono', monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:40px;--measure:68ch;--edge:clamp(24px, 6vmin, 80px)}*,*::before,*::after{box-sizing:border-box}html{margin:0;padding:0;overflow:hidden;width:100%;height:100%}body{margin:0;padding:0;overflow-x:hidden;overflow-y:auto;width:100%;height:100%;background-color:var(--field);color:var(--ink);font-family:var(--font-body)}.skip-link{position:absolute;left:-999px;top:var(--space-2);z-index:100;background:var(--field);color:var(--accent);border:1px solid var(--accent);padding:var(--space-2)var(--space-3);font-family:var(--font-body);font-size:13px;text-decoration:none}.skip-link:focus{left:var(--space-2)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#game-canvas{display:block;width:100vw;height:100vh;position:fixed;top:0;left:0;z-index:1;border:none;outline:none;touch-action:none}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeInUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}@keyframes sepGlow{0%,100%{opacity:.55;filter:drop-shadow(0 0 3px rgba(var(--glow-rgb),.4))}50%{opacity:.9;filter:drop-shadow(0 0 8px rgba(var(--glow-rgb),.7))}}@keyframes bootFlicker{0%{opacity:0}10%{opacity:.6}15%{opacity:.1}25%{opacity:.9}30%{opacity:.3}45%{opacity:1}55%{opacity:.7}100%{opacity:1}}.content-overlay.spawning-out{animation:spawnOut .32s ease-in both;pointer-events:none}@keyframes spawnOut{from{opacity:1;transform:scale(1);filter:blur(0)}to{opacity:0;transform:scale(.99);filter:blur(2px)}}.cursor{animation:blink 1.1s step-end infinite;color:var(--accent)}.content-overlay{position:fixed;top:0;left:0;width:100%;height:100vh;z-index:10;display:flex;flex-direction:column;align-items:center;gap:var(--space-6);padding:var(--edge);padding-bottom:64px;overflow-y:auto;overflow-x:hidden;pointer-events:none;font-family:var(--font-body)}.content-overlay.home-overlay{justify-content:center}.content-overlay>main{display:contents}#content:focus-visible{outline:none}.page-topbar{align-self:center;width:100%;max-width:var(--measure);display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:var(--space-4);border:1px solid var(--line);padding:var(--space-3)var(--space-4);background:rgba(var(--field-rgb),.72);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 0 24px rgba(var(--field-rgb),.5);animation:fadeInUp .32s ease-out both}.page-wordmark{pointer-events:auto;font-family:var(--font-display);font-weight:700;font-size:15px;line-height:1;letter-spacing:.06em;color:var(--ink);text-decoration:none;text-shadow:0 0 12px rgba(var(--glow-rgb),.16);transition:color .15s ease}.page-wordmark .prompt{color:var(--accent)}.page-wordmark:hover,.page-wordmark:focus-visible{color:var(--accent)}.masthead-nav{pointer-events:auto;display:flex;align-items:baseline;gap:1.2ch;font-family:var(--font-body);font-size:14px}.masthead-nav a{color:var(--ink-dim);text-decoration:none;border-bottom:1px solid transparent;transition:color .14s ease,border-color .14s ease}.masthead-nav a:hover,.masthead-nav a:focus-visible{color:var(--accent);border-bottom-color:var(--accent)}.masthead-nav .nav-sep{color:var(--line-bright)}.quiet-toggle{font-family:var(--font-body);font-size:13px;color:var(--ink-faint);background:0 0;border:none;padding:0;cursor:pointer;transition:color .14s ease}.quiet-toggle:hover,.quiet-toggle:focus-visible{color:var(--accent)}.quiet-toggle[aria-pressed=true]{color:var(--accent)}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.grid-frame,.man-page{pointer-events:auto;position:relative;border:1px solid var(--line);background:var(--frame-fill);width:100%;max-width:var(--measure);animation:fadeInUp .4s ease-out .1s both}.grid-frame{padding:clamp(20px,4vmin,40px)}.man-page{padding:clamp(24px,4vmin,44px)}.grid-frame::before,.man-page::before{content:attr(data-label);position:absolute;top:0;left:1.5ch;transform:translateY(-50%);background:var(--field);padding:0 .8ch;font-family:var(--font-body);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint)}.ident{max-width:min(640px,92vw)}.ident-name{font-family:var(--font-display);font-weight:700;font-size:clamp(24px,6.2vw,50px);line-height:1.12;color:var(--ink);margin:0;letter-spacing:.02em;text-shadow:0 0 18px rgba(var(--glow-rgb),.18);animation:bootFlicker .7s steps(1,end)both}.ident-name .prompt{color:var(--accent)}.ident-tag{font-family:var(--font-body);font-size:13px;color:var(--ink-dim);margin:.9rem 0 0;letter-spacing:.03em;animation:fadeIn .4s ease-out .7s both}.ident-links{display:flex;align-items:center;gap:var(--space-4);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--line)}.foot-link{pointer-events:auto;display:inline-flex;align-items:center;gap:.6ch;font-size:13px;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--accent-dim);transition:color .14s ease,border-color .14s ease}.foot-link:hover,.foot-link:focus-visible{color:var(--accent);border-bottom-color:var(--accent)}.foot-icon{width:14px;height:14px;flex-shrink:0}.posts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border-top:1px solid var(--line)}.post-row{pointer-events:auto;display:grid;grid-template-columns:2ch 1fr auto;align-items:baseline;gap:1ch;padding:.8rem .4ch;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink);transition:background .14s ease,padding-left .14s ease}.post-row:hover,.post-row:focus-visible{background:linear-gradient( 90deg,color-mix(in srgb,var(--accent) 10%,transparent) 0%,color-mix(in srgb,var(--accent) 4%,transparent) 45%,transparent 100% );padding-left:1.4ch;box-shadow:inset 3px 0 0 var(--accent),0 0 20px rgba(var(--glow-rgb),.14)}.post-row:focus-visible{outline:none}.post-row .prompt{color:var(--accent);user-select:none}.post-row-title{font-size:15px;color:var(--ink)}.post-row:hover .post-row-title,.post-row:focus-visible .post-row-title{color:var(--accent);text-shadow:0 0 12px rgba(var(--glow-rgb),.45)}.post-row-date{font-size:12px;color:var(--ink-faint);text-align:right;white-space:nowrap}.man-header{padding-bottom:var(--space-3)}.post-separator{display:flex;align-items:center;gap:var(--space-3);margin:var(--space-4)0 var(--space-6)}.sep-line{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--line-bright),transparent)}.sep-icon{color:var(--accent);flex-shrink:0;animation:sepGlow 3s ease-in-out infinite}.man-title{font-family:var(--font-display);font-size:clamp(22px,5vw,34px);font-weight:700;color:var(--ink);margin:0;letter-spacing:.02em;line-height:1.2;text-shadow:0 0 16px rgba(var(--glow-rgb),.16)}.post-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-3);margin-top:var(--space-3);font-family:var(--font-body);font-size:12px;color:var(--ink-faint)}.post-content{font-family:var(--font-body);font-size:15px;line-height:1.7;color:var(--ink-dim)}.post-content h2,.post-content h3,.post-content h4{font-family:var(--font-body);font-weight:600;color:var(--accent);letter-spacing:.12em;text-transform:uppercase;margin:var(--space-6)0 var(--space-2)}.post-content h2,.post-content h3{padding-left:var(--space-3);border-left:3px solid var(--accent)}.post-content h2{font-size:14px;text-shadow:0 0 8px rgba(var(--glow-rgb),.25)}.post-content h3{font-size:13px}.post-content h4{font-size:12px;color:var(--ink-dim)}.post-content p{margin:0 0 var(--space-4)}.post-content strong{color:var(--ink);font-weight:600}.post-content em{color:var(--ink);font-style:italic}.post-content a{color:var(--accent);text-decoration:none;border-bottom:1px dotted var(--accent-dim);transition:color .15s ease,border-color .15s ease}.post-content a:hover{color:var(--ink);border-bottom-color:var(--accent)}.post-content ul,.post-content ol{margin:0 0 var(--space-4);padding-left:1.6em}.post-content li{margin-bottom:var(--space-1)}.post-content ul li::marker{color:var(--accent)}.post-content ol li::marker{color:var(--ink-faint)}.post-content blockquote{border-left:2px solid var(--accent-dim);padding-left:var(--space-4);margin:var(--space-4)0;color:var(--ink-faint)}.post-content hr{border:none;height:16px;margin:var(--space-6)0;position:relative;background:linear-gradient(90deg,transparent,var(--line-bright))0/calc(50% - 18px)1px no-repeat,linear-gradient(90deg,var(--line-bright),transparent)100%/calc(50% - 18px)1px no-repeat}.post-content hr::after{content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:16px;height:16px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 5 5'%3E%3Crect x='2' y='0' width='1' height='1' fill='%23a6e3a1'/%3E%3Crect x='0' y='1' width='1' height='1' fill='%23a6e3a1'/%3E%3Crect x='2' y='1' width='1' height='1' fill='%23a6e3a1'/%3E%3Crect x='1' y='2' width='1' height='1' fill='%23a6e3a1'/%3E%3Crect x='2' y='2' width='1' height='1' fill='%23a6e3a1'/%3E%3C/svg%3E")50%/16px no-repeat;animation:sepGlow 3s ease-in-out infinite}.post-content img{max-width:100%;height:auto;border:1px solid var(--line)}.post-content code{font-family:var(--font-body);font-size:.9em;background:var(--ctp-crust);color:var(--ink);padding:.15em .4em;border:1px solid var(--line);border-radius:3px}.post-content pre{font-family:var(--font-code);background:var(--ctp-crust);border:1px solid var(--line);border-radius:4px;padding:var(--space-3);margin:var(--space-4)0;overflow-x:auto;line-height:1.55}.post-content pre code{font-family:var(--font-code);font-size:13px;background:0 0;border:none;padding:0;border-radius:0;color:var(--ink)}.post-content .highlight{margin:var(--space-4)0}.post-content .highlight pre{margin:0}.post-nav{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-4);margin-top:var(--space-8);padding-top:var(--space-4);border-top:1px solid var(--line)}.post-nav a{font-family:var(--font-body);font-size:13px;color:var(--accent);text-decoration:none;border-bottom:1px dotted var(--accent-dim);transition:color .15s ease,border-color .15s ease}.post-nav a:hover{color:var(--ink);border-bottom-color:var(--accent)}.tag-cloud{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tag-pill{pointer-events:auto;display:inline-flex;align-items:baseline;gap:2px;font-family:var(--font-body);font-size:13px;color:var(--accent);text-decoration:none;border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);border-radius:999px;padding:2px 10px;transition:background .15s ease,border-color .2s ease,color .15s ease}.tag-pill:hover,.tag-pill:focus-visible{background:color-mix(in srgb,var(--accent) 12%,transparent);border-color:var(--accent);color:var(--ink)}.tag-pill .tag-hash{color:var(--accent-dim)}.tag-pill .tag-sep{color:var(--line-bright);margin:0 .2ch 0 .5ch}.tag-pill .tag-count{color:var(--ink-dim);font-size:12px}.status-line{position:fixed;bottom:0;left:0;right:0;padding:10px var(--edge);font-family:var(--font-body);font-size:12px;color:var(--ink-faint);display:flex;align-items:center;gap:12px;z-index:10;pointer-events:none;background:linear-gradient(to top,rgba(var(--field-rgb),.85) 0%,transparent 100%);animation:fadeIn 1s ease-out .8s both}.status-line b{color:var(--ink-dim);font-weight:400}.status-sep{color:var(--line-bright)}.status-hint{margin-left:auto;color:var(--ink-faint)}.status-hint .cursor{color:var(--ink-faint)}.status-social{display:inline-flex;align-items:center;gap:var(--space-3);pointer-events:auto}.status-social a{color:var(--ink-faint);transition:color .14s ease}.status-social a:hover,.status-social a:focus-visible{color:var(--accent)}.status-social svg{width:14px;height:14px;display:block}.error-frame{max-width:480px;text-align:center}.error-frame h1{font-family:var(--font-display);font-weight:700;font-size:clamp(28px,8vw,52px);color:var(--ink);margin:0 0 var(--space-3);text-shadow:0 0 18px rgba(var(--glow-rgb),.18)}.error-frame h1 .prompt{color:var(--accent)}.error-frame p{color:var(--ink-dim);margin:0 0 var(--space-4)}.error-frame a{color:var(--accent);text-decoration:none;border-bottom:1px dotted var(--accent-dim)}.error-frame a:hover{color:var(--ink);border-bottom-color:var(--accent)}@media(max-width:600px){.post-row{grid-template-columns:2ch 1fr}.post-row-date{display:none}.status-hint{display:none}}@media(prefers-reduced-motion:reduce){.grid-frame,.man-page,.page-topbar,.ident-name,.ident-tag,.status-line,.content-overlay.spawning-out{animation:none!important;opacity:1;transform:none;filter:none}.cursor{animation:none}.post-row:hover{padding-left:.4ch}.sep-icon,.post-content hr::after{animation:none}}html[data-quiet] .grid-frame,html[data-quiet] .man-page,html[data-quiet] .page-topbar,html[data-quiet] .ident-name,html[data-quiet] .ident-tag,html[data-quiet] .status-line{animation:none!important;opacity:1;transform:none;filter:none}html[data-quiet] .cursor,html[data-quiet] .sep-icon,html[data-quiet] .post-content hr::after{animation:none}@media(forced-colors:active){.grid-frame,.man-page,.post-row,.tag-pill{border:1px solid CanvasText}a:focus-visible,button:focus-visible{outline:3px solid Highlight}}