*{box-sizing:border-box;margin:0;padding:0}html{scrollbar-width:none;scroll-snap-type:y mandatory}html::-webkit-scrollbar{display:none}body{color:#fff;scrollbar-width:none;background:#0a0a0a;min-height:100vh;font-family:system-ui,-apple-system,sans-serif;overflow-x:hidden}body::-webkit-scrollbar{display:none}#app{scrollbar-width:none;width:100%;min-height:100vh;position:relative}#app::-webkit-scrollbar{display:none}#app{width:100%;min-height:100vh;position:relative}.pixel-snow-container[data-v-e265d3aa]{pointer-events:none;z-index:0;width:100%;height:100%;position:fixed;inset:0}.click-spark-container[data-v-182e60e6]{width:100%;height:100%;position:relative}.click-spark-canvas[data-v-182e60e6]{pointer-events:none;position:absolute;inset:0}.app[data-v-0634926b]{width:100%;min-height:100vh;position:relative}.nav-bar[data-v-0634926b]{z-index:100;gap:2rem;display:flex;position:fixed;top:1.5rem;right:2rem}.nav-link[data-v-0634926b]{color:#fff9;letter-spacing:.05em;font-size:.9rem;text-decoration:none;transition:color .3s}.nav-link[data-v-0634926b]:hover,.nav-link.router-link-active[data-v-0634926b]{color:#fff}.content[data-v-0634926b]{z-index:1;position:relative}.home[data-v-c9b77988]{min-height:100vh}.section[data-v-c9b77988]{scroll-snap-align:start;text-align:center;justify-content:center;align-items:center;height:100vh;padding:2rem;display:flex;position:relative}.hero-content[data-v-c9b77988]{flex-direction:column;align-items:center;display:flex}.hero-title[data-v-c9b77988]{margin-bottom:1rem}.hero-sub[data-v-c9b77988]{opacity:.5;letter-spacing:.05em;font-size:clamp(1rem,3vw,1.4rem);font-weight:300}.scroll-hint[data-v-c9b77988]{opacity:.3;letter-spacing:.1em;text-align:center;font-size:.8rem;animation:2s infinite bounce-c9b77988;position:absolute;bottom:2rem}.scroll-arrow[data-v-c9b77988]{margin-bottom:.3rem;font-size:1.5rem}@keyframes bounce-c9b77988{0%,to{transform:translateY(0)}50%{transform:translateY(8px)}}.float-wrap[data-v-c9b77988]{text-align:center}.float-text[data-v-c9b77988]{opacity:.8;font-size:clamp(1.2rem,4vw,2.5rem)!important;font-weight:600!important}.reveal-wrap[data-v-c9b77988]{text-align:center;max-width:650px}.reveal-text[data-v-c9b77988]{opacity:.6;line-height:2;font-size:clamp(1rem,2.5vw,1.3rem)!important;font-weight:400!important}.cta-box[data-v-c9b77988]{text-align:center}.cta-heading[data-v-c9b77988]{letter-spacing:.1em;margin-bottom:1rem;font-size:clamp(1.5rem,4vw,2.5rem)!important;font-weight:300!important}.cta-desc[data-v-c9b77988]{opacity:.5;margin-bottom:2rem}.cta-btn[data-v-c9b77988]{color:#fff;text-underline-offset:4px;font-size:1.1rem;text-decoration:underline;transition:opacity .3s;display:inline-block}.cta-btn[data-v-c9b77988]:hover{opacity:.7}.im-container[data-v-66865e9a]{width:100%;height:100%;min-height:500px;position:relative}.im-canvas[data-v-66865e9a]{cursor:grab;outline:none;width:100%;height:100%;display:block;overflow:hidden}.im-canvas[data-v-66865e9a]:active{cursor:grabbing}.im-title[data-v-66865e9a]{color:#fff;-webkit-user-select:none;user-select:none;pointer-events:none;font-size:3.5rem;font-weight:900;position:absolute;top:50%;left:1.6em;transform:translate(20%,-50%)}.im-desc[data-v-66865e9a]{color:#fffc;-webkit-user-select:none;user-select:none;pointer-events:none;max-width:10ch;font-size:1.25rem;position:absolute;top:50%;right:1%;transform:translate(-90%,-50%)}.im-btn[data-v-66865e9a]{color:#fff;cursor:pointer;background:#9333ea;border:4px solid #000;border-radius:50%;place-items:center;width:60px;height:60px;font-size:1.5rem;display:grid;position:absolute;bottom:2em;left:50%;transform:translate(-50%)}.im-btn[data-v-66865e9a]:hover{background:#7c3aed}.im-visible[data-v-66865e9a]{opacity:1;pointer-events:auto;transition:opacity .5s ease-in-out}.im-hidden[data-v-66865e9a]{opacity:0;pointer-events:none;transition:opacity .1s ease-in-out}.projects[data-v-bb35a1c5]{width:100%;height:100vh;position:relative}.menu-wrap[data-v-bb35a1c5]{opacity:0;width:100%;height:100%;transition:opacity .8s,transform .8s;transform:scale(.95)}.menu-wrap.visible[data-v-bb35a1c5]{opacity:1;transform:scale(1)}.project-detail[data-v-e10a179d]{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:4rem 2rem;display:flex}.detail-header[data-v-e10a179d]{margin-bottom:2rem}.detail-title[data-v-e10a179d]{margin-bottom:1rem}.detail-tags[data-v-e10a179d]{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-bottom:1.5rem;display:flex}.tag[data-v-e10a179d]{opacity:.4;letter-spacing:.05em;font-size:.8rem}.stars-row[data-v-e10a179d]{justify-content:center;align-items:center;gap:.3rem;display:flex}.stars-count[data-v-e10a179d]{font-variant-numeric:tabular-nums;letter-spacing:.05em;font-family:SF Mono,Fira Code,Cascadia Code,JetBrains Mono,monospace;font-size:2.5rem;font-weight:200}.stars-suffix[data-v-e10a179d]{color:#fbbf24;font-size:1.5rem}.detail-body[data-v-e10a179d]{max-width:600px;margin-bottom:2.5rem}.detail-desc[data-v-e10a179d]{opacity:.6;line-height:1.8;font-size:1rem!important}.detail-actions[data-v-e10a179d]{gap:2rem;display:flex}.btn-link[data-v-e10a179d]{color:#fff;text-underline-offset:4px;font-size:.95rem;text-decoration:underline;transition:opacity .3s}.btn-link[data-v-e10a179d]:hover{opacity:.6}.btn-back[data-v-e10a179d]{opacity:.5}.btn-back[data-v-e10a179d]:hover{opacity:.8}.not-found[data-v-e10a179d]{flex-direction:column;justify-content:center;align-items:center;gap:1rem;min-height:100vh;display:flex}.logo-loop-container[data-v-8d63d6c7]{position:relative;overflow-x:hidden}.logo-loop-fade[data-v-8d63d6c7]{inset-y:0;z-index:1;pointer-events:none;width:clamp(24px,8%,120px);position:absolute}.logo-loop-fade-left[data-v-8d63d6c7]{background:linear-gradient(to right, var(--logoloop-fadeColor,#0a0a0a) 0%, transparent 100%);left:0}.logo-loop-fade-right[data-v-8d63d6c7]{background:linear-gradient(to left, var(--logoloop-fadeColor,#0a0a0a) 0%, transparent 100%);right:0}.logo-loop-track[data-v-8d63d6c7]{will-change:transform;-webkit-user-select:none;user-select:none;width:max-content;display:flex}.logo-loop-seq[data-v-8d63d6c7]{align-items:center;margin:0;padding:0;list-style:none;display:flex}.logo-loop-item[data-v-8d63d6c7]{margin-right:var(--logoloop-gap,32px);font-size:var(--logoloop-logoHeight,28px);flex:none;line-height:1}.logo-loop-link[data-v-8d63d6c7]{border-radius:4px;align-items:center;text-decoration:none;transition:opacity .2s;display:inline-flex}.logo-loop-link[data-v-8d63d6c7]:hover{opacity:.8}.logo-loop-img[data-v-8d63d6c7]{height:var(--logoloop-logoHeight,28px);object-fit:contain;pointer-events:none;width:auto;display:block}.logo-loop-scale-hover[data-v-8d63d6c7]{transition:transform .3s cubic-bezier(.4,0,.2,1)}.logo-loop-item-hover:hover .logo-loop-scale-hover[data-v-8d63d6c7]{transform:scale(1.2)}.about[data-v-3524ab93]{max-width:800px;min-height:100vh;margin:0 auto;padding:4rem 2rem}.about-section[data-v-3524ab93]{text-align:center;margin-bottom:4rem}.about-title[data-v-3524ab93]{margin-bottom:2rem}.about-content[data-v-3524ab93]{max-width:600px;margin:0 auto}.about-card[data-v-3524ab93]{text-align:left;border:1px solid #ffffff1a;border-radius:16px;padding:2rem}.card-title[data-v-3524ab93]{margin-bottom:1.5rem}.about-text[data-v-3524ab93]{opacity:.7;margin-bottom:1rem;font-size:.95rem;line-height:1.8}.about-text[data-v-3524ab93]:last-child{margin-bottom:0}.tech-section[data-v-3524ab93]{margin-bottom:4rem}.section-label[data-v-3524ab93]{text-align:center;opacity:.4;letter-spacing:.15em;text-transform:uppercase;margin-bottom:2rem;font-size:.85rem;font-weight:400}.links-section[data-v-3524ab93]{margin-bottom:2rem}.links-grid[data-v-3524ab93]{grid-template-columns:1fr 1fr;gap:1rem;display:grid}@media (width<=500px){.links-grid[data-v-3524ab93]{grid-template-columns:1fr}}.link-card[data-v-3524ab93]{color:#fff;border:1px solid #ffffff1a;border-radius:12px;flex-direction:column;align-items:center;gap:.5rem;padding:1.5rem;text-decoration:none;transition:all .3s;display:flex}.link-card[data-v-3524ab93]:hover{background:#ffffff0d;border-color:#ffffff4d}.link-icon[data-v-3524ab93]{opacity:.7;font-size:1.5rem}.link-label[data-v-3524ab93]{font-size:1rem;font-weight:600}.link-url[data-v-3524ab93]{opacity:.4;font-size:.8rem}.glitch-text[data-v-b246caab]{color:#fff;white-space:nowrap;-webkit-user-select:none;user-select:none;cursor:pointer;margin-inline:auto;font-size:clamp(2rem,10vw,8rem);font-weight:900;position:relative}.glitch-text[data-v-b246caab]:before,.glitch-text[data-v-b246caab]:after{content:attr(data-text);color:#fff;clip-path:inset(0);background:#0a0a0a;position:absolute;top:0;overflow:hidden}.glitch-text[data-v-b246caab]:not(.glitch-on-hover):after{text-shadow:var(--after-shadow,-10px 0 red);animation:animate-glitch-b246caab var(--after-duration,3s) infinite linear alternate-reverse;left:10px}.glitch-text[data-v-b246caab]:not(.glitch-on-hover):before{text-shadow:var(--before-shadow,10px 0 cyan);animation:animate-glitch-b246caab var(--before-duration,2s) infinite linear alternate-reverse;left:-10px}.glitch-on-hover[data-v-b246caab]:before,.glitch-on-hover[data-v-b246caab]:after{content:"";opacity:0;animation:none}.glitch-on-hover[data-v-b246caab]:hover:before{content:attr(data-text);opacity:1;text-shadow:var(--before-shadow,10px 0 cyan);animation:animate-glitch-b246caab var(--before-duration,2s) infinite linear alternate-reverse;left:-10px}.glitch-on-hover[data-v-b246caab]:hover:after{content:attr(data-text);opacity:1;text-shadow:var(--after-shadow,-10px 0 red);animation:animate-glitch-b246caab var(--after-duration,3s) infinite linear alternate-reverse;left:10px}@keyframes animate-glitch-b246caab{0%{clip-path:inset(20% 0 50%)}5%{clip-path:inset(10% 0 60%)}10%{clip-path:inset(15% 0 55%)}15%{clip-path:inset(25% 0 35%)}20%{clip-path:inset(30% 0 40%)}25%{clip-path:inset(40% 0 20%)}30%{clip-path:inset(10% 0 60%)}35%{clip-path:inset(15% 0 55%)}40%{clip-path:inset(25% 0 35%)}45%{clip-path:inset(30% 0 40%)}50%{clip-path:inset(20% 0 50%)}55%{clip-path:inset(10% 0 60%)}60%{clip-path:inset(15% 0 55%)}65%{clip-path:inset(25% 0 35%)}70%{clip-path:inset(30% 0 40%)}75%{clip-path:inset(40% 0 20%)}80%{clip-path:inset(20% 0 50%)}85%{clip-path:inset(10% 0 60%)}90%{clip-path:inset(15% 0 55%)}95%{clip-path:inset(25% 0 35%)}to{clip-path:inset(30% 0 40%)}}.not-found[data-v-a2516b56]{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.message[data-v-a2516b56]{opacity:.6;letter-spacing:.15em;margin-top:1.5rem;margin-bottom:2rem;font-size:1.5rem}.back-link[data-v-a2516b56]{color:#fff;opacity:.5;border-radius:4px;padding:.6rem 1.5rem;font-size:1rem;text-decoration:none;transition:all .3s}.back-link[data-v-a2516b56]:hover{opacity:1;border-color:#fff}
