@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap");:root{--color-accent:#4f46e5;--color-accent-strong:#3730a3;--color-accent-soft:#eef2ff;--color-available:#16a34a;--color-black:#0a0a0a;--color-white:#fafafa;--color-dark:#111113;--color-border:#e5e5e5;--font-display:"Space Grotesk","Inter",system-ui,sans-serif;--font-body:"Inter",system-ui,sans-serif;--radius-card:0.75rem;--radius-photo:1rem;--shadow-soft:0 1.25rem 3rem hsla(0,0%,4%,.12)}*{margin:0;padding:0;box-sizing:border-box;overflow-wrap:break-word;font-family:var(--font-body);line-height:calc(1em + .5rem);outline-offset:.35rem;outline-width:.125rem;outline-color:#4f46e5}html{scroll-behavior:smooth;scrollbar-color:#3f3f46 #fafafa;scrollbar-width:thin}body,html{min-width:-moz-fit-content;min-width:fit-content}body::-webkit-scrollbar{width:.75rem}body::-webkit-scrollbar-thumb{background:#3f3f46;border:1px solid #fafafa;border-radius:2rem}body::-webkit-scrollbar-track{background-color:#fafafa}a{text-decoration:none;display:block}a:focus-visible{outline-style:dashed}p{line-height:calc(1em + .75rem)}.brand,h1,h2,h3{font-family:var(--font-display);letter-spacing:0}li{list-style-type:none}button{border:none;display:block}button *{pointer-events:none}button:focus-visible{outline-style:dashed}:after,:before{box-sizing:border-box}.about__inner-container,.education__inner-container,.footer__inner-container,.header__inner-container,.hero__inner-container,.projects__inner-container,.skills__inner-container,.timeline__inner-container{max-width:1250px;padding:0 4.5rem;margin:0 auto}@media only screen and (max-width:1040px){.about__inner-container,.education__inner-container,.footer__inner-container,.header__inner-container,.hero__inner-container,.projects__inner-container,.skills__inner-container,.timeline__inner-container{padding-inline:2.5rem}}@media only screen and (max-width:920px){.about__inner-container,.education__inner-container,.footer__inner-container,.header__inner-container,.hero__inner-container,.projects__inner-container,.skills__inner-container,.timeline__inner-container{padding-inline:0}}.about,.education,.footer,.header,.hero,.projects,.skills,.timeline{padding:0 2rem}@media only screen and (max-width:920px){.about,.education,.footer,.header,.hero,.projects,.skills,.timeline{padding:0 1.5rem}}.about__avatar-container:before,.about__avatar-img,.btn--download:before,.btn--show-more:before,.education__avatar-container:before,.education__avatar-img,.hero__avatar-container:before,.hero__avatar-img{width:100%;height:100%}.about__title,.education__title,.projects__title,.skills__title,.timeline__title{flex-shrink:0;font-weight:600;font-size:2.25rem;transition:color .35s,background-color .35s}@media only screen and (max-width:1040px){.about__title,.education__title,.projects__title,.skills__title,.timeline__title{font-size:2rem}}@media only screen and (max-width:640px){.about__title,.education__title,.projects__title,.skills__title,.timeline__title{flex-shrink:1;padding:0;margin:0 auto;text-align:center}}.navbar__list{display:flex;justify-content:center;align-items:center;gap:1.25rem}.navbar__list-item{flex-shrink:0;white-space:nowrap}.navbar__link{position:relative;padding:.25rem .5rem;color:#0a0a0a;font-weight:500}.navbar__link:after{content:"";position:absolute;top:95%;right:0;width:0;height:.125rem;border-radius:2rem;background:linear-gradient(90deg,transparent,#0a0a0a);transition:width .5s}.navbar__link:hover:after{width:100%;left:0}.navbar__link:focus-visible{outline-style:dashed}.navbar__link:focus-visible:after{width:100%;left:0}.btn--theme__dark-icon,.btn--theme__light-icon{opacity:0;width:1.25rem;height:1.25rem;animation:show-theme-icon .35s forwards}.btn{cursor:pointer;font-size:1rem;border-radius:.25rem;background-color:transparent;transition:fill .35s,box-shadow .35s,background-color .35s,color .35s,stroke .35s,border-color .35s}.btn--download{position:relative;outline-color:transparent}.btn--download__content{display:block;position:relative;background-color:#111113;color:#fafafa;border-radius:.25rem;border:1px solid transparent;transition:.35s;padding:.675rem .95rem;font-weight:500}.btn--download:before{content:"";position:absolute;left:0;top:0;background-color:#111113;border-radius:.25rem;transition:.35s}.btn--download:focus-visible .btn--download__content,.btn--download:hover .btn--download__content{background-color:#fafafa;color:#111113;border-color:#111113;transform:translate(-.3rem,-.3rem)}.btn--download:active .btn--download__content{transform:translate(0)}.btn--theme{display:flex;justify-content:center;align-items:center;gap:0;padding:.45rem;border-radius:50%;flex-shrink:0}.btn--theme--light{background-color:#0a0a0a}.btn--theme--dark{background-color:#fafafa}.btn--theme__light-icon{fill:#fafafa;stroke:#fafafa}.btn--theme__dark-icon{fill:#0a0a0a;stroke:#0a0a0a}.btn--show-more{position:relative;outline-color:transparent}.btn--show-more__content{display:block;position:relative;background-color:#111113;color:#fafafa;border-radius:.25rem;border:1px solid transparent;transition:.35s;display:flex;justify-content:center;align-items:center;gap:.25rem;padding:.675rem .5rem .676rem .95rem;font-weight:500}.btn--show-more:before{content:"";position:absolute;left:0;top:0;background-color:#111113;border-radius:.25rem;transition:.35s}.btn--show-more:focus-visible .btn--show-more__content,.btn--show-more:hover .btn--show-more__content{background-color:#fafafa;color:#111113;border-color:#111113;transform:translate(-.3rem,-.3rem)}.btn--show-more:active .btn--show-more__content{transform:translate(0)}.btn--show-more__icon{height:1.5rem;width:1.5rem;fill:#fafafa;transition:.35s}.btn--show-more:focus-visible .btn--show-more__icon,.btn--show-more:hover .btn--show-more__icon{fill:#111113}.btn--hamburger{padding:.5rem;display:none}@media only screen and (max-width:920px){.btn--hamburger{display:flex;justify-content:center;align-items:center;gap:.55rem}}.btn--hamburger:focus-visible,.btn--hamburger:hover{box-shadow:0 0 0 1px #0a0a0a}.btn--hamburger:focus-visible .btn--hamburger__bar:last-child,.btn--hamburger:focus-visible .btn--hamburger__bar:nth-child(2),.btn--hamburger:hover .btn--hamburger__bar:last-child,.btn--hamburger:hover .btn--hamburger__bar:nth-child(2){width:100%}.btn--hamburger__label{color:#0a0a0a;font-size:.95rem;font-weight:600}.btn--hamburger__bars{display:flex;justify-content:center;align-items:flex-start;flex-direction:column;gap:.3rem}.btn--hamburger__bar{height:.125rem;width:2rem;flex-shrink:0;background-color:#0a0a0a;border-radius:1rem;transition:.35s}.btn--hamburger__bar:nth-child(2){width:75%}.btn--hamburger__bar:last-child{width:50%}.btn--hamburger--dark:focus-visible,.btn--hamburger--dark:hover{box-shadow:0 0 0 1px #fafafa}.btn--hamburger--dark:focus-visible{outline-color:#fafafa}.btn--scrolltop{display:flex;justify-content:center;align-items:center;gap:0;position:fixed;right:1.5rem;bottom:1.5rem;width:2.5rem;height:2.5rem;border:1px solid #fafafa;background:#0a0a0a;border-radius:50%;transform:translateY(calc(100% + 2.5rem));opacity:75%;transition:background-color .35s,border-color .35s,box-shadow .35s,opacity .35s,transform .5s}.btn--scrolltop:hover{opacity:100%}.btn--scrolltop--show{transform:translateY(0)}.btn--scrolltop__icon{fill:#fafafa;height:1.5rem;width:1.5rem;transition:fill .35s}@keyframes show-theme-icon{0%{opacity:0}to{opacity:100%}}.side-links{display:flex;justify-content:center;align-items:center;flex-direction:column-reverse;gap:1.25rem;position:absolute;left:0;top:100%;transform:translateY(-100%)}.side-links__bar{display:block;width:1px;height:6rem;background:linear-gradient(180deg,#111113,transparent)}.side-links__scroll-hint{writing-mode:vertical-rl;transform:rotate(180deg);color:#3f3f46;font-size:.75rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase}.side-links__list{display:flex;justify-content:center;align-items:center;flex-direction:column-reverse;gap:2rem}.side-links__link{display:flex;transition:transform .35s}.side-links__link:focus-visible,.side-links__link:hover{transform:translateY(-20%) scale(1.2)}.side-links__icon{width:1.35rem;height:1.35rem;transition:fill .35s}@media only screen and (max-width:920px){.side-links{position:static;transform:none;flex-direction:row;justify-content:center;align-items:center;gap:1.75rem}.side-links__bar,.side-links__scroll-hint{display:none!important}.side-links__list{flex-direction:row;gap:1.75rem}.side-links__icon{width:1.6rem;height:1.6rem}}.project{display:none}.project--visible{display:block}.project__skew{display:flex;justify-content:space-between;flex-direction:column;border-radius:.75rem;padding:1.5rem;transition:box-shadow .35s;box-shadow:.5rem .5rem 0 .125rem #111113,0 0 0 .125rem #111113,.5rem .5rem 1rem .25rem rgba(0,0,0,.22);overflow:hidden;position:relative}.project__skew:hover:after{left:150%;opacity:1;transition:left 1.25s ease-in-out}.project__skew:after{content:"";position:absolute;top:50%;left:-35%;height:125%;width:2rem;background-color:hsla(0,0%,98%,.9);filter:blur(70px);transform:translateY(-50%) rotate(15deg);opacity:0;pointer-events:none}.project__link-banner{max-height:268px;height:calc(10vw + 120px);border-radius:.5rem;overflow:hidden;border:1px solid rgba(17,17,19,.6);transition:border-color .35s}.project__link-banner:focus-visible .project__banner-img,.project__link-banner:hover .project__banner-img{transform:scale(1.1)}@media only screen and (max-width:920px){.project__link-banner{flex-shrink:0;max-height:none;height:auto}}.project__banner-img{width:100%;height:100%;object-position:top center;object-fit:cover;transform-origin:center top;transition:transform .35s}.project__content{display:flex;justify-content:center;align-items:flex-start;flex-direction:column;gap:.25rem}.project__link-title{position:relative;font-weight:600;font-size:1.75rem;text-decoration:underline;-webkit-text-decoration-color:transparent;text-decoration-color:transparent;transition:color .35s,-webkit-text-decoration-color .35s;transition:text-decoration-color .35s,color .35s;transition:text-decoration-color .35s,color .35s,-webkit-text-decoration-color .35s}.project__link-title:focus-visible,.project__link-title:hover{-webkit-text-decoration-color:#111113;text-decoration-color:#111113}@media only screen and (max-width:1040px){.project__link-title{font-size:1.5rem}}.project__description{color:#0a0a0a;margin-bottom:.5rem;transition:color .35s}.project__metric{display:inline-flex;align-items:center;min-height:1.75rem;margin-bottom:.5rem;padding:.25rem .65rem;border-radius:9999px;border:1px solid rgba(17,17,19,.18);background-color:rgba(17,17,19,.06);color:#111113;font-size:.82rem;font-weight:700;transition:background-color .35s,border-color .35s,color .35s}.project__tech-list{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.project__tech-item{color:#3f3f46;font-size:.75rem;font-weight:500;padding:.125rem .5rem;border-radius:.25rem;border:1px solid #e5e5e5;letter-spacing:1px;transition:color .35s,border-color .35s,font-weight .35s}.project__external-links{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem}.project__ext-link{display:flex;justify-content:center;align-items:center;gap:0;min-height:2.4rem;padding:.55rem .85rem;border:1px solid #111113;border-radius:.25rem;color:#111113;font-size:.9rem;font-weight:700;line-height:1;text-decoration:none;transition:transform .35s,box-shadow .35s,background-color .35s,border-color .35s,color .35s}.project__ext-link:focus-visible,.project__ext-link:hover{transform:translateY(-.15rem);box-shadow:inset 0 0 0 1px #111113}.project__ext-link--primary{background-color:#111113;color:#fafafa}.project__ext-icon{height:1.25rem;width:1.25rem;fill:#111113;transition:fill .35s}.project__ext-link--disabled{cursor:not-allowed;opacity:.6}.project__ext-link--disabled:focus-visible,.project__ext-link--disabled:hover{transform:none;box-shadow:none}.project__ext-icon--disabled{opacity:.6}.stacks{overflow:hidden}.stacks__tech-list{padding:1rem;display:grid;grid-template-rows:repeat(2,1fr);grid-gap:2rem;gap:2rem}.stacks__tech-list:hover .stacks__sub-list{animation-play-state:paused}.stacks__sub-list{display:flex;align-items:center;gap:2rem;animation:slide-left 30s linear infinite}.stacks__sub-list:last-child{animation:slide-right 30s linear infinite;transform:translateX(-146.25rem)}.stacks__tech-item{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:.6rem;padding:1rem;border-radius:.5rem;height:7.75rem;width:7.75rem;background-color:#0a0a0a;box-shadow:.25rem .25rem .5rem rgba(0,0,0,.569);transition:.35s}.stacks__tech-item:focus-visible,.stacks__tech-item:hover{transform:scale(1.15);box-shadow:.25rem .25rem .75rem rgba(0,0,0,.569)}.stacks__tech-icon{width:3.8rem;height:3.8rem;pointer-events:none;flex-shrink:0}.stacks__proficiency{display:inline-flex;align-items:center;justify-content:center;min-height:1.35rem;padding:.15rem .5rem;border-radius:9999px;font-size:.68rem;font-weight:700;line-height:1;pointer-events:none;white-space:nowrap}.stacks__proficiency--advanced{border:1px solid rgba(79,70,229,.45);background-color:rgba(79,70,229,.16);color:#eef2ff}.stacks__proficiency--intermediate{border:1px solid rgba(79,70,229,.32);background-color:rgba(79,70,229,.12);color:#eef2ff}.stacks__proficiency--basic{border:1px solid rgba(79,70,229,.24);background-color:rgba(79,70,229,.08);color:#eef2ff}@keyframes slide-left{to{transform:translateX(-146.25rem)}}@keyframes slide-right{to{transform:translateX(0)}}.title-marker{display:flex;justify-content:center;align-items:center;gap:1rem;position:relative;width:-moz-fit-content;width:fit-content;margin-bottom:1rem}@media only screen and (max-width:640px){.title-marker{margin:0 auto 1.5rem}}.title-marker__marker{display:block;border-radius:2rem;background-color:#fafafa;box-shadow:0 0 .25rem #fafafa;height:.125rem;width:4rem;transition:.35s}@media only screen and (max-width:640px){.title-marker__marker{position:absolute;left:0;top:calc(100% + .25rem);width:100%}}.title-marker__content{display:block;color:#fafafa;font-weight:500;font-size:1rem}.overlay{display:none;position:fixed;z-index:1;left:0;top:0;width:100vw;height:100vh;-webkit-backdrop-filter:blur(.125rem);backdrop-filter:blur(.125rem)}.overlay--open{display:none;opacity:100%}@media only screen and (max-width:920px){.overlay--open{display:block}}.marker--css,.marker--express,.marker--git,.marker--github,.marker--html,.marker--js,.marker--mongodb,.marker--mysql,.marker--next,.marker--node,.marker--react,.marker--sass,.marker--tailwind,.marker--ts,.marker--webpack{background-color:#4f46e5;box-shadow:0 0 .25rem rgba(79,70,229,.6)}.brand{display:flex;justify-content:center;align-items:center;gap:0;flex-shrink:0;height:3.5rem;width:3.5rem;border-radius:50%;color:#fafafa;font-weight:600;font-size:1.25rem;transition:background-color .35s,border .35s}.header{position:fixed;z-index:2;width:100vw;-webkit-backdrop-filter:blur(.25rem);backdrop-filter:blur(.25rem);background-color:hsla(0,0%,98%,.8);transition:transform .35s,box-shadow .35s,background-color .35s}.header--shaded{box-shadow:0 1px .5rem hsla(0,0%,4%,.5)}.header--hidden{transform:translateY(-101%);box-shadow:none}.header__inner-container{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 0;transition:padding .35s}@media only screen and (max-width:920px){.header__inner-container{padding:.5rem 0}}.header__inner-container--thin{padding:.5rem 0}@media only screen and (max-width:920px){.header__nav-box{position:absolute;left:0;top:0;visibility:hidden;opacity:0;z-index:1;height:100vh;width:100%;padding:1.5rem;background:linear-gradient(180deg,rgba(17,17,19,.5),transparent);transition:visibility .5s,opacity .5s}}.header__nav-box--open{opacity:100%;visibility:visible}.header__navbar{flex-shrink:0}@media only screen and (max-width:920px){.header__navbar{box-shadow:.25rem .25rem .75rem rgba(0,0,0,.424);background-color:#111113;border-radius:.75rem;padding:.5rem;transform:translateY(-100%);transition:background-color .35s,transform .5s,padding .5s .35s}.header__navbar--open{padding:3rem .5rem .5rem;transform:translateY(0)}.header__nav-list{position:relative;flex-direction:column;background-color:#fafafa;transition:background-color .35s;border-radius:.75rem;padding:2rem}}.header__btn-close{position:absolute;left:calc(100% - 1.5rem);top:.6rem;display:none;transform:translateX(-50%)}.header__btn-close:focus-visible,.header__btn-close:hover{box-shadow:0 0 0 1px #fafafa;outline-color:#fafafa}@media only screen and (max-width:920px){.header__btn-close{display:flex}}.header__close-icon{fill:#fafafa;height:1.75rem;width:1.75rem;transition:.35s}.hero{background-color:#fafafa;transition:background-color .35s;height:100vh}@media only screen and (max-width:920px){.hero{height:auto;min-height:100vh}}.hero__inner-container{display:flex;justify-content:center;align-items:center;gap:0;position:relative;height:100%}@media only screen and (max-width:920px){.hero__inner-container{min-height:100vh}}.hero__content-wrapper{display:flex;justify-content:space-between;align-items:center;flex-direction:row-reverse;gap:2rem;width:100%;margin-inline:2rem}@media only screen and (max-width:1040px){.hero__content-wrapper{margin-inline:0}}@media only screen and (max-width:920px){.hero__content-wrapper{flex-direction:column;padding-bottom:4rem;padding-top:5.5rem}}@media only screen and (max-width:640px){.hero__content-wrapper{padding-bottom:3rem}}.hero__badge{display:flex;justify-content:center;align-items:center;gap:.6rem;color:#3f3f46;font-size:.9rem;font-weight:500;letter-spacing:.02em}@media only screen and (max-width:920px){.hero__badge{justify-content:center}}.hero__badge-dot{width:.5rem;height:.5rem;border-radius:50%;box-shadow:0 0 .5rem rgba(22,163,74,.55);flex-shrink:0}.hero__left-content{display:flex;justify-content:center;align-items:flex-start;flex-direction:column;gap:2rem}@media only screen and (max-width:920px){.hero__left-content{align-items:center}}.hero__title{display:inline-block;font-weight:800;font-size:3.5rem;transition:color .35s}@media only screen and (max-width:1120px){.hero__title{font-size:3rem}}@media only screen and (max-width:920px){.hero__title{text-align:center}}@media only screen and (max-width:640px){.hero__title{font-size:2.5rem}}.hero__title--sub{font-size:2.75rem}@media only screen and (max-width:1120px){.hero__title--sub{font-size:2.25rem}}@media only screen and (max-width:640px){.hero__title--sub{font-size:2rem}}.hero__avatar-container{position:relative;max-height:22rem;max-width:22rem;width:28vw;height:28vw;border-radius:30% 70% 70% 30%/30% 30% 70% 70%}.hero__avatar-container:before{position:absolute;left:0;top:0;content:"";border-radius:30% 70% 70% 30%/30% 30% 70% 70%;background-color:#111113;transition:background-color .35s}@media only screen and (max-width:1040px){.hero__avatar-container{width:19rem;height:19rem}}@media only screen and (max-width:640px){.hero__avatar-container{width:calc(12rem + 15vw);height:calc(12rem + 15vw)}}.hero__avatar-img{position:relative;object-fit:cover;object-position:0 20%;border:.125rem solid #111113;border-radius:30% 70% 70% 30%/30% 30% 70% 70%;box-shadow:0 1.5rem 2.25rem -.85rem hsla(0,0%,4%,.5);transition:transform .35s,border-color .35s,background-color .35s}.hero__value-prop{max-width:34rem;margin-top:-1rem;font-size:1.1rem;font-weight:400;line-height:1.6;transition:color .35s}@media only screen and (max-width:920px){.hero__value-prop{text-align:center}}.hero__actions{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;margin-top:-.75rem}@media only screen and (max-width:920px){.hero__actions{justify-content:center}}@media only screen and (max-width:640px){.hero__actions{flex-direction:column;align-items:stretch;width:100%}.hero__actions .hero__cta{width:100%;justify-content:center}}.hero__cta{display:flex;justify-content:center;align-items:center;gap:0;min-height:2.75rem;padding:.7rem 1rem;border:1px solid #111113;border-radius:.25rem;color:#111113;font-weight:700;text-decoration:none;transition:transform .35s,background-color .35s,border-color .35s,color .35s,box-shadow .35s}.hero__cta:focus-visible,.hero__cta:hover{transform:translateY(-.15rem);box-shadow:0 .5rem 1rem hsla(0,0%,4%,.14)}.hero__cta--primary{background-color:#111113;color:#fafafa}.hero__cta--secondary{background-color:transparent}.hero__stack{display:flex;justify-content:center;align-items:flex-start;flex-direction:column;gap:.75rem}@media only screen and (max-width:920px){.hero__stack{align-items:center}}.hero__stack-label{color:#3f3f46;font-size:.8rem;font-weight:500;text-transform:uppercase;letter-spacing:.12em}.hero__stack-pills{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:.5rem}@media only screen and (max-width:920px){.hero__stack-pills{justify-content:center}}.hero__stack-pill{padding:.3rem .7rem;border:1px solid rgba(17,17,19,.35);color:#111113;font-size:.8rem;font-weight:500;transition:transform .35s,border-color .35s,background-color .35s}.hero__stack-pill:focus-visible,.hero__stack-pill:hover{transform:translateY(-.15rem);border-color:#111113;background-color:hsla(0,0%,98%,.6)}@media only screen and (max-width:920px){.hero__btn{margin:0 auto}}.contact{transition:background-color .35s;padding:4rem 1rem}.contact__inner-container{width:100%;max-width:50rem;margin:0 auto}.contact__title-box{display:flex;flex-direction:column;gap:.75rem;text-align:center;margin-bottom:1rem}.contact__title{font-size:clamp(2.2rem,4vw,2.8rem);font-weight:700;letter-spacing:-.02em;color:#fafafa}.contact__text{max-width:36rem;font-size:1rem;line-height:1.6;font-weight:300;color:#3f3f46;transition:color .35s}.contact__card{max-width:32rem;padding:1.75rem;border-radius:1.5rem;background-color:#0a0a0a;border:1px solid #111113;box-shadow:0 0 3.75rem -1rem rgba(17,17,19,.4);transition:background-color .35s,border-color .35s,box-shadow .35s}.contact__form{gap:1.25rem}.contact__field,.contact__form{display:flex;flex-direction:column}.contact__field{gap:.25rem}.contact__input,.contact__textarea{width:100%;padding:1rem 1.1rem;border-radius:.85rem;background-color:#111113;border:1px solid #3f3f46;color:#f4f4f5;font-size:.95rem;transition:background-color .35s,border-color .35s,box-shadow .35s,color .35s}.contact__input::placeholder,.contact__textarea::placeholder{color:#3f3f46}.contact__input:focus,.contact__textarea:focus{outline:none;border-color:#fafafa;box-shadow:0 0 0 .15rem #fafafa}.contact__textarea{resize:none;min-height:10rem}.contact__footer{display:flex;justify-content:space-between;align-items:center;margin-top:.25rem;font-size:.75rem;color:#3f3f46;transition:color .35s}.contact__counter{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.contact__error{color:#4f46e5;font-size:.75rem}.contact__button{padding:1rem;border-radius:.85rem;background-color:#fafafa;color:#111113;font-weight:600;display:flex;align-items:center;justify-content:center;gap:.5rem;cursor:pointer;transition:background-color .35s,color .35s,transform .2s}.contact__button:hover{transform:translateY(-1px)}.contact__button:disabled{opacity:.6;cursor:not-allowed;transform:none}.about{overflow:hidden;background-color:#111113}.about__inner-container{padding-bottom:5rem;padding-top:4rem}@media only screen and (max-width:640px){.about__inner-container{padding-block:3rem}}.about__title-box{display:flex;align-items:center;gap:1rem;position:relative;margin-bottom:3rem}@media only screen and (max-width:640px){.about__title-box{margin-bottom:2rem}}.about__title-box .about__title-line{height:1px;width:100%;background-color:hsla(0,0%,98%,.6);transition:background-color .35s}@media only screen and (max-width:640px){.about__title-box .about__title-line{display:none}}.about__title{color:#fafafa;background-color:#111113}.about__content-wrapper{display:flex;justify-content:space-between;align-items:flex-start;gap:4rem}@media only screen and (max-width:1040px){.about__content-wrapper{position:relative;flex-direction:column}}@media(max-width:768px){.about__content-wrapper{gap:2rem}}.about__avatar-container{position:relative;flex-shrink:0;align-self:stretch;width:28%}@media only screen and (max-width:1040px){.about__avatar-container{display:block;align-self:center;width:min(13.75rem,28vw);height:min(13.75rem,28vw);border-radius:30% 70% 70% 30%/30% 30% 70% 70%}}@media only screen and (max-width:640px){.about__avatar-container{width:min(12.5rem,55vw);height:min(12.5rem,55vw)}}.about__avatar-container:before{position:absolute;left:1rem;top:1.125rem;content:"";border:.125rem solid hsla(0,0%,98%,.6);border-radius:1rem;transition:.35s}@media only screen and (max-width:1040px){.about__avatar-container:before{top:0;left:0;border:none;border-radius:inherit;background-color:#111113}}.about__avatar-container:hover:before{transform:translate(.3rem,.3rem);border-color:#fafafa}@media only screen and (max-width:1040px){.about__avatar-container:hover:before{transform:none}}.about__avatar-container:hover .about__avatar-img{transform:translate(-.3rem,-.3rem);border-color:#fafafa}@media only screen and (max-width:1040px){.about__avatar-container:hover .about__avatar-img{transform:translate(-.35rem,-.35rem);border-color:hsla(0,0%,98%,.6)}}.about__avatar-img{position:relative;border-radius:1rem;object-fit:cover;object-position:top;border:.125rem solid hsla(0,0%,98%,.6);transition:.35s}@media only screen and (max-width:1040px){.about__avatar-img{border-radius:inherit}}.about__right-content{display:flex;justify-content:center;align-items:flex-start;flex-direction:column;gap:2rem}.about__content-division{padding:1.5rem;border-radius:.5rem;background-color:#0a0a0a;box-shadow:.25rem .25rem .5rem rgba(0,0,0,.569)}@media(max-width:768px){.about__content-division{padding:1.125rem}}.about__text{color:#f4f4f5;font-weight:300}@media(max-width:768px){.about__text{font-size:.9375rem}}@media only screen and (max-width:640px){.about__text{text-align:center}}.about__marker{box-shadow:0 0 .25rem #4f46e5}.about__social-wrapper{display:grid;grid-gap:2rem;gap:2rem;grid-template-columns:repeat(4,3.75rem)}@media only screen and (max-width:640px){.about__social-wrapper{justify-content:center}}@media only screen and (max-width:430px){.about__social-wrapper{grid-template-columns:repeat(2,3.75rem);grid-template-rows:repeat(2,3.75rem)}}.about__social-link{display:flex;justify-content:center;align-items:center;gap:0;position:relative;width:3.75rem;height:3.75rem;border-radius:.25rem;background-color:#0a0a0a;box-shadow:.25rem .25rem .5rem rgba(0,0,0,.569),inset 0 0 0 .125rem rgba(63,63,70,.25);transition:transform .35s,box-shadow .35s}.about__social-link:focus-visible{outline-color:#fafafa}.about__social-link:focus-visible,.about__social-link:hover{transform:translate(-.25rem,-.25rem);box-shadow:.5rem .5rem .75rem rgba(0,0,0,.569),inset 0 0 0 .125rem rgba(63,63,70,.25)}.about__social-icon{height:42%;width:42%;transition:.35s}.education{overflow:hidden;background-color:#111113}.education__inner-container{padding-bottom:5rem;padding-top:4rem}@media only screen and (max-width:640px){.education__inner-container{padding-block:3rem}}.education__title-box{display:flex;align-items:center;gap:1rem;position:relative;margin-bottom:3rem}@media only screen and (max-width:640px){.education__title-box{margin-bottom:2rem}}.education__title-box .education__title-line{height:1px;width:100%;background-color:hsla(0,0%,98%,.6);transition:background-color .35s}@media only screen and (max-width:640px){.education__title-box .education__title-line{display:none}}.education__title{color:#fafafa;background-color:#111113}.education__content-wrapper{display:flex;justify-content:space-between;align-items:flex-start;gap:4rem}@media only screen and (max-width:1040px){.education__content-wrapper{position:relative;flex-direction:column}}.education__avatar-container{position:relative;flex-shrink:0;align-self:stretch;width:28%}@media only screen and (max-width:1040px){.education__avatar-container{display:none}}.education__avatar-container:before{position:absolute;left:1rem;top:1.125rem;content:"";border:.125rem solid hsla(0,0%,98%,.6);border-radius:1rem;transition:.35s}@media only screen and (max-width:1040px){.education__avatar-container:before{display:none}}.education__avatar-container:hover:before{transform:translate(.3rem,.3rem);border-color:#fafafa}.education__avatar-container:hover .education__avatar-img{transform:translate(-.3rem,-.3rem);border-color:#fafafa}.education__avatar-img{position:relative;border-radius:1rem;object-fit:cover;object-position:top;border:.125rem solid hsla(0,0%,98%,.6);transition:.35s}.education__right-content{display:flex;justify-content:center;align-items:flex-start;flex-direction:column;gap:2rem}.education__content-division{padding:1.5rem;border-radius:.5rem;background-color:#0a0a0a;box-shadow:.25rem .25rem .5rem rgba(0,0,0,.569)}.education__text{color:#f4f4f5;font-weight:300}@media only screen and (max-width:640px){.education__text{text-align:center}}.education__marker{box-shadow:0 0 .5rem #4f46e5}.education__social-wrapper{display:grid;grid-gap:2rem;gap:2rem;grid-template-columns:repeat(4,3.75rem)}@media only screen and (max-width:640px){.education__social-wrapper{justify-content:center}}@media only screen and (max-width:430px){.education__social-wrapper{grid-template-columns:repeat(2,3.75rem);grid-template-rows:repeat(2,3.75rem)}}.education__social-link{display:flex;justify-content:center;align-items:center;gap:0;position:relative;width:3.75rem;height:3.75rem;border-radius:.25rem;background-color:#0a0a0a;box-shadow:.25rem .25rem .5rem rgba(0,0,0,.569),inset 0 0 0 .125rem rgba(63,63,70,.25);transition:transform .35s,box-shadow .35s}.education__social-link:focus-visible{outline-color:#fafafa}.education__social-link:focus-visible,.education__social-link:hover{transform:translate(-.25rem,-.25rem);box-shadow:.5rem .5rem .75rem rgba(0,0,0,.569),inset 0 0 0 .125rem rgba(63,63,70,.25)}.education__social-link:focus-visible .education__social-icon,.education__social-link:hover .education__social-icon{fill:#4f46e5}.education__social-icon{fill:#fafafa;height:42%;width:42%;transition:.35s}.projects{overflow:hidden;transition:background-color .35s}.projects__inner-container{padding-block:4rem}@media only screen and (max-width:640px){.projects__inner-container{padding-block:3rem}}.projects__title-box{display:flex;align-items:center;gap:1rem;position:relative;margin-bottom:3rem}@media only screen and (max-width:640px){.projects__title-box{margin-bottom:2rem}}.projects__title-box .projects__title-line{height:1px;width:100%;background-color:rgba(17,17,19,.6);transition:background-color .35s}@media only screen and (max-width:640px){.projects__title-box .projects__title-line{display:none}}.projects__title{background-color:#fafafa}.projects__cards-wrapper{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:4rem;gap:4rem;margin-bottom:4rem}@media only screen and (max-width:920px){.projects__cards-wrapper{grid-template-columns:1fr;margin-bottom:3rem}}.projects__btn{margin:0 auto}.skills{overflow:hidden;background-color:#111113}.skills__inner-container{padding-block:4rem}@media only screen and (max-width:640px){.skills__inner-container{padding-block:3rem}}.skills__title-box{display:flex;align-items:center;gap:1rem;position:relative;margin-bottom:3rem}@media only screen and (max-width:640px){.skills__title-box{margin-bottom:2rem}}.skills__title-box .skills__title-line{height:1px;width:100%;background-color:hsla(0,0%,98%,.6);transition:background-color .35s}@media only screen and (max-width:640px){.skills__title-box .skills__title-line{display:none}}.skills__title{color:#fafafa;background-color:#111113}.skills__content{display:grid;grid-template-columns:42.5% auto;grid-gap:2rem;gap:2rem}@media only screen and (max-width:920px){.skills__content{grid-template-columns:1fr;gap:1rem}}.skills__description-box{display:flex;justify-content:center;align-items:flex-start;gap:0;overflow:hidden;background-color:#0a0a0a;padding:1.5rem;border-radius:.5rem;box-shadow:.25rem .25rem .5rem rgba(0,0,0,.569);grid-column:1/2;grid-row:1}@media only screen and (max-width:920px){.skills__description-box{grid-row:2;grid-column:1/3}}.skills__desc-wrapper{opacity:0;animation:show 1s forwards}.skills__tech-desc{color:#f4f4f5;font-weight:300}@media only screen and (max-width:640px){.skills__tech-desc{text-align:center}}.skills__draft-container{transform:translateY(100%);opacity:0;align-self:center;animation:slide-vertical 1s forwards}.skills__desc-draft{text-align:center;color:#f4f4f5}@media only screen and (max-width:920px){.skills__desc-draft{display:none}}.skills__desc-draft--mobile{display:none}@media only screen and (max-width:920px){.skills__desc-draft--mobile{display:block}}.skills__hover-icon{display:block;margin:1.5rem auto 0;fill:#fafafa;height:2.5rem;width:2.5rem;animation:bounce 1.5s ease-in-out infinite alternate;transform:translateY(.5rem);opacity:.5}.skills__stack-list{grid-column:2/3}@media only screen and (max-width:920px){.skills__stack-list{grid-column:1/3}}.about,.education,.skills{position:relative}.about:after,.about:before,.education:after,.education:before,.skills:after,.skills:before{content:"";position:absolute;left:0;z-index:0;width:100%;height:2.5rem;pointer-events:none}.about:before,.education:before,.skills:before{top:0;background:linear-gradient(180deg,#fafafa,rgba(17,17,19,0))}.about:after,.education:after,.skills:after{bottom:0;background:linear-gradient(0deg,#fafafa,rgba(17,17,19,0))}.about__inner-container,.education__inner-container,.skills__inner-container{position:relative;z-index:1}.timeline{margin-top:20px;padding:4rem 0;transition:background-color .35s}.timeline__inner-container{max-width:1200px;padding:0 1.5rem;margin-top:2rem}.timeline__title-box{display:flex;align-items:center;gap:1rem;position:relative;margin-bottom:3rem}@media only screen and (max-width:640px){.timeline__title-box{margin-bottom:2rem}}.timeline__title-box .timeline__title-line{height:1px;width:100%;background-color:rgba(17,17,19,.6);transition:background-color .35s}@media only screen and (max-width:640px){.timeline__title-box .timeline__title-line{display:none}}.timeline__title{font-size:2.5rem;font-weight:700;margin-bottom:1rem}.timeline__title-line{display:block;height:4px;width:4rem;background-color:#4f46e5;border-radius:2px}.timeline__content-wrapper{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:2rem}.timeline__container{padding:1rem 1rem 2rem;width:100%}.timeline__entries-container{position:relative;width:100%}.timeline__entries-container--dense{--entry-gap:2rem}.timeline__entries-container--comfortable{--entry-gap:3rem}.timeline__entries-container--loose{--entry-gap:4rem}.timeline__vertical-line{position:absolute;top:0;bottom:0;left:50%;transform:translateX(-50%);width:2px;background-color:#3f3f46}@media(max-width:768px){.timeline__vertical-line{display:none}}.timeline__heading{width:100%;text-align:center;margin-bottom:var(--entry-gap);position:relative;z-index:10}.timeline__marker{padding:0 1rem}.timeline__marker,.timeline__subtitle{display:inline-block;background-color:#fafafa}.timeline__subtitle{padding:.25rem 1rem;color:#3f3f46;font-size:.9rem}.timeline__entry{display:flex;justify-content:center;align-items:flex-start;gap:0;width:100%;margin-bottom:var(--entry-gap)}.timeline__entry-spacer{width:50%}.timeline__entry-icon-container{position:relative;z-index:10;padding:0 1rem}.timeline__entry-icon,.timeline__entry-icon-container{display:flex;justify-content:center;align-items:center;gap:0}.timeline__entry-icon{border-radius:50%;padding:.75rem;background-color:#4f46e5;color:#fafafa;transition:background-color .35s}@media(max-width:768px){.timeline__entry-icon{display:none}}.timeline__entry-icon--blue,.timeline__entry-icon--green,.timeline__entry-icon--orange,.timeline__entry-icon--purple,.timeline__entry-icon--red{background-color:#4f46e5}.timeline__icon-svg{width:1.25rem;height:1.25rem}.timeline__icon-svg--default{width:.5rem;height:.5rem;border-radius:50%;background-color:#fafafa}.timeline__entry-content{width:50%;position:relative;overflow:hidden;padding:1rem}.timeline__entry-content--left{padding-right:2rem;padding-left:2rem;text-align:right;border-radius:.75rem;box-shadow:.5rem .5rem 0 .125rem #111113,0 0 0 .125rem #111113,.5rem .5rem 1rem .25rem rgba(0,0,0,.22)}.timeline__entry-content--right{padding-right:2rem;padding-left:2rem;text-align:left;border-radius:.75rem;box-shadow:-.5rem .5rem 0 .125rem #111113,0 0 0 .125rem #111113,-.5rem .5rem 1rem .25rem rgba(0,0,0,.22)}.timeline__entry-title{font-size:1.25rem;font-weight:600;margin-bottom:.25rem}@media only screen and (max-width:640px){.timeline__entry-title{font-size:1rem;text-align:center;margin-right:2rem;margin-left:-2rem}}.timeline__entry-subtitle{font-size:.9rem;color:#3f3f46;margin-bottom:1rem}@media only screen and (max-width:640px){.timeline__entry-subtitle{font-size:.85rem;text-align:center;margin-right:2rem;margin-left:-2rem}}.timeline__content{margin-top:1rem}.timeline__image-container{margin-bottom:1rem;border-radius:.5rem;overflow:hidden}.timeline__image{width:100%;height:auto;object-fit:cover;border-radius:.5rem}.timeline__text{color:#f4f4f5;line-height:1.6}.timeline__text-paragraph{margin-bottom:1rem;color:#292828}@media only screen and (max-width:640px){.timeline__text-paragraph{font-size:.85rem;text-align:justify;margin-right:2rem;margin-left:-2rem}}.timeline__link-container{margin-top:1rem}@media(max-width:768px){.timeline__vertical-line{left:2rem}.timeline__entry{flex-direction:column}.timeline__entry-spacer{display:none}.timeline__entry-content{width:100%;padding-left:4rem!important;text-align:left!important;padding-right:0!important}.timeline__entry-icon-container{position:absolute;left:0;top:0;padding:0}.timeline__heading{padding-left:4rem;text-align:left}}.timeline__skills-container{margin-top:1.25rem;margin-bottom:.5rem;text-align:center}@media only screen and (max-width:640px){.timeline__skills-container{margin-right:2rem;margin-left:-2rem}}.timeline__skills-title{font-size:.75rem;font-weight:700;margin-bottom:.75rem;text-transform:uppercase;letter-spacing:.05em;opacity:.7;text-align:center}.timeline__skills-list{display:flex;flex-wrap:wrap;gap:.35rem;justify-content:center}.timeline__skill-badge{font-size:.65rem;padding:.2rem .5rem;border-radius:9999px;font-weight:600;white-space:nowrap;transition:all .2s ease;cursor:default}.timeline__skill-badge--blue{background-color:rgba(79,70,229,.15);color:#4f46e5;border:1px solid rgba(79,70,229,.2)}.timeline__skill-badge--blue:hover{background-color:rgba(79,70,229,.25);border-color:rgba(79,70,229,.4)}.timeline__skill-badge--green{background-color:rgba(79,70,229,.15);color:#4f46e5;border:1px solid rgba(79,70,229,.2)}.timeline__skill-badge--green:hover{background-color:rgba(79,70,229,.25);border-color:rgba(79,70,229,.4)}.timeline__skill-badge--purple{background-color:rgba(79,70,229,.15);color:#4f46e5;border:1px solid rgba(79,70,229,.2)}.timeline__skill-badge--purple:hover{background-color:rgba(79,70,229,.25);border-color:rgba(79,70,229,.4)}.timeline__skill-badge--orange{background-color:rgba(79,70,229,.15);color:#4f46e5;border:1px solid rgba(79,70,229,.2)}.timeline__skill-badge--orange:hover{background-color:rgba(79,70,229,.25);border-color:rgba(79,70,229,.4)}.timeline__skill-badge--default{background-color:hsla(220,9%,46%,.15);color:#6b7280;border:1px solid hsla(220,9%,46%,.2)}.timeline__skill-badge--default:hover{background-color:hsla(220,9%,46%,.25);border-color:hsla(220,9%,46%,.4)}@keyframes slide-vertical{to{transform:translateY(0);opacity:100%}}@keyframes show{to{opacity:100%}}@keyframes bounce{to{transform:translateY(-.5rem);opacity:1}}.footer{background-color:#fafafa;transition:background-color .35s}.footer__inner-container{padding-top:1.75rem;padding-bottom:1.5rem}.footer__social{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem}@media only screen and (max-width:920px){.footer__social{flex-direction:column;text-align:center;margin-bottom:1rem}}.footer__social-wrapper{display:flex;align-items:center;gap:1rem}.footer__social-link{display:flex;transition:transform .35s}.footer__social-link:focus-visible,.footer__social-link:hover{transform:scale(1.2) translateY(-.25rem)}.footer__social-icon{height:1.35rem;width:1.35rem;fill:#3f3f46;transition:fill .35s}.footer__mailto-link{text-decoration:underline;color:#0a0a0a;transition:color .35s}.footer__attributions{display:flex;justify-content:center;align-items:center;gap:1rem;text-align:center}.footer__author,.footer__copyright,.footer__link-bottom{color:#0a0a0a;transition:color .35s}.footer__link-bottom{display:inline;position:relative;font-weight:600}.footer__link-bottom:focus-visible:after,.footer__link-bottom:hover:after{width:100%}.footer__link-bottom:after{content:"";position:absolute;left:0;top:100%;width:0;height:1px;background-color:#111113;transition:.35s}.rotate-180{transform:rotate(180deg)}html.dark-mode{scrollbar-color:#e5e5e5 #0a0a0a}html.dark-mode *{outline-color:#fafafa}html.dark-mode body::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#3f3f46,#e5e5e5);border:1px solid #0a0a0a}html.dark-mode body::-webkit-scrollbar-track{background-color:#0a0a0a}html.dark-mode .header--shaded{box-shadow:0 1px .5rem hsla(0,0%,4%,.75)}@media only screen and (max-width:920px){html.dark-mode .header__navbar{background-color:#fafafa}html.dark-mode .header__nav-list{background-color:#111113}}html.dark-mode .header__btn-close:focus-visible,html.dark-mode .header__btn-close:hover{box-shadow:0 0 0 1px #111113;outline-color:#111113}html.dark-mode .header__close-icon{fill:#111113}html.dark-mode .timeline__container,html.dark-mode .timeline__inner-container{background-color:#0a0a0a;color:#fafafa}html.dark-mode .timeline__title-box{display:flex;align-items:center;gap:1rem;position:relative;margin-bottom:3rem}@media only screen and (max-width:640px){html.dark-mode .timeline__title-box{margin-bottom:2rem}}html.dark-mode .timeline__title-box .timeline__title-line{height:1px;width:100%;background-color:hsla(0,0%,98%,.3);transition:background-color .35s}@media only screen and (max-width:640px){html.dark-mode .timeline__title-box .timeline__title-line{display:none}}html.dark-mode .timeline__title{color:#fafafa}html.dark-mode .timeline__vertical-line{background-color:#fafafa}html.dark-mode .timeline__marker,html.dark-mode .timeline__subtitle{background-color:#0a0a0a;color:#fafafa}html.dark-mode .timeline__entry-content--left{box-shadow:.5rem .5rem 0 .125rem #111113,0 0 0 .125rem #111113,.5rem .5rem 1rem .25rem hsla(0,10%,73%,.22)}.dark html.dark-mode .timeline__entry-content--left{box-shadow:.5rem .5rem 0 .125rem rgba(63,63,70,.2),0 0 0 .125rem rgba(63,63,70,.2),.5rem .5rem 1rem .25rem hsla(0,0%,100%,.05);background-color:#ededed}html.dark-mode .timeline__entry-content--right{box-shadow:-.5rem .5rem 0 .125rem #111113,0 0 0 .125rem #111113,-.5rem .5rem 1rem .25rem hsla(0,10%,73%,.22)}.dark html.dark-mode .timeline__entry-content--right{box-shadow:-.5rem .5rem 0 .125rem rgba(63,63,70,.2),0 0 0 .125rem rgba(63,63,70,.2),-.5rem .5rem 1rem .25rem hsla(0,3%,78%,.05);background-color:#ededed}html.dark-mode .timeline__entry-subtitle,html.dark-mode .timeline__entry-title,html.dark-mode .timeline__text,html.dark-mode .timeline__text-paragraph{color:#fafafa}html.dark-mode .hero{background-color:#0a0a0a}html.dark-mode .hero__badge{color:hsla(0,0%,98%,.7)}html.dark-mode .hero__title--sub{color:hsla(0,0%,98%,.75)}html.dark-mode .hero__value-prop{color:hsla(0,0%,98%,.82)}html.dark-mode .hero__stack-label{color:hsla(0,0%,98%,.65)}html.dark-mode .hero__stack-pill{border-color:hsla(0,0%,98%,.35);color:hsla(0,0%,98%,.85)}html.dark-mode .hero__stack-pill:focus-visible,html.dark-mode .hero__stack-pill:hover{border-color:#fafafa;background-color:hsla(0,0%,98%,.08)}html.dark-mode .hero__cta{border-color:#fafafa;color:#fafafa}html.dark-mode .hero__cta:focus-visible,html.dark-mode .hero__cta:hover{box-shadow:0 .5rem 1rem hsla(0,0%,4%,.4)}html.dark-mode .hero__cta--primary{background-color:#fafafa;color:#0a0a0a}html.dark-mode .hero__avatar-container:before{background-color:#fafafa}html.dark-mode .hero__avatar-img{background-color:#fafafa;border-color:#fafafa}html.dark-mode .projects,html.dark-mode .projects__title{background-color:#0a0a0a;color:#fafafa}html.dark-mode .projects__title-line{background-color:hsla(0,0%,98%,.6)}html.dark-mode .projects__link-title{color:#fafafa}html.dark-mode .footer{background-color:#0a0a0a}html.dark-mode .footer__social-icon{fill:#fafafa}html.dark-mode .footer__author,html.dark-mode .footer__copyright,html.dark-mode .footer__mailto-link{color:#fafafa;font-weight:300}html.dark-mode .footer__link-bottom{color:#fafafa}html.dark-mode .footer__link-bottom:after{background-color:#fafafa}html.dark-mode .navbar__link{font-weight:400}html.dark-mode .navbar__link:after{background:linear-gradient(90deg,transparent,#fafafa)}html.dark-mode .brand{border:.125rem solid #fafafa}html.dark-mode .btn--hamburger:focus-visible,html.dark-mode .btn--hamburger:hover{box-shadow:0 0 0 1px #fafafa}html.dark-mode .btn--hamburger__bar{background-color:#fafafa}html.dark-mode .btn--hamburger__label{color:#fafafa}html.dark-mode .btn--download,html.dark-mode .btn--show-more{outline-color:transparent}html.dark-mode .btn--download__content,html.dark-mode .btn--show-more__content{background-color:#0a0a0a;border-color:#fafafa}html.dark-mode .btn--download:before,html.dark-mode .btn--show-more:before{background-color:#fafafa}html.dark-mode .btn--download:focus-visible .btn--download__content,html.dark-mode .btn--download:focus-visible .btn--show-more__content,html.dark-mode .btn--download:hover .btn--download__content,html.dark-mode .btn--download:hover .btn--show-more__content,html.dark-mode .btn--show-more:focus-visible .btn--download__content,html.dark-mode .btn--show-more:focus-visible .btn--show-more__content,html.dark-mode .btn--show-more:hover .btn--download__content,html.dark-mode .btn--show-more:hover .btn--show-more__content{background-color:#0a0a0a;border-color:#fafafa;color:#fafafa}html.dark-mode .btn--download:focus-visible .btn--download__icon,html.dark-mode .btn--download:focus-visible .btn--show-more__icon,html.dark-mode .btn--download:hover .btn--download__icon,html.dark-mode .btn--download:hover .btn--show-more__icon,html.dark-mode .btn--show-more:focus-visible .btn--download__icon,html.dark-mode .btn--show-more:focus-visible .btn--show-more__icon,html.dark-mode .btn--show-more:hover .btn--download__icon,html.dark-mode .btn--show-more:hover .btn--show-more__icon{fill:#fafafa}html.dark-mode .btn--scrolltop{background-color:#fafafa;border-color:#0a0a0a;box-shadow:0 0 0 1px #fafafa}html.dark-mode .btn--scrolltop__icon{fill:#0a0a0a}html.dark-mode .side-links__link:focus-visible .side-links__icon{fill:#fafafa}html.dark-mode .side-links__icon{fill:#e5e5e5}html.dark-mode .side-links__icon:hover{fill:#fafafa}html.dark-mode .side-links__bar{background:linear-gradient(180deg,#e5e5e5,transparent)}html.dark-mode .side-links__scroll-hint{color:#e5e5e5}html.dark-mode .project__skew{box-shadow:.5rem .5rem 0 .125rem #e1e1e1,0 0 0 .125rem #e1e1e1}html.dark-mode .project__skew:after{background-color:hsla(0,0%,98%,.25)}html.dark-mode .project__link-banner{border-color:#fafafa}html.dark-mode .project__link-title{color:#fafafa}html.dark-mode .project__link-title:focus-visible,html.dark-mode .project__link-title:hover{-webkit-text-decoration-color:#fafafa;text-decoration-color:#fafafa}html.dark-mode .project__description{color:#f4f4f5}html.dark-mode .project__tech-item{font-weight:300;color:hsla(240,5%,96%,.85);border-color:hsla(240,5%,96%,.85)}html.dark-mode .project__metric{background-color:hsla(0,0%,98%,.08);border-color:hsla(0,0%,98%,.2);color:#fafafa}html.dark-mode .project__ext-link{border-color:#fafafa;color:#fafafa}html.dark-mode .project__ext-link--primary{background-color:#fafafa;color:#0a0a0a}html.dark-mode .project__ext-link:focus-visible,html.dark-mode .project__ext-link:hover{box-shadow:inset 0 0 0 1px #fafafa}html.dark-mode .project__ext-icon{fill:#fafafa}html.dark-mode .about:before,html.dark-mode .education:before,html.dark-mode .skills:before{background:linear-gradient(180deg,#0a0a0a,rgba(17,17,19,0))}html.dark-mode .about:after,html.dark-mode .education:after,html.dark-mode .skills:after{background:linear-gradient(0deg,#0a0a0a,rgba(17,17,19,0))}html.dark-mode .contact{background-color:#0a0a0a}html.dark-mode .contact__text{color:#fafafa}html.dark-mode .contact__card{border-color:#fafafa}html.dark-mode .contact__input,html.dark-mode .contact__textarea{border-color:hsla(0,0%,98%,.5)}html.dark-mode .contact__footer{color:#fafafa}.ui-button{display:flex;justify-content:center;align-items:center;gap:.5rem;min-height:2.75rem;width:-moz-fit-content;width:fit-content;padding:.72rem 1rem;border:1.5px solid #4f46e5;border-radius:.5rem;font-weight:700;line-height:1;text-decoration:none;transition:transform .35s,border-color .35s,background-color .35s,color .35s,box-shadow .35s}.ui-button:focus-visible,.ui-button:hover{transform:translateY(-.12rem);box-shadow:0 .75rem 1.6rem rgba(79,70,229,.2)}.ui-button--primary{background-color:#4f46e5;color:#fafafa}.ui-button--outline{background-color:transparent;color:#111113}.ui-card{border:1px solid hsla(0,0%,4%,.1);border-radius:var(--radius-card);background-color:#fff;box-shadow:0 1.25rem 3rem hsla(0,0%,4%,.12)}.ui-pill{display:inline-flex;align-items:center;justify-content:center;min-height:1.65rem;padding:.25rem .65rem;border:1px solid rgba(79,70,229,.28);border-radius:999px;background-color:rgba(79,70,229,.08);color:#3730a3;font-size:.78rem;font-weight:650;line-height:1;white-space:nowrap;transition:border-color .35s,background-color .35s,color .35s,opacity .35s}.ui-pill--strong{opacity:1}.ui-pill--medium{opacity:.68}.ui-pill--soft{opacity:.88}.section-heading{display:flex;align-items:center;gap:1rem;position:relative;margin-bottom:3rem}.section-heading__index{flex-shrink:0;color:#4f46e5;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.86rem;font-weight:700;letter-spacing:0}.section-heading__title{flex-shrink:0;color:#111113;background-color:transparent;font-family:var(--font-display);font-size:clamp(2.35rem,4vw,3.5rem);font-weight:700;letter-spacing:0;line-height:1.02}.section-heading__line{display:block;height:1px;width:100%;background-color:rgba(79,70,229,.35)}@media only screen and (max-width:640px){.section-heading{justify-content:center;align-items:center;flex-wrap:wrap;gap:.5rem .75rem;text-align:center}.section-heading__line{flex-basis:100%}}.header{background-color:hsla(0,0%,98%,.88);border-bottom:1px solid hsla(0,0%,4%,.08)}.header--shaded{box-shadow:0 .75rem 2rem hsla(0,0%,4%,.08)}.brand{width:3.35rem;height:3.35rem;border-radius:.9rem;background:#111113;box-shadow:0 0 0 1px rgba(79,70,229,.5),.35rem .35rem 0 rgba(79,70,229,.22);transition:transform .35s,box-shadow .35s}.brand:focus-visible,.brand:hover{transform:translate(-.12rem,-.12rem);box-shadow:0 0 0 1px #4f46e5,.5rem .5rem 0 rgba(79,70,229,.28)}.brand__monogram{width:100%;height:100%}.brand__frame{fill:#111113;stroke:#4f46e5;stroke-width:2}.brand__letter{fill:url(#ga-monogram-depth)}.navbar__link{color:#111113}.navbar__link:after{background:#4f46e5}.hero{min-height:100vh;height:auto;background:linear-gradient(hsla(0,0%,4%,.035) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,4%,.035) 1px,transparent 0),#fafafa;background-size:36px 36px;border-bottom:2px solid #4f46e5}.hero__content-wrapper{min-height:100vh;padding-block:6rem 4rem}.hero__badge{width:-moz-fit-content;width:fit-content;padding:.42rem .72rem;border:1px solid rgba(22,163,74,.26);border-radius:999px;background-color:rgba(22,163,74,.08);color:#166534;font-weight:700}.hero__badge-dot{background-color:#16a34a;box-shadow:0 0 .65rem rgba(22,163,74,.6)}.hero__title{font-family:var(--font-display);font-size:clamp(3.5rem,7vw,7rem);font-weight:700;letter-spacing:0;line-height:.95}.hero__title--main{color:#111113}.hero__title--sub{color:#3f3f46;font-size:clamp(2.25rem,4.8vw,4.75rem)}.hero__title--accent{color:#4f46e5}.hero__value-prop{color:#3f3f46;font-size:1.15rem}.hero__avatar-container{width:min(28vw,24rem);height:min(34vw,30rem);max-width:none;max-height:none;border-radius:var(--radius-photo)}.hero__avatar-container:before{left:.75rem;top:.75rem;border:1.5px solid #4f46e5;border-radius:inherit;background-color:transparent}.hero__avatar-container:hover .hero__avatar-img{transform:translate(-.35rem,-.35rem)}@media only screen and (max-width:1040px){.hero__avatar-container{width:20rem;height:24rem}}@media only screen and (max-width:640px){.hero__avatar-container{width:min(18rem,82vw);height:min(22rem,96vw)}}.hero__avatar-img{border:1.5px solid #4f46e5;border-radius:var(--radius-photo);background-color:#111113;box-shadow:0 1.6rem 3rem hsla(0,0%,4%,.22);object-position:50% 18%}.hero__stack-label{color:#71717a}.hero__stack-pill{padding:.25rem .65rem;border-radius:999px;color:#3730a3}.about,.education,.skills{background-color:#111113}.about:after,.about:before,.education:after,.education:before,.skills:after,.skills:before{height:0;background:none}.about__inner-container,.education__inner-container,.skills__inner-container{padding-block:5rem}.about .section-heading__title,.education .section-heading__title,.skills .section-heading__title{color:#fafafa}.about .section-heading__line,.education .section-heading__line,.skills .section-heading__line{background-color:hsla(0,0%,98%,.16)}.about,.contact,.education,.skills{border-top:1px solid rgba(79,70,229,.28)}.about__content-division{width:100%;padding:0;border-radius:0;background:transparent;box-shadow:none}.about__card{width:100%;padding:1.5rem;border-color:hsla(0,0%,98%,.1);background-color:#18181b}.about__avatar-container{width:30%;border-radius:var(--radius-photo)}.about__avatar-container:before{top:.75rem;left:.75rem;border:1.5px solid #4f46e5;border-radius:inherit;background-color:transparent}@media only screen and (max-width:1040px){.about__avatar-container{width:min(19rem,70vw);height:min(23rem,84vw);border-radius:var(--radius-photo)}}.about__avatar-img{border:1.5px solid #4f46e5;border-radius:var(--radius-photo);background-color:#111113;box-shadow:0 1.6rem 3rem hsla(0,0%,4%,.35)}.about__marker{background-color:#4f46e5;box-shadow:0 0 .3rem rgba(79,70,229,.6)}.about__social-link{border:1px solid hsla(0,0%,98%,.1);border-radius:.75rem;background-color:hsla(0,0%,98%,.03);box-shadow:none}.about__social-link:focus-visible,.about__social-link:hover{box-shadow:0 .9rem 1.8rem hsla(0,0%,4%,.2)}.about__social-link:focus-visible .about__social-icon,.about__social-link:hover .about__social-icon{fill:#4f46e5}.about__social-icon{fill:#fafafa}.projects{background-color:#fafafa;border-top:1px solid hsla(0,0%,4%,.08)}.projects__title{color:#111113;background-color:transparent}.projects__title-line{background-color:rgba(79,70,229,.35)}.project__skew{gap:1.5rem;height:100%;padding:1.25rem;border-radius:var(--radius-card);box-shadow:0 1.25rem 3rem hsla(0,0%,4%,.12)}.project__skew:after{background-color:rgba(79,70,229,.16)}.project__link-banner{border:1px solid rgba(79,70,229,.2);border-radius:.65rem}.project__link-title{color:#111113;font-family:var(--font-display);letter-spacing:0}.project__link-title:focus-visible,.project__link-title:hover{color:#4f46e5;-webkit-text-decoration-color:#4f46e5;text-decoration-color:#4f46e5}.project__metric{border-color:rgba(79,70,229,.24);background-color:rgba(79,70,229,.08);color:#3730a3}.project__description{color:#3f3f46}.project__tech-item{padding:.25rem .65rem;border-radius:999px;letter-spacing:0}.project__ext-link{min-height:2.55rem;border-radius:.5rem}.skills__description-box{padding:0;border-radius:0;background:transparent;box-shadow:none}.skills__card{width:100%;min-height:100%;padding:1.5rem;border-color:hsla(0,0%,98%,.1);background-color:#18181b}.skills__hover-icon{fill:#4f46e5}.stacks__tech-item{border:1px solid hsla(0,0%,98%,.1);border-radius:var(--radius-card);background-color:#18181b;box-shadow:none}.stacks__proficiency{border-color:rgba(79,70,229,.35);background-color:rgba(79,70,229,.12);color:#c7d2fe}.stacks__proficiency--advanced{opacity:1}.stacks__proficiency--intermediate{opacity:.6}.stacks__proficiency--basic{opacity:.36}.timeline{background-color:#fafafa;border-top:2px solid #4f46e5}.timeline,.timeline__inner-container{margin-top:0}.timeline__title{color:#111113}.timeline__title-line{background-color:rgba(79,70,229,.35)}.timeline__vertical-line{background-color:rgba(79,70,229,.34)}.timeline__entry-icon{border:2px solid #4f46e5;background-color:#fafafa;color:#4f46e5}.timeline__entry-icon--current{background-color:#4f46e5;color:#fafafa}.timeline__entry-icon--blue,.timeline__entry-icon--green,.timeline__entry-icon--orange,.timeline__entry-icon--past,.timeline__entry-icon--purple,.timeline__entry-icon--red{background-color:#fafafa;color:#4f46e5}.timeline__entry-content{padding:0;border:1px solid hsla(0,0%,4%,.1);border-radius:var(--radius-card);background-color:#fff;box-shadow:0 1.25rem 3rem hsla(0,0%,4%,.12)}.timeline__entry-content--left,.timeline__entry-content--right{padding:1.5rem;box-shadow:0 1.25rem 3rem hsla(0,0%,4%,.12)}.timeline__entry-title{color:#111113;font-family:var(--font-display);font-size:1.35rem}.timeline__entry-subtitle,.timeline__skills-title,.timeline__text-paragraph{color:#3f3f46}.timeline__skill-badge{padding:0;border:0;background:transparent;color:inherit}.education__content-wrapper{gap:1.5rem}.education__content-division{width:100%;padding:0;border-radius:0;background:transparent;box-shadow:none}.education__card{height:100%;padding:1.5rem;border-color:hsla(0,0%,98%,.1);background-color:#18181b}.education__marker{background-color:#4f46e5;box-shadow:0 0 .3rem rgba(79,70,229,.6)}.contact{padding:5rem 1rem;background-color:#fafafa;border-top:2px solid #4f46e5}.contact__inner-container{max-width:54rem}.contact__title-box{align-items:center;justify-content:center}.contact__title{color:#111113;background-color:transparent}.contact__card{max-width:34rem;margin:0 auto;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.contact__card-inner{padding:1.5rem;border-color:hsla(0,0%,4%,.1);background-color:#fff}.contact__input,.contact__textarea{border:1px solid hsla(0,0%,4%,.14);border-radius:.65rem;background-color:#fafafa;color:#111113}.contact__input::placeholder,.contact__textarea::placeholder{color:hsla(0,0%,4%,.48)}.contact__input:focus,.contact__textarea:focus{border-color:#4f46e5;box-shadow:0 0 0 .15rem rgba(79,70,229,.2)}.contact__error{color:#b91c1c}.contact__footer{color:#71717a}.contact__button{width:100%;margin-top:.75rem}html.dark-mode body::-webkit-scrollbar-thumb{background:#3f3f46}html.dark-mode .ui-button--outline{border-color:hsla(0,0%,98%,.58);color:#fafafa}html.dark-mode .ui-button--outline:focus-visible,html.dark-mode .ui-button--outline:hover{border-color:#4f46e5;color:#fafafa}html.dark-mode .ui-card{border-color:hsla(0,0%,98%,.1);background-color:#18181b;box-shadow:0 1.25rem 3rem hsla(0,0%,4%,.25)}html.dark-mode .ui-pill{border-color:rgba(79,70,229,.42);background-color:rgba(79,70,229,.14);color:#c7d2fe}html.dark-mode .header{background-color:rgba(17,17,19,.9)!important;border-bottom-color:hsla(0,0%,98%,.1)}html.dark-mode .brand{border:0}html.dark-mode .navbar__link{color:#fafafa}html.dark-mode .hero{background:linear-gradient(hsla(0,0%,98%,.035) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,98%,.035) 1px,transparent 0),#111113}html.dark-mode .hero__badge{color:#bbf7d0}html.dark-mode .hero__title--main{color:#fafafa}html.dark-mode .hero__title--sub,html.dark-mode .hero__value-prop{color:hsla(0,0%,98%,.75)}html.dark-mode .hero__stack-label{color:hsla(0,0%,98%,.62)}html.dark-mode .projects,html.dark-mode .timeline{background-color:#111113;color:#fafafa}html.dark-mode .projects .project__link-title,html.dark-mode .projects .section-heading__title,html.dark-mode .projects__entry-title,html.dark-mode .projects__title,html.dark-mode .timeline .project__link-title,html.dark-mode .timeline .section-heading__title,html.dark-mode .timeline__entry-title,html.dark-mode .timeline__title{color:#fafafa}html.dark-mode .projects .section-heading__line,html.dark-mode .projects__title-line,html.dark-mode .timeline .section-heading__line,html.dark-mode .timeline__title-line{background-color:hsla(0,0%,98%,.16)}html.dark-mode .project__description,html.dark-mode .project__metric,html.dark-mode .project__tech-item{color:hsla(0,0%,98%,.78)}html.dark-mode .project__link-banner{border-color:rgba(79,70,229,.34)}html.dark-mode .timeline__entry-icon{background-color:#111113}html.dark-mode .timeline__entry-icon--current{background-color:#4f46e5}html.dark-mode .timeline__entry-content{border-color:hsla(0,0%,98%,.1);background-color:#18181b}html.dark-mode .timeline__entry-subtitle,html.dark-mode .timeline__skills-title,html.dark-mode .timeline__text-paragraph{color:hsla(0,0%,98%,.74)}html.dark-mode .contact{background-color:#111113;color:#fafafa}html.dark-mode .contact__title{color:#fafafa}html.dark-mode .contact__card-inner{border-color:hsla(0,0%,98%,.1);background-color:#18181b}html.dark-mode .contact__input,html.dark-mode .contact__textarea{border-color:hsla(0,0%,98%,.14);background-color:hsla(0,0%,4%,.22);color:#f4f4f5}html.dark-mode .contact__input::placeholder,html.dark-mode .contact__textarea::placeholder{color:hsla(0,0%,98%,.48)}html.dark-mode .contact__footer{color:hsla(0,0%,98%,.64)}