@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500&display=swap";:root{--font-sans:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", monospace;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--radius-sm:6px;--radius-md:12px;--radius-lg:20px;--radius-full:9999px;--transition-fast:.15s ease;--transition-base:.25s ease;--transition-slow:.4s ease}[data-theme=dark]{--bg-primary:#0a0a0f;--bg-secondary:#111118;--bg-card:#16161e;--bg-glass:#ffffff0a;--bg-glass-hover:#ffffff12;--text-primary:#f0f0ff;--text-secondary:#9898b0;--text-muted:#5a5a72;--accent-primary:#7c6aff;--accent-secondary:#c084fc;--accent-glow:#7c6aff40;--accent-gradient:linear-gradient(135deg, #7c6aff 0%, #c084fc 100%);--border-color:#ffffff12;--border-hover:#7c6aff66;--shadow-card:0 4px 24px #0006;--shadow-glow:0 0 40px #7c6aff1f}[data-theme=light]{--bg-primary:#f8f8ff;--bg-secondary:#fff;--bg-card:#fff;--bg-glass:#00000008;--bg-glass-hover:#0000000f;--text-primary:#0d0d1a;--text-secondary:#4a4a6a;--text-muted:#9898b0;--accent-primary:#6355e0;--accent-secondary:#a855f7;--accent-glow:#6355e026;--accent-gradient:linear-gradient(135deg, #6355e0 0%, #a855f7 100%);--border-color:#00000014;--border-hover:#6355e066;--shadow-card:0 4px 24px #00000014;--shadow-glow:0 0 40px #6355e014}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-sans);background-color:var(--bg-primary);color:var(--text-primary);transition:background-color var(--transition-slow), color var(--transition-slow);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{cursor:pointer;font-family:var(--font-sans);background:0 0;border:none}.container{width:100%;max-width:1120px;padding:0 var(--space-6);margin:0 auto}.gradient-text{background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.section{padding:var(--space-24) 0}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes pulse-glow{0%,to{box-shadow:0 0 6px #4ade80}50%{box-shadow:0 0 14px #4ade80}}.animate-fade-up{animation:.6s both fadeInUp}.animate-fade{animation:.5s both fadeIn}.page-wrapper{min-height:100vh;animation:.4s fadeIn}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--accent-primary);border-radius:var(--radius-full)}::selection{background:var(--accent-glow);color:var(--text-primary)}.tag{border-radius:var(--radius-full);font-size:.72rem;font-weight:500;font-family:var(--font-mono);background:var(--bg-glass);border:1px solid var(--border-color);color:var(--text-secondary);transition:all var(--transition-fast);align-items:center;padding:3px 10px;display:inline-flex}.tag-accent{background:var(--accent-glow);border-color:var(--accent-primary);color:var(--accent-primary)}.btn{align-items:center;gap:var(--space-2);border-radius:var(--radius-md);transition:all var(--transition-base);padding:12px 24px;font-size:.9rem;font-weight:600;display:inline-flex;position:relative;overflow:hidden}.btn-primary{background:var(--accent-gradient);color:#fff;box-shadow:0 4px 20px var(--accent-glow)}.btn-primary:hover{box-shadow:0 8px 30px var(--accent-glow);transform:translateY(-2px)}.btn-outline{border:1.5px solid var(--border-color);color:var(--text-primary);background:var(--bg-glass)}.btn-outline:hover{border-color:var(--accent-primary);background:var(--accent-glow);color:var(--accent-primary);transform:translateY(-2px)}.btn-sm{padding:8px 16px;font-size:.82rem}.navbar{z-index:100;transition:padding var(--transition-base), background var(--transition-base), backdrop-filter var(--transition-base), border-bottom var(--transition-base);padding:18px 0;position:fixed;top:0;left:0;right:0}.navbar.scrolled{-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--border-color);background:#0a0a0fbf;padding:12px 0}[data-theme=light] .navbar.scrolled{background:#f8f8ffcc}.navbar-inner{justify-content:space-between;align-items:center;display:flex}.navbar-logo{font-size:1.2rem;font-weight:700;font-family:var(--font-mono);transition:opacity var(--transition-fast);align-items:center;gap:2px;display:flex}.navbar-logo:hover{opacity:.8}.logo-bracket{color:var(--text-muted)}.logo-name{font-family:var(--font-mono)}.navbar-links{align-items:center;gap:var(--space-2);display:flex}.nav-link{border-radius:var(--radius-md);color:var(--text-secondary);transition:all var(--transition-fast);padding:8px 14px;font-size:.9rem;font-weight:500;position:relative}.nav-link:hover{color:var(--text-primary);background:var(--bg-glass)}.nav-link.active{color:var(--accent-primary);background:var(--accent-glow)}.navbar-actions{align-items:center;gap:var(--space-2);display:flex}.theme-btn{border-radius:var(--radius-md);width:38px;height:38px;color:var(--text-secondary);background:var(--bg-glass);border:1px solid var(--border-color);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.theme-btn:hover{color:var(--accent-primary);border-color:var(--accent-primary);background:var(--accent-glow)}.menu-btn{border-radius:var(--radius-md);width:38px;height:38px;color:var(--text-secondary);background:var(--bg-glass);border:1px solid var(--border-color);transition:all var(--transition-fast);justify-content:center;align-items:center;display:none}.menu-btn:hover{color:var(--text-primary);background:var(--bg-glass-hover)}@media (width<=768px){.menu-btn{display:flex}.navbar-links{background:var(--bg-primary);justify-content:center;gap:var(--space-4);opacity:0;pointer-events:none;transition:all var(--transition-base);flex-direction:column;position:fixed;inset:0;transform:translateY(-10px)}.navbar-links.open{opacity:1;pointer-events:all;transform:translateY(0)}.nav-link{padding:12px 28px;font-size:1.4rem}}.footer{border-top:1px solid var(--border-color);padding:var(--space-6) 0;margin-top:auto}.footer-inner{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.footer-copy{color:var(--text-muted);font-size:.875rem}.footer-links{align-items:center;gap:var(--space-3);display:flex}.footer-icon-link{border-radius:var(--radius-md);width:36px;height:36px;color:var(--text-muted);background:var(--bg-glass);border:1px solid var(--border-color);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.footer-icon-link:hover{color:var(--accent-primary);border-color:var(--accent-primary);background:var(--accent-glow);transform:translateY(-2px)}.layout{flex-direction:column;min-height:100vh;display:flex}.main-content{flex:1}.home-page{padding-top:80px}.hero{background-image:linear-gradient(90deg,#0a0a0fd9 0%,#0a0a0f99 60%,#0a0a0f66 100%),url(/hero-bg.png);background-position:50%;background-repeat:no-repeat;background-size:cover;align-items:center;min-height:90vh;display:flex;position:relative;overflow:hidden}[data-theme=light] .hero{background-image:linear-gradient(90deg,#f8f8ffe6 0%,#f8f8ffb3 55%,#f8f8ff33 100%),url(/hero-bg.png)}.hero-inner{justify-content:space-between;align-items:center;gap:var(--space-12);width:100%;display:flex}.hero-content{z-index:1;flex:1;max-width:580px;position:relative}.hero-badge{align-items:center;gap:var(--space-2);border-radius:var(--radius-full);border:1px solid var(--border-color);background:var(--bg-glass);color:var(--text-secondary);margin-bottom:var(--space-6);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:6px 14px;font-size:.8rem;font-weight:500;display:inline-flex}.status-dot{background:#4ade80;border-radius:50%;flex-shrink:0;width:8px;height:8px;animation:2s infinite pulse-glow;box-shadow:0 0 8px #4ade80}.hero-title{letter-spacing:-.03em;margin-bottom:var(--space-6);font-size:clamp(2.6rem,6vw,4.2rem);font-weight:900;line-height:1.1}.hero-subtitle-line{color:var(--text-secondary);font-weight:600}.hero-bio{color:var(--text-secondary);max-width:560px;margin-bottom:var(--space-8);font-size:1.1rem;line-height:1.7}.hero-actions{align-items:center;gap:var(--space-4);margin-bottom:var(--space-12);flex-wrap:wrap;display:flex}.hero-stats{gap:var(--space-10);flex-wrap:wrap;display:flex}.stat-item{flex-direction:column;gap:2px;display:flex}.stat-value{font-size:1.8rem;font-weight:800;line-height:1;font-family:var(--font-mono)}.stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;font-size:.78rem;font-weight:500}.hero-blob,.hero-blob-2{display:none}.hero-photo-wrap{z-index:1;flex-shrink:0;position:relative}.hero-photo-ring{background:var(--accent-gradient);border-radius:50%;width:340px;height:340px;padding:4px;animation:6s ease-in-out infinite float;position:relative;box-shadow:0 20px 60px #7c6aff4d}.hero-photo{object-fit:cover;object-position:center top;border:4px solid var(--bg-primary);border-radius:50%;width:100%;height:100%;display:block}.about-teaser{border-top:1px solid var(--border-color);padding-top:var(--space-16);padding-bottom:var(--space-16)}.about-inner{gap:var(--space-8);align-items:flex-start;display:flex}.about-icon-wrap{border-radius:var(--radius-md);background:var(--accent-gradient);color:#fff;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;margin-top:4px;display:flex}.about-heading{margin-bottom:var(--space-4);letter-spacing:-.02em;font-size:clamp(1.4rem,3vw,2rem);font-weight:800;line-height:1.25}.about-desc{color:var(--text-secondary);max-width:560px;margin-bottom:var(--space-5);line-height:1.75}.about-tags{gap:var(--space-2);flex-wrap:wrap;display:flex}@media (width<=900px){.hero-inner{text-align:center;gap:var(--space-8);padding-top:var(--space-8);flex-direction:column-reverse}.hero-photo-ring{width:220px;height:220px}.hero-bio{margin-left:auto;margin-right:auto}.hero-actions{justify-content:center}.hero-stats{justify-content:center;gap:var(--space-6)}.hero-badge{margin-left:auto;margin-right:auto}}@media (width<=640px){.about-inner{flex-direction:column}}.projects-page{padding-top:120px;padding-bottom:var(--space-24)}.page-header{max-width:640px;margin-bottom:var(--space-12)}.page-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--accent-primary);margin-bottom:var(--space-3);font-size:.78rem;font-weight:500;display:inline-block}.page-title{letter-spacing:-.03em;margin-bottom:var(--space-4);font-size:clamp(2rem,4vw,3rem);font-weight:900;line-height:1.1}.page-desc{color:var(--text-secondary);font-size:1.05rem;line-height:1.7}.projects-featured{gap:var(--space-6);margin-bottom:var(--space-12);grid-template-columns:repeat(auto-fit,minmax(340px,1fr));display:grid}.section-subtitle{color:var(--text-secondary);margin-bottom:var(--space-5);text-transform:uppercase;letter-spacing:.06em;font-size:.82rem;font-weight:700;font-family:var(--font-mono)}.projects-grid{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.project-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--space-6);gap:var(--space-5);transition:all var(--transition-base);flex-direction:column;animation:.5s both fadeInUp;display:flex;position:relative;overflow:hidden}.project-card:before{content:"";border-radius:inherit;background:var(--accent-gradient);opacity:0;transition:opacity var(--transition-base);pointer-events:none;position:absolute;inset:0}.project-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-card), var(--shadow-glow);transform:translateY(-4px)}.project-card:hover:before{opacity:.03}.project-card.featured{background:var(--bg-secondary)}.featured-badge{top:var(--space-4);right:var(--space-4);font-size:.7rem;font-weight:600;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--accent-primary);background:var(--accent-glow);border:1px solid var(--accent-primary);border-radius:var(--radius-full);padding:3px 10px;position:absolute}.project-card-body{gap:var(--space-3);flex-direction:column;flex:1;display:flex}.project-title{letter-spacing:-.01em;font-size:1.15rem;font-weight:700;line-height:1.3}.project-summary{color:var(--text-secondary);font-size:.9rem;line-height:1.65}.project-stack{gap:var(--space-2);padding-top:var(--space-3);flex-wrap:wrap;margin-top:auto;display:flex}.project-card-footer{gap:var(--space-3);flex-wrap:wrap;display:flex}.skills-page{padding-top:120px;padding-bottom:var(--space-24)}.skills-grid{gap:var(--space-5);margin-bottom:var(--space-10);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.skill-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--space-6);transition:all var(--transition-base);animation:.5s both fadeInUp;position:relative;overflow:hidden}.skill-card:after{content:"";background:var(--accent-gradient);opacity:0;height:2px;transition:opacity var(--transition-base);position:absolute;top:0;left:0;right:0}.skill-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-card), var(--shadow-glow);transform:translateY(-3px)}.skill-card:hover:after{opacity:1}.skill-card-header{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.skill-icon{font-size:1.5rem;line-height:1}.skill-category{text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);font-size:.95rem;font-weight:700}.skill-items{gap:var(--space-2);flex-wrap:wrap;display:flex}.skill-item{border-radius:var(--radius-full);background:var(--bg-glass);border:1px solid var(--border-color);color:var(--text-primary);transition:all var(--transition-fast);cursor:default;padding:6px 14px;font-size:.875rem;font-weight:500}.skill-item:hover{background:var(--accent-glow);border-color:var(--accent-primary);color:var(--accent-primary);transform:scale(1.04)}.learning-banner{align-items:center;gap:var(--space-5);padding:var(--space-6) var(--space-8);background:var(--bg-glass);border:1px solid var(--border-color);border-radius:var(--radius-lg);animation:.5s both fadeInUp;display:flex}.learning-emoji{flex-shrink:0;font-size:2.5rem}.learning-title{margin-bottom:var(--space-1);font-size:1rem;font-weight:700}.learning-desc{color:var(--text-secondary);font-size:.9rem}@media (width<=640px){.learning-banner{text-align:left;flex-direction:column;align-items:flex-start}}.contact-page{padding-top:120px;padding-bottom:var(--space-24)}.contact-grid{gap:var(--space-4);margin-bottom:var(--space-10);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.contact-card{align-items:center;gap:var(--space-4);padding:var(--space-5) var(--space-5);background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);transition:all var(--transition-base);text-decoration:none;animation:.5s both fadeInUp;display:flex;position:relative;overflow:hidden}.contact-card:before{content:"";border-radius:inherit;background:var(--accent-gradient);opacity:0;transition:opacity var(--transition-base);pointer-events:none;position:absolute;inset:0}.contact-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-card), var(--shadow-glow);transform:translateY(-3px)}.contact-card:hover:before{opacity:.04}.contact-card:hover .contact-arrow{color:var(--accent-primary);transform:translate(4px)}.contact-icon{width:40px;height:40px;color:var(--icon-color,var(--accent-primary));transition:all var(--transition-fast);opacity:.85;flex-shrink:0;justify-content:center;align-items:center;display:flex}.contact-card:hover .contact-icon{opacity:1;transform:scale(1.1)}.contact-info{flex-direction:column;flex:1;gap:2px;display:flex}.contact-label{text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);font-size:.78rem;font-weight:600;font-family:var(--font-mono)}.contact-handle{color:var(--text-primary);font-size:.95rem;font-weight:600}.contact-arrow{color:var(--text-muted);transition:all var(--transition-base);flex-shrink:0}.contact-note{padding:var(--space-5) var(--space-6);background:var(--bg-glass);border:1px solid var(--border-color);border-radius:var(--radius-lg);color:var(--text-secondary);font-size:.9rem;line-height:1.6;animation:.5s both fadeInUp}.contact-note strong{color:var(--text-primary);font-weight:600}#root{flex-direction:column;min-height:100vh;display:flex}
