html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}
@font-face{font-family:Salmond-Semibold;src:url(../fonts/Salmond-Semibold.ttf) format("truetype");font-display:swap}@font-face{font-family:Inter;src:url(../fonts/Inter.ttf) format("truetype");font-display:swap}:root{--bg-color:#161616;--pattern-color:#202020;--font-title:"Salmond-SemiBold","Tahoma","Helvetica",sans-serif;--font-text:"Inter",Arial,sans-serif}*,::after,::before{box-sizing:border-box}body{overflow-x:hidden;overflow-x:clip}
main{opacity:1;background-color:var(--bg-color);background:radial-gradient(circle,transparent 20%,var(--bg-color) 20%,var(--bg-color) 80%,transparent 80%,transparent),radial-gradient(circle,transparent 20%,var(--bg-color) 20%,var(--bg-color) 80%,transparent 80%,transparent) 27.5px 27.5px,linear-gradient(var(--pattern-color) 2.2px,transparent 2.2px) 0 -1.1px,linear-gradient(90deg,var(--pattern-color) 2.2px,var(--bg-color) 2.2px) -1.1px 0;background-size:55px 55px,55px 55px,27.5px 27.5px,27.5px 27.5px}
body,div.cursor-lens a{cursor:none}.cursor,.cursor-border,.cursor-border .corner{mix-blend-mode:difference}.cursor,.cursor-border{transform:translate(-50%,-50%);position:fixed;pointer-events:none;transform-origin:center center;z-index:100}.cursor-border{transition:width .4s,height .4s,border-radius .2s,border-width .2s,opacity .2s;will-change:top,left,width,height;width:40px;height:40px}.cursor-border .corner{position:absolute;width:10px;height:10px;border:2px solid #fff;transition:top .4s,left .4s,right .4s,bottom .4s,border .4s}.cursor-border .top-left{top:0;left:0;border-bottom:none;border-right:none}.cursor-border .top-right{top:0;right:0;border-bottom:none;border-left:none}.cursor-border .bottom-left{bottom:0;left:0;border-top:none;border-right:none}.cursor-border .bottom-right{bottom:0;right:0;border-top:none;border-left:none}.cursor-border-outside,.cursor-outside{opacity:0}.cursor{transition:opacity .4s,width .4s,height .4s,border-radius .2s;will-change:top,left,opacity;width:10px;height:10px;background-color:#fff}.hide-cursor-border{width:0;height:0;border-width:0;border-radius:50%;opacity:0}.cursor-hover{width:60px;height:60px;border-width:2px;border-radius:50%;opacity:1}@media (max-width:991px){.cursor,.cursor-border{display:none}body{cursor:initial}.cursor-lens,.cursor-lens a{cursor:pointer!important}}
header{--_aspect-ratio:2;--_min-size:215px;--_max-size:320px;--_increment-factor:4vw;--_middle-size:calc(var(--_min-size) + var(--_increment-factor));position:fixed;width:clamp(var(--_min-size),var(--_middle-size),var(--_max-size));height:clamp(calc(var(--_min-size)/ var(--_aspect-ratio)),calc(var(--_middle-size)/ var(--_aspect-ratio)),calc(var(--_max-size)/ var(--_aspect-ratio)));display:flex;flex-direction:column;background-color:#333;overflow:hidden;border-bottom-right-radius:100px;transition:width .4s,height .4s,border-bottom-right-radius .4s,background-color .4s;transition-timing-function:cubic-bezier(.85,0,.59,.83);transform-origin:bottom right;z-index:99}.nav-background{position:absolute;width:100%;height:100%;top:0;left:0;background-image:radial-gradient(circle at 25% 25%,var(--pattern-color) 23%,transparent 24%),radial-gradient(circle at 75% 75%,var(--pattern-color) 20%,transparent 21%);background-size:12vmin 12vmin;background-position:center center;z-index:-1;opacity:0;transition:opacity .8s ease-in-out,transform 1.2s ease-in-out,background-size 1s ease-in-out,background-position 1s ease-in-out}.show-background{background-size:11vmin 11vmin;opacity:1}.resize-background{opacity:.4}.navbar-list[data-hovered-index="0"]+.nav-background{background-position-y:-40%}.navbar-list[data-hovered-index="1"]+.nav-background{background-position-y:-80%}.navbar-list[data-hovered-index="2"]+.nav-background{background-position-y:-120%}header.is-open{width:100%;height:100vh;border-bottom-right-radius:0;background-color:var(--bg-color)}nav{position:relative;display:flex;flex-direction:column;flex-grow:1;padding:45px;width:100%;height:100%}.navbar-list{visibility:hidden;height:0;opacity:0;transform:translateX(-20%);overflow:hidden;margin-block:auto;padding:0;list-style-type:none;font-family:var(--font-title);color:#d2d2d2;transition:transform .4s ease-in-out,opacity 1s ease-in-out}ul.show-list{visibility:visible;height:auto;opacity:1;transform:translateX(0)}ul.change-link-transition{transition:transform 1.5s ease-in-out,opacity .4s ease-in-out}ul.hide-list{opacity:0;transform:translateX(-100%)}.navbar-list li{width:max-content;margin:1rem 0;font-size:clamp(2rem,9vmin + 1rem,8rem)}.navbar-list a{text-decoration:none;color:inherit;transition:color .4s ease-in-out;cursor:none}.navbar-list:has(a:hover,li.active-link){color:#4b4b4b}.navbar-list a:hover{color:#bbb}.active-link{color:#fff}.hamburger{position:relative;top:0;left:0;padding:0;width:100%;max-width:100%;max-height:100%;height:100%;display:flex;justify-content:space-evenly;flex-direction:column;gap:.5rem}.hamburger .line{height:calc(2px + .1vw);max-height:20px;background-color:#f0f0f0;border-radius:99px;transition:width .5s ease-in-out,background-color .5s ease-in-out}.hamburger .line-1{width:100%}.hamburger .line-2{width:75%}.hamburger .line-3{width:45%}.hamburger .hamburger-line-active{width:100%;background-color:#fff}@media (max-width:425px){header{--_aspect-ratio:1.8;--_increment-factor:0.5vw}nav{padding:2.85rem 2.5rem}.hamburger .line{height:3px}}
#home{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100vh;color:#fafafa;font-family:var(--font-title);text-align:center;overflow:-moz-hidden-unscrollable;overflow:hidden;overflow:clip;-webkit-user-select:none;user-select:none}.hero-container{backface-visibility:hidden;-webkit-font-smoothing:subpixel-antialiased}.hero-title{position:relative;font-size:clamp(2rem,3vw + 2rem,8rem)}.hero-title .gradient-effect{position:relative}.gradient-effect .underline{position:absolute;bottom:-60%;left:0;width:90%;height:100%;pointer-events:none}.hero-title .doodle{position:absolute;top:-10px;width:10%;height:auto;pointer-events:none}.gradient-text{position:relative;background:linear-gradient(to top right,#fafafaf0,#fafafa8c);background:-webkit-linear-gradient(to top right,#fafafaf0,#fafafa8c);background:-moz-linear-gradient(to top right,#fafafaf0,#fafafa8c);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;padding-block:1rem}.gradient-text{position:relative;background:linear-gradient(to top right,#fafafaf0,#fafafa8c);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}@media (max-width:600px){.hero-title{max-width:80%;margin-inline:auto;will-change:transform}}
#projects{margin-top:2rem}#projects h2{color:#f2f2f2;font-size:clamp(1.5rem,2.5vw + 3rem,16rem);font-family:var(--font-title);margin:0;margin-bottom:5rem;text-align:center;position:relative}.project-cards{padding:3rem}.project-card{max-width:max-content;display:flex;gap:2rem;padding:2rem 2rem;margin-top:2rem;background-color:#212121;border-radius:15px}.project-card:first-child{margin-top:0}.project-card:nth-child(even){margin-left:auto}.loading-pulse{display:inline-block;width:300px;border-radius:6px;background-size:cover;background-position:center;background-repeat:no-repeat;overflow:hidden}.loading-pulse img{width:100%;height:0;min-height:100%;object-fit:cover}.card-text{flex-grow:1}.card-text h3{font-size:clamp(1.5rem,.7vw + 1rem,2.5rem);color:#f2f2f2;font-family:var(--font-text);font-weight:700;margin:0}.card-text p{max-width:45ch;font-size:clamp(1rem,.5vw + .5rem,1.5rem);color:#f2f2f2;font-family:Inter,sans-serif;font-weight:400;margin:0;margin-top:1rem;line-height:1.35rem;text-wrap:pretty}.card-text a{display:block;background-color:#333;padding:1rem;border-radius:5px;color:#f2f2f2;text-decoration:none;text-align:center;font-family:Inter,sans-serif;text-transform:uppercase;font-weight:700;margin-top:1.3rem;cursor:none;box-shadow:rgba(0,0,0,.15) 0 3px 3px 0}@media screen and (max-width:836px){.project-cards{padding:1rem}.project-card{max-width:100%}}@media screen and (max-width:772px){.project-cards{padding:5rem}.project-card{width:100%;flex-direction:column;gap:1rem}.image-wrapper{width:100%;aspect-ratio:16/9}.loading-pulse{width:100%;line-height:0}.loading-pulse img{height:100%}.project-card:nth-child(even){margin-left:0}}@media screen and (max-width:600px){.project-cards{padding:3rem}}@media screen and (max-width:460px){.project-cards{padding:1rem}}
.loading-pulse{position:relative}.loading-pulse::after{content:"";position:absolute;inset:0;background-color:rgb(255,255,255,.1);border-radius:10px;animation:pulse 2.5s infinite}@keyframes pulse{0%{background-color:rgb(255,255,255,0)}50%{background-color:rgb(255,255,255,.1)}100%{background-color:rgb(255,255,255,0)}}.loading-pulse.loaded img,.loading-pulse.loaded video{opacity:1}.loading-pulse.loaded::after{content:none}