:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;letter-spacing:.01em;color-scheme:light dark;color:#000000de;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px}@media(min-width:640px){:root{font-size:15px}}@media(min-width:768px){:root{font-size:16px}}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden}::-webkit-scrollbar{width:0;height:0;background:transparent}*{-ms-overflow-style:none;scrollbar-width:none}h1{font-size:clamp(2em,5vw,3.2em);line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.6em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:none}:root.dark{color-scheme:dark;color:#ffffffe6;background-color:#000}:root.dark body{position:relative}:root.dark body:before{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(to right,rgba(61,12,160,.1) 0%,transparent 18%,transparent 90%,rgba(61,12,160,.22) 100%);z-index:9999}:root.dark a:hover{color:#a5b4fc}::selection{background:#646cff4d;color:inherit}:root.dark ::selection{background:#a78bfa4d}:focus-visible{outline:2px solid #646cff;outline-offset:2px}:root.dark :focus-visible{outline-color:#a78bfa}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}@supports (height: 100dvh){body{min-height:100dvh}}:root{--max-content-width: 767px;--header-height: 72px;--section-padding-x: 1.25rem;--section-padding-x-lg: 2rem;--border-radius: 8px;--transition-speed: .3s}.app{position:relative;isolation:isolate;display:block;text-align:inherit;overflow-x:hidden;min-height:100vh}.header{position:fixed;top:0;left:0;right:0;width:100%;height:var(--header-height);background:#ffffff80;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:0;box-sizing:border-box;transform:translateZ(0);will-change:transform}.header-spacer{height:var(--header-height);width:100%}.header__inner{width:100%;max-width:var(--max-content-width);margin:0 auto;display:flex;align-items:center;justify-content:flex-end;padding:0 1rem;box-sizing:border-box;position:relative;gap:1rem}@media(min-width:640px){.header__inner{padding:0 1.5rem}}@media(min-width:768px){.header__inner{padding:0 2rem 0 1.25rem}}.header__logo{opacity:0;transform:translate(-20px);transition:opacity .3s ease-out,transform .3s ease-out,max-width .3s ease-out,margin .3s ease-out;pointer-events:none;height:40px;display:flex;align-items:center;flex-shrink:0;max-width:0;overflow:hidden;margin-right:auto}.header__logo--visible{opacity:1;transform:translate(0);pointer-events:auto;max-width:120px;margin-right:auto}.header__logo-img{height:100%;width:auto;max-height:40px;object-fit:contain;display:block}.header__btns{display:flex;align-items:center;gap:6px;flex-shrink:0;margin-left:0}.header__btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:none;background:transparent;color:#000000b3;cursor:pointer;border-radius:50%;transition:none;outline:none}.header__btn:focus,.header__btn:active{outline:none;box-shadow:none}.header__btn:hover,.header__dark-btn:hover{background:#0000000f;color:#000000e6}.header__icon{width:18px;height:18px}.hero{position:relative;width:100%;max-width:764px;margin:0 auto;min-height:180px;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#1a151cf7,#14121af2);padding:1.5rem 1rem;box-sizing:border-box;overflow:hidden}@media(min-width:640px){.hero{min-height:200px;padding:1.5rem 2rem}}@media(min-width:768px){.hero{min-height:232px;padding:2rem 8rem}}.hero:after{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.06) 15%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 85%,transparent 100%),linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.06) 15%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 85%,transparent 100%),linear-gradient(to right,transparent 0%,rgba(0,0,0,.06) 15%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 85%,transparent 100%);background-size:1px 100%,1px 100%,100% 1px;background-position:left top,right top,left bottom;background-repeat:no-repeat}.hero:before{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(135deg,transparent 0px,transparent 1.5px,rgba(255,255,255,.06) 1.5px,rgba(255,255,255,.06) 2.5px)}.hero__illustration{display:block;position:relative;z-index:1;max-width:90%;max-height:150px;width:auto;height:auto;object-fit:contain;opacity:.62;mask-image:linear-gradient(to bottom,black 0%,black 45%,rgba(0,0,0,.85) 65%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,black 0%,black 45%,rgba(0,0,0,.85) 65%,transparent 100%)}@media(min-width:640px){.hero__illustration{max-width:80%;max-height:180px}}@media(min-width:768px){.hero__illustration{max-width:72%;max-height:220px}}:root:not(.dark) .hero{background:linear-gradient(180deg,#f8f8f8,#e8e8e8)}:root:not(.dark) .hero:before{background:repeating-linear-gradient(135deg,transparent 0px,transparent 1.5px,rgba(0,0,0,.055) 1.5px,rgba(0,0,0,.055) 2.5px)}.intro{position:relative;width:100%;max-width:var(--max-content-width);margin:0 auto;padding:1rem 1rem 1.5rem;background:#fff;box-sizing:border-box;text-align:left}@media(min-width:640px){.intro{padding:1.25rem 1.5rem 2rem}}@media(min-width:768px){.intro{padding:1.25rem 2rem 2rem 1.25rem}}.intro:after{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.06) 15%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 85%,transparent 100%),linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.06) 15%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 85%,transparent 100%),linear-gradient(to right,transparent 0%,rgba(0,0,0,.06) 15%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 85%,transparent 100%);background-size:1px 100%,1px 100%,100% 1px;background-position:left top,right top,left bottom;background-repeat:no-repeat}.intro__name{margin:0 0 .25em;font-size:clamp(1.75rem,5vw,2.5rem);font-weight:700;color:#000000b6;letter-spacing:-.02em;line-height:1.2}.intro__roles{margin:0 0 1rem;font-size:clamp(.9rem,2.5vw,1.2rem);color:#afa8a8;font-weight:400;line-height:1.4}.intro__cta{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}@media(min-width:640px){.intro__cta{gap:.75rem;margin-bottom:1.25rem}}.intro__btn{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .7rem;font-size:clamp(.75rem,2vw,.82rem);font-weight:500;font-family:inherit;cursor:pointer;text-decoration:none;transition:none;border:1px solid #d0d0d0;background:#f5f5f5;color:#333;border-radius:var(--border-radius);box-shadow:0 2px 8px #00000014;outline:none;white-space:nowrap}@media(min-width:640px){.intro__btn{padding:.4rem .9rem}}.intro__btn:focus,.intro__btn:active{outline:none;box-shadow:0 2px 8px #00000014}.intro__btn:hover{border-color:#999;color:#333}.intro__btn-icon{width:14px;height:14px;flex-shrink:0;color:#555}@media(min-width:640px){.intro__btn-icon{width:16px;height:16px}}.intro__cta-or{color:#888;font-size:.9rem;font-weight:400}@media(min-width:640px){.intro__cta-or{font-size:.95rem}}.intro__btn--inline{margin:0 .15em;vertical-align:middle;padding:.5rem 1rem;font-size:.9rem;position:relative;outline:none}@media(min-width:640px){.intro__btn--inline{padding:.55rem 1.2rem;font-size:.95rem}}.intro__btn--inline:focus,.intro__btn--inline:active{outline:none;box-shadow:0 2px 8px #00000014}.intro__btn--inline[data-tooltip]:hover:before{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%) translateY(4px) scale(.9);background:#000000d9;color:#fff;padding:.4rem .75rem;border-radius:6px;font-size:.8rem;font-weight:400;white-space:nowrap;pointer-events:none;z-index:1000;box-shadow:0 2px 8px #0003;opacity:0;animation:tooltip-popup .2s ease-out forwards}@keyframes tooltip-popup{to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.intro__text{margin:0;font-size:clamp(1rem,3vw,1.4rem);color:#afa8a8;line-height:1.55;font-weight:400}.social{position:relative;width:100%;max-width:var(--max-content-width);margin:0 auto;padding:.5rem 1rem .75rem;background:#fff;box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:1rem;flex-wrap:wrap}@media(min-width:640px){.social{padding:.75rem 1.5rem 1rem;gap:1.5rem}}@media(min-width:768px){.social{padding:.75rem 2rem 1rem 1.25rem;gap:2rem}}.social:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(to right,transparent 0%,rgba(0,0,0,.06) 15%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 85%,transparent 100%)}.social__link{display:inline-flex;align-items:center;gap:.4rem;text-decoration:none;color:#888;font-size:clamp(.85rem,2vw,1rem);font-weight:400;font-family:inherit;transition:color .2s;position:relative}@media(min-width:640px){.social__link{gap:.5rem}}.social__link:hover{color:#666}.social__link[data-tooltip]:hover:before{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%) translateY(4px) scale(.9);background:#000000d9;color:#fff;padding:.4rem .75rem;border-radius:6px;font-size:.8rem;font-weight:400;white-space:nowrap;pointer-events:none;z-index:1000;box-shadow:0 2px 8px #0003;opacity:0;animation:tooltip-popup .2s ease-out forwards}.social__icon{width:18px;height:18px;flex-shrink:0}@media(min-width:640px){.social__icon{width:20px;height:20px}}@media(min-width:768px){.social__icon{width:22px;height:22px}}.social__text{font-size:inherit}.career{position:relative;width:100%;max-width:var(--max-content-width);margin:0 auto;padding:1.5rem 1rem;background:#fff;box-sizing:border-box;text-align:left}@media(min-width:640px){.career{padding:1.5rem}}@media(min-width:768px){.career{padding:2rem 2rem 2rem 1.25rem}}.career__subtitle{margin:0 0 .5rem;font-size:.9rem;font-weight:400;color:#87887f;line-height:1.2;text-align:left}@media(min-width:640px){.career__subtitle{font-size:1rem}}.career__row{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}@media(min-width:640px){.career__row{gap:2rem}}.career__title{margin:0;font-size:clamp(1.4rem,4vw,1.8rem);font-weight:700;color:#333;line-height:1.2;letter-spacing:-.02em}.career__resume{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}@media(min-width:640px){.career__resume{gap:.75rem}}.career__resume-text{font-size:.85rem;color:#888;font-weight:400}@media(min-width:640px){.career__resume-text{font-size:.95rem}}.career__resume-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .8rem;font-size:.85rem;font-weight:500;font-family:inherit;cursor:pointer;border:1px solid #d0d0d0;background:#f5f5f5;color:#333;border-radius:var(--border-radius);box-shadow:0 1px 2px #0000000f;transition:none;outline:none}@media(min-width:640px){.career__resume-btn{gap:.5rem;padding:.5rem 1rem;font-size:.9rem}}.career__resume-btn:focus,.career__resume-btn:active{outline:none;box-shadow:0 1px 2px #0000000f}.career__resume-btn:hover{border-color:#999;background:#eee}.career__resume-icon{width:14px;height:14px;flex-shrink:0;color:#555}@media(min-width:640px){.career__resume-icon{width:16px;height:16px}}.experience{position:relative;width:100%;max-width:var(--max-content-width);margin:0 auto;padding:0 1rem 1.5rem;background:#fff;box-sizing:border-box;text-align:left}@media(min-width:640px){.experience{padding:0 1.5rem 2rem}}@media(min-width:768px){.experience{padding:0 2rem 2rem 1.25rem}}.experience:before{content:"";position:absolute;left:-22rem;right:-22rem;bottom:-13rem;height:30rem;pointer-events:none;background-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.06) 20%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 80%,transparent 100%),linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.06) 20%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 80%,transparent 100%);background-size:1px 100%,1px 100%;background-position:24% 0,76% 0;background-repeat:no-repeat}.experience:after{content:"";position:absolute;left:-12rem;right:-12rem;bottom:0;height:1px;pointer-events:none;background-image:linear-gradient(to right,transparent 0%,rgba(0,0,0,.06) 20%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 80%,transparent 100%),linear-gradient(to right,transparent 0%,rgba(0,0,0,.06) 20%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 80%,transparent 100%);background-size:35% 1px,35% 1px;background-position:left bottom,right bottom;background-repeat:no-repeat}.experience__tabs{display:flex;width:100%;background:#e5e7eb;border-radius:var(--border-radius);padding:3px;gap:0}.experience__tab{flex:1;padding:.4rem .5rem;font-size:clamp(.8rem,2vw,.88rem);font-weight:500;font-family:inherit;background:transparent;border:none;border-radius:6px;color:#6b7280;cursor:pointer;transition:none;outline:none;text-align:center}@media(min-width:640px){.experience__tab{padding:.5rem 1rem}}.experience__tab:focus,.experience__tab:active{outline:none;box-shadow:none}.experience__tab:first-child.experience__tab--active{border-radius:6px 0 0 6px}.experience__tab:last-child.experience__tab--active{border-radius:0 6px 6px 0}.experience__tab:hover:not(.experience__tab--active){color:#4b5563}.experience__tab--active{background:#1f2937;color:#fff}.experience__content{padding-top:1rem;position:relative;min-height:200px}@media(min-width:640px){.experience__content{padding-top:1.5rem}}.experience__panel{animation:experience-fade-in .3s ease-out}@keyframes experience-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.experience__timeline{list-style:none;margin:0;padding:0;position:relative;padding-left:1.5rem;border-left:2px solid rgba(0,0,0,.08);margin-left:.75rem}@media(min-width:640px){.experience__timeline{padding-left:2rem;margin-left:1.25rem}}@media(min-width:768px){.experience__timeline{padding-left:2.5rem;margin-left:1.75rem}}.experience__entry{position:relative;padding-bottom:1.5rem}@media(min-width:640px){.experience__entry{padding-bottom:2rem}}.experience__entry:last-child{padding-bottom:0}.experience__icon{position:absolute;left:-2.5rem;top:.1rem;width:1.5rem;height:1.5rem;border-radius:50%;background:#e8e8e8;color:#333;font-size:.6rem;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid #d0d0d0;box-sizing:border-box}@media(min-width:640px){.experience__icon{left:-3rem;width:1.75rem;height:1.75rem;font-size:.65rem}}@media(min-width:768px){.experience__icon{left:-3.5rem;top:.15rem;width:2rem;height:2rem}}.experience__icon--edu{background:#f5f5f5;border-color:silver}.experience__icon--img{padding:0;overflow:hidden}.experience__icon-img{width:100%;height:100%;object-fit:contain;display:block}.experience__body{display:block}.experience__header{display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:.25rem;margin-bottom:.25rem}@media(min-width:640px){.experience__header{flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:.5rem}}.experience__title{margin:0;font-size:clamp(1rem,3vw,1.1rem);font-weight:700;color:#333;line-height:1.3}.experience__dates{font-size:clamp(.8rem,2vw,.85rem);color:#888;font-weight:400}.experience__role{margin:0 0 .5rem;font-size:clamp(.9rem,2.5vw,.95rem);color:#555;font-weight:400}.experience__bullets{margin:0 0 .75rem;padding-left:1rem;font-size:clamp(.85rem,2vw,.9rem);color:#555;line-height:1.5}@media(min-width:640px){.experience__bullets{padding-left:1.25rem}}.experience__bullets li{margin-bottom:.25rem}.experience__project-btn{display:inline-flex;align-items:center;gap:.4rem;margin-top:.5rem;margin-right:.5rem;padding:.3rem .6rem;font-size:clamp(.75rem,2vw,.82rem);font-weight:500;font-family:inherit;text-decoration:none;color:#333;background:#f0f0f0;border:1px solid #d8d8d8;border-radius:6px;transition:background .2s,border-color .2s}@media(min-width:640px){.experience__project-btn{padding:.35rem .75rem}}.experience__project-btn:hover{background:#e5e5e5;border-color:#ccc}.experience__project-icon{width:12px;height:12px;flex-shrink:0}@media(min-width:640px){.experience__project-icon{width:14px;height:14px}}.skills{position:relative;width:100%;max-width:764px;margin:0 auto;padding:1.5rem 1rem;background:#fff;box-sizing:border-box;text-align:left}@media(min-width:640px){.skills{padding:1.5rem}}@media(min-width:768px){.skills{padding:2rem 2rem 2rem 1.25rem}}.skills__subtitle{margin:0 0 .5rem;font-size:.9rem;font-weight:400;color:#87887f;line-height:1.2;text-align:left}@media(min-width:640px){.skills__subtitle{font-size:1rem}}.skills__title{margin:0 0 1rem;font-size:clamp(1.4rem,4vw,1.8rem);font-weight:700;color:#333;line-height:1.2;letter-spacing:-.02em}@media(min-width:640px){.skills__title{margin-bottom:1.25rem}}.skills__grid{display:flex;flex-wrap:wrap;gap:.4rem}@media(min-width:640px){.skills__grid{gap:.5rem}}.skills__link{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .5rem;background:#d2d0d6;border:1px dashed rgba(31,29,29,.35);border-radius:6px;color:#5c5555;font-size:clamp(.7rem,1.8vw,.78rem);font-weight:500;text-decoration:none;transition:none;box-sizing:border-box}@media(min-width:640px){.skills__link{gap:.4rem;padding:.35rem .6rem}}.skills__link:hover{border-color:#fff9;background:#8d8c8f;color:#fff}.skills__logo{width:16px;height:16px;object-fit:contain;flex-shrink:0}@media(min-width:640px){.skills__logo{width:18px;height:18px}}@media(min-width:768px){.skills__logo{width:20px;height:20px}}.skills__name{white-space:nowrap}.projects{position:relative;width:100%;max-width:var(--max-content-width);margin:0 auto;padding:1.5rem 1rem;background:#fff;box-sizing:border-box;text-align:left}@media(min-width:640px){.projects{padding:1.5rem}}@media(min-width:768px){.projects{padding:2rem 2rem 2rem 1.25rem}}.projects:before{content:"";position:absolute;left:-22rem;right:-22rem;bottom:-13rem;height:30rem;pointer-events:none;background-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.06) 20%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 80%,transparent 100%),linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.06) 20%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 80%,transparent 100%);background-size:1px 100%,1px 100%;background-position:24% 0,76% 0;background-repeat:no-repeat}.projects:after{content:"";position:absolute;left:-12rem;right:-12rem;bottom:0;height:1px;pointer-events:none;background-image:linear-gradient(to right,transparent 0%,rgba(0,0,0,.06) 20%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 80%,transparent 100%),linear-gradient(to right,transparent 0%,rgba(0,0,0,.06) 20%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 80%,transparent 100%);background-size:35% 1px,35% 1px;background-position:left bottom,right bottom;background-repeat:no-repeat}.projects__subtitle{margin:0 0 .5rem;font-size:.9rem;font-weight:400;color:#87887f;line-height:1.2;text-align:left}@media(min-width:640px){.projects__subtitle{font-size:1rem}}.projects__title{margin:0 0 1rem;font-size:clamp(1.4rem,4vw,1.8rem);font-weight:700;color:#333;line-height:1.2;letter-spacing:-.02em}@media(min-width:640px){.projects__title{margin-bottom:1.25rem}}.projects__carousel{display:flex;flex-direction:column;gap:.75rem;margin-top:.5rem}@media(min-width:640px){.projects__carousel{gap:1rem}}.projects__carousel-row{display:flex;align-items:center;gap:.5rem;width:100%}@media(min-width:640px){.projects__carousel-row{gap:.75rem}}.projects__nav{flex-shrink:0;display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .5rem;border-radius:6px;border:1px dashed rgba(31,29,29,.35);background:#d2d0d6;color:#5c5555;font-size:clamp(.75rem,2vw,.85rem);font-weight:600;cursor:pointer;transition:none;align-self:center;box-sizing:border-box}@media(min-width:640px){.projects__nav{gap:.4rem;padding:.35rem .6rem}}.projects__nav:hover{border-color:#fff9;background:#8d8c8f;color:#fff}.projects__nav--prev svg{margin-left:-2px;flex-shrink:0}.projects__nav--next svg{margin-right:-2px;flex-shrink:0}.projects__nav svg{width:16px;height:16px}@media(min-width:640px){.projects__nav svg{width:18px;height:18px}}@media(min-width:768px){.projects__nav svg{width:20px;height:20px}}.projects__nav-label{white-space:nowrap}.projects__track{flex:1;min-width:0;overflow:hidden;position:relative;aspect-ratio:16 / 9;max-height:200px;border-radius:8px}@media(min-width:640px){.projects__track{max-height:260px}}@media(min-width:768px){.projects__track{max-height:320px}}.projects__card{position:absolute;inset:0;padding:0 2px;box-sizing:border-box;opacity:0;transform:translate(0);transition:opacity .35s ease,transform .35s ease;pointer-events:none}.projects__card--active{opacity:1;transform:translate(0);pointer-events:auto}.projects__card--leaving{opacity:1;transform:translate(0);pointer-events:none;z-index:2}.projects__card--leaving.projects__card--leave-to-left{opacity:0;transform:translate(-100%)}.projects__card--leaving.projects__card--leave-to-right,.projects__card--enter-from-right{opacity:0;transform:translate(100%)}.projects__card--enter-from-right.projects__card--active{opacity:1;transform:translate(0)}.projects__card--enter-from-left{opacity:0;transform:translate(-100%)}.projects__card--enter-from-left.projects__card--active{opacity:1;transform:translate(0)}.projects__image-wrap{position:relative;width:100%;height:100%;border-radius:8px;overflow:hidden;background:#1a1a2e}@media(min-width:640px){.projects__image-wrap{border-radius:10px}}.projects__image{width:100%;height:100%;object-fit:cover;display:block}.projects__tech-footer{position:absolute;bottom:0;left:0;right:0;background:#d2d0d6;border-top:1px dashed rgba(31,29,29,.35);padding:.4rem .5rem;transform:translateY(100%);transition:transform .3s ease;overflow:hidden}@media(min-width:640px){.projects__tech-footer{padding:.5rem .75rem}}.projects__image-wrap:hover .projects__tech-footer,.projects__image-wrap:active .projects__tech-footer{transform:translateY(0)}.projects__tech-text{margin:0;font-size:clamp(.7rem,1.8vw,.75rem);line-height:1.4;color:#5c5555;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.projects__body{display:flex;flex-direction:column;gap:.4rem;margin-top:.75rem}@media(min-width:640px){.projects__body{gap:.5rem;margin-top:1rem}}.projects__card-title{margin:0;font-size:clamp(.95rem,3vw,1.1rem);font-weight:700;color:#333;line-height:1.3;letter-spacing:-.01em}.projects__card-subtext{margin:0;font-size:clamp(.85rem,2.5vw,.9rem);color:#5c5555;line-height:1.5}.projects__links-wrap{min-height:2rem;margin-top:.25rem}@media(min-width:640px){.projects__links-wrap{min-height:2.25rem}}.projects__links{display:flex;flex-wrap:wrap;gap:.5rem}@media(min-width:640px){.projects__links{gap:.75rem}}.projects__links-placeholder{display:block;min-height:2rem;visibility:hidden}@media(min-width:640px){.projects__links-placeholder{min-height:2.25rem}}.projects__link{font-size:clamp(.8rem,2vw,.85rem);font-weight:600;color:#5c5555;text-decoration:none;padding:.3rem .5rem;border:1px dashed rgba(31,29,29,.35);border-radius:6px;background:#d2d0d6;transition:none}@media(min-width:640px){.projects__link{padding:.35rem .6rem}}.projects__link:hover{border-color:#fff9;background:#8d8c8f;color:#fff}.projects__dots{display:flex;justify-content:center;gap:.4rem;margin-top:1rem}@media(min-width:640px){.projects__dots{gap:.5rem;margin-top:1.25rem}}.projects__dot{width:6px;height:6px;border-radius:50%;border:none;background:#d2d0d6;cursor:pointer;padding:0;transition:transform .2s ease,background .2s ease}@media(min-width:640px){.projects__dot{width:8px;height:8px}}.projects__dot:hover{background:#8d8c8f}.projects__dot--active{background:#545455;transform:scale(1.2)}.github{position:relative;width:100%;max-width:764px;margin-left:auto;margin-right:auto;padding:2rem 1rem;box-sizing:border-box;contain:layout paint;overflow:hidden}@media(min-width:640px){.github{padding:2.5rem 1.5rem}}@media(min-width:768px){.github{padding:3rem 1.5rem}}.github__chart-wrap{overflow-x:visible;overflow-y:hidden;margin:0;padding:.5rem 0;min-width:0;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none}.github__chart-wrap::-webkit-scrollbar{display:none}.github__chart-wrap>*{min-width:auto;width:100%;max-width:100%}.github__chart-wrap svg{width:100%!important;max-width:100%;height:auto}@media(min-width:640px){.github__chart-wrap{margin-left:0;margin-right:0;padding-left:0;padding-right:0}}.github__chart-wrap--loading{min-height:100px}@media(min-width:640px){.github__chart-wrap--loading{min-height:120px}}.github__subtitle{margin:0 0 .5rem;font-size:.9rem;font-weight:400;color:#87887f;line-height:1.2;text-align:left}@media(min-width:640px){.github__subtitle{font-size:1rem}}.github__title{margin:0 0 1rem;font-size:clamp(1.4rem,4vw,1.8rem);font-weight:700;color:#333;line-height:1.2;letter-spacing:-.02em;text-align:left}@media(min-width:640px){.github__title{margin-bottom:1.25rem}}.dark .github__title{color:#fff}.hero-cta{position:relative;width:100%;max-width:764px;margin-left:auto;margin-right:auto;padding:0;display:grid;grid-template-columns:1fr;min-height:auto;background:#fff;box-sizing:border-box}@media(min-width:640px){.hero-cta{grid-template-columns:auto 1fr;min-height:280px}}.hero-cta__left{position:relative;display:flex;align-items:center;justify-content:center;padding:1.5rem 1rem .5rem;background:#fff}@media(min-width:640px){.hero-cta__left{justify-content:flex-start;padding:1.5rem .75rem 1.5rem 1.5rem}}.hero-cta__figure{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;max-width:100%}@media(min-width:640px){.hero-cta__figure{justify-content:flex-start}}.hero-cta__img{display:block;width:100%;max-width:150px;height:auto;max-height:100px;object-fit:contain;filter:grayscale(100%)}@media(min-width:640px){.hero-cta__img{max-width:200px;max-height:140px}}.dark .hero-cta__img{filter:brightness(1) sepia(1) hue-rotate(215deg) saturate(2.5)}.hero-cta__line{position:absolute;inset:auto auto 0 50%;transform:translate(-50%);width:70%;height:1px;min-height:0;background:#e0e0e0;pointer-events:none}@media(min-width:640px){.hero-cta__line{inset:50% 0 auto auto;transform:translateY(-50%);width:1px;height:70%;min-height:160px}}.dark .hero-cta__line{background:#ffffff1f}.hero-cta__right{padding:1.5rem 1rem;background:transparent;display:flex;flex-direction:column;justify-content:center;gap:.75rem;text-align:center;align-items:center}@media(min-width:640px){.hero-cta__right{padding:2rem 2rem 2rem 1rem;gap:1rem;text-align:left;align-items:flex-start}}.dark .hero-cta,.dark .hero-cta__left{background:#000}.dark .hero-cta__right{background:transparent}.hero-cta__heading{margin:0 0 .1rem;font-size:1.1rem;font-weight:400;color:#afa8a8;line-height:1.2;text-align:inherit}@media(min-width:640px){.hero-cta__heading{margin:1rem 0 .1rem;font-size:1.2rem}}.dark .hero-cta__heading{color:#d6cfcf}.hero-cta__socials{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}@media(min-width:640px){.hero-cta__socials{justify-content:flex-start}}.hero-cta__social{display:inline-flex;width:36px;height:36px;color:#424242;border-radius:6px;transition:none;align-items:center;justify-content:center}@media(min-width:640px){.hero-cta__social{width:40px;height:40px}}.dark .hero-cta__social{color:#ccc}.hero-cta__social-icon{width:20px;height:20px}@media(min-width:640px){.hero-cta__social-icon{width:22px;height:22px}}.hero-cta__tagline{margin:0;font-size:.9rem;line-height:1.5;font-weight:400;color:#afa8a8;text-align:inherit}@media(min-width:640px){.hero-cta__tagline{font-size:1rem;line-height:1.55}}.dark .hero-cta__tagline{color:#d6cfcf}.hero-cta__btn{align-self:center;display:inline-flex;align-items:center;justify-content:center;padding:.45rem 1rem;font-size:.9rem;font-weight:500;font-family:inherit;color:#24292f;background:#f0f0f0;border:1px solid #d0d0d0;border-radius:6px;text-decoration:none;cursor:pointer;transition:none;margin-top:.5rem}@media(min-width:640px){.hero-cta__btn{align-self:flex-start;padding:.5rem 1.25rem;font-size:.9375rem;margin-top:0}}.hero-cta__btn:hover{background:#e8e8e8;border-color:#b0b0b0;color:#000}.dark .hero-cta__btn{color:#e8e8e8;background:#1a1a1a;border-color:#fff3}.dark .hero-cta__btn:hover{background:#2a2a2a;border-color:#ffffff59;color:#fff}@keyframes footer-name-fade-in{0%{opacity:0}to{opacity:1}}.footer-name{position:relative;width:100vw;max-width:100vw;margin-left:calc(-50vw + 50%);padding:1.5rem 1rem 2rem;box-sizing:border-box;overflow-x:hidden;animation:footer-name-fade-in 1s ease-out forwards}@media(min-width:640px){.footer-name{padding:2rem 1.5rem 2.5rem}}@media(min-width:768px){.footer-name{padding:2.5rem 1.5rem 3rem}}.footer-name__text{display:block;font-size:clamp(3rem,15vw,10rem);font-weight:700;font-family:inherit;line-height:.9;letter-spacing:-.03em;white-space:nowrap;background:linear-gradient(180deg,#b0b0b0,gray);-webkit-background-clip:text;background-clip:text;color:transparent}.footer-name__cat-cta{margin-top:.75rem;display:flex;justify-content:center}.footer-name__cat-btn{margin-top:.25rem}.cats-modal{position:fixed;inset:0;z-index:11000;display:flex;align-items:center;justify-content:center;pointer-events:none}.cats-modal__backdrop{position:fixed;inset:0;background:#0009;pointer-events:auto}.cats-modal__content{position:relative;max-width:640px;width:calc(100% - 2rem);margin:0 auto;background:#fff;border-radius:16px;padding:1.25rem 1.25rem 1.5rem;box-shadow:0 24px 80px #0f172a59;pointer-events:auto}@media(min-width:640px){.cats-modal__content{padding:1.5rem 1.75rem 1.75rem}}.dark .cats-modal__content{background:#050509;border:1px solid rgba(148,163,184,.35)}.cats-modal__header{flex-shrink:0;padding-left:2.5rem;padding-right:2.5rem;margin-bottom:.5rem;text-align:center}.cats-modal__body{max-height:60vh;overflow-y:auto;margin-top:0}.cats-modal__close{position:absolute;top:.6rem;right:.7rem;width:28px;height:28px;border-radius:999px;border:none;background:transparent;color:#6b7280;font-size:1.2rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s ease,color .2s ease,transform .2s ease}.cats-modal__close:hover{background:#94a3b840;color:#374151}.cats-modal__close:active{transform:scale(.95)}.dark .cats-modal__close{color:#9ca3af}.dark .cats-modal__close:hover{background:#ffffff1f;color:#e5e7eb}.cats-modal__title{margin:0 0 .25rem;font-size:1.25rem;font-weight:700;letter-spacing:-.01em;color:#111827}.cats-modal__header .cats-modal__title{margin-top:0}.dark .cats-modal__title{color:#e5e7eb}.cats-modal__subtitle{margin:0;font-size:.9rem;color:#6b7280}.dark .cats-modal__subtitle{color:#9ca3af}.cats-modal__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.85rem;margin-bottom:.75rem}.cats-modal__item{margin:0;border-radius:10px;overflow:hidden;background:#f3f4f6;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.cats-modal__item:hover{transform:scale(1.02);box-shadow:0 8px 24px #00000026}.dark .cats-modal__item{background:#020617}.cats-modal__img{width:100%;height:140px;object-fit:cover;display:block}.cats-modal__caption{margin:0;padding:.4rem .6rem .55rem;font-size:.78rem;color:#4b5563}.dark .cats-modal__caption{color:#e5e7eb}.cats-modal__hint{margin:.25rem 0 0;font-size:.78rem;color:#9ca3af}.dark .cats-modal__hint{color:#6b7280}.cats-zoom{position:fixed;inset:0;z-index:11001;display:flex;align-items:center;justify-content:center;pointer-events:none}.cats-zoom__backdrop{position:fixed;inset:0;background:#000000e6;pointer-events:auto;cursor:pointer}.cats-zoom__close{position:fixed;top:1rem;right:1rem;z-index:11002;width:40px;height:40px;border:none;background:#ffffff26;color:#fff;font-size:1.5rem;line-height:1;cursor:pointer;pointer-events:auto;display:flex;align-items:center;justify-content:center;transition:background .2s ease}.cats-zoom__close:hover{background:#ffffff40}.cats-zoom__img{position:relative;z-index:11002;max-width:90vw;max-height:90vh;width:auto;height:auto;object-fit:contain;pointer-events:auto;border-radius:8px;box-shadow:0 24px 80px #00000080}.dark .footer-name__text{background:linear-gradient(180deg,#8c67b6,#560aad);-webkit-background-clip:text;background-clip:text;color:transparent}.dark .intro,.dark .social,.dark .career,.dark .experience,.dark .skills,.dark .projects{background:#000}.dark .intro__name{color:#fff}.dark .intro__roles,.dark .intro__text{color:#d6cfcf}.dark .intro__btn{background:#1a1a1a;color:#f0f0f0;border-color:#a040f066}.dark .intro__btn:hover{border-color:#a040f0cc;color:#f0f0f0}.dark .intro__btn-icon{color:#888}.dark .intro__cta-or{color:#aaa}.dark .intro__btn--inline:hover{color:#f0f0f0}.dark .social:after{background:linear-gradient(to right,transparent 0%,rgba(255,255,255,.06) 15%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.06) 85%,transparent 100%)}.dark .social__link{color:#aaa}.dark .social__link:hover{color:#ccc}.dark .career__subtitle{color:#a1a19b}.dark .career__title{color:#e8e8e8}.dark .career__resume-text{color:#aaa}.dark .career__resume-btn{background:#1a1a1a;color:#f0f0f0;border-color:#a040f066}.dark .career__resume-btn:hover{border-color:#a040f0cc;background:#1a1a1a}.dark .career__resume-icon{color:#888}.dark .experience__tabs{background:#2a3541}.dark .experience__tab{color:#9ca3af}.dark .experience__tab:hover:not(.experience__tab--active){color:#d1d5db}.dark .experience__tab--active{background:#0a0f18;color:#fff}.dark .experience__timeline{border-left-color:#ffffff1f}.dark .experience__icon{background:#1a1a1a;border-color:#ffffff26}.dark .experience__icon--edu{background:#222;border-color:#ffffff1f}.dark .experience__title{color:#fff}.dark .experience__dates{color:#aaa}.dark .experience__role,.dark .experience__bullets{color:#b0b0b0}.dark .experience__project-btn{background:#2a2a2a;color:#e8e8e8;border-color:#ffffff26}.dark .experience__project-btn:hover{background:#333;border-color:#ffffff40}.dark .skills__subtitle{color:#a1a19b}.dark .skills__title{color:#e8e8e8}.dark .skills__link{background:#2d1b4e;border-color:#ffffff40;color:#fff}.dark .skills__link:hover{border-color:#ffffff80;background:#3d2860;color:#fff}.dark .projects__subtitle{color:#a1a19b}.dark .projects__title,.dark .projects__card-title{color:#e8e8e8}.dark .projects__card-subtext{color:#a1a19b}.dark .projects__link{color:#fff;border-color:#ffffff40;background:#2d1b4e}.dark .projects__link:hover{border-color:#ffffff80;background:#3d2860;color:#fff}.dark .projects__dot{background:#3d2860;border:1px solid rgba(255,255,255,.15)}.dark .projects__dot:hover{background:#5b4d7a}.dark .projects__dot--active{background:#a78bfa;border-color:#a78bfa99}.dark .projects__tech-footer{background:#2d1b4e;border-top-color:#ffffff40}.dark .projects__tech-text{color:#e8e8e8}.dark .projects__nav{background:#2d1b4e;border-color:#ffffff40;color:#fff}.dark .projects__nav:hover{border-color:#ffffff80;background:#3d2860;color:#fff}.dark .experience:before,.dark .projects:before{background-image:linear-gradient(to bottom,transparent 0%,rgba(255,255,255,.06) 20%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.06) 80%,transparent 100%),linear-gradient(to bottom,transparent 0%,rgba(255,255,255,.06) 20%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.06) 80%,transparent 100%)}.dark .experience:after,.dark .projects:after{background-image:linear-gradient(to right,transparent 0%,rgba(255,255,255,.06) 20%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.06) 80%,transparent 100%),linear-gradient(to right,transparent 0%,rgba(255,255,255,.06) 20%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.06) 80%,transparent 100%)}.dark .header{background:#0006}.dark .header__dark-btn{color:#ffffffd9}.dark .header__dark-btn:hover{background:#ffffff1a;color:#fff}.dark .header__btn{color:#ffffffd9}.dark .header__btn:hover{background:#ffffff1a;color:#fff}.dark .header:after{background:linear-gradient(to right,transparent 0%,rgba(255,255,255,.06) 15%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.06) 85%,transparent 100%)}.dark .hero:after,.dark .intro:after{background-image:linear-gradient(to bottom,transparent 0%,rgba(255,255,255,.06) 15%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.06) 85%,transparent 100%),linear-gradient(to bottom,transparent 0%,rgba(255,255,255,.06) 15%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.06) 85%,transparent 100%),linear-gradient(to right,transparent 0%,rgba(255,255,255,.06) 15%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.06) 85%,transparent 100%)}#root{max-width:1280px;margin:0 auto;padding:0;text-align:center;box-sizing:border-box;width:100%}@media(min-width:640px){#root{padding:0 1rem}}@media(min-width:1024px){#root{padding:0}}@media(min-width:1280px){#root{padding:0}}.hide-mobile{display:none!important}@media(min-width:640px){.hide-mobile{display:initial!important}.hide-desktop{display:none!important}}@media(max-width:639px){.projects__image-wrap .projects__tech-footer,.projects__image-wrap:hover .projects__tech-footer,.projects__image-wrap:active .projects__tech-footer{transform:translateY(0)!important}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media print{.header,.hero-cta__btn{display:none!important}body{background:#fff!important;color:#000!important}}.react-activity-calendar__tooltip{width:max-content;max-width:calc(100vw - 20px);padding:.2em .5em;border-radius:.25em;background-color:#1a1a1a;color:#f0f0f0;font-size:13px}.react-activity-calendar__tooltip .react-activity-calendar__tooltip-arrow{fill:#1a1a1a}.react-activity-calendar__tooltip[data-color-scheme=dark]{background-color:#f0f0f0;color:#0f0f0f}.react-activity-calendar__tooltip[data-color-scheme=dark] .react-activity-calendar__tooltip-arrow{fill:#f0f0f0}
