.nav[data-v-00f836ca]{position:fixed;top:0;width:100%;z-index:1000;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);background:#0a0a0a99;border-bottom:1px solid transparent;transition:all var(--transition-satisfying)}.nav.scrolled[data-v-00f836ca]{background:#0a0a0ae6;border-bottom-color:var(--border-color);box-shadow:0 4px 20px #0006}.nav-inner[data-v-00f836ca]{height:64px;display:flex;align-items:center;justify-content:space-between}.logo[data-v-00f836ca]{font-weight:700;font-size:1.1rem;letter-spacing:1px;color:var(--text-accent);text-decoration:none;transition:color var(--transition-base)}.logo[data-v-00f836ca]:hover{color:var(--accent-primary)}.links[data-v-00f836ca]{display:flex;gap:2rem}.links button[data-v-00f836ca]{background:none;border:none;color:var(--text-secondary);font:inherit;font-size:.9rem;font-weight:500;cursor:pointer;transition:color var(--transition-base);position:relative;padding:.25rem 0}.links button[data-v-00f836ca]:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:1.5px;background:var(--accent-primary);border-radius:var(--radius-full);transition:width var(--transition-base)}.links button[data-v-00f836ca]:hover{color:var(--text-accent)}.links button[data-v-00f836ca]:hover:after{width:100%}.actions[data-v-00f836ca]{display:flex;align-items:center;gap:.75rem}.nav-link[data-v-00f836ca]{color:var(--text-secondary);font-size:.85rem;font-weight:500;padding:.4rem .75rem;border-radius:var(--radius-sm);transition:all var(--transition-base)}.nav-link[data-v-00f836ca]:hover{color:var(--text-accent);background:#ffffff0d}.resume-link[data-v-00f836ca]{color:var(--accent-primary);border:1px solid rgba(59,130,246,.4)}.resume-link[data-v-00f836ca]:hover{background:var(--accent-primary);color:var(--text-accent);border-color:var(--accent-primary)}.hamburger[data-v-00f836ca]{display:none;flex-direction:column;justify-content:center;gap:5px;width:32px;height:32px;background:none;border:none;cursor:pointer;padding:4px;z-index:1001}.hamburger span[data-v-00f836ca]{display:block;width:100%;height:2px;background:var(--text-primary);border-radius:var(--radius-full);transition:all var(--transition-base);transform-origin:center}.hamburger.active span[data-v-00f836ca]:nth-child(1){transform:rotate(45deg) translate(5px,5px)}.hamburger.active span[data-v-00f836ca]:nth-child(2){opacity:0;transform:scaleX(0)}.hamburger.active span[data-v-00f836ca]:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}.mobile-overlay[data-v-00f836ca]{position:fixed;top:0;left:0;width:100%;height:100vh;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:999;display:flex;justify-content:flex-end}.mobile-menu[data-v-00f836ca]{width:280px;max-width:80vw;height:100%;background:var(--bg-secondary);border-left:1px solid var(--border-color);padding:5rem var(--spacing-md) var(--spacing-md);display:flex;flex-direction:column;gap:.25rem;overflow-y:auto}.mobile-menu button[data-v-00f836ca],.mobile-menu a[data-v-00f836ca]{background:none;border:none;color:var(--text-primary);font-family:var(--font-family);font-size:1.05rem;font-weight:500;padding:.875rem var(--spacing-sm);text-align:left;cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-base);text-decoration:none;display:block}.mobile-menu button[data-v-00f836ca]:hover,.mobile-menu a[data-v-00f836ca]:hover{color:var(--accent-primary);background:#3b82f614}.mobile-divider[data-v-00f836ca]{height:1px;background:var(--border-color);margin:var(--spacing-xs) 0}.slide-enter-active[data-v-00f836ca],.slide-leave-active[data-v-00f836ca]{transition:opacity var(--transition-satisfying)}.slide-enter-active .mobile-menu[data-v-00f836ca],.slide-leave-active .mobile-menu[data-v-00f836ca]{transition:transform var(--transition-satisfying)}.slide-enter-from[data-v-00f836ca]{opacity:0}.slide-enter-from .mobile-menu[data-v-00f836ca]{transform:translate(100%)}.slide-leave-to[data-v-00f836ca]{opacity:0}.slide-leave-to .mobile-menu[data-v-00f836ca]{transform:translate(100%)}@media (max-width: 768px){.links[data-v-00f836ca],.nav-link[data-v-00f836ca]{display:none}.hamburger[data-v-00f836ca]{display:flex}}@media (max-width: 360px){.nav-inner[data-v-00f836ca]{height:56px}}.media-viewer[data-v-cf4fe063]{width:100%}.media-grid[data-v-cf4fe063]{display:grid;gap:var(--spacing-md);width:100%}.grid-single[data-v-cf4fe063]{grid-template-columns:1fr;max-width:900px;margin:0 auto}.grid-double[data-v-cf4fe063]{grid-template-columns:repeat(2,1fr)}.grid-multi[data-v-cf4fe063]{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.media-item[data-v-cf4fe063]{position:relative;width:100%;background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;transition:all var(--transition-base)}.media-item[data-v-cf4fe063]:hover{border-color:var(--border-color-hover);box-shadow:var(--shadow-md)}.media-item.media-video[data-v-cf4fe063]{aspect-ratio:16 / 9}.video-container[data-v-cf4fe063]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-primary)}.media-content[data-v-cf4fe063]{display:block;width:100%;height:100%;object-fit:cover;background-color:var(--bg-tertiary)}.media-item.media-image .media-content[data-v-cf4fe063],.media-item.media-gif .media-content[data-v-cf4fe063]{max-height:600px;object-fit:contain}.media-item.media-video .media-content[data-v-cf4fe063]{object-fit:contain;background-color:var(--bg-primary)}@media (max-width: 768px){.media-grid[data-v-cf4fe063]{gap:var(--spacing-sm)}.grid-double[data-v-cf4fe063],.grid-multi[data-v-cf4fe063]{grid-template-columns:1fr}.media-item.media-image .media-content[data-v-cf4fe063],.media-item.media-gif .media-content[data-v-cf4fe063]{max-height:400px}}@media (min-width: 769px) and (max-width: 1024px){.grid-multi[data-v-cf4fe063]{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}}.no-media[data-v-cf4fe063]{text-align:center;padding:var(--spacing-lg);color:var(--text-secondary);font-style:italic}.gallery-modal-backdrop[data-v-45ab4786]{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999;padding:var(--spacing-md)}.gallery-modal-content[data-v-45ab4786]{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:100%;max-width:1000px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 25px 50px -12px #00000080;animation:modalScaleUp-45ab4786 .3s cubic-bezier(.16,1,.3,1) forwards;will-change:transform,opacity}@keyframes modalScaleUp-45ab4786{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.fade-enter-active[data-v-45ab4786],.fade-leave-active[data-v-45ab4786]{transition:opacity .3s ease}.fade-enter-from[data-v-45ab4786],.fade-leave-to[data-v-45ab4786]{opacity:0}.modal-header[data-v-45ab4786]{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--border-color);background:#ffffff05}.modal-title[data-v-45ab4786]{margin:0;font-size:1.25rem;color:var(--text-accent);flex-grow:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:1rem}.text-muted[data-v-45ab4786]{color:var(--text-secondary);font-weight:400;font-size:1rem}.close-btn[data-v-45ab4786]{background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all var(--transition-fast);flex-shrink:0;z-index:10}.close-btn[data-v-45ab4786]:hover{color:var(--text-primary);background:#ffffff1a}.modal-body[data-v-45ab4786]{padding:1.5rem;overflow-y:auto;flex-grow:1;background:var(--bg-secondary)}.empty-state[data-v-45ab4786]{text-align:center;padding:3rem;color:var(--text-secondary)}@media (max-width: 768px){.gallery-modal-backdrop[data-v-45ab4786]{padding:0}.gallery-modal-content[data-v-45ab4786]{max-height:100dvh;height:100dvh;border-radius:0;border:none}.modal-body[data-v-45ab4786]{padding:1rem}}.app[data-v-53d97bae]{min-height:100vh;position:relative;background-color:var(--bg-primary)}main[data-v-53d97bae]{position:relative;z-index:1}.bg-grid[data-v-53d97bae]{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;background-image:linear-gradient(rgba(59,130,246,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(59,130,246,.05) 1px,transparent 1px);background-size:50px 50px;mask-image:radial-gradient(ellipse at center,black 10%,transparent 80%);-webkit-mask-image:radial-gradient(ellipse at center,black 10%,transparent 80%);animation:bgScroll-53d97bae 40s linear infinite}@keyframes bgScroll-53d97bae{0%{transform:translateZ(0)}to{transform:translate3d(0,50px,0)}}.bg-particles[data-v-53d97bae]{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;overflow:hidden}.particle[data-v-53d97bae]{position:absolute;width:5px;height:5px;background:var(--accent-primary);border-radius:50%;opacity:.4;box-shadow:0 0 12px 2px var(--accent-primary);animation:floatUp-53d97bae linear infinite}@keyframes floatUp-53d97bae{0%{transform:translate3d(0,100vh,0) scale(0);opacity:0}10%{opacity:.6}90%{opacity:.6}to{transform:translate3d(0,-100px,0) scale(1.5);opacity:0}}.bg-glow[data-v-53d97bae]{position:fixed;border-radius:50%;pointer-events:none;z-index:0;filter:blur(100px);opacity:.18}.bg-glow-1[data-v-53d97bae]{width:600px;height:600px;background:var(--accent-primary);top:-200px;right:-200px;animation:glowFloat-53d97bae 25s ease-in-out infinite}.bg-glow-2[data-v-53d97bae]{width:500px;height:500px;background:var(--accent-secondary);bottom:-150px;left:-150px;animation:glowFloat-53d97bae 30s ease-in-out infinite reverse}@keyframes glowFloat-53d97bae{0%,to{transform:translate(0)}50%{transform:translate(25px,25px)}}@media (prefers-reduced-motion: reduce){.bg-glow[data-v-53d97bae]{animation:none}}.page-enter-active[data-v-53d97bae],.page-leave-active[data-v-53d97bae]{transition:opacity .3s cubic-bezier(.2,.8,.2,1),transform .3s cubic-bezier(.2,.8,.2,1)}.page-enter-from[data-v-53d97bae]{opacity:0;transform:translateY(10px)}.page-leave-to[data-v-53d97bae]{opacity:0;transform:translateY(-10px)}@media (max-width: 768px){.bg-particles .particle[data-v-53d97bae]:nth-child(n+15){display:none}.bg-particles[data-v-53d97bae]{opacity:.3}.bg-grid[data-v-53d97bae]{opacity:.5}.bg-glow[data-v-53d97bae]{opacity:.06;filter:blur(80px)}.bg-glow-1[data-v-53d97bae]{width:400px;height:400px}.bg-glow-2[data-v-53d97bae]{width:300px;height:300px}}.hero[data-v-dc5d5d53]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:120px 0 100px;background:transparent;position:relative;overflow:hidden}.hero>.container[data-v-dc5d5d53]{display:flex;flex-direction:column;gap:var(--spacing-xl);width:100%;position:relative;z-index:2}.hero-content[data-v-dc5d5d53]{text-align:center;max-width:800px;margin:0 auto;position:relative;animation:heroEntrance-dc5d5d53 1s cubic-bezier(.2,.8,.2,1) both;will-change:transform,opacity}@keyframes heroEntrance-dc5d5d53{0%{opacity:0;transform:translateY(30px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.hero-label[data-v-dc5d5d53]{display:inline-block;font-size:.8rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-primary);background:#3b82f61a;border:1px solid rgba(59,130,246,.2);padding:.3rem 1rem;border-radius:var(--radius-full);margin-bottom:var(--spacing-md)}.hero-name[data-v-dc5d5d53]{margin-bottom:.5rem;background:var(--gradient-text);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-size:clamp(2.8rem,6vw,4.5rem);font-weight:700;letter-spacing:-.03em;line-height:1.1}.tech-shape[data-v-dc5d5d53]{position:absolute;z-index:-1;opacity:0;pointer-events:none}.shape-1[data-v-dc5d5d53]{top:10%;left:5%;width:120px;height:120px;border:1px solid rgba(59,130,246,.2);border-radius:30% 70% 70% 30%/30% 30% 70% 70%;animation:floatShape1-dc5d5d53 15s ease-in-out infinite,fadeInShape-dc5d5d53 .8s ease-out .5s forwards;background:radial-gradient(circle at center,rgba(59,130,246,.05) 0%,transparent 70%)}.shape-2[data-v-dc5d5d53]{top:60%;right:5%;width:180px;height:180px;border:1px solid rgba(139,92,246,.15);border-radius:60% 40% 30% 70%/60% 30% 70% 40%;animation:floatShape2-dc5d5d53 18s ease-in-out infinite reverse,fadeInShape-dc5d5d53 .8s ease-out .8s forwards;background:radial-gradient(circle at center,rgba(139,92,246,.03) 0%,transparent 70%)}.shape-3[data-v-dc5d5d53]{bottom:-5%;left:20%;width:80px;height:80px;border:1px dashed rgba(16,185,129,.2);border-radius:50%;animation:floatShape3-dc5d5d53 20s linear infinite,fadeInShape-dc5d5d53 .8s ease-out 1.1s forwards}@keyframes fadeInShape-dc5d5d53{to{opacity:1}}@keyframes floatShape1-dc5d5d53{0%,to{transform:translate(0) rotate(0)}33%{transform:translate(30px,-40px) rotate(10deg)}66%{transform:translate(-20px,20px) rotate(-5deg)}}@keyframes floatShape2-dc5d5d53{0%,to{transform:translate(0) rotate(0)}33%{transform:translate(-40px,-30px) rotate(-15deg)}66%{transform:translate(20px,-40px) rotate(10deg)}}@keyframes floatShape3-dc5d5d53{0%{transform:translate(0) rotate(0)}to{transform:translate(20px,-20px) rotate(360deg)}}.hero-subtitle[data-v-dc5d5d53]{font-size:clamp(1.1rem,2vw,1.4rem);color:var(--text-secondary);margin-bottom:var(--spacing-md);font-weight:400;letter-spacing:-.01em;min-height:2rem}.typing-text[data-v-dc5d5d53]{color:var(--text-accent);font-family:var(--font-mono)}.cursor[data-v-dc5d5d53]{display:inline-block;color:var(--accent-primary);animation:blink-dc5d5d53 1s step-end infinite}@keyframes blink-dc5d5d53{0%,to{opacity:1}50%{opacity:0}}.hero-description[data-v-dc5d5d53]{font-size:clamp(.95rem,1.3vw,1.05rem);color:var(--text-secondary);margin-bottom:var(--spacing-lg);line-height:1.7;max-width:600px;margin-left:auto;margin-right:auto;opacity:.8}.hero-stats[data-v-dc5d5d53]{display:flex;align-items:center;justify-content:center;gap:1.5rem;background:#ffffff08;border:1px solid var(--border-color);padding:.75rem 1.5rem;border-radius:var(--radius-full);width:fit-content;margin:0 auto}.stat-item[data-v-dc5d5d53]{display:flex;align-items:center;gap:.5rem}.stat-value[data-v-dc5d5d53]{color:var(--text-accent);font-weight:700;font-size:1rem}.stat-label[data-v-dc5d5d53]{color:var(--text-secondary);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.stat-divider[data-v-dc5d5d53]{width:1px;height:16px;background:var(--border-color)}@media (max-width: 600px){.hero-stats[data-v-dc5d5d53]{flex-direction:column;gap:.5rem;padding:1rem;border-radius:var(--radius-md);width:100%}.stat-divider[data-v-dc5d5d53]{width:100%;height:1px}}.featured-projects[data-v-dc5d5d53]{position:relative;z-index:1;animation:fadeInUp .8s ease-out .3s both}.featured-title[data-v-dc5d5d53]{text-align:center;font-size:clamp(1.1rem,1.5vw,1.25rem);color:var(--text-secondary);margin-bottom:var(--spacing-md);font-weight:400;letter-spacing:.02em;text-transform:uppercase;font-size:.85rem}.featured-grid[data-v-dc5d5d53]{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--spacing-md);max-width:960px;margin:0 auto}.featured-grid.grid-single[data-v-dc5d5d53]{max-width:560px}.featured-card[data-v-dc5d5d53]{background:var(--card-bg);border:1px solid var(--border-color);border-radius:16px;padding:1.5rem;text-decoration:none;transition:all .4s cubic-bezier(.25,.46,.45,.94);position:relative;overflow:hidden;display:flex;flex-direction:column;gap:.6rem;will-change:transform,border-color,box-shadow}.featured-card-gradient[data-v-dc5d5d53]{position:absolute;top:0;left:0;width:100%;height:2px;background:var(--gradient-primary);transform:scaleX(0);transform-origin:left;transition:transform var(--transition-slow)}.featured-card:hover .featured-card-gradient[data-v-dc5d5d53]{transform:scaleX(1)}.featured-card[data-v-dc5d5d53]:hover{border-color:var(--accent-primary);transform:translateY(-4px);box-shadow:0 12px 30px -10px #0000004d,0 0 15px #3b82f61a;background:var(--card-hover)}.featured-card.card-primary .featured-card-gradient[data-v-dc5d5d53]{transform:scaleX(1)}.featured-card.card-primary[data-v-dc5d5d53]{border-color:#3b82f61f}.featured-card-header[data-v-dc5d5d53]{display:flex;gap:6px}.featured-title-wrap[data-v-dc5d5d53]{display:flex;align-items:center;gap:10px}.featured-icon[data-v-dc5d5d53]{width:48px;height:48px;object-fit:contain;border-radius:12px;background:var(--bg-primary);padding:6px;border:1px solid var(--border-color);box-shadow:0 4px 12px #00000026;transition:all .4s cubic-bezier(.175,.885,.32,1.275)}.featured-card:hover .featured-icon[data-v-dc5d5d53]{transform:scale(1.1) rotate(-5deg);border-color:var(--accent-primary)}.featured-card h3[data-v-dc5d5d53]{font-size:1.2rem;color:var(--text-accent);letter-spacing:-.01em;transition:color var(--transition-base);margin:0}.featured-card:hover h3[data-v-dc5d5d53]{color:var(--accent-primary)}.featured-card p[data-v-dc5d5d53]{font-size:.9rem;color:var(--text-secondary);line-height:1.6;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.featured-tech[data-v-dc5d5d53]{display:flex;flex-wrap:wrap;gap:5px;margin-top:.25rem}.featured-tech span[data-v-dc5d5d53]{font-size:.72rem;color:var(--accent-primary);background:#3b82f614;padding:2px 8px;border-radius:var(--radius-full);font-family:var(--font-mono);font-weight:500}.featured-update[data-v-dc5d5d53]{display:flex;align-items:center;gap:6px;margin-top:auto;padding-top:.5rem;border-top:1px solid var(--border-color)}.update-dot[data-v-dc5d5d53]{width:5px;height:5px;border-radius:50%;background:var(--accent-warm);flex-shrink:0}.update-text[data-v-dc5d5d53]{font-size:.75rem;color:var(--text-secondary);font-family:var(--font-mono);opacity:.8}.scroll-indicator[data-v-dc5d5d53]{position:absolute;bottom:40px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;z-index:5;padding:.6rem 1.25rem;background:#3b82f60f;border:1px solid rgba(59,130,246,.15);border-radius:var(--radius-full);transition:all var(--transition-base)}.scroll-indicator[data-v-dc5d5d53]:hover{background:#3b82f61f;border-color:#3b82f64d}.scroll-text[data-v-dc5d5d53]{font-size:.78rem;color:var(--accent-primary);font-weight:500;letter-spacing:.03em}.scroll-arrows[data-v-dc5d5d53]{display:flex;flex-direction:column;gap:2px}.scroll-arrows span[data-v-dc5d5d53]{width:7px;height:7px;border-bottom:1.5px solid var(--accent-primary);border-right:1.5px solid var(--accent-primary);transform:rotate(45deg);animation:scrollChevron-dc5d5d53 2s infinite;opacity:0}.scroll-arrows span[data-v-dc5d5d53]:nth-child(1){animation-delay:0s}.scroll-arrows span[data-v-dc5d5d53]:nth-child(2){animation-delay:.2s}.scroll-arrows span[data-v-dc5d5d53]:nth-child(3){animation-delay:.4s}@keyframes scrollChevron-dc5d5d53{0%{transform:rotate(45deg) translate(0);opacity:0}40%{opacity:1}80%{transform:rotate(45deg) translate(8px,8px);opacity:0}to{opacity:0}}@media (prefers-reduced-motion: reduce){.hero-content[data-v-dc5d5d53],.featured-projects[data-v-dc5d5d53]{animation:none}.scroll-arrows span[data-v-dc5d5d53]{animation:none;opacity:1}}@media (max-width: 768px){.hero[data-v-dc5d5d53]{min-height:85vh;padding-top:100px;padding-bottom:80px}.featured-grid[data-v-dc5d5d53]{grid-template-columns:1fr;gap:var(--spacing-sm)}}@media (max-width: 360px){.hero[data-v-dc5d5d53]{min-height:80vh}.hero-label[data-v-dc5d5d53]{font-size:.7rem}}.project-card[data-v-f4529d14]{background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:1.25rem;height:100%;display:flex;flex-direction:column;transition:all .4s cubic-bezier(.25,.46,.45,.94);position:relative;overflow:hidden;will-change:transform,box-shadow}.card-gradient-line[data-v-f4529d14]{position:absolute;top:0;left:0;width:100%;height:2px;background:var(--gradient-primary);transform:scaleX(0);transform-origin:left;transition:transform var(--transition-base)}.project-card:hover .card-gradient-line[data-v-f4529d14]{transform:scaleX(1)}.project-card[data-v-f4529d14]:hover{background-color:var(--card-hover);border-color:var(--accent-primary);transform:translateY(-6px);box-shadow:0 12px 40px -12px #0000004d,0 0 20px #3b82f61a}.project-card.card-highlight .card-gradient-line[data-v-f4529d14]{transform:scaleX(1)}.project-card.card-highlight[data-v-f4529d14]{border-color:#3b82f626}.project-card.card-highlight[data-v-f4529d14]:hover{box-shadow:var(--shadow-lg),var(--shadow-glow-strong)}.project-card.card-wip .card-gradient-line[data-v-f4529d14]{background:linear-gradient(90deg,var(--accent-warm),var(--accent-primary))}.card-badges[data-v-f4529d14]{display:flex;gap:6px;margin-bottom:var(--spacing-sm)}.project-card-link[data-v-f4529d14]{text-decoration:none;color:inherit;display:block;margin-bottom:var(--spacing-sm)}.project-header-top[data-v-f4529d14]{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:.5rem}.project-icon-container[data-v-f4529d14]{flex-shrink:0;width:48px;height:48px;position:relative;z-index:1}.project-icon[data-v-f4529d14]{width:100%;height:100%;object-fit:contain;border-radius:12px;background:var(--bg-primary);padding:6px;border:1px solid var(--border-color);box-shadow:0 4px 12px #00000026;transition:all .5s cubic-bezier(.175,.885,.32,1.275)}.project-card:hover .project-icon[data-v-f4529d14]{transform:scale(1.15) rotate(-5deg);border-color:var(--accent-primary);box-shadow:0 8px 24px #3b82f640}.project-title[data-v-f4529d14]{font-size:1.4rem;margin-bottom:0;color:var(--text-accent);transition:color var(--transition-base);letter-spacing:-.01em}.project-card-link:hover .project-title[data-v-f4529d14]{color:var(--accent-primary)}.project-description[data-v-f4529d14]{color:var(--text-secondary);margin-bottom:0;line-height:1.6;font-size:.95rem}.project-tech[data-v-f4529d14]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:var(--spacing-sm)}.tech-tag[data-v-f4529d14]{display:inline-block;padding:.2rem .65rem;background-color:#3b82f614;border:1px solid rgba(59,130,246,.15);border-radius:var(--radius-full);font-size:.8rem;color:var(--accent-primary);font-family:var(--font-mono);font-weight:500;transition:all var(--transition-fast)}.tech-tag[data-v-f4529d14]:hover{background-color:#3b82f626;border-color:#3b82f64d;transform:translateY(-1px)}.project-highlights[data-v-f4529d14]{list-style:none;margin-bottom:var(--spacing-sm);flex-grow:1}.project-highlights li[data-v-f4529d14]{color:var(--text-secondary);margin-bottom:.4rem;padding-left:1.25rem;position:relative;line-height:1.6;font-size:.9rem}.project-highlights li[data-v-f4529d14]:before{content:"▸";position:absolute;left:0;color:var(--accent-primary);font-weight:700;font-size:.85rem}.card-update-preview[data-v-f4529d14]{display:flex;align-items:baseline;gap:var(--spacing-xs);padding:.5rem .75rem;background:#f59e0b0f;border:1px solid rgba(245,158,11,.12);border-radius:var(--radius-sm);margin-bottom:var(--spacing-sm);font-size:.82rem}.update-date[data-v-f4529d14]{color:var(--accent-warm);font-family:var(--font-mono);font-weight:500;font-size:.75rem;white-space:nowrap}.update-title[data-v-f4529d14]{color:var(--text-secondary)}.project-actions[data-v-f4529d14]{margin-top:auto;display:flex;gap:var(--spacing-sm);flex-wrap:wrap;padding-top:var(--spacing-sm);border-top:1px solid var(--border-color)}.project-link[data-v-f4529d14]{color:var(--accent-primary);font-weight:500;font-size:.9rem;display:inline-flex;align-items:center;gap:.35rem;transition:all var(--transition-fast);text-decoration:none}.project-link[data-v-f4529d14]:hover{gap:.6rem}.github-link[data-v-f4529d14]{color:var(--text-secondary)}.github-link[data-v-f4529d14]:hover{color:var(--accent-primary)}.download-link[data-v-f4529d14]{color:var(--accent-secondary);background:#8b5cf614;padding:.2rem .65rem;border-radius:var(--radius-sm);border:1px solid rgba(139,92,246,.2);transition:all var(--transition-base)}.download-link[data-v-f4529d14]:hover{color:var(--text-accent);background:var(--accent-secondary);border-color:var(--accent-secondary)}.request-link[data-v-f4529d14]{color:var(--accent-warm);background:#f59e0b14;padding:.2rem .65rem;border-radius:var(--radius-sm);border:1px solid rgba(245,158,11,.2);transition:all var(--transition-base)}.request-link[data-v-f4529d14]:hover{color:var(--bg-primary);background:var(--accent-warm);border-color:var(--accent-warm)}.btn-gallery[data-v-f4529d14]{display:flex;align-items:center;gap:6px;padding:.35rem .75rem;background:#3b82f61a;color:var(--accent-primary);border:1px solid rgba(59,130,246,.2);border-radius:var(--radius-sm);font-size:.85rem;font-weight:500;cursor:pointer;transition:all var(--transition-base);margin-right:auto}.btn-gallery[data-v-f4529d14]:hover{background:#3b82f633;color:#fff}@media (prefers-reduced-motion: reduce){.project-card[data-v-f4529d14]{transition:background-color var(--transition-base),border-color var(--transition-base)}.project-card[data-v-f4529d14]:hover{transform:none}}.mini-card[data-v-b511a4b0]{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:.85rem;transition:all .3s cubic-bezier(.25,.46,.45,.94);display:flex;flex-direction:column;gap:.6rem;position:relative;overflow:hidden;will-change:transform,box-shadow}.mini-gradient-line[data-v-b511a4b0]{position:absolute;top:0;left:0;width:100%;height:1.5px;background:var(--gradient-primary);transform:scaleX(0);transform-origin:left;transition:transform var(--transition-base)}.mini-card:hover .mini-gradient-line[data-v-b511a4b0]{transform:scaleX(1)}.mini-card[data-v-b511a4b0]:hover{border-color:var(--accent-primary);transform:translateY(-2px);background:var(--card-hover);box-shadow:0 10px 30px -10px #3b82f626}.mini-card-header[data-v-b511a4b0]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--spacing-sm)}.mini-title-wrap[data-v-b511a4b0]{display:flex;align-items:center;gap:8px}.mini-icon[data-v-b511a4b0]{width:32px;height:32px;object-fit:contain;border-radius:8px;background:var(--bg-primary);padding:4px;border:1px solid var(--border-color);box-shadow:0 2px 8px #0000001a;transition:all .4s cubic-bezier(.175,.885,.32,1.275)}.mini-card:hover .mini-icon[data-v-b511a4b0]{transform:scale(1.15) rotate(5deg);border-color:var(--accent-primary);box-shadow:0 4px 12px #3b82f633}.mini-meta[data-v-b511a4b0]{display:flex;align-items:center;gap:6px;flex-shrink:0}.mini-title[data-v-b511a4b0]{font-size:1rem;color:var(--text-accent);margin:0;letter-spacing:-.01em;font-weight:600}.mini-badge[data-v-b511a4b0]{font-size:.65rem;padding:1px 6px;background:#10b9811a;color:var(--accent-green);border:1px solid rgba(16,185,129,.2);border-radius:4px;font-weight:600;text-transform:uppercase}.mini-tech[data-v-b511a4b0]{display:flex;flex-wrap:wrap;gap:4px}.mini-tech span[data-v-b511a4b0]{font-size:.65rem;color:var(--accent-primary);background:#3b82f60d;padding:1px 6px;border-radius:4px;font-family:var(--font-mono);font-weight:500;border:1px solid rgba(59,130,246,.1)}.mini-description[data-v-b511a4b0]{color:var(--text-secondary);font-size:.85rem;line-height:1.4;margin:0;flex-grow:1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.mini-actions[data-v-b511a4b0]{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:auto;padding-top:.5rem;border-top:1px solid var(--border-color)}.mini-link[data-v-b511a4b0]{font-size:.75rem;color:var(--text-secondary);text-decoration:none;padding:4px 10px;border:1px solid var(--border-color);border-radius:6px;transition:all .2s ease;font-weight:500}.mini-link[data-v-b511a4b0]:hover{border-color:var(--accent-primary);color:var(--accent-primary);background:#3b82f60d;transform:translateY(-1px)}.btn-gallery[data-v-b511a4b0]{display:flex;align-items:center;background:transparent;cursor:pointer;font-family:inherit;color:var(--accent-primary);border-color:#3b82f633}.btn-gallery[data-v-b511a4b0]:hover{background:#3b82f61a;color:var(--accent-primary);border-color:var(--accent-primary)}.mini-link.download[data-v-b511a4b0]{color:var(--accent-secondary)}.mini-link.download[data-v-b511a4b0]:hover{border-color:var(--accent-secondary);background:#8b5cf614}@media (prefers-reduced-motion: reduce){.mini-card[data-v-b511a4b0]:hover{transform:none}}.projects[data-v-de26c5da]{position:relative}.projects-header[data-v-de26c5da]{margin-bottom:var(--spacing-lg)}.projects-grid[data-v-de26c5da]{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:var(--spacing-md)}.project-card-animated[data-v-de26c5da]{opacity:0;animation:fadeInScale-de26c5da .6s ease-out forwards;will-change:transform,opacity}@keyframes fadeInScale-de26c5da{0%{opacity:0;transform:translate3d(0,20px,0) scale(.97)}to{opacity:1;transform:translateZ(0) scale(1)}}@media (prefers-reduced-motion: reduce){.project-card-animated[data-v-de26c5da]{animation:none;opacity:1}}.show-more-container[data-v-de26c5da]{display:flex;justify-content:center;margin-top:var(--spacing-lg)}.show-more-btn[data-v-de26c5da]{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:.65rem 1.75rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-full);color:var(--text-primary);font-family:var(--font-family);font-size:.95rem;font-weight:500;cursor:pointer;transition:all var(--transition-base);text-decoration:none}.show-more-btn[data-v-de26c5da]:hover{border-color:var(--accent-primary);background:#3b82f60f;color:var(--accent-primary);transform:translateY(-2px);box-shadow:var(--shadow-sm)}.show-more-icon[data-v-de26c5da]{transition:transform var(--transition-base);font-size:1rem}.show-more-btn:hover .show-more-icon[data-v-de26c5da]{transform:translate(4px)}.mini-projects-section[data-v-de26c5da]{margin-top:var(--spacing-xl);padding-top:var(--spacing-lg);border-top:1px solid var(--border-color)}.mini-projects-title[data-v-de26c5da]{text-align:center;color:var(--text-secondary);font-size:.85rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase;margin-bottom:var(--spacing-md)}.mini-projects-grid[data-v-de26c5da]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--spacing-md)}@media (max-width: 768px){.projects-grid[data-v-de26c5da],.mini-projects-grid[data-v-de26c5da]{grid-template-columns:1fr}}.skills[data-v-2379a80e]{position:relative;z-index:2}.skills-header[data-v-2379a80e]{text-align:center;margin-bottom:var(--spacing-xl)}.section-title[data-v-2379a80e]{margin-bottom:var(--spacing-sm)}.section-subtitle[data-v-2379a80e]{color:var(--text-secondary);font-size:1.05rem;max-width:500px;margin:0 auto}.skills-bento-grid[data-v-2379a80e]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--spacing-md);max-width:1000px;margin:0 auto}.skill-card[data-v-2379a80e]{position:relative;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;transition:all var(--transition-base);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.skill-card[data-v-2379a80e]:hover{border-color:var(--border-color-hover);transform:translateY(-4px);box-shadow:var(--shadow-md);background:#ffffff0d}.skill-card-inner[data-v-2379a80e]{padding:var(--spacing-lg);position:relative;z-index:2}.category-header[data-v-2379a80e]{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.category-icon[data-v-2379a80e]{width:38px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid;font-family:var(--font-mono);font-weight:700;font-size:1.1rem}.category-title[data-v-2379a80e]{font-size:1.25rem;color:var(--text-accent);margin:0;letter-spacing:-.01em}.skill-tags[data-v-2379a80e]{display:flex;flex-wrap:wrap;gap:8px}.skill-tag[data-v-2379a80e]{display:inline-flex;align-items:center;gap:6px;padding:.4rem .9rem;background:#ffffff08;border:1px solid var(--border-color);border-radius:var(--radius-full);color:var(--text-primary);font-size:.85rem;font-weight:500;transition:all var(--transition-base);font-family:var(--font-mono)}.tech-icon[data-v-2379a80e]{width:14px;height:14px;object-fit:contain;opacity:.8;transition:opacity var(--transition-base)}.skill-tag:hover .tech-icon[data-v-2379a80e]{opacity:1}.skill-card:hover .skill-tag[data-v-2379a80e]{background:#ffffff0f}.skill-tag[data-v-2379a80e]:hover{border-color:var(--text-primary);color:var(--text-accent);transform:translateY(-2px);box-shadow:0 4px 12px #0003}.card-glow[data-v-2379a80e]{position:absolute;top:0;right:0;width:100%;height:100%;pointer-events:none;z-index:1;opacity:.5;transition:opacity var(--transition-base)}.skill-card:hover .card-glow[data-v-2379a80e]{opacity:1}@media (prefers-reduced-motion: reduce){.skill-card[data-v-2379a80e]{transition:background-color var(--transition-base),border-color var(--transition-base)}.skill-card[data-v-2379a80e]:hover,.skill-tag[data-v-2379a80e]:hover{transform:none}}@media (max-width: 768px){.skills-bento-grid[data-v-2379a80e]{grid-template-columns:1fr}.skill-card.card-featured[data-v-2379a80e]{grid-column:auto}}.about[data-v-c376012a]{position:relative}.about-content[data-v-c376012a]{max-width:800px;margin:0 auto;background:#0a0a0aa6;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-md)}.about-text[data-v-c376012a]{font-size:clamp(1rem,1.4vw,1.15rem);color:var(--text-primary);line-height:1.8;text-align:center;position:relative;padding-bottom:var(--spacing-md)}.about-text[data-v-c376012a]:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:50px;height:2px;background:var(--gradient-primary);border-radius:var(--radius-full)}.contact[data-v-031782a0]{border-top:1px solid var(--border-color);padding-bottom:var(--spacing-xl);position:relative}.contact-content[data-v-031782a0]{max-width:800px;margin:0 auto;text-align:center}.contact-intro[data-v-031782a0]{color:var(--text-primary);font-size:1.05rem;line-height:1.7;margin-bottom:var(--spacing-lg);max-width:600px;margin-left:auto;margin-right:auto;background:#0a0a0aa6;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-color);padding:var(--spacing-md);border-radius:var(--radius-md)}.contact-grid[data-v-031782a0]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.contact-card[data-v-031782a0]{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);text-decoration:none;transition:all var(--transition-base);position:relative;overflow:hidden}.contact-card-gradient[data-v-031782a0]{position:absolute;top:0;left:0;width:100%;height:1.5px;background:var(--gradient-primary);transform:scaleX(0);transform-origin:left;transition:transform var(--transition-slow)}.contact-card:hover .contact-card-gradient[data-v-031782a0]{transform:scaleX(1)}.contact-card[data-v-031782a0]:hover{border-color:var(--border-color-hover);transform:translateY(-3px);box-shadow:var(--shadow-md),0 0 20px #3b82f614}.contact-icon[data-v-031782a0]{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:var(--gradient-primary);border-radius:var(--radius-md);font-size:1.1rem;font-weight:700;color:var(--text-accent);font-family:var(--font-mono);flex-shrink:0}.contact-info[data-v-031782a0]{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.contact-label[data-v-031782a0]{color:var(--text-secondary);font-size:.78rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em}.contact-value[data-v-031782a0]{color:var(--text-primary);font-size:.95rem;font-weight:500;transition:color var(--transition-base)}.contact-card:hover .contact-value[data-v-031782a0]{color:var(--accent-primary)}.contact-footer[data-v-031782a0]{padding-top:var(--spacing-md);border-top:1px solid var(--border-color)}.contact-footer p[data-v-031782a0]{color:var(--text-secondary);font-size:.85rem;opacity:.7}@media (prefers-reduced-motion: reduce){.contact-card[data-v-031782a0]{transition:border-color var(--transition-base),background-color var(--transition-base)}.contact-card[data-v-031782a0]:hover{transform:none}}@media (max-width: 768px){.contact-grid[data-v-031782a0]{grid-template-columns:1fr}}.home[data-v-9b5a1ee5]{min-height:100vh;position:relative;z-index:1}.project-details[data-v-b2173520]{min-height:100vh;padding:var(--spacing-lg) 0;position:relative}.back-section[data-v-b2173520]{margin-bottom:var(--spacing-md)}.back-link[data-v-b2173520]{display:inline-flex;align-items:center;gap:var(--spacing-xs);color:var(--text-secondary);font-size:.9rem;font-weight:500;transition:all var(--transition-base);padding:.4rem .75rem;border-radius:var(--radius-sm)}.back-link[data-v-b2173520]:hover{color:var(--accent-primary);transform:translate(-4px);background:#3b82f60f}.project-header[data-v-b2173520]{margin-bottom:var(--spacing-xl);text-align:center;animation:fadeInDown-b2173520 .8s ease-out;will-change:transform,opacity}@keyframes fadeInDown-b2173520{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.header-badges[data-v-b2173520]{display:flex;justify-content:center;gap:8px;margin-bottom:var(--spacing-sm)}.title-container[data-v-b2173520]{display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.details-icon[data-v-b2173520]{width:64px;height:64px;object-fit:contain;background:var(--bg-tertiary);border-radius:14px;padding:8px;border:1px solid var(--border-color);box-shadow:0 8px 24px #00000040;transition:transform var(--transition-base)}.details-icon[data-v-b2173520]:hover{transform:scale(1.05) rotate(2deg)}.project-title[data-v-b2173520]{font-size:clamp(2.5rem,5vw,4rem);margin-bottom:0;background:var(--gradient-text);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.03em}.project-subtitle[data-v-b2173520]{font-size:clamp(1rem,1.8vw,1.25rem);color:var(--text-secondary);max-width:800px;margin:0 auto;line-height:1.7;animation:fadeIn-b2173520 1s ease-out .2s both}@keyframes fadeIn-b2173520{0%{opacity:0}to{opacity:1}}.media-section[data-v-b2173520]{margin-bottom:var(--spacing-xl);animation:fadeInUp-b2173520 .8s ease-out .3s both;will-change:transform,opacity}@keyframes fadeInUp-b2173520{0%{opacity:0;transform:translate3d(0,20px,0)}to{opacity:1;transform:translateZ(0)}}.project-content[data-v-b2173520]{max-width:1000px;margin:0 auto}.project-content.has-sidebar[data-v-b2173520]{max-width:1200px;display:grid;grid-template-columns:1fr;gap:var(--spacing-xl)}@media (min-width: 992px){.project-content.has-sidebar[data-v-b2173520]{grid-template-columns:1fr 380px}}.sidebar-column[data-v-b2173520]{position:sticky;top:100px;align-self:start}.content-section[data-v-b2173520]{margin-bottom:var(--spacing-xl);animation:fadeIn-b2173520 .6s ease-out both}.content-section[data-v-b2173520]:nth-child(1){animation-delay:.1s}.content-section[data-v-b2173520]:nth-child(2){animation-delay:.2s}.content-section[data-v-b2173520]:nth-child(3){animation-delay:.3s}.content-section[data-v-b2173520]:nth-child(4){animation-delay:.4s}.content-section[data-v-b2173520]:nth-child(5){animation-delay:.5s}.section-heading[data-v-b2173520]{font-size:clamp(1.4rem,2.5vw,1.75rem);margin-bottom:var(--spacing-md);color:var(--text-accent);padding-bottom:var(--spacing-xs);position:relative;letter-spacing:-.01em}.section-heading[data-v-b2173520]:after{content:"";position:absolute;bottom:0;left:0;width:40px;height:2px;background:var(--gradient-primary);border-radius:var(--radius-full);transition:width var(--transition-base)}.content-section:hover .section-heading[data-v-b2173520]:after{width:80px}.description-text[data-v-b2173520]{color:var(--text-primary);line-height:1.8;font-size:1.05rem}.description-text[data-v-b2173520] p{margin-bottom:var(--spacing-md)}.description-text[data-v-b2173520] p:last-child{margin-bottom:0}.tech-stack[data-v-b2173520]{display:flex;flex-wrap:wrap;gap:8px}.tech-tag[data-v-b2173520]{display:inline-flex;align-items:center;gap:6px;padding:.45rem 1rem;background:#3b82f614;border:1px solid rgba(59,130,246,.15);border-radius:var(--radius-full);font-size:.9rem;color:var(--accent-primary);font-family:var(--font-mono);font-weight:500;transition:all var(--transition-base);opacity:0;animation:fadeInScale-b2173520 .4s ease-out both;will-change:transform,opacity}.tech-icon[data-v-b2173520]{width:14px;height:14px;object-fit:contain}@keyframes fadeInScale-b2173520{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.tech-tag[data-v-b2173520]:hover{background:#3b82f626;border-color:#3b82f659;transform:translateY(-2px);box-shadow:0 4px 12px #3b82f626}.highlights-list[data-v-b2173520]{list-style:none;padding:0}.highlight-item[data-v-b2173520]{color:var(--text-primary);margin-bottom:var(--spacing-sm);padding-left:1.75rem;position:relative;line-height:1.7;font-size:1rem;opacity:0;animation:slideInLeft-b2173520 .5s ease-out both;transition:all var(--transition-base);will-change:transform,opacity}@keyframes slideInLeft-b2173520{0%{opacity:0;transform:translate3d(-16px,0,0)}to{opacity:1;transform:translateZ(0)}}.highlight-item[data-v-b2173520]:before{content:"▸";position:absolute;left:0;color:var(--accent-primary);font-weight:700;font-size:1.1rem;transition:all var(--transition-base)}.highlight-item[data-v-b2173520]:hover{color:var(--text-accent);transform:translate(4px)}.highlight-item[data-v-b2173520]:hover:before{transform:scale(1.2);text-shadow:0 0 8px rgba(59,130,246,.5)}.highlight-item[data-v-b2173520]:last-child{margin-bottom:0}.architecture-list[data-v-b2173520]{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--spacing-sm)}.architecture-item[data-v-b2173520]{color:var(--text-primary);padding:var(--spacing-sm) var(--spacing-md);background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);position:relative;padding-left:2.25rem;opacity:0;animation:fadeInScale-b2173520 .4s ease-out both;transition:all var(--transition-base)}.architecture-item[data-v-b2173520]:before{content:"◆";position:absolute;left:var(--spacing-sm);color:var(--accent-secondary);font-size:.7rem}.architecture-item[data-v-b2173520]:hover{border-color:var(--border-color-hover);transform:translateY(-2px);box-shadow:var(--shadow-sm)}.features-section[data-v-b2173520]{margin-top:var(--spacing-lg)}.features-grid[data-v-b2173520]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--spacing-md)}.feature-card[data-v-b2173520]{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;opacity:0;animation:fadeInUp-b2173520 .5s ease-out both;transition:all var(--transition-base)}.feature-card[data-v-b2173520]:hover{border-color:var(--border-color-hover);transform:translateY(-4px);box-shadow:var(--shadow-md),0 0 20px #3b82f614}.feature-media[data-v-b2173520]{width:100%;aspect-ratio:16/9;background:var(--bg-tertiary);overflow:hidden}.feature-media img[data-v-b2173520]{width:100%;height:100%;object-fit:cover;transition:transform var(--transition-base)}.feature-card:hover .feature-media img[data-v-b2173520]{transform:scale(1.04)}.media-placeholder[data-v-b2173520]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--bg-tertiary) 0%,var(--bg-secondary) 100%);color:var(--text-secondary);font-size:.9rem}.feature-content[data-v-b2173520]{padding:var(--spacing-md)}.feature-content h3[data-v-b2173520]{font-size:1.05rem;color:var(--text-accent);margin-bottom:var(--spacing-sm);letter-spacing:-.01em}.feature-content ul[data-v-b2173520]{list-style:none;padding:0;margin:0}.feature-content li[data-v-b2173520]{color:var(--text-secondary);font-size:.88rem;padding-left:1rem;position:relative;margin-bottom:.3rem;line-height:1.5}.feature-content li[data-v-b2173520]:before{content:"•";position:absolute;left:0;color:var(--accent-primary)}.feature-content li[data-v-b2173520]:last-child{margin-bottom:0}.timeline[data-v-b2173520]{position:relative;padding-left:0}.timeline-item[data-v-b2173520]{display:flex;gap:var(--spacing-md);position:relative;opacity:0;animation:fadeInUp-b2173520 .5s ease-out both}.timeline-marker[data-v-b2173520]{display:flex;flex-direction:column;align-items:center;flex-shrink:0;width:20px}.timeline-dot[data-v-b2173520]{width:10px;height:10px;border-radius:50%;background:var(--accent-primary);border:2px solid var(--bg-primary);box-shadow:0 0 0 3px #3b82f633;flex-shrink:0;margin-top:6px;z-index:1}.timeline-item:first-child .timeline-dot[data-v-b2173520]{background:var(--accent-warm);box-shadow:0 0 0 3px #f59e0b33}.timeline-line[data-v-b2173520]{width:1.5px;flex-grow:1;background:linear-gradient(180deg,var(--border-color-hover),var(--border-color));margin-top:4px}.timeline-content[data-v-b2173520]{flex-grow:1;padding-bottom:var(--spacing-md)}.timeline-header[data-v-b2173520]{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:.4rem;flex-wrap:wrap}.timeline-date[data-v-b2173520]{font-size:.78rem;color:var(--accent-primary);font-family:var(--font-mono);font-weight:500}.timeline-tags[data-v-b2173520]{display:flex;gap:4px}.timeline-tag[data-v-b2173520]{font-size:.65rem;color:var(--text-secondary);background:var(--card-bg);border:1px solid var(--border-color);padding:1px 8px;border-radius:var(--radius-full);font-family:var(--font-mono);text-transform:lowercase}.timeline-title[data-v-b2173520]{font-size:1.05rem;color:var(--text-accent);margin-bottom:.3rem;font-weight:600;letter-spacing:-.01em}.timeline-description[data-v-b2173520]{font-size:.92rem;color:var(--text-secondary);line-height:1.6}.project-links[data-v-b2173520]{display:flex;flex-wrap:wrap;gap:var(--spacing-sm)}.action-link[data-v-b2173520]{display:inline-flex;align-items:center;gap:.5rem;font-size:1rem;font-weight:500;padding:.65rem 1.25rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);transition:all var(--transition-base);text-decoration:none}.github-link[data-v-b2173520]{color:var(--accent-primary)}.github-link[data-v-b2173520]:hover{border-color:var(--accent-primary);background:#3b82f614;transform:translateY(-2px);box-shadow:var(--shadow-sm),0 0 16px #3b82f61f}.download-link[data-v-b2173520]{color:var(--accent-secondary)}.download-link[data-v-b2173520]:hover{border-color:var(--accent-secondary);background:var(--accent-secondary);color:var(--text-accent);transform:translateY(-2px);box-shadow:var(--shadow-sm),0 0 16px #8b5cf633}.request-link[data-v-b2173520]{color:var(--accent-warm);border-color:#f59e0b4d;background:#f59e0b0f}.request-link[data-v-b2173520]:hover{border-color:var(--accent-warm);background:var(--accent-warm);color:var(--bg-primary);transform:translateY(-2px);box-shadow:var(--shadow-sm),0 0 16px #f59e0b33}.not-found[data-v-b2173520]{text-align:center;padding:var(--spacing-xl) 0;min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-md)}.not-found h1[data-v-b2173520]{color:var(--text-accent);margin-bottom:var(--spacing-sm)}.not-found p[data-v-b2173520]{color:var(--text-secondary);font-size:1.1rem;margin-bottom:var(--spacing-md)}@media (prefers-reduced-motion: reduce){.project-header[data-v-b2173520],.media-section[data-v-b2173520],.content-section[data-v-b2173520],.tech-tag[data-v-b2173520],.highlight-item[data-v-b2173520],.architecture-item[data-v-b2173520],.feature-card[data-v-b2173520],.timeline-item[data-v-b2173520]{animation:none;opacity:1}}@media (max-width: 768px){.project-details[data-v-b2173520]{padding:var(--spacing-md) 0}.project-header[data-v-b2173520],.content-section[data-v-b2173520]{margin-bottom:var(--spacing-lg)}.description-text[data-v-b2173520]{font-size:1rem}.highlight-item[data-v-b2173520]{font-size:.95rem}.features-grid[data-v-b2173520]{grid-template-columns:1fr}.timeline-item[data-v-b2173520]{gap:var(--spacing-sm)}}@media (max-width: 360px){.project-details[data-v-b2173520]{padding:var(--spacing-sm) 0}.project-title[data-v-b2173520]{font-size:2rem}}.all-projects-page[data-v-2dc2c238]{min-height:100vh;padding:var(--spacing-lg) 0 var(--spacing-xl);position:relative}.back-section[data-v-2dc2c238]{margin-bottom:var(--spacing-md)}.back-link[data-v-2dc2c238]{display:inline-flex;align-items:center;gap:var(--spacing-xs);color:var(--text-secondary);font-size:.9rem;font-weight:500;transition:all var(--transition-base);padding:.4rem .75rem;border-radius:var(--radius-sm)}.back-link[data-v-2dc2c238]:hover{color:var(--accent-primary);transform:translate(-4px);background:#3b82f60f}.page-header[data-v-2dc2c238]{text-align:center;margin-bottom:var(--spacing-xl);animation:fadeInDown-2dc2c238 .8s ease-out}@keyframes fadeInDown-2dc2c238{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.page-title[data-v-2dc2c238]{font-size:clamp(2.5rem,5vw,3.5rem);margin-bottom:var(--spacing-xs);background:var(--gradient-text);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.02em}.page-subtitle[data-v-2dc2c238]{color:var(--text-secondary);font-size:1.1rem;margin-bottom:var(--spacing-lg)}.search-box[data-v-2dc2c238]{position:relative;width:100%;max-width:500px;margin:0 auto}.search-icon[data-v-2dc2c238]{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--text-secondary);pointer-events:none}.search-input[data-v-2dc2c238]{width:100%;padding:.8rem 1rem .8rem 2.8rem;background:#0a0a0aa6;border:1px solid var(--border-color);border-radius:var(--radius-full);color:var(--text-primary);font-family:var(--font-family);font-size:1rem;transition:all var(--transition-base);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:var(--shadow-md)}.search-input[data-v-2dc2c238]:focus{outline:none;border-color:var(--accent-primary);background:#0a0a0ad9;box-shadow:0 0 0 2px #3b82f633}.projects-category[data-v-2dc2c238]{margin-bottom:var(--spacing-xl)}.category-title[data-v-2dc2c238]{font-size:1.5rem;color:var(--text-accent);margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-xs);border-bottom:1px solid var(--border-color);display:inline-block}.projects-grid[data-v-2dc2c238]{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:var(--spacing-md)}.mini-projects-grid[data-v-2dc2c238]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--spacing-md)}.project-card-animated[data-v-2dc2c238]{opacity:0;animation:fadeInScale-2dc2c238 .6s ease-out forwards;will-change:transform,opacity}@keyframes fadeInScale-2dc2c238{0%{opacity:0;transform:translate3d(0,20px,0) scale(.97)}to{opacity:1;transform:translateZ(0) scale(1)}}.no-results[data-v-2dc2c238]{text-align:center;padding:var(--spacing-xl);color:var(--text-secondary);font-size:1.1rem;background:#ffffff05;border-radius:var(--radius-lg);border:1px solid var(--border-color)}@media (max-width: 768px){.projects-grid[data-v-2dc2c238],.mini-projects-grid[data-v-2dc2c238]{grid-template-columns:1fr}}@keyframes fadeInShape-2dc2c238{to{opacity:1}}.tech-shape[data-v-2dc2c238]{position:absolute;z-index:-1;opacity:0;pointer-events:none}.shape-1[data-v-2dc2c238]{top:7%;left:50%;width:120px;height:120px;border:1px solid rgba(59,130,246,.2);border-radius:30% 70% 70% 30%/30% 30% 70% 70%;animation:floatShape1-2dc2c238 15s ease-in-out infinite,fadeInShape-2dc2c238 .8s ease-out .5s forwards;background:radial-gradient(circle at center,rgba(59,130,246,.05) 0%,transparent 70%)}.shape-2[data-v-2dc2c238]{top:16%;right:50%;width:180px;height:180px;border:1px solid rgba(139,92,246,.15);border-radius:60% 40% 30% 70%/60% 30% 70% 40%;animation:floatShape2-2dc2c238 18s ease-in-out infinite reverse,fadeInShape-2dc2c238 .8s ease-out .8s forwards;background:radial-gradient(circle at center,rgba(139,92,246,.03) 0%,transparent 70%)}.shape-3[data-v-2dc2c238]{top:10%;left:30%;width:80px;height:80px;border:1px dashed rgba(16,185,129,.2);border-radius:50%;animation:floatShape3-2dc2c238 20s linear infinite,fadeInShape-2dc2c238 .8s ease-out 1.1s forwards}@keyframes floatShape1-2dc2c238{0%,to{transform:translate(0) rotate(0)}33%{transform:translate(30px,-40px) rotate(10deg)}66%{transform:translate(-20px,20px) rotate(-5deg)}}@keyframes floatShape2-2dc2c238{0%,to{transform:translate(0) rotate(0)}33%{transform:translate(-40px,-30px) rotate(-15deg)}66%{transform:translate(20px,-40px) rotate(10deg)}}@keyframes floatShape3-2dc2c238{0%{transform:translate(0) rotate(0)}to{transform:translate(20px,-20px) rotate(360deg)}}:root{--bg-primary: #0a0a0a;--bg-secondary: #111111;--bg-tertiary: #1a1a1a;--bg-elevated: #1e1e1e;--text-primary: #e0e0e0;--text-secondary: #8a8a8a;--text-accent: #ffffff;--accent-primary: #3b82f6;--accent-primary-hover: #2563eb;--accent-secondary: #8b5cf6;--accent-warm: #f59e0b;--accent-green: #10b981;--accent-glow: rgba(59, 130, 246, .15);--border-color: rgba(255, 255, 255, .08);--border-color-hover: rgba(255, 255, 255, .15);--card-bg: rgba(255, 255, 255, .03);--card-hover: rgba(255, 255, 255, .06);--gradient-primary: linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 100%);--gradient-text: linear-gradient(135deg, #ffffff 0%, var(--accent-primary) 50%, var(--accent-secondary) 100%);--gradient-card-border: linear-gradient(135deg, rgba(59, 130, 246, .3), rgba(139, 92, 246, .3));--gradient-subtle: linear-gradient(180deg, var(--bg-primary) 0%, var(--bg-secondary) 100%);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 4px 16px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-glow: 0 0 30px rgba(59, 130, 246, .15);--shadow-glow-strong: 0 0 60px rgba(59, 130, 246, .25);--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 2rem;--spacing-lg: 4rem;--spacing-xl: 6rem;--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "Courier New", monospace;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-full: 9999px;--transition-fast: .15s ease;--transition-base: .25s ease;--transition-slow: .4s cubic-bezier(.4, 0, .2, 1);--transition-satisfying: .5s cubic-bezier(.2, .8, .2, 1);--transition-bounce: .6s cubic-bezier(.34, 1.56, .64, 1)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-family);background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}#app{min-height:100vh}h1,h2,h3,h4,h5,h6{color:var(--text-accent);font-weight:600;line-height:1.2;letter-spacing:-.02em}h1{font-size:clamp(2.5rem,5vw,4rem);font-weight:700}h2{font-size:clamp(2rem,4vw,3rem)}h3{font-size:clamp(1.5rem,3vw,2rem)}p{line-height:1.7}a{color:var(--accent-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-primary-hover)}.btn{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:.75rem 1.5rem;background-color:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-primary);font-family:var(--font-family);font-size:.95rem;font-weight:500;cursor:pointer;transition:all var(--transition-base);border-radius:var(--radius-sm);position:relative;overflow:hidden}.btn:hover{background-color:var(--card-hover);border-color:var(--accent-primary);color:var(--accent-primary);transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-primary{background:var(--gradient-primary);border-color:transparent;color:var(--text-accent)}.btn-primary:hover{opacity:.9;border-color:transparent;color:var(--text-accent);box-shadow:var(--shadow-glow)}.container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-md)}.section{padding:var(--spacing-xl) 0;position:relative}.section-title{margin-bottom:var(--spacing-lg);text-align:center;position:relative;display:inline-block;width:100%;will-change:transform,opacity}.section-title:after{content:"";position:absolute;bottom:-8px;left:50%;transform:translate(-50%);width:60px;height:2px;background:var(--gradient-primary);border-radius:var(--radius-full);transition:width var(--transition-slow)}.section-title:hover:after{width:100px}.reveal{opacity:0;transform:translateY(20px) scale(.98);transition:opacity var(--transition-satisfying),transform var(--transition-satisfying);will-change:transform,opacity}.reveal.revealed{opacity:1;transform:translateY(0) scale(1)}.reveal-delay-1{transition-delay:.1s}.reveal-delay-2{transition-delay:.2s}.reveal-delay-3{transition-delay:.3s}.reveal-delay-4{transition-delay:.4s}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;font-size:.72rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border-radius:var(--radius-full);white-space:nowrap}.badge-wip{background:#f59e0b26;color:var(--accent-warm);border:1px solid rgba(245,158,11,.3)}.badge-wip:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent-warm);animation:pulse-dot 2s ease-in-out infinite}.badge-completed{background:#10b98126;color:var(--accent-green);border:1px solid rgba(16,185,129,.3)}.badge-beta{background:#8b5cf626;color:var(--accent-secondary);border:1px solid rgba(139,92,246,.3)}.badge-beta:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent-secondary);animation:pulse-dot 2s ease-in-out infinite}.badge-in-progress{background:#3b82f626;color:var(--accent-primary);border:1px solid rgba(59,130,246,.3)}.badge-in-progress:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent-primary);animation:pulse-dot 2s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.gradient-text{background:var(--gradient-text);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}@keyframes fadeInDown{0%{opacity:0;transform:translate3d(0,-10px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translate3d(0,20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes shimmer{0%{background-position:-200% center}to{background-position:200% center}}@media (prefers-reduced-motion: reduce){.section-title{animation:none}.section-title:after{animation:none;width:60px}.reveal{opacity:1;transform:none;transition:none}.badge-wip:before,.badge-in-progress:before{animation:none}}@media (max-width: 768px){.container{padding:0 var(--spacing-sm)}.section{padding:var(--spacing-lg) 0}}@media (max-width: 360px){.container{padding:0 .75rem}.section{padding:var(--spacing-md) 0}}.tech-shape{position:absolute;z-index:-1;opacity:0;pointer-events:none}.shape-small-1{top:-20px;left:50%;transform:translate(-150px);width:50px;height:50px;border:1px solid rgba(59,130,246,.15);border-radius:30% 70% 70% 30%/30% 30% 70% 70%;animation:floatShape1 15s ease-in-out infinite,fadeIn 2s ease-out forwards;background:radial-gradient(circle at center,rgba(59,130,246,.05) 0%,transparent 70%)}.shape-small-2{bottom:-10px;right:50%;transform:translate(120px);width:35px;height:35px;border:1px dashed rgba(139,92,246,.2);border-radius:50%;animation:floatShape3 20s linear infinite,fadeIn 2s ease-out forwards}@keyframes floatShape1{0%,to{transform:translate(-150px) translateY(0) rotate(0)}33%{transform:translate(-120px) translateY(-20px) rotate(10deg)}66%{transform:translate(-170px) translateY(10px) rotate(-5deg)}}@keyframes floatShape3{0%{transform:translate(120px) translateY(0) rotate(0)}to{transform:translate(140px) translateY(-10px) rotate(360deg)}}
