.animated-background[data-v-2cd0e6aa]{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:0}.particles[data-v-2cd0e6aa]{position:absolute;inset:0}.particle[data-v-2cd0e6aa]{position:absolute;left:var(--x);top:var(--y);width:var(--size);height:var(--size);background:radial-gradient(circle,rgba(186,156,255,.8) 0%,rgba(148,101,255,.4) 50%,transparent 100%);border-radius:50%;animation:float-2cd0e6aa var(--duration) ease-in-out infinite;animation-delay:var(--delay);filter:blur(1px)}@keyframes float-2cd0e6aa{0%,to{transform:translate(0) scale(1);opacity:0}10%{opacity:1}90%{opacity:1}50%{transform:translate(calc(var(--x) - 50vw),calc(var(--y) - 50vh)) scale(1.5)}}.gradient-orbs[data-v-2cd0e6aa]{position:absolute;inset:0}.orb[data-v-2cd0e6aa]{position:absolute;border-radius:50%;filter:blur(80px);opacity:.3;animation:orbit-2cd0e6aa 20s ease-in-out infinite}.orb-1[data-v-2cd0e6aa]{width:500px;height:500px;background:radial-gradient(circle,rgba(148,101,255,.6) 0%,rgba(99,102,241,.3) 50%,transparent 100%);top:10%;left:10%;animation-delay:0s}.orb-2[data-v-2cd0e6aa]{width:400px;height:400px;background:radial-gradient(circle,rgba(186,156,255,.5) 0%,rgba(148,101,255,.3) 50%,transparent 100%);top:50%;right:10%;animation-delay:-7s;animation-duration:25s}.orb-3[data-v-2cd0e6aa]{width:600px;height:600px;background:radial-gradient(circle,rgba(99,102,241,.4) 0%,rgba(148,101,255,.2) 50%,transparent 100%);bottom:10%;left:50%;animation-delay:-14s;animation-duration:30s}@keyframes orbit-2cd0e6aa{0%,to{transform:translate(0) scale(1)}25%{transform:translate(100px,-50px) scale(1.1)}50%{transform:translate(50px,100px) scale(.9)}75%{transform:translate(-100px,50px) scale(1.05)}}.animated-grid[data-v-2cd0e6aa]{position:absolute;inset:0;background-image:linear-gradient(rgba(186,156,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(186,156,255,.03) 1px,transparent 1px);background-size:50px 50px;animation:grid-move-2cd0e6aa 20s linear infinite}@keyframes grid-move-2cd0e6aa{0%{transform:translate(0)}to{transform:translate(50px,50px)}}@media (max-width: 768px){.orb-1[data-v-2cd0e6aa],.orb-2[data-v-2cd0e6aa],.orb-3[data-v-2cd0e6aa]{width:300px;height:300px}}.fade-enter-active[data-v-bd5dffde],.fade-leave-active[data-v-bd5dffde]{transition:opacity .3s ease,transform .3s ease}.fade-enter-from[data-v-bd5dffde]{opacity:0;transform:translateY(10px)}.fade-leave-to[data-v-bd5dffde]{opacity:0;transform:translateY(-10px)}.mobile-menu-toggle[data-v-fb4e84ec]{display:none;flex-direction:column;justify-content:space-around;width:28px;height:24px;background:transparent;border:none;cursor:pointer;padding:0;z-index:21}.mobile-menu-toggle span[data-v-fb4e84ec]{width:100%;height:3px;background:var(--color-highlight);border-radius:2px;transition:all .3s ease;transform-origin:center}.mobile-menu-toggle.active span[data-v-fb4e84ec]:nth-child(1){transform:rotate(45deg) translate(8px,8px)}.mobile-menu-toggle.active span[data-v-fb4e84ec]:nth-child(2){opacity:0}.mobile-menu-toggle.active span[data-v-fb4e84ec]:nth-child(3){transform:rotate(-45deg) translate(8px,-8px)}@media (max-width: 720px){.mobile-menu-toggle[data-v-fb4e84ec]{display:flex}.nav[data-v-fb4e84ec]{position:fixed;top:var(--topbar-height);left:0;right:0;flex-direction:column;background:linear-gradient(135deg,#141c2cfa,#080c16f2);backdrop-filter:blur(20px);border-radius:0;border:none;border-top:1px solid rgba(186,156,255,.1);padding:1rem;gap:.5rem;box-shadow:0 14px 30px #04060c73;transform:translateY(-100%);opacity:0;transition:transform .3s ease,opacity .3s ease;pointer-events:none}.nav.open[data-v-fb4e84ec]{transform:translateY(0);opacity:1;pointer-events:all}.nav a[data-v-fb4e84ec]{width:100%;text-align:center;padding:.75rem 1.5rem}}.scroll-reveal[data-v-5395b141]{transition:all .8s cubic-bezier(.6,.6,0,1);min-height:1px;height:100%;display:flex;flex-direction:column}.fade-up[data-v-5395b141]{opacity:0;transform:translateY(60px)}.fade-up.is-visible[data-v-5395b141]{opacity:1;transform:translateY(0)}.scroll-reveal[data-v-5395b141]:not(.is-visible){animation:force-visible-5395b141 .5s ease-in-out forwards;animation-delay:.3s}@keyframes force-visible-5395b141{to{opacity:1!important;transform:translateY(0) translate(0) scale(1) rotate(0)!important}}.fade-down[data-v-5395b141]{opacity:0;transform:translateY(-60px)}.fade-down.is-visible[data-v-5395b141]{opacity:1;transform:translateY(0)}.fade-left[data-v-5395b141]{opacity:0;transform:translate(-60px)}.fade-left.is-visible[data-v-5395b141]{opacity:1;transform:translate(0)}.fade-right[data-v-5395b141]{opacity:0;transform:translate(60px)}.fade-right.is-visible[data-v-5395b141]{opacity:1;transform:translate(0)}.zoom-in[data-v-5395b141]{opacity:0;transform:scale(.8)}.zoom-in.is-visible[data-v-5395b141]{opacity:1;transform:scale(1)}.zoom-out[data-v-5395b141]{opacity:0;transform:scale(1.2)}.zoom-out.is-visible[data-v-5395b141]{opacity:1;transform:scale(1)}.rotate-in[data-v-5395b141]{opacity:0;transform:rotate(-10deg) scale(.9)}.rotate-in.is-visible[data-v-5395b141]{opacity:1;transform:rotate(0) scale(1)}.slide-up[data-v-5395b141]{opacity:0;transform:translateY(100px)}.slide-up.is-visible[data-v-5395b141]{opacity:1;transform:translateY(0)}.floating-card[data-v-498b1a26]{position:relative;transition:transform .2s ease-out;transform-style:preserve-3d;will-change:transform;width:100%;display:flex;flex-direction:column}.card-glow[data-v-498b1a26]{position:absolute;inset:0;pointer-events:none;transition:opacity .3s ease,border-radius .3s ease;z-index:0;overflow:hidden}.card-content[data-v-498b1a26]{position:relative;z-index:1;width:100%;display:flex;flex-direction:column}.animated-gradient-text[data-v-4f16773e]{background:linear-gradient(120deg,#ba9cfff2,#9465ffe6,#6366f1f2,#9465ffe6,#ba9cfff2);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:gradient-flow-4f16773e 3s linear infinite;display:inline-block}.animate-on-hover[data-v-4f16773e]{animation:none;background-size:200% auto}.animate-on-hover[data-v-4f16773e]:hover{animation:gradient-flow-4f16773e 1s linear infinite}@keyframes gradient-flow-4f16773e{0%{background-position:0% center}to{background-position:200% center}}:root{--topbar-height: 64px;--color-bg: #030014;--color-surface: rgba(3, 0, 20, .12);--color-surface-alt: rgba(3, 0, 20, .18);--color-border: rgba(186, 156, 255, .1);--color-border-strong: rgba(186, 156, 255, .25);--color-text: #ffffff;--color-muted: rgba(255, 255, 255, .7);--color-highlight: #ffffff;--color-accent: rgba(186, 156, 255, .9);--color-accent-strong: rgba(148, 101, 255, .9);--color-accent-soft: rgba(148, 101, 255, .15);--color-success: rgba(148, 101, 255, .8);--maxw: 1080px;--radius-lg: 20px;--radius-md: 14px;--font-base: clamp(1rem, .96rem + .2vw, 1.06rem);--font-name: clamp(2.4rem, 2rem + 2vw, 3.4rem);--font-subtitle: clamp(1.1rem, 1.05rem + .5vw, 1.5rem);--font-lead: clamp(1.05rem, 1rem + .7vw, 1.45rem);--font-btn: clamp(.9rem, .85rem + .2vw, 1rem);--transition-soft: transform .3s cubic-bezier(.6, .6, 0, 1), box-shadow .3s cubic-bezier(.6, .6, 0, 1), border-color .3s cubic-bezier(.6, .6, 0, 1), color .3s cubic-bezier(.6, .6, 0, 1), background-color .3s cubic-bezier(.6, .6, 0, 1)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:var(--font-base);background:var(--color-bg);color:var(--color-text);line-height:1.6;-webkit-font-smoothing:antialiased;position:relative;overflow-x:hidden}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:#03001480;border-left:1px solid rgba(255,255,255,.05)}::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#ba9cff66,#9465ff4d,#6366f166);border-radius:6px;border:2px solid rgba(3,0,20,.3);transition:all .3s ease}::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#ba9cff99,#9465ff80,#6366f199);border-color:#ba9cff33}::-webkit-scrollbar-thumb:active{background:linear-gradient(180deg,#ba9cffcc,#9465ffb3,#6366f1cc)}*{scrollbar-width:thin;scrollbar-color:rgba(186,156,255,.4) rgba(3,0,20,.5)}a{color:inherit}a:hover{color:var(--color-highlight)}img{max-width:100%;display:block}main section{scroll-margin-top:calc(var(--topbar-height) + 2rem)}.container{max-width:var(--maxw);margin:0 auto;padding:2.75rem clamp(1.4rem,4vw,2.6rem)}.topbar{position:fixed;inset:0 0 auto;height:var(--topbar-height);display:flex;align-items:center;background:#03001414;border-bottom:1px solid rgba(255,255,255,.05);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);z-index:20}.topbar:after{content:"";position:absolute;inset:auto 0 -1px;height:1px;background:linear-gradient(90deg,transparent,rgba(186,156,255,.3),transparent);opacity:.6}.topbar .container{display:flex;align-items:center;justify-content:space-between;gap:2rem;padding:0 clamp(1.4rem,4vw,2.6rem)}.logo{font-weight:700;text-decoration:none;letter-spacing:.28em;font-size:.85rem;color:var(--color-highlight);text-transform:uppercase}.nav{display:flex;align-items:center;gap:.6rem;padding:.35rem;border-radius:999px;background:#0300140d;border:1px solid rgba(186,156,255,.15);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.nav a{text-decoration:none;padding:.45rem 1.1rem;border-radius:999px;border:1px solid transparent;color:var(--color-muted);font-weight:500;font-size:14px;line-height:20px;letter-spacing:.01em;transition:var(--transition-soft);position:relative}.nav a:after{content:"";position:absolute;bottom:-4px;left:0;width:0;height:1px;background:linear-gradient(90deg,#ba9cffcc,#9465ff99);transition:width .3s cubic-bezier(.6,.6,0,1)}.nav a:hover,.nav a:focus{color:var(--color-highlight)}.nav a:hover:after,.nav a:focus:after,.nav a.active:after{width:100%}.nav a.active{color:var(--color-highlight)}@media (max-width: 720px){.nav{display:none}.nav{border:1px solid rgba(186,156,255,.1);background:#0300141f;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}}.hero{padding-top:calc(var(--topbar-height) + 4.5rem);position:relative}.hero:before{content:"";position:absolute;inset:15% -25% -15%;background:radial-gradient(circle at 25% 20%,rgba(148,101,255,.15),transparent 55%),radial-gradient(circle at 75% 30%,rgba(186,156,255,.12),transparent 60%),radial-gradient(circle at 50% 80%,rgba(99,102,241,.12),transparent 65%);filter:blur(20px);opacity:.7;z-index:-1;will-change:opacity;transform:translateZ(0)}.hero-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:2.4rem}.card{background:#0300141f;border:1px solid rgba(186,156,255,.15);border-radius:var(--radius-lg);padding:clamp(1.8rem,2vw + 1.2rem,2.4rem);position:relative;transition:var(--transition-soft);opacity:1;transform:translateY(0);overflow:hidden;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 25px 80px #0000004d,0 0 0 1px #ba9cff1a inset}.card:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(148,101,255,.1),transparent 55%);opacity:0;transition:opacity .3s ease;pointer-events:none}.card.inview,.project.inview,.skill.inview{opacity:1;transform:translateY(0)}.card:hover,.card:focus-within{border-color:#ba9cff40;background:#0300142e;box-shadow:0 30px 100px #9465ff26,0 0 0 1px #ba9cff33 inset;transform:translateY(-4px)}.card:hover:before,.card:focus-within:before{opacity:1}.hero-info{display:flex;flex-direction:column;gap:1.5rem;width:100%;max-width:none;margin:0 auto;background:#0300141f;border:1px solid rgba(186,156,255,.15);box-shadow:0 25px 80px #0000004d,0 0 0 1px #ba9cff1a inset;overflow:visible;position:relative}.hero-info>*{position:relative;z-index:1;min-height:0}.hero-info .name{z-index:1}.hero-info .hero-cta{z-index:2;margin-top:1.5rem}.hero-info .name{flex-shrink:0}.hero-badges{display:flex;flex-wrap:wrap;gap:.5rem}.badge{display:inline-flex;align-items:center;padding:.4rem .85rem;border-radius:999px;border:1px solid rgba(186,156,255,.2);background:#9465ff14;color:var(--color-highlight);font-size:.76rem;letter-spacing:.08em;text-transform:uppercase;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:all .3s cubic-bezier(.6,.6,0,1)}.badge:hover{background:#9465ff1f;border-color:#ba9cff4d;transform:translateY(-2px)}.badge:after{content:"";width:6px;height:6px;margin-left:.4rem;border-radius:50%;background:#9465ffcc;box-shadow:0 0 10px #9465ff99}.name{margin:0 0 .5rem;font-size:var(--font-name);font-weight:700;letter-spacing:-.02em;line-height:1.2;word-wrap:break-word;overflow-wrap:break-word;position:relative;z-index:1;max-width:100%;overflow:hidden;text-overflow:ellipsis}.subtitle{margin:0;font-size:var(--font-subtitle);color:var(--color-muted)}.lead{margin:0;font-size:var(--font-lead);color:var(--color-muted);max-width:62ch;flex-shrink:0}.hero-cta{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1rem;flex-shrink:0;position:relative;z-index:2}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.75rem 1.6rem;border-radius:999px;border:1px solid rgba(186,156,255,.2);font-weight:500;font-size:var(--font-btn);text-decoration:none;letter-spacing:.1em;text-transform:uppercase;color:var(--color-highlight);background:#9465ff1a;transition:var(--transition-soft);position:relative;overflow:hidden;z-index:0;box-shadow:0 0 #ba9cff00}.btn:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:#ba9cff4d;transform:translate(-50%,-50%);transition:width .6s,height .6s;z-index:-1}.btn.primary{background:#9465ff26;border-color:#ba9cff4d;box-shadow:0 8px 24px #ba9cff26}.btn.outline{background:transparent;border-color:#fff3;color:var(--color-highlight)}.btn:hover,.btn:focus-visible{transform:translateY(-2px);border-color:#ba9cff66;box-shadow:0 8px 24px #ba9cff26;outline:none}.btn:hover:before,.btn:focus-visible:before{width:300px;height:300px}.btn.primary:hover,.btn.primary:focus-visible{background:#9465ff33;box-shadow:0 12px 32px #ba9cff33}.btn.outline:hover,.btn.outline:focus-visible{background:#9465ff14;border-color:#ba9cff66}.btn[aria-disabled=true]{opacity:.6;cursor:not-allowed;pointer-events:none}.section{padding:1.5rem 0}.section h2{margin:0 0 1.2rem;font-size:clamp(1.8rem,1.6rem + .8vw,2.3rem)}.section .card p,.section .card li{color:var(--color-muted)}.grid{display:grid;gap:1.8rem;align-items:stretch}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.projects-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.skill,.project{padding:clamp(1.6rem,1.4rem + 1vw,2rem);border-radius:var(--radius-md);background:#0300141f;border:1px solid rgba(186,156,255,.15);transition:var(--transition-soft);opacity:1;transform:translateY(0);position:relative;overflow:hidden;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 25px 80px #0000004d,0 0 0 1px #ba9cff1a inset;height:100%;display:flex;flex-direction:column}.skill:before,.project:before{content:"";position:absolute;inset:0;background:linear-gradient(140deg,rgba(148,101,255,.1),transparent 60%);opacity:0;transition:opacity .3s ease;pointer-events:none}.skill:hover,.project:hover{border-color:#ba9cff40;background:#0300142e;box-shadow:0 30px 100px #9465ff26,0 0 0 1px #ba9cff33 inset;transform:translateY(-4px)}.skill:hover:before,.skill:focus-within:before,.project:hover:before,.project:focus-within:before{opacity:1}.skill h3,.project h3{margin-top:0;margin-bottom:.8rem;font-size:clamp(1.2rem,1.1rem + .4vw,1.5rem)}.skill ul{list-style:none;padding:0;margin:0;display:grid;gap:.4rem;flex:1}.skill li{color:var(--color-muted);padding-left:1rem;position:relative}.skill li:before{content:"—";position:absolute;left:0;color:var(--color-border-strong)}.project-links{margin-top:auto;padding-top:1.4rem}.project-links .btn{width:fit-content}.project--teaser{border-color:#ba9cff4d;background:#03001426;box-shadow:0 0 0 1px #ba9cff33,0 25px 45px #9465ff1a;position:relative;overflow:hidden}.project--teaser:before{content:"";position:absolute;inset:-40%;background:radial-gradient(circle at 20% 20%,rgba(148,101,255,.15),transparent 55%),radial-gradient(circle at 75% 30%,rgba(186,156,255,.12),transparent 65%);opacity:.7;transition:opacity .3s ease}.project--teaser:hover:before{opacity:1}.project--teaser .teaser-baseline{font-weight:600;background:linear-gradient(120deg,#ba9cfff2,#9465ffe6,#6366f1f2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.project--teaser .microcopy{margin-top:.8rem;color:var(--color-muted)}.contact-list{list-style:none;padding:0;margin:0;display:grid;gap:1rem}.contact-list li{display:grid;gap:.4rem}.contact-list strong{color:var(--color-muted);text-transform:uppercase;font-size:.75rem;letter-spacing:.12em}.contact-text{color:var(--color-highlight);font-weight:600}.contact-list a{display:inline-flex;align-items:center;gap:.5rem;padding:.65rem 1.1rem;border-radius:12px;background:#0300141f;border:1px solid rgba(186,156,255,.15);color:var(--color-highlight);text-decoration:none;width:fit-content;box-shadow:0 10px 22px #0000004d;transition:var(--transition-soft);position:relative;overflow:hidden;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.contact-list a:after{content:"↗";font-size:.85rem;opacity:.8;transition:transform .2s ease,opacity .2s ease}.contact-list a:hover,.contact-list a:focus-visible{transform:translateY(-2px);border-color:#ba9cff66;background:#0300142e;box-shadow:0 18px 34px #9465ff26}.contact-list a:hover:after,.contact-list a:focus-visible:after{transform:translateY(-1px) translate(2px);opacity:1}.footer{text-align:center;padding:0;background:#03001414;border-top:1px solid rgba(255,255,255,.05);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);color:var(--color-muted)}.footer .container{padding:.45rem clamp(1.2rem,4vw,1.8rem);display:flex;align-items:center;justify-content:center;gap:.75rem;height:50px}.footer small{font-size:.78rem;letter-spacing:.08em}.section .card,.skill,.project{transition:var(--transition-soft),opacity .45s ease}@keyframes pulseGlow{0%,to{transform:scale(1);opacity:.8}50%{transform:scale(1.08);opacity:.45}}@keyframes shimmer{0%,to{opacity:.4}50%{opacity:.85}}@media (max-width: 900px){.hero-cta{justify-content:center}}@media (max-width: 768px){.container{padding:2.3rem 1.3rem}.card,.skill,.project{transform:none!important}.card:hover,.skill:hover,.project:hover{transform:none;box-shadow:none}.hero-badges{justify-content:center}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
