*{margin:0;padding:0;box-sizing:border-box}:root{--clrPrimary: hsl(0, 95%, 62%);--clrBg: hsl(240, 11%, 7%);--clrBgLight: hsl(240, 6%, 13%);--clrHeading: hsl(0, 0%, 100%);--clrText: hsl(240, 9%, 91%);--clrDetail: hsl(0, 0%, 67%);--clrScroll: hsl(240, 3%, 19%);--siteWidth: 2560px;--sitePadding: 4rem;--sidebarWidth: 38rem;--Barlow-and-fallbacks: "Barlow Condensed", -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;--GeistSans-and-fallbacks: "Geist Sans", -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;--GeistMono-and-fallbacks: "Geist Mono", Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace}html{font-size:62.5%;background:var(--clrBg)}body{font-family:var(--GeistSans-and-fallbacks);font-size:1.6rem;color:var(--clrText);background:var(--clrBg);overflow-x:hidden}body:has(#hero){background:url(/assets/bg_optimized.webp) no-repeat,var(--clrBg);background-size:cover;background-position:center center;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover}#root{display:flex;flex-direction:column;min-height:100dvh}header{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;flex-shrink:0;height:30rem;padding:2rem var(--sitePadding) 2rem calc(var(--sidebarWidth) + var(--sitePadding));background-repeat:no-repeat;background-position:center center;background-size:cover;overflow:hidden;-webkit-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;transition:padding .2s ease}.header-divider{position:absolute;bottom:0;left:0;width:100%;height:53px;background-image:url(/assets/header-divider.webp);background-repeat:repeat-x}main{flex-grow:1;display:flex;flex-direction:column;gap:4rem;max-width:var(--siteWidth);padding:4rem var(--sitePadding) 4rem calc(var(--sidebarWidth) + var(--sitePadding));transition:padding .2s ease}.not-found{display:flex;justify-content:center;align-items:center}h1,h2,h3,h4,h5,h6{font-family:var(--GeistMono-and-fallbacks);color:var(--clrHeading);letter-spacing:-.03em}h2{margin-bottom:2rem;font-size:4rem}a{color:inherit;text-decoration:none}img{display:block;max-width:100%;width:100%}button{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:.5rem 1rem;color:var(--clrText);font-family:inherit;text-align:center;border:none;border-radius:.6rem;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}button svg{height:1em}ul{list-style:none}video{aspect-ratio:16/9}[popover]{color:inherit;border:none;height:auto}.link{color:var(--clrPrimary)}.link:hover{text-decoration:underline}.noselect{-webkit-user-select:none;-ms-user-select:none;user-select:none}.btn-secondary{background-color:#313135;transition:background-color ease .2s}.btn-secondary:hover{background-color:#505053}#header-webdev{background-image:url(/assets/header-web.webp)}#header-gamedev{background-image:url(/assets/bg_optimized.webp)}#header-ue-terminal{background-image:url(/assets/gamedev/unreal-engine/terminal/terminal_2.webp)}#header-halo-deathrun{background-image:url(/assets/gamedev/halo-infinite/deathrun/deathrun_1.webp)}#header-halo-lake-hot-pursuit{background-image:url(/assets/gamedev/halo-infinite/lake-hot-pursuit/lake-hot-pursuit_1.webp)}#header-halo-overdose{background-image:url(/assets/gamedev/halo-infinite/overdose/overdose_6.webp)}#header-halo-junk-flea{background-image:url(/assets/gamedev/halo-infinite/junk-flea/junk-flea_17.webp)}#header-tu-station-58{background-image:url(/assets/gamedev/tower-unite/station-58/station-58_23.webp)}#header-tu-lumbridge-castle{background-image:url(/assets/gamedev/tower-unite/lumbridge-castle/lumbridge-castle_3.webp)}#header-tu-quindecim{background-image:url(/assets/gamedev/tower-unite/quindecim/quindecim_9.webp)}#header-tu-exploded-cinema{background-image:url(/assets/gamedev/tower-unite/exploded-cinema/exploded-cinema_10.webp)}#header-tu-misc{background-image:url(/assets/gamedev/tower-unite/misc/art-gallery_2.webp)}#header-rs-mp_shop{background-image:url(/assets/gamedev/roblox-studio/mp_shop/mp_shop_2.webp)}#header-rs-q3dm17{background-image:url(/assets/gamedev/roblox-studio/q3dm17/q3dm17_3.webp)}#header-rs-thy-kingdom-come{background-image:url(/assets/gamedev/roblox-studio/thy-kingdom-come/thy-kingdom-come_3.webp)}#page-title{font-size:clamp(3rem,6vw,10rem);color:var(--clrText);mix-blend-mode:color-burn;transform:translateZ(0)}.page-title-text{padding:0 .1em;color:var(--clrHeading);background:var(--clrPrimary);white-space:nowrap}.detached{display:inline-block;white-space:nowrap}.caret{white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:none;clip:rect(0,0,0,0);white-space:nowrap;overflow:hidden}@keyframes blink{0%{opacity:1}50%{opacity:0}to{opacity:1}}.detail{color:var(--clrDetail)}.section-title{line-height:1em}.section-title-core:not(:last-child){margin-right:.5em}.view-all{display:inline-block;font-size:.5em;font-weight:200;letter-spacing:-.08em;color:var(--clrDetail);transition:color ease .2s;white-space:nowrap}.view-all:hover{color:var(--clrPrimary);text-decoration:underline}.view-all svg{width:.6em;height:.6em;vertical-align:text-top}.view-all:not(:hover) svg{opacity:0}.grid-1x{display:grid;grid-template-columns:minmax(0,1fr);gap:1rem}.grid-2x{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.grid-6x{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1rem}.grid-2-1x{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:2rem}.grid-1-2x{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:2rem}.float-left{float:left;width:30%;margin-right:2rem;margin-bottom:2rem}.float-right{float:right;width:30%;margin-bottom:2rem;margin-left:2rem}.project-preview{position:relative;aspect-ratio:1/1;background-position:center;background-size:cover;background-repeat:no-repeat;overflow:hidden;transition:all ease .2s;border-radius:.6rem;border:.1rem solid transparent}.project-preview:hover,.project-preview:has(:focus-visible){border-color:var(--clrPrimary)}.project-meta{display:flex;flex-direction:column;justify-content:space-between;height:100%;padding:1rem;text-shadow:0 0 .1rem var(--clrBg),0 0 .5rem var(--clrBg),0 0 1.5rem var(--clrBg)}.project-title{font-weight:700}.project-tags{font-size:.7em}.project-github{position:absolute;top:1rem;right:1rem;opacity:.6;transition:opacity .2s ease;z-index:1}.project-github:hover{opacity:1}.project-github svg{width:3rem;height:3rem}nav{position:fixed;top:0;bottom:0;left:0;display:flex;flex-direction:column;gap:2rem;width:var(--sidebarWidth);padding:2rem 4rem;background:var(--clrBgLight);box-shadow:0 0 10px 5px #000c;overflow:hidden auto;scrollbar-width:thin;scrollbar-color:var(--clrScroll) var(--clrBgLight);z-index:9999;transition:all .2s ease}#nav-trigger{top:2rem;left:2rem;position:fixed;color:var(--clrText);background:none;z-index:9900;-webkit-backdrop-filter:blur(1rem);backdrop-filter:blur(1rem);transition:background-color .2s ease}#nav-trigger:hover,#nav-trigger:focus-visible{background-color:var(--clrBg)}#nav-trigger svg{display:block;width:4rem;height:4rem}#nav-close{padding:0;display:flex;position:absolute;top:2rem;right:2rem;font-size:2rem;color:var(--clrText);background:none;z-index:1;opacity:.6;transition:opacity ease .2s}#nav-close:hover,#nav-close:focus-visible{opacity:1}#nav-close svg{display:block;width:4rem;height:4rem}#nav-trigger,#nav-close{display:none}#author{display:flex;flex-direction:column;justify-items:center;align-items:center;gap:2rem;text-align:center}#author-logo{flex-shrink:0;display:flex;justify-content:center;align-items:center;width:12rem;height:12rem;padding:2rem;color:var(--clrPrimary);background:var(--clrBg);border-radius:999rem}#author-info span{display:block}#author-name{font-family:var(--Barlow-and-fallbacks);font-size:4rem;font-weight:500;color:var(--clrHeading)}#tagline{color:var(--clrDetail)}#contact{display:flex;justify-content:space-between;gap:1em}#contact>*{min-width:0}#contact li:not(:last-child){margin-bottom:.5rem}.contact-entry{display:flex;align-items:center;gap:1rem}.contact-entry svg{flex-shrink:0;width:1em;height:1em}.contact-entry span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#contact .link-as-btn{flex-shrink:0}.link-as-btn{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:.5rem 1rem;color:var(--clrText);font-family:inherit;text-align:center;border:none;border-radius:.6rem;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;background-color:#313135;transition:background-color ease .2s}.link-as-btn:hover{background-color:#505053}.link-as-btn svg{height:1em}#bio>*:not(:last-child){margin-bottom:1em}#badges{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem}.tech-badge{display:inline-flex;justify-content:center;align-items:center;gap:.2em;padding:.2rem .4rem;border-radius:.3rem}.tech-badge svg{height:1em}#nav-links{display:flex;flex-direction:column;gap:1rem}#nav-links a{display:flex;align-items:center;gap:2rem;padding:1rem;font-size:2rem;border-radius:.6rem;transition:all .2s ease}#nav-links .active{color:var(--clrDetail);background:var(--clrBg)}#nav-links a:not(.active):hover{color:var(--clrBg);background:var(--clrPrimary)}#nav-links svg{height:1em}#socials{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-top:auto}#socials li{display:flex;justify-content:center;align-items:center;transition:opacity .2s ease}#socials:has(li:hover) li:not(:hover){opacity:.6}#socials svg{display:block;width:1em;height:1em}.gallery img{aspect-ratio:16/9;cursor:pointer;border-radius:.6rem}.lightbox{display:flex;justify-content:center;align-items:center;width:100%;height:100%;margin:auto;background:none;outline:none;overflow:hidden;z-index:99999}.lightbox:-internal-dialog-in-top-layer{max-width:100%!important;max-height:100%!important}.lightbox::backdrop{background:#000000b3;-webkit-backdrop-filter:blur(.5rem);backdrop-filter:blur(.5rem)}.lightbox img{max-width:100%;max-height:100%}.lightbox-arrows{position:absolute;display:flex;justify-content:space-between;top:0;right:0;bottom:0;left:0;align-items:center;pointer-events:none}.lightbox-arrows button{height:100%;padding:0;color:var(--clrText);background:none;opacity:.6;pointer-events:auto;transition:all .2s ease;border-radius:0;outline:none}.lightbox-arrows button:not(:disabled):hover,.lightbox-arrows button:not(:disabled):focus-visible{background:hsla(from var(--clrBg) h s l / .3);opacity:1}.lightbox-arrows button:disabled{pointer-events:none;cursor:auto;color:gray;opacity:.2}.lightbox-arrows svg{width:8rem;height:8rem;filter:drop-shadow(0 0 1rem var(--clrBg)) drop-shadow(0 0 1rem var(--clrBg))}.lightbox-close{position:absolute;top:0;right:0;padding:0;color:var(--clrText);background:none;transition:all .2s ease;opacity:.6;z-index:1}.lightbox-close svg{width:8rem;height:8rem}.lightbox-close:hover,.lightbox-close:focus-visible{color:var(--clrText);opacity:1}#hero{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}#hero h1{margin-bottom:2rem;font-size:clamp(5rem,10vw,20rem);color:var(--clrText);border-bottom:1rem solid var(--clrPrimary);mix-blend-mode:color-burn;transform:translateZ(0)}#hero-socials{display:flex;gap:1rem;justify-content:space-between;align-items:center}#hero-socials a{display:block;opacity:.6;mix-blend-mode:color-burn;transform:translateZ(0);transition:all .2s ease}#hero-socials a:hover{opacity:1;transform:scale(1.1);mix-blend-mode:normal}#hero-socials svg{width:2em;height:2em}.p-page-meta>*:not(:last-child){margin-bottom:1em}section p:not(:last-child){margin-bottom:1em}@media only screen and (max-width: 1440px){.grid-6x{grid-template-columns:repeat(5,minmax(0,1fr))}}@media only screen and (max-width: 1280px){.grid-6x{grid-template-columns:repeat(4,minmax(0,1fr))}}@media only screen and (max-width: 1080px){.grid-6x{grid-template-columns:repeat(3,minmax(0,1fr))}}@media only screen and (max-width: 968px){.grid-6x{grid-template-columns:repeat(4,minmax(0,1fr))}}@media only screen and (max-width: 768px){.grid-6x{grid-template-columns:repeat(3,minmax(0,1fr))}}@media only screen and (max-width: 592px){.grid-6x{grid-template-columns:repeat(2,minmax(0,1fr))}}@media only screen and (max-width: 375px){.grid-6x{grid-template-columns:repeat(1,minmax(0,1fr))}}@media only screen and (max-width: 968px){header{padding:2rem var(--sitePadding)}main{padding:4rem var(--sitePadding)}#hero h1{margin-bottom:1rem}nav:not(:popover-open){visibility:hidden}#nav-trigger{display:block}nav:popover-open #nav-close{display:block}nav:not(:popover-open){transform:translate(-100%)}nav:popover-open{transform:translate(0)}nav::backdrop{background:#000000b3;-webkit-backdrop-filter:blur(.5rem);backdrop-filter:blur(.5rem)}#author{flex-direction:row;text-align:start}#author-logo{width:8rem;height:8rem}}@media only screen and (max-width: 768px){.grid-1-2x{grid-template-columns:repeat(1,minmax(0,1fr))}}@media only screen and (max-width: 592px){:root{--sitePadding: 2rem}.float-left,.float-right{margin:0;width:100%;float:none}.float-left:not(:last-child),.float-right:not(:last-child){margin-bottom:2rem}}@media only screen and (max-width: 380px){nav{width:100%}#contact{flex-direction:column}}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-Regular-DJ-RBg49.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-Italic-irS4qIJZ.ttf) format("truetype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-Thin-CjWQppp_.ttf) format("truetype");font-weight:100;font-style:normal;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-ThinItalic-Jqd8TKOO.ttf) format("truetype");font-weight:100;font-style:italic;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-ExtraLight-CBeX4UeZ.ttf) format("truetype");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-ExtraLightItalic-BSHmRXPl.ttf) format("truetype");font-weight:200;font-style:italic;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-Light-_SbCiYy6.ttf) format("truetype");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-LightItalic-BclGm7wu.ttf) format("truetype");font-weight:300;font-style:italic;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-Medium-D5SstYzJ.ttf) format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-MediumItalic-DHCEbArF.ttf) format("truetype");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-SemiBold-BrYe_5tT.ttf) format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-SemiBoldItalic-Bap-HGcg.ttf) format("truetype");font-weight:600;font-style:italic;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-Bold-B8gd-ZdH.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-BoldItalic-gxc0KdIr.ttf) format("truetype");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-ExtraBold-BvZWzdVf.ttf) format("truetype");font-weight:800;font-style:normal;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-ExtraBoldItalic-BeIoTZtZ.ttf) format("truetype");font-weight:800;font-style:italic;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-Black-CSYURY8W.ttf) format("truetype");font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/assets/BarlowCondensed-BlackItalic-Boz3ytpD.ttf) format("truetype");font-weight:900;font-style:italic;font-display:swap}@font-face{font-family:Geist Sans;src:url(/assets/Geist-Regular-C-tpyHWR.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Geist Sans;src:url(/assets/Geist-Thin-Dp6dXHSd.woff2) format("woff2");font-weight:100;font-style:normal;font-display:swap}@font-face{font-family:Geist Sans;src:url(/assets/Geist-ExtraLight-oc4o-2Oc.woff2) format("woff2");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:Geist Sans;src:url(/assets/Geist-Light-DepfNKtl.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Geist Sans;src:url(/assets/Geist-Medium-VS4OQvcm.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Geist Sans;src:url(/assets/Geist-SemiBold-BujflzBj.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Geist Sans;src:url(/assets/Geist-Bold-vmq638g1.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Geist Sans;src:url(/assets/Geist-ExtraBold-B9C6BT9F.woff2) format("woff2");font-weight:800;font-style:normal;font-display:swap}@font-face{font-family:Geist Sans;src:url(/assets/Geist-Black-BE5TvrAl.woff2) format("woff2");font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-Regular-C93fy9qq.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-Thin-DQeK3Eiu.woff2) format("woff2");font-weight:100;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-UltraLight-B8qFYtvp.woff2) format("woff2");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-Light-4YqCFs4v.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-Medium-BBynMe2C.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-SemiBold-CkdWr4gb.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-Bold-DM38TDje.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-Black-5BnVymWg.woff2) format("woff2");font-weight:800;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-UltraBlack-BxYoyBhh.woff2) format("woff2");font-weight:900;font-style:normal;font-display:swap}
