@font-face{font-family:"Press Start 2P";src:url(/c64/fonts/PressStart2P-Regular.ttf)format("truetype");font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/c64/fonts/IBMPlexMono-Regular.ttf)format("truetype");font-weight:400;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/c64/fonts/IBMPlexMono-Italic.ttf)format("truetype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/c64/fonts/IBMPlexMono-SemiBold.ttf)format("truetype");font-weight:600;font-display:swap}:root{--c0:#000;--c1:#fff;--c2:#68372b;--c3:#70a4b2;--c4:#6f3d86;--c5:#588d43;--c6:#352879;--c7:#b8c76f;--c8:#6f4f25;--c9:#433900;--c10:#9a6759;--c11:#444;--c12:#6c6c6c;--c13:#9ad284;--c14:#6c5eb5;--c15:#959595;--border:var(--c14);--bg:var(--c6);--ink:var(--c1);--accent:var(--c7);--accent-2:var(--c3);--focus:var(--c7);--beige:#dcd2b8;--beige-2:#c9bd9e;--beige-edge:#9c9175;--label-ink:#2a2118;--cap:#4a3a2f;--cap-top:#5e4b3e;--cap-ink:#f1ead8;--bw:clamp(10px, 3.2vw, 44px);--pix:"Press Start 2P", ui-monospace, monospace;--mono:"IBM Plex Mono", ui-monospace, "Cascadia Mono", monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{background:var(--border);transition:background-color .25s}html,body{margin:0}body{min-height:100svh;padding:var(--bw);background:var(--border);color:var(--ink);font:16px/1.6 var(--mono);transition:background-color .25s;overflow-x:hidden}[hidden]{display:none!important}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}::selection{background:var(--c7);color:var(--c0)}a{color:var(--accent)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip{z-index:99;background:var(--c7);color:var(--c0);font-family:var(--pix);padding:8px 12px;font-size:12px;position:absolute;top:0;left:-9999px}.skip:focus{top:8px;left:8px}#screen{min-height:calc(100svh - 2 * var(--bw));background:var(--bg);flex-direction:column;transition:background-color .25s;display:flex;position:relative;overflow:clip}body.vignette #screen:after{content:"";pointer-events:none;box-shadow:inset 0 0 calc(var(--bw) * 2.4) #00000073;z-index:30;position:absolute;inset:0}.status{font-family:var(--pix);border-bottom:2px solid color-mix(in srgb, var(--ink) 18%, transparent);z-index:40;flex-wrap:wrap;align-items:center;gap:12px;padding:12px clamp(12px,2.4vw,28px);font-size:11px;line-height:1.6;display:flex;position:relative}.status .where{flex-wrap:wrap;flex:260px;align-items:center;gap:12px;min-width:0;display:flex}.status .where .loc{color:var(--accent-2);letter-spacing:.02em}.fkeys{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.key{--cap-h:4px;appearance:none;background:linear-gradient(var(--cap-top), var(--cap));min-height:40px;color:var(--cap-ink);font-family:var(--pix);letter-spacing:.02em;text-transform:uppercase;box-shadow:0 var(--cap-h) 0 #261d17, 0 calc(var(--cap-h) + 2px) 6px #00000059, inset 0 1px 0 #ffffff24;cursor:pointer;white-space:nowrap;border:0;border-radius:4px;justify-content:center;align-items:center;gap:8px;padding:8px 14px;font-size:11px;line-height:1.3;text-decoration:none;transition:transform 60ms,box-shadow 60ms,filter .1s;display:inline-flex;transform:translateY(0)}.key:hover{filter:brightness(1.12)}.key:active,.key[aria-pressed=true]{transform:translateY(3px);box-shadow:0 1px #261d17,inset 0 1px #ffffff1a}.key.fn{background:linear-gradient(#e6ddc6, var(--beige-2));color:var(--label-ink);box-shadow:0 var(--cap-h) 0 var(--beige-edge), 0 6px 6px #0000004d, inset 0 1px 0 #fff8}.key.fn:active,.key.fn[aria-pressed=true]{box-shadow:0 1px 0 var(--beige-edge)}.key.big{min-height:56px;padding:14px 22px;font-size:clamp(12px,1.6vw,16px)}.key.light{background:linear-gradient(var(--c1), #d9d9d9);color:var(--c6);box-shadow:0 var(--cap-h) 0 #8e8aa8, 0 6px 8px #00000059}.key small{opacity:.75;font-size:9px}.key:disabled{opacity:.5;cursor:default}.pop{width:min(360px, calc(100vw - 2 * var(--bw) - 24px));background:var(--beige);color:var(--label-ink);box-shadow:0 10px 0 var(--beige-edge), 0 18px 40px #00000073;font:14px/1.5 var(--mono);z-index:60;border-radius:6px;padding:16px;position:absolute;top:calc(100% + 6px);right:clamp(12px,2.4vw,28px)}.pop h3{font:11px/1.4 var(--pix);margin:0 0 12px}.pop label.tog{cursor:pointer;align-items:center;gap:10px;padding:6px 0;display:flex}.pop input[type=checkbox]{width:20px;height:20px;accent-color:var(--c6)}.pop .ctl-group{margin-top:10px}.pop .note{opacity:.8;margin:10px 0 0;font-size:12px}main#scenes{flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.scene{flex-direction:column;flex:1;min-width:0;padding:clamp(14px,2.6vw,36px) clamp(14px,2.6vw,36px) 24px;display:flex}.scene:focus{outline:none}.loading-line{pointer-events:none;z-index:20;background:repeating-linear-gradient(to bottom, var(--c2) 0 7px, var(--c3) 7px 13px, var(--c7) 13px 18px, var(--c4) 18px 25px, var(--c5) 25px 31px, var(--c6) 31px 38px);opacity:0;height:100%;position:absolute;top:0;left:0;right:0}.loading-line.on{animation:.45s cubic-bezier(.3,.1,.4,1) both tape}@keyframes tape{0%{opacity:.85;clip-path:inset(0 0 100%)}45%{opacity:.85;clip-path:inset(0)}to{opacity:0;clip-path:inset(100% 0 0)}}body.reduce .loading-line.on{animation:.25s both fade}@keyframes fade{0%{opacity:.5}to{opacity:0}}.room{grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr);align-items:start;gap:clamp(18px,2.6vw,40px);display:grid}.room-main{flex-direction:column;gap:18px;min-width:0;display:flex}.stage{min-width:0;position:relative}.controls{flex-wrap:wrap;align-items:center;gap:12px 18px;display:flex}@media (max-width:900px){.room{grid-template-columns:minmax(0,1fr)}}.crt{background:#0c0a08;border-radius:14px;padding:clamp(8px,1.4vw,18px);position:relative;box-shadow:inset 0 0 0 2px #2a221b,0 8px #1a1410,0 16px 34px #00000080}.crt canvas{width:100%;height:auto;image-rendering:pixelated;image-rendering:crisp-edges;background:var(--c0);border-radius:6px;display:block}body.par .crt canvas{aspect-ratio:299.7/200!important}.crt:after{content:"";pointer-events:none;border-radius:6px;position:absolute;inset:clamp(8px,1.4vw,18px)}body.scanlines .crt:after{background:repeating-linear-gradient(#0000 0 2px,#00000038 2px 3px)}body.glow .crt canvas{box-shadow:0 0 22px color-mix(in srgb, var(--c14) 45%, transparent);filter:saturate(1.08)contrast(1.03)}body.vignette .crt:before{content:"";pointer-events:none;z-index:1;border-radius:6px;position:absolute;inset:clamp(8px,1.4vw,18px);box-shadow:inset 0 0 40px #00000080}.placard{background:var(--beige);color:var(--label-ink);box-shadow:0 8px 0 var(--beige-edge), 0 16px 32px #00000059;font:15px/1.65 var(--mono);border-radius:6px;padding:22px 22px 26px;position:relative}.placard:before{content:"";background:linear-gradient(to right, var(--c2) 0 20%, var(--c8) 20% 40%, var(--c7) 40% 60%, var(--c5) 60% 80%, var(--c6) 80%);border-radius:6px 6px 0 0;height:8px;margin:-22px -22px 18px;display:block}.placard-kicker{font:10px/1.6 var(--pix);color:#6a5c45;letter-spacing:.04em;margin:0 0 10px}.placard-title{font:clamp(15px, 1.6vw, 19px)/1.4 var(--pix);margin:0 0 14px}.placard-lede{margin:0 0 14px}.placard p{margin:0 0 12px}.placard h3{font:11px/1.5 var(--pix);margin:20px 0 8px}.placard ul{margin:0 0 12px;padding-left:1.2em}.placard code,.placard kbd{font-family:var(--mono);background:#0001;border-radius:3px;padding:0 4px;font-weight:600}.placard .tag{font:9px/1.4 var(--pix);background:var(--label-ink);color:var(--beige);border-radius:3px;margin:0 6px 6px 0;padding:4px 6px;display:inline-block}.placard .tag.fiction{background:var(--c4);color:#fff}.placard .tag.fact{background:var(--c5);color:#fff}.placard .tag.browser{background:var(--c6);color:#fff}.placard a{color:var(--c6)}.ctl{font:10px/1.4 var(--pix);grid-template-columns:auto minmax(100px,1fr) 4.5em;align-items:center;gap:10px;min-width:min(100%,290px);display:grid}.ctl label{white-space:nowrap}.ctl-val{text-align:right;font-family:var(--pix);color:var(--accent);font-size:10px}.placard .ctl-val,.pop .ctl-val{color:var(--c6)}input[type=range]{width:100%;height:28px;accent-color:var(--c7);cursor:pointer;background:0 0}.ctl-group{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.ctl-label{font:10px/1.4 var(--pix);margin-right:6px}.chip{appearance:none;border:2px solid color-mix(in srgb, currentColor 45%, transparent);color:inherit;font:10px/1.2 var(--pix);cursor:pointer;background:0 0;border-radius:3px;min-height:36px;padding:9px 10px}.chip[aria-pressed=true]{background:var(--c7);color:var(--c0);border-color:var(--c7)}.pop .chip[aria-pressed=true],.placard .chip[aria-pressed=true]{background:var(--c6);color:#fff;border-color:var(--c6)}.touchpad{-webkit-user-select:none;user-select:none;touch-action:none;justify-content:space-between;gap:10px;display:none}.touchpad .key{min-width:64px;min-height:60px;font-size:14px}@media (pointer:coarse){.touchpad{display:flex}}body.show-touch .touchpad{display:flex}.term{z-index:45;background:color-mix(in srgb, var(--bg) 92%, #000);border-top:2px solid color-mix(in srgb, var(--ink) 18%, transparent);font-family:var(--pix);padding:10px clamp(12px,2.4vw,28px) 12px;font-size:12px;line-height:1.8;position:sticky;bottom:0}.term-out{white-space:pre-wrap;word-break:break-word;max-height:5.4em;color:var(--ink);margin:0 0 6px;overflow-y:auto}.term-out:empty{display:none}.term:focus-within .term-out{max-height:11.5em}.term-out .err{color:var(--c7)}.term-out .ok{color:var(--c13)}.term-out .dim{color:var(--c3)}.term-row{align-items:center;gap:10px;display:flex}.term-row label{color:var(--accent-2);white-space:nowrap}.term input{min-width:0;color:var(--ink);font-family:var(--pix);text-transform:uppercase;caret-color:var(--cursor,var(--c14));background:0 0;border:0;outline:none;flex:1;padding:6px 0;font-size:12px}.term-row:focus-within{outline:3px solid var(--focus);outline-offset:4px}.term .cursor{background:var(--cursor,var(--c14));vertical-align:-.15em;width:.9em;height:1.05em;animation:1s step-end infinite blink;display:inline-block}.term-row:focus-within .cursor{display:none}body.heart-cursor .term .cursor{width:auto;height:auto;color:var(--cursor,var(--c10));background:0 0}body.heart-cursor .term .cursor:before{content:"♥"}body.reduce .term .cursor{animation:none}@keyframes blink{50%{opacity:0}}.term-hint{color:var(--c3);white-space:nowrap;font-size:9px}@media (max-width:640px){.term-hint{display:none}.term{font-size:10px}.term input{font-size:16px}}.pix{font-family:var(--pix)}.screen-text{font-family:var(--pix);color:var(--ink);font-size:clamp(10px,1.25vw,14px);line-height:2}.eyebrow{font:10px/1.6 var(--pix);color:var(--accent-2);letter-spacing:.06em;margin:0 0 8px}h1,h2,h3{font-weight:400}#boot{z-index:100;background:var(--border);padding:var(--bw);display:flex;position:fixed;inset:0}#boot .boot-screen{background:var(--c6);color:var(--c14);font-family:var(--pix);flex-direction:column;flex:1;padding:1.2em 1em 4em;font-size:clamp(9px,min(1.5vw,2.1vh),18px);line-height:1.7;display:flex;position:relative;overflow:hidden auto}#boot .boot-screen.off{background:#000}#boot pre{font:inherit;white-space:pre-wrap;margin:0}#boot .boot-title{flex-direction:column;align-items:flex-start;gap:1.2em;margin-top:1.6em;display:flex}#boot canvas.logo{width:min(100%,72vh,760px);height:auto;image-rendering:pixelated}#boot.closing{pointer-events:none}#boot.closing .boot-screen:after{content:"";background:repeating-linear-gradient(to bottom, var(--c6) 0 10px, var(--c14) 10px 16px, var(--c3) 16px 20px, var(--c1) 20px 22px, var(--c3) 22px 26px, var(--c14) 26px 32px);animation:.42s steps(7,end) forwards wake;position:absolute;inset:0}#boot.closing{animation:.42s ease-in forwards bootout}@keyframes wake{0%{clip-path:inset(0 0 100%)}to{clip-path:inset(0)}}@keyframes bootout{0%,60%{opacity:1}to{opacity:0}}#boot .sub{color:var(--c1);font-size:.7em;line-height:1.8}#boot .entries{flex-wrap:wrap;gap:18px;margin-top:.4em;display:flex}#boot .skip-intro{font-size:10px;position:absolute;bottom:1em;right:1em}#boot .boot-hint{color:var(--c3);margin-top:1em;font-size:9px}body.booting{overflow:hidden}@media (max-width:640px){#boot .entries .key.big{width:100%}}.home{grid-template-columns:minmax(0,1.35fr) minmax(300px,1fr);align-items:start;gap:clamp(20px,3vw,48px);display:grid}.home-art{flex-direction:column;gap:22px;min-width:0;display:flex}.home-art canvas.logo{width:min(100%,540px);height:auto;image-rendering:pixelated}.home-sub{font:clamp(10px, 1.2vw, 14px)/1.8 var(--pix);color:var(--c1);margin:0}.dir{font-family:var(--pix);font-size:clamp(11px,1.15vw,14px);line-height:2.1}.dir-head{background:var(--ink);color:var(--bg);white-space:pre;justify-content:space-between;gap:1ch;padding:0 .5ch;display:flex}.dir ol{margin:6px 0;padding:0;list-style:none}.dir li a{color:var(--ink);border-radius:2px;grid-template-columns:4ch 1fr 4ch;gap:1ch;padding:6px .5ch;text-decoration:none;display:grid}.dir li a:hover,.dir li a:focus-visible{background:var(--c14);color:var(--c1);outline-offset:0}.dir li a .blocks{color:var(--c3)}.dir li a:hover .blocks,.dir li a:focus-visible .blocks{color:var(--c1)}.dir li a .what{font-family:var(--mono);color:var(--c3);grid-column:2/4;margin-top:-2px;font-size:13px;line-height:1.4}.dir li a:hover .what,.dir li a:focus-visible .what{color:var(--c1)}.dir .free{color:var(--ink)}.dir .ready{margin-top:10px}.dir-note{font:13px/1.6 var(--mono);color:color-mix(in srgb, var(--ink) 82%, transparent);max-width:46ch;margin-top:18px}.dir-note kbd{font-family:var(--pix);color:var(--ink);font-size:10px}@media (max-width:900px){.home{grid-template-columns:minmax(0,1fr)}}@media (max-width:640px){body{font-size:15px}.status{gap:8px;font-size:9px}.key{min-height:40px;padding:8px 10px;font-size:10px}.placard{padding:18px 16px 20px}.placard:before{margin:-18px -16px 16px}.ctl{grid-template-columns:1fr 3.5em}.ctl label{grid-column:1/-1}}.machine-grid{grid-template-columns:1fr 1fr;align-items:start;gap:16px;display:grid}.machine-panel{flex-direction:column;gap:14px;min-width:0;display:flex}.machine-panel .controls,.controls .controls{gap:10px 14px}.zone-what{font:14px/1.5 var(--mono);color:var(--ink);flex-basis:100%;margin:4px 0 0}.parts .key[aria-selected=true]{background:linear-gradient(var(--c7), #9fae58);color:var(--c0);transform:translateY(3px);box-shadow:0 1px #261d17}.placard .small{opacity:.85;font-size:13px}@media (max-width:1100px){.machine-grid{grid-template-columns:1fr}}.lab-editor{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:14px;width:100%;display:grid}.lab-col{flex-direction:column;gap:6px;min-width:0;display:flex}.lab-code,.lab-listing,.lab-regs,.lab-basic{font:13px/1.55 var(--mono);color:var(--c13);border:2px solid var(--c14);background:#0d0a1f;border-radius:4px;margin:0;padding:10px 12px}.lab-code{resize:vertical;min-height:300px;color:var(--c1);tab-size:8;white-space:pre;overflow:auto}.lab-code:focus{outline:3px solid var(--focus);outline-offset:2px}.lab-listing{white-space:pre;min-height:300px;color:var(--c3);overflow:auto}.lab-regs{white-space:pre-wrap;color:var(--c7);font-size:12px}.lab-basic-row{flex-direction:column;gap:8px;width:100%;display:flex}.lab-basic{width:100%;font-family:var(--pix);text-transform:uppercase;color:var(--c1);font-size:12px}.lab-msg{font:11px/1.7 var(--pix);white-space:pre-wrap;min-height:1.7em;margin:0}.lab-msg.err{color:var(--c7)}.lab-msg.ok{color:var(--c13)}.lab-guard{font:14px/1.5 var(--mono);background:var(--c7);color:var(--c0);border-radius:4px;margin:0;padding:8px 12px}.swatch-rows{flex-direction:column;gap:8px;width:100%;display:flex}.swatches{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.swatches .ctl-label{width:7em}.swatch{cursor:pointer;border:2px solid #0008;border-radius:3px;width:26px;height:26px;padding:0}.swatch:hover{transform:translateY(-2px)}.placard dl.notes{margin:0 0 12px}.placard dl.notes dt{font:600 14px/1.4 var(--mono);margin-top:10px}.placard dl.notes dd{margin:2px 0 0}@media (max-width:700px){.lab-editor{grid-template-columns:1fr}.lab-code,.lab-listing{min-height:200px}.swatches .ctl-label{width:100%}}.wall-room{flex-direction:column;gap:clamp(28px,4vw,56px);width:100%;max-width:1320px;margin:0 auto;display:flex}.wall-head{max-width:62ch}.wall-title{font:clamp(18px, 2.4vw, 28px)/1.4 var(--pix);color:var(--c1);margin:0 0 14px}.wall-title.small{font-size:clamp(14px,1.6vw,18px)}.wall-lede{font:17px/1.7 var(--mono);color:var(--c15);margin:0 0 14px}.wall-head .tag,.maker .tag{font:9px/1.4 var(--pix);background:var(--c4);color:#fff;border-radius:3px;padding:4px 6px;display:inline-block}.wall{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;gap:clamp(18px,2.4vw,34px);display:grid}.frag{color:#241d15;transform:rotate(var(--tilt,0deg));background:#f1ead8;border-radius:2px;grid-column:span 4;padding:12px 12px 16px;position:relative;box-shadow:0 10px 24px #0000008c}.frag:before{content:"";background:color-mix(in srgb, var(--c7) 55%, transparent);width:46px;height:18px;margin-left:-23px;position:absolute;top:-9px;left:50%;transform:rotate(-3deg)}.frag.wide{grid-column:span 5}.frag.tall{grid-column:span 3}.frag:nth-child(2){margin-top:48px}.frag:nth-child(4){grid-column:2/span 5}.frag:nth-child(5){margin-top:30px}.frag .crt{box-shadow:none;background:#000;border-radius:0;padding:0}.frag .crt canvas{border-radius:0}.frag .crt:after,.frag .crt:before{border-radius:0;inset:0}.frag h3{font:11px/1.5 var(--pix);margin:12px 0 6px}.frag p{font:14px/1.6 var(--mono);margin:0}body.reduce .frag{transform:none}.maker{border-top:2px solid #fff2;grid-template-columns:minmax(0,1.3fr) minmax(280px,1fr);align-items:start;gap:clamp(18px,3vw,40px);padding-top:clamp(24px,3vw,40px);display:grid}.maker-ctl{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.maker-ctl p{font:15px/1.6 var(--mono);color:var(--c15);margin:0}.petscii-input{width:100%;font:16px/1.4 var(--pix);text-transform:uppercase;color:var(--c1);border:2px solid var(--c14);background:#000;border-radius:3px;padding:10px 12px}.maker-status{font:13px/1.5 var(--mono);color:var(--c13);min-height:1.5em}.coda{text-align:center;padding:clamp(40px,8vw,110px) 0 clamp(20px,4vw,40px)}.coda-line{font:clamp(16px, 3.2vw, 40px)/1.5 var(--pix);color:var(--c1);letter-spacing:.02em;margin:0 0 22px}.coda-small{font:11px/1.6 var(--pix);color:var(--c15)}.coda-small a{color:var(--c3)}@media (max-width:1000px){.wall{grid-template-columns:repeat(2,minmax(0,1fr))}.frag,.frag.wide,.frag.tall,.frag:nth-child(4){grid-column:auto;margin-top:0!important}.maker{grid-template-columns:1fr}}@media (max-width:600px){.wall{grid-template-columns:1fr}}.credits{grid-template-columns:minmax(0,1fr) minmax(300px,1.1fr);align-items:start;gap:clamp(18px,3vw,40px);display:grid}.credits-roll{position:sticky;top:16px}.colophon ul{padding-left:1.1em}.colophon li{margin-bottom:8px}@media (max-width:900px){.credits{grid-template-columns:1fr}.credits-roll{position:static}}@media (max-width:640px){.fkeys{gap:6px}.fkeys .key{min-height:36px;padding:6px 8px;font-size:9px}.fkeys .key small,.home-art .dir-note{display:none}.home{gap:18px}}.mjb{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;max-width:100%;display:flex}.mjb-label{font:9px/1.4 var(--pix);letter-spacing:.04em;color:var(--accent);margin-right:2px}.mjb .mjb-btn{letter-spacing:-.06em;min-width:40px;padding:8px 10px;font-size:10px}.mjb .mjb-play{letter-spacing:0;min-width:44px;font-size:12px}.mjb-vu{width:40px;height:16px;image-rendering:pixelated;image-rendering:crisp-edges;flex:none}.mjb-title{min-width:0;max-width:30ch;font:9px/1.5 var(--pix);color:var(--accent-2);white-space:nowrap;flex:12ch;align-items:baseline;gap:6px;display:inline-flex;overflow:hidden}.mjb-name{text-overflow:ellipsis;min-width:0;overflow:hidden}.mjb-loop{opacity:.7;font-family:var(--mono);flex:none;font-size:12px;line-height:1}.mjb.playing .mjb-title{color:var(--ink)}@media (max-width:640px){.mjb{gap:5px}.mjb .mjb-btn{min-width:40px;padding:8px}.mjb-title{flex-basis:100%;order:10;max-width:none}}
