.about{text-align:center;z-index:2;flex-direction:column;align-items:center;gap:16px;max-width:420px;margin:-10vh auto 0;display:flex;position:relative}.about__title{color:var(--green);opacity:0;font-size:32px;transition:all .6s cubic-bezier(.34,1.56,.64,1);transform:translateY(30px)}.about__text{opacity:0;line-height:1.3;transition:all .6s cubic-bezier(.34,1.56,.64,1) .2s;transform:translateY(30px)}.about__link{background-color:var(--purple);color:var(--white);text-transform:uppercase;letter-spacing:1px;opacity:0;isolation:isolate;padding:18px 32px 12px;font-size:20px;transition:opacity .6s cubic-bezier(.34,1.56,.64,1),transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s,padding .3s;position:relative;overflow:hidden;transform:translateY(30px)}.about__link:before{content:"";background:linear-gradient(135deg, var(--blue), var(--green));opacity:0;z-index:-1;width:100%;height:100%;transition:opacity .3s;position:absolute;top:0;left:0}.about__link:after{content:"→";opacity:0;transition:all .3s;position:absolute;right:20px;transform:translate(-10px)}.about__link:hover:before{opacity:1}.about__link:hover{padding-right:50px;text-decoration:none;transform:scale(1.05)translateY(-3px);box-shadow:0 8px 25px #78cd8e66}.about__link:hover:after{opacity:1;transform:translate(0)}.about__link:active{transform:scale(.98)translateY(0)}.about--visible .about__title,.about--visible .about__text{opacity:1;transform:translateY(0)}.about--visible .about__link{opacity:1;transition:opacity .6s cubic-bezier(.34,1.56,.64,1) .4s,transform .3s cubic-bezier(.34,1.56,.64,1) .4s,box-shadow .3s,padding .3s;transform:translateY(0)}
.contact{background-color:var(--purple);padding:80px 0}.contact__inner{background-color:var(--black);border:1px solid var(--white);opacity:0;flex-direction:column;gap:24px;max-width:600px;margin:auto;padding:32px;transition:all .6s cubic-bezier(.34,1.56,.64,1);display:flex;transform:translateY(40px)scale(.95)}.contact__inner--visible{opacity:1;transform:translateY(0)scale(1)}.contact__inner--visible .contact__field{opacity:1;transform:translate(0)}.contact__title{color:var(--green);text-align:center;font-size:32px}.contact__subtitle{text-align:center;color:var(--white);margin-bottom:16px;line-height:1.4}.contact__form{flex-direction:column;gap:24px;display:flex}.contact__field{opacity:0;flex-direction:column;gap:8px;transition:all .5s cubic-bezier(.34,1.56,.64,1);display:flex;transform:translate(-20px)}.contact__field:first-child{transition-delay:.1s}.contact__field:nth-child(2){transition-delay:.2s}.contact__field:nth-child(3){transition-delay:.3s}.contact__label{color:var(--white);text-transform:uppercase;letter-spacing:1px;font-size:16px;font-weight:500}.contact__input,.contact__textarea{border:1px solid var(--white);color:var(--white);background-color:#0000;padding:14px 16px;font-family:inherit;font-size:16px;transition:all .3s cubic-bezier(.34,1.56,.64,1)}.contact__input:focus,.contact__textarea:focus{border-color:var(--green);outline:none;transform:scale(1.02)translateY(-2px);box-shadow:0 0 0 2px #78cd8e33,0 4px 20px #78cd8e4d}.contact__input:hover:not(:focus),.contact__textarea:hover:not(:focus){border-color:var(--blue);transform:translateY(-1px)}.contact__input::placeholder,.contact__textarea::placeholder{color:#fff1e680}.contact__textarea{resize:vertical;min-height:120px}.contact__submit{background-color:var(--purple);color:var(--white);text-transform:uppercase;letter-spacing:1px;cursor:pointer;border:none;align-self:center;padding:18px 32px 12px;font-size:20px;transition:all .3s cubic-bezier(.34,1.56,.64,1);position:relative;overflow:hidden}.contact__submit:after{content:"→";opacity:0;transition:all .3s;position:absolute;right:20px;transform:translate(-10px)}.contact__submit:hover:not(:disabled){background:linear-gradient(135deg, var(--blue), var(--green));padding-right:50px;transform:scale(1.05)translateY(-3px);box-shadow:0 8px 25px #78cd8e66}.contact__submit:hover:not(:disabled):after{opacity:1;transform:translate(0)}.contact__submit:active:not(:disabled){transform:scale(.98)translateY(0)}.contact__submit:disabled{opacity:.6;cursor:not-allowed;animation:1.5s ease-in-out infinite pulse}.contact__status{text-align:center;border-radius:4px;padding:16px;font-weight:500}.contact__status--success{border:1px solid var(--green);color:var(--green);background-color:#78cd8e33}.contact__status--error{color:#ff6464;background-color:#ff646433;border:1px solid #ff6464}@media (max-width:640px){.contact{margin:100px auto}.contact__title{font-size:28px}.contact__submit{padding:16px 24px 10px;font-size:18px}}
@keyframes scrollLeft{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes scrollRight{0%{transform:translate(-50%)}to{transform:translate(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mainBanner{width:100%;height:80vh;min-height:830px;max-height:1600px;transition:transform .3s;position:relative;overflow:hidden}@media (max-width:768px){.mainBanner{min-height:375px;max-height:1000px}}.mainBanner:after{content:"";z-index:1;pointer-events:none;background:linear-gradient(#08080600 90%,#080806 100%);width:100%;height:100%;position:absolute;top:0;left:0}.mainBanner__background{object-fit:cover;object-position:top;z-index:-1;width:100%;height:100%;transition:transform .3s;position:absolute;top:0;left:0}@media (max-width:768px){.mainBanner__background{display:none}}.mainBanner__background--mobile{object-position:top;object-fit:cover;z-index:-1;width:100%;height:100%;display:none;position:absolute;top:0;left:0}@media (max-width:768px){.mainBanner__background--mobile{display:block}}.mainBanner__scrollingCopy{text-transform:uppercase;pointer-events:none;text-shadow:0 0 10px #78cd8e4d,0 0 20px #78cd8e33,0 0 30px #78cd8e1a;filter:drop-shadow(2px 4px 6px #00000080);width:100%;margin:0;font-size:clamp(60px,10vw,200px);line-height:1.1;position:absolute;top:50%;left:0;transform:translateY(-50%)}.mainBanner__scrollingCopy span{white-space:nowrap;will-change:transform;width:max-content;min-width:200%;display:block}.mainBanner__scrollingCopy__line1,.mainBanner__scrollingCopy__line3{opacity:0;animation:240s linear infinite paused scrollLeft}.mainBanner__scrollingCopy__line2{opacity:0;animation:240s linear infinite paused scrollRight}.mainBanner__scrollingCopy--loaded .mainBanner__scrollingCopy__line1,.mainBanner__scrollingCopy--loaded .mainBanner__scrollingCopy__line3{animation:.7s ease-in .7s forwards fadeIn,240s linear .7s infinite scrollLeft}.mainBanner__scrollingCopy--loaded .mainBanner__scrollingCopy__line2{animation:.7s ease-in .7s forwards fadeIn,240s linear .7s infinite scrollRight}
.portfolio{flex-direction:column;gap:32px;max-width:2000px;margin:150px auto;padding:0 32px;display:flex}.portfolio__title{color:var(--green);text-align:center;font-size:32px}.portfolio__projects{color:var(--white);grid-template-columns:repeat(3,1fr);gap:32px;display:grid}@media (max-width:1024px){.portfolio__projects{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.portfolio__projects{grid-template-columns:1fr}}.portfolio__project{border-top:1px solid var(--white);color:var(--white);opacity:0;flex-direction:column;transition:all .4s cubic-bezier(.34,1.56,.64,1),border-top-color .3s .4s;display:flex;transform:translateY(30px)rotateX(10deg)}.portfolio__project--visible{opacity:1;transform:translateY(0)rotateX(0)}.portfolio__project:hover{border-top-color:#0000;text-decoration:none;transition-delay:0s;transform:translateY(-8px)scale(1.02);box-shadow:0 12px 30px #78cd8e33}.portfolio__project:hover .portfolio__image{border-color:#0000;transition-delay:0s}.portfolio__project:hover .portfolio__image:before{background:0 0}.portfolio__project:hover .portfolio__image img{filter:grayscale(0%);transform:scale(1.05)}.portfolio__project:hover .portfolio__info{border-left-color:#0000;border-right-color:#0000;transition-delay:0s}.portfolio__project:hover .portfolio__name{border-bottom-color:#0000;transition-delay:0s}.portfolio__project:hover .portfolio__name span{border-right-color:#0000;transition-delay:0s}.portfolio__project:hover .portfolio__tags{border-top-color:#0000;border-bottom-color:#0000;transition-delay:0s}.portfolio__project:hover .portfolio__tags strong{border-right-color:#0000;transition-delay:0s}.portfolio__project:hover .portfolio__name span{background:linear-gradient(90deg, var(--green), var(--blue));color:var(--black)}.portfolio__info{color:var(--white);border-left:1px solid var(--white);border-right:1px solid var(--white);flex-direction:column;transition:border-color .3s .4s;display:flex;container-type:inline-size}.portfolio__name{text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid var(--white);font-size:22px;transition:border-color .3s .4s}.portfolio__name span{border-right:1px solid var(--white);padding:14px 16px 8px;transition:all .3s,border-right-color .3s .4s;display:inline-block}.portfolio__image{border-bottom:1px solid var(--white);border-left:1px solid var(--white);border-right:1px solid var(--white);width:calc(100% - 2px);height:0;padding-bottom:56.25%;transition:border-color .3s .4s;position:relative;overflow:hidden}.portfolio__image:before{content:"";opacity:.8;background:var(--purple);z-index:1;mix-blend-mode:multiply;width:100%;height:100%;transition:background .4s;position:absolute;top:0;left:0}.portfolio__image img{filter:grayscale();object-fit:cover;object-position:top;width:100%;height:100%;transition:all .5s cubic-bezier(.34,1.56,.64,1);position:absolute;top:0;left:0}.portfolio__description{min-height:60px;padding:16px;line-height:1.3;overflow:hidden}.portfolio__description>p{-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;margin:0;display:-webkit-box;overflow:hidden}.portfolio__tags{border-top:1px solid var(--white);border-bottom:1px solid var(--white);align-items:center;gap:8px;transition:border-color .3s .4s;display:flex}.portfolio__tags strong{border-right:1px solid var(--white);padding:16px;font-weight:900;transition:border-color .3s .4s}.portfolio__tag{border-radius:4px;padding:4px 8px;font-size:12px;line-height:1.5;display:inline-block}
.resume{flex-direction:column;gap:64px;max-width:900px;margin:150px auto;padding:0 32px;display:flex}.resume__main-title{color:var(--green);text-align:center;font-size:32px}.resume__section{flex-direction:column;gap:24px;display:flex}.resume__section-title{color:var(--purple);text-align:center;text-transform:uppercase;letter-spacing:1px;font-size:28px}.resume__list{flex-direction:column;gap:16px;display:flex}.resume__accordion-item{border:1px solid var(--white);opacity:0;background-color:#0000;transition:all .5s cubic-bezier(.34,1.56,.64,1);overflow:hidden;transform:translate(-30px)}.resume__accordion-item--visible{opacity:1;transform:translate(0)}.resume__accordion-header{cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;width:100%;padding:20px 24px;transition:all .3s cubic-bezier(.34,1.56,.64,1);display:flex}.resume__accordion-header:hover{background:linear-gradient(90deg,#78cd8e1a,#78bcd81a);transform:translate(4px)}.resume__accordion-header--static{cursor:default}.resume__accordion-header--static:hover{background-color:#0000;transform:none}.resume__accordion-info{flex-flow:wrap;flex:1;align-items:baseline;gap:16px;display:flex}.resume__accordion-title{color:var(--white);text-transform:uppercase;letter-spacing:1px;margin:0;font-size:18px}.resume__accordion-subtitle{color:var(--blue);font-family:var(--font-montserrat);font-size:16px;font-weight:500}.resume__accordion-subtitle:before{content:"•";color:var(--white);margin-right:16px}.resume__accordion-link{color:var(--blue);transition:color .3s}.resume__accordion-link:hover{color:var(--green);text-decoration:underline}.resume__accordion-timeline{font-family:var(--font-montserrat);color:var(--purple);font-size:14px;font-style:italic;font-weight:900}.resume__accordion-timeline:before{content:"•";color:var(--white);margin-right:16px}.resume__accordion-toggle{flex-shrink:0;width:30px;height:30px;margin-left:16px;transition:transform .3s cubic-bezier(.34,1.56,.64,1);position:relative}.resume__accordion-toggle:hover{transform:scale(1.1)}.resume__accordion-toggle span{background-color:var(--white);transition:all .4s cubic-bezier(.34,1.56,.64,1);position:absolute}.resume__accordion-toggle span:first-child{height:2px;top:50%;left:0;right:0;transform:translateY(-50%)}.resume__accordion-toggle span:last-child{width:2px;top:0;bottom:0;left:50%;transform:translate(-50%)}.resume__accordion-toggle.is-open{transform:rotate(90deg)}.resume__accordion-toggle.is-open span:first-child{background-color:var(--green)}.resume__accordion-toggle.is-open span:last-child{opacity:0;background-color:var(--green);transform:translate(-50%)rotate(90deg)}.resume__accordion-content{border-top:0 solid var(--white);background:#78cd8e05;max-height:0;transition:all .4s cubic-bezier(.34,1.56,.64,1);overflow:hidden}.resume__accordion-content p{color:var(--white);opacity:0;margin:0;padding:0 24px 20px;line-height:1.6;transition:all .3s .1s;transform:translateY(-10px)}.resume__accordion-content.is-open{border-top-width:1px;max-height:500px;padding-top:20px}.resume__accordion-content.is-open p{opacity:1;transform:translateY(0)}@media (max-width:640px){.resume{gap:48px;margin:100px auto}.resume__main-title{font-size:28px}.resume__section-title{font-size:24px}.resume__accordion-info{flex-direction:column;align-items:flex-start;gap:8px}.resume__accordion-subtitle:before,.resume__accordion-timeline:before{content:"";margin-right:0}.resume__accordion-header{flex-direction:column;align-items:flex-start;gap:12px;padding:16px}.resume__accordion-toggle{position:absolute;top:16px;right:16px}.resume__accordion-content p{padding:0 16px 16px}}
