.header{justify-content:space-between;width:95%;max-width:1100px;height:8em;margin:0 auto}@media (max-width:600px){.header{height:6em}}
.about{flex-direction:column;margin-top:3em}.about__reveal{opacity:0;animation:1s cubic-bezier(.16,1,.3,1) forwards about-reveal;transform:translateY(14px)}.about__reveal--1{animation-delay:.1s}.about__reveal--2{animation-delay:.35s}.about__reveal--3{animation-delay:.6s}.about__reveal--4{animation-delay:.85s}@keyframes about-reveal{to{opacity:1;transform:translateY(0)}}.about__name{color:var(--clr-primary)}.about__role{margin-top:1.2em}.about__desc{max-width:600px;font-size:.95rem}.about__desc,.about__contact{margin-top:2.4em;margin-bottom:2.4em}.about .link--icon{margin-right:.8em}.about .btn--outline{margin-right:1em}@media (max-width:600px){.app .about{align-items:flex-start;margin-top:2em}.about__contact{text-align:center;margin:auto;padding-top:0}}
.project{border-top:1px solid var(--clr-line,#7f7fa040);transition:opacity .5s;position:relative}.project__link{color:inherit;text-align:left;justify-content:space-between;align-items:flex-start;gap:2em;padding:1.8em 1em;display:flex;position:relative;overflow:hidden}.project__link,.project__link *{background-color:#0000}.project__link:before{content:"";background-color:var(--clr-primary);opacity:.07;transform-origin:0;z-index:0;transition:transform .7s cubic-bezier(.16,1,.3,1);position:absolute;inset:0;transform:scaleX(0)}.project__main,.project__side{z-index:1;position:relative}.project__main{flex:1;min-width:0}.project__name{color:var(--clr-fg-alt);font-size:clamp(1.5rem,2.6vw + .6rem,3rem);font-weight:700;line-height:1.1;transition:transform .6s cubic-bezier(.16,1,.3,1),color .4s}.project__details{grid-template-rows:0fr;transition:grid-template-rows .6s cubic-bezier(.16,1,.3,1);display:grid}.project__details-inner{opacity:0;transition:transform .6s cubic-bezier(.16,1,.3,1),opacity .4s;overflow:hidden}.project__description{max-width:55ch;padding-top:.8em;font-size:.95rem}.project__stack{flex-wrap:wrap;gap:.5em 1em;margin-top:.8em;display:flex}.project__stack-item{color:var(--clr-fg-alt);font-size:.8rem;font-weight:500}.project__side{color:var(--clr-fg);flex:none;align-items:center;gap:.8em;padding-top:.4em;display:flex}.project__domain{font-size:.85rem;transition:color .4s}.project__arrow{transition:transform .6s cubic-bezier(.16,1,.3,1),color .4s}.project__link--static{cursor:default}.project__lock{transition:color .4s}.project__link:hover .project__lock,.project__link:focus-visible .project__lock{color:var(--clr-primary)}.project__link:hover:before,.project__link:focus-visible:before{transform:scaleX(1)}.project__link:hover .project__name,.project__link:focus-visible .project__name{color:var(--clr-primary);transform:translate(.5em)}.project__link:hover .project__details,.project__link:focus-visible .project__details{grid-template-rows:1fr}.project__link:hover .project__details-inner,.project__link:focus-visible .project__details-inner{opacity:1;transform:translate(.5em)}.project__link:hover .project__domain,.project__link:hover .project__arrow,.project__link:focus-visible .project__domain,.project__link:focus-visible .project__arrow{color:var(--clr-primary)}.project__link:hover .project__arrow,.project__link:focus-visible .project__arrow{transform:rotate(45deg)}.project__link:focus-visible{outline:2px solid var(--clr-primary);outline-offset:-2px}@media (hover:none){.project__details{grid-template-rows:1fr}.project__details-inner{opacity:1}}@media (max-width:600px){.project__link{flex-direction:column;gap:.6em;padding:1.4em .4em}.project__side{padding-top:0}}@media (prefers-reduced-motion:reduce){.project,.project__link:before,.project__name,.project__details,.project__details-inner,.project__arrow{transition:none}}
.section_projects{margin-top:10px}.projects__list{border-bottom:1px solid var(--clr-line,#7f7fa040);max-width:1100px;margin:2.5em auto 0}@media (hover:hover){.projects__list:hover .project:not(:hover){opacity:.35}}
.skills{padding:3em 0}.skills__bands{width:100vw;margin-top:2.5em;margin-left:calc(50% - 50vw)}.skills__band{border-top:1px solid var(--clr-line,#7f7fa040);padding:1.2em 0 1.4em}.skills__band:last-child{border-bottom:1px solid var(--clr-line,#7f7fa040)}.skills__band-label{width:95%;max-width:1100px;color:var(--clr-primary);align-items:center;gap:.5em;margin:0 auto .5em;display:flex}.skills__band-name{color:var(--clr-primary);font-size:.95rem;font-weight:600}.skills__viewport{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.skills__track{will-change:transform;width:max-content;display:flex}.skills__item{white-space:nowrap;color:#0000;-webkit-text-stroke:1.5px var(--clr-fg-alt);align-items:center;padding-right:.6em;font-size:clamp(2.2rem,5vw + 1rem,5rem);font-weight:800;line-height:1.15;transition:color .4s,-webkit-text-stroke-color .4s;display:inline-flex}.skills__item:hover{color:var(--clr-primary);-webkit-text-stroke-color:var(--clr-primary)}.skills__sep{background-color:var(--clr-primary);opacity:.6;border-radius:50%;flex:none;width:.16em;height:.16em;margin-left:.6em;display:inline-block}@media (prefers-reduced-motion:reduce){.skills__track{flex-wrap:wrap;width:auto;max-width:1100px;margin:0 auto;padding:0 2.5%}.skills__item--dup{display:none}.skills__viewport{-webkit-mask-image:none;mask-image:none}}
.contact{flex-direction:column;justify-content:center;min-height:100vh;padding:3em 1em;position:relative;overflow:hidden}.contact__content{z-index:1;flex-direction:column;max-width:100%;position:relative}.contact__content,.contact__content *{background-color:#0000}.contact__email{cursor:pointer;max-width:100%;color:var(--clr-fg-alt);background-color:#0000;margin-top:1em;padding:.1em 0;font-size:clamp(1.2rem,2.5vw + .6rem,2.8rem);font-weight:800;line-height:1.15;transition:color .4s;position:relative}.contact__chars{flex-wrap:wrap;justify-content:center;display:inline-flex}.contact__mask{vertical-align:bottom;margin:-.08em 0 -.14em;padding:.08em 0 .14em;display:inline-block;overflow:hidden}.contact__char{transform-origin:0 100%;transition:transform .9s cubic-bezier(.16,1,.3,1);transition-delay:calc(var(--i) * 28ms);display:inline-block;transform:translateY(115%)rotate(8deg)}.contact--revealed .contact__char{transform:translateY(0)rotate(0)}.contact__email:after{content:"";background-color:var(--clr-primary);transform-origin:0;width:100%;height:.06em;transition:transform .6s cubic-bezier(.16,1,.3,1);position:absolute;bottom:0;left:0;transform:scaleX(0)}.contact__email:hover,.contact__email:focus-visible{color:var(--clr-primary)}.contact__email:hover:after,.contact__email:focus-visible:after{transform:scaleX(1)}.contact__email:focus-visible{outline:2px solid var(--clr-primary);outline-offset:6px}.contact__email--copied{color:var(--clr-primary)}.contact__copied{animation:.5s cubic-bezier(.34,1.56,.64,1) contact-pop;display:inline-block}@keyframes contact-pop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.contact__words{pointer-events:none;-webkit-user-select:none;user-select:none;position:absolute;inset:0}.contact__word{--scale:.7;font-size:calc(var(--size) * var(--scale) * 1rem);white-space:nowrap;color:var(--clr-fg-alt);opacity:0;filter:blur(12px);transition:opacity 1.4s cubic-bezier(.16,1,.3,1),filter 1.4s cubic-bezier(.16,1,.3,1),transform 1.4s cubic-bezier(.16,1,.3,1);transition-delay:calc(1.1s + var(--order) * .15s);font-weight:700;line-height:1;position:absolute;transform:translate(-50%,-30%)}.contact--revealed .contact__word{opacity:.28;filter:blur();transform:translate(-50%,-50%)}.contact--revealed .contact__word--far{opacity:.18;filter:blur(1px)}.contact--revealed .contact__word--accent{opacity:.45;color:var(--clr-primary)}.contact__word-inner{animation:contact-float var(--float-duration) ease-in-out var(--float-delay) infinite alternate;display:inline-block}@keyframes contact-float{0%{transform:translate(0)}to{transform:translate(var(--float-x), var(--float-y))}}@media (max-width:700px){.contact__word{--scale:.38}}@media (prefers-reduced-motion:reduce){.contact__char,.contact__word,.contact__email,.contact__email:after{transition:none}.contact__copied,.contact__word-inner{animation:none}}
.footer{text-align:center;margin-top:4em;padding:3em}.footer__link{font-size:.9rem;font-weight:600}@media (max-width:600px){.footer{margin-top:3em;padding:2em}}
.scroll-top{opacity:0;pointer-events:none;background-color:#0000;transition:opacity .3s,transform .3s;position:fixed;bottom:2em;right:4em;transform:translateY(10px)}.scroll-top--visible{opacity:1;pointer-events:auto;transform:translateY(0)}@media (max-width:900px){.scroll-top{display:none}}
