@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400 500;font-display:swap;src:url(/assets/fonts/ibm-plex-sans-latin.woff2)format("woff2")}@font-face{font-family:"Press Start 2P";font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/press-start-2p-latin.woff2)format("woff2")}:root{color-scheme:dark;--bg:#120c22;--bg-deep:#0c1148;--panel:#111640;--fg:#e9e6d8;--fg-dim:#9296b2;--edge:#1a2870;--hi:#253898;--lo:#050810;--accent:#ffd84a;--accent-hover:#ffe58a;--accent-ink:#12141f;--tag:#6fe0e0;--font-pixel:"Press Start 2P", ui-monospace, monospace;--font-body:"IBM Plex Sans", system-ui, sans-serif;--bar:60px;--gutter:clamp(18px, 5vw, 72px);--measure:60ch}:root[data-theme=light]{color-scheme:light;--bg:#fafaf4;--bg-deep:#f5c400;--panel:#fff;--fg:#0a0e2a;--fg-dim:#2a3270;--edge:#c49800;--hi:#ffe566;--lo:#a07e00;--accent:#1c2878;--accent-hover:#2e3fa8;--accent-ink:#fff;--tag:#1c2878}:root[data-theme=light] .profile__bar,:root[data-theme=light] .win__bar,:root[data-theme=light] .hero__panel-bar,:root[data-theme=light] .viewer__bar{color:#0a0e2a;background:#f5c400}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--bar) + 12px)}body{background-color:var(--bg);color:var(--fg);font-family:var(--font-body);-webkit-font-smoothing:antialiased;background-image:linear-gradient(45deg,#8084aa0d 25%,#0000 25% 75%,#8084aa0d 75%),linear-gradient(45deg,#8084aa0d 25%,#0000 25% 75%,#8084aa0d 75%);background-position:0 0,4px 4px;background-size:8px 8px;margin:0;font-size:1.0625rem;line-height:1.6}a{color:inherit;text-decoration:none}img,video{max-width:100%;display:block}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.skip{z-index:60;background:var(--accent);color:var(--accent-ink);font-family:var(--font-pixel);padding:10px 14px;font-size:10px;position:absolute;top:-80px;left:12px}.skip:focus{top:12px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.win{background:var(--panel);box-shadow:inset 2px 2px 0 var(--hi), inset -2px -2px 0 var(--lo), 0 0 0 3px var(--edge)}body:not([data-project]) .win:not(.btn),.cave .section,.foot{--fg:#efe9d6;--fg-dim:#c9c2a6;--accent:#ffd84a;--accent-hover:#ffe58a;--accent-ink:#1c1f0a;--tag:#b8d13a;color:var(--fg)}.hero,#projects{--panel:#1c1f0a;--bg-deep:#12140a;--edge:#4d4532;--hi:#3a3a22;--lo:#0b0c04;--frame:url(/assets/tiles/block-soil.png);--ceil:url(/assets/tiles/ceil-soil.png)}#models{--panel:#0a0c14;--bg-deep:#07080e;--edge:#3a4258;--hi:#2c3448;--lo:#04050a;--frame:url(/assets/tiles/block-stone.png)}#about{--panel:#0c0616;--bg-deep:#08040f;--edge:#4a2f62;--hi:#3a2350;--lo:#05020a;--frame:url(/assets/tiles/block-deep.png)}.foot{--panel:#160404;--bg-deep:#0e0303;--edge:#7a2a14;--hi:#5a1d0e;--lo:#070101}.win:not(.btn){border:32px solid #0000;border-top-width:60px;border-image:var(--frame) 30 16 16 / 60px 32px 32px repeat;background:var(--panel) padding-box;box-shadow:none;image-rendering:pixelated}.cave .win:not(.btn){--panel:#1c160f;--edge:#5a4026;--hi:#6b4c2a;--lo:#0f0b07;background:var(--panel) padding-box;border-width:16px;border-image:url(/assets/tiles/frame-wood-dark.png) 8/16px round}.bar{z-index:40;height:var(--bar);padding:0 max(var(--gutter), calc(50% - 700px));--fg:#f3f1e6;--fg-dim:#d4dcf4;--accent:#ffd84a;--halo:#0b1230;font-family:var(--font-pixel);text-transform:uppercase;align-items:center;gap:24px;font-size:10px;display:flex;position:relative}.bar:after{content:"";z-index:-1;pointer-events:none;height:calc(var(--bar) + 48px);image-rendering:pixelated;background:url(/assets/tiles/cloudbank-night.png?v=2) 0 0/960px repeat-x;position:absolute;top:0;left:0;right:0}.bar__name,.bar__nav a{text-shadow:1px 0 var(--halo), -1px 0 var(--halo), 0 1px var(--halo), 0 -1px var(--halo), 1px 1px var(--halo), -1px -1px var(--halo)}.bar__name{white-space:nowrap;color:var(--accent)}.bar__nav{gap:clamp(14px,2.6vw,34px);margin-left:auto;display:flex}.bar__nav a{color:var(--fg-dim);white-space:nowrap;border-bottom:3px solid #0000;padding:8px 0 6px}.bar__nav a:hover{color:var(--fg)}.bar__nav a[aria-current=true]{color:var(--fg);border-bottom-color:var(--accent)}.bar__tools{align-items:center;gap:10px;display:flex}.theme{cursor:pointer;background:var(--panel);width:32px;min-height:32px;color:var(--fg);font:inherit;text-transform:none;box-shadow:inset 2px 2px 0 var(--hi), inset -2px -2px 0 var(--lo), 0 0 0 2px var(--edge);border:0;place-items:center;padding:0;display:grid}.theme:hover{color:var(--accent)}.lang-switch{box-shadow:inset 2px 2px 0 var(--hi), inset -2px -2px 0 var(--lo), 0 0 0 2px var(--edge);display:flex}.lang-switch__opt{min-height:32px;font-family:var(--font-pixel);text-transform:uppercase;color:var(--fg-dim);background:var(--panel);place-items:center;padding:0 10px;font-size:9px;display:grid}.lang-switch__opt[aria-current=true]{background:var(--accent);color:var(--accent-ink);pointer-events:none}.lang-switch__opt:hover:not([aria-current=true]){color:var(--fg)}.theme svg{width:16px;height:16px}.theme .i-moon,:root[data-theme=light] .theme .i-sun{display:none}:root[data-theme=light] .theme .i-moon{display:block}:root[data-theme=light] .bar:after{background-image:url(/assets/tiles/cloudbank-day.png?v=2)}:root[data-theme=light] .bar{--fg:#0a0e2a;--fg-dim:#2a3270;--accent:#1c2878;--halo:#fff}.section{padding:clamp(64px, 9vw, 120px) var(--gutter)}.h2{font-family:var(--font-pixel);text-transform:uppercase;align-items:center;gap:14px;margin:0 0 30px;font-size:clamp(16px,2.4vw,26px);font-weight:400;line-height:1.3;display:flex}.h2:before{content:"";background:var(--accent);flex:none;width:.7em;height:.7em}.hero{min-height:100vh;margin-top:calc(var(--bar) * -1);padding-top:calc(var(--bar) + clamp(64px, 9vw, 120px));isolation:isolate;color:var(--fg);--fg:#f3f1e6;--fg-dim:#d4dcf4;--accent:#ffd84a;--tag:#8fe9ff;--halo:#0b1230;background-color:#173260;flex-direction:column;justify-content:center;display:flex;position:relative;overflow:hidden}.hero__text{text-shadow:1px 0 var(--halo), -1px 0 var(--halo), 0 1px var(--halo), 0 -1px var(--halo), 1px 1px var(--halo), -1px -1px var(--halo)}.par{z-index:-1;pointer-events:none;image-rendering:pixelated;position:absolute;inset:0;overflow:hidden}.par__layer{height:calc(106% * var(--k,1));background-image:var(--night);will-change:transform;background-position:0 100%;background-repeat:repeat-x;background-size:auto 100%;width:200%;position:absolute;bottom:-3%;left:0}:root[data-theme=light] .par__layer{background-image:var(--day)}.par__layer--stars{background-image:url(/assets/tiles/stars.svg);background-position:0 0;background-repeat:repeat;background-size:440px 400px}:root[data-theme=light] .par__layer--stars{display:none}.par--hero:after{content:"";background:linear-gradient(90deg,#050a1e80,#0000 62%);position:absolute;inset:0}.hero:after{content:"";z-index:-1;pointer-events:none;height:60px;image-rendering:pixelated;background:url(/assets/tiles/grass-line.png) 0 100%/192px 60px repeat-x;position:absolute;bottom:0;left:0;right:0}.cave{isolation:isolate;margin-top:-1px;position:relative}.par--cave{height:100vh;margin-bottom:-100vh;position:sticky;top:0}.par__shade{background:rgba(8, 2, 18, calc(.3 + var(--p,0) * .4));position:absolute;inset:0}.cave .section{color:var(--fg)}#projects{background:var(--ceil,none) center top / 192px 48px repeat-x;image-rendering:pixelated}.hero__panel{z-index:1;width:min(400px,40vw);position:absolute;top:50%;right:clamp(40px,10vw,120px);translate:0 -50%}.hero__panel-bar{background:var(--accent);color:var(--accent-ink);font-family:var(--font-pixel);text-transform:uppercase;margin:0;padding:8px 12px;font-size:10px}.hero__skill-list{margin:0;padding:4px 14px 10px}.hero__skill-list>div{border-bottom:2px dotted var(--edge);padding:8px 0}.hero__skill-list>div:last-child{border-bottom:0}.hero__skill-list dt{font-family:var(--font-pixel);color:var(--fg-dim);text-transform:uppercase;margin-bottom:6px;font-size:9px}.hero__skill-list dd{grid-template-columns:6.5rem 1fr;align-items:center;gap:8px;margin:5px 0;font-size:.88rem;display:grid}.sbar{background:var(--edge);height:7px;display:block;position:relative;overflow:hidden}.sbar:after{content:"";width:calc(var(--p) * 1%);background:var(--accent);position:absolute;inset:0}.hero__text{position:relative}.hero__kicker{font-family:var(--font-pixel);color:var(--tag);text-transform:uppercase;margin:0 0 22px;font-size:clamp(9px,1.1vw,12px)}.hero__name{font-family:var(--font-pixel);text-transform:uppercase;margin:0 0 26px;font-size:clamp(26px,6vw,68px);font-weight:400;line-height:1.3}.hero__name span{white-space:nowrap;animation:type .7s steps(var(--n)) both;display:block;overflow:hidden}.hero__name span:first-child{--n:6;width:6ch}.hero__name span:nth-child(2){--n:9;width:9ch;color:var(--accent);animation-delay:.7s}.hero__tagline{max-width:22ch;margin:0 0 6px;font-size:clamp(1.25rem,2.6vw,2rem);font-weight:500;line-height:1.2}.hero__sub{color:var(--fg-dim);margin:0 0 40px}@keyframes type{0%{width:0}}.menu{gap:4px;width:max-content;margin:0;padding:0;list-style:none;display:grid}.menu a{font-family:var(--font-pixel);text-transform:uppercase;padding:10px 14px 10px 2.1em;font-size:clamp(14px,1.8vw,20px);display:block;position:relative}.menu a:before{content:"";background:var(--accent);clip-path:polygon(0 0,100% 50%,0 100%);opacity:0;width:.7em;height:.8em;position:absolute;top:50%;left:.7em;translate:0 -50%}.menu a:hover,.menu a:focus-visible{color:var(--accent);outline:none}.menu a:hover:before,.menu a:focus-visible:before{opacity:1}.menu a:focus-visible:before{animation:.9s steps(2,end) infinite blink}@keyframes blink{50%{opacity:0}}.hero__hint{color:var(--fg-dim);margin:22px 0 0;font-size:.9rem}.filters{flex-wrap:wrap;gap:12px;margin-bottom:30px;display:flex}.chip{cursor:pointer;font-family:var(--font-pixel);text-transform:uppercase;background:var(--panel);color:var(--fg-dim);box-shadow:inset 2px 2px 0 var(--hi), inset -2px -2px 0 var(--lo), 0 0 0 2px var(--edge);border:0;padding:9px 16px;font-size:10px}.chip:hover{color:var(--fg)}.chip[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);box-shadow:inset 2px 2px 0 #fff6, inset -2px -2px 0 #0000004d, 0 0 0 2px var(--edge)}.stages{gap:clamp(36px,5vw,64px);display:grid}.stage{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;padding:6px;display:grid}.stage__media{aspect-ratio:16/9;background:var(--bg-deep);align-self:center;width:100%;min-width:0;display:block;position:relative;overflow:hidden}.stage__media video,.stage__media img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.stage__media:after{content:"";pointer-events:none;background:repeating-linear-gradient(#00000029 0 1px,#0000 1px 3px);position:absolute;inset:0}.stage__info{flex-direction:column;justify-content:center;gap:14px;padding:clamp(18px,3vw,40px);display:flex}.stage__tags{font-family:var(--font-pixel);color:var(--tag);gap:14px;margin:0;padding:0;font-size:10px;list-style:none;display:flex}.stage__title{font-family:var(--font-pixel);text-transform:uppercase;margin:0;font-size:clamp(14px,1.9vw,22px);font-weight:400;line-height:1.4}.stage__desc{color:var(--fg);max-width:46ch;margin:0;font-size:1.08rem}.stage__facts{max-width:52ch;margin:4px 0 0}.stage__facts>div{border-top:2px dotted var(--edge);grid-template-columns:6.6rem 1fr;align-items:baseline;gap:4px 14px;padding:9px 0;display:grid}.stage__facts dt{font-family:var(--font-pixel);color:var(--fg-dim);text-transform:uppercase;font-size:9px;line-height:1.4}.stage__facts dd{margin:0;font-size:.98rem;font-weight:500;line-height:1.35}.btn-play{font-family:var(--font-pixel);text-transform:uppercase;background:var(--accent);color:var(--accent-ink);box-shadow:inset 2px 2px 0 #fff6, inset -2px -2px 0 #0000004d, 0 0 0 2px var(--edge);align-self:flex-start;margin-top:6px;padding:12px 18px 12px 38px;font-size:10px;position:relative}.btn-play:before{content:"";clip-path:polygon(0 0,100% 50%,0 100%);background:currentColor;width:9px;height:11px;position:absolute;top:50%;left:16px;translate:0 -50%}.btn-play:hover{background:var(--accent-hover)}.grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:22px 20px;display:grid}.cell{cursor:pointer;text-align:left;width:100%;font:inherit;color:var(--fg);background:var(--panel);box-shadow:inset 2px 2px 0 var(--hi), inset -2px -2px 0 var(--lo), 0 0 0 3px var(--edge);border:0;flex-direction:column;padding:0;display:flex}.cell--project{grid-column:span 2}.cell:hover,.cell:focus-visible{box-shadow:inset 2px 2px 0 var(--hi), inset -2px -2px 0 var(--lo), 0 0 0 3px var(--accent);outline:none}.cell__media{aspect-ratio:4/3;background:var(--bg-deep);margin:6px 6px 0;display:block;position:relative;overflow:hidden}.cell--project .cell__media{aspect-ratio:16/10}.cell__media img,.cell__media video{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.cell__media:after{content:"";pointer-events:none;background:repeating-linear-gradient(#00000029 0 1px,#0000 1px 3px);position:absolute;inset:0}.cell__cap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 10px;padding:12px;display:flex}.cell__title{font-family:var(--font-pixel);text-transform:uppercase;font-size:clamp(9px,1vw,11px);line-height:1.5;position:relative}.cell--project .cell__title{font-size:clamp(10px,1.25vw,14px)}.cell:hover .cell__title,.cell:focus-visible .cell__title{color:var(--accent)}.cell__tags{font-family:var(--font-pixel);color:var(--tag);white-space:pre;font-size:9px}.note{color:var(--fg-dim);margin:26px 0 0;font-size:.9rem}.viewer{background:var(--panel);width:min(960px,94vw);height:min(640px,86vh);color:var(--fg);box-shadow:inset 2px 2px 0 var(--hi), inset -2px -2px 0 var(--lo), 0 0 0 3px var(--edge);border:0;padding:6px}.viewer[open]{flex-direction:column;display:flex}.viewer::backdrop{background:#05060cc7}.viewer__bar{background:var(--accent);color:var(--accent-ink);font-family:var(--font-pixel);text-transform:uppercase;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;font-size:10px;display:flex}.viewer__close{font:inherit;cursor:pointer;background:var(--panel);color:var(--fg);box-shadow:0 0 0 2px var(--edge);border:0;padding:6px 12px}.viewer iframe{background:var(--bg-deep);border:0;flex:1;width:100%;margin-top:6px}.about{justify-items:center;display:grid}.profile{width:min(760px,100%);padding:6px}.profile__bar{background:var(--accent);color:var(--accent-ink);font-family:var(--font-pixel);text-transform:uppercase;margin:0;padding:10px 14px;font-size:clamp(11px,1.4vw,14px);font-weight:400}.profile__rows{margin:0;padding:6px 14px 10px}.profile__rows>div{border-bottom:2px dotted var(--edge);grid-template-columns:9rem 1fr;align-items:baseline;gap:6px 18px;padding:14px 0;display:grid}.profile__rows>div:last-child{border-bottom:0}.profile__rows dt{font-family:var(--font-pixel);color:var(--fg-dim);text-transform:uppercase;font-size:9px;line-height:1.5}.profile__rows dd{margin:0;font-size:clamp(1.05rem,1.7vw,1.3rem);font-weight:500;line-height:1.3}.foot{image-rendering:pixelated;padding:clamp(120px, 14vw, 170px) var(--gutter) 32px;background-color:var(--bg-deep);background-image:linear-gradient(#ff5a1438,#0000 240px);position:relative;overflow:hidden}.foot:before{content:"";pointer-events:none;background:url(/assets/tiles/lava-edge.png) 0 0/128px 72px repeat-x;height:72px;position:absolute;top:0;left:0;right:0}.foot>*{position:relative}.foot__label{font-family:var(--font-pixel);color:var(--tag);text-transform:uppercase;margin:0 0 18px;font-size:clamp(11px,1.4vw,14px)}.foot__cta{font-family:var(--font-pixel);word-break:break-all;text-shadow:3px 3px #000;font-size:clamp(9px,2.5vw,34px);font-weight:400;line-height:1.5;display:inline-block;position:relative}.foot__cta:hover{color:var(--accent)}.foot__row{flex-wrap:wrap;align-items:center;gap:14px 22px;margin-top:clamp(36px,5vw,64px);display:flex}.foot__row .btn{font-family:var(--font-pixel);text-transform:uppercase;padding:12px 16px;font-size:10px;display:inline-block}.foot__row .btn:hover{color:var(--accent)}.foot__role{color:var(--fg-dim);margin-left:auto;font-size:.92rem}@media (width<=860px){:root{--bar:96px}.bar:after{background-image:url(/assets/tiles/cloudbank-night-m.png?v=2)}:root[data-theme=light] .bar:after{background-image:url(/assets/tiles/cloudbank-day-m.png?v=2)}.bar{flex-wrap:wrap;align-content:center;gap:4px 12px;font-size:9px}.bar__name{flex:1}.bar__nav{order:3;gap:18px;width:100%;margin-left:0;overflow-x:auto}.hero__panel{display:none}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 14px}.stage{grid-template-columns:1fr}.stage__desc,.stage__facts{max-width:none}.stage__facts>div,.profile__rows>div{grid-template-columns:1fr}.foot__role{width:100%;margin-left:0}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero__name span,.menu a:focus-visible:before{animation:none}}
