.fade-in-up{opacity:0;transform:translateY(30px);transition:opacity .6s ease,transform .6s ease}.fade-in-up.visible{opacity:1;transform:translateY(0)}.fade-in-down{opacity:0;transform:translateY(-30px);transition:opacity .6s ease,transform .6s ease}.fade-in-down.visible{opacity:1;transform:translateY(0)}.fade-in-left{opacity:0;transform:translateX(-30px);transition:opacity .6s ease,transform .6s ease}.fade-in-left.visible{opacity:1;transform:translateX(0)}.fade-in-right{opacity:0;transform:translateX(30px);transition:opacity .6s ease,transform .6s ease}.fade-in-right.visible{opacity:1;transform:translateX(0)}.fade-in-scale{opacity:0;transform:scale(.8);transition:opacity .6s ease,transform .6s ease}.fade-in-scale.visible{opacity:1;transform:scale(1)}.fade-in-rotate{opacity:0;transform:translateY(30px) rotate(10deg);transition:opacity .8s ease,transform .8s ease}.fade-in-rotate.visible{opacity:1;transform:translateY(0) rotate(0deg)}.fade-in-blur{opacity:0;filter:blur(5px);transform:translateY(20px);transition:opacity .6s ease,filter .6s ease,transform .6s ease}.fade-in-blur.visible{opacity:1;filter:blur(0);transform:translateY(0)}.fade-in-delay-1{transition-delay:.1s}.fade-in-delay-2{transition-delay:.2s}.fade-in-delay-3{transition-delay:.3s}.fade-in-delay-4{transition-delay:.4s}.fade-in-delay-5{transition-delay:.5s}.fade-in-stagger>*{opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .6s ease}.fade-in-stagger.visible>:first-child{transition-delay:.1s;opacity:1;transform:translateY(0)}.fade-in-stagger.visible>:nth-child(2){transition-delay:.2s;opacity:1;transform:translateY(0)}.fade-in-stagger.visible>:nth-child(3){transition-delay:.3s;opacity:1;transform:translateY(0)}.fade-in-stagger.visible>:nth-child(4){transition-delay:.4s;opacity:1;transform:translateY(0)}.fade-in-stagger.visible>:nth-child(5){transition-delay:.5s;opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.fade-in,.fade-in-blur,.fade-in-down,.fade-in-left,.fade-in-right,.fade-in-rotate,.fade-in-scale,.fade-in-up{transition:none;opacity:1;transform:none;filter:none}}@import url("https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap");@import url("https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap");@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Space+Mono:wght@400;700&display=swap");:root{--sage-green:#9caf88;--soft-blue:#a8c8e1;--warm-cream:#f8f6f0;--charcoal:#2c3e50;--dust-blue:#7b9aaf;--light-sage:#e8f0e6;--accent-coral:#e07a5f;--neutral-grey:#95a5a6;--deep-sage:#5a6b4f;--white:#fff;--black:#1a1a1a}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,sans-serif;background:linear-gradient(135deg,var(--warm-cream) 0,var(--light-sage) 100%);color:var(--charcoal);overflow-x:hidden;line-height:1.6}.relative{position:relative}.flex{display:flex}.column{flex-direction:column}.row{flex-direction:row}.color-white{color:#fff!important}.color-black{color:#000!important}.center{display:flex;justify-content:center;align-items:center}.full{width:100vw;height:100vh}.container{max-width:1400px;margin:0 auto;padding:0 2rem}.btn{padding:1rem 2rem;border:none;border-radius:50px;font-weight:600;text-decoration:none;transition:all .3s ease;cursor:pointer;display:inline-flex;align-items:center;gap:.5rem}.btn-primary{background:var(--sage-green);color:var(--white)}.btn-primary:hover{background:var(--deep-sage);transform:translateY(-2px);box-shadow:0 10px 25px hsla(89,20%,61%,.3)}.btn-secondary{background:transparent;color:var(--charcoal);border:2px solid var(--sage-green)}.btn-secondary:hover{background:var(--sage-green);color:var(--white)}.floating-element{position:absolute;animation:float 6s ease-in-out infinite}.floating-element:first-child{top:10%;right:10%;animation-delay:0s}.floating-element:nth-child(2){bottom:20%;left:5%;animation-delay:2s}.floating-element:nth-child(3){top:50%;right:5%;animation-delay:4s}.geometric-shape{width:60px;height:60px;background:var(--soft-blue);opacity:.7;border-radius:10px}.geometric-shape.circle{border-radius:50%;background:var(--accent-coral)}.geometric-shape.triangle{width:0;height:0;background:transparent;border-left:30px solid transparent;border-right:30px solid transparent;border-bottom:52px solid var(--sage-green)}@keyframes float{0%,to{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-20px) rotate(180deg)}}.skills-section{padding:8rem 0;background:var(--white);position:relative}.section-title{text-align:center;font-size:3rem;font-weight:700;color:var(--charcoal);margin-bottom:4rem}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem}.skill-card{background:linear-gradient(135deg,var(--light-sage),var(--warm-cream));border-radius:20px;padding:2rem;text-align:center;transition:transform .3s ease,box-shadow .3s ease}.skill-card:hover{transform:translateY(-10px);box-shadow:0 25px 50px hsla(89,20%,61%,.2)}.skill-card h3{color:var(--deep-sage);font-size:1.5rem;margin-bottom:1rem}.skill-tags{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.skill-tag{background:var(--sage-green);color:var(--white);padding:.5rem 1rem;border-radius:25px;font-size:.9rem;font-weight:500}footer{background:var(--black);color:var(--neutral-grey);text-align:center;padding:2rem 0}@media (max-width:768px){.nav-links{display:none}}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--warm-cream)}::-webkit-scrollbar-thumb{background:var(--sage-green);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--deep-sage)}.loading-overlay{display:block;position:fixed;top:0;left:0;width:100%;height:100%;background:var(--warm-cream);display:flex;align-items:center;justify-content:center;opacity:.5;z-index:9999;transition:opacity .5s ease}.loading-overlay.hidden{opacity:0;display:none;pointer-events:none}.loader{width:50px;height:50px;border-top:3px solid var(--light-sage);border:3px solid var(--light-sage);border-top-color:var(--sage-green);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}html{scroll-behavior:smooth}.fade-in{opacity:0;transform:translateY(30px);transition:opacity .6s ease,transform .6s ease}.fade-in.visible{opacity:1;transform:translateY(0)}