:root{--color-bg: #000000;--color-text: #ffffff;--color-text-muted: #b0b0b0;--color-text-dim: rgba(210, 210, 210, .75);--color-accent: rgba(255, 255, 255, .15);--color-border: rgba(255, 255, 255, .12);--color-glow: rgba(255, 255, 255, .08);--font-display: "Italianno", cursive;--font-body: "Inter", system-ui, -apple-system, sans-serif;--color-line: rgba(255, 255, 255, .08);--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--ease-out-quart: cubic-bezier(.25, 1, .5, 1);--transition-base: .35s var(--ease-out-expo);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--dur-hover: .16s;--dur-reveal: .7s;--stagger-step: 60ms;color-scheme:dark}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{background-image:url(/assets/bg-3APzCOp7.jpg);background-repeat:no-repeat;background-attachment:fixed;background-size:cover;background-position:bottom;background-color:var(--color-bg);color:var(--color-text-muted);font-family:var(--font-body);font-weight:300;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none;color:var(--color-text);transition:color var(--dur-hover) ease-out,border-color var(--dur-hover) ease-out;-webkit-tap-highlight-color:transparent}::selection{background:#ffffffd9;color:#000}:focus-visible{outline:1px solid rgba(255,255,255,.7);outline-offset:4px;border-radius:2px}button,a{touch-action:manipulation}#app{height:89vh;overflow-y:scroll;-webkit-mask-image:linear-gradient(rgba(0,0,0,1) 80%,transparent);mask-image:linear-gradient(rgba(0,0,0,1) 80%,transparent);scroll-timeline:--page block}.scroll-progress{display:none}@supports (animation-timeline: scroll()){.scroll-progress{display:block;position:fixed;top:0;left:0;right:0;height:1px;z-index:200;background:#fff9;transform-origin:left;transform:scaleX(0);animation:progressGrow linear both;animation-timeline:--page;pointer-events:none}}@keyframes progressGrow{to{transform:scaleX(1)}}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#9191914d;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}@keyframes slideInFromLeft{0%{transform:translate(-40px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes fadeUp{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scrollBounce{0%,to{transform:translateY(0)}50%{transform:translateY(8px)}}@keyframes lineGrow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes inkReveal{0%{clip-path:inset(-30% 100% -30% -5%);opacity:0}15%{opacity:1}to{clip-path:inset(-30% -5% -30% -5%);opacity:1}}@keyframes subtlePulse{0%,to{opacity:.4}50%{opacity:1}}@keyframes drawLine{0%{height:0}to{height:100%}}.glass-card{background:#ffffff0a;border:1px solid var(--color-border);border-radius:12px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:background-color var(--transition-base),border-color var(--transition-base),transform var(--transition-base),box-shadow var(--transition-base)}.glass-card:hover{background:#ffffff14;border-color:#fff3;transform:translateY(-4px);box-shadow:0 20px 60px #0006}.slide-fade-enter-active{transition:all .8s ease-out}.slide-fade-leave-active{transition:all .8s cubic-bezier(1,.5,.8,1)}.slide-fade-enter-from,.slide-fade-leave-to{transform:translate(20px);opacity:0}.v-enter-active,.v-leave-active{transition:opacity .5s ease}.v-enter-from,.v-leave-to{opacity:0}@media only screen and (max-width:768px){#app{height:85vh}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-delay:0ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0ms!important}.scroll-progress{display:none!important}}.page{padding:0 40px;max-width:900px;margin:0 auto}section[data-animate]{opacity:0;transform:translateY(16px);transition:opacity var(--dur-reveal) var(--ease-out-expo),transform var(--dur-reveal) var(--ease-out-expo)}section[data-animate] .stagger>*{opacity:0;transform:translateY(12px);transition:opacity .6s var(--ease-out-expo),transform .6s var(--ease-out-expo);transition-delay:calc(min(var(--i, 0),8) * var(--stagger-step) + .12s)}section[data-animate].visible .stagger>*{opacity:1;transform:none}section[data-animate].visible{opacity:1;transform:translateY(0)}.section-inner{padding:80px 0}.section-heading{font-family:var(--font-body);font-size:12px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:#ffffff80;margin-bottom:28px}.meta-label{font-family:var(--font-body);font-size:11px;font-weight:400;letter-spacing:.16em;text-transform:uppercase;color:#ffffff73;font-variant-numeric:tabular-nums}.dot-list{display:flex;flex-wrap:wrap;gap:4px 0;font-size:13px;color:#ffffff73}.dot-list>span:not(:last-child):after{content:"·";margin:0 8px;color:#ffffff40}.ruled-list{border-top:1px solid var(--color-line)}.ruled-row{display:grid;grid-template-columns:150px 1fr;gap:32px;padding:28px 0;border-bottom:1px solid var(--color-line)}.ruled-row .meta-label{padding-top:6px;transition:color var(--dur-hover) ease-out}.ruled-row:hover .meta-label{color:#fffc}.row-title{font-family:var(--font-body);font-size:16px;font-weight:500;color:var(--color-text);line-height:1.4;text-wrap:balance;transition:transform .26s var(--ease-out-expo)}.ruled-row:hover .row-title{transform:translate(4px)}.row-sub{font-size:14px;color:#ffffff80;margin-top:2px}.row-desc{font-size:15px;line-height:1.75;color:var(--color-text-dim);margin-top:12px;max-width:60ch}@media only screen and (max-width:768px){.page{padding:0 16px}.section-inner{padding:40px 0}.ruled-row{grid-template-columns:1fr;gap:10px;padding:24px 0}.ruled-row .meta-label{padding-top:0}}@media only screen and (min-width:769px)and (max-width:1024px){.page{max-width:700px}.section-inner{padding:0 5%}.section-heading{margin-bottom:30px}}.text-link{position:relative;display:inline-flex;align-items:center;gap:4px;font-size:15px;color:var(--color-text-muted);padding:4px 0}.text-link:after{content:"";position:absolute;left:0;right:0;bottom:2px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .3s var(--ease-out-expo)}.text-link:hover{color:var(--color-text)}.text-link:hover:after{transform:scaleX(1);transform-origin:left}.text-link:active{transform:scale(.96)}.text-link-arrow{opacity:.5;transition:transform .26s var(--ease-out-expo),opacity var(--dur-hover) ease-out}.text-link:hover .text-link-arrow{opacity:1;transform:translate(2px,-2px)}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-property:overflow;transition-duration:1ms;transition-behavior:allow-discrete}#header[data-v-8e09de25]{display:flex;justify-content:space-between;align-items:center;padding:20px 40px;position:fixed;top:0;left:0;right:0;z-index:100;pointer-events:none}#header[data-v-8e09de25]>*{pointer-events:auto}#header-sign[data-v-8e09de25]{display:block;width:170px;opacity:0;animation:slideInFromLeft .8s var(--ease-out-expo) forwards}#header-left a[data-v-8e09de25]{display:block;transition:opacity var(--dur-hover) ease-out,transform .18s var(--ease-spring)}#header-left a[data-v-8e09de25]:hover{opacity:.7}#header-left a[data-v-8e09de25]:active{transform:scale(.97)}#header-nav[data-v-8e09de25]{display:flex;gap:40px}.nav-link[data-v-8e09de25]{font-family:var(--font-body);font-size:11px;font-weight:400;letter-spacing:.18em;color:var(--color-text-muted);text-decoration:none;position:relative;opacity:0;animation:fadeIn .6s var(--ease-out-expo) forwards;transition:color var(--dur-hover) ease-out}.nav-link[data-v-8e09de25]:after{content:"";position:absolute;bottom:-4px;left:0;width:100%;height:1px;background:var(--color-text);transform:scaleX(0);transform-origin:right;transition:transform .3s var(--ease-out-expo)}.nav-link[data-v-8e09de25]:hover,.nav-link.active[data-v-8e09de25]{color:var(--color-text)}.nav-link[data-v-8e09de25]:hover:after,.nav-link.active[data-v-8e09de25]:after{transform:scaleX(1);transform-origin:left}@media only screen and (max-width:768px){#header[data-v-8e09de25]{padding:16px 20px;position:relative}#header-sign[data-v-8e09de25]{width:104px}#header-nav[data-v-8e09de25]{gap:14px}.nav-link[data-v-8e09de25]{font-size:10px;letter-spacing:.1em}}#hero[data-v-b313800b]{min-height:85vh;display:flex;flex-direction:column;justify-content:center;position:relative;padding-top:80px}.hero-name[data-v-b313800b]{font-family:var(--font-display);font-size:clamp(60px,10vw,110px);font-weight:100;color:var(--color-text);line-height:1;margin-bottom:16px;opacity:0}.hero-subtitle[data-v-b313800b]{font-family:var(--font-body);font-size:clamp(10px,1.2vw,12px);font-weight:400;letter-spacing:.28em;line-height:1.8;color:#ffffff8c;margin-bottom:28px;opacity:0}.hero-desc[data-v-b313800b]{font-size:16px;line-height:1.75;color:var(--color-text-dim);max-width:480px;opacity:0}.ink-link[data-v-b313800b]{position:relative;color:var(--color-text-muted);border-bottom:1px solid rgba(145,145,145,.3)}.ink-link[data-v-b313800b]:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--color-text);transform:scaleX(0);transform-origin:right;transition:transform .3s var(--ease-out-expo)}.ink-link[data-v-b313800b]:hover{color:var(--color-text)}.ink-link[data-v-b313800b]:hover:after{transform:scaleX(1);transform-origin:left}.animate-in.hero-name[data-v-b313800b]{animation:inkReveal 1.4s cubic-bezier(.65,0,.35,1) .15s forwards}.animate-in.hero-subtitle[data-v-b313800b],.animate-in.hero-desc[data-v-b313800b]{animation:fadeUp .8s var(--ease-out-expo) forwards}.scroll-indicator[data-v-b313800b]{position:absolute;bottom:32px;left:0;padding:8px 8px 8px 0;opacity:0;color:var(--color-text-muted)}.scroll-indicator.animate-in[data-v-b313800b]{animation:fadeIn 1s var(--ease-out-expo) 1.3s forwards}.scroll-inner[data-v-b313800b]{display:flex;align-items:center;gap:14px}@supports (animation-timeline: scroll()){.scroll-inner[data-v-b313800b]{animation:cueFadeOut-b313800b linear both;animation-timeline:--page;animation-range:0 160px}}.scroll-track[data-v-b313800b]{position:relative;width:1px;height:44px;overflow:hidden;background:#ffffff1f}.scroll-thumb[data-v-b313800b]{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(transparent,rgba(255,255,255,.9),transparent);transform:translateY(-100%);animation:cueTravel-b313800b 2.2s cubic-bezier(.65,0,.35,1) 1.8s infinite}.scroll-text[data-v-b313800b]{font-family:var(--font-body);font-size:10px;font-weight:400;letter-spacing:.3em;text-transform:uppercase;transition:color var(--dur-hover) ease-out,transform .26s var(--ease-out-expo)}.scroll-indicator:hover .scroll-text[data-v-b313800b]{color:var(--color-text);transform:translateY(2px)}.scroll-indicator:active .scroll-inner[data-v-b313800b]{transform:scale(.96)}@keyframes cueTravel-b313800b{0%{transform:translateY(-100%)}60%,to{transform:translateY(100%)}}@keyframes cueFadeOut-b313800b{to{opacity:0;transform:translateY(8px)}}@media only screen and (max-width:768px){#hero[data-v-b313800b]{min-height:80vh;padding-top:20px}.hero-desc[data-v-b313800b]{font-size:15px}.scroll-indicator[data-v-b313800b]{bottom:24px}}.about-content[data-v-89cc2281]{display:flex;flex-direction:column;gap:20px}.about-content p[data-v-89cc2281]{font-size:16px;line-height:1.8;color:var(--color-text-dim);max-width:600px}.about-content a[data-v-89cc2281]{color:var(--color-text-muted);border-bottom:1px solid rgba(145,145,145,.3);text-decoration:none;transition:color var(--transition-base),border-color var(--transition-base)}.about-content a[data-v-89cc2281]:hover{color:var(--color-text);border-color:var(--color-text)}.spotify-wrapper[data-v-b37f5f34]{width:100%;opacity:.9;transition:opacity var(--dur-hover) ease-out;margin-top:20px}.spotify-wrapper[data-v-b37f5f34]:hover{opacity:1}@media only screen and (max-width:600px){.spotify-wrapper[data-v-b37f5f34]{margin-top:10px}}.project-row[data-v-a195ca7e]{position:relative;display:flex;align-items:center;gap:32px;padding:28px 0;border-bottom:1px solid var(--color-line);color:inherit}.project-row[data-v-a195ca7e]:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:#ffffff59;transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease-out-expo)}.project-row[data-v-a195ca7e]:hover:after,.project-row[data-v-a195ca7e]:focus-visible:after{transform:scaleX(1);transform-origin:left}.project-row:active .project-content[data-v-a195ca7e]{transform:scale(.99);transition-duration:.12s}.project-content[data-v-a195ca7e]{flex:1;min-width:0;transform-origin:left center;transition:transform .2s var(--ease-spring)}.project-header[data-v-a195ca7e]{display:flex;align-items:center;gap:8px;margin-bottom:8px}.project-title[data-v-a195ca7e]{font-family:var(--font-body);font-size:16px;font-weight:500;color:var(--color-text);line-height:1.4;transition:transform .26s var(--ease-out-expo)}.project-row:hover .project-title[data-v-a195ca7e]{transform:translate(4px)}.project-arrow[data-v-a195ca7e]{flex-shrink:0;color:#ffffff59;transition:transform .26s var(--ease-out-expo),color var(--dur-hover) ease-out}.project-row:hover .project-arrow[data-v-a195ca7e]{transform:translate(6px,-2px);color:var(--color-text)}.project-desc[data-v-a195ca7e]{font-size:14px;line-height:1.7;color:var(--color-text-dim);margin-bottom:12px;max-width:60ch}.project-img-wrapper[data-v-a195ca7e]{flex:0 0 200px;aspect-ratio:16 / 10;overflow:hidden;border-radius:8px;border:1px solid var(--color-line);background:#ffffff05}.project-img[data-v-a195ca7e]{width:100%;height:100%;object-fit:cover;opacity:.7;filter:grayscale(.3);transition:transform .9s var(--ease-out-expo),opacity .3s ease-out,filter .3s ease-out}.project-row:hover .project-img[data-v-a195ca7e]{transform:scale(1.04);opacity:1;filter:grayscale(0)}@media only screen and (max-width:768px){.project-row[data-v-a195ca7e]{flex-direction:column-reverse;align-items:stretch;gap:16px}.project-img-wrapper[data-v-a195ca7e]{flex:none;width:100%}}.github-grid-wrap[data-v-c54ca4ee]{display:flex;flex-direction:column;gap:14px}.github-grid[data-v-c54ca4ee]{width:100%;min-width:600px;opacity:.6;filter:invert(1) hue-rotate(180deg) contrast(.9);border-radius:6px;transition:opacity .5s var(--ease-out-expo)}.github-grid[data-v-c54ca4ee]:hover{opacity:.9}.github-link[data-v-c54ca4ee]{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-body);font-size:13px;letter-spacing:.02em;color:var(--color-text-muted);text-decoration:none;transition:color var(--transition-base)}.github-link[data-v-c54ca4ee]:hover{color:var(--color-text)}@media only screen and (max-width:768px){.github-grid-wrap[data-v-c54ca4ee]{overflow-x:auto;padding-bottom:8px}.github-grid-wrap[data-v-c54ca4ee]::-webkit-scrollbar{height:4px}.github-grid-wrap[data-v-c54ca4ee]::-webkit-scrollbar-track{background:transparent}.github-grid-wrap[data-v-c54ca4ee]::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:4px}}.stack-row[data-v-3b12eeb3]{padding:22px 0}.tech-list[data-v-3b12eeb3]{display:flex;flex-wrap:wrap;gap:6px 22px}.tech-item[data-v-3b12eeb3]{display:inline-block;font-size:15px;color:var(--color-text-dim);transition:color var(--dur-hover) ease-out,transform .2s var(--ease-spring)}.tech-item[data-v-3b12eeb3]:hover{color:var(--color-text);transform:translateY(-2px)}.exp-tags[data-v-c4f1f0e5]{margin-top:14px}.timeline-list[data-v-2f2be9e9]{list-style:none}.timeline-item[data-v-2f2be9e9]{display:grid;grid-template-columns:150px 1fr;gap:32px;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--color-line)}.timeline-desc[data-v-2f2be9e9]{font-size:15px;line-height:1.6;color:var(--color-text-dim);transition:color var(--transition-base)}.timeline-item:hover .timeline-desc[data-v-2f2be9e9]{color:var(--color-text)}.timeline-toggle[data-v-2f2be9e9]{display:inline-flex;align-items:center;gap:6px;margin-top:24px;background:none;border:none;padding:0;cursor:pointer;font-family:var(--font-body);font-size:13px;color:#ffffff80;transition:color var(--dur-hover) ease-out,transform .2s var(--ease-spring)}.timeline-toggle[data-v-2f2be9e9]:hover{color:var(--color-text)}.timeline-toggle[data-v-2f2be9e9]:active{transform:scale(.96)}.toggle-icon[data-v-2f2be9e9]{transition:transform .3s var(--ease-spring)}.toggle-icon.rotated[data-v-2f2be9e9]{transform:rotate(180deg)}.tl-enter-active[data-v-2f2be9e9]{transition:opacity .5s var(--ease-out-expo),transform .5s var(--ease-out-expo);transition-delay:calc((var(--i) - 6) * 30ms)}.tl-leave-active[data-v-2f2be9e9]{transition:opacity .2s ease}.tl-enter-from[data-v-2f2be9e9]{opacity:0;transform:translateY(8px)}.tl-leave-to[data-v-2f2be9e9]{opacity:0}@media only screen and (max-width:768px){.timeline-item[data-v-2f2be9e9]{grid-template-columns:90px 1fr;gap:16px}}.offerings[data-v-c4224c6e]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;border-top:1px solid var(--color-line);padding-top:28px}.offering .row-title[data-v-c4224c6e]{margin:10px 0 8px}.offering-desc[data-v-c4224c6e]{font-size:14px;line-height:1.7;color:var(--color-text-dim)}.cta[data-v-c4224c6e]{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:40px;padding-top:24px;border-top:1px solid var(--color-line)}.cta-text[data-v-c4224c6e]{display:flex;align-items:center;gap:12px;font-size:15px;color:var(--color-text-dim)}.cta-dot[data-v-c4224c6e]{flex-shrink:0;width:6px;height:6px;border-radius:50%;background:#96e6b4d9;box-shadow:0 0 10px #96e6b480;animation:subtlePulse 2.4s ease-in-out infinite}@media only screen and (max-width:768px){.offerings[data-v-c4224c6e]{grid-template-columns:1fr;gap:28px}.cta[data-v-c4224c6e]{flex-direction:column;align-items:flex-start}}.site-footer[data-v-f7b01d0c]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px 32px;margin-top:80px;padding-top:24px;border-top:1px solid var(--color-line)}.footer-nav[data-v-f7b01d0c]{display:flex;flex-wrap:wrap;gap:8px 24px}.footer-link[data-v-f7b01d0c]{position:relative;font-size:13px;color:#ffffff80;padding:4px 0;transition:color var(--dur-hover) ease-out}.footer-link[data-v-f7b01d0c]:after{content:"";position:absolute;left:0;right:0;bottom:2px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .3s var(--ease-out-expo)}.footer-link[data-v-f7b01d0c]:hover,.footer-link.current[data-v-f7b01d0c]{color:var(--color-text)}.footer-link[data-v-f7b01d0c]:hover:after,.footer-link.current[data-v-f7b01d0c]:after{transform:scaleX(1);transform-origin:left}.contact-inner[data-v-12086d4b]{padding-top:60px;padding-bottom:40px}.contact-heading[data-v-12086d4b]{opacity:0;font-family:var(--font-display);font-size:clamp(48px,8vw,80px);font-weight:400;color:var(--color-text);line-height:1.1;margin-bottom:12px}#contact.visible .contact-heading[data-v-12086d4b]{animation:inkReveal 1.2s cubic-bezier(.65,0,.35,1) .2s forwards}.contact-sub[data-v-12086d4b]{font-size:16px;color:var(--color-text-dim);margin-bottom:32px}.socials[data-v-12086d4b]{display:flex;flex-wrap:wrap;gap:12px 28px}.social-link[data-v-12086d4b]{position:relative;display:inline-flex;align-items:center;gap:4px;font-size:15px;color:var(--color-text-muted);padding:6px 0}.social-link[data-v-12086d4b]:after{content:"";position:absolute;left:0;right:0;bottom:4px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .3s var(--ease-out-expo)}.social-link[data-v-12086d4b]:hover{color:var(--color-text)}.social-link[data-v-12086d4b]:hover:after{transform:scaleX(1);transform-origin:left}#contact.visible .social-link[data-v-12086d4b]:active{transform:scale(.96);transition:transform .12s ease-out}.social-arrow[data-v-12086d4b]{opacity:.5;transition:transform .26s var(--ease-out-expo),opacity var(--dur-hover) ease-out}.social-link:hover .social-arrow[data-v-12086d4b]{opacity:1;transform:translate(2px,-2px)}
