@font-face{font-family:FirstNameFont;src:url(/assets/TuskerGrotesk-3500Medium-B5hGlv70.ttf) format("truetype");ascent-override:96%;descent-override:2%;font-weight:400;font-style:normal}@font-face{font-family:LastNameFont;src:url(/assets/TuskerGrotesk-3800Super-lMeVP_Un.ttf) format("truetype");ascent-override:96%;descent-override:2%;font-weight:400;font-style:normal}@font-face{font-family:SkillsFont;src:url(/assets/Geist-ExtraLight-3jvYTAkX.ttf) format("truetype");font-weight:400;font-style:normal}*{-webkit-user-select:none;user-select:none;box-sizing:border-box}html,body{height:100%;background:linear-gradient(to bottom,#000,#191919 25%);background-repeat:no-repeat;background-size:cover;padding:0;margin:0;overflow-x:hidden}#root{min-height:100%;overflow-y:hidden;text-align:center}.hero-section{display:inline-grid;grid-template-rows:auto auto auto;justify-items:center;text-align:center}.first-name{justify-self:start}.first-name p{font-family:FirstNameFont,sans-serif;background-image:linear-gradient(to right,#8a8a8a,#f0f0f0 25%);-webkit-background-clip:text;background-clip:text;color:transparent;margin:0;font-size:clamp(4rem,15vw,16rem)}.button-lastname-row{display:flex;align-items:center;margin-top:.5em}.contact-button{align-self:flex-start;margin-top:.7em;margin-right:1.2em;cursor:pointer;background:linear-gradient(-135deg,#181818,#252525,#181818);border:1px solid #353535;border-radius:50px;padding:.6em 1.2em;box-shadow:0 2px 8px #0a0a0a40 inset;will-change:transform;transition:transform .5s ease}.contact-button:hover{transform:scale(1.05)}.last-name p{font-family:LastNameFont,sans-serif;background-image:linear-gradient(to left,#8a8a8a,#f0f0f0 25%);-webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:.2rem;margin:0;font-size:clamp(4rem,15vw,16rem)}.skills{display:flex;justify-content:flex-end;width:100%;margin-top:-.2em;margin-right:.6em}.skills-words{font-family:SkillsFont;color:#b2b2b2;font-size:clamp(1.2rem,3vw,2.2rem);letter-spacing:-.05rem}.logo-section{display:flex;flex-direction:column;align-items:center;margin-top:5em}.logo-section>*{margin:0;padding:10;line-height:0}.aurora-container{width:100%;height:15vh;overflow:hidden;flex-shrink:0}.logoloop{position:relative;overflow-x:hidden;--logoloop-gap: 32px;--logoloop-logoHeight: 28px;--logoloop-fadeColorAuto: #ffffff}.logoloop--scale-hover{padding-top:calc(var(--logoloop-logoHeight) * .1);padding-bottom:calc(var(--logoloop-logoHeight) * .1)}@media (prefers-color-scheme: dark){.logoloop{--logoloop-fadeColorAuto: #0b0b0b}}.logoloop__track{display:flex;width:max-content;will-change:transform;-webkit-user-select:none;user-select:none}.logoloop__list{padding-left:0;display:flex;align-items:center;list-style-type:none}.logoloop__item{flex:0 0 auto;margin-right:var(--logoloop-gap);font-size:var(--logoloop-logoHeight);line-height:1}.logoloop__item:last-child{margin-right:var(--logoloop-gap)}.logoloop__node{display:inline-flex;align-items:center}.logoloop__item img{height:var(--logoloop-logoHeight);width:auto;display:block;object-fit:contain;image-rendering:-webkit-optimize-contrast;-webkit-user-drag:none;pointer-events:none;will-change:transform;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s ease-in-out}.logoloop--scale-hover .logoloop__item{overflow:visible}.logoloop--scale-hover .logoloop__item:hover img,.logoloop--scale-hover .logoloop__item:hover .logoloop__node{transform:scale(1.2)}.logoloop--scale-hover .logoloop__node{transition:transform .3s cubic-bezier(.4,0,.2,1)}.logoloop__link{display:inline-flex;align-items:center;text-decoration:none;border-radius:4px;transition:opacity .2s ease}.logoloop__link:hover{opacity:.8}.logoloop__link:focus-visible{outline:2px solid currentColor;outline-offset:2px}.logoloop--fade:before,.logoloop--fade:after{content:"";position:absolute;top:0;bottom:0;width:clamp(24px,8%,120px);pointer-events:none;z-index:1}.logoloop--fade:before{left:0;background:linear-gradient(to right,var(--logoloop-fadeColor, var(--logoloop-fadeColorAuto)) 0%,rgba(0,0,0,0) 100%)}.logoloop--fade:after{right:0;background:linear-gradient(to left,var(--logoloop-fadeColor, var(--logoloop-fadeColorAuto)) 0%,rgba(0,0,0,0) 100%)}@media (prefers-reduced-motion: reduce){.logoloop__track{transform:translateZ(0)!important}.logoloop__item img,.logoloop__node{transition:none!important}}.logoloop__logo-wrapper{position:relative;display:inline-block;height:var(--logoloop-logoHeight);width:auto}.color-logo{position:absolute;top:0;left:0;opacity:0;filter:drop-shadow(0 0 6px rgba(0,0,0,.5))}.logoloop--scale-hover .logoloop__item:hover .color-logo{opacity:1}.logoloop--scale-hover .logoloop__item:hover .white-logo{opacity:0}.color-logo.aiohttp{filter:drop-shadow(0 0 6px rgba(44,91,180))}.color-logo.aws{filter:drop-shadow(0 -4px 6px rgba(240,240,240,.5)) drop-shadow(0 4px 6px rgba(255,153,0,.5))}.color-logo.beautifulsoup{filter:drop-shadow(0 0 6px rgba(240,240,240))}.color-logo.css{filter:drop-shadow(0 0 6px rgba(41,101,241))}.color-logo.django{filter:drop-shadow(0 0 6px rgba(34,116,85))}.color-logo.docker{filter:drop-shadow(0 0 6px rgba(29,99,237,.5))}.color-logo.excel{filter:drop-shadow(0 0 6px rgba(33,163,102))}.color-logo.fastapi{filter:drop-shadow(0 0 6px rgba(0,150,136))}.color-logo.git{filter:drop-shadow(0 0 6px rgba(240,80,51,.5))}.color-logo.html{filter:drop-shadow(0 0 6px rgba(241,101,41))}.color-logo.javascript{filter:drop-shadow(0 0 6px rgba(247,223,30))}.color-logo.linux{filter:drop-shadow(0 0 6px rgba(240,240,240,.75))}.color-logo.mongodb{filter:drop-shadow(0 0 6px rgba(18,169,81))}.color-logo.numpy{filter:drop-shadow(0 0 6px rgba(77,171,207,.5))}.color-logo.pandas{filter:drop-shadow(0 0 6px rgba(95,106,215))}.color-logo.playwright{filter:drop-shadow(-4px 0 6px rgba(214,83,72)) drop-shadow(4px 0 6px rgba(46,173,51))}.color-logo.postgresql{filter:drop-shadow(0 0 6px rgba(51,103,145,.5))}.color-logo.postman{filter:drop-shadow(0 0 6px rgba(238,109,135))}.color-logo.python{filter:drop-shadow(-2px -2px 6px rgba(55,115,165,.35)) drop-shadow(2px 2px 6px rgba(255,209,65,.35))}.color-logo.react{filter:drop-shadow(0 0 6px rgba(8,126,164,.5))}.color-logo.selenium{filter:drop-shadow(0 0 6px rgba(0,180,0))}.color-logo.slack{filter:drop-shadow(-1px -1px 4px rgba(54,197,240,.3)) drop-shadow(1px -1px 3.5px rgba(46,182,125,.25)) drop-shadow(-1px 1px 3.5px rgba(224,30,90,.25)) drop-shadow(1px 1px 4px rgba(236,178,46,.3))}.color-logo.supabase{filter:drop-shadow(0 0 6px rgba(62,207,142))}.color-logo.vscode{filter:drop-shadow(0 0 6px rgba(34,166,242,.5))}@font-face{font-family:NavFont;src:url(/assets/GeistMono-Regular-CxeQQu7Q.ttf) format("truetype");font-weight:400;font-style:normal}.header{position:fixed;top:0;left:0;width:100%;z-index:50;background:#080808b3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.header:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:1px;background:linear-gradient(90deg,#000,#b7b7b7,#000);opacity:.5}.header-container{max-width:1200px;margin:0 auto;padding:1rem 2rem;display:flex;align-items:center;justify-content:space-between}.social-icons{display:flex;align-items:center;gap:1.8rem}.social-icons a{display:inline-flex;align-items:center;justify-content:center;width:25px;height:25px;padding:0;margin:0;transition:transform .2s ease,opacity .3s ease}.social-icons a:hover{transform:scale(1.1)}.icon{position:relative;width:100%;height:auto;display:inline-block}.icon img{position:absolute;top:0;left:0;width:100%;height:100%;transition:opacity .3s ease}.icon img.hovered{opacity:0}.icon:hover img.hovered{opacity:1}.icon:hover img.default{opacity:0}.nav-links{display:flex;gap:2rem}.nav-links a{font-family:NavFont;color:#ccc;text-decoration:none;font-size:.95rem;transition:color .3s ease}.nav-links a:hover{color:#fff}@font-face{font-family:ButtonContactFont;src:url(/assets/Geist-Bold-SK6iMhtc.ttf) format("truetype");font-weight:400;font-style:normal}.shiny-text{color:#b5b5b5a4;background:linear-gradient(120deg,#fff0 40%,#fffc,#fff0 60%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;display:inline-block;animation:shine 5s linear infinite;font-family:ButtonContactFont}@keyframes shine{0%{background-position:100%}to{background-position:-100%}}.shiny-text.disabled{animation:none}
