@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes gradient-shift{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes springIn{0%{opacity:0;transform:scale(.9)translateY(16px)}70%{transform:scale(1.02)translateY(-2px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes gentlePulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes pageIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes revealDown{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:translateY(0)}}.project-card{background:#fff;border:1px solid #f4f4f5;border-radius:16px;flex-direction:column;transition:border-color .4s cubic-bezier(.16,1,.3,1),box-shadow .4s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1);display:flex;position:relative;overflow:hidden}.project-card:hover{border-color:#7c3aed;transform:translateY(-4px);box-shadow:0 8px 32px -8px #7c3aed40}.project-card:hover .project-card__image--static{opacity:0}.project-card__image-wrapper{background:#fff;border-radius:16px 16px 0 0;justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.project-card__image{width:100%;max-width:100%;height:auto;margin:0 auto;display:block}.project-card__image--static{z-index:2;background:#fff;transition:opacity .4s cubic-bezier(.16,1,.3,1);position:relative}.project-card__image--animated{z-index:1;position:absolute;top:0;left:0}.project-card__badge{letter-spacing:.05em;text-transform:uppercase;z-index:3;border-radius:9999px;padding:4px 16px;font-size:.75rem;font-weight:600;transition:transform .5s cubic-bezier(.16,1,.3,1),opacity .25s cubic-bezier(.16,1,.3,1);position:absolute;top:16px;right:16px}.project-card:hover .project-card__badge{transform:scale(1.05)}.project-card__badge--accent{color:#fff;background:linear-gradient(135deg,#7c3aed 0%,#2563eb 100%)}.project-card__badge--coming{color:#a1a1aa;background:#fff;border:1px solid #f4f4f5}.project-card__body{flex-direction:column;flex:1;gap:16px;padding:24px;display:flex}.project-card__header-row{justify-content:flex-start;align-items:baseline;gap:8px;display:flex}.project-card__title{font-family:var(--font-jost),Georgia,serif;color:#18181b;font-size:clamp(1.25rem,2vw,1.5rem);line-height:1.25}.project-card__date{color:#52525b;white-space:nowrap;flex-shrink:0;font-size:1.0625rem;font-weight:500}.project-card__description{color:#52525b;flex:1;font-size:.875rem;line-height:1.7}.project-card__tags{flex-wrap:wrap;gap:8px;display:flex}.project-card__tags__tag{color:#52525b;background:#f5f5f4;border-radius:9999px;padding:4px 16px;font-size:.75rem;font-weight:500;transition:background .5s cubic-bezier(.16,1,.3,1),color .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1)}.project-card:hover .project-card__tags__tag{color:#7c3aed;background:#7c3aed14;transform:translateY(-1px)}.project-card__footer{justify-content:space-between;align-items:center;padding:0 24px 24px;display:flex}.project-card__cta{color:#7c3aed;align-items:center;gap:8px;font-size:.875rem;font-weight:600;text-decoration:none;transition:gap .5s cubic-bezier(.16,1,.3,1);display:inline-flex}.project-card:hover .project-card__cta{gap:16px}.project-card__cta__arrow{transition:transform .5s cubic-bezier(.16,1,.3,1);display:inline-block}.project-card:hover .project-card__cta__arrow{transform:translate(6px)}
@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes gradient-shift{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes springIn{0%{opacity:0;transform:scale(.9)translateY(16px)}70%{transform:scale(1.02)translateY(-2px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes gentlePulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes pageIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes revealDown{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:translateY(0)}}.home-page__hero{align-items:center;min-height:50vh;padding:72px 0 40px;display:flex;position:relative;overflow:hidden}@media (max-width:768px){.home-page__hero{min-height:auto;padding:88px 0 24px}}.home-page__hero-bg{z-index:0;background:linear-gradient(160deg,#fafaf9 0%,#f8f7ff 50%,#f0f0ff 100%);position:absolute;inset:0;overflow:hidden}.home-page__orb{filter:blur(80px);opacity:.5;border-radius:50%;animation:8s ease-in-out infinite orbFloat;position:absolute}.home-page__orb--1{background:radial-gradient(circle,#7c3aed33,#0000 70%);width:200px;height:200px;animation-delay:0s;top:-10%;right:10%}.home-page__orb--2{background:radial-gradient(circle,#2563eb26,#0000 70%);width:180px;height:180px;animation-delay:-4s;bottom:5%;left:5%}.home-page__orb--3{background:radial-gradient(circle,#7c3aed1f,#0000 70%);width:120px;height:120px;animation-delay:-5s;top:40%;left:40%}.home-page__hero-inner{z-index:2;grid-template-columns:1fr 1fr;align-items:center;gap:64px;max-width:1280px;margin:0 auto;padding:0 32px;display:grid;position:relative}@media (max-width:768px){.home-page__hero-inner{grid-template-columns:1fr;gap:64px}}.home-page__hero-eyebrow{align-items:center;gap:8px;margin-bottom:8px;display:inline-flex}.home-page__eyebrow-line{background:#7c3aed;width:24px;height:1px}.home-page__eyebrow-text{letter-spacing:.1em;text-transform:uppercase;color:#7c3aed;font-size:.75rem;font-weight:600}.home-page__hero-title{font-family:var(--font-jost),Georgia,serif;margin-bottom:8px;line-height:1.05}.home-page__hero-title-line{font-size:clamp(2.25rem,4.5vw,3.75rem);display:block}.home-page__hero-title-line--accent{background:linear-gradient(135deg,#7c3aed 0%,#2563eb 100%);-webkit-text-fill-color:#0000;-webkit-background-clip:text;background-clip:text}.home-page__hero-subtitle{color:#52525b;letter-spacing:.01em;margin-bottom:8px;font-size:clamp(1.1rem,1.5vw,1.35rem);font-weight:500}.home-page__hero-description{color:#52525b;max-width:520px;margin-bottom:24px;font-size:1.0625rem;line-height:1.7}.home-page__hero-actions{flex-wrap:wrap;gap:16px;display:flex}.home-page__hero-btn{color:#fff;cursor:pointer;background:#18181b;border:none;border-radius:9999px;align-items:center;gap:8px;padding:14px 28px;font-size:.875rem;font-weight:600;text-decoration:none;transition:background .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1),box-shadow .5s cubic-bezier(.16,1,.3,1),color .5s cubic-bezier(.16,1,.3,1),border-color .5s cubic-bezier(.16,1,.3,1);display:inline-flex}.home-page__hero-btn:hover{color:#fff;background:#7c3aed;transform:translateY(-2px);box-shadow:0 8px 32px -8px #7c3aed40}.home-page__hero-btn--secondary{color:#18181b;background:0 0;border:1px solid #e4e4e7}.home-page__hero-btn--secondary:hover{color:#7c3aed;box-shadow:none;background:#7c3aed14;border-color:#7c3aed}.home-page__hero-visual{justify-content:center;align-items:center;display:flex}.home-page__photo-frame{aspect-ratio:1638/1669;border-radius:8px;width:360px;position:relative;overflow:hidden}@media (max-width:768px){.home-page__photo-frame{width:280px}}.home-page__photo-inner{border-radius:8px;width:100%;height:100%;position:relative;box-shadow:0 24px 60px -12px #0000001a}.home-page__photo-inner:after{content:"";pointer-events:none;z-index:1;background:linear-gradient(135deg,#7c3aed1f 0%,#0000 50%);position:absolute;inset:0}.home-page__photo-img{object-fit:contain;z-index:0;width:100%;height:100%;transition:transform 1s cubic-bezier(.83,0,.17,1);position:relative}.home-page__photo-frame:hover .home-page__photo-img{transform:scale(1.02)}.home-page__scroll-indicator,.home-page__scroll-line{display:none}.home-page__banner{border-bottom:1px solid #f4f4f5;padding:24px 0}.home-page__banner-inner{text-align:center}.home-page__banner-text{color:#52525b;max-width:600px;margin:0 auto;font-size:.9375rem;font-weight:400;line-height:1.6}.home-page__skills{background:#fff;border-top:1px solid #f4f4f5;border-bottom:1px solid #f4f4f5;padding:64px 0}.home-page__skills-inner{flex-wrap:wrap;align-items:flex-start;gap:64px;display:flex}.home-page__skills-label{color:#18181b;white-space:nowrap;flex-shrink:0;align-items:center;gap:8px;padding-top:6px;font-size:.875rem;font-weight:600;display:flex}.home-page__skills-dot{background:#7c3aed;border-radius:50%;width:8px;height:8px}.home-page__skills-groups{flex-direction:column;flex:1;gap:16px;display:flex}.home-page__skills-group{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.home-page__skills-group-label{text-transform:uppercase;letter-spacing:.08em;color:#a1a1aa;white-space:nowrap;flex-shrink:0;min-width:160px;font-size:.75rem;font-weight:600}.home-page__skills-list{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.home-page__skill-pill{color:#52525b;white-space:nowrap;background:#f5f5f4;border:1px solid #f4f4f5;border-radius:9999px;align-items:center;gap:6px;padding:6px 16px;font-size:.75rem;font-weight:500;transition:background .5s cubic-bezier(.16,1,.3,1),color .5s cubic-bezier(.16,1,.3,1),border-color .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1);display:inline-flex}.home-page__skill-pill:before{content:"";background:#7c3aed;border-radius:50%;flex-shrink:0;width:5px;height:5px;display:block}.home-page__skill-pill:hover{color:#7c3aed;background:#7c3aed14;border-color:#7c3aed;transform:translateY(-1px)}.home-page__skill-pill:hover:before{background:#6d28d9}.home-page__projects{padding:32px 0}.home-page__section-header{max-width:640px;margin-bottom:96px}.home-page__section-label{align-items:center;gap:8px;margin-bottom:16px;display:inline-flex}.home-page__section-label-line{background:#7c3aed;width:24px;height:1px}.home-page__section-label span{letter-spacing:.1em;text-transform:uppercase;color:#7c3aed;font-size:.75rem;font-weight:600}.home-page__section-title{font-family:var(--font-jost),Georgia,serif;margin-bottom:16px;font-size:clamp(2.25rem,4vw,3.5rem)}.home-page__section-desc{color:#52525b;font-size:1.0625rem;line-height:1.8}.home-page__projects-grid{flex-direction:column;gap:40px;max-width:800px;margin:0 auto;display:flex}.home-page__cta{padding:96px 0}.home-page__cta-content{text-align:center;background:#18181b;border-radius:24px;max-width:560px;margin:0 auto;padding:64px;position:relative;overflow:hidden}.home-page__cta-content:before{content:"";pointer-events:none;background:radial-gradient(at 50% 0,#7c3aed33 0%,#0000 60%);position:absolute;inset:0}.home-page__cta-title{font-family:var(--font-jost),Georgia,serif;color:#fff;margin-bottom:16px;font-size:clamp(1.75rem,3vw,2.5rem);position:relative}.home-page__cta-desc{color:#fff9;margin-bottom:40px;font-size:1.0625rem;line-height:1.8;position:relative}.home-page__cta-btn{color:#18181b;cursor:pointer;background:#fff;border:none;border-radius:9999px;align-items:center;gap:8px;padding:14px 28px;font-size:.875rem;font-weight:600;text-decoration:none;transition:background .5s cubic-bezier(.16,1,.3,1),color .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1),box-shadow .5s cubic-bezier(.16,1,.3,1);display:inline-flex;position:relative}.home-page__cta-btn:hover{color:#fff;background:#7c3aed;transform:translateY(-2px);box-shadow:0 8px 32px #7c3aed66}@keyframes orbFloat{0%,to{transform:translate(0)scale(1)}33%{transform:translate(20px,-30px)scale(1.05)}66%{transform:translate(-15px,15px)scale(.95)}}
