@charset "UTF-8";@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";.App{min-height:100vh;background:var(--bg-primary);transition:background-color var(--transition-base)}.navigation{position:fixed;top:0;left:0;right:0;z-index:1000;background:rgba(var(--bg-primary),.95);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.nav-container{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-6);max-width:1200px;margin:0 auto}.nav-logo{font-size:var(--font-size-xl);font-weight:700;color:var(--primary);cursor:pointer}.nav-items{display:flex;gap:var(--space-6)}.nav-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius);color:var(--text-secondary);transition:all var(--transition-fast)}.nav-item:hover{color:var(--primary);background:var(--bg-secondary)}.theme-toggle{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius);background:var(--bg-secondary);color:var(--text-primary);transition:all var(--transition-fast)}.theme-toggle:hover{background:var(--bg-tertiary)}.hero-section{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;overflow:hidden}.hero-background{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.scene3d{width:100%;height:100%;opacity:.6}.hero-content{text-align:center;z-index:1;max-width:800px;padding:0 var(--space-6)}.hero-text h1{font-size:clamp(2.5rem,8vw,5rem);margin-bottom:var(--space-6);font-weight:700}.hero-subtitle{font-size:var(--font-size-2xl);color:var(--text-secondary);margin-bottom:var(--space-4)}.hero-description{font-size:var(--font-size-lg);color:var(--text-muted);margin-bottom:var(--space-8);max-width:600px;margin-left:auto;margin-right:auto}.hero-social{display:flex;justify-content:center;gap:var(--space-6)}.hero-social a{display:flex;align-items:center;justify-content:center;width:50px;height:50px;border-radius:var(--radius-lg);background:var(--bg-secondary);color:var(--text-primary);transition:all var(--transition-fast)}.hero-social a:hover{background:var(--primary);color:#fff;transform:translateY(-2px)}.scroll-indicator{position:absolute;bottom:var(--space-8);left:50%;transform:translate(-50%);display:flex;align-items:center;justify-content:center;width:50px;height:50px;border-radius:50%;background:var(--bg-secondary);color:var(--text-primary);animation:bounce 2s infinite}@keyframes bounce{0%,20%,50%,80%,to{transform:translate(-50%) translateY(0)}40%{transform:translate(-50%) translateY(-10px)}60%{transform:translate(-50%) translateY(-5px)}}section{padding:var(--space-20) 0}.section-header{text-align:center;margin-bottom:var(--space-16)}.section-header h2{margin-bottom:var(--space-4)}.section-header p{font-size:var(--font-size-lg);color:var(--text-muted);max-width:600px;margin:0 auto}.about-section{background:var(--bg-secondary)}.about-content{display:grid;grid-template-columns:1fr;gap:var(--space-12);align-items:start}.about-text p{font-size:var(--font-size-lg);margin-bottom:var(--space-6)}.skills-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-6)}.skill-card{background:var(--bg-primary);padding:var(--space-8);border-radius:var(--radius-xl);box-shadow:0 4px 6px var(--shadow);transition:all var(--transition-base)}.skill-card:hover{transform:translateY(-5px);box-shadow:0 10px 25px var(--shadow)}.skill-icon{display:flex;align-items:center;justify-content:center;width:60px;height:60px;border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;margin-bottom:var(--space-4)}.skill-card h3{margin-bottom:var(--space-4);color:var(--text-primary)}.skill-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.skill-tag{padding:var(--space-1) var(--space-3);background:var(--bg-secondary);color:var(--text-secondary);border-radius:var(--radius);font-size:var(--font-size-sm)}.portfolio-section{background:var(--bg-primary)}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:var(--space-8)}.project-card{background:var(--bg-secondary);border-radius:var(--radius-xl);overflow:hidden;box-shadow:0 4px 6px var(--shadow);transition:all var(--transition-base)}.project-card:hover{box-shadow:0 20px 40px var(--shadow)}.project-image{height:200px;overflow:hidden;border-radius:var(--radius) var(--radius) 0 0}.project-image .image-container{height:100%;border-radius:0}.project-image .image-container figure{height:100%;margin:0}.project-image .image-container figure .image-wrapper{height:100%}.project-image .image-container figure .image-wrapper picture{height:100%}.project-image .image-container figure .image-wrapper picture img{width:100%;height:100%;object-fit:cover}.project-content{padding:var(--space-6)}.project-content h3{margin-bottom:var(--space-3);color:var(--text-primary)}.project-content p{margin-bottom:var(--space-4);color:var(--text-secondary)}.project-technologies{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-6)}.tech-tag{padding:var(--space-1) var(--space-3);background:var(--primary);color:#fff;border-radius:var(--radius);font-size:var(--font-size-sm)}.project-links{display:flex;gap:var(--space-4)}.project-links a{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--bg-primary);color:var(--text-primary);border-radius:var(--radius);transition:all var(--transition-fast)}.project-links a:hover{background:var(--primary);color:#fff}.contact-section{background:var(--bg-secondary)}.contact-content{display:grid;grid-template-columns:1fr;gap:var(--space-12);align-items:start}.contact-text h3{margin-bottom:var(--space-4);color:var(--text-primary)}.contact-text p{font-size:var(--font-size-lg);color:var(--text-secondary)}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--space-6)}.contact-card{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-6);background:var(--bg-primary);border-radius:var(--radius-xl);box-shadow:0 4px 6px var(--shadow);transition:all var(--transition-base);text-decoration:none}.contact-card:hover{transform:translateY(-5px);box-shadow:0 10px 25px var(--shadow)}.contact-icon{display:flex;align-items:center;justify-content:center;width:50px;height:50px;border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff}.contact-info h4{margin-bottom:var(--space-1);color:var(--text-primary)}.contact-info p{color:var(--text-secondary);margin:0}.modal-wrapper{position:fixed;inset:0;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:2000;padding:var(--space-6)}.modal{background:var(--bg-primary);border-radius:var(--radius-xl);max-width:90vw;max-height:90vh;overflow:auto}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-6);border-bottom:1px solid var(--border)}.modal-header h2{margin:0;color:var(--text-primary)}.close{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius);background:var(--bg-secondary);color:var(--text-primary);font-size:var(--font-size-xl);cursor:pointer;transition:all var(--transition-fast)}.close:hover{background:var(--primary);color:#fff}@media (max-width: 768px){.nav-items{display:none}.hero-text h1{font-size:2.5rem}.hero-social{gap:var(--space-4)}.projects-grid,.contact-grid{grid-template-columns:1fr}}@media (min-width: 768px){.about-content{grid-template-columns:1fr 2fr}.contact-content{grid-template-columns:1fr 1fr}}picture.thumnail{display:block;width:100%;height:200px;overflow:hidden;border-radius:var(--radius)}picture.thumnail img{width:100%;height:100%;object-fit:cover;transition:transform var(--transition-base)}picture.thumnail img:hover{transform:scale(1.05)}picture.original{display:block;max-width:90vw;max-height:80vh}picture.original img{width:100%;height:auto;max-width:100%;max-height:80vh;object-fit:contain;border-radius:var(--radius)}.image-container{cursor:pointer;border-radius:var(--radius);overflow:hidden}.image-wrapper{position:relative;width:100%;height:200px}.image-placeholder{position:absolute;top:0;left:0;width:100%;height:100%;background:var(--bg-tertiary);display:flex;align-items:center;justify-content:center}.placeholder-shimmer{width:100%;height:100%;background:linear-gradient(90deg,var(--bg-tertiary) 25%,var(--bg-secondary) 50%,var(--bg-tertiary) 75%);background-size:200% 100%;animation:shimmer 2s infinite}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.image-wrapper img{transition:opacity var(--transition-base)}.hero-section,.about-section,.portfolio-section,.contact-section{will-change:transform}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media (prefers-contrast: high){.skill-card,.project-card,.contact-card{border:2px solid var(--text-primary)}}@media print{.navigation,.hero-social,.scroll-indicator,.theme-toggle{display:none!important}.hero-section{min-height:auto;page-break-after:always}section{page-break-inside:avoid}}.performance-stats{position:fixed;bottom:var(--space-4);right:var(--space-4);background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);box-shadow:0 4px 6px var(--shadow);z-index:1000;min-width:200px}.performance-stats h4{margin:0 0 var(--space-3) 0;font-size:var(--font-size-sm);color:var(--text-primary)}.metrics-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.metric{display:flex;justify-content:space-between;align-items:center;font-size:var(--font-size-xs)}.metric-label{color:var(--text-secondary)}.metric-value{font-weight:600}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);margin-top:var(--space-8);padding-top:var(--space-8);border-top:1px solid var(--border)}.stat-item{text-align:center}.stat-item h3{font-size:var(--font-size-3xl);color:var(--primary);margin-bottom:var(--space-2);font-weight:700}.stat-item p{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0}@media (max-width: 768px){.stats-grid{grid-template-columns:1fr;gap:var(--space-4)}}.scene3d{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;pointer-events:none}.floating-shapes{position:relative;width:100%;height:100%}.shape{position:absolute;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--secondary));opacity:.1;animation:float 6s ease-in-out infinite}.shape:before{content:"";position:absolute;inset:-2px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--accent));z-index:-1;filter:blur(4px)}.shape-1{width:100px;height:100px;top:20%;left:10%;animation-delay:0s;animation-duration:8s}.shape-2{width:150px;height:150px;top:60%;right:15%;animation-delay:-2s;animation-duration:10s}.shape-3{width:80px;height:80px;top:40%;left:60%;animation-delay:-4s;animation-duration:7s}.shape-4{width:120px;height:120px;bottom:20%;left:20%;animation-delay:-1s;animation-duration:9s}.shape-5{width:60px;height:60px;top:10%;right:30%;animation-delay:-3s;animation-duration:6s}@keyframes float{0%,to{transform:translateY(0) rotate(0) scale(1)}25%{transform:translateY(-20px) rotate(90deg) scale(1.1)}50%{transform:translateY(-40px) rotate(180deg) scale(.9)}75%{transform:translateY(-20px) rotate(270deg) scale(1.05)}}@media (max-width: 768px){.shape{opacity:.05}.shape-1,.shape-2,.shape-3,.shape-4,.shape-5{width:60px;height:60px}}.section-skeleton{padding:var(--space-20) 0}.skeleton-header{text-align:center;margin-bottom:var(--space-16)}.skeleton-title{width:300px;height:40px;background:var(--bg-secondary);border-radius:var(--radius);margin:0 auto var(--space-4);animation:skeleton-pulse 1.5s ease-in-out infinite alternate}.skeleton-subtitle{width:500px;height:20px;background:var(--bg-secondary);border-radius:var(--radius);margin:0 auto;animation:skeleton-pulse 1.5s ease-in-out infinite alternate;animation-delay:.2s}.skeleton-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--space-6);max-width:1200px;margin:0 auto;padding:0 var(--space-6)}.skeleton-card{height:200px;background:var(--bg-secondary);border-radius:var(--radius-xl);animation:skeleton-pulse 1.5s ease-in-out infinite alternate}.skeleton-card:nth-child(2){animation-delay:.4s}.skeleton-card:nth-child(3){animation-delay:.6s}@keyframes skeleton-pulse{0%{opacity:.6}to{opacity:1}}@media (max-width: 768px){.skeleton-title{width:200px}.skeleton-subtitle{width:300px}.skeleton-content{grid-template-columns:1fr}}.loading-progress{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--bg-primary);display:flex;align-items:center;justify-content:center;z-index:9999}.loading-content{text-align:center;max-width:400px;width:100%;padding:0 var(--space-6)}.loading-logo{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--secondary));display:flex;align-items:center;justify-content:center;font-size:var(--font-size-2xl);font-weight:700;color:#fff;margin:0 auto var(--space-6)}.loading-text{margin-bottom:var(--space-6)}.loading-text h2{margin-bottom:var(--space-2);color:var(--text-primary)}.loading-text p{color:var(--text-secondary);font-size:var(--font-size-lg);margin:0}.progress-bar{width:100%;height:4px;background:var(--bg-secondary);border-radius:var(--radius);overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--secondary));border-radius:var(--radius)}.scroll-progress{position:fixed;top:0;left:0;height:3px;background:linear-gradient(90deg,var(--primary),var(--secondary));transform-origin:0%;z-index:1001}.scroll-to-top{position:fixed;bottom:var(--space-6);right:var(--space-6);width:50px;height:50px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #6366f14d;z-index:1000;transition:all var(--transition-fast)}.testimonial-card:hover{box-shadow:0 10px 25px var(--shadow)}.author-avatar{width:50px;height:50px;border-radius:50%;overflow:hidden}.avatar-placeholder{width:100%;height:100%;background:linear-gradient(135deg,var(--primary),var(--secondary));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:var(--font-size-sm)}.author-info h4{margin:0 0 var(--space-1) 0;color:var(--text-primary);font-size:var(--font-size-base)}.faq-question{width:100%;padding:var(--space-6);background:none;border:none;text-align:left;display:flex;justify-content:space-between;align-items:center;cursor:pointer;color:var(--text-primary);font-size:var(--font-size-lg);font-weight:500;transition:background-color var(--transition-fast)}.faq-answer{overflow:hidden}.faq-answer p{padding:0 var(--space-6) var(--space-6);margin:0;color:var(--text-secondary);line-height:1.6}@media (max-width: 1024px){.testimonials-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--space-6)}}@media (max-width: 768px){.scroll-to-top{bottom:var(--space-4);right:var(--space-4);width:45px;height:45px}.testimonials-grid{grid-template-columns:1fr}.testimonial-card{padding:var(--space-6)}.faq-question{padding:var(--space-4);font-size:var(--font-size-base)}.faq-answer p{padding:0 var(--space-4) var(--space-4)}}[data-theme=dark] .testimonial-card,[data-theme=dark] .faq-item{border:1px solid var(--border)}[data-theme=dark] .scroll-to-top{box-shadow:0 4px 12px #6366f133}[data-theme=dark] .scroll-to-top:hover{box-shadow:0 6px 20px #6366f14d}@media (prefers-reduced-motion: reduce){.scroll-progress,.scroll-to-top{transition:none}}@media (prefers-contrast: high){.testimonial-card,.faq-item{border:2px solid var(--text-primary)}.scroll-to-top{border:2px solid white}}.faq-question:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.scroll-to-top:focus-visible{outline:2px solid white;outline-offset:2px}.mobile-menu{position:fixed;top:0;right:0;width:280px;height:100%;background:var(--bg-primary);border-left:1px solid var(--border);z-index:1999;display:flex;flex-direction:column}.mobile-menu-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-6);border-bottom:1px solid var(--border)}.mobile-menu-nav{flex:1;padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.mobile-menu-item{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--bg-secondary);border-radius:var(--radius);color:var(--text-primary);text-align:left;transition:all var(--transition-fast)}.mobile-menu-item:hover{background:var(--bg-tertiary)}.mobile-menu-item span{font-size:var(--font-size-base)}@media (max-width: 768px){.desktop-nav{display:none}.mobile-nav{display:block}}@media (min-width: 769px){.mobile-nav{display:none}}.nav-logo{cursor:pointer}.cursor{color:var(--primary);font-weight:400}.tech-stack{margin:var(--space-12) 0;text-align:center}.tech-stack h3{margin-bottom:var(--space-8);color:var(--text-primary)}.tech-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--space-4);max-width:800px;margin:0 auto}.tech-item{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-4);background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:0 2px 4px var(--shadow);transition:all var(--transition-base);cursor:pointer}.tech-item:hover{box-shadow:0 4px 12px var(--shadow);background:var(--bg-tertiary)}.tech-icon{font-size:2rem;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}.tech-name{font-size:var(--font-size-sm);font-weight:500;color:var(--text-secondary)}@media (max-width: 768px){.tech-grid{grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:var(--space-3)}.tech-item{padding:var(--space-3)}.tech-icon{font-size:1.5rem}}.nav-actions{display:flex;align-items:center;gap:var(--space-4)}.desktop-nav{display:flex}.mobile-nav{display:none}.mobile-menu-toggle{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius);background:var(--bg-secondary);color:var(--text-primary);transition:all var(--transition-fast)}.mobile-menu-toggle:hover{background:var(--bg-tertiary)}.mobile-menu-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:1998}.mobile-menu{position:fixed;top:0;right:0;width:280px;height:100%;background:var(--bg-primary);border-left:1px solid var(--border);z-index:1999;padding:var(--space-6)}.mobile-menu-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-8)}.mobile-menu-header h3{margin:0;color:var(--text-primary)}.mobile-menu-header button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius);background:var(--bg-secondary);color:var(--text-primary)}.mobile-menu-nav{display:flex;flex-direction:column;gap:var(--space-4)}.mobile-menu-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius);background:var(--bg-secondary);color:var(--text-primary);text-align:left;transition:all var(--transition-fast)}.mobile-menu-item:hover{background:var(--primary);color:#fff}.testimonials-section{background:var(--bg-primary)}.testimonials-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:var(--space-8)}.testimonial-card{background:var(--bg-secondary);border-radius:var(--radius-xl);padding:var(--space-8);box-shadow:0 4px 6px var(--shadow);transition:all var(--transition-base)}.testimonial-card:hover{box-shadow:0 20px 40px var(--shadow)}.testimonial-content{margin-bottom:var(--space-6)}.testimonial-content .quote-icon{color:var(--primary);margin-bottom:var(--space-4)}.testimonial-content p{font-size:var(--font-size-lg);line-height:1.6;color:var(--text-secondary);margin-bottom:var(--space-4)}.rating{display:flex;gap:var(--space-1);color:#fbbf24}.testimonial-author{display:flex;align-items:center;gap:var(--space-4)}.author-avatar{width:60px;height:60px;border-radius:50%;overflow:hidden}.avatar-placeholder{width:100%;height:100%;background:linear-gradient(135deg,var(--primary),var(--secondary));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:var(--font-size-lg)}.author-info h4{margin:0 0 var(--space-1) 0;color:var(--text-primary)}.author-info p{margin:0;color:var(--text-muted);font-size:var(--font-size-sm)}.faq-section{background:var(--bg-secondary)}.faq-list{max-width:800px;margin:0 auto}.faq-item{background:var(--bg-primary);border-radius:var(--radius-lg);margin-bottom:var(--space-4);overflow:hidden;box-shadow:0 2px 4px var(--shadow)}.faq-question{width:100%;display:flex;align-items:center;justify-content:space-between;padding:var(--space-6);background:none;border:none;text-align:left;cursor:pointer;transition:all var(--transition-fast)}.faq-question:hover{background:var(--bg-secondary)}.faq-question span{font-size:var(--font-size-lg);font-weight:500;color:var(--text-primary)}.faq-answer{padding:0 var(--space-6) var(--space-6)}.faq-answer p{color:var(--text-secondary);line-height:1.6;margin:0}.scroll-progress{position:fixed;top:0;left:0;width:100%;height:3px;background:linear-gradient(90deg,var(--primary),var(--secondary));transform-origin:0%;z-index:1001}.scroll-to-top{position:fixed;bottom:var(--space-8);right:var(--space-8);width:50px;height:50px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #6366f14d;z-index:1000;transition:all var(--transition-fast)}.scroll-to-top:hover{background:var(--primary-dark);box-shadow:0 6px 20px #6366f166}@media (max-width: 1024px){.desktop-nav{display:none}.mobile-nav{display:block}}@media (max-width: 768px){.nav-container{padding:var(--space-3) var(--space-4)}.testimonials-grid{grid-template-columns:1fr}.mobile-menu{width:100%;border-left:none}.scroll-to-top{bottom:var(--space-6);right:var(--space-6);width:45px;height:45px}}@media (max-width: 480px){.faq-question{padding:var(--space-4)}.faq-answer{padding:0 var(--space-4) var(--space-4)}.testimonial-card{padding:var(--space-6)}}@media (prefers-reduced-motion: no-preference){.testimonial-card:hover{transform:translateY(-5px)}.faq-item:hover{transform:translateY(-2px)}}[data-theme=dark] .mobile-menu-overlay{background:rgba(0,0,0,.7)}[data-theme=dark] .testimonial-card,[data-theme=dark] .faq-item{box-shadow:0 4px 6px #0000004d}[data-theme=dark] .testimonial-card:hover,[data-theme=dark] .faq-item:hover{box-shadow:0 20px 40px #0006}.nav-item{position:relative}.nav-item.active{color:var(--primary);background:var(--bg-secondary)}.nav-item.active:after{content:"";position:absolute;bottom:-2px;left:50%;transform:translate(-50%);width:20px;height:2px;background:var(--primary);border-radius:1px}.mobile-menu-item.active{background:var(--primary);color:#fff}.section-loading{display:flex;align-items:center;justify-content:center;min-height:200px}.section-loading .loading-spinner{width:40px;height:40px;border:3px solid var(--bg-secondary);border-top:3px solid var(--primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.nav-item:focus-visible,.mobile-menu-item:focus-visible,.faq-question:focus-visible{outline:2px solid var(--primary);outline-offset:2px}@media (prefers-contrast: high){.nav-item.active{background:var(--text-primary);color:var(--bg-primary)}.testimonial-card,.faq-item,.project-card,.skill-card,.contact-card{border:2px solid var(--text-primary)}}@media (prefers-reduced-motion: reduce){.floating-shapes .shape{animation:none}.scroll-progress{transition:none}.loading-spinner{animation:none}}.tech-stack{margin-top:var(--space-12)}.tech-stack h3{text-align:center;margin-bottom:var(--space-8);color:var(--text-primary)}.tech-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-4)}.tech-item{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:0 2px 4px var(--shadow);transition:all var(--transition-base)}.tech-icon{width:50px;height:50px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:var(--font-size-lg)}.tech-info{flex:1}.tech-name{display:block;font-weight:500;color:var(--text-primary);margin-bottom:var(--space-2)}.tech-progress{width:100%;height:6px;background:var(--bg-secondary);border-radius:3px;overflow:hidden;margin-bottom:var(--space-1)}.tech-progress-bar{height:100%;border-radius:3px;transition:width var(--transition-base)}.tech-level{font-size:var(--font-size-sm);color:var(--text-muted)}@media (max-width: 640px){.tech-grid{grid-template-columns:1fr}.tech-item{padding:var(--space-3)}.tech-icon{width:40px;height:40px;font-size:var(--font-size-base)}}.tech-item,.testimonial-card,.project-card,.skill-card{will-change:transform}.section-loading .loading-text{margin-top:var(--space-4);color:var(--text-secondary);text-align:center}@media (prefers-reduced-motion: reduce){.tech-progress-bar{transition:none}.tech-item:hover{transform:none}}@media print{.tech-stack,.testimonials-section,.faq-section{page-break-inside:avoid}.tech-grid{display:block}.tech-item{margin-bottom:var(--space-2);break-inside:avoid}}.project-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-3);gap:var(--space-3)}.project-status{padding:var(--space-1) var(--space-3);border-radius:var(--radius);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;flex-shrink:0}.status-в-разработке{background:rgba(249,115,22,.1);color:#f97316;border:1px solid rgba(249,115,22,.2)}.status-запущен{background:rgba(34,197,94,.1);color:#22c55e;border:1px solid rgba(34,197,94,.2)}.status-активен{background:rgba(59,130,246,.1);color:#3b82f6;border:1px solid rgba(59,130,246,.2)}.status-поддержка{background:rgba(168,85,247,.1);color:#a855f7;border:1px solid rgba(168,85,247,.2)}.status-завершен{background:rgba(107,114,128,.1);color:#6b7280;border:1px solid rgba(107,114,128,.2)}@media (max-width: 768px){.project-header{flex-direction:column;align-items:flex-start;gap:var(--space-2)}.project-status{align-self:flex-end}}.optimized-image{position:relative;width:100%;height:100%;overflow:hidden;border-radius:var(--radius)}.optimized-image picture{display:block;width:100%;height:100%}.optimized-image img{width:100%;height:100%;object-fit:cover;transition:transform var(--transition-base)}.optimized-image img:hover{transform:scale(1.05)}.image-error{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:var(--bg-tertiary);color:var(--text-muted);font-size:var(--font-size-sm);border-radius:var(--radius)}.project-image{height:200px;overflow:hidden;border-radius:var(--radius) var(--radius) 0 0;background:var(--bg-tertiary)}.project-image img{width:100%;height:100%;object-fit:cover;transition:transform var(--transition-base)}.project-image img:hover{transform:scale(1.05)}.project-image img:loading{background:var(--bg-secondary)}.project-image img:error{background:var(--bg-tertiary);display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:var(--font-size-sm)}.project-image img:error:after{content:"Изображение недоступно"}:root{--primary: #6366f1;--primary-dark: #4f46e5;--secondary: #8b5cf6;--accent: #06b6d4;--bg-primary: #ffffff;--bg-secondary: #f8fafc;--bg-tertiary: #f1f5f9;--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #64748b;--border: #e2e8f0;--shadow: rgba(0, 0, 0, .1);--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--font-size-5xl: 3rem;--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;--radius-sm: .375rem;--radius: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--transition-fast: .15s ease-out;--transition-base: .3s ease-out;--transition-slow: .5s ease-out}[data-theme=dark]{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--text-primary: #f8fafc;--text-secondary: #cbd5e1;--text-muted: #94a3b8;--border: #334155;--shadow: rgba(0, 0, 0, .3)}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:1.6;color:var(--text-primary);background-color:var(--bg-primary);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;overflow-x:hidden}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{color:var(--text-primary);font-weight:600;line-height:1.2}h1{font-size:var(--font-size-5xl)}h2{font-size:var(--font-size-4xl)}h3{font-size:var(--font-size-3xl)}h4{font-size:var(--font-size-2xl)}h5{font-size:var(--font-size-xl)}h6{font-size:var(--font-size-lg)}p{color:var(--text-secondary);margin-bottom:var(--space-4)}a{color:var(--primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--primary-dark)}.container{max-width:1200px;margin:0 auto;padding:0 var(--space-6)}.gradient-text{background:linear-gradient(135deg,var(--primary),var(--secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--primary);border-radius:var(--radius)}::-webkit-scrollbar-thumb:hover{background:var(--primary-dark)}*:focus-visible{outline:2px solid var(--primary);outline-offset:2px}img{max-width:100%;height:auto}button{background:none;border:none;cursor:pointer;font-family:inherit}
