:root{--color-bg:#0a0e17;--color-bg-elevated:#111827;--color-bg-card:#151d2e;--color-border:#3b82f61f;--color-border-hover:#3b82f659;--color-text:#e2e8f0;--color-text-muted:#94a3b8;--color-text-subtle:#64748b;--color-accent:#3b82f6;--color-accent-light:#60a5fa;--color-accent-glow:#3b82f640;--color-skill-known:#8fbc9a;--color-skill-known-bg:#8fbc9a1a;--color-skill-known-border:#8fbc9a38;--color-skill-learning:#d4a574;--color-skill-learning-bg:#d4a5741a;--color-skill-learning-border:#d4a57438;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-full:9999px;--shadow-card:0 4px 24px #0000004d;--shadow-glow:0 0 40px var(--color-accent-glow);--transition:.3s cubic-bezier(.4, 0, .2, 1);--transition-slow:.6s cubic-bezier(.4, 0, .2, 1);--container-max:1100px;--section-padding:6rem}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:5rem}body{font-family:var(--font-sans);background-color:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}a{color:inherit;text-decoration:none}ul{list-style:none}img{max-width:100%;display:block}strong{color:var(--color-accent-light);font-weight:600}.container{width:100%;max-width:var(--container-max);margin:0 auto;padding:0 1.5rem}.section{padding:var(--section-padding) 0}.btn{border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);border:none;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.75rem;font-size:.9375rem;font-weight:500;display:inline-flex}.btn--primary{background:var(--color-accent);color:#fff}.btn--primary:hover{background:var(--color-accent-light);box-shadow:var(--shadow-glow);transform:translateY(-2px)}.btn--outline{color:var(--color-text);border:1px solid var(--color-border-hover);background:0 0}.btn--outline:hover{border-color:var(--color-accent);color:var(--color-accent-light);transform:translateY(-2px)}.section-heading{text-align:center;opacity:0;transition:opacity var(--transition-slow), transform var(--transition-slow);margin-bottom:3.5rem;transform:translateY(24px)}.section-heading.in-view{opacity:1;transform:translateY(0)}.section-label{text-transform:uppercase;letter-spacing:.12em;color:var(--color-accent);margin-bottom:.75rem;font-size:.8125rem;font-weight:600;display:inline-block}.section-title{letter-spacing:-.02em;margin-bottom:.75rem;font-size:clamp(1.75rem,4vw,2.25rem);font-weight:700}.section-subtitle{color:var(--color-text-muted);max-width:520px;margin:0 auto;font-size:1rem}.navbar{z-index:100;transition:background var(--transition), box-shadow var(--transition), padding var(--transition);padding:1rem 0;position:fixed;top:0;left:0;right:0}.navbar--scrolled{-webkit-backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--color-border);background:#0a0e17d9;padding:.75rem 0}.navbar__inner{justify-content:space-between;align-items:center;display:flex}.navbar__logo{letter-spacing:-.02em;font-size:1.25rem;font-weight:700}.navbar__logo-accent{color:var(--color-accent)}.navbar__links{gap:2rem;display:flex}.navbar__links a{color:var(--color-text-muted);transition:color var(--transition);font-size:.875rem;font-weight:500;position:relative}.navbar__links a:after{content:"";background:var(--color-accent);width:0;height:2px;transition:width var(--transition);position:absolute;bottom:-4px;left:0}.navbar__links a:hover{color:var(--color-text)}.navbar__links a:hover:after{width:100%}.navbar__toggle{cursor:pointer;background:0 0;border:none;flex-direction:column;gap:5px;padding:4px;display:none}.navbar__toggle span{background:var(--color-text);width:22px;height:2px;transition:var(--transition);border-radius:2px;display:block}.navbar__toggle--open span:first-child{transform:rotate(45deg)translate(5px,5px)}.navbar__toggle--open span:nth-child(2){opacity:0}.navbar__toggle--open span:nth-child(3){transform:rotate(-45deg)translate(5px,-5px)}.hero{align-items:center;min-height:100vh;padding-top:5rem;display:flex;position:relative;overflow:hidden}.hero__bg{pointer-events:none;background:radial-gradient(60% 50% at 70% 40%,#3b82f614,#0000),radial-gradient(40% 40% at 20% 80%,#3b82f60d,#0000);position:absolute;inset:0}.hero__content{opacity:0;grid-template-columns:1fr 1fr;align-items:center;gap:4rem;transition:opacity .8s,transform .8s;display:grid;position:relative;transform:translateY(30px)}.hero__content.in-view{opacity:1;transform:translateY(0)}.hero__greeting{color:var(--color-accent);margin-bottom:.5rem;font-size:1rem;font-weight:500}.hero__name{letter-spacing:-.03em;background:linear-gradient(135deg, var(--color-text) 0%, var(--color-accent-light) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:.75rem;font-size:clamp(2.5rem,6vw,3.75rem);font-weight:700;line-height:1.1}.hero__role{color:var(--color-text-muted);margin-bottom:1.25rem;font-size:1.0625rem}.hero__role-separator{color:var(--color-text-subtle)}.hero__tagline{color:var(--color-text-muted);max-width:480px;margin-bottom:2rem;font-size:1.0625rem;line-height:1.7}.hero__actions{flex-wrap:wrap;gap:1rem;display:flex}.hero__photo-wrapper{justify-content:center;display:flex;position:relative}.hero__photo-glow{border-radius:var(--radius-full);background:var(--color-accent);opacity:.12;filter:blur(60px);width:280px;height:280px;animation:4s ease-in-out infinite pulse-glow;position:absolute}@keyframes pulse-glow{0%,to{opacity:.12;transform:scale(1)}50%{opacity:.2;transform:scale(1.05)}}.hero__photo{border-radius:var(--radius-full);background:var(--color-bg-card);border:2px solid var(--color-border-hover);width:280px;height:280px;transition:border-color var(--transition), box-shadow var(--transition);position:relative;overflow:hidden}.hero__photo img{object-fit:cover;object-position:center 20%;width:100%;height:100%}.hero__photo:hover{border-color:var(--color-accent);box-shadow:var(--shadow-glow)}.about__grid{opacity:0;transition:opacity var(--transition-slow), transform var(--transition-slow);grid-template-columns:1.4fr 1fr;align-items:start;gap:3rem;display:grid;transform:translateY(24px)}.about__grid.in-view{opacity:1;transform:translateY(0)}.about__text p{color:var(--color-text-muted);margin-bottom:1.25rem;font-size:1.0125rem;line-height:1.75}.about__text p:last-child{margin-bottom:0}.about__highlights{flex-direction:column;gap:1rem;display:flex}.about__highlight{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition), transform var(--transition);padding:1.25rem 1.5rem}.about__highlight:hover{border-color:var(--color-border-hover);transform:translate(4px)}.about__highlight-value{margin-bottom:.25rem;font-size:1.0625rem;font-weight:600;display:block}.about__highlight-label{color:var(--color-text-subtle);text-transform:uppercase;letter-spacing:.06em;font-size:.8125rem}.skills{background:var(--color-bg-elevated)}.skills__grid{grid-template-columns:repeat(3,1fr);gap:1.5rem;display:grid}.skills__category{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);opacity:0;transition:opacity var(--transition-slow), transform var(--transition-slow), border-color var(--transition);transition-delay:var(--delay,0s);padding:1.75rem;transform:translateY(20px)}.skills__category.in-view{opacity:1;transform:translateY(0)}.skills__category:hover{border-color:var(--color-border-hover)}.skills__category-title{text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent);margin-bottom:1.25rem;font-size:.8125rem;font-weight:600}.skills__list{flex-wrap:wrap;gap:.5rem;display:flex}.skills__item{color:var(--color-text-muted);border-radius:var(--radius-full);border:1px solid var(--color-border);transition:var(--transition);background:#3b82f614;padding:.375rem .875rem;font-size:.875rem;font-weight:500}.skills__item--known{color:var(--color-skill-known);background:var(--color-skill-known-bg);border-color:var(--color-skill-known-border)}.skills__item--known:hover{color:var(--color-skill-known);background:#8fbc9a2e;border-color:#8fbc9a66}.skills__item--learning{color:var(--color-skill-learning);background:var(--color-skill-learning-bg);border-color:var(--color-skill-learning-border)}.skills__item--learning:hover{color:var(--color-skill-learning);background:#d4a5742e;border-color:#d4a57466}.projects__grid{grid-template-columns:repeat(3,1fr);gap:1.5rem;display:grid}.project-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);opacity:0;transition:opacity var(--transition-slow), transform var(--transition-slow), border-color var(--transition), box-shadow var(--transition);transition-delay:var(--delay,0s);flex-direction:column;padding:1.75rem;display:flex;transform:translateY(24px)}.project-card.in-view{opacity:1;transform:translateY(0)}.project-card:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-card);transform:translateY(-4px)}.project-card--placeholder{border-style:dashed}.project-card__header{justify-content:space-between;align-items:center;margin-bottom:1.25rem;display:flex}.project-card__icon{color:var(--color-accent)}.project-card__links{gap:.75rem;display:flex}.project-card__link{color:var(--color-text-subtle);transition:color var(--transition)}.project-card__link:hover{color:var(--color-accent-light)}.project-card__title{margin-bottom:.75rem;font-size:1.125rem;font-weight:600}.project-card__description{color:var(--color-text-muted);flex:1;margin-bottom:1.25rem;font-size:.9375rem;line-height:1.65}.project-card__tags{flex-wrap:wrap;gap:.5rem;margin-top:auto;display:flex}.project-card__tag{color:var(--color-accent-light);border-radius:var(--radius-full);background:#3b82f614;padding:.25rem .625rem;font-size:.75rem;font-weight:500}.contact{background:var(--color-bg-elevated)}.contact__content{text-align:center;opacity:0;max-width:560px;transition:opacity var(--transition-slow), transform var(--transition-slow);margin:0 auto;transform:translateY(24px)}.contact__content.in-view{opacity:1;transform:translateY(0)}.contact__message{color:var(--color-text-muted);margin-bottom:2rem;font-size:1.0625rem;line-height:1.7}.contact__cta{margin-bottom:2.5rem}.contact__socials{flex-wrap:wrap;justify-content:center;gap:1.5rem;display:flex}.contact__social-link{color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:var(--transition);align-items:center;gap:.5rem;padding:.625rem 1rem;font-size:.875rem;font-weight:500;display:flex}.contact__social-link:hover{color:var(--color-accent-light);border-color:var(--color-border-hover);transform:translateY(-2px)}.footer{border-top:1px solid var(--color-border);padding:2rem 0}.footer__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.footer__text{color:var(--color-text-subtle);font-size:.875rem}.footer__back-top{color:var(--color-text-muted);transition:color var(--transition);font-size:.875rem}.footer__back-top:hover{color:var(--color-accent-light)}@media (width<=900px){:root{--section-padding:4.5rem}.hero__content{text-align:center;grid-template-columns:1fr;gap:3rem}.hero__tagline{margin-left:auto;margin-right:auto}.hero__actions{justify-content:center}.hero__photo-wrapper{order:-1}.hero__photo,.hero__photo-glow{width:220px;height:220px}.about__grid{grid-template-columns:1fr}.about__highlights{flex-flow:wrap}.about__highlight{flex:1;min-width:140px}.skills__grid,.projects__grid{grid-template-columns:1fr}}@media (width<=640px){:root{--section-padding:3.5rem}.navbar__toggle{display:flex}.navbar__links{-webkit-backdrop-filter:blur(16px);transition:transform var(--transition);background:#0a0e17f7;flex-direction:column;justify-content:center;align-items:center;gap:2rem;position:fixed;inset:0;transform:translate(100%)}.navbar__links--open{transform:translate(0)}.navbar__links a{font-size:1.25rem}.hero__photo,.hero__photo-glow{width:180px;height:180px}.about__highlights{flex-direction:column}.footer__inner{text-align:center;flex-direction:column}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}html{scroll-behavior:auto}}
