*,:after,:before{box-sizing:border-box}:root{--navy:#0a2e5c;--blue:#3D52A0;--ease-out:cubic-bezier(0.22,0.61,0.36,1);--ease-spring:cubic-bezier(0.34,1.56,0.64,1)}html{scroll-behavior:smooth;scroll-padding-top:72px}body{margin:0;padding:0}::selection{background:var(--blue);color:white}.scroll-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:1100;background:linear-gradient(90deg,var(--blue),#ffffff);box-shadow:0 0 8px rgba(255,255,255,.35);transform:scaleX(0);transform-origin:left center;pointer-events:none;will-change:transform}.header-wrap{transition:margin-bottom .35s var(--ease-out)}.header-wrap.is-scrolled{margin-bottom:12px}.site-header{background-color:#0a2e5c;color:white;display:flex;align-items:center;padding:14px 40px;box-shadow:0 2px 16px rgba(0,0,0,.3);transition:padding .35s var(--ease-out),background-color .35s ease,box-shadow .35s ease}.header-wrap.is-scrolled .site-header{padding:8px 40px;background-color:rgba(10,46,92,.88);-webkit-backdrop-filter:saturate(160%) blur(12px);backdrop-filter:saturate(160%) blur(12px);box-shadow:0 6px 24px rgba(10,46,92,.35)}.site-logo{transform-origin:left center;transition:transform .35s var(--ease-out)}.header-wrap.is-scrolled .site-logo{transform:scale(.85)}.page-main{padding:64px 48px;text-align:center;max-width:1200px;margin:0 auto}.section-heading{font-size:2.8rem;font-weight:700;color:#0a2e5c;margin-bottom:40px;padding-bottom:15px;display:inline-block;position:relative}.section-heading:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:#3D52A0;transform-origin:center}.about-flex{display:flex;align-items:center;gap:52px;max-width:960px;margin:0 auto}.about-text{font-size:1.1rem;line-height:1.85;color:#333;margin:0;text-align:left}.profile-photo{width:220px;height:220px;object-fit:cover;border-radius:50%;border:4px solid #3d52a0;box-shadow:0 8px 28px rgba(10,46,92,.25);display:block;transition:transform .5s var(--ease-out),box-shadow .5s var(--ease-out)}.profile-photo:hover{transform:scale(1.03);box-shadow:0 14px 40px rgba(10,46,92,.32)}.skill-grid{display:grid;grid-template-columns:repeat(3,180px);grid-gap:24px;gap:24px;justify-content:center;margin:0 auto}.nav-desktop{display:flex;gap:28px;align-items:center}.nav-link{color:white;text-decoration:none;font-style:italic;font-size:1rem;opacity:.82;transition:opacity .2s;position:relative;white-space:nowrap}.nav-link:after{content:"";position:absolute;bottom:-3px;left:0;width:0;height:2px;background:white;transition:width .22s ease}.nav-link.is-active,.nav-link:hover{opacity:1}.nav-link.is-active:after,.nav-link:hover:after{width:100%}.hamburger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:6px}.hamburger span{display:block;width:24px;height:2px;background:white;border-radius:2px;transition:transform .3s var(--ease-out),opacity .2s ease}.hamburger.is-open span:first-child{transform:translateY(7px) rotate(45deg)}.hamburger.is-open span:nth-child(2){opacity:0;transform:scaleX(0)}.hamburger.is-open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.mobile-menu{display:none;flex-direction:column;background:#0a2e5c;padding:12px 28px 20px;gap:4px;box-shadow:0 6px 20px rgba(0,0,0,.25)}.mobile-menu .nav-link{font-size:1.05rem;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.12)}.project-card{display:block;width:240px;flex:0 0 240px;border-radius:12px;overflow:hidden;text-decoration:none;cursor:pointer;background:#ffffff;box-shadow:0 4px 18px rgba(0,0,0,.09);transition:transform .35s var(--ease-out),box-shadow .35s var(--ease-out)}.card-media{width:100%;padding-top:66.66%;position:relative;overflow:hidden}.card-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease-out)}.card-media:after{content:"";inset:0;background:linear-gradient(0deg,rgba(10,46,92,.78),rgba(10,46,92,0) 65%);transition:opacity .35s ease}.card-cta,.card-media:after{position:absolute;opacity:0;pointer-events:none}.card-cta{left:50%;bottom:14px;z-index:1;padding:6px 16px;font-size:14px;letter-spacing:.4px;white-space:nowrap;border:1.5px solid rgba(255,255,255,.75);border-radius:999px;background:rgba(255,255,255,.1);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transform:translate(-50%,14px);transition:opacity .35s ease,transform .4s var(--ease-out)}.card-cta,.card-label{font-weight:600;color:white}.card-label{padding:12px 10px;background-color:#3D52A0;text-align:center;font-size:15px;letter-spacing:.2px}.project-card:focus-visible,.project-card:hover{transform:translateY(-8px);box-shadow:0 18px 40px rgba(10,46,92,.22)}.project-card:focus-visible{outline:3px solid #3D52A0;outline-offset:3px}.project-card:focus-visible .card-image,.project-card:hover .card-image{transform:scale(1.08)}.project-card:focus-visible .card-media:after,.project-card:hover .card-media:after{opacity:1}.project-card:focus-visible .card-cta,.project-card:hover .card-cta{opacity:1;transform:translate(-50%)}.skill-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 16px;border:2px solid #dde3f0;border-radius:16px;background:#ffffff;box-shadow:0 4px 14px rgba(0,0,0,.06);transition:transform .3s var(--ease-out),box-shadow .3s ease,border-color .3s ease;cursor:default}.skill-card:hover{transform:translateY(-5px);box-shadow:0 10px 28px rgba(61,82,160,.18);border-color:#3D52A0}.skill-card svg{transition:transform .45s var(--ease-spring)}.skill-card:hover svg{transform:scale(1.15) rotate(-6deg)}.connect-btn{position:relative;overflow:hidden;isolation:isolate;display:inline-flex;align-items:center;gap:9px;margin:8px;padding:14px 28px;font-size:1rem;font-family:Inter,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-weight:600;color:white;border:none;border-radius:8px;cursor:pointer;letter-spacing:.3px;box-shadow:0 4px 14px rgba(0,0,0,.18);transition:transform .25s var(--ease-out),box-shadow .25s ease,filter .25s ease}.connect-btn:before{content:"";position:absolute;top:0;left:0;width:60%;height:100%;background:linear-gradient(110deg,transparent 20%,rgba(255,255,255,.35) 50%,transparent 80%);transform:translateX(-150%) skewX(-20deg);pointer-events:none}.connect-btn:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(0,0,0,.22);filter:brightness(1.08)}.connect-btn:hover:before{transform:translateX(260%) skewX(-20deg);transition:transform .75s ease}.connect-btn:active{transform:translateY(-1px)}.connect-btn:focus-visible{outline:3px solid #3D52A0;outline-offset:3px}.hero{position:relative;overflow:hidden;isolation:isolate}.hero>:not(.hero-bg):not(.scroll-indicator){position:relative;z-index:1}.hero-bg{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}.hero-orb{position:absolute;border-radius:50%;background:radial-gradient(circle,rgba(61,82,160,.75) 0,rgba(61,82,160,0) 70%);will-change:transform}.hero-orb-1{width:720px;height:720px;top:-260px;left:-220px;animation:drift-1 26s ease-in-out infinite alternate}.hero-orb-2{width:640px;height:640px;bottom:-280px;right:-200px;opacity:.85;animation:drift-2 32s ease-in-out infinite alternate}.hero-orb-3{width:420px;height:420px;top:35%;left:55%;opacity:.45;animation:drift-3 22s ease-in-out infinite alternate}.hero-grid{position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.13) 1px,transparent 0);background-size:28px 28px;-webkit-mask-image:radial-gradient(ellipse at center,#000 15%,transparent 72%);mask-image:radial-gradient(ellipse at center,#000 15%,transparent 72%)}@keyframes drift-1{to{transform:translate3d(160px,110px,0) scale(1.12)}}@keyframes drift-2{to{transform:translate3d(-140px,-120px,0) scale(1.08)}}@keyframes drift-3{to{transform:translate3d(-180px,60px,0) scale(.9)}}@keyframes fade-up{0%{opacity:0;translate:0 18px}}@keyframes reveal-up{0%{opacity:0;translate:0 28px}}@keyframes line-grow{0%{transform:scaleX(0)}}@keyframes fade-in{0%{opacity:0}}.hero-intro{animation:fade-up .7s var(--ease-out) .1s both}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.cursor{display:inline-block;margin-left:2px;font-weight:300;animation:blink 1s step-end infinite}.hero-cta{margin-top:52px;padding:14px 40px;font-size:1rem;font-family:Inter,Segoe UI,sans-serif;font-weight:600;color:white;border:2px solid rgba(255,255,255,.5);border-radius:8px;text-decoration:none;letter-spacing:.5px;opacity:0;translate:0 16px;pointer-events:none;transition:background .25s ease,border-color .25s ease,box-shadow .25s ease,transform .25s var(--ease-out),opacity .8s var(--ease-out),translate .8s var(--ease-out)}.hero-cta.is-shown{opacity:1;translate:none;pointer-events:auto}.hero-cta:hover{background:rgba(255,255,255,.12);border-color:white;transform:translateY(-2px);box-shadow:0 10px 28px rgba(0,0,0,.25)}.hero-cta:focus-visible{outline:2px solid white;outline-offset:4px}.cta-arrow{display:inline-block;animation:arrow-bounce 2s ease-in-out infinite}@keyframes arrow-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}.scroll-indicator{position:absolute;left:50%;bottom:32px;z-index:1;transform:translateX(-50%);transition:opacity .4s ease}.scroll-indicator.is-hidden{opacity:0;pointer-events:none}.scroll-mouse{position:relative;display:block;width:24px;height:38px;border:2px solid rgba(255,255,255,.55);border-radius:14px;animation:fade-in 1s ease 2.4s both}.scroll-wheel{position:absolute;top:7px;left:50%;width:4px;height:8px;margin-left:-2px;border-radius:2px;background:white;animation:scroll-wheel 1.8s ease-in-out infinite}@keyframes scroll-wheel{0%{opacity:0;transform:translateY(-2px)}30%{opacity:1}to{opacity:0;transform:translateY(12px)}}@media (max-height:600px){.scroll-indicator{display:none}}.fade-in-section:not(.is-visible) .reveal-item,.fade-in-section:not(.is-visible) .section-heading{opacity:0}.fade-in-section.is-visible .section-heading{animation:reveal-up .7s var(--ease-out) both}.fade-in-section:not(.is-visible) .section-heading:after{transform:scaleX(0)}.fade-in-section.is-visible .section-heading:after{animation:line-grow .8s var(--ease-out) .3s both}.fade-in-section.is-visible .reveal-item{animation:reveal-up .7s var(--ease-out) both;animation-delay:calc(.2s + var(--i, 0) * 90ms)}@media (max-width:768px){.hamburger{display:flex}.nav-desktop{display:none}.mobile-menu{display:flex;position:absolute;top:100%;left:0;right:0;opacity:0;visibility:hidden;transform:translateY(-10px);transition:opacity .3s ease,transform .35s var(--ease-out),visibility 0s linear .35s}.mobile-menu.open{opacity:1;visibility:visible;transform:none;transition:opacity .3s ease,transform .35s var(--ease-out),visibility 0s}.mobile-menu .nav-link{opacity:0;transform:translateY(-6px);transition:opacity .3s ease,transform .35s var(--ease-out)}.mobile-menu.open .nav-link{opacity:.82;transform:none}.mobile-menu.open .nav-link.is-active,.mobile-menu.open .nav-link:hover{opacity:1}.mobile-menu.open .nav-link:first-child{transition-delay:.06s}.mobile-menu.open .nav-link:nth-child(2){transition-delay:.11s}.mobile-menu.open .nav-link:nth-child(3){transition-delay:.16s}.page-main{padding:40px 20px}.section-heading{font-size:2rem}.about-flex{flex-direction:column;gap:28px}.about-flex,.about-text{text-align:center}.profile-photo{width:170px;height:170px}.skill-grid{grid-template-columns:repeat(2,1fr);width:100%;max-width:400px}.project-card{width:calc(50% - 12px);flex-grow:0;flex-shrink:0;flex-basis:calc(50% - 12px)}.hero-orb-1{width:480px;height:480px}.hero-orb-2{width:420px;height:420px}.hero-orb-3{width:280px;height:280px}}@media (max-width:480px){.project-card{width:100%;flex:0 0 100%}.skill-grid{grid-template-columns:repeat(2,1fr);max-width:320px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}}