.email-container{display:inline-block;position:relative}.hover-email-full,.hover-linkedin,.hover-instagram{will-change:color;transition:color .2s}.email-container:after{content:"";width:calc(100% + .3em);height:.2em;color:var(--text);opacity:0;filter:invert(0);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='5' viewBox='0 0 100 5' preserveAspectRatio='none'%3E%3Cpath d='M2,3.5 Q10,1.8 20,3 Q30,0.5 40,2.8 Q50,4.2 60,2.5 Q70,1 80,3.8 Q90,2.2 98,3.2' stroke='%23000' fill='none' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:100% 100%;transition:opacity .3s,transform .3s,color .2s;position:absolute;bottom:-.25em;left:-.15em;right:-.15em;transform:scaleY(0)translateY(.05em)}[data-theme=dark] .email-container:after{filter:invert()}.email-container:hover:after{opacity:1;transform:scaleY(1)translateY(0)}.social-card-container:has(.group\/email:hover) .hover-email-full{color:var(--accent)}.social-card-container:has(.group\/email:hover) .hover-linkedin{color:var(--accent)}.social-card-container:has(.group\/email:hover) .hover-instagram{color:var(--accent)}.social-card-container:has(.group\/instagram:hover) .hover-linkedin{color:var(--accent)}.social-card-container:has(.group\/instagram:hover) .hover-instagram{color:var(--accent)}.email-contact-wrapper{opacity:0;transition:opacity .6s cubic-bezier(.25,.46,.45,.94) .2s}.horizontal-section[data-visible=true] .email-contact-wrapper{opacity:1}
.tooltip-container{display:inline-block;position:relative}.tooltip-native{color:#000;white-space:nowrap;pointer-events:none;z-index:10000;background:#ffffe1;border:1px solid #767676;border-radius:2px;padding:4px 8px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:12px;line-height:1.3;animation:.15s ease-out tooltipFadeIn;position:absolute;bottom:100%;left:50%;transform:translate(-50%)translateY(-8px)}@keyframes tooltipFadeIn{0%{opacity:0;transform:translate(-50%)translateY(-4px)}to{opacity:1;transform:translate(-50%)translateY(-8px)}}
.theme-toggle-wrapper{z-index:2;opacity:0;pointer-events:none;transition:opacity .8s cubic-bezier(.16,1,.3,1);position:fixed;top:1.5rem;right:1.5rem}html[data-animation-complete=true] .theme-toggle-wrapper{opacity:1;pointer-events:auto}.theme-toggle-btn{color:var(--text);cursor:pointer;transform-origin:50%;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}:root[data-theme=light] .theme-toggle-btn{color:#000}:root[data-theme=dark] .theme-toggle-btn{color:#fff;mix-blend-mode:difference}.theme-toggle-btn:hover svg{transform:scale(.95)}.theme-toggle-btn:active svg{transform:scale(.9)}.theme-toggle-btn svg{transition:transform .3s cubic-bezier(.4,0,.2,1);display:block}@media (min-width:1024px) and (max-width:1439px){.theme-toggle-wrapper{top:1.25rem;right:1.25rem}.theme-toggle-btn svg{width:28px;height:28px}}@media (min-width:640px) and (max-width:1023px){.theme-toggle-wrapper{top:1rem;right:1rem}.theme-toggle-btn svg{width:24px;height:24px}}@media (max-width:639px){.theme-toggle-wrapper{top:.75rem;right:.75rem}.theme-toggle-btn svg{width:20px;height:20px}}
.social-icons-wrapper{justify-content:center;display:flex}.flex.items-center.gap-2 a{cursor:pointer;transition:transform .2s;display:inline-block}.flex.items-center.gap-2 a:hover{transform:scale(.95)}.flex.items-center.gap-2 a:focus-visible{transform:scale(.95)}.flex.items-center.gap-2 a svg{pointer-events:none}
.spin-button{width:1.5em;height:1.5em;color:inherit;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:-.2em;will-change:transform;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;transition:transform .3s cubic-bezier(.4,0,.2,1);display:inline-flex;position:relative;overflow:visible}.spin-button:hover{animation-play-state:paused}.spin-button:hover .spin-button-icon svg{transform:scale(.95)}.spin-button:active .spin-button-icon svg{transform:scale(.9)}.spin-button:disabled{cursor:default;opacity:1}.spin-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:50%}.spin-button-icon{transform-origin:50%;will-change:transform;justify-content:center;align-items:center;width:100%;height:100%;display:inline-flex}@keyframes spinButtonFloat{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-.15em)scale(1.03)}}html[data-animation-complete=true] .spin-button{animation:2s ease-in-out .15s infinite spinButtonFloat}.spin-button-icon svg{fill:currentColor;opacity:1;pointer-events:none;width:100%;height:100%;transition:transform .3s cubic-bezier(.4,0,.2,1);display:block}@media (max-width:639px){.spin-button{width:1.35em;height:1.35em}}
.metaballs-container{pointer-events:auto;width:100%;height:100%;position:relative}.metaballs-container canvas{pointer-events:auto;display:block}
.contact-section{background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:3rem;width:100%;height:100vh;min-height:100vh;display:flex;position:relative;overflow:hidden}.contact-section .meta-balls-bg{z-index:1;pointer-events:none;opacity:0;transition:opacity .4s cubic-bezier(.25,.46,.45,.94);position:absolute;top:0;bottom:0;left:0;right:0}.contact-section[data-visible=true] .meta-balls-bg{opacity:1;transition-delay:1.8s}.contact-section:not([data-visible=true]) .meta-balls-bg{transition-delay:0s}.contact-section-content{z-index:2;flex-direction:column;justify-content:center;align-items:center;gap:3rem;width:100%;max-width:600px;padding:2rem;display:flex;position:relative}.contact-section-content>*{z-index:2;position:relative}.contact-section .email-contact-wrapper{opacity:1!important}.contact-section .social-icons-wrapper{opacity:1}@media (min-width:1024px) and (max-width:1439px){.contact-section{gap:2.5rem}.contact-section-content{gap:2.5rem;max-width:550px;padding:1.75rem}}@media (min-width:640px) and (max-width:1023px){.contact-section{gap:2rem}.contact-section-content{gap:2rem;max-width:500px;padding:1.5rem}}@media (max-width:639px){.contact-section{gap:1.5rem}.contact-section-content{gap:1.5rem;max-width:100%;padding:1rem}}
.hero-section{--hero-ease:cubic-bezier(.4,0,.2,1);background:var(--bg);flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;min-height:100vh;padding:2rem 0;display:flex;position:relative;overflow:visible}.hero-metaballs-wrapper{z-index:1;pointer-events:auto;opacity:1;width:100vw;height:100vh;position:fixed;top:0;left:0}.hero-metaballs-wrapper canvas{pointer-events:auto}.hero-title-container{z-index:100;opacity:0;pointer-events:none;visibility:hidden;justify-content:center;align-items:center;width:100%;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.hero-name-with-arrow{pointer-events:none;justify-content:center;align-items:flex-start;gap:.5rem;margin-bottom:2rem;display:flex}.hero-name-r-wrapper{pointer-events:auto;align-items:center;gap:.25rem;display:inline-flex;position:relative}.hero-name-r-wrapper .theme-toggle-btn{justify-content:center;align-items:center;width:max(1.25rem,min(2.5vw,1.5rem));height:max(1.25rem,min(2.5vw,1.5rem));margin:0;padding:0;display:inline-flex}.hero-name-r-wrapper .theme-toggle-btn svg{width:100%;height:100%}:root[data-theme=light] .hero-name-r-wrapper .theme-toggle-btn{color:#fff}:root[data-theme=dark] .hero-name-r-wrapper .theme-toggle-btn{color:var(--text)}.hero-arrow-link{color:var(--text);transform-origin:50%;pointer-events:auto;z-index:10;cursor:pointer;align-items:center;margin-left:.35rem;line-height:1;text-decoration:none;transition:color .2s;display:inline-flex;position:relative}.hero-arrow-link svg{pointer-events:none}.hero-arrow-icon{transform-origin:50%;pointer-events:none;width:max(1.125rem,min(2.25vw,1.5rem));height:max(1.125rem,min(2.25vw,1.5rem));display:block;position:relative}html[data-animation-complete=true] .hero-arrow-icon{animation:4s ease-in-out infinite iconPeek}.hero-arrow-icon svg{transform-origin:50%;width:100%;height:100%;display:block}html[data-animation-complete=true] .hero-arrow-icon svg{animation:2s ease-in-out 1.2s infinite iconBounce}.hero-about-blurb{z-index:2;text-align:center;opacity:0;max-width:min(90vw,680px);margin-top:1.5rem;transition:opacity .8s cubic-bezier(.16,1,.3,1);position:relative}:root[data-theme=light] .hero-about-blurb{mix-blend-mode:difference;color:#fff}:root[data-theme=light] .hero-about-blurb .hero-about-text,:root[data-theme=light] .hero-about-blurb a{color:#fff}:root[data-theme=dark] .hero-about-blurb{mix-blend-mode:difference}html[data-animation-complete=true] .hero-about-blurb{opacity:1}.hero-about-text{font-family:var(--font-jetbrains-mono),monospace;color:var(--text);will-change:color;margin:0;font-size:max(1rem,min(2.5vw,1.25rem));line-height:1.6;transition:color .2s}.hero-name-inline{font-family:var(--font-botch),sans-serif;letter-spacing:.02em;padding-top:.05em;padding-bottom:.05em;font-size:max(2rem,min(4vw,3rem));font-weight:400;line-height:1.15}.hero-inline-icon{color:var(--text);vertical-align:middle;white-space:nowrap;cursor:pointer;z-index:1;pointer-events:auto;justify-content:center;align-items:center;margin:0 .15em;transition:color .2s;display:inline-flex;position:relative}.hero-inline-icon svg{pointer-events:none}:root[data-theme=light] .hero-inline-icon{color:#fff}@keyframes iconBounce{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-.15em)scale(1.03)}}@keyframes iconPeek{0%{opacity:0;transform:scale(0)}10%{opacity:1;transform:scale(1)}90%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}@keyframes iconPeekBounce{0%{opacity:0;transform:scale(0)translateY(0)}10%{opacity:1;transform:scale(1)translateY(0)}30%{opacity:1;transform:scale(1.03)translateY(-.15em)}50%{opacity:1;transform:scale(1)translateY(0)}70%{opacity:1;transform:scale(1.03)translateY(-.15em)}90%{opacity:1;transform:scale(1)translateY(0)}to{opacity:0;transform:scale(0)translateY(0)}}html[data-animation-complete=true] .hero-inline-icon-inner{animation:2s ease-in-out infinite iconBounce}html[data-animation-complete=true] span.hero-inline-icon .hero-inline-icon-inner{animation-delay:0s}html[data-animation-complete=true] .hero-about-text a.hero-inline-icon:first-of-type .hero-inline-icon-inner{animation-delay:.3s}html[data-animation-complete=true] .hero-about-text a.hero-inline-icon:nth-of-type(2) .hero-inline-icon-inner{animation-delay:.6s}@media (max-width:639px){html[data-animation-complete=true] span.hero-inline-icon .hero-inline-icon-inner{animation-delay:0s}html[data-animation-complete=true] .hero-about-text a.hero-inline-icon:first-of-type .hero-inline-icon-inner{animation-delay:.45s}html[data-animation-complete=true] .hero-about-text a.hero-inline-icon:nth-of-type(2) .hero-inline-icon-inner{animation-delay:.9s}html[data-animation-complete=true] .hero-sound-icon-wrapper{animation-delay:1.35s}html[data-animation-complete=true] .hero-arrow-icon svg{animation-delay:1.8s}}.hero-inline-icon--phont{cursor:default}.hero-spin-button-wrapper{vertical-align:middle;white-space:nowrap;z-index:1;opacity:0;pointer-events:auto;will-change:opacity,transform;justify-content:center;align-items:center;margin:0 .15em;display:inline-flex;position:relative;transform:scale(0)}.hero-inline-icon:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:999px}.hero-inline-icon-inner{transform-origin:50%;pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:inline-flex;position:relative}.hero-icon{width:100%;height:100%;transition:transform .3s var(--hero-ease),opacity .3s var(--hero-ease);pointer-events:none}.hero-icon-hover{opacity:0;pointer-events:none;position:absolute;top:0;left:0;transform:scale(1.1)}.hero-inline-icon:hover .hero-icon-default{opacity:0;transform:scale(.95)}.hero-inline-icon:focus-visible .hero-icon-default{opacity:0;transform:scale(.95)}.hero-inline-icon:hover .hero-icon-hover{opacity:1;transform:scale(.95)}.hero-inline-icon:focus-visible .hero-icon-hover{opacity:1;transform:scale(.95)}.hero-inline-icon:hover .hero-inline-icon-inner{animation-play-state:paused}.hero-inline-icon:focus-visible .hero-inline-icon-inner{animation-play-state:paused}.hero-sound-toggle{cursor:pointer;color:inherit;vertical-align:middle;pointer-events:auto;white-space:nowrap;z-index:1;background:0 0;border:none;justify-content:center;align-items:center;margin:0 .15em;padding:0;transition:color .2s;display:inline-flex;position:relative}.hero-sound-icon-wrapper{transform-origin:50%;flex-shrink:0;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:inline-flex;position:relative}html[data-animation-complete=true] .hero-sound-icon-wrapper{animation:2s ease-in-out .9s infinite iconBounce}.hero-sound-toggle:hover .hero-sound-icon-wrapper{animation-play-state:paused}.hero-sound-toggle:focus-visible .hero-sound-icon-wrapper{animation-play-state:paused}.hero-sound-icon{width:100%;height:100%;transition:transform .3s var(--hero-ease),opacity .3s var(--hero-ease);display:block}.hero-sound-toggle:hover .hero-sound-icon{transform:scale(.95)}.hero-sound-toggle:focus-visible .hero-sound-icon{transform:scale(.95)}.hero-sound-icon.playing{animation:2s ease-in-out infinite musicPulse}@keyframes musicPulse{0%,to{opacity:1}50%{opacity:.7}}:root[data-theme=light] .hero-sound-toggle{color:#fff}.hero-title{font-family:var(--font-botch),sans-serif;color:var(--text);text-align:center;letter-spacing:.02em;will-change:color;opacity:1;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:none;margin:0;font-size:max(3rem,min(12vw,10rem));font-weight:400;line-height:1;text-decoration:none;transition:color .2s;position:relative;transform:translateY(0)}.hero-title-base{z-index:1;border:none;text-decoration:none;position:relative}.hero-title-overlay{width:100%;color:var(--accent);z-index:2;pointer-events:none;font-family:var(--font-botch),sans-serif;letter-spacing:.02em;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin:0;font-size:max(3rem,min(12vw,10rem));font-weight:400;line-height:1;position:absolute;top:0;bottom:0;left:0;right:0;opacity:0!important;clip-path:none!important;visibility:hidden!important}.hero-title-letter{will-change:opacity,filter;transition:opacity .3s ease-out,filter .3s ease-out;display:inline-block;position:relative}.hero-title-letter.dissolving{opacity:0;filter:blur(12px)}@media (min-width:1024px) and (max-width:1439px){.hero-title-overlay{font-size:max(2.5rem,min(10vw,8rem))}}@media (min-width:640px) and (max-width:1023px){.hero-title-overlay{padding:0 1.5rem;font-size:max(2rem,min(10vw,6rem))}}@media (max-width:639px){.hero-title-overlay{padding:0 1rem;font-size:max(1.5rem,min(12vw,3.5rem))}}@media (min-width:1024px) and (max-width:1439px){.hero-title{font-size:max(2.5rem,min(10vw,8rem))}}@media (min-width:640px) and (max-width:1023px){.hero-title{padding:0 1.5rem;font-size:max(2rem,min(10vw,6rem))}}@media (max-width:639px){.hero-title{padding:0 1rem;font-size:max(1.5rem,min(12vw,3.5rem))}.hero-about-blurb{margin-top:1.25rem}}.hero-email-container{z-index:2;opacity:0;margin-top:2rem;transition:opacity .8s cubic-bezier(.16,1,.3,1);position:relative}:root[data-theme=light] .hero-email-container{mix-blend-mode:difference;color:#fff}:root[data-theme=dark] .hero-email-container{mix-blend-mode:difference}html[data-animation-complete=true] .hero-email-container{opacity:1}.hero-email-wrapper{opacity:1;z-index:1;position:relative}.hero-email-overlay{z-index:2;pointer-events:none;text-align:center;justify-content:center;align-items:flex-start;width:100%;display:flex;position:absolute;top:0;bottom:0;left:0;right:0;opacity:0!important;clip-path:none!important;visibility:hidden!important}.hero-email-overlay .text-display,.hero-email-overlay .email-container,.hero-email-overlay .hover-email-full,.hero-email-overlay .hover-linkedin,.hero-email-overlay .hover-instagram{color:var(--accent)!important}.hero-email-wrapper .text-display,.hero-email-overlay .text-display{font-size:max(1.5rem,min(8vw,4rem))}.hero-about-text .spin-button{margin:0 .25rem}:root[data-theme=light] .hero-about-text .spin-button{color:#fff}:root[data-theme=dark] .hero-about-text .spin-button{color:var(--text)}@media (min-width:1024px) and (max-width:1439px){.hero-email-wrapper{margin-top:1.75rem}.hero-email-wrapper .text-display,.hero-email-overlay .text-display{font-size:max(1.75rem,min(7vw,3.5rem))}}@media (min-width:640px) and (max-width:1023px){.hero-email-wrapper{margin-top:1.5rem}.hero-email-wrapper .text-display,.hero-email-overlay .text-display{font-size:max(1.25rem,min(6vw,2.5rem))}}@media (max-width:639px){.hero-email-wrapper{margin-top:1.25rem}.hero-email-wrapper .text-display,.hero-email-overlay .text-display{font-size:max(1rem,min(8vw,2rem))}}.hero-project-link{text-underline-offset:.15em;color:inherit;cursor:pointer;white-space:normal;text-decoration:underline;text-decoration-thickness:1px;transition:-webkit-text-decoration-color .2s,text-decoration-color .2s,text-decoration-thickness .2s;display:inline}.hero-project-link:hover{text-decoration-thickness:2px}:root[data-theme=light] .hero-project-link{color:#fff;-webkit-text-decoration-color:#fff;text-decoration-color:#fff}:root[data-theme=dark] .hero-project-link{color:var(--text);-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}
.hero-zoom-wrapper{transform-origin:50%;opacity:1;background-color:var(--bg);contain:layout style paint;will-change:transform;width:100%;min-height:100vh;transition:none;position:relative;overflow:visible;transform:scale(.65)}.hero-zoom-wrapper.ready{transition:transform 2.5s cubic-bezier(.16,1,.3,1)}.hero-zoom-wrapper.ready[data-visible=true]{transform:scale(1)}.hero-zoom-wrapper>:not(.metaballs-container){z-index:10;position:relative}
