:root{--header-height: 100px;--logo-height: 64px}.header-logo-container:where(.astro-3EF6KSR2){border-radius:var(--size-300);height:var(--header-height)}.header-logo-content:where(.astro-3EF6KSR2){aspect-ratio:1 / 1;height:100%}.header-logo-content:where(.astro-3EF6KSR2) img:where(.astro-3EF6KSR2){margin:calc((var(--header-height) - var(--logo-height)) / 2);width:var(--logo-height);aspect-ratio:1 / 1}.primary-header:where(.astro-3EF6KSR2){display:grid;grid-template-columns:var(--header-height) 1fr;gap:var(--size-600)}.primary-nav-list:where(.astro-3EF6KSR2){margin:calc((var(--header-height) - var(--logo-height)) / 2) 0em;padding:var(--size-400);display:flex;justify-content:space-around;gap:clamp(var(--size-300),2vw,var(--size-900))}.primary-nav-list:where(.astro-3EF6KSR2) a:where(.astro-3EF6KSR2){font-size:var(--fs-nav);font-weight:var(--fw-bold);text-decoration:none;color:hsl(var(--clr-text-default))}.primary-nav-list:where(.astro-3EF6KSR2) a:where(.astro-3EF6KSR2):where(:hover,:focus){color:hsl(var(--clr-text-highlight))}.mobile-nav-toggle:where(.astro-3EF6KSR2){display:none}@media (max-width: 50em){.primary-header:where(.astro-3EF6KSR2)[data-overlay]{position:relative;z-index:6}.primary-header:where(.astro-3EF6KSR2)[data-overlay]:before{content:"";position:fixed;inset:0;background:hsl(var(--crl-panel-background));z-index:6;backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem)}.primary-nav:where(.astro-3EF6KSR2)[data-visible]{display:block}.primary-nav:where(.astro-3EF6KSR2){display:none;position:fixed;padding:var(--size-500);inset:7rem var(--size-400) auto;max-width:15rem;margin-inline:auto;background:hsl(var(--clr-footer-background));border-radius:var(--size-100);z-index:7}.primary-nav-list:where(.astro-3EF6KSR2){display:grid;gap:var(--size-400)}.mobile-nav-toggle:where(.astro-3EF6KSR2){display:block;position:fixed;top:var(--size-500);right:var(--size-500);z-index:7;cursor:pointer;background:transparent;border:0;padding:var(--size-200);width:var(--size-600);aspect-ratio:1;background-image:url(/code-portfolio/_astro/icon-hamburger.250ae6ad.svg);background-size:contain;background-repeat:no-repeat;background-position:center}.mobile-nav-toggle:where(.astro-3EF6KSR2)[aria-expanded=true]{background-image:url(/code-portfolio/_astro/icon-close.c3312aa7.svg)}}.primary-footer:where(.astro-SZ7XMLTE){position:relative;font-size:var(--fs-nav);margin-top:auto}.primary-footer:where(.astro-SZ7XMLTE)>:where(.astro-SZ7XMLTE)>:where(.astro-SZ7XMLTE)>:where(.astro-SZ7XMLTE){margin-inline:auto}.footer-nav:where(.astro-SZ7XMLTE) a:where(.astro-SZ7XMLTE),.footer-links:where(.astro-SZ7XMLTE) a:where(.astro-SZ7XMLTE){color:var(--clr-text-primary);text-decoration:none}.footer-links:where(.astro-SZ7XMLTE) a:where(.astro-SZ7XMLTE){padding:0 var(--size-200)}.footer-nav:where(.astro-SZ7XMLTE) a:where(.astro-SZ7XMLTE):where(:hover,:focus),.footer-links:where(.astro-SZ7XMLTE) a:where(.astro-SZ7XMLTE):where(:hover,:focus){color:hsl(var(--clr-text-highlight));text-decoration:none}.crt:where(.astro-O7WJUCUV):after{position:fixed;top:0;left:min(calc((var(--vh) / var(--vw) - 1) * 10px),10px);height:100%;width:calc(100% - min(calc(((var(--vh) / var(--vw) - 1) * 10px)*2),20px));background-image:url(/code-portfolio/_astro/crt.c0d0dc6d.png);background-repeat:no-repeat;background-size:100% 100%;content:"";z-index:10;pointer-events:none}.crt:where(.astro-O7WJUCUV):before{position:fixed;inset:0;content:" ";background:linear-gradient(rgba(18,16,16,0) 50%,rgba(0,0,0,.25) 50%),linear-gradient(90deg,rgba(255,0,0,.06),rgba(0,255,0,.02),rgba(0,0,255,.06));z-index:8;background-size:100% 2px,3px 100%;pointer-events:none}@media (orientation: portrait){body:before{content:"";position:fixed;top:0;left:0;bottom:0;width:min(calc((var(--vh) / var(--vw) - 1) * 10px + 2px),10px);background-color:#000;z-index:10}body:after{content:"";position:fixed;top:0;right:0;bottom:0;width:min(calc((var(--vh) / var(--vw) - 1) * 10px + 2px),10px);background-color:#000;z-index:10}body{margin:0 min(calc((var(--vh) / var(--vw) - 1) * 10px),10px)}}.glitch{color:#fff;font-weight:800;position:relative;padding:3px}.glitch:before,.glitch:after{padding:3px;margin-left:var(--glitch-left-offset, 0px);color:#fff;content:var(--glitch-content);position:absolute;width:100%;height:100%;background:var(--glitch-bg-override, black);overflow:hidden;top:0}.glitch:before{left:3px;text-shadow:-2px 0 red;animation-name:glitch-animation-1;animation-duration:var(--glitch-anim-duration, 2s);animation-timing-function:linear;animation-delay:var(--glitch-anim-delay, 0s);animation-iteration-count:infinite;animation-direction:var(--glitch-anim-dir, alternate-reverse)}.glitch:after{left:-3px;text-shadow:-2px 0 blue;animation-name:glitch-animation-2;animation-duration:var(--glitch-anim-duration, 2s);animation-timing-function:linear;animation-delay:var(--glitch-anim-delay, 0s);animation-iteration-count:infinite;animation-direction:var(--glitch-anim-dir, alternate-reverse)}.glitch-hover{color:#fff;font-weight:800;position:relative;padding:3px}.glitch-hover:hover:before,.glitch-hover:hover:after,.glitch-hover:focus:before,.glitch-hover:focus:after{padding:3px;margin-left:var(--glitch-left-offset, -10px);color:#fff;content:var(--glitch-content);position:absolute;width:100%;height:100%;background:var(--glitch-bg-override, #585858);overflow:hidden;top:0;animation-name:none}.glitch-hover:hover:before,.glitch-hover:focus:before{left:3px;text-shadow:-2px 0 red;animation-name:glitch-animation-1;animation-duration:var(--glitch-anim-duration, 2s);animation-timing-function:linear;animation-delay:var(--glitch-anim-delay, 0s);animation-iteration-count:infinite;animation-direction:var(--glitch-anim-dir, alternate-reverse)}.glitch-hover:hover:after,.glitch-hover:focus:after{left:-3px;text-shadow:-2px 0 blue;animation-name:glitch-animation-2;animation-duration:var(--glitch-anim-duration, 2s);animation-timing-function:linear;animation-delay:var(--glitch-anim-delay, 0s);animation-iteration-count:infinite;animation-direction:var(--glitch-anim-dir, alternate-reverse)}@keyframes glitch-animation-1{0%{clip:rect(4.229em,10.417em,3.125em,.625em)}5%{clip:rect(1.792em,10.417em,3.906em,.625em)}10%{clip:rect(.76em,10.417em,.094em,.625em)}15%{clip:rect(.833em,10.417em,1.66em,.625em)}20%{clip:rect(2.375em,10.417em,3.406em,.625em)}25%{clip:rect(2.5em,10.417em,4.031em,.625em)}30%{clip:rect(1.75em,10.417em,2.969em,.625em)}35%{clip:rect(2.75em,10.417em,.531em,.625em)}40%{clip:rect(1.625em,10.417em,1.406em,.625em)}45%{clip:rect(1.532em,10.417em,1.156em,.625em)}50%{clip:rect(.229em,10.417em,3.094em,.625em)}55%{clip:rect(.656em,10.417em,4.156em,.625em)}60%{clip:rect(2.375em,10.417em,3.406em,.625em)}65%{clip:rect(2.906em,10.417em,.625em,.625em)}70%{clip:rect(2em,10.417em,2.563em,.625em)}75%{clip:rect(3em,10.417em,3.469em,.625em)}80%{clip:rect(2.375em,10.417em,3.125em,.625em)}85%{clip:rect(2.938em,10.417em,1.719em,.625em)}90%{clip:rect(1.146em,10.417em,1.406em,.625em)}95%{clip:rect(3.958em,10.417em,3.406em,.625em)}to{clip:rect(1.208em,10.417em,3.437em,.625em)}}@keyframes glitch-animation-2{0%{clip:rect(.438em,10.417em,.457em,.625em)}5%{clip:rect(3.354em,10.417em,.781em,.625em)}10%{clip:rect(.057em,10.417em,.028em,.625em)}15%{clip:rect(.114em,10.417em,1.656em,.625em)}20%{clip:rect(2.519em,10.417em,1.319em,.625em)}25%{clip:rect(1.6em,10.417em,3.125em,.625em)}30%{clip:rect(2.4em,10.417em,3.043em,.625em)}35%{clip:rect(.3em,10.417em,.625em,.625em)}40%{clip:rect(1.8em,10.417em,1.194em,.625em)}45%{clip:rect(3.2em,10.417em,1.684em,.625em)}50%{clip:rect(1.75em,10.417em,2.781em,.625em)}55%{clip:rect(1.185em,10.417em,3.043em,.625em)}60%{clip:rect(1.714em,10.417em,2.844em,.625em)}65%{clip:rect(2.9em,10.417em,1.371em,.625em)}70%{clip:rect(2.357em,10.417em,3.511em,.625em)}75%{clip:rect(3.76em,10.417em,2.708em,.625em)}80%{clip:rect(3em,10.417em,1.042em,.625em)}85%{clip:rect(.114em,10.417em,.344em,.625em)}90%{clip:rect(2.743em,10.417em,3.958em,.625em)}95%{clip:rect(1.229em,10.417em,1.628em,.625em)}to{clip:rect(3.76em,10.417em,.771em,.625em)}}.glitch-delay{color:#fff;font-weight:800;position:relative;padding:3px}.glitch-delay:before,.glitch-delay:after{padding:3px;color:#fff;content:var(--glitch-content);position:absolute;width:100%;height:100%;background:var(--glitch-bg-override, #585858);overflow:hidden;top:0}.glitch-delay:before{left:3px;text-shadow:-2px 0 red;animation-name:glitch-delay-animation-1;animation-duration:25s;animation-timing-function:linear;animation-delay:var(--glitch-anim-delay, 0s);animation-iteration-count:infinite}.glitch-delay:after{left:-3px;text-shadow:-2px 0 blue;animation-name:glitch-delay-animation-2;animation-duration:20s;animation-timing-function:linear;animation-delay:var(--glitch-anim-delay, 0s);animation-iteration-count:infinite}@keyframes glitch-delay-animation-1{0%{clip:rect(0em,0em,0em,0em)}80%{clip:rect(0em,0em,0em,0em)}81%{clip:rect(1.792em,10.417em,3.906em,.625em)}82%{clip:rect(.76em,10.417em,.094em,.625em)}83%{clip:rect(.833em,10.417em,1.66em,.625em)}84%{clip:rect(2.375em,10.417em,3.406em,.625em)}85%{clip:rect(2.5em,10.417em,4.031em,.625em)}86%{clip:rect(1.75em,10.417em,2.969em,.625em)}87%{clip:rect(2.75em,10.417em,.531em,.625em)}88%{clip:rect(1.625em,10.417em,1.406em,.625em)}89%{clip:rect(1.532em,10.417em,1.156em,.625em)}90%{clip:rect(.229em,10.417em,3.094em,.625em)}91%{clip:rect(.656em,10.417em,4.156em,.625em)}92%{clip:rect(2.375em,10.417em,3.406em,.625em)}93%{clip:rect(2.906em,10.417em,.625em,.625em)}94%{clip:rect(2em,10.417em,2.563em,.625em)}95%{clip:rect(3em,10.417em,3.469em,.625em)}96%{clip:rect(2.375em,10.417em,3.125em,.625em)}97%{clip:rect(2.938em,10.417em,1.719em,.625em)}98%{clip:rect(1.146em,10.417em,1.406em,.625em)}99%{clip:rect(3.958em,10.417em,3.406em,.625em)}to{clip:rect(1.208em,10.417em,3.437em,.625em)}}@keyframes glitch-delay-animation-2{0%{clip:rect(0em,0em,0em,0em)}80%{clip:rect(0em,0em,0em,0em)}81%{clip:rect(3.354em,10.417em,.781em,.625em)}82%{clip:rect(.057em,10.417em,.028em,.625em)}83%{clip:rect(.114em,10.417em,1.656em,.625em)}84%{clip:rect(2.519em,10.417em,1.319em,.625em)}85%{clip:rect(1.6em,10.417em,3.125em,.625em)}86%{clip:rect(2.4em,10.417em,3.043em,.625em)}87%{clip:rect(.3em,10.417em,.625em,.625em)}88%{clip:rect(1.8em,10.417em,1.194em,.625em)}89%{clip:rect(3.2em,10.417em,1.684em,.625em)}90%{clip:rect(1.75em,10.417em,2.781em,.625em)}91%{clip:rect(1.185em,10.417em,3.043em,.625em)}92%{clip:rect(1.714em,10.417em,2.844em,.625em)}93%{clip:rect(2.9em,10.417em,1.371em,.625em)}94%{clip:rect(2.357em,10.417em,3.511em,.625em)}95%{clip:rect(3.76em,10.417em,2.708em,.625em)}96%{clip:rect(3em,10.417em,1.042em,.625em)}97%{clip:rect(.114em,10.417em,.344em,.625em)}98%{clip:rect(2.743em,10.417em,3.958em,.625em)}99%{clip:rect(1.229em,10.417em,1.628em,.625em)}to{clip:rect(3.76em,10.417em,.771em,.625em)}}:root{--clr-page-background: 144, 11%, 70%;--clr-footer-background: 172, 31%, 10%;--clr-panel-background: 144, 15%, 10%;--clr-scrolling-text: 144, 15%, 30%;--clr-text-primary: 0, 0%, 100%;--clr-text-highlight: 150, 58%, 64%;--panel-alpha: .5;--panel-texture-alpha: .6;--panel-texture: url(/code-portfolio/_astro/texture.784529df.png);--ff-primary: "Be Vietnam Pro", sans-serif;--ff-body: var(--ff-primary);--ff-logo: "Press Start 2P", Monospace;--fw-regular: 400;--fw-semi-bold: 500;--fw-bold: 700;--fs-300: .8125rem;--fs-400: .875rem;--fs-500: .9375rem;--fs-600: 1rem;--fs-700: 1.875rem;--fs-800: 2.5rem;--fs-900: 3.5rem;--fs-body: var(--fs-600);--fs-primary-heading: var(--fs-900);--fs-secondary-heading: var(--fs-700);--fs-nav: var(--fs-600);--fs-button: var(--fs-300);--size-100: .25rem;--size-200: .5rem;--size-300: .75rem;--size-400: 1rem;--size-500: 1.5rem;--size-600: 2rem;--size-700: 3rem;--size-800: 4.5rem;--size-900: 5rem;--content-max-width: 70rem}@media (max-width: 50em){:root{--fs-body: var(--fs-600);--fs-nav: var(--fs-600)}}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0;font:inherit}ul[role=list],ol[role=list]{list-style:none}html:focus-within{scroll-behavior:smooth}html,body{height:100%}body{text-rendering:optimizeLegibility;line-height:1.5}a:not([class]){text-decoration-skip-ink:auto}img,picture,svg{max-width:100%;display:block}@media (prefers-reduced-motion: reduce){html:focus-within{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}p{padding:5px}ul[aria-role=nav-list]{list-style:none}ul[aria-role=list]{padding-inline-start:40px}i{display:inline!important}strong{font-weight:700}body{font-size:var(--fs-body);font-family:var(--ff-body);color:hsl(var(--clr-text-primary));background-color:hsl(var(--clr-page-background));-ms-overflow-style:none;scrollbar-width:none}body::-webkit-scrollbar{display:none}main,header,footer>*{position:relative;--max-width: var(--content-max-width);--container-padding: var(--size-400);width:min(var(--max-width),100% - (var(--container-padding) * 2));margin-inline:auto}.logo{font-family:var(--ff-logo)}.panel{position:relative;border-radius:var(--size-300);background:hsla(var(--clr-panel-background),var(--panel-alpha));box-shadow:2px 2px 5px #00000080;-webkit-box-shadow:2px 2px 5px 0px rgba(0,0,0,.5);-moz-box-shadow:2px 2px 5px 0px rgba(0,0,0,.5);backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem)}.panel:before{content:"";background-image:var(--panel-texture);position:absolute;inset:0;opacity:var(--panel-texture-alpha);pointer-events:none}@media (min-width: 50em){.panel-lg{position:relative;border-radius:var(--size-300);background:hsla(var(--clr-panel-background),var(--panel-alpha));box-shadow:2px 2px 5px #00000080;-webkit-box-shadow:2px 2px 5px 0px rgba(0,0,0,.5);-moz-box-shadow:2px 2px 5px 0px rgba(0,0,0,.5);backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem)}.panel-lg:before{content:"";background-image:var(--panel-texture);position:absolute;inset:0;opacity:var(--panel-texture-alpha);pointer-events:none}}@media (max-width: 50em){.panel-sm{position:relative;border-radius:var(--size-300);background:hsla(var(--clr-panel-background),var(--panel-alpha));box-shadow:2px 2px 5px #00000080;-webkit-box-shadow:2px 2px 5px 0px rgba(0,0,0,.5);-moz-box-shadow:2px 2px 5px 0px rgba(0,0,0,.5);backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem)}.panel-sm:before{content:"";background-image:var(--panel-texture);position:absolute;inset:0;opacity:var(--panel-texture-alpha);pointer-events:none}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.even-columns{display:grid;grid-column:1fr 1fr;gap:var(--size-400)}@media (min-width: 50em){.even-columns{grid-auto-flow:column;grid-auto-columns:1fr}}.vertical-align-center{align-items:center}.justify-self-end{justify-self:end}@media (max-width: 50em){.justify-self-end-sm{justify-self:end}}@media (min-width: 50em){.justify-self-end-lg{justify-self:end}}.text-center{text-align:center}.text-center p{margin-inline:auto}@media (max-width: 50em){.text-center-sm{text-align:center}.text-center-sm p{margin-inline:auto}}@media (min-width: 50em){.text-center-lg{text-align:center}.text-center-lg p{margin-inline:auto}}.text-primary{color:hsl(var(--clr-text-primary))}.text-page-background{color:hsl(var(--clr-page-background))}.text-footer-background{color:hsl(var(--clr-footer-background))}.text-panel-background{color:hsl(var(--clr-panel-background))}.text-highlight{color:hsl(var(--clr-text-highlight))}.bg-text-primary{background-color:hsl(var(--clr-text-primary))}.bg-page-background{background-color:hsl(var(--clr-page-background))}.bg-footer-background{background-color:hsl(var(--clr-footer-background))}.bg-panel-background{background-color:hsl(var(--clr-panel-background))}.bg-text-highlight{background-color:hsl(var(--clr-text-highlight))}.fw-bold{font-weight:var(--fw-bold)}.fw-semi-bold{font-weight:var(--fw-semi-bold)}.fw-regular{font-weight:var(--fw-regular)}.fs-primary-heading{font-size:var(--fs-primary-heading);line-height:1.1}.fs-secondary-heading{font-size:var(--fs-secondary-heading);line-height:1.1}.fs-100{font-size:var(--fs-100)}.fs-200{font-size:var(--fs-200)}.fs-300{font-size:var(--fs-300)}.fs-400{font-size:var(--fs-400)}.fs-500{font-size:var(--fs-500)}.fs-600{font-size:var(--fs-600)}.fs-700{font-size:var(--fs-700)}.fs-800{font-size:var(--fs-800)}.fs-900{font-size:var(--fs-900)}.padding-block-100{padding-block:var(--size-100)}.padding-block-200{padding-block:var(--size-200)}.padding-block-300{padding-block:var(--size-300)}.padding-block-400{padding-block:var(--size-400)}.padding-block-500{padding-block:var(--size-500)}.padding-block-600{padding-block:var(--size-600)}.padding-block-700{padding-block:var(--size-700)}.padding-block-900{padding-block:var(--size-900)}.margin-top-100{margin-block-start:var(--size-100)}.margin-top-200{margin-block-start:var(--size-200)}.margin-top-300{margin-block-start:var(--size-300)}.margin-top-400{margin-block-start:var(--size-400)}.margin-top-500{margin-block-start:var(--size-500)}.margin-top-600{margin-block-start:var(--size-600)}.margin-top-700{margin-block-start:var(--size-700)}.margin-top-800{margin-block-start:var(--size-800)}.margin-top-900{margin-block-start:var(--size-900)}.margin-bottom-100{margin-block-end:var(--size-100)}.margin-bottom-200{margin-block-end:var(--size-200)}.margin-bottom-300{margin-block-end:var(--size-300)}.margin-bottom-400{margin-block-end:var(--size-400)}.margin-bottom-500{margin-block-end:var(--size-500)}.margin-bottom-600{margin-block-end:var(--size-600)}.margin-bottom-700{margin-block-end:var(--size-700)}.margin-bottom-800{margin-block-end:var(--size-800)}.margin-bottom-900{margin-block-end:var(--size-900)}.grid-layout:where(.astro-J7PV25F6){display:grid;gap:var(--size-500);grid-auto-columns:1fr;grid-template-areas:"one" "two" "three" "four" "five"}.grid-item:where(.astro-J7PV25F6){padding:var(--size-600)}.grid-item:where(.astro-J7PV25F6):nth-child(1){grid-area:one}.grid-item:where(.astro-J7PV25F6):nth-child(2){grid-area:two}.grid-item:where(.astro-J7PV25F6):nth-child(3){grid-area:three}.grid-item:where(.astro-J7PV25F6):nth-child(4){grid-area:four}.grid-item:where(.astro-J7PV25F6):nth-child(5){grid-area:five}@media screen and (min-width: 50em){.grid-layout:where(.astro-J7PV25F6){grid-template-areas:"one one one one two two" "three three four four four four" "three three four four four four" "three three five five five five"}}
