:root{--bg-primary:#fff;--bg-secondary:#f8f9fa;--bg-tertiary:#f1f3f5;--text-primary:#111827;--text-secondary:#4b5563;--text-tertiary:#9ca3b8;--border:#e5e7eb;--border-hover:#d1d5db;--accent:#111827;--accent-muted:#374151;--card-bg:#fff;--card-shadow:0 1px 3px #0000000f, 0 1px 2px #0000000a;--card-shadow-hover:0 10px 40px #00000014, 0 2px 8px #0000000a;--nav-bg:#ffffffd9;--tag-bg:#f3f4f6;--tag-text:#374151;--input-bg:#f9fafb;--skill-icon-bg:#f3f4f6;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display:"Space Grotesk", "Inter", sans-serif;--section-gap:100px;--container-max:1120px;--ease:cubic-bezier(.4, 0, .2, 1);--duration:.3s}[data-theme=dark]{--bg-primary:#0a0a0b;--bg-secondary:#111113;--bg-tertiary:#19191c;--text-primary:#f4f4f5;--text-secondary:#a1a1aa;--text-tertiary:#52525b;--border:#27272a;--border-hover:#3f3f46;--accent:#f4f4f5;--accent-muted:#d4d4d8;--card-bg:#111113;--card-shadow:0 1px 3px #0000004d, 0 1px 2px #0003;--card-shadow-hover:0 10px 40px #0006, 0 2px 8px #0000004d;--nav-bg:#0a0a0bd9;--tag-bg:#27272a;--tag-text:#d4d4d8;--input-bg:#18181b;--skill-icon-bg:#1c1c1f}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:80px}body{font-family:var(--font-sans);color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background var(--duration) var(--ease), color var(--duration) var(--ease);font-size:16px;line-height:1.65;overflow-x:hidden}#root{min-height:100vh}a{color:inherit;text-decoration:none}ul,ol{list-style:none}img{max-width:100%;display:block}button{cursor:pointer;font-family:inherit;font-size:inherit;background:0 0;border:none}.container{width:100%;max-width:var(--container-max);margin:0 auto;padding:0 32px}@media (width<=768px){.container{padding:0 20px}}h1,h2,h3,h4{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.02em;transition:color var(--duration) var(--ease);line-height:1.15}.nav{z-index:100;background:var(--nav-bg);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:background var(--duration) var(--ease), border-color var(--duration) var(--ease);position:fixed;top:0;left:0;right:0}.nav-inner{justify-content:space-between;align-items:center;height:64px;display:flex}.nav-logo{font-family:var(--font-display);letter-spacing:-.03em;color:var(--text-primary);font-size:1.15rem;font-weight:700}.nav-links{align-items:center;gap:32px;display:flex}.nav-link{color:var(--text-secondary);transition:color var(--duration) var(--ease);font-size:.875rem;font-weight:500;position:relative}.nav-link:after{content:"";background:var(--text-primary);width:0;height:1.5px;transition:width var(--duration) var(--ease);position:absolute;bottom:-2px;left:0}.nav-link:hover{color:var(--text-primary)}.nav-link:hover:after{width:100%}.theme-toggle{width:36px;height:36px;color:var(--text-secondary);border:1px solid var(--border);background:var(--bg-primary);transition:all var(--duration) var(--ease);border-radius:10px;justify-content:center;align-items:center;display:flex}.theme-toggle:hover{color:var(--text-primary);border-color:var(--border-hover);background:var(--bg-secondary)}.nav-mobile-toggle{width:36px;height:36px;color:var(--text-primary);justify-content:center;align-items:center;display:none}@media (width<=768px){.nav-links{display:none}.nav-links.open{background:var(--nav-bg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);flex-direction:column;gap:16px;padding:20px 32px;display:flex;position:absolute;top:64px;left:0;right:0}.nav-mobile-toggle{display:flex}}.hero{justify-content:center;align-items:center;min-height:92vh;padding-top:64px;padding-bottom:40px;display:flex;position:relative;overflow:hidden}.hero:after{content:"";background:linear-gradient(to bottom, transparent, var(--bg-primary));pointer-events:none;z-index:2;height:80px;position:absolute;bottom:0;left:0;right:0}.hero-container{z-index:1;flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.hero-bg-glow{filter:blur(120px);opacity:.15;pointer-events:none;z-index:0;border-radius:50%;position:absolute}.hero-bg-glow--1{background:#6366f1;width:600px;height:600px;animation:12s ease-in-out infinite alternate glow-drift;top:-10%;right:-5%}.hero-bg-glow--2{background:#06b6d4;width:500px;height:500px;animation:14s ease-in-out infinite alternate-reverse glow-drift;bottom:-5%;left:-8%}[data-theme=dark] .hero-bg-glow{opacity:.08}@keyframes glow-drift{0%{transform:translate(0)scale(1)}to{transform:translate(30px,-20px)scale(1.1)}}.hero-content{text-align:center;flex-direction:column;align-items:center;max-width:780px;display:flex}.hero-badge{border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);transition:all var(--duration) var(--ease);border-radius:100px;align-items:center;gap:8px;margin-bottom:28px;padding:6px 16px;font-size:.8rem;font-weight:500;display:inline-flex}.hero-badge-dot{background:#22c55e;border-radius:50%;width:6px;height:6px;animation:2s infinite pulse-dot}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.hero-greeting{font-family:var(--font-sans);color:var(--text-secondary);letter-spacing:.01em;transition:color var(--duration) var(--ease);margin-bottom:16px;font-size:1.15rem;font-weight:500}.hero h1{letter-spacing:-.04em;margin-bottom:28px;font-size:clamp(3rem,6.5vw,4.75rem);font-weight:700;line-height:1.05}.hero h1 .muted{color:var(--text-tertiary);transition:color var(--duration) var(--ease)}.hero-description{color:var(--text-secondary);max-width:520px;transition:color var(--duration) var(--ease);margin-bottom:40px;font-size:1.1rem;line-height:1.75}.hero-actions{align-items:center;gap:12px;margin-bottom:48px;display:flex}.hero-social-row{align-items:center;gap:12px;display:flex}.hero-social-link{border:1px solid var(--border);background:var(--bg-secondary);width:40px;height:40px;color:var(--text-tertiary);transition:all var(--duration) var(--ease);border-radius:12px;justify-content:center;align-items:center;display:flex}.hero-social-link:hover{color:var(--text-primary);border-color:var(--border-hover);background:var(--bg-tertiary);transform:translateY(-2px)}.hero-scroll-hint{flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;bottom:32px;left:50%;transform:translate(-50%)}.hero-scroll-line{background:linear-gradient(to bottom, var(--text-tertiary), transparent);width:1px;height:48px;animation:2.5s ease-in-out infinite scroll-pulse}@keyframes scroll-pulse{0%,to{opacity:.3;transform:scaleY(.6)}50%{opacity:.8;transform:scaleY(1)}}@media (width<=768px){.hero-content{max-width:100%}.hero h1{font-size:clamp(2.2rem,8vw,3rem)}.hero-actions{flex-direction:column;width:100%}.hero-actions .btn{justify-content:center;width:100%}.hero-bg-glow--1{width:300px;height:300px}.hero-bg-glow--2{width:250px;height:250px}}.btn{transition:all var(--duration) var(--ease);letter-spacing:-.01em;border-radius:12px;align-items:center;gap:8px;padding:12px 24px;font-size:.9rem;font-weight:600;display:inline-flex}.btn-primary{background:var(--text-primary);color:var(--bg-primary);border:1px solid #0000}.btn-primary:hover{opacity:.85;transform:translateY(-1px)}.btn-secondary{color:var(--text-primary);border:1px solid var(--border);background:0 0}.btn-secondary:hover{border-color:var(--border-hover);background:var(--bg-secondary)}.section{padding:var(--section-gap) 0}.section-header{margin-bottom:56px}.section-label{text-transform:uppercase;letter-spacing:.1em;color:var(--text-tertiary);transition:color var(--duration) var(--ease);margin-bottom:12px;font-size:.8rem;font-weight:600}.section-title{letter-spacing:-.03em;font-size:clamp(2rem,4vw,2.75rem);font-weight:700}.section-subtitle{color:var(--text-secondary);max-width:500px;transition:color var(--duration) var(--ease);margin-top:12px;font-size:1.05rem}.about-grid{grid-template-columns:1fr 1fr;align-items:start;gap:64px;display:grid}.about-text p{color:var(--text-secondary);transition:color var(--duration) var(--ease);margin-bottom:1.2rem;font-size:1.05rem}.about-text p:last-child{margin-bottom:0}.about-stats{grid-template-columns:1fr 1fr;gap:24px;display:grid}.stat-card{border:1px solid var(--border);background:var(--card-bg);transition:all var(--duration) var(--ease);border-radius:16px;padding:24px}.stat-card:hover{border-color:var(--border-hover);box-shadow:var(--card-shadow)}.stat-number{font-family:var(--font-display);letter-spacing:-.03em;margin-bottom:4px;font-size:2rem;font-weight:700;line-height:1}.stat-label{color:var(--text-tertiary);transition:color var(--duration) var(--ease);font-size:.85rem}@media (width<=768px){.about-grid{grid-template-columns:1fr;gap:40px}}.skills-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.skill-item{border:1px solid var(--border);background:var(--card-bg);transition:all var(--duration) var(--ease);border-radius:14px;align-items:center;gap:12px;padding:16px 20px;display:flex}.skill-item:hover{border-color:var(--border-hover);box-shadow:var(--card-shadow);transform:translateY(-2px)}.skill-icon{background:var(--skill-icon-bg);width:36px;height:36px;color:var(--text-secondary);transition:all var(--duration) var(--ease);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.skill-name{letter-spacing:-.01em;font-size:.9rem;font-weight:600}.skill-category{color:var(--text-tertiary);transition:color var(--duration) var(--ease);font-size:.75rem}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:24px;display:grid}.project-card{border:1px solid var(--border);background:var(--card-bg);transition:all .4s var(--ease);border-radius:20px;flex-direction:column;display:flex;overflow:hidden}.project-card:hover{border-color:var(--border-hover);box-shadow:var(--card-shadow-hover);transform:translateY(-4px)}.project-image-wrap{height:220px;position:relative;overflow:hidden}.project-image-wrap img{object-fit:cover;width:100%;height:100%;transition:transform .6s var(--ease)}.project-card:hover .project-image-wrap img{transform:scale(1.04)}.project-links-overlay{opacity:0;transition:all var(--duration) var(--ease);gap:6px;display:flex;position:absolute;top:12px;right:12px;transform:translateY(-6px)}.project-card:hover .project-links-overlay{opacity:1;transform:translateY(0)}.project-link-btn{background:var(--bg-primary);border:1px solid var(--border);width:34px;height:34px;color:var(--text-secondary);transition:all var(--duration) var(--ease);border-radius:10px;justify-content:center;align-items:center;display:flex}.project-link-btn:hover{color:var(--text-primary);border-color:var(--border-hover)}.project-body{flex-direction:column;flex:1;padding:24px;display:flex}.project-title{letter-spacing:-.02em;margin-bottom:8px;font-size:1.2rem;font-weight:700}.project-desc{color:var(--text-secondary);transition:color var(--duration) var(--ease);flex:1;margin-bottom:20px;font-size:.9rem}.project-tags{flex-wrap:wrap;gap:6px;display:flex}.project-tag{background:var(--tag-bg);color:var(--tag-text);transition:all var(--duration) var(--ease);border-radius:8px;padding:4px 10px;font-size:.75rem;font-weight:500}@media (width<=768px){.projects-grid{grid-template-columns:1fr}}.contact-grid{grid-template-columns:1fr 1fr;align-items:start;gap:64px;display:grid}.contact-text{color:var(--text-secondary);transition:color var(--duration) var(--ease);margin-bottom:32px;font-size:1.05rem}.contact-links{grid-template-columns:repeat(2,1fr);gap:16px;width:100%;display:grid}.contact-link-item{border:1px solid var(--border);background:var(--card-bg);transition:all var(--duration) var(--ease);color:var(--text-primary);border-radius:16px;align-items:center;gap:14px;padding:16px 20px;display:flex}.contact-link-item:hover{border-color:var(--border-hover);box-shadow:var(--card-shadow);transform:translateY(-2px)}.contact-link-icon{background:var(--skill-icon-bg);width:40px;height:40px;color:var(--text-secondary);transition:all var(--duration) var(--ease);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.contact-link-label{color:var(--text-tertiary);transition:color var(--duration) var(--ease);margin-bottom:2px;font-size:.8rem}.contact-link-value{letter-spacing:-.01em;font-size:.95rem;font-weight:600}.contact-form{flex-direction:column;gap:16px;display:flex}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.form-group{flex-direction:column;gap:6px;display:flex}.form-label{color:var(--text-secondary);transition:color var(--duration) var(--ease);font-size:.825rem;font-weight:500}.form-input,.form-textarea{border:1px solid var(--border);background:var(--input-bg);width:100%;color:var(--text-primary);font-family:var(--font-sans);transition:all var(--duration) var(--ease);border-radius:12px;outline:none;padding:12px 16px;font-size:.9rem}.form-input:focus,.form-textarea:focus{border-color:var(--text-tertiary);box-shadow:0 0 0 3px #0000000a}[data-theme=dark] .form-input:focus,[data-theme=dark] .form-textarea:focus{box-shadow:0 0 0 3px #ffffff0a}.form-textarea{resize:none;min-height:120px}.form-submit{align-self:flex-start}@media (width<=768px){.contact-grid{grid-template-columns:1fr;gap:40px}.contact-links,.form-row{grid-template-columns:1fr}}.footer{border-top:1px solid var(--border);transition:border-color var(--duration) var(--ease);padding:32px 0}.footer-inner{justify-content:space-between;align-items:center;display:flex}.footer-left{color:var(--text-tertiary);transition:color var(--duration) var(--ease);font-size:.85rem}.footer-links{gap:24px;display:flex}.footer-link{color:var(--text-tertiary);transition:color var(--duration) var(--ease);font-size:.85rem}.footer-link:hover{color:var(--text-primary)}@media (width<=768px){.footer-inner{text-align:center;flex-direction:column;gap:16px}}.reveal{opacity:0;transition:opacity .65s var(--ease), transform .65s var(--ease);transform:translateY(28px)}.reveal.is-visible{opacity:1;transform:translateY(0)}.reveal-delay-1{transition-delay:80ms}.reveal-delay-2{transition-delay:.16s}.reveal-delay-3{transition-delay:.24s}.reveal-delay-4{transition-delay:.32s}@keyframes fade-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.animate-in{animation:fade-up .7s var(--ease) forwards;opacity:0}.delay-1{animation-delay:.1s}.delay-2{animation-delay:.22s}.delay-3{animation-delay:.34s}.delay-4{animation-delay:.46s}.divider{background:var(--border);width:100%;height:1px;transition:background var(--duration) var(--ease)}
