@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2)format("woff2-variations");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:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2)format("woff2-variations");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:"Press Start 2P";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/press-start-2p-cyrillic-ext-400-normal-CIYZrvmP.woff2)format("woff2"),url(/assets/press-start-2p-cyrillic-ext-400-normal-B5Ckvkit.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:"Press Start 2P";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/press-start-2p-cyrillic-400-normal-DBn7fddJ.woff2)format("woff2"),url(/assets/press-start-2p-cyrillic-400-normal-CbE56R3Y.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Press Start 2P";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/press-start-2p-greek-400-normal-DQfalijU.woff2)format("woff2"),url(/assets/press-start-2p-greek-400-normal-BR_lG5n9.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Press Start 2P";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/press-start-2p-latin-ext-400-normal-DpfYvR5A.woff2)format("woff2"),url(/assets/press-start-2p-latin-ext-400-normal-DBgyq7ky.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:"Press Start 2P";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/press-start-2p-latin-400-normal-_wFEWmAB.woff2)format("woff2"),url(/assets/press-start-2p-latin-400-normal-KLytu4cr.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:Pixelify Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/pixelify-sans-cyrillic-wght-normal-BfQLqnEI.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Pixelify Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/pixelify-sans-latin-ext-wght-normal-CsF3XSp0.woff2)format("woff2-variations");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:Pixelify Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/pixelify-sans-latin-wght-normal-Cbhn5ptY.woff2)format("woff2-variations");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:Bungee;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bungee-vietnamese-400-normal-B6gKbkHm.woff2)format("woff2"),url(/assets/bungee-vietnamese-400-normal-CmjDSWyd.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:Bungee;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bungee-latin-ext-400-normal-DWzJMwsA.woff2)format("woff2"),url(/assets/bungee-latin-ext-400-normal-DXe9_7Rr.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:Bungee;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bungee-latin-400-normal-Dfnurram.woff2)format("woff2"),url(/assets/bungee-latin-400-normal-DA8IEVW_.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}.figure{background:var(--fig-bg);color:var(--fig-ink);border:1px solid var(--lightningcss-light,transparent)var(--lightningcss-dark,var(--line));border-radius:14px;position:relative;overflow:hidden}.figure-bar{color:var(--fig-dim);border-bottom:1px solid var(--fig-line);justify-content:space-between;gap:12px;padding:10px 14px;font-size:.82rem;display:flex}.figure-bar>:last-child{color:var(--fig-ink);font-variant-numeric:tabular-nums}.figure svg{width:100%;height:auto}.figure .scr-label{font-family:var(--font);fill:var(--fig-dim);font-size:12px;font-weight:500}.visual-note{color:var(--fig-dim);padding:0 14px 12px;font-size:.84rem}.denoise-prompt{color:var(--fig-ink);padding:12px 14px 0;font-size:.95rem}.prompt-key{color:var(--fig-dim);margin-right:4px}.denoise-strip{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:14px;display:grid}.frame{aspect-ratio:1;background:linear-gradient(#0000 78%,#1b2130 78%) 4% 100%/16% 100% no-repeat,linear-gradient(#0000 54%,#1b2130 54%) 22% 100%/13% 100% no-repeat,linear-gradient(#0000 66%,#1b2130 66%) 40% 100%/15% 100% no-repeat,linear-gradient(#0000 38%,#1b2130 38%) 58% 100%/11% 100% no-repeat,linear-gradient(#0000 60%,#1b2130 60%) 78% 100%/16% 100% no-repeat,linear-gradient(#0000 72%,#1b2130 72%) 100% 100%/12% 100% no-repeat,radial-gradient(circle at 62% 46%,#f5b74a 0 20%,#0000 21%),linear-gradient(#3a4fbf,#8a7fd6 60%,#f2a48a);border-radius:6px;position:relative;overflow:hidden}.frame:after{content:"";opacity:var(--noise);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.3' numOctaves='1' seed='4'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:90px 90px;position:absolute;top:-20%;bottom:-20%;left:-20%;right:-20%}@media (prefers-reduced-motion:no-preference){.frame:after{animation:.25s steps(3,end) infinite static}}@keyframes static{33%{background-position:30px -20px}66%{background-position:-25px 35px}}.frame.is-active{outline:2px solid var(--fig-amber);outline-offset:2px}.denoise figcaption{color:var(--fig-dim);padding:0 14px 12px;font-size:.84rem}.chunk-cell,.chunks .hit{fill:#222a37;stroke:var(--fig-line);stroke-width:1px}.chunks .hit.is-hit{fill:var(--fig-blue);stroke:var(--fig-blue)}.rag-scan{fill:var(--fig-blue);opacity:.8}.links path{fill:none;stroke:var(--fig-blue);stroke-width:2px}.core-hex{fill:#1b2130;stroke:var(--fig-red);stroke-width:2.5px}.core-mem{fill:var(--fig-red);opacity:.25}.core-text{font-family:var(--font);fill:var(--fig-ink);font-size:13px;font-weight:600}.mem-label{fill:var(--fig-red)}.scr-q{font-family:var(--font);fill:var(--fig-dim);font-size:11px;font-weight:500}.rag-mode{color:var(--fig-blue)!important}.spec-doc{fill:#1b2130;stroke:var(--fig-line)}.spec-lines{stroke:var(--fig-dim);stroke-width:3px;opacity:.6}.spec-scan{fill:var(--fig-blue);opacity:.7}.beam{stroke:var(--fig-blue);stroke-width:2px;stroke-dasharray:4 6}.unit{fill:#7b93ff1a;stroke:var(--fig-blue);stroke-width:1.5px}.leds circle{fill:var(--fig-teal)}.route{font-family:var(--font);fill:var(--fig-ink);font-size:13px;font-weight:500}.verb{fill:var(--fig-amber);font-weight:600}.agent rect{fill:#1b2130;stroke:var(--fig-violet);stroke-width:1.5px}.agent .scr-label{fill:var(--fig-violet)}.wire{fill:none;stroke:var(--fig-line);stroke-width:2px}.packet{fill:var(--fig-violet);opacity:0}.ok{font-family:var(--font);fill:var(--fig-teal);font-size:13px;font-weight:600}.mri-grid{stroke:var(--fig-dim);stroke-width:1px;opacity:.12}.skull{fill:#262d3a;stroke:var(--fig-dim);stroke-width:2px}.folds{fill:none;stroke:#4a5363;stroke-width:3px;stroke-linecap:round}.tumour{fill:#f4eee6;opacity:.75}.mask{fill:#ff6b6b66;stroke:var(--fig-red);stroke-width:2.5px;stroke-dasharray:6 4}.lock path{fill:none;stroke:var(--fig-teal);stroke-width:2.5px}.mask-label{fill:var(--fig-red)}.mask-lead{stroke:var(--fig-red);stroke-width:1.5px}.mri-scan{fill:var(--fig-teal);opacity:0}.draft-doc{fill:#1b2130;stroke:var(--fig-line)}.draft-lines{stroke:var(--fig-dim);stroke-width:4px;opacity:.6}.cite{fill:var(--fig-amber)}.threads path{fill:none;stroke:var(--fig-amber);stroke-width:2px}.sources rect{fill:#1b2130;stroke:var(--fig-amber);stroke-width:1.5px}.tick{fill:none;stroke:var(--fig-teal);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.stackbar{background:#1b2130;border-radius:6px;height:30px;margin:4px 14px 10px;display:flex;overflow:hidden}.seg{flex:var(--n) 1 0;color:#10141b;place-items:center;font-weight:650;display:grid}.seg+.seg{border-left:2px solid var(--fig-bg)}.seg-covered,.key-covered{background:var(--fig-teal)}.seg-partial,.key-partial{background:var(--fig-amber)}.seg-missed,.key-missed{background:repeating-linear-gradient(45deg, var(--fig-red) 0 6px, #f4c9c9 6px 12px)}.visual-legend{color:var(--fig-dim);flex-wrap:wrap;gap:4px 14px;padding:0 14px 8px;font-size:.82rem;display:flex}.visual-legend span{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.key{border-radius:3px;width:11px;height:11px;display:inline-block}:root{--g:clamp(84px, 13vh, 128px);--post:clamp(14px, 6.5vh, 76px);--player-h:clamp(80px, 11.5vh, 112px)}@media (min-height:760px){:root{--post:calc(var(--player-h) + 16px)}}html.game body{overflow-x:hidden}html.game .hud{width:auto;margin:0;position:fixed;top:12px;left:16px;right:16px}html.game .hud-level{font:400 .82rem/1 var(--display);white-space:nowrap;align-items:center;gap:12px;margin:0 auto 0 6px;display:flex}.minimap{display:none}html.game .minimap{align-items:center;margin:0 8px;display:flex;position:relative}.mm-track{background:repeating-linear-gradient(90deg,#b7bdc9 0 6px,#0000 6px 11px);height:4px;margin-top:-2px;position:absolute;top:50%;left:22px;right:22px}.mm-fill{background:var(--red);transform-origin:0;position:absolute;top:0;bottom:0;left:0;right:0;transform:scaleX(0)}.mm-stop{z-index:1;cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;width:44px;height:44px;padding:0;display:grid;position:relative}.mm-stop svg{width:22px;height:22px;transition:transform .25s var(--pop)}.mm-stop:hover svg,.mm-stop.is-here svg{transform:scale(1.28)translateY(-1px)}.mm-me{z-index:2;top:-9px;left:calc(22px + var(--f,0) * (100% - 44px));pointer-events:none;filter:drop-shadow(0 2px #00000040);width:20px;margin-left:-10px;position:absolute}.mm-me svg{width:20px;height:24px}html.game .nav-links{margin-left:0}@media (max-width:1300px){html.game .hud-level{display:none}html.game .minimap{margin-left:auto}}@media (max-width:1040px){html.game .brand-name{display:none}}html.game .stage{background:linear-gradient(var(--sky-top), var(--sky-bot));position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}html.game .sky{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.clouds{will-change:transform;width:100%;height:100%;position:absolute;top:0;left:0}.sky-bg{background:linear-gradient(var(--sky-top), var(--sky-bot));position:absolute;top:0;bottom:0;left:0;right:0}.stars{opacity:0;background-image:radial-gradient(1.6px 1.6px at 30px 40px,#fff 50%,#0000 51%),radial-gradient(1.2px 1.2px at 140px 90px,#fff 50%,#0000 51%),radial-gradient(2px 2px at 220px 20px,#fff 50%,#0000 51%),radial-gradient(1.2px 1.2px at 90px 150px,#fff 50%,#0000 51%),radial-gradient(1.6px 1.6px at 260px 130px,#fff 50%,#0000 51%);background-size:300px 180px,260px 200px,340px 220px,200px 170px,380px 240px;position:absolute;top:0;bottom:35%;left:0;right:0}@media (prefers-reduced-motion:no-preference){.stars{animation:3s ease-in-out infinite alternate twinkle}}@keyframes twinkle{to{filter:brightness(1.4);background-position:2px 1px,-1px 2px,1px -1px,0 1px,-2px 0}}.sun{background:var(--sun,#ffe066);width:92px;height:92px;box-shadow:0 0 0 16px color-mix(in srgb, var(--sun,#ffe066) 28%, transparent), 0 0 80px var(--sun,#ffe066);border-radius:50%;position:absolute;top:6vh;right:14vw}.moon{opacity:0;border-radius:50%;width:66px;height:66px;position:absolute;top:9vh;left:24vw;transform:rotate(-20deg);box-shadow:inset -18px -8px #f6f1d8}.cloud{left:var(--x);top:var(--y);width:calc(130px * var(--s));height:calc(38px * var(--s));background:var(--cloud,#fff);border-radius:999px;position:absolute}.cloud:before,.cloud:after{content:"";background:var(--cloud,#fff);border-radius:50%;position:absolute}.cloud:before{width:48%;height:150%;bottom:30%;left:14%}.cloud:after{width:34%;height:110%;bottom:40%;left:50%}.far{left:0;bottom:calc(var(--g) - 2px);will-change:transform;width:100%;height:34vh;position:absolute}.far:before,.far:after{content:"";-webkit-mask:var(--shape) repeat-x left bottom / 1100px 100%;-webkit-mask:var(--shape) repeat-x left bottom / 1100px 100%;mask:var(--shape) repeat-x left bottom / 1100px 100%;position:absolute;top:0;bottom:0;left:0;right:0}.far:before{background:var(--hill-1,#a3d9b3);--shape:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 800 300' preserveAspectRatio='none'%3E%3Cpath d='M0 300V170C80 110 160 100 240 150S400 90 480 130 640 60 800 170V300Z'/%3E%3C/svg%3E")}.far:after{background:var(--hill-2,#84c993);--shape:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 800 300' preserveAspectRatio='none'%3E%3Cpath d='M0 300V232C100 180 180 200 260 220S420 160 520 200 700 182 800 232V300Z'/%3E%3C/svg%3E")}.mid{left:0;bottom:calc(var(--g) - 2px);will-change:transform;height:46vh;position:absolute}.mid-item{position:absolute;bottom:0}.mid-item svg{width:100%;height:auto;display:block}.mid-ochils svg{height:24vh}html.game .world{will-change:transform;align-items:flex-end;height:100%;display:flex;position:absolute;top:0;left:0}html.game .zone{flex:none;align-items:flex-end;height:100%;padding:0 40px;display:flex;position:relative}html.game .zone-blr{padding-right:0}html.game .zone:before{content:"";height:var(--g);z-index:2;border-top:16px solid var(--grass);background:linear-gradient(135deg, var(--dirt-2) 25%, transparent 25%) -24px 0 / 48px 48px, linear-gradient(225deg, var(--dirt-2) 25%, transparent 25%) -24px 0 / 48px 48px, linear-gradient(315deg, var(--dirt-2) 25%, transparent 25%) 0 0 / 48px 48px, linear-gradient(45deg, var(--dirt-2) 25%, transparent 25%) 0 0 / 48px 48px, var(--dirt);position:absolute;bottom:0;left:-1px;right:-1px}html.game .zone>*{z-index:1;flex:none;position:relative}html.game .set-airport,html.game .set-river{z-index:3}.zone-stirling,.zone-skills{--grass:#62b94b;--dirt:#6e4a2e;--dirt-2:#5c3d25}html.game .zone-flight:before{background:radial-gradient(circle at 20px -6px,#0000 16px,#1e78c8 17px) 0 0/40px 22px repeat-x,linear-gradient(#1e78c8 22px,#1764ab);border-top:0}html.game .zone-lab:before{background:repeating-linear-gradient(-45deg,#f2c230 0 16px,#23262d 16px 32px) 0 0/100% 18px no-repeat,repeating-linear-gradient(90deg,#6f7682 0 3px,#8b929d 3px 140px);border-top:14px solid #2a2f3a}html.game .zone-gla:before{background:repeating-linear-gradient(90deg,#7d838c 0 3px,#969ca5 3px 90px);border-top:12px solid #c4c8ce}html.game .zone-start{padding-left:0}html.game .zone-flight{padding:0}html.game .set{width:var(--w,300px);pointer-events:none;align-self:stretch;height:100%;position:relative}html.game .set>*{left:var(--x,0);bottom:var(--g);position:absolute}html.game .board{margin:0 64px calc(var(--g) + var(--post));transform-origin:50% calc(100% + var(--post) + 3px)}html.game .board:after{content:"";z-index:-1;height:var(--post);background:linear-gradient(90deg,#7a4b2a 0 16px,#0000 16px calc(100% - 16px),#7a4b2a calc(100% - 16px));position:absolute;top:calc(100% + 3px);left:14%;right:14%}html.game .board-about{width:880px}html.game .board-edu{width:560px}html.game .board-exp{width:960px}html.game .board-intro{width:400px}html.game .project{width:1080px}html.game .project.has-chart{width:1300px}html.game .board-contact{width:880px}html.game .board-contact .ribbon-top{position:absolute;top:-21px;left:26px}.intro-count{font:400 .95rem/1.2 var(--display);color:var(--red);margin-top:12px}.intro-count span{display:inline-block}@media (prefers-reduced-motion:no-preference){.intro-count span{animation:1s ease-in-out infinite nudge}}@keyframes nudge{50%{transform:translate(6px)}}html.game .work,html.game .skills{align-items:flex-end;height:100%;display:flex}html.game .start{width:min(800px,64vw);margin:0 0 calc(var(--g) + var(--player-h) + 26px) 6vw;transform-origin:0 100%}html.game .set-start{width:max(560px,46vw)}.hint{display:none}html.game .zone>.hint{z-index:2;left:calc(18vw + var(--player-h));bottom:calc(var(--g) + 22px);background:var(--paper);border:3px solid var(--line);box-shadow:5px 5px 0 var(--line);border-radius:16px;align-items:center;gap:14px;padding:12px 18px;display:flex;position:absolute}.hint-mouse{border:3px solid var(--line);border-radius:12px;width:24px;height:36px;position:relative}.hint-mouse:after{content:"";background:var(--red);border-radius:2px;width:4px;height:8px;margin-left:-2px;position:absolute;top:6px;left:50%}.hint-text{font:400 1.1rem/1 var(--display)}.hint-arrow{color:var(--red);font-size:1.6rem;font-weight:800}@media (prefers-reduced-motion:no-preference){.hint-mouse:after{animation:1.4s ease-in-out infinite wheel}.hint-arrow{animation:1s ease-in-out infinite nudge}}@keyframes wheel{0%{opacity:1;transform:translateY(0)}70%{opacity:0;transform:translateY(10px)}to{opacity:0}}html.game.has-moved .zone>.hint{opacity:0;transition:opacity .4s}html.game .gate{width:230px;height:min(320px,44vh);margin:0 50px var(--g)}html.game .gate:before,html.game .gate:after{content:"";background:var(--red);border:3px solid var(--line);border-bottom:0;width:34px;height:100%;position:absolute;bottom:0}html.game .gate:before{left:0}html.game .gate:after{right:0}html.game .gate-num{z-index:1;height:72px;font:400 1.9rem/1 var(--display);color:#fff;background:var(--red);border:3px solid var(--line);text-shadow:3px 3px 0 var(--red-dark);box-shadow:0 6px 0 var(--red-dark);border-radius:6px;place-items:center;display:grid;position:absolute;top:0;left:-16px;right:-16px}html.game .gate-place{z-index:1;white-space:nowrap;background:var(--paper);border:3px solid var(--line);border-radius:10px;padding:6px 14px;font-weight:800;position:absolute;top:92px;left:50%;transform:translate(-50%)}html.game .gate-place:before{content:"";background:var(--line);width:3px;height:20px;margin-left:-1.5px;position:absolute;bottom:100%;left:50%}.tree{width:calc(120px * var(--s,1));height:auto}.tree-pink{--leaf:#ff7fb0;--leaf-2:#ffa6c8}.bush{background:#43b049;border-radius:60px 60px 0 0;width:120px;height:52px;box-shadow:44px 10px 0 -6px #59c35a}html.game .campus{border:3px solid var(--line);background:repeating-linear-gradient(90deg,#cfc7b6 0 16px,#f1ebdf 16px 46px);border-bottom:0;width:300px;height:200px}html.game .campus:before{content:"";border:3px solid var(--line);background:#f7f3ea;height:20px;position:absolute;top:-20px;left:-14px;right:-14px}html.game .campus span{border:3px solid var(--line);background:repeating-linear-gradient(0deg,#3e6690 0 6px,#7ea9d4 6px 28px);border-bottom:0;width:126px;height:150px;position:absolute;bottom:0;right:-126px}html.game .tower{width:132px;height:var(--h);border:3px solid var(--line);background:repeating-linear-gradient(90deg,#0000 0 28px,#3f5f86 28px 32px),repeating-linear-gradient(0deg,#5c86b4 0 12px,#a8cdee 12px 30px);border-bottom:0}html.game .tower-teal{background:repeating-linear-gradient(90deg,#0000 0 28px,#2b6a6a 28px 32px),repeating-linear-gradient(0deg,#3d8f8c 0 12px,#9fe0d6 12px 30px)}html.game .control-tower{border:3px solid var(--line);background:#d9dde3;border-bottom:0;width:44px;height:230px}html.game .control-tower:before{content:"";border:3px solid var(--line);background:linear-gradient(#2c3e57,#4b6c94);border-radius:8px 8px 0 0;height:52px;position:absolute;top:-50px;left:-36px;right:-36px}html.game .control-tower:after{content:"";border:3px solid var(--line);background:#f1f3f6;border-radius:6px;height:16px;position:absolute;top:-64px;left:-44px;right:-44px}html.game .runway{height:var(--g);background:linear-gradient(90deg,#fff 50%,#0000 50%) 0 calc(50% - 4px)/60px 6px repeat-x,#5a616c;border-top:16px solid #9aa1ab;bottom:0;left:0;right:0}html.game .sign{border:3px solid var(--line);background:#ffd23f;border-radius:8px;margin-bottom:70px;padding:8px 14px;font-weight:800}html.game .sign:after{content:"";background:var(--line);width:8px;height:70px;margin-left:-4px;position:absolute;top:100%;left:50%}html.game .set-flight{width:max(1900px,150vw)}html.game .flight-banner{font-size:1.3rem;position:absolute;top:20vh;bottom:auto;left:38%}html.game .boat{width:calc(110px * var(--s,1));height:calc(26px * var(--s,1));bottom:calc(var(--g) - 14px);border:3px solid var(--line);background:#fff;border-radius:0 0 40px 40px}html.game .boat:before{content:"";border:3px solid var(--line);background:#e8343e;border-bottom:0;width:40%;height:70%;position:absolute;bottom:100%;left:30%}.rain{background:#c7d0da;border-radius:999px;width:200px;height:56px;box-shadow:inset 0 -8px #aab5c2}html.game .rain{top:14vh;bottom:auto;left:22%}.rain:before{content:"";background:#c7d0da;border-radius:50%;width:90px;height:70px;position:absolute;top:-26px;left:30px}.rain:after{content:"";background:repeating-linear-gradient(100deg,#0000 0 18px,#5078aa8c 18px 20px);height:110px;position:absolute;top:100%;left:18px;right:18px;-webkit-mask-image:linear-gradient(#000,#0000);mask-image:linear-gradient(#000,#0000)}@media (prefers-reduced-motion:no-preference){.rain:after{animation:.6s linear infinite drizzle}}@keyframes drizzle{to{background-position:-10px 40px}}.wallace{width:150px;height:auto}.thistle{width:calc(40px * var(--s,1));height:auto}.castle{width:540px;height:auto}.tree-pine{width:110px}html.game .rack{border:3px solid var(--line);background:repeating-linear-gradient(0deg,#2b3140 0 6px,#3a4254 6px 26px);border-bottom:0;border-radius:6px 6px 0 0;width:84px;height:170px}html.game .rack:after{content:"";background:repeating-linear-gradient(0deg,#4fd1c5 0 5px,#0000 5px 20px);width:6px;height:calc(100% - 24px);position:absolute;top:12px;left:10px}@media (prefers-reduced-motion:no-preference){html.game .rack:after{animation:1.6s steps(2,end) infinite blink}}@keyframes blink{0%,93%,to{scale:1}96%{scale:1 .1}}html.game .rack-short{height:110px}html.game .crate{border:3px solid var(--line);background:linear-gradient(45deg,#0000 46%,#8a5a2b 46% 54%,#0000 54%),linear-gradient(-45deg,#0000 46%,#8a5a2b 46% 54%,#0000 54%),#c98a3c;width:66px;height:66px;box-shadow:inset 0 0 0 6px #a76d2e}html.game .tenement{border:3px solid var(--line);--stone:#b5513a;--win:#3b2a33;background:linear-gradient(transparent 0 44px, var(--stone) 44px) 0 34px / 100% 66px, linear-gradient(90deg, transparent 18px, var(--win) 18px 44px, transparent 44px 92px, var(--win) 92px 118px, transparent 118px 166px, var(--win) 166px 192px, transparent 192px) 0 34px / 100% 66px, var(--stone);border-bottom:0;width:210px;height:270px}html.game .tenement:before{content:"";background:#8f3b29;height:22px;position:absolute;top:0;left:0;right:0}html.game .tenement-b{--stone:#d4a062}html.game .tenement-b:before{background:#a87842}html.game .river{height:calc(var(--g) - 6px);z-index:-1;background:radial-gradient(circle at 20px -6px,#0000 16px,#2a6fb3 17px) 0 0/40px 22px repeat-x,linear-gradient(#2a6fb3 22px,#1e5590);bottom:0;left:58%;right:-40px}.armadillo{width:300px;height:auto}html.game .set-finish{width:82vw}html.game .armadillo{left:34%}html.game .flagpole{border:3px solid var(--line);background:#e9edf2;border-bottom:0;width:10px;height:min(380px,50vh);left:80px}html.game .flagpole:before{content:"";background:var(--yellow);border:3px solid var(--line);border-radius:50%;width:26px;height:26px;margin-left:-13px;position:absolute;top:-22px;left:50%}.flag{background:var(--red);border:3px solid var(--line);clip-path:polygon(0 0,100% 50%,0 100%);width:80px;height:52px;transform:translateY(calc(var(--flag,0) * -1 * (min(380px, 50vh) - 60px)));position:absolute;bottom:0;left:100%}html.game .finish-banner{font-size:1.4rem;position:absolute;top:22vh;bottom:auto;left:52%}html.game .footer{z-index:3;right:40px;bottom:calc(var(--g) / 2 - 14px);color:#fff;text-shadow:0 1px #0006;gap:24px;position:absolute}html.game .skill-group{flex-direction:column;justify-content:flex-end;align-items:center;width:340px;height:100%;margin:0 46px;display:flex}html.game .skill-card{transform-origin:50% 100%;width:100%;transition:opacity .3s, transform .5s var(--pop);margin:0 0 20px;padding-top:22px}html.game .skill-card:after{content:none}html.game .skill-group:not(.is-open) .skill-card{opacity:0;transform:translateY(60px)scale(.5)}html.game .qblock{width:72px;height:72px;margin-bottom:calc(var(--g) + var(--player-h) + 40px);font:400 2.3rem/1 var(--display);color:#fff;text-shadow:3px 3px #a86a00;border:3px solid var(--line);background:#ffbf1f;border-radius:8px;place-items:center;display:grid;position:relative;box-shadow:inset -6px -6px #e09a00,inset 6px 6px #ffe08a}html.game .skill-group.is-open .qblock{color:#0000;text-shadow:none;background:#b98444;box-shadow:inset -6px -6px #94672f,inset 6px 6px #d9a76a}@media (prefers-reduced-motion:no-preference){html.game .skill-group.is-open .qblock{animation:bump .3s var(--ease)}}@keyframes bump{40%{transform:translateY(-14px)}}.player{display:none}html.game .player{z-index:5;left:18vw;bottom:var(--g);width:calc(var(--player-h) * .6);height:var(--player-h);will-change:transform;transform-origin:50% 100%;display:block;position:absolute}.player .walker{width:100%;height:100%;overflow:visible}.player .plane{width:calc(var(--player-h) * 2.1);max-width:none;height:auto;display:none;position:absolute;bottom:0;left:50%;overflow:visible;transform:translate(-50%)}.player.is-flying .walker{display:none}.player.is-flying .plane{display:block}.player.is-back .walker,.player.is-back .plane{scale:-1 1}@media (prefers-reduced-motion:no-preference){.player .eyes{transform-box:fill-box;transform-origin:50%;animation:4.6s infinite blink}.player.is-flying .prop{transform-box:fill-box;transform-origin:50%;animation:.12s linear infinite alternate prop}}@keyframes prop{to{transform:scaleY(.2)}}.art svg{width:100%;height:auto;display:block;overflow:visible}html.game .art-auto{width:calc(150px * var(--s,1));margin-bottom:-4px}html.game .art-cow{width:140px;margin-bottom:-6px}html.game .art-crane{width:300px}html.game .art-terminal{width:280px}html.game .art-sheep{width:62px;margin-bottom:-3px}.art-crane .lit{fill:#3a3f48;transition:fill .5s}.is-night .art-crane .lit{fill:#ffd36b}.is-night .tenement{--win:#ffd36b}@media (prefers-reduced-motion:no-preference){.cow-tail{animation:3.4s ease-in-out infinite flick}.sheep-head{animation:5s ease-in-out infinite graze}.art-sheep-b .sheep-head{animation-delay:-2.2s}}@keyframes flick{0%,78%,to{transform:rotate(0)}84%{transform:rotate(-26deg)}90%{transform:rotate(12deg)}95%{transform:rotate(-12deg)}}@keyframes graze{0%,40%,to{transform:rotate(0)}50%,85%{transform:rotate(-28deg)translate(-2px,6px)}}html.game .set>svg{filter:drop-shadow(2px 0 0 var(--line)) drop-shadow(-2px 0 0 var(--line)) drop-shadow(0 2px 0 var(--line)) drop-shadow(0 -2px 0 var(--line))}html.game .petals{width:150px;height:230px;bottom:calc(var(--g) + 10px);pointer-events:none}.petals i{opacity:0;background:#ff9cc2;border:1.5px solid #c94f84;border-radius:60% 0;width:9px;height:6px;position:absolute;top:18%}.petals i:first-child{animation-delay:-.3s;left:12%}.petals i:nth-child(2){animation-delay:-1.4s;left:30%}.petals i:nth-child(3){animation-delay:-2.6s;left:48%}.petals i:nth-child(4){animation-delay:-3.5s;left:66%}.petals i:nth-child(5){animation-delay:-.9s;left:84%}.petals i:nth-child(6){animation-delay:-4.1s;left:22%}.petals i:nth-child(7){animation-delay:-2.1s;left:58%}.petals i:nth-child(8){animation-delay:-3.1s;left:76%}@media (prefers-reduced-motion:no-preference){.petals i{animation:4.6s linear infinite petal}}@keyframes petal{0%{opacity:0;transform:translate(0)rotate(0)}10%{opacity:1}50%{transform:translate(-26px,100px)rotate(160deg)}90%{opacity:1}to{opacity:0;transform:translate(-10px,190px)rotate(320deg)}}.fore{display:none}html.game .fore{z-index:6;pointer-events:none;will-change:transform;height:100%;display:block;position:absolute;bottom:0;left:0}.fore-item{position:absolute;bottom:-12px}.fore-item svg{width:100%;height:auto;display:block}.fore-lamp-blr,.fore-lamp-gla{height:calc(var(--g) + var(--post) - 14px);bottom:-6px}.fore-lamp-blr svg,.fore-lamp-gla svg{height:100%}.fore-thistle svg{filter:drop-shadow(2px 0 0 var(--line)) drop-shadow(-2px 0 0 var(--line)) drop-shadow(0 -2px 0 var(--line))}.fore-cloud{bottom:auto}.fore-cloud .cloud{opacity:.94;width:100%;height:64px;display:block;position:relative;top:0;left:0}.glow{opacity:0;transition:opacity .6s}.is-night .glow{opacity:.32}.lamp-light{transition:fill .6s,stroke .6s}.is-night .fore-lamp-gla .lamp-light{fill:#ffd36b}.fx{display:none}html.game .fx{z-index:8;pointer-events:none;display:block;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.title-card{opacity:0;justify-items:center;gap:12px;margin:0;display:grid;position:absolute;top:13vh;left:50%;transform:translate(-50%)}.tc-num{font:400 clamp(2.8rem, 6.4vw, 5.4rem)/1 var(--display);color:var(--yellow);white-space:nowrap;--ex:#8a1f3a;-webkit-text-stroke:2px var(--ex);paint-order:stroke fill;text-shadow:2px 2px 0 var(--ex), 4px 4px 0 var(--ex), 6px 6px 0 var(--ex), 8px 8px 0 var(--ex)}.tc-place{font:italic 800 1.3rem/1.2 var(--font);color:#fff;background:var(--red);border:3px solid var(--line);box-shadow:4px 4px 0 var(--line);border-radius:6px;padding:6px 18px}.puff{width:70px;height:34px;margin-left:-35px;position:absolute}.puff:before,.puff:after{content:"";background:#efe6d4;border:2px solid #1d243380;border-radius:50%;width:26px;height:26px;position:absolute;bottom:0}.puff:before{left:2px}.puff:after{right:2px}.puff-dust{animation:dust .5s var(--ease) forwards}.puff-kick{animation:dust .45s var(--ease) forwards;margin-left:-60px}.puff-poof{width:120px;height:120px;animation:poof .55s var(--ease) forwards;margin-left:-60px}.puff-poof:before,.puff-poof:after{background:#fff;width:64px;height:64px}.puff-poof:before{bottom:10px;left:4px}.puff-poof:after{bottom:30px;right:4px}@keyframes dust{0%{opacity:.95;transform:scale(.4)}to{opacity:0;transform:scale(1.3)translateY(-8px)}}@keyframes poof{0%{opacity:1;transform:scale(.3)}60%{opacity:.9}to{opacity:0;transform:scale(1.25)}}.confetti i{top:-24px;left:var(--x);background:var(--c);border:1.5px solid var(--line);opacity:0;width:10px;height:16px;position:absolute}html.game .is-finished .confetti i{animation:confetti 2.8s var(--d) cubic-bezier(.3, .6, .5, 1) forwards}@keyframes confetti{0%{opacity:1;transform:translate(0)rotate(0)}50%{transform:translate(24px, calc(var(--fall) * .5)) rotate(calc(var(--r) + 200deg))}to{transform:translate(-12px, var(--fall)) rotate(calc(var(--r) + 520deg));opacity:0}}.coin{border:2.5px solid var(--line);opacity:0;background:#ffd23f;border-radius:50%;width:20px;height:20px;margin-left:-10px;position:absolute;top:4px;left:50%;box-shadow:inset -3px -3px #e0a800}html.game .skill-group.is-open .coin{animation:coin .85s calc(var(--i) * 45ms) var(--ease) forwards}@keyframes coin{0%{opacity:1;transform:translate(0)scale(.6)}45%{transform:translate(calc((var(--i) - 2.5) * 22px), -130px) scale(1);opacity:1}to{transform:translate(calc((var(--i) - 2.5) * 34px), -70px) scale(.5);opacity:0}}.cue{width:0;height:0}.is-measuring .skill-card{transition:none!important;transform:none!important}html.game .has-chart .bars li{grid-template-columns:172px minmax(0,1fr) auto}html.game .has-chart .bar-label{grid-column:auto}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font:"Figtree Variable", "Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;--display:"Bungee", "Syne Variable", system-ui, sans-serif;--brand:"Syne Variable", "Syne", system-ui, sans-serif;--mono:"IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace;--cream:#fbf6ec;--paper:#fffdf8;--ink:#1d2433;--ink-2:#4a5468;--line:#1d2433;--soft:#f1ebde;--accent:#3d4fe0;--accent-soft:#e6e9fd;--red:#d42b35;--red-dark:#a91f28;--yellow:#ffd23f;--ok:#13865c;--sky-top:#4fc0f0;--sky-bot:#c4ecfc;--grass:#5cc34a;--grass-2:#48a83a;--dirt:#b4582f;--dirt-2:#9a4626;--fig-bg:#141922;--fig-ink:#e6ebf2;--fig-dim:#9aa4b4;--fig-line:#2a3240;--fig-blue:#7b93ff;--fig-red:#ff6b6b;--fig-amber:#f5b74a;--fig-teal:#4fd1c5;--fig-violet:#b39dff;--wrap:1080px;--gutter:20px;--hud:64px;--ease:cubic-bezier(.2, .8, .2, 1);--pop:cubic-bezier(.34, 1.56, .64, 1)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:96px}@media (prefers-reduced-motion:no-preference){html:not(.game){scroll-behavior:smooth}}body{min-width:320px;font-family:var(--font);color:var(--ink);background:var(--cream);-webkit-font-smoothing:antialiased;margin:0;font-size:1.0625rem;line-height:1.55;position:relative;overflow-x:clip}img,svg{max-width:100%;display:block}h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}ul,ol{padding:0;list-style:none}a{color:inherit}button{font:inherit;color:inherit}p+p{margin-top:.85em}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.defs{width:0;height:0;position:absolute;overflow:hidden}:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}.skip{z-index:100;background:var(--accent);color:#fff;border-radius:10px;padding:10px 16px;text-decoration:none;position:fixed;top:-60px;left:16px}.skip:focus{top:12px}.ribbon{width:max-content;max-width:100%;font:italic 750 1.15rem/1.2 var(--font);letter-spacing:-.01em;color:#fff;background:var(--red);box-shadow:0 4px 0 var(--red-dark);border-radius:3px;margin:0;padding:7px 18px 8px;display:inline-block;position:relative}.ribbon:before,.ribbon:after{content:"";background:var(--red-dark);width:22px;height:100%;position:absolute;top:9px}.ribbon:before{clip-path:polygon(0 0,100% 0,100% 100%,0 100%,45% 50%);left:-18px}.ribbon:after{clip-path:polygon(0 0,100% 0,55% 50%,100% 100%,0 100%);right:-18px}.ribbon-lg{font-size:clamp(1.1rem,1.6vw,1.4rem)}.board{background:var(--paper);border:3px solid var(--line);box-shadow:6px 6px 0 var(--line);border-radius:18px;padding:40px clamp(20px,3vw,30px) 26px;position:relative;container-type:inline-size}.board>.ribbon:first-child{z-index:1;position:absolute;top:-21px;left:26px}.board h3{letter-spacing:-.02em;font-size:1.3rem;font-weight:750;line-height:1.2}.when{font-variant-numeric:tabular-nums;color:var(--ink);background:var(--yellow);border:2px solid var(--line);border-radius:999px;margin-bottom:8px;padding:2px 10px;font-size:.86rem;font-weight:600;display:inline-block}.org{color:var(--accent);margin-top:2px;font-weight:600}.edu-note{max-width:62ch;margin-top:10px}.section-lede{color:var(--ink-2);max-width:46ch;font-size:1.08rem}.hud{z-index:50;width:min(var(--wrap), 100% - var(--gutter) * 2);background:var(--paper);border:3px solid var(--line);box-shadow:4px 4px 0 var(--line);border-radius:999px;align-items:center;gap:10px;margin:12px auto 0;padding:6px 6px 6px 8px;display:flex;position:sticky;top:12px}.brand{letter-spacing:-.01em;align-items:center;gap:10px;min-height:44px;padding-right:6px;font-weight:750;text-decoration:none;display:inline-flex}.brand-mark{width:36px;height:36px;font:400 .85rem/1 var(--display);color:#fff;background:var(--red);border:2px solid var(--line);border-radius:50%;place-items:center;display:grid}.hud-level{display:none}.nav-links{gap:2px;margin-left:auto;display:flex}.nav-links a{min-height:44px;color:var(--ink-2);border-radius:999px;align-items:center;padding:0 14px;font-weight:600;text-decoration:none;transition:color .2s,background-color .2s;display:inline-flex}.nav-links a:hover{color:var(--ink);background:var(--soft)}.nav-links a.is-active{color:var(--ink);background:var(--yellow)}.view-toggle{cursor:pointer;color:#fff;background:var(--accent);border:2px solid var(--line);min-height:44px;transition:transform .15s var(--ease);border-radius:999px;padding:0 16px;font-weight:700}.view-toggle:hover{transform:translateY(-1px)}.view-toggle:active{transform:translateY(1px)}.menu-toggle{cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;width:44px;height:44px;margin-left:auto;display:none}.menu-toggle svg{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;width:22px;height:22px}@media (max-width:760px){.menu-toggle{display:grid}.view-toggle{display:none}.nav-links{background:var(--paper);border:3px solid var(--line);box-shadow:4px 4px 0 var(--line);border-radius:18px;flex-direction:column;padding:8px;display:none;position:absolute;top:calc(100% + 10px);left:0;right:0}.nav-links.is-open{display:flex}html:not(.js) .nav-links{box-shadow:none;background:0 0;border:0;flex-flow:wrap;padding:0;display:flex;position:static}html:not(.js) .hud{border-radius:22px;flex-wrap:wrap}}.button{cursor:pointer;min-height:48px;color:var(--ink);background:var(--paper);border:2px solid var(--line);box-shadow:3px 3px 0 var(--line);transition:transform .15s var(--ease), box-shadow .15s var(--ease);border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:0 22px;font-weight:700;text-decoration:none;display:inline-flex}.button:hover{box-shadow:4px 4px 0 var(--line);transform:translate(-1px,-1px)}.button:active{box-shadow:1px 1px 0 var(--line);transform:translate(2px,2px)}.button-primary{color:var(--ink);background:var(--yellow)}.chip-link{min-height:44px;color:var(--ink);background:var(--paper);border:2px solid var(--line);box-shadow:3px 3px 0 var(--line);transition:transform .15s var(--ease), box-shadow .15s var(--ease);border-radius:999px;align-items:center;gap:8px;padding:0 16px;font-weight:700;text-decoration:none;display:inline-flex}.chip-link:hover{box-shadow:4px 4px 0 var(--line);transform:translate(-1px,-1px)}.chip-link svg{fill:currentColor;width:18px;height:18px}.title-block{font:400 clamp(3rem, 8.4vw, 7.4rem)/.92 var(--display);letter-spacing:.01em;color:var(--yellow);--ex:#8a1f3a;text-shadow:2px 2px 0 var(--ex), 4px 4px 0 var(--ex), 6px 6px 0 var(--ex), 8px 8px 0 var(--ex), 10px 10px 0 var(--ex), 12px 12px 0 var(--ex);-webkit-text-stroke:2px var(--ex);paint-order:stroke fill;margin-top:18px}.title-block span{display:inline-block}.title-block .t2{color:#ff7aa2}.status{background:var(--paper);border:2px solid var(--line);box-shadow:3px 3px 0 var(--line);border-radius:999px;align-items:center;gap:10px;margin-top:26px;padding:6px 14px 6px 12px;font-size:.95rem;font-weight:650;display:inline-flex}.status-dot{background:var(--ok);border-radius:50%;width:9px;height:9px;position:relative}.status-dot:after{content:"";border:2px solid var(--ok);opacity:0;border-radius:50%;position:absolute;top:-4px;bottom:-4px;left:-4px;right:-4px}@media (prefers-reduced-motion:no-preference){.status-dot:after{animation:ping 2.4s var(--ease) infinite}}@keyframes ping{0%{opacity:.7;transform:scale(.6)}80%,to{opacity:0;transform:scale(1.6)}}.headline{font:800 clamp(2.2rem, 5.6vw, 4.4rem)/.95 var(--brand);letter-spacing:-.035em;color:var(--ink);margin-top:18px}.headline .line{display:block}.headline .hit .ln{color:var(--red)}.uline{display:none}.hero-lede{max-width:54ch;margin-top:12px;font-size:1.08rem}.hero-links{flex-wrap:wrap;gap:10px;margin-top:20px;display:flex}.about-body{grid-template-columns:minmax(0,1fr);gap:22px;display:grid}@container (width>=600px){.about-body{grid-template-columns:190px minmax(0,1fr);align-items:start}}.about-photo img{aspect-ratio:4/5;object-fit:cover;border:3px solid var(--line);border-radius:14px;width:100%;max-width:220px;height:auto}.about-text{max-width:64ch}.timeline{gap:22px;display:grid}@container (width>=760px){.timeline{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px}}.entry h3{font-size:1.15rem}.bullets{gap:6px;margin-top:10px;display:grid}.bullets li{padding-left:20px;position:relative}.bullets li:before{content:"";background:var(--red);border:1.5px solid var(--line);border-radius:2px;width:9px;height:9px;position:absolute;top:.55em;left:2px;transform:rotate(45deg)}.project{grid-template-columns:minmax(0,1fr);gap:20px;display:grid}@media (min-width:900px){.project{grid-template-columns:minmax(0,1fr) 380px;grid-template-areas:"head media""facts facts";column-gap:32px}.project-head{grid-area:head}.project-media{grid-area:media}.facts{grid-area:facts;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column}}html.game .project.has-chart{grid-template-columns:minmax(0,1fr) 720px}html.game .has-chart .project-media{grid-template-columns:repeat(2,minmax(0,1fr))}.project-meta{color:#fff;background:var(--accent);border:2px solid var(--line);border-radius:999px;padding:2px 12px;font-size:.86rem;font-weight:700;display:inline-block}.project h3{margin-top:10px;font-size:clamp(1.35rem,2.2vw,1.75rem);line-height:1.15}.project-lede{margin-top:8px}.facts{border-top:2px dashed color-mix(in srgb, var(--line) 30%, transparent);gap:14px 24px;padding-top:16px;font-size:.95rem;display:grid}.facts dt{color:var(--red-dark);font-size:.86rem;font-weight:750;display:inline-block}.facts dd{margin:2px 0 0}.stack{flex-wrap:wrap;gap:6px;margin-top:14px;display:flex}.stack li{background:var(--soft);border:1.5px solid color-mix(in srgb, var(--line) 25%, transparent);color:var(--ink-2);border-radius:999px;padding:2px 10px;font-size:.84rem;font-weight:600}.project-link{min-height:44px;color:var(--accent);text-underline-offset:4px;align-items:center;margin-top:8px;font-weight:750;text-decoration:underline;text-decoration-thickness:2px;display:inline-flex}.project-link:after{content:"→";transition:transform .2s var(--ease);margin-left:6px}.project-link:hover:after{transform:translate(4px)}.project-link.is-muted{color:var(--ink-2);font-weight:600;text-decoration:none}.project-link.is-muted:after{content:none}.project-media{align-content:start;gap:14px;display:grid}.project-media .figure{border:3px solid var(--line)}.chart{background:var(--soft);border:2px solid var(--line);border-radius:14px;padding:14px 16px}.chart-title{margin-bottom:10px;font-size:.9rem;font-weight:700}.bars{gap:7px;display:grid}.bars li{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 10px;display:grid}.bar-label{color:var(--ink-2);grid-column:1/-1;font-size:.84rem}.bar{background:var(--paper);border:1.5px solid var(--line);border-radius:99px;height:10px;overflow:hidden}.bar-fill{height:100%;width:calc(var(--v) * 1%);background:#9aa3b5;display:block}.bars li.is-key .bar-label{color:var(--ink);font-weight:700}.bars li.is-key .bar-fill{background:var(--accent)}.bar-value{text-align:right;font-variant-numeric:tabular-nums;min-width:3.4ch;font-size:.88rem;font-weight:700}.chart-note{color:var(--ink-2);margin-top:10px;font-size:.84rem}.skill-card h3{margin-bottom:12px;font-size:1.1rem}.skill-card ul{flex-wrap:wrap;gap:6px;display:flex}.skill-card li{background:var(--soft);border:1.5px solid var(--line);border-radius:999px;padding:3px 11px;font-size:.9rem;font-weight:600}.skill-group:first-of-type .skill-card li{background:#ffe8ee}.skill-group:nth-of-type(2) .skill-card li{background:#e3f4ff}.skill-group:nth-of-type(3) .skill-card li{background:#fff3cc}.skill-group:nth-of-type(4) .skill-card li{background:#e4f7df}.qblock{display:none}.board-contact{color:#fff;background:radial-gradient(70% 90% at 100% 0,#ffffff29,#0000 60%),linear-gradient(135deg,#2f3fd0,#5338c9 55%,#19769a);overflow:visible}.board-contact h2{letter-spacing:-.035em;max-width:18ch;font-size:clamp(1.9rem,3.8vw,3rem);font-weight:780;line-height:1.05}.contact-lede{color:#fffffff0;max-width:54ch;margin-top:12px;font-size:1.1rem}.contact-actions{flex-wrap:wrap;gap:12px;margin-top:24px;display:flex}.board-contact .button{color:#fff;background:#ffffff1a;border-color:#fff;box-shadow:3px 3px #00000059}.board-contact .button:hover{background:#ffffff2e}.board-contact .button-primary{color:var(--ink);background:var(--yellow);border-color:var(--line);box-shadow:3px 3px 0 var(--line)}.copy-email{flex-wrap:wrap;max-width:100%}@media (max-width:480px){.copy-email{border-radius:18px;width:100%;padding-block-start:10px;padding-block-end:10px}}.copy-email-addr{overflow-wrap:anywhere}.copy-email-state{background:var(--paper);color:var(--ink);border:1.5px solid var(--line);border-radius:999px;padding:2px 10px;font-size:.8rem}.contact-fine{color:#ffffffeb;max-width:64ch;margin-top:22px}.footer{flex-wrap:wrap;justify-content:space-between;gap:6px 24px;font-size:.92rem;font-weight:600;display:flex}.footer p+p{margin-top:0}html:not(.game) .stage{position:relative}html:not(.game) .sky,html:not(.game) .set,html:not(.game) .player,html:not(.game) .intro-count,html:not(.game) .intro-hint{display:none}html:not(.game) .zone{width:min(var(--wrap), 100% - var(--gutter) * 2);margin:0 auto}html:not(.game) .zone>*+*,html:not(.game) .work>*+*,html:not(.game) .skills>*+*{margin-top:48px}html:not(.game) .zone+.zone{margin-top:64px}html:not(.game) .zone-flight{display:none}html:not(.game) .zone-start{width:100%;padding:120px max(var(--gutter), (100% - var(--wrap)) / 2) 120px;background:linear-gradient(var(--sky-top), var(--sky-bot));margin-top:-76px;position:relative;overflow:hidden}html:not(.game) .zone-start:after{content:"";border-top:14px solid var(--grass);background:linear-gradient(135deg, var(--dirt-2) 25%, transparent 25%) -20px 0 / 40px 40px, linear-gradient(225deg, var(--dirt-2) 25%, transparent 25%) -20px 0 / 40px 40px, linear-gradient(315deg, var(--dirt-2) 25%, transparent 25%) 0 0 / 40px 40px, linear-gradient(45deg, var(--dirt-2) 25%, transparent 25%) 0 0 / 40px 40px, var(--dirt);height:64px;position:absolute;bottom:0;left:0;right:0}html:not(.game) .start{position:relative}.plain-avatar{display:none}html:not(.game) .plain-avatar{width:clamp(70px,10vw,120px);height:auto;display:block;position:absolute;bottom:-66px;right:2%}@media (max-width:720px){html:not(.game) .plain-avatar{margin:26px 0 -54px auto;position:relative;bottom:auto;right:auto}}html:not(.game) .board{margin-top:30px}html:not(.game) .gate{font:400 1rem/1 var(--display);color:var(--ink);align-items:center;gap:10px;margin-bottom:-14px;display:inline-flex}html:not(.game) .gate-num{color:#fff;background:var(--red);border:2px solid var(--line);border-radius:8px;padding:8px 12px}html:not(.game) .gate-place{font-family:var(--font);font-size:1.1rem;font-weight:750}html:not(.game) .work{display:block}html:not(.game) .board-intro{padding-bottom:22px}html:not(.game) .skills{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 24px;display:grid}html:not(.game) .skills>*+*{margin-top:0}html:not(.game) .skills .board-intro{box-shadow:none;background:0 0;border:0;grid-column:1/-1;padding:0}html:not(.game) .skills .board-intro .ribbon{position:relative;top:0;left:18px}@media (max-width:760px){html:not(.game) .skills{grid-template-columns:minmax(0,1fr)}}html:not(.game) .skill-card{height:100%;padding-top:24px}html:not(.game) .board-contact .ribbon-top{position:absolute;top:-21px;left:26px}html:not(.game) .footer{padding:30px max(var(--gutter), (100vw - var(--wrap)) / 2) 36px;color:#fff;background:var(--dirt);border-top:14px solid var(--grass);margin:72px calc(50% - 50vw) 0}html:not(.game) .zone-gla{padding-bottom:0}@media (prefers-reduced-motion:no-preference){.js .start>*{animation:rise .7s var(--ease) both}.js .start>:nth-child(2){animation-delay:60ms}.js .start>:nth-child(3){animation-delay:.12s}.js .start>:nth-child(4){animation-delay:.18s}.js .start>:nth-child(5){animation-delay:.24s}.js .start>:nth-child(6){animation-delay:.3s}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}#px-canvas,.w3d-only{display:none}html.px{--px-ink:#1a1c2c;--px-paper:#f8f8f0;--px-frame:#3a6ea5;--px-frame-2:#8cc8f4;--px-gold:#ffd23f;--px-red:#c8322f;--pix:"Press Start 2P", "Courier New", monospace;--pbody:"Pixelify Sans Variable", "Pixelify Sans", "Figtree Variable", system-ui, sans-serif;--col:clamp(380px, 35vw, 540px);--edge:clamp(20px, 4vw, 72px)}html.px-boot body{background:#0a0518!important}html.px-boot main,html.px-boot .hud,html.px-boot #px-canvas,html.px-boot body:before{visibility:hidden}html.px body{color:var(--px-ink);font-family:var(--pbody);background:#10131c;font-size:1.08rem;line-height:1.45}html.px #px-canvas{z-index:0;image-rendering:pixelated;image-rendering:crisp-edges;opacity:0;transition:opacity .5s steps(5,end);display:block;position:fixed;top:0;left:0}html.px #px-canvas.is-ready{opacity:1}html.px main{z-index:2;position:relative}html.px .w3d-only{display:block}html.px .stats,html.px .flt-route,html.px .gate,html.px .plain-avatar,html.px .hint,html.px .about-photo{display:none}html.px .hud{width:auto;color:var(--px-ink);background:var(--px-paper);border:4px solid var(--px-ink);box-shadow:inset 0 0 0 3px var(--px-frame-2);-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:10px;margin:0;position:fixed;top:12px;left:14px;right:14px}html.px .hud:before,html.px .hud:after{content:none}html.px .brand{font:400 .72rem/1 var(--pix);color:var(--px-ink)}html.px .brand-mark{background:var(--px-red);color:#fff;font:400 .6rem/1 var(--pix);border:2px solid var(--px-ink);border-radius:4px}html.px .hud-level{font:400 .6rem/1 var(--pix);color:var(--px-red);text-transform:uppercase;margin:0 auto 0 10px;transition:opacity .3s .7s;display:block}html.px.at-arcade .hud-level{opacity:0;transition:opacity .15s}html.px .nav-links a{font:600 1rem/1 var(--pbody);color:var(--px-ink);border-radius:6px}html.px .nav-links a:hover{background:#e6e2d2}html.px .nav-links a.is-active{background:var(--px-gold);box-shadow:none}html.px .view-toggle{font:400 .6rem/1 var(--pix);color:var(--px-ink);background:var(--px-frame-2);border:3px solid var(--px-ink);border-radius:6px}html.px .zone{width:auto;padding:0 0 0 var(--edge);margin:0}html.px .zone+.zone{margin-top:0}html.px .zone>*,html.px .work>*,html.px .skills>*{max-width:var(--col)}html.px .zone>*+*,html.px .work>*+*,html.px .skills>*+*{margin-top:0}html.px .px-stop{margin-bottom:0;transition:opacity .3s steps(4,end),transform .3s steps(4,end);margin-top:70vh!important}html.px #top{margin-top:0!important}html.px .px-stop:not(.is-current){opacity:.2;transform:translateY(8px)}html.px .zone-gla{padding-bottom:8vh}html.px .zone-flight{display:block}html.px .px-stop,html.px .start{color:var(--px-ink);background:var(--px-paper);border:4px solid var(--px-ink);box-shadow:inset 0 0 0 4px var(--px-frame), inset 0 0 0 7px var(--px-frame-2), 6px 6px 0 #10131c73;border-radius:12px;padding:22px 22px 20px;position:relative}html.px .skills.px-stop{gap:12px;display:grid}html.px .board{box-shadow:none;background:0 0;border:0;border-radius:0;padding:0}html.px .px-stop.board{background:var(--px-paper);border:4px solid var(--px-ink);box-shadow:inset 0 0 0 4px var(--px-frame), inset 0 0 0 7px var(--px-frame-2), 6px 6px 0 #10131c73;border-radius:12px;padding:22px 22px 20px}html.px .ribbon,html.px .board>.ribbon:first-child,html.px .board-contact .ribbon-top{width:auto;box-shadow:none;font:400 .95rem/1.5 var(--pix);letter-spacing:0;color:var(--px-red);background:0 0;margin:0 0 12px;padding:0;font-style:normal;display:block;position:static}html.px .ribbon:before,html.px .ribbon:after{content:none}html.px .board h3,html.px .project h3{font:600 1.35rem/1.2 var(--pbody);letter-spacing:0;color:var(--px-ink)}html.px .when,html.px .project-meta{font:400 .55rem/1.6 var(--pix);color:var(--px-ink);background:var(--px-gold);border:2px solid var(--px-ink);border-radius:4px;padding:3px 8px}html.px .org{color:var(--px-frame);font-weight:600}html.px .section-lede,html.px .edu-note,html.px .about-text,html.px .bullets,html.px .project-lede,html.px .facts dd,html.px .hero-lede,html.px .contact-lede,html.px .contact-fine{color:#2c3046}html.px .bullets li:before{background:var(--px-red);border:0;border-radius:0;width:7px;height:7px;transform:none}html.px .facts{border-top:3px dotted var(--px-ink);grid-auto-flow:row;font-size:1rem}html.px .facts dt{font:400 .55rem/1.8 var(--pix);color:var(--px-red)}html.px .stack li,html.px .skill-card li{font:600 .92rem/1.3 var(--pbody);color:var(--px-ink);border:2px solid var(--px-ink);background:#e9f3fb;border-radius:4px}html.px .project,html.px .timeline{grid-template-columns:minmax(0,1fr);grid-template-areas:none}html.px .project-head,html.px .project-media,html.px .facts{grid-area:auto}html.px .project-media .figure,html.px .chart{border:3px solid var(--px-ink);border-radius:6px}html.px .project-link{color:var(--px-frame)}html.px .project{gap:8px;font-size:.9rem;line-height:1.3;max-width:clamp(420px,41vw,640px)!important;padding:14px 16px 12px!important}html.px .project .figure{display:none}html.px .project h3{margin-top:6px;font-size:1.2rem}html.px .project .facts{gap:4px;padding-top:6px;font-size:.88rem}html.px .project .facts dt{line-height:1.4}html.px .project .chart-title,html.px .project .bar-label,html.px .project .chart-note{font-size:.8rem}html.px .project .stack{margin-top:8px}html.px .project .chart{padding:8px 10px}html.px .project .bars{gap:3px}html.px .project .bars li{grid-template-columns:minmax(0,11em) minmax(0,1fr) auto}html.px .project .bar-label{grid-column:auto}html.px .project .chart-note{margin-top:6px}html.px .bar{border:2px solid var(--px-ink);border-radius:0;height:10px}html.px .bars li.is-key .bar-fill{background:var(--px-red)}html.px .skills .board-intro{padding:0}html.px .skills{max-width:clamp(420px,41vw,640px)!important}html.px .skill-card ul{gap:4px}html.px .skill-card h3{font:400 .62rem/1.8 var(--pix);margin-bottom:6px}html.px .footer{color:var(--px-paper);text-shadow:2px 2px 0 var(--px-ink);font:600 .95rem var(--pbody);background:0 0;border:0;margin:12px 0 0;padding:0 6px}html.px .zone-start{min-height:100vh;padding:0 0 0 var(--edge);background:0 0;align-items:center;margin:0;display:flex;overflow:visible}html.px .zone-start:after{content:none}html.px .start{max-width:var(--col);margin-top:70px}html.px .start .ribbon{color:var(--px-frame);margin-bottom:8px;font-size:.6rem}html.px .title-block{font:400 clamp(1.5rem, 2.6vw, 2.2rem)/1.2 var(--pix);letter-spacing:0;white-space:nowrap;color:var(--px-gold);-webkit-text-stroke:0;text-shadow:3px 3px 0 #2b3a67, 5px 5px 0 var(--px-ink);margin:0}html.px .title-block .t2{color:var(--px-gold)}html.px .headline{font:400 clamp(1rem, 1.7vw, 1.4rem)/1.7 var(--pix);letter-spacing:0;color:var(--px-ink);margin-top:20px}html.px .headline .hit .ln{color:var(--px-red);font-style:normal;font-weight:400}html.px .status{font:600 1rem var(--pbody);color:var(--px-ink);border:2px solid var(--px-ink);box-shadow:none;background:#e9f3fb;border-radius:4px;margin-top:14px}html.px .chip-link,html.px .button{font:600 1rem var(--pbody);color:var(--px-ink);background:var(--px-paper);border:3px solid var(--px-ink);box-shadow:3px 3px 0 var(--px-ink);border-radius:6px}html.px .chip-link:hover,html.px .button:hover{box-shadow:4px 4px 0 var(--px-ink);transform:translate(-1px,-1px)}html.px .button-primary{background:var(--px-gold)}html.px .board-contact{background:var(--px-paper);color:var(--px-ink)}html.px .board-contact h2{font:400 clamp(.9rem, 1.4vw, 1.15rem)/1.7 var(--pix);letter-spacing:0;color:var(--px-ink);max-width:none}html.px .flight-stop .place-name{font:400 1rem/1.6 var(--pix);color:var(--px-ink);margin:0}html.px .flight-stop .place-line{font:600 1.1rem/1.4 var(--pbody);color:#2c3046;margin:6px 0 0}html.px .set-finish{margin-top:12px;display:block}html.px .set-finish>:not(.finish-banner){display:none}html.px .finish-banner{font:400 .8rem/1.6 var(--pix);color:var(--px-gold);text-shadow:2px 2px 0 var(--px-ink);padding:0 6px}@media (prefers-reduced-motion:reduce){html.px .px-stop{transition:none;opacity:1!important;transform:none!important}}html:not(.px){--display:"Press Start 2P", "Courier New", monospace;--line:#1a1c2c;--ink:#1a1c2c;--cream:#eef6e8;--paper:#f8f8f0;--red:#c8322f;--red-dark:#8f2320;--yellow:#ffd23f;--accent:#3a6ea5}html:not(.px) body{background:#eef6e8}html:not(.px) .board{border:4px solid var(--line);box-shadow:inset 0 0 0 4px #8cc8f4, 6px 6px 0 var(--line);border-radius:12px}html:not(.px) .ribbon{font:400 .8rem/1.6 var(--display);border-radius:4px}html:not(.px) .title-block{font:400 clamp(1.6rem, 5.4vw, 3.6rem)/1.2 var(--display);letter-spacing:0;-webkit-text-stroke:0;text-shadow:4px 4px 0 #2b3a67, 7px 7px 0 var(--line)}html:not(.px) .title-block .t2{color:var(--yellow)}html:not(.px) .headline{font:400 clamp(1rem, 2.6vw, 1.7rem)/1.7 var(--display);letter-spacing:0}html:not(.px) .headline .hit .ln{font-style:normal;font-weight:400}html:not(.px) .board h3{font-weight:700}html:not(.px) .when,html:not(.px) .project-meta{font:400 .6rem/1.7 var(--display);border-radius:4px}html:not(.px) .gate-num{font:400 .6rem/1.4 var(--display);border-radius:4px}html:not(.px) .facts dt{font:400 .58rem/1.8 var(--display)}html:not(.px) .stack li,html:not(.px) .skill-card li,html:not(.px) .chip-link,html:not(.px) .button,html:not(.px) .status{border-radius:6px}html:not(.px) .hud{border-width:4px;border-radius:12px}html:not(.px) .brand-mark{border-radius:4px;font-size:.6rem}html:not(.px) .nav-links a{border-radius:6px}html:not(.px) .view-toggle{font:400 .6rem/1 var(--display);border-radius:6px}html:not(.px) .zone-start{image-rendering:pixelated;background:linear-gradient(#6fc8f4,#c4ecfc)}html:not(.px) .zone-start:after{background:repeating-linear-gradient(90deg,#e6cf94 0 16px,#dcc284 16px 32px);border-top:16px solid #5fb84a;height:48px}html:not(.px) .plain-avatar{image-rendering:pixelated}html:not(.px) .stats,html:not(.px) .flt-route{display:none}html.px .project.is-current{transform:translateY(30px)}.bt,html.px .project>:not(.bt){display:none}html.px .project{display:block;padding:10px!important}html.px .bt{gap:8px;display:grid}html.px .bt-arena{border:3px solid var(--px-ink);height:180px;image-rendering:pixelated;background:radial-gradient(28% 12% at 82% 60%,#b7e08a 0 98%,#0000 100%),radial-gradient(34% 16% at 16% 100%,#b7e08a 0 98%,#0000 100%),linear-gradient(#bfe8ff 0 46%,#dff5d0 46% 100%);border-radius:6px;position:relative;overflow:hidden}html.px .bt-plate{background:var(--px-paper);border:3px solid var(--px-ink);border-radius:6px 2px;max-width:56%;padding:6px 9px;position:absolute;box-shadow:3px 3px #1a1c2c59}html.px .bt-foe{top:8px;left:8px}html.px .bt-me{padding:4px 8px;bottom:6px;right:8px}html.px .bt-name{font:400 .5rem/1.5 var(--pix);text-transform:uppercase;color:var(--px-ink);margin:0}html.px .bt-meta{font:600 .78rem/1.1 var(--pbody);color:#4a5068;margin:2px 0 0}html.px .bt-hp{align-items:center;gap:6px;margin-top:5px;display:flex}html.px .bt-hp b{font:400 .45rem/1 var(--pix);color:#d98a1a}html.px .bt-hp:after{content:"";order:2}html.px .bt-hp span{width:100%;height:6px;box-shadow:0 0 0 2px var(--px-ink);background:#3fc45a;transition:width .7s steps(8,end),background-color .3s;display:block}html.px .bt-hp{background:linear-gradient(#3a3f52,#3a3f52) 100%/calc(100% - 26px) 6px no-repeat;width:150px}html.px .bt-hp span[style*="width: 3"],html.px .bt-hp span[style*="width: 5"]{background:#f2c21a}html.px .bt-hp span[style*="width: 0"]{background:#e23d3d}html.px .bt-foe-sprite{width:102px;height:auto;image-rendering:pixelated;position:absolute;top:4px;right:6%}html.px .bt-me-sprite{width:70px;height:auto;image-rendering:pixelated;position:absolute;bottom:4px;left:7%}html.px .bt-foe-sprite.is-hit{animation:.5s steps(2,end) bt-hit}@keyframes bt-hit{0%,50%{opacity:0;transform:translate(6px)}25%,75%{opacity:1;transform:translate(-4px)}}html.px .bt-box{background:var(--px-paper);border:3px solid var(--px-ink);border-radius:8px;min-height:128px;padding:10px 12px;box-shadow:inset 0 0 0 3px #e23d3d44}html.px .bt-label{font:400 .52rem/1.6 var(--pix);text-transform:uppercase;color:var(--px-red);margin:0 0 4px}html.px .bt-say{font:600 .98rem/1.36 var(--pbody);color:var(--px-ink);margin:0}html.px .bt-chart{margin-top:8px}html.px .bt-moves{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}html.px .bt-move{font:400 .5rem/1.5 var(--pix);text-transform:uppercase;text-align:left;color:var(--px-ink);background:var(--px-paper);border:3px solid var(--px-ink);cursor:pointer;box-shadow:2px 2px 0 var(--px-ink);border-radius:6px;padding:7px 8px 7px 22px;position:relative}html.px .bt-move:hover{background:#e9f3fb}html.px .bt-move[aria-pressed=true]{background:var(--px-gold)}html.px .bt-move[aria-pressed=true]:before{content:"▶";font-size:.5rem;position:absolute;top:7px;left:7px}html.px .bt-box{position:relative}html.px .bt-more{border:6px solid #0000;border-top:8px solid var(--px-red);border-bottom:0;width:0;height:0;position:absolute;bottom:6px;right:10px}html.px .bt-hint{font:400 .5rem/1.4 var(--pix);text-transform:uppercase;color:var(--px-ink);margin:0 0 -3px}html.px .bt-hint:after{content:" ▼";color:var(--px-red);display:inline-block}html.px .bt-move{transition:transform 80ms steps(2,end),box-shadow 80ms steps(2,end)}html.px .bt-move:hover{box-shadow:3px 3px 0 var(--px-ink);transform:translate(-1px,-1px)}html.px .bt-move:active{box-shadow:0 0 0 var(--px-ink);transform:translate(2px,2px)}html.px .bt-move.is-next:before{content:"▶";color:var(--px-red);font-size:.5rem;position:absolute;top:7px;left:7px}@media (prefers-reduced-motion:no-preference){html.px .bt-more,html.px .bt-hint:after{animation:.7s steps(2,end) infinite bt-bob}html.px .bt-move.is-next{animation:1.1s steps(2,end) infinite bt-pulse}html.px .bt-move.is-next:before{animation:.55s steps(2,end) infinite bt-nudge}html.px .project.is-current .bt-arena{animation:.5s step-end bt-flash}html.px .project.is-current .bt-me-sprite{animation:.5s steps(5,end) .2s backwards bt-enter}}@keyframes bt-flash{0%,40%{filter:brightness(4)saturate(0)}20%,60%,to{filter:none}}@keyframes bt-enter{0%{transform:translate(-60px)}}@keyframes bt-bob{50%{transform:translateY(3px)}}@keyframes bt-nudge{50%{transform:translate(3px)}}@keyframes bt-pulse{50%{box-shadow:2px 2px 0 var(--px-ink), 0 0 0 3px var(--px-gold);background:#fff3c4}}html.px .bt-items{margin:0}html.px .bt .project-link{min-height:0;margin-top:0}html.px .skills{counter-reset:tm;grid-template-columns:minmax(0,1fr)!important;gap:8px!important}html.px .skill-group:nth-of-type(2){--tm:#4d8dff}html.px .skill-group:nth-of-type(3){--tm:#ff8c5a}html.px .skill-group:nth-of-type(4){--tm:#3fe0c4}html.px .skill-group:nth-of-type(5){--tm:#b39dff}html.px .skill-card{border:3px solid var(--px-ink);background:#2b3a67;border-radius:8px;box-shadow:inset 0 0 0 2px #4a5c96;height:auto!important;margin-top:0!important;padding:5px 7px 7px!important}html.px .skill-card h3{color:var(--px-gold);margin-bottom:3px}html.px .skill-card h3:before{content:"TM CASE · ";color:#8cc8f4}html.px .skill-card ul{grid-template-columns:repeat(3,minmax(0,1fr));gap:3px 5px;display:grid}html.px .skill-card li{counter-increment:tm;min-width:0;min-height:26px;font:600 .78rem/1.08 var(--pbody);overflow-wrap:break-word;-webkit-hyphens:none;hyphens:none;color:var(--px-ink);background:var(--px-paper);border:2px solid var(--px-ink);border-radius:13px 4px 4px 13px;align-items:center;gap:6px;padding:2px 4px 2px 28px;display:flex;position:relative}html.px .skill-card li:before{content:attr(data-tm);font:400 .4rem/1 var(--pix);color:#5a6078;flex:none}html.px .skill-card li:after{content:"";width:22px;height:22px;box-shadow:0 0 0 2px var(--px-ink);background:radial-gradient(circle, var(--px-paper) 0 2px, var(--px-ink) 2px 3.5px, transparent 3.5px), conic-gradient(from 30deg, var(--tm), #fff 12%, var(--tm) 25%, color-mix(in srgb, var(--tm) 60%, #000) 50%, var(--tm) 62%, #fff 74%, var(--tm) 88%);border-radius:50%;margin-top:-11px;position:absolute;top:50%;left:2px}html.px .skill-card li{cursor:var(--cur-hot,pointer);transition:transform .12s steps(2,end),background-color .12s}html.px .skill-card li:hover,html.px .skill-card li.is-loaded{background:var(--px-gold);box-shadow:0 2px 0 var(--px-ink);transform:translateY(-2px)}.tm-player{display:none}html.px .tm-player{--tm:#4d8dff;color:var(--px-paper);border:3px solid var(--px-ink);background:#1e2a4d;border-radius:8px;align-items:center;gap:10px;margin-top:4px;padding:4px 10px 4px 6px;display:flex;box-shadow:inset 0 0 0 2px #4a5c96}html.px .tm-big{width:34px;height:34px;box-shadow:0 0 0 2px var(--px-ink), 0 0 0 4px color-mix(in srgb, var(--tm) 45%, transparent);background:radial-gradient(circle, var(--px-paper) 0 3px, var(--px-ink) 3px 5px, transparent 5px), conic-gradient(from 30deg, var(--tm), #fff 12%, var(--tm) 25%, color-mix(in srgb, var(--tm) 60%, #000) 50%, var(--tm) 62%, #fff 74%, var(--tm) 88%);border-radius:50%;flex:none}html.px .tm-text{min-width:0}html.px .tm-player p{margin:0}html.px .tm-no{font:400 .5rem/1.6 var(--pix);color:var(--px-gold)}html.px .tm-name{font:700 1rem/1.15 var(--pbody);color:#fff}html.px .tm-case{font:400 .45rem/1.6 var(--pix);color:var(--tm);text-align:right;max-width:40%;margin-left:auto!important}@media (prefers-reduced-motion:no-preference){html.px .tm-big{animation:1.6s steps(16,end) infinite tm-spin}html.px .tm-player.is-in .tm-text{animation:.25s steps(4,end) backwards tm-in}html.px .skill-card li.is-loaded:after{animation:.8s steps(12,end) infinite tm-spin}html.px .skills.is-current .skill-card li{animation:.3s steps(4,end) backwards tm-drop;animation-delay:calc(var(--i,0) * 22ms + .15s)}}@keyframes tm-in{0%{opacity:0;transform:translate(10px)}}@keyframes tm-drop{0%{opacity:0;transform:translateY(-10px)}}@media (prefers-reduced-motion:no-preference){html.px .skill-card li:hover:after{animation:.8s steps(12,end) infinite tm-spin}}@keyframes tm-spin{to{transform:rotate(360deg)}}html.px .skills.is-current{transform:translateY(26px)}html.px .skills .board-intro .section-lede{display:none}html.px .skills .board-intro .ribbon{margin-bottom:2px}html{cursor:var(--cur,auto)}html a,html button,html summary,html label,html [role=button],html .bt-move,html .chip-link,html .button,html .nav-links a{cursor:var(--cur-hot,pointer)}.arcade{display:none}html.px .arcade{z-index:40;background:#0a0518;transition:opacity .2s;display:block;position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}html.px .arcade-world{transform-origin:0 0;will-change:transform;transition:transform .95s cubic-bezier(.6,0,.25,1);position:absolute;top:0;left:0}html.px .arcade-room{image-rendering:pixelated;image-rendering:crisp-edges;display:block}html.px .arcade-start{padding:calc(var(--k) * 1px) calc(var(--k) * 4px);font:400 calc(var(--k) * 4px)/1.3 var(--pix);text-transform:uppercase;color:#1a1c2c;border:calc(var(--k) * 1px) solid #1a1c2c;border-radius:calc(var(--k) * 1px);box-shadow:inset 0 calc(var(--k) * 1px) 0 #fff3c4, inset 0 calc(var(--k) * -1px) 0 #e9a23a, 0 0 calc(var(--k) * 4px) #ffd23f;background:#ffd23f;position:absolute;transform:translate(-50%)}html.px .arcade-start:hover{background:#fff3c4;outline:none}html.px .arcade-start:focus-visible{background:#fff3c4;outline:none}html.px .arcade-start:active{transform:translate(-50%, calc(var(--k) * 1px))}html.px .arcade-sub{padding:calc(var(--k) * 1px) calc(var(--k) * 2px);white-space:nowrap;font:400 calc(var(--k) * 2.5px)/1.3 var(--pix);text-transform:uppercase;color:#f8f8f0;border-radius:calc(var(--k) * 1px);pointer-events:none;background:#1a1038d1;margin:0;position:absolute;transform:translate(-50%)}html.px .arcade.is-playing{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .3s steps(4,end) .8s,visibility 0s 1.1s}html.px .arcade.is-playing .arcade-start,html.px .arcade.is-playing .arcade-sub{opacity:0;transition:opacity .2s}@media (prefers-reduced-motion:no-preference){html.px .arcade-start{animation:.9s steps(2,end) infinite arcade-pulse}html.px .arcade-sub{animation:1.1s steps(2,end) infinite arcade-blink}}@keyframes arcade-pulse{50%{box-shadow:inset 0 calc(var(--k) * 1px) 0 #fff, inset 0 calc(var(--k) * -1px) 0 #e9a23a, 0 0 calc(var(--k) * 8px) #ffd23f, 0 0 0 calc(var(--k) * 1px) #ff4fd8;background:#fff3c4}}@keyframes arcade-blink{50%{color:#ffd23f}}.px-scene{display:none}html:not(.px) .px-scene{height:calc(var(--h) * 3px);border:4px solid var(--line);box-shadow:inset 0 0 0 4px #8cc8f4, 6px 6px 0 var(--line);background:#1a1c2c;border-radius:12px;margin:8px 0 26px;display:block;position:relative;overflow:hidden}html:not(.px) .px-scene canvas{width:1080px;max-width:none;height:calc(var(--h) * 3px);image-rendering:pixelated;image-rendering:crisp-edges;position:absolute;top:0;left:50%;transform:translate(-50%)}@media (max-width:760px){html:not(.px) .px-scene{height:calc(var(--h) * 2px)}html:not(.px) .px-scene canvas{width:720px;height:calc(var(--h) * 2px)}}html:not(.px) .zone-start{background:var(--plain-hero,none) center bottom 62px / 640px auto repeat-x, linear-gradient(#6fc8f4, #c4ecfc);image-rendering:pixelated}html:not(.px) .zone-start>*,html:not(.px) body{position:relative}@media (min-width:1340px){html:not(.px) body:before,html:not(.px) body:after{content:"";width:128px;image-rendering:pixelated;opacity:.9;pointer-events:none;background-repeat:repeat-y;background-size:128px;position:absolute;top:760px;bottom:120px}html:not(.px) body:before{background-image:var(--plain-gut-l);left:26px}html:not(.px) body:after{background-image:var(--plain-gut-r);right:26px}}html:not(.px) svg.plain-avatar{display:none}html:not(.px) canvas.plain-avatar-px{width:84px;height:108px;image-rendering:pixelated;image-rendering:crisp-edges;filter:drop-shadow(0 6px #1a1c2c40);bottom:-74px}@media (max-width:720px){html:not(.px) canvas.plain-avatar-px{z-index:1;width:70px;height:90px;margin:26px 0 0 auto;position:relative}}.px-fig-art,html:not(.px) .figure.has-px>svg,html:not(.px) .figure.has-px>.denoise-strip{display:none}html:not(.px) .figure.has-px .px-fig-art{width:100%;height:auto;image-rendering:pixelated;image-rendering:crisp-edges;border-bottom:3px solid var(--line);display:block}html:not(.px) .figure.has-px{border:4px solid var(--line);background:#1e2a4d;border-radius:8px;box-shadow:inset 0 0 0 3px #4a5c96}html:not(.px) .figure.has-px .figure-bar{font:400 .5rem/1.8 var(--display);text-transform:uppercase;border-bottom:3px solid var(--line);color:#8cc8f4}html:not(.px) .figure.has-px .figure-bar>:last-child{color:#ffd23f}html:not(.px) .px-scene{scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;overflow:auto hidden}html:not(.px) .px-scene::-webkit-scrollbar{display:none}html:not(.px) .px-scene canvas{display:block;position:static;left:auto;transform:none}@media (max-width:760px){.view-toggle{min-height:44px;margin-left:auto;padding:0 10px;display:block}.menu-toggle{flex:none;margin-left:6px}.view-toggle{white-space:nowrap;flex:none}.brand{min-width:0}html:not(.px) .brand-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}html.px .brand-name{display:none}}@media (max-width:899px){html.px{--col:100%;--edge:12px}html.px body{background:#151a30 repeating-conic-gradient(#1a2040 0 25%, #151a30 0 50%) 0 0 / 32px 32px;font-size:1rem}html.px body:before{content:"";z-index:3;background:#151a30;height:52px;position:fixed;top:0;left:0;right:0}html.px #px-canvas{z-index:3;border-bottom:4px solid var(--px-ink);box-shadow:0 4px 0 var(--px-frame-2), 0 8px 0 var(--px-ink);top:52px}html.px .hud{box-shadow:inset 0 0 0 2px var(--px-frame-2);border-width:3px;gap:8px;padding:4px 5px 4px 6px;top:6px;left:8px;right:8px}html.px .brand{min-height:34px}html.px .brand-mark{width:29px;height:29px;font-size:.5rem}html.px .view-toggle{border-width:2px;min-height:34px;padding:0 9px;font-size:.5rem}html.px .menu-toggle{width:36px;height:34px}html.px .menu-toggle svg{width:18px;height:18px}html.px .brand-name{display:none}html.px .view-toggle{white-space:nowrap;flex:none}html.px .hud-level{z-index:4;background:var(--px-paper);border:3px solid var(--px-ink);border-radius:4px;margin:0;padding:5px 7px 4px;font-size:.45rem;position:fixed;top:58px;left:8px}html.px .nav-links{background:var(--px-paper);border:4px solid var(--px-ink);border-radius:10px}html.px .zone{padding:0 12px}html.px .zone-start{min-height:100vh;padding:calc(var(--px-band,40vh) + 20px) 12px 0;align-items:flex-start}html.px .start{margin-top:0}html.px .px-stop{scroll-margin-top:calc(var(--px-band,40vh) + 14px);margin-top:62vh!important}html.px .px-stop,html.px .start,html.px .px-stop.board{padding:16px 14px 14px}html.px .project,html.px .skills{max-width:100%!important}html.px .title-block{white-space:normal;font-size:clamp(1.15rem,6.4vw,2rem)}html.px .headline{margin-top:12px;font-size:clamp(.85rem,4.4vw,1.3rem)}html.px .skill-card ul{grid-template-columns:repeat(2,minmax(0,1fr))}html.px .skills.is-current{transform:none}html.px .bt-arena{height:160px}html.px .zone-gla{padding-bottom:12vh}html.px .arcade-start{font-size:calc(var(--k) * 4px)}}
