@charset "UTF-8";.skip-to-content{position:absolute;top:-40px;left:0;background:#000;color:#fff;padding:8px 16px;text-decoration:none;z-index:100;border-radius:0 0 4px 0}.skip-to-content:focus{top:0;outline:2px solid #fff;outline-offset:2px}:root{--fontSize-root:14px}html{font-size:var(--fontSize-root)}.prose{font-size:var(--fontSize-root)}@media screen and (max-width:768px){:root{--fontSize-root:16px}}.TableOfContents{padding:10px;background:#f9f9f9;border-radius:5px}.TableOfContents h2{margin:0 0 10px;font-size:1.2em;color:#333}.TableOfContents ul{padding-left:20px;list-style-type:none}.TableOfContents ul ul{padding-left:20px}.TableOfContents a{color:#666;text-decoration:none}.TableOfContents a:hover{color:#333;text-decoration:underline}.nested-links a{overflow-wrap:break-word}table{border-collapse:collapse;width:100%}th,td{border:1px solid #ddd;padding:8px;text-align:center}tr:nth-child(even){background-color:#e8e8e8}th{padding-top:12px;padding-bottom:12px;text-align:center;background-color:#333;color:#fff}@font-face{.c64Font{font-family:c64_pro_mono-style;src:url(/ananke/fonts/C64_Pro_Mono-STYLE.woff2)}}figcaption{font-size:.8em;font-style:italic;text-align:center;margin-top:.5em;margin-bottom:.5em}.pv6{padding-top:2rem;padding-bottom:2rem}.pv6-l{padding-top:0;padding-bottom:2rem}.ph5-l{padding-top:0;padding-bottom:0}.pa4-ns{padding:0}#dark-mode-toggle{transition:all .3s ease;border-radius:4px;cursor:pointer}#dark-mode-toggle:hover{background-color:rgba(255,255,255,.1);transform:scale(1.05)}#dark-mode-toggle:focus{outline:2px solid rgba(255,255,255,.5);outline-offset:2px}[data-theme=dark] body{background-color:#111!important;color:#e0e0e0!important}[data-theme=dark] .bg-near-white{background-color:#111!important}[data-theme=dark] .bg-white{background-color:#1a1a1a!important}[data-theme=dark] .bg-light-gray{background-color:#2a2a2a!important}[data-theme=dark] .near-black,[data-theme=dark] .dark-gray,[data-theme=dark] .mid-gray,[data-theme=dark] .black{color:#e0e0e0!important}[data-theme=dark] .gray,[data-theme=dark] .silver,[data-theme=dark] .light-silver{color:#b0b0b0!important}[data-theme=dark] .link,[data-theme=dark] a{color:#66b3ff!important}[data-theme=dark] .link:hover,[data-theme=dark] a:hover{color:#80c7ff!important}[data-theme=dark] article,[data-theme=dark] .nested-copy-line-height,[data-theme=dark] .nested-links{color:#e0e0e0!important}[data-theme=dark] h1,[data-theme=dark] h2,[data-theme=dark] h3,[data-theme=dark] h4,[data-theme=dark] h5,[data-theme=dark] h6{color:#f0f0f0!important}code{background-color:rgba(175,184,193,.2);padding:.2em .4em;margin:0;font-size:85%;border-radius:6px;font-family:ui-monospace,SFMono-Regular,sf mono,Menlo,Consolas,liberation mono,monospace;color:#1f2328}.highlight code,.chroma code{background-color:initial!important;padding:0!important;font-size:13px!important}[data-theme=dark] code{background-color:rgba(110,118,129,.4)!important;color:#c9d1d9!important}[data-theme=dark] .highlight code,[data-theme=dark] .chroma code{background-color:initial!important}body,.bg-near-white,.bg-white,.bg-light-gray{transition:background-color .3s ease,color .3s ease}.highlight,.chroma,pre:has(>code[class*=language-]){position:relative;background-color:#f6f8fa!important;border-radius:6px;padding:16px;margin:1em 0;overflow-x:auto;border:1px solid #d0d7de}pre:has(>code[class*=language-]){font-family:ui-monospace,SFMono-Regular,sf mono,Menlo,Consolas,liberation mono,monospace;font-size:13px;line-height:1.6}pre:has(>code[class*=language-]) code{color:#24292f!important;background:0 0!important;font-family:ui-monospace,SFMono-Regular,sf mono,Menlo,Consolas,liberation mono,monospace;font-size:13px}.highlight pre,.chroma pre{margin:0!important;padding:0!important;background:0 0!important;border:none!important;box-shadow:none!important;font-family:ui-monospace,SFMono-Regular,sf mono,Menlo,Consolas,liberation mono,monospace;font-size:13px;line-height:1.6;white-space:pre;word-wrap:normal}.highlight code,.chroma code{background:0 0!important;padding:0!important;color:#1f2328!important;font-family:ui-monospace,SFMono-Regular,sf mono,Menlo,Consolas,liberation mono,monospace;font-size:13px}.highlight .chroma,.chroma{color:#1f2328}.chroma .err,.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .kt,.chroma .n,.chroma .na,.chroma .nb,.chroma .bp,.chroma .nc,.chroma .no,.chroma .nd,.chroma .ni,.chroma .ne,.chroma .nf,.chroma .fm,.chroma .nl,.chroma .nn,.chroma .nx,.chroma .py,.chroma .nt,.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .vm,.chroma .l,.chroma .ld,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo,.chroma .o,.chroma .ow,.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:#24292f!important}[data-theme=dark] .highlight,[data-theme=dark] .chroma,[data-theme=dark] pre:has(>code[class*=language-]){background-color:#161b22!important;border-color:#30363d;color:#e6edf3}[data-theme=dark] pre:has(>code[class*=language-]) code{color:#e6edf3!important}[data-theme=dark] .highlight code,[data-theme=dark] .chroma code{color:#e6edf3!important}[data-theme=dark] .chroma .err,[data-theme=dark] .chroma .k,[data-theme=dark] .chroma .kc,[data-theme=dark] .chroma .kd,[data-theme=dark] .chroma .kn,[data-theme=dark] .chroma .kp,[data-theme=dark] .chroma .kr,[data-theme=dark] .chroma .kt,[data-theme=dark] .chroma .n,[data-theme=dark] .chroma .na,[data-theme=dark] .chroma .nb,[data-theme=dark] .chroma .bp,[data-theme=dark] .chroma .nc,[data-theme=dark] .chroma .no,[data-theme=dark] .chroma .nd,[data-theme=dark] .chroma .ni,[data-theme=dark] .chroma .ne,[data-theme=dark] .chroma .nf,[data-theme=dark] .chroma .fm,[data-theme=dark] .chroma .nl,[data-theme=dark] .chroma .nn,[data-theme=dark] .chroma .nx,[data-theme=dark] .chroma .py,[data-theme=dark] .chroma .nt,[data-theme=dark] .chroma .nv,[data-theme=dark] .chroma .vc,[data-theme=dark] .chroma .vg,[data-theme=dark] .chroma .vi,[data-theme=dark] .chroma .vm,[data-theme=dark] .chroma .l,[data-theme=dark] .chroma .ld,[data-theme=dark] .chroma .s,[data-theme=dark] .chroma .sa,[data-theme=dark] .chroma .sb,[data-theme=dark] .chroma .sc,[data-theme=dark] .chroma .dl,[data-theme=dark] .chroma .sd,[data-theme=dark] .chroma .s2,[data-theme=dark] .chroma .se,[data-theme=dark] .chroma .sh,[data-theme=dark] .chroma .si,[data-theme=dark] .chroma .sx,[data-theme=dark] .chroma .sr,[data-theme=dark] .chroma .s1,[data-theme=dark] .chroma .ss,[data-theme=dark] .chroma .m,[data-theme=dark] .chroma .mb,[data-theme=dark] .chroma .mf,[data-theme=dark] .chroma .mh,[data-theme=dark] .chroma .mi,[data-theme=dark] .chroma .il,[data-theme=dark] .chroma .mo,[data-theme=dark] .chroma .o,[data-theme=dark] .chroma .ow,[data-theme=dark] .chroma .c,[data-theme=dark] .chroma .ch,[data-theme=dark] .chroma .cm,[data-theme=dark] .chroma .c1,[data-theme=dark] .chroma .cs,[data-theme=dark] .chroma .cp,[data-theme=dark] .chroma .cpf{color:#e6edf3!important}.copy-code-button{position:absolute;top:8px;right:8px;background-color:#f6f8fa;border:1px solid #d0d7de;border-radius:6px;padding:5px 12px;font-size:12px;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,sans-serif;color:#1f2328;cursor:pointer;opacity:0;transition:all .2s ease;z-index:10;font-weight:500}.highlight:hover .copy-code-button{opacity:1}.copy-code-button:hover{background-color:#f3f4f6;border-color:#d0d7de}.copy-code-button:active{background-color:#e5e7eb;transform:scale(.97)}[data-theme=dark] .copy-code-button{background-color:#21262d;border-color:#30363d;color:#c9d1d9}[data-theme=dark] .copy-code-button:hover{background-color:#30363d;border-color:#444c56}[data-theme=dark] table{color:#e0e0e0}[data-theme=dark] th,[data-theme=dark] td{border-color:#444}[data-theme=dark] tr:nth-child(even){background-color:rgba(255,255,255,5%)!important}[data-theme=dark] th{background-color:#222!important;color:#f0f0f0!important}.syntax-keyword{color:#0550ae;font-weight:600}.syntax-string{color:#0a3069}.syntax-string-var{color:#953800;font-weight:500}.syntax-number{color:#0550ae}.syntax-line-number{color:#6639ba;font-weight:600;margin-right:.5em}.syntax-comment{color:#57606a;font-style:italic}.syntax-opcode{color:#cf222e;font-weight:600;text-transform:uppercase}.syntax-directive{color:#8250df;font-weight:600}.syntax-label{color:#0550ae;font-weight:700}.syntax-hex{color:#0969da;font-weight:600;background-color:rgba(9,105,218,.1);padding:0 3px;border-radius:3px}.syntax-binary{color:#1a7f37;font-weight:600}.syntax-register{color:#953800;font-weight:600}[data-theme=dark] .syntax-keyword{color:#79c0ff;font-weight:600}[data-theme=dark] .syntax-string{color:#a5d6ff}[data-theme=dark] .syntax-string-var{color:#ffa657;font-weight:500}[data-theme=dark] .syntax-number{color:#79c0ff}[data-theme=dark] .syntax-line-number{color:#d2a8ff;font-weight:600;margin-right:.5em}[data-theme=dark] .syntax-comment{color:#8b949e;font-style:italic}[data-theme=dark] .syntax-opcode{color:#ff7b72;font-weight:600}[data-theme=dark] .syntax-directive{color:#d2a8ff;font-weight:600}[data-theme=dark] .syntax-label{color:#79c0ff;font-weight:700}[data-theme=dark] .syntax-hex{color:#79c0ff;font-weight:600;background-color:rgba(121,192,255,.15);padding:0 3px;border-radius:3px}[data-theme=dark] .syntax-binary{color:#7ee787;font-weight:600}[data-theme=dark] .syntax-register{color:#ffa657;font-weight:600}@font-face{font-family:c64;src:url(/shared/fonts/C64_Pro-STYLE.woff2)format("woff2");font-display:swap}@font-face{font-family:c64mono;src:url(/shared/fonts/C64_Pro_Mono-STYLE.woff2)format("woff2");font-display:swap}:root{--fdisp:'Inter',system-ui,-apple-system,Segoe UI,sans-serif;--fbody:'Inter',system-ui,-apple-system,Segoe UI,sans-serif;--fmono:'DM Mono',ui-monospace,SFMono-Regular,Menlo,monospace;--fretro:'C64',var(--fmono);--fretromono:'C64Mono',var(--fmono);--fcode:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,monospace;--iap-max:920px}[data-theme=dark]{--bg:#0d1117;--bg2:#161b22;--bg3:#21262d;--border:#30363d;--border2:#3d444d;--text:#e6edf3;--text2:#9198a1;--text3:#5b636d;--accent:#8b9fff;--accent2:#b3c0ff;--hl-fill:#6c5eb5;--hl-text:#0d1117;--row-alt:#11161d}[data-theme=light]{--bg:#ffffff;--bg2:#f6f8fa;--bg3:#eaeef2;--border:#d0d7de;--border2:#bcc4cd;--text:#1f2328;--text2:#59636e;--text3:#8c959f;--accent:#4a3fb5;--accent2:#352879;--hl-fill:#6c5eb5;--hl-text:#ffffff;--row-alt:#f6f8fa}html[data-theme] body{background:var(--bg)!important;color:var(--text)!important;font-family:var(--fbody);transition:background .25s,color .25s}.iap-wrap{max-width:var(--iap-max);margin:0 auto;padding:0 32px}@media(max-width:560px){.iap-wrap{padding:0 16px}}.iap-bar{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);transition:background .25s,border-color .25s}.iap-bar-in{max-width:var(--iap-max);margin:0 auto;padding:11px 32px;display:flex;align-items:center;justify-content:space-between;gap:16px}@media(max-width:600px){.iap-bar-in{padding:10px 16px;flex-direction:column;align-items:flex-start;gap:10px}.iap-nav{width:100%;gap:14px;flex-wrap:wrap}}.iap-wordmark{display:inline-flex;align-items:center;gap:9px;text-decoration:none;color:var(--text)}.iap-wordmark img{height:26px;width:auto;display:block}.iap-wordmark .mk{font-family:var(--fretro);font-size:12px;letter-spacing:.02em;color:var(--text)}.iap-wordmark .mk .dot{color:var(--accent)}.iap-nav{display:flex;align-items:center;gap:18px}.iap-nav a{font-family:var(--fmono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text2);text-decoration:none;transition:color .15s}.iap-nav a:hover{color:var(--accent)}#dark-mode-toggle{display:inline-flex;align-items:center;justify-content:center;background:var(--bg3);color:var(--text2);border:1px solid var(--border);border-radius:5px;padding:5px 7px;cursor:pointer;line-height:0;transition:all .15s}#dark-mode-toggle:hover{color:var(--accent);border-color:var(--accent);background:var(--bg3)}#dark-mode-toggle svg{width:16px;height:16px}.dn{display:none}.iap-pagehead{max-width:var(--iap-max);margin:0 auto;padding:40px 32px 8px}@media(max-width:560px){.iap-pagehead{padding:28px 16px 4px}}.iap-eyebrow{font-family:var(--fretromono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:12px}.iap-pagehead h1{font-family:var(--fretro);font-weight:400;font-size:clamp(20px,3.6vw,30px);line-height:1.35;letter-spacing:.01em;color:var(--text);margin:0}.iap-pagehead .sub{font-family:var(--fbody);margin-top:14px;font-size:14px;line-height:1.65;color:var(--text2);max-width:640px}.iap-post{max-width:760px;margin:0 auto;padding:38px 32px 24px}@media(max-width:560px){.iap-post{padding:26px 16px 16px}}.iap-post .iap-eyebrow{margin-bottom:14px}.iap-title{font-family:var(--fretro);font-weight:400;font-size:clamp(19px,3.4vw,29px);line-height:1.4;letter-spacing:.01em;color:var(--text);margin:0 0 16px}.iap-cursor{display:inline-block;width:.5em;height:1em;background:var(--accent);vertical-align:-1px;margin-left:.1em;animation:iapblink 1.06s steps(1)infinite}@keyframes iapblink{50%{opacity:0}}.iap-meta{font-family:var(--fmono);font-size:11px;color:var(--text3);letter-spacing:.03em;display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-bottom:24px}.iap-meta .sym{color:var(--accent)}.iap-meta a{color:var(--text3);text-decoration:none}.iap-meta a:hover{color:var(--accent)}.iap-feat{display:block;width:100%;border:1px solid var(--border);border-radius:4px;margin:0 0 8px;background:var(--bg2)}.iap-figcap{font-family:var(--fbody);font-size:12.5px;font-style:italic;color:var(--text2);text-align:center;margin:0 0 30px;line-height:1.5}.iap-body{font-family:var(--fbody);color:var(--text);font-size:16.5px;line-height:1.72}.iap-body p,.iap-body ul,.iap-body ol,.iap-body blockquote{margin:0 0 20px}.iap-body a{color:var(--accent);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--accent) 38%,transparent)}.iap-body a:hover{border-color:var(--accent)}.iap-body h2{font-family:var(--fretro);font-weight:400;font-size:18px;line-height:1.4;letter-spacing:.01em;color:var(--text);margin:38px 0 14px}.iap-body h3{font-family:var(--fdisp);font-weight:600;font-size:18px;color:var(--text);margin:30px 0 12px}.iap-body h4{font-family:var(--fdisp);font-weight:600;font-size:15px;color:var(--text);margin:24px 0 10px}.iap-body img{max-width:100%;height:auto;border-radius:4px}.iap-body blockquote{border-left:3px solid var(--accent);padding-left:16px;color:var(--text2);font-style:italic}.iap-body figure{margin:0 0 26px}.iap-body figcaption{font-family:var(--fbody);font-size:12.5px;font-style:italic;color:var(--text2);text-align:center;margin-top:8px;line-height:1.5}.iap-body pre,.iap-body code{font-family:var(--fcode)}.iap-body .TableOfContents,.bg-light-gray.pa3{background:var(--bg2)!important;border:1px solid var(--border);border-radius:6px}.iap-post .tags,.iap-post .ttags{margin-top:28px}.iap-listhead{max-width:var(--iap-max);margin:0 auto;padding:8px 32px 0}@media(max-width:560px){.iap-listhead{padding:4px 16px 0}}.iap-grouplabel{font-family:var(--fretromono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:34px 0 14px}.iap-cards{max-width:var(--iap-max);margin:0 auto;padding:0 32px 8px;display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px}@media(max-width:560px){.iap-cards{padding:0 16px 8px;grid-template-columns:1fr}}.iap-card{display:flex;flex-direction:column;background:var(--bg2);border:1px solid var(--border);border-radius:4px;overflow:hidden;text-decoration:none;color:var(--text);transition:border-color .15s,transform .15s,background .15s}.iap-card:hover{border-color:var(--accent);transform:translateY(-2px);background:var(--bg2)}.iap-card .thumb{width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--bg3);border-bottom:1px solid var(--border);display:block}.iap-card .cbody{padding:14px 16px 16px;display:flex;flex-direction:column;flex:1}.iap-card .ceyebrow{font-family:var(--fretromono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-bottom:9px}.iap-card .ct{font-family:var(--fdisp);font-size:15px;font-weight:600;line-height:1.32;color:var(--text);margin-bottom:8px}.iap-card .cd{font-family:var(--fbody);font-size:12.5px;line-height:1.55;color:var(--text2)}.iap-card .cmeta{font-family:var(--fmono);margin-top:auto;padding-top:11px;font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--text3)}.iap-morelist{max-width:var(--iap-max);margin:0 auto;padding:8px 32px 0}@media(max-width:560px){.iap-morelist{padding:8px 16px 0}}.iap-morelist a{color:var(--accent);text-decoration:none}.iap-morelist a:hover{text-decoration:underline}.iap-pager{max-width:var(--iap-max);margin:0 auto;padding:24px 32px 8px;display:flex;gap:12px;font-family:var(--fmono);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.iap-pager a{color:var(--accent);text-decoration:none;border:1px solid var(--border);border-radius:4px;padding:6px 12px}.iap-pager a:hover{border-color:var(--accent)}.iap-post aside{margin-top:40px}.iap-tags{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:28px 0 0;padding:0}.iap-tags li{margin:0}.iap-tags a{display:inline-block;font-family:var(--fmono);font-size:11px;letter-spacing:.04em;color:var(--text2);text-decoration:none;border:1px solid var(--border);border-radius:4px;padding:4px 10px;transition:border-color .15s,color .15s}.iap-tags a:hover{border-color:var(--accent);color:var(--accent)}.iap-share{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:36px 0 0;font-family:var(--fmono);font-size:12px}.iap-share-label{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text3)}.iap-share a{color:var(--accent);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--accent) 35%,transparent)}.iap-share a:hover{border-color:var(--accent)}.iap-toc{background:var(--bg2);border:1px solid var(--border);border-radius:4px;padding:14px 18px;margin:0 0 26px}.iap-toc-title{font-family:var(--fretromono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin:0 0 8px}.iap-toc ul{margin:0;padding-left:18px}.iap-toc li{margin:3px 0}.iap-toc a{color:var(--accent);text-decoration:none}.iap-toc a:hover{text-decoration:underline}.iap-related{margin-top:40px;border-top:1px solid var(--border);padding-top:8px}.iap-related .iap-grouplabel{margin-top:18px}.iap-footer{margin-top:64px;border-top:1px solid var(--border);background:var(--bg)}.iap-footer-in{max-width:var(--iap-max);margin:0 auto;padding:20px 32px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;font-family:var(--fmono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text3)}.iap-footer-links{display:flex;gap:16px;flex-wrap:wrap}.iap-footer-links a{color:var(--text2);text-decoration:none}.iap-footer-links a:hover{color:var(--accent)}@media(max-width:560px){.iap-footer-in{padding:18px 16px}}