@import url(https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800&display=swap);@import url(https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap);.loading-container{align-items:center;background:var(--color-bg-solid);background-image:radial-gradient(circle at 20% 50%,#2e6b560d 0,#0000 50%),radial-gradient(circle at 80% 80%,#3d8b720d 0,#0000 50%);display:flex;flex-direction:column;height:100vh;justify-content:center;overflow:hidden;position:relative}.loading-container:before{animation:rotate 4s linear infinite;background:conic-gradient(from 0deg,#0000,var(--color-primary),#0000 1turn);content:"";inset:-50%;opacity:.1;position:absolute}.loading-spinner{animation:spin 1s cubic-bezier(.4,0,.2,1) infinite;border:4px solid #2e6b561a;border-radius:50%;border-right:4px solid var(--color-accent);border-top:4px solid var(--color-primary);box-shadow:0 0 20px #2e6b5633,inset 0 0 20px #2e6b561a;height:60px;margin-bottom:1.5rem;position:relative;width:60px;z-index:1}.loading-container p{animation:pulse 2s ease-in-out infinite;color:var(--color-white);font-size:1.2rem;font-weight:500;position:relative;z-index:1}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.scroll-progress-container{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#9ac5b61a;height:4px;left:0;position:fixed;top:0;width:100%;z-index:9999}.scroll-progress-bar{background:linear-gradient(90deg,var(--color-primary) 0,var(--color-accent) 50%,var(--color-primary-light) 100%);box-shadow:0 0 10px #2e6b5680,0 0 20px #2e6b564d;height:100%;position:relative;transition:width .1s ease-out}.scroll-progress-bar:after{animation:shimmer 2s infinite;background:linear-gradient(90deg,#0000,#ffffff80);content:"";height:100%;position:absolute;right:0;top:0;width:20px}@keyframes shimmer{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}.dark-mode-toggle{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border:2px solid #fff3;border-radius:50%;box-shadow:var(--shadow-md);cursor:pointer;display:flex;height:50px;justify-content:center;position:fixed;right:2rem;top:2rem;transition:all .4s cubic-bezier(.4,0,.2,1);width:50px;z-index:9998}.dark-mode-toggle:hover{background:#fff3;box-shadow:var(--shadow-lg);transform:translateY(-3px) scale(1.05)}.toggle-icon{align-items:center;color:var(--color-primary);display:flex;font-size:1.4rem;justify-content:center;transition:all .4s cubic-bezier(.4,0,.2,1)}.toggle-icon.active{color:var(--color-accent);transform:rotate(180deg)}body.dark-mode{--color-bg-solid:#1a1a2e;--color-bg-variant:#16213e;--color-primary:#4a9b7f;--color-primary-variant:#3d8b72;--color-primary-light:#5fb89c;--color-white:#e0e0e0;--color-light:#b0b0b0;--color-accent:#52b693;background:#1a1a2e;background-image:radial-gradient(circle at 20% 50%,#4a9b7f14 0,#0000 50%),radial-gradient(circle at 80% 80%,#52b69314 0,#0000 50%)}body.dark-mode .dark-mode-toggle{background:#4a9b7f33;border-color:#4a9b7f4d}body.dark-mode .contact__option,body.dark-mode .experience__frontend,body.dark-mode .project__item,body.dark-mode input,body.dark-mode nav,body.dark-mode textarea{background:#ffffff0d;border-color:#ffffff1a}body.dark-mode footer{background:linear-gradient(135deg,#16213e,#0f172a)}@media screen and (max-width:600px){.dark-mode-toggle{height:45px;right:1rem;top:1rem;width:45px}.toggle-icon{font-size:1.2rem}}.back-to-top{align-items:center;background:var(--color-primary);border:2px solid #fff3;border-radius:50%;bottom:6rem;box-shadow:var(--shadow-lg);color:#fff;cursor:pointer;display:flex;font-size:1.5rem;height:50px;justify-content:center;opacity:0;position:fixed;right:2rem;transform:translateY(20px);transition:all .4s cubic-bezier(.4,0,.2,1);visibility:hidden;width:50px;z-index:9997}.back-to-top.show{opacity:1;transform:translateY(0);visibility:visible}.back-to-top:hover{background:var(--color-primary-variant);box-shadow:var(--shadow-xl);transform:translateY(-5px)}.back-to-top:active{transform:translateY(-2px)}.back-to-top.show{animation:pulse 2s infinite}@keyframes pulse{0%,to{box-shadow:var(--shadow-lg),0 0 0 0 #2e6b56b3}50%{box-shadow:var(--shadow-lg),0 0 0 10px #2e6b5600}}body.dark-mode .back-to-top{background:var(--color-primary);border-color:#ffffff4d}@media screen and (max-width:600px){.back-to-top{bottom:5rem;font-size:1.3rem;height:45px;right:1rem;width:45px}}.cursor-glow{background:radial-gradient(circle,#2e6b5614 0,#3d8b720a 30%,#0000 70%);border-radius:50%;height:500px;left:0;mix-blend-mode:multiply;pointer-events:none;position:fixed;top:0;width:500px;will-change:transform;z-index:1}body.dark-mode .cursor-glow{background:radial-gradient(circle,#4a9b7f1f 0,#52b6930f 30%,#0000 70%);mix-blend-mode:screen}@media (hover:none) and (pointer:coarse){.cursor-glow{display:none}}@media (prefers-reduced-motion:reduce){.cursor-glow{display:none}}nav{animation:slideUp .6s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:#2e6b5626;border:2px solid #fff3;border-radius:3rem;bottom:2rem;box-shadow:0 8px 32px #2e6b5633,inset 0 1px 0 #ffffff4d;display:flex;gap:.8rem;left:50%;padding:.8rem 1.8rem;position:fixed;transform:translateX(-50%);transition:all .4s cubic-bezier(.4,0,.2,1);width:-webkit-max-content;width:max-content;z-index:100}nav:before{background:linear-gradient(135deg,var(--color-primary-light),var(--color-accent));border-radius:3rem;content:"";filter:blur(10px);inset:-2px;opacity:0;position:absolute;transition:opacity .4s ease;z-index:-1}nav:hover:before{opacity:.3}nav:hover{box-shadow:0 12px 40px #2e6b564d,inset 0 1px 0 #fff6;transform:translateX(-50%) translateY(-3px)}nav a,nav button{background:#0000;border:none;border-radius:50%;color:var(--color-light);cursor:pointer;display:flex;font-size:1.15rem;overflow:hidden;padding:1rem;position:relative;transition:all .4s cubic-bezier(.4,0,.2,1)}nav a:after,nav button:after{background:#ffffff1a;border-radius:50%;content:"";inset:0;position:absolute;transform:scale(0);transition:transform .3s cubic-bezier(.4,0,.2,1)}nav a:hover:after,nav button:hover:after{transform:scale(1)}nav a:hover,nav button:hover{color:var(--color-primary);transform:translateY(-4px) scale(1.1)}nav a.active,nav button.active{background:var(--color-primary);box-shadow:0 4px 16px #2e6b5666,inset 0 1px 0 #fff3;color:#fff}nav a.active:before,nav button.active:before{animation:ping 2s cubic-bezier(0,0,.2,1) infinite;background:#fff;border-radius:50%;bottom:-.6rem;box-shadow:0 2px 8px #ffffff80;content:"";height:8px;left:50%;position:absolute;transform:translateX(-50%);width:8px}@keyframes ping{0%,to{opacity:1;transform:translateX(-50%) scale(1)}50%{opacity:.5;transform:translateX(-50%) scale(1.3)}}@keyframes slideUp{0%{opacity:0;transform:translate(-50%,20px)}to{opacity:1;transform:translate(-50%)}}@media screen and (max-width:1024px){nav{bottom:1.5rem;gap:.7rem;padding:.7rem 1.6rem}nav a,nav button{font-size:1.08rem;padding:.85rem}}@media screen and (max-width:768px){nav{bottom:1.2rem;gap:.6rem;padding:.6rem 1.4rem}nav a,nav button{font-size:1.05rem;padding:.8rem}}@media screen and (max-width:600px){nav{border-radius:2.5rem;bottom:1rem;gap:.4rem;padding:.5rem 1rem}nav a,nav button{font-size:1rem;padding:.7rem}nav a.active:before,nav button.active:before{bottom:-.4rem;height:6px;width:6px}}@media screen and (max-width:400px){nav{gap:.3rem;padding:.4rem .8rem}nav a,nav button{font-size:.95rem;padding:.6rem}nav a.active:before,nav button.active:before{bottom:-.3rem;height:5px;width:5px}}*{border:0;box-sizing:border-box;list-style:none;margin:0;outline:0;padding:0;text-decoration:none}:root{--color-bg:linear-gradient(135deg,#e8f5f1,#d4e9e1 50%,#c8e4da);--color-bg-solid:#e8f5f1;--color-bg-variant:#9ac5b6;--color-primary:#2e6b56;--color-primary-variant:#1e4a39;--color-primary-light:#4a8870;--color-white:#3d4543;--color-light:#4a5751;--color-accent:#3d8b72;--shadow-sm:0 2px 8px #2e6b5614;--shadow-md:0 4px 16px #2e6b561f;--shadow-lg:0 8px 32px #2e6b5629;--shadow-xl:0 16px 48px #2e6b563d;--glass-bg:#ffffff26;--glass-border:#ffffff40;--glass-blur:blur(12px);--transition:all 400ms cubic-bezier(0.4,0,0.2,1);--transition-fast:all 200ms cubic-bezier(0.4,0,0.2,1);--transition-slow:all 600ms cubic-bezier(0.4,0,0.2,1)}html{scroll-behavior:smooth;scroll-padding-top:2rem}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:#e8f5f1;background:var(--color-bg-solid)}::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#2e6b56,#3d8b72);background:linear-gradient(180deg,var(--color-primary),var(--color-accent));border:2px solid #e8f5f1;border:2px solid var(--color-bg-solid);border-radius:10px;-webkit-transition:all .4s cubic-bezier(.4,0,.2,1);transition:all .4s cubic-bezier(.4,0,.2,1);-webkit-transition:var(--transition);transition:var(--transition)}::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#1e4a39,#2e6b56);background:linear-gradient(180deg,var(--color-primary-variant),var(--color-primary))}body{background:#e8f5f1;background:var(--color-bg-solid);background-image:radial-gradient(circle at 20% 50%,#2e6b560d 0,#0000 50%),radial-gradient(circle at 80% 80%,#3d8b720d 0,#0000 50%);color:#3d4543;color:var(--color-white);font-family:Poppins,sans-serif;line-height:1.7;overflow-x:hidden;position:relative}h1,h2,h3,h4,h5{font-weight:500}h1{font-size:2.5rem}section{animation:fadeInSection .8s ease-out;margin-top:8rem;position:relative}section>h2,section>h5{color:#4a5751;color:var(--color-light);text-align:center}section>h2{color:#2e6b56;color:var(--color-primary);display:inline-block;font-size:clamp(2rem,4vw,2.5rem);font-weight:700;letter-spacing:-.5px;margin-bottom:3rem;position:relative;width:100%}section>h2:after{background:linear-gradient(90deg,#0000,#2e6b56,#3d8b72,#0000);background:linear-gradient(90deg,#0000,var(--color-primary),var(--color-accent),#0000);border-radius:2px;bottom:-.8rem;content:"";height:4px;left:50%;position:absolute;transform:translateX(-50%);width:80px}section>h5{font-size:clamp(.9rem,1.5vw,1rem);font-weight:500;letter-spacing:2px;margin-bottom:.5rem;opacity:.8;text-transform:uppercase}@keyframes fadeInSection{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.text-light{color:#4a5751;color:var(--color-light)}a{color:#2e6b56;color:var(--color-primary);transition:all .4s cubic-bezier(.4,0,.2,1);transition:var(--transition)}a:hover{color:#3d8b72;color:var(--color-accent)}.btn{align-items:center;border:2px solid #2e6b56;border:2px solid var(--color-primary);border-radius:12px;box-shadow:0 2px 8px #2e6b5614;box-shadow:var(--shadow-sm);color:#2e6b56;color:var(--color-primary);cursor:pointer;display:inline-flex;font-family:inherit;font-size:.95rem;font-weight:500;gap:.5rem;justify-content:center;overflow:hidden;padding:.85rem 1.8rem;position:relative;width:-webkit-max-content;width:max-content;z-index:1}.btn,.btn:before{transition:all .4s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.btn:before{background:#2e6b56;background:var(--color-primary);content:"";height:100%;left:-100%;position:absolute;top:0;width:100%;z-index:-1}.btn:hover:before{left:0}.btn:hover{border-color:#2e6b56;border-color:var(--color-primary);box-shadow:0 4px 16px #2e6b561f;box-shadow:var(--shadow-md);color:#fff;transform:translateY(-2px)}.btn-primary{background:#2e6b56;background:var(--color-primary);color:#fff}.btn-primary:before,.btn-primary:hover{background:#1e4a39;background:var(--color-primary-variant)}.btn-primary:hover{color:#fff}img{display:block;object-fit:cover;width:100%}@keyframes scrollReveal{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}a,button{-webkit-tap-highlight-color:transparent}::selection{background:#2e6b56;background:var(--color-primary);color:#fff}::-moz-selection{background:#2e6b56;background:var(--color-primary);color:#fff}:focus-visible{border-radius:4px;outline:2px solid #2e6b56;outline:2px solid var(--color-primary);outline-offset:3px}@media screen and (max-width:1024px){.container{width:86%;width:var(--container-width-md)}section{margin-top:6rem}h1,section>h2{font-size:2rem}section>h2{margin-bottom:2.5rem}}@media screen and (max-width:600px){.container{width:90%;width:var(--container-width-sm)}section{margin-bottom:2rem;margin-top:4rem}h1{font-size:1.8rem}section>h2{font-size:1.6rem;margin-bottom:2rem}section>h2:after{height:3px;width:60px}.btn{font-size:.9rem;padding:.8rem 1.5rem}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}:root{--container-width-lg:75%;--container-width-md:86%;--container-width-sm:90%}.container{margin:0 auto;width:75%;width:var(--container-width-lg)}h1{font-size:clamp(2.5rem,5vw,3.5rem)}h2{font-size:clamp(1.8rem,4vw,2.5rem)}h3{font-size:clamp(1.2rem,3vw,1.8rem)}p{font-size:clamp(.9rem,2vw,1rem);line-height:1.7}@media screen and (max-width:1024px){.container{width:86%;width:var(--container-width-md)}section{height:auto;margin-top:6rem}}@media screen and (max-width:600px){.container{width:90%;width:var(--container-width-sm)}section>h2{margin-bottom:2rem}}@media screen and (max-width:768px){nav{bottom:1.5rem;gap:.6rem;padding:.6rem 1.5rem}nav a,nav button{font-size:1.05rem;padding:.85rem}}@media screen and (max-width:600px){nav{bottom:1rem;gap:.4rem;padding:.5rem 1rem}nav a,nav button{font-size:1rem;padding:.7rem}}@media screen and (max-width:1024px){header{height:auto;min-height:100vh;padding-top:3rem}.header__container{gap:1.2rem;text-align:center}.header__container h1{font-size:clamp(2rem,5vw,3rem)}.me{gap:1.5rem;margin:1.5rem auto;width:clamp(180px,30vw,250px)}}@media screen and (max-width:600px){header{padding-top:2rem}.header__container{gap:1rem;padding-bottom:3rem}.header__container h1{font-size:clamp(1.8rem,6vw,2.5rem)}.header__container h5{font-size:clamp(.9rem,2vw,1rem)}.header__socials{display:flex;flex-direction:row;gap:1rem;justify-content:center;margin-top:1.5rem;position:static}.header__socials:after,.scroll__down{display:none}.me{margin:1rem auto;width:clamp(150px,50vw,200px)}.cta{flex-direction:column;gap:1rem;width:100%}.cta .btn{max-width:280px;width:100%}}@media screen and (max-width:1024px){.about__container{gap:2rem;grid-template-columns:1fr}.about__me{margin:0 auto 2rem;width:50%}}@media screen and (max-width:600px){.about__content{text-align:left}.about__me{width:70%}.about__cards{gap:1rem;grid-template-columns:1fr}.about__content p{font-size:.95rem}}@media screen and (max-width:1024px){.skills__container{gap:1.5rem;grid-template-columns:1fr 1fr}}@media screen and (max-width:600px){.skills__container{gap:1rem;grid-template-columns:1fr}.experience__frontend{padding:1.8rem}.experience__content{gap:1.5rem}}@media screen and (max-width:1024px){.projects__container{gap:2rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.project__item{padding:2rem}}@media screen and (max-width:600px){.projects__container{gap:1.5rem;grid-template-columns:1fr}.project__item{padding:1.5rem}.project__header h3{font-size:1.1rem}.project__description,.project__detail-item{font-size:.9rem}}@media screen and (max-width:1024px){.contact__container{gap:2rem;grid-template-columns:1fr}}@media screen and (max-width:600px){.contact__options{gap:1.2rem}.contact__option{padding:1.2rem}form{margin-top:2rem}input,textarea{font-size:.95rem;padding:1.2rem}}@media screen and (max-width:1024px){footer{padding:3rem 0 1.5rem}.peralinks{gap:2rem}}@media screen and (max-width:600px){footer{padding:2.5rem 0 1.5rem}.footer__logo{font-size:2rem;margin-bottom:1.5rem}.peralinks{flex-direction:column;gap:1.2rem}.footer__socials{gap:.8rem;margin-bottom:3rem}.footer__socials a{padding:.85rem}.footer__copyright{font-size:.85rem;padding:0 1rem}}.section__padding{padding:clamp(3rem,5vw,6rem) 0}.section__margin{margin:clamp(3rem,5vw,6rem) 0}.text-align-center-mobile{@media screen and (max-width:600px){text-align:center}}img{height:auto;max-width:100%}@media screen and (max-height:600px) and (orientation:landscape){header{height:auto;min-height:100vh;padding-top:2rem}.header__container{gap:.8rem}.me{margin:1rem auto;width:150px}section{margin-top:4rem}}@media screen and (max-width:400px){.container{width:95%}section>h2{font-size:1.5rem;margin-bottom:1.5rem}.btn{font-size:.9rem;padding:.75rem 1.5rem}nav{gap:.3rem;padding:.4rem .8rem}nav a,nav button{font-size:.95rem;padding:.6rem}}@media (hover:none) and (pointer:coarse){.btn,.contact__option,.project__header,nav a,nav button{min-height:44px;min-width:44px}}