@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff)format("woff");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}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff");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:Playpen Sans;src:url(/sketchbook/playpen-sans-latin-wght-normal.woff2)format("woff2");font-weight:100 800;font-display:swap}:root{--paper:#f4eee0;--paper-deep:#e7ddc6;--card:#fbf6ea;--ink:#213a2f;--ink-soft:#56695d;--focus:#b0461a;--pencil:#9aa396;--orange:#e1672b;--orange-ink:#b0461a;--night:#1c2e26;--hand:"Playpen Sans","Comic Sans MS","Segoe Print",system-ui,sans-serif;--mono:"IBM Plex Mono",ui-monospace,monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--paper);height:100%;color:var(--ink);font-family:var(--hand);margin:0}body{-webkit-font-smoothing:antialiased;overflow:hidden}.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}#world{z-index:0;width:100%;height:100%;display:block;position:fixed;inset:0}.title{z-index:1;grid-template:". . . . ."13vh".fig. . ."minmax(0,1fr)".fig.head."".fig.menu."".fig. . ."minmax(0,1.35fr)".sub.hint."15vh/4vw minmax(0,44fr) 4vw minmax(0,40fr) 5vw;height:100dvh;display:grid;position:relative}.figure{grid-area:fig;min-height:0}.brand{z-index:2;letter-spacing:-.01em;color:var(--ink);font-size:clamp(20px,1.9vw,30px);font-weight:700;line-height:1;text-decoration:none;position:fixed;top:3.4vh;left:3.2vw}.brand span,.headline .dot{color:var(--orange)}.headline{letter-spacing:-.015em;grid-area:head;max-width:11.5ch;margin:0 0 .5em;font-size:min(4.7vw,8.4vh);font-weight:700;line-height:1.02}.headline .word{white-space:nowrap;display:inline-block}.headline .ch{display:inline-block}.menu{grid-area:menu}.menu ul{gap:.08em;margin:0;padding:0 0 0 1.25em;list-style:none;display:grid}.menu li{position:relative}.menu button,.menu a{all:unset;box-sizing:border-box;min-height:44px;font-family:var(--hand);color:var(--ink);cursor:pointer;border-radius:12px;align-items:baseline;gap:.35em;margin-left:-.3em;padding:.06em .3em;font-size:min(3vw,5.5vh);font-weight:600;line-height:1.2;transition:color .15s;display:inline-flex}.menu [data-active],.menu button:hover,.menu a:hover{color:var(--orange-ink)}.menu :focus-visible{outline:2.5px dashed var(--focus);outline-offset:3px}.menu .state{color:var(--ink-soft);letter-spacing:.02em;font-size:.62em;font-weight:500}.menu .ext{font-size:.72em}.subhead{color:var(--ink-soft);grid-area:sub;align-self:start;margin:14px 0 0;font-size:clamp(14px,1.25vw,19px);font-weight:500;line-height:1.35}.hint{font:500 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);grid-area:hint;place-self:end start;margin:0 0 4.5vh}.hint kbd{font:inherit;border:1px solid color-mix(in srgb,var(--ink) 30%,transparent);border-radius:5px;margin:0 2px;padding:2px 5px}.motion{z-index:2;border:1.5px solid color-mix(in srgb,var(--ink) 55%,transparent);background:color-mix(in srgb,var(--card) 70%,transparent);min-height:40px;font:600 14px/1 var(--hand);color:var(--ink);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:6px 14px 6px 11px;display:inline-flex;position:fixed;top:2.8vh;right:2.6vw}.motion:hover{border-color:var(--ink)}.motion:focus-visible{outline:2.5px dashed var(--focus);outline-offset:3px}.motion i{border-left:3.5px solid;border-right:3.5px solid;width:10px;height:11px;display:inline-block}.motion[aria-pressed=true] i{border:6px solid #0000;border-left:10px solid;border-right:0;width:0;height:0}@media (height<=500px) and (aspect-ratio>=1){.title{grid-template-rows:8vh minmax(0,1fr) auto auto minmax(0,1fr) 12vh;grid-template-areas:". . . . ."".fig. . ."".fig.head."".fig.menu."".fig. . ."".sub sub sub."}.headline{margin-bottom:.25em}.menu ul{gap:0}.subhead{margin-top:10px}}@media (aspect-ratio<=1){.title{grid-template:". . . . ."62px".head head head."".fig.menu."minmax(0,1fr)".sub sub sub."/16px minmax(0,1.08fr) 6px minmax(0,1fr) 14px}.headline{max-width:none;margin:0 0 .2em;font-size:min(9.6vw,6.2vh)}.menu{align-self:start;margin-top:4vh}.menu ul{padding-left:1.05em}.menu button,.menu a{white-space:nowrap;font-size:min(6.1vw,4.1vh)}.subhead{margin:12px 0 max(18px,env(safe-area-inset-bottom));font-size:min(4vw,17px)}.hint{display:none}.brand{font-size:22px;top:16px;left:16px}.motion{padding:6px 12px 6px 10px;font-size:13px;top:10px;right:12px}}@media (hover:none),(height<=500px){.hint{display:none}}.intro{color:var(--ink);background:0 0;border:0;margin:0;padding:0;position:fixed;inset:2.8vh 2.6vw auto auto;overflow:visible}.intro::backdrop{background:0 0}.intro[data-dark=true]{color:#f1e8d2;--focus:#f28a3d}.intro-controls{gap:10px;display:flex}.intro-controls[hidden]{display:none}.intro button .state{opacity:.78;margin-left:3px;font-weight:500}.intro button:disabled{opacity:.6;cursor:default}.intro button{font:600 14px/1 var(--hand);min-height:40px;color:inherit;cursor:pointer;background:0 0;border:1.5px solid;border-radius:999px;padding:8px 16px}.intro button:hover{background:color-mix(in srgb,currentColor 8%,transparent)}.intro button:focus-visible{outline:2.5px dashed var(--focus);outline-offset:3px}@media (aspect-ratio<=1){.intro{top:10px;right:12px}.intro button{padding:8px 13px;font-size:13px}}.intro.is-start{width:100%;max-width:none;height:100%;max-height:none;padding:24px;inset:0}.intro-start{text-align:center;cursor:pointer;align-content:center;justify-items:center;gap:18px;height:100%;display:grid}.intro-start-brand{letter-spacing:-.02em;color:var(--ink);margin:0 0 6px;font-size:clamp(46px,8.5vw,112px);font-weight:800;line-height:1}.intro-start-brand span{color:var(--orange)}.intro .intro-start-go{font:800 clamp(22px,2.6vw,32px)/1 var(--hand);border:3px solid var(--ink);background:var(--orange);min-height:64px;color:var(--ink);box-shadow:0 5px 0 var(--ink);border-radius:999px;align-items:center;gap:12px;padding:16px 34px 16px 26px;display:inline-flex}.intro .intro-start-go svg{fill:currentColor;width:1.05em;height:1.05em}.intro .intro-start-go:hover{background:#ea7337}.intro .intro-start-go:active{box-shadow:0 2px 0 var(--ink);transform:translateY(3px)}.intro-start-note{color:var(--ink-soft);margin:0;font-size:clamp(15px,1.3vw,18px)}.intro-start-more{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}@media (prefers-reduced-motion:no-preference){.intro .intro-start-go{animation:1.6s ease-in-out infinite start-glow}}@keyframes start-glow{50%{box-shadow:0 5px 0 var(--ink),0 0 0 12px color-mix(in srgb,var(--orange) 26%,transparent)}}.is-intro .reveal{opacity:var(--p,0);transform:translateY(calc((1 - var(--p,0))*12px))}.is-intro .menu li{opacity:clamp(0,calc(var(--p,0)*3),1);clip-path:inset(-30% calc((1 - var(--p,0))*100%) -30% -60px);transform:translateY(calc((1 - var(--p,0))*10px))}.is-intro .headline .ch{opacity:var(--p,0);transform:translateY(calc((1 - var(--p,0))*.35em)) rotate(calc((1 - var(--p,0))*-9deg)) scale(calc(.7 + var(--p,0)*.3))}.is-intro .motion{visibility:hidden}@media (prefers-reduced-motion:reduce){.menu button,.menu a{transition:none}}.window{width:min(880px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--ink);background:var(--card);border:2.5px solid var(--ink);border-radius:26px 20px 28px 18px/18px 28px 20px 26px;margin:auto;padding:22px 26px 18px;overflow:auto;box-shadow:8px 9px #213a2f29}.window::backdrop{background:#1c2e2652}.window-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.window h2{letter-spacing:-.01em;margin:0;font-size:clamp(26px,3vw,38px);font-weight:700}.window .close{all:unset;box-sizing:border-box;border:2px solid var(--ink);width:44px;height:44px;font:500 26px/1 var(--hand);cursor:pointer;border-radius:50%;place-items:center;display:grid}.window .close:hover{background:#213a2f12}.window :focus-visible{outline:2.5px dashed var(--focus);outline-offset:3px}.inventory{grid-template-columns:minmax(170px,.36fr) minmax(0,1fr);align-items:start;gap:clamp(16px,3vw,34px);display:grid}.skill-list{border-right:1.5px dashed #213a2f47;gap:2px;padding:4px 0 4px 22px;display:grid}.skill-list button{all:unset;box-sizing:border-box;min-height:38px;font:600 18px/1.25 var(--hand);color:var(--ink-soft);cursor:pointer;border-radius:10px;padding:4px 10px;position:relative}.skill-list button:hover{color:var(--ink)}.skill-list [aria-selected=true]{color:var(--orange-ink)}.skill-list [aria-selected=true]:before{content:"";background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 16'%3E%3Cpath d='M3.2 2.4 Q2 1.8 2 3.2 L2 12.8 Q2 14.2 3.2 13.6 L12.6 8.9 Q13.6 8 12.6 7.1 Z' fill='%23e1672b' stroke='%23213a2f' stroke-width='1.8' stroke-linejoin='round'/%3E%3C/svg%3E") 50%/contain no-repeat;width:15px;height:16px;margin-top:-8px;position:absolute;top:50%;left:-20px}.skill-panel{grid-template-columns:auto minmax(0,1fr);grid-template-areas:"icon kicker""icon title""icon copy""icon points""icon link";align-content:start;column-gap:22px;min-height:300px;padding:6px 4px;display:grid}.skill-panel[hidden]{display:none}.skill-panel:focus-visible{outline:2.5px dashed var(--focus);outline-offset:4px;border-radius:12px}.skill-icon{background:var(--paper);border-radius:18px;grid-area:icon;width:132px;height:132px}.kicker{font:500 12px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);grid-area:kicker;margin:4px 0 2px}.skill-panel h3{grid-area:title;margin:4px 0 8px;font-size:clamp(24px,2.6vw,32px);font-weight:700;line-height:1.08}.skill-panel .copy{grid-area:copy;max-width:40ch;margin:0 0 10px;font-size:18px;font-weight:500;line-height:1.45}.skill-panel .points{grid-area:points;gap:6px;max-width:44ch;margin:0 0 14px;padding:0;list-style:none;display:grid}.skill-panel .points li{color:var(--ink);padding-left:26px;font-size:16.5px;font-weight:500;line-height:1.4;position:relative}.skill-panel .points li:before{content:"";border:2.5px solid var(--orange-ink);box-sizing:border-box;border-radius:50%;width:11px;height:11px;position:absolute;top:.42em;left:4px}.window .source{color:var(--orange-ink);text-underline-offset:4px;grid-area:link;justify-self:start;font-size:16px;font-weight:600}.paging{border-top:1.5px dashed #213a2f47;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;padding-top:12px;display:flex}.paging button{all:unset;box-sizing:border-box;border:2px solid var(--ink);min-height:40px;font:600 15px/1.2 var(--hand);cursor:pointer;border-radius:999px;padding:6px 14px}.paging button:hover{background:#213a2f12}.position{font:500 13px/1 var(--mono);letter-spacing:.1em;color:var(--ink-soft)}.about{gap:14px;max-width:62ch;display:grid}.about .lead{margin:0 0 4px;font-size:19px;font-weight:500;line-height:1.45}.about article{border:1.5px dashed #213a2f4d;border-radius:16px 12px 18px;padding:12px 16px}.about h3{margin:0 0 4px;font-size:21px;font-weight:700}.about p{margin:0 0 6px;font-size:16.5px;font-weight:500;line-height:1.45}.about .note{font:500 12px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}@media (width<=700px){.window{width:calc(100vw - 24px);max-height:calc(100dvh - 24px);padding:16px 16px 14px}.inventory{grid-template-columns:minmax(0,1fr);gap:10px}.skill-list{border-bottom:1.5px dashed #213a2f47;border-right:0;flex-wrap:wrap;gap:4px;padding:0 0 10px;display:flex}.skill-list button{border:1.5px solid #213a2f4d;border-radius:999px;min-height:36px;padding:4px 11px;font-size:15px}.skill-list [aria-selected=true]{border-color:var(--orange);background:#e1672b14}.skill-list [aria-selected=true]:before{display:none}.skill-panel{grid-template-columns:minmax(0,1fr);grid-template-areas:"icon""kicker""title""copy""points""link";min-height:0}.skill-panel .points li{font-size:15.5px}.skill-icon{width:88px;height:88px;margin-bottom:6px}.skill-panel .copy{font-size:16.5px}}.no-canvas .figure{background:url(/sketchbook/skeleton-still.png) bottom/contain no-repeat}.no-script{z-index:1;max-width:62ch;margin:0 auto;padding:8px 16px 56px;font-size:17px;line-height:1.5;position:relative}.no-script h2{margin:0 0 8px;font-size:28px}
