canvas[data-astro-cid-f54tivzg]#bg{position:fixed;inset:0;z-index:-1;pointer-events:none}:root{--sdn-height: 64px;--sdn-dot-size: 12px;--sdn-dot-active-size: 16px;--sdn-gap: 36px;--sdn-line-thickness: 2px;--sdn-z: 9999}.sdn{position:fixed;left:50%;transform:translate(-50%);bottom:20px;height:var(--sdn-height);display:flex;align-items:center;gap:var(--sdn-gap);padding:8px 12px;z-index:var(--sdn-z);pointer-events:auto;user-select:none}.sdn__dots{display:flex;gap:var(--sdn-gap);align-items:center;justify-content:center;padding:0 12px;z-index:2}.sdn__dot{all:unset;display:flex;align-items:center;justify-content:center;width:var(--sdn-dot-size);height:var(--sdn-dot-size);border-radius:50%;background:#fff;border:2px solid rgba(0,0,0,.08);cursor:pointer;flex:0 0 auto;position:relative;z-index:3;box-shadow:0 0 8px var(--color-bg);transition:transform .2s ease,background-color .2s ease}.sdn__dot:focus{outline:2px solid var(--color-primary);outline-offset:4px}.sdn__dot[aria-selected=true]{transform:scale(calc(var(--sdn-dot-active-size) / var(--sdn-dot-size)));background:var(--color-primary);box-shadow:0 0 16px var(--color-bg)}@media (max-width: 600px){:root{--sdn-gap: 26px}.sdn{bottom:12px}}.sdn--hidden{display:none!important}/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-outline-style:solid}}}.relative{position:relative}.static{position:static}.container{width:100%}.mx-auto{margin-inline:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.w-full{width:100%}.w-max{width:max-content}.max-w-\[70rem\]{max-width:70rem}.max-w-full{max-width:100%}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.items-center{align-items:center}.justify-center{justify-content:center}.border{border-style:var(--tw-border-style);border-width:1px}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.pt-\[4rem\]{padding-top:4rem}.text-center{text-align:center}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}:root{--color-bg:#0f1110;--color-alpha-bg:#0f111066;--color-alpha-bg-medium:#0f1110a6;--color-alpha-bg-strong:#0f1110d9;--color-surface:#282c2b;--color-primary:#f53325;--color-text:#c2c9dd;--color-muted:#536978;--color-muted-light:#9ca7c8;--color-primary-weak:#f533250f;--color-subtle-border:#ffffff08;--transition-speed:.3s;--border-radius:.5rem;--glass-fade-border:1rem;--glass-sharp-padding:1rem;--glass-sharp-border:1px;--blur-amount:.6rem;--card-gap:1rem;--project-card-width:40rem;--carousel-cell-width:40rem}html{background-color:var(--color-bg);color:var(--color-text);scroll-behavior:smooth;font-family:JetBrains Mono,monospace}body{margin:0 auto;padding:0;line-height:1.6}*,:before,:after{box-sizing:border-box}h1,h2,h3,h4{margin:2rem 0 1rem;font-family:Inter,sans-serif;font-weight:700;line-height:1.2}h1{font-size:4rem}h1#my-name{text-shadow:0 0 .5rem #0009;font-size:clamp(3rem,7vw + 1rem,10rem)}h2{font-size:clamp(2.5rem,3vw + .6rem,6rem)}h3{font-size:clamp(2rem,1.5vw + .4rem,4rem)}h4{font-size:clamp(1.5rem,1vw + .3rem,3rem)}p{color:var(--color-text);margin:1rem 0}#bio{max-width:70ch}.page-contents{margin:0 1rem}.section{width:100%;height:100dvh;overflow:hidden}.caption{text-align:center}.nav{z-index:1000;background:0 0;justify-content:space-between;align-items:center;width:100%;padding:1rem 1rem 2rem;display:flex;position:fixed;top:0}.nav:before{content:"";-webkit-backdrop-filter:blur(var(--blur-amount))saturate(120%);backdrop-filter:blur(var(--blur-amount))saturate(120%);z-index:-1;-webkit-mask-image:linear-gradient(#000 0%,#0000 100%);background-color:#0003;position:absolute;inset:0;mask-image:linear-gradient(#000 0% calc(100% - 1.5rem),#0000);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.nav .logo{color:var(--color-primary);font-size:1.5rem;font-weight:700;text-decoration:none}.nav-links{gap:1.5rem;display:flex}.nav-links a{color:var(--color-text);transition:color var(--transition-speed);text-shadow:0 0 .25rem #0009;font-weight:500;text-decoration:none;position:relative}.nav-links a:before{content:"";background-color:var(--color-alpha-bg);-webkit-backdrop-filter:grayscale(50%)blur(6px);backdrop-filter:grayscale(50%)blur(6px);z-index:-1;transition:all var(--transition-speed)ease;border-radius:.5em;position:absolute;inset:-.25em -.5em}.nav-links a:hover:before{background-color:var(--color-alpha-bg-medium);-webkit-backdrop-filter:grayscale()blur(6px);backdrop-filter:grayscale()blur(6px)}.nav-links a:after{content:"";background:var(--color-primary);width:0;height:2px;transition:width var(--transition-speed);display:block;position:absolute;bottom:-4px;left:0}.nav-links a:hover,.nav-links a:focus{color:var(--color-primary)}.nav-links a:hover:after,.nav-links a:focus:after{width:100%}.hamburger{cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:space-around;width:30px;height:24px;padding:0;display:none}.hamburger .line{background:var(--color-text);width:100%;height:3px;transition:all var(--transition-speed)ease;margin-bottom:7px;display:block}@media (max-width:636px){.nav-links{display:none}.nav-links.expanded{background:var(--color-surface);z-index:40;flex-direction:column;align-items:center;gap:1rem;width:100%;padding:1rem 0;display:flex;position:absolute;top:100%;left:0}.hamburger{display:block}}input,textarea,button{font-family:inherit;font-size:inherit;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-muted);border-radius:var(--border-radius);transition:border-color var(--transition-speed);padding:.5rem .75rem}input:focus,textarea:focus{border-color:var(--color-primary);outline:none}button{background:var(--color-primary);color:var(--color-bg);cursor:pointer;transition:background var(--transition-speed);border:none}button:hover,button:focus{background:var(--color-primary)}.footer .social-link{background-color:var(--color-surface);border:1px solid var(--color-muted);border-radius:var(--border-radius);width:2.5rem;height:2.5rem;transition:all var(--transition-speed);color:var(--color-text);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.footer .social-link:hover,.footer .social-link:focus{background-color:var(--color-primary);color:var(--color-bg);border-color:var(--color-primary)}.hero{height:100dvh;padding:4rem 0 0;position:relative}.projects-carousel-wrapper{max-width:clamp(75%,calc(var(--project-card-width) + 2*var(--glass-sharp-padding) + 2*var(--glass-sharp-border)),100%);box-sizing:border-box;height:max-content}.projects{flex-direction:column;gap:1.5rem;display:flex}.projects .cards{flex-direction:row;align-items:flex-start;display:flex}.projects .cards>*{margin-left:var(--card-gap)}.projects .cards>:first-child{margin-left:0}.projects .cards--vertical{row-gap:var(--card-gap);grid-auto-rows:auto;display:grid}.project-card{background:var(--color-surface);border-radius:var(--border-radius);transition:box-shadow var(--transition-speed);border:1px solid var(--color-muted);width:100%;padding:1.5rem;overflow:visible}.project-card>h1:first-child,.project-card>h2:first-child,.project-card>h3:first-child,.project-card>h4:first-child{margin-top:.5rem}.project-card:hover{box-shadow:0 4px 20px #00000080}.project-content>*+*{margin-top:1rem}.project-media{grid-auto-rows:min-content;gap:1rem;display:grid}.project-media img{border-radius:var(--border-radius);max-width:100%;height:auto;display:block}.project-media video,.project-media iframe{aspect-ratio:16/9;border-radius:var(--border-radius);width:100%;display:block}.contact-buttons{justify-content:center;gap:1rem;margin-top:.5rem;display:flex}.button{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-muted);border-radius:var(--border-radius);cursor:pointer;transition:all var(--transition-speed);justify-content:center;align-items:center;gap:.5rem;padding:.5rem 1rem;font-weight:500;text-decoration:none;display:inline-flex}.button:hover,.button:focus{background:var(--color-primary);color:var(--color-bg);border-color:var(--color-primary)}a.button{text-decoration:none}a.button:after{content:none}pre[class*=language-]{background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-surface);border-radius:.5rem;padding:1rem;overflow:auto}pre[class*=language-] code,code[class*=language-]{color:var(--color-text);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Roboto Mono,Segoe UI Mono,monospace;font-size:.92rem}pre[class*=language-] .token.comment,pre[class*=language-] .token.prolog,pre[class*=language-] .token.doctype,pre[class*=language-] .token.cdata{color:var(--color-muted-light);opacity:.95}pre[class*=language-] .token.keyword,pre[class*=language-] .token.selector,pre[class*=language-] .token.important{color:var(--color-primary);font-weight:600}pre[class*=language-] .token.function,pre[class*=language-] .token.class-name{color:var(--color-muted);font-weight:600}pre[class*=language-] .token.string,pre[class*=language-] .token.char,pre[class*=language-] .token.attr-value{color:var(--color-muted-light)}pre[class*=language-] .token.number,pre[class*=language-] .token.boolean{color:var(--color-primary)}pre[class*=language-] ::selection{background:var(--color-primary-weak)}html{scrollbar-width:thin;scrollbar-color:var(--color-primary)var(--color-bg)}html::-webkit-scrollbar{width:10px;height:10px}html::-webkit-scrollbar-track{background:var(--color-bg);border-radius:999px}html::-webkit-scrollbar-thumb{background:var(--color-primary);border:2px solid var(--color-surface);border-radius:999px}html::-webkit-scrollbar-thumb:hover{background:var(--color-primary)}@media (prefers-reduced-motion:no-preference){html::-webkit-scrollbar{transition:opacity var(--transition-speed)}}pre[class*=language-],pre.code-csharp{scrollbar-width:thin;scrollbar-color:var(--color-primary)var(--color-bg);overflow:auto}pre[class*=language-]::-webkit-scrollbar{height:10px}pre.code-csharp::-webkit-scrollbar{height:10px}pre[class*=language-]::-webkit-scrollbar-track{background:var(--color-bg);border-radius:999px}pre.code-csharp::-webkit-scrollbar-track{background:var(--color-bg);border-radius:999px}pre[class*=language-]::-webkit-scrollbar-thumb{background:var(--color-primary);border:2px solid var(--color-surface);border-radius:999px}pre.code-csharp::-webkit-scrollbar-thumb{background:var(--color-primary);border:2px solid var(--color-surface);border-radius:999px}pre[class*=language-]::-webkit-scrollbar-thumb:hover{background:var(--color-primary)}pre.code-csharp::-webkit-scrollbar-thumb:hover{background:var(--color-primary)}@media (prefers-reduced-motion:no-preference){pre[class*=language-]::-webkit-scrollbar{transition:opacity var(--transition-speed)}}.parallax-container{position:relative}.parallax-wrapper{z-index:-1;pointer-events:none;width:100vw;position:fixed;inset:0;overflow-y:hidden}.parallax-bg{width:100vw;height:auto;image-rendering:pixelated;will-change:transform;z-index:-1;position:absolute;top:0;left:0%;overflow:hidden;transform:translate(0)translateY(0)}canvas#bg{image-rendering:pixelated;image-rendering:crisp-edges;width:100%;height:100%}.glass-sharp{background:var(--color-alpha-bg);-webkit-backdrop-filter:blur(var(--blur-amount));border-radius:var(--border-radius);padding:var(--glass-sharp-padding);border:var(--glass-sharp-border)solid var(--color-muted);-webkit-backdrop-filter:blur(var(--blur-amount))!important;backdrop-filter:blur(var(--blur-amount))!important}.glass-sharp.dark{background:var(--color-alpha-bg-strong)}.glass--fade{isolation:isolate;z-index:0;background:0 0;position:relative}.glass--fade:before{content:"";inset:calc(-1*var(--glass-fade-border));border-radius:inherit;background:var(--color-alpha-bg);-webkit-backdrop-filter:blur(var(--blur-amount))saturate(120%);backdrop-filter:blur(var(--blur-amount))saturate(120%);z-index:-1;position:absolute}@media (prefers-reduced-transparency:reduce){.glass--fade{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--color-alpha-bg-strong);box-shadow:none;-webkit-mask-image:none;mask-image:none}}@supports not ((-webkit-backdrop-filter:blur(0)) or (backdrop-filter:blur(0))){.glass--fade{background:var(--color-alpha-bg-strong);box-shadow:0 6px 20px #00000059,inset 0 0 40px #00000040;-webkit-mask-image:none;mask-image:none}}.nav-links a:before,.glass--fade:before,.fade-edges{-webkit-mask-composite:intersect;-webkit-mask-image:linear-gradient(to right,transparent 0,black var(--glass-fade-border),black calc(100% - var(--glass-fade-border)),transparent 100%),linear-gradient(to bottom,transparent 0,black var(--glass-fade-border),black calc(100% - var(--glass-fade-border)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,black var(--glass-fade-border),black calc(100% - var(--glass-fade-border)),transparent 100%),linear-gradient(to bottom,transparent 0,black var(--glass-fade-border),black calc(100% - var(--glass-fade-border)),transparent 100%);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-composite:source-in;mask-composite:intersect}a{color:var(--color-primary);transition:color var(--transition-speed);text-decoration:none;position:relative}a:after{content:"";background-color:var(--color-primary);width:0%;height:2px;transition:width var(--transition-speed)ease;position:absolute;bottom:-2px;left:0}a:hover,a:focus{color:var(--color-primary)}a:hover:after,a:focus:after{width:100%}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
