.theme-toggle[data-v-ee1c48b6]{position:fixed;top:1rem;right:1rem;z-index:1000;display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:999px;background:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:var(--glass-backdrop);backdrop-filter:var(--glass-backdrop);color:var(--text-primary);cursor:pointer;box-shadow:var(--shadow-sm);transition:background var(--transition-normal),transform var(--transition-fast)}.theme-toggle[data-v-ee1c48b6]:hover{transform:translateY(-1px)}.theme-toggle__icon[data-v-ee1c48b6]{font-size:1rem;line-height:1}.theme-toggle__label[data-v-ee1c48b6]{font-size:var(--font-size-sm)}.landing-page{background:var(--background-primary);min-height:100vh;position:relative}.landing-page:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 80%,rgba(59,130,246,.08) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(139,92,246,.08) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(6,182,212,.04) 0%,transparent 50%);pointer-events:none;z-index:0}.landing-page__main{position:relative;z-index:1}.not-found{min-height:100vh;background:linear-gradient(135deg,#1e293b,#334155,#475569);color:#fff;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.not-found:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 80%,rgba(59,130,246,.1) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(139,92,246,.1) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(6,182,212,.05) 0%,transparent 50%);pointer-events:none}.not-found__container{text-align:center;padding:4rem 2rem;position:relative;z-index:1;max-width:600px;margin:0 auto}.not-found__title{font-size:4rem;font-weight:800;margin-bottom:1rem;background:linear-gradient(135deg,#fff,#e2e8f0);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.1}.not-found__description{font-size:1.25rem;opacity:.9;line-height:1.6;margin-bottom:2.5rem;color:#fffc}.not-found__btn{display:inline-flex;align-items:center;gap:.75rem;padding:1rem 2rem;background:linear-gradient(135deg,#06b6d4,#0891b2);color:#fff;border:none;border-radius:50px;font-weight:600;font-size:1rem;cursor:pointer;transition:all .3s ease;position:relative;overflow:hidden;z-index:1}.not-found__btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s ease;z-index:-1}.not-found__btn:hover:before{left:100%}.not-found__btn:hover{transform:translateY(-3px);box-shadow:0 15px 35px #06b6d466}.not-found__btn:active{transform:translateY(-1px)}@media (max-width: 768px){.not-found__container{padding:3rem 1rem}.not-found__title{font-size:3rem}.not-found__description{font-size:1.125rem}}@media (max-width: 480px){.not-found__title{font-size:2.5rem}.not-found__description{font-size:1rem}.not-found__btn{padding:.875rem 1.75rem;font-size:.875rem}}:root{--primary-blue: #3b82f6;--primary-purple: #8b5cf6;--secondary-cyan: #06b6d4;--secondary-teal: #10b981;--accent-primary: #3b82f6;--gradient-primary: linear-gradient(135deg, var(--primary-blue), var(--primary-purple));--gradient-unified: linear-gradient(135deg, #1e293b 0%, #334155 50%, #475569 100%);--gradient-unified-light: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 50%, #cbd5e1 100%);--gradient-hero: var(--gradient-unified);--gradient-about: var(--gradient-unified);--gradient-projects: var(--gradient-unified);--gradient-contact: var(--gradient-unified);--background-primary: var(--gradient-unified);--background-secondary: #1e293b;--glass-bg: rgba(255, 255, 255, .1);--glass-border: rgba(255, 255, 255, .2);--glass-backdrop: blur(15px);--shadow-sm: 0 10px 25px rgba(0, 0, 0, .1);--shadow-md: 0 15px 35px rgba(0, 0, 0, .15);--shadow-lg: 0 25px 50px rgba(0, 0, 0, .2);--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing-lg: 2rem;--spacing-xl: 3rem;--spacing-2xl: 4rem;--spacing-section: 5rem;--radius-sm: .5rem;--radius-md: 1rem;--radius-lg: 1.5rem;--radius-xl: 2rem;--radius-full: 50px;--transition-fast: .2s ease;--transition-normal: .3s ease;--transition-slow: .5s ease;--font-family: "Inter", "Segoe UI", system-ui, -apple-system, 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: 2rem;--font-size-4xl: 2.5rem;--font-size-5xl: 3rem;--container-max-width: 1200px;--container-padding: 2rem}[data-theme=dark]{--text-primary: #ffffff;--text-secondary: rgba(255, 255, 255, .8);--text-muted: rgba(255, 255, 255, .6);--gradient-hero: var(--gradient-unified);--gradient-about: var(--gradient-unified);--gradient-projects: var(--gradient-unified);--gradient-contact: var(--gradient-unified);--background-primary: var(--gradient-unified);--background-secondary: #0f172a;--glass-bg: rgba(255, 255, 255, .08);--glass-border: rgba(255, 255, 255, .18)}[data-theme=light]{--text-primary: #0f172a;--text-secondary: #334155;--text-muted: #64748b;--gradient-hero: var(--gradient-unified-light);--gradient-about: var(--gradient-unified-light);--gradient-projects: var(--gradient-unified-light);--gradient-contact: var(--gradient-unified-light);--background-primary: var(--gradient-unified-light);--background-secondary: #ffffff;--glass-bg: rgba(255, 255, 255, .7);--glass-border: rgba(15, 23, 42, .08)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleInBounce{0%{opacity:0;transform:scale(.3)}50%{transform:scale(1.05)}70%{transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes bounce{0%,20%,53%,80%,to{transform:translateZ(0)}40%,43%{transform:translate3d(0,-30px,0)}70%{transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}@keyframes slideInUp{0%{transform:translateY(100%);visibility:visible}to{transform:translateY(0)}}@keyframes slideInDown{0%{transform:translateY(-100%);visibility:visible}to{transform:translateY(0)}}@keyframes slideInLeft{0%{transform:translate(-100%);visibility:visible}to{transform:translate(0)}}@keyframes slideInRight{0%{transform:translate(100%);visibility:visible}to{transform:translate(0)}}.animate-fade-in{animation:fadeIn .6s ease-out}.animate-fade-in-up{animation:fadeInUp .8s ease-out}.animate-fade-in-left{animation:fadeInLeft .8s ease-out}.animate-fade-in-right{animation:fadeInRight .8s ease-out}.animate-scale-in{animation:scaleIn .5s ease-out}.animate-float{animation:float 3s ease-in-out infinite}.animate-pulse{animation:pulse 2s ease-in-out infinite}.animate-delay-100{animation-delay:.1s}.animate-delay-200{animation-delay:.2s}.animate-delay-300{animation-delay:.3s}.animate-delay-500{animation-delay:.5s}.animate-delay-700{animation-delay:.7s}.portfolio-hero{min-height:100vh;background:var(--gradient-hero);color:var(--text-primary);position:relative;overflow:hidden;display:flex;align-items:center}.portfolio-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 80%,rgba(59,130,246,.1) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(139,92,246,.1) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(6,182,212,.05) 0%,transparent 50%);pointer-events:none}.portfolio-hero__container{max-width:1200px;margin:0 auto;padding:0 2rem;position:relative;z-index:1;width:100%}.portfolio-hero__content{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center;min-height:80vh}.portfolio-hero__text{animation:fadeInLeft 1s ease-out}.portfolio-hero__title{font-size:4rem;font-weight:800;margin-bottom:1rem;color:var(--text-primary);line-height:1.1;position:relative}.portfolio-hero__title:after{content:"";position:absolute;bottom:-10px;left:0;width:100px;height:4px;background:linear-gradient(135deg,#3b82f6,#8b5cf6);border-radius:2px;animation:expandWidth 1s ease-out .5s both}.portfolio-hero__role{font-size:1.5rem;font-weight:600;color:#3b82f6;margin-bottom:1rem;text-transform:uppercase;letter-spacing:2px;animation:fadeInUp 1s ease-out .2s both}.portfolio-hero__tagline{font-size:1.25rem;opacity:.9;line-height:1.6;margin-bottom:2.5rem;animation:fadeInUp 1s ease-out .4s both}.portfolio-hero__cta{display:flex;gap:1rem;animation:fadeInUp 1s ease-out .6s both;flex-wrap:wrap;justify-content:flex-start}.portfolio-hero__cta-btn{display:inline-flex;align-items:center;gap:.75rem;padding:1rem 2rem;border-radius:50px;text-decoration:none;font-weight:600;transition:all .3s ease;position:relative;overflow:hidden;z-index:1;min-width:max-content;white-space:nowrap;height:56px;box-sizing:border-box}.portfolio-hero__cta-btn svg{width:20px;height:20px;flex-shrink:0}.portfolio-hero__cta-btn--primary{background:linear-gradient(135deg,#3b82f6,#8b5cf6);color:#fff;border:2px solid transparent}.portfolio-hero__cta-btn--secondary{background:transparent;color:var(--text-primary);border:2px solid var(--glass-border)}.portfolio-hero__cta-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s ease;z-index:-1}.portfolio-hero__cta-btn:hover:before{left:100%}.portfolio-hero__cta-btn--primary:hover{transform:translateY(-3px);box-shadow:0 15px 35px #3b82f666}.portfolio-hero__cta-btn--secondary:hover{background:#ffffff1a;transform:translateY(-3px);box-shadow:0 15px 35px #ffffff1a}.portfolio-hero__visual{position:relative;animation:fadeInRight 1s ease-out .8s both}.portfolio-hero__floating-card{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-backdrop);backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:25px;padding:2.5rem;text-align:center;animation:float 6s ease-in-out infinite;position:relative;z-index:2}.portfolio-hero__card-content{display:flex;flex-direction:column;align-items:center}.portfolio-hero__profile-avatar{width:120px;height:120px;margin:0 auto 2rem;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#8b5cf6);display:flex;align-items:center;justify-content:center;position:relative}.portfolio-hero__avatar-inner{width:110px;height:110px;background:var(--glass-bg);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-primary)}.portfolio-hero__tech-badges{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center}.portfolio-hero__tech-badge{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-backdrop);backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);padding:.5rem 1rem;border-radius:25px;font-size:.875rem;font-weight:600;color:var(--text-primary)}.portfolio-hero__floating-element{position:absolute;width:60px;height:60px;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-backdrop);backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-primary)}.portfolio-hero__floating-element--1{top:10%;right:10%;animation:float 4s ease-in-out infinite}.portfolio-hero__floating-element--2{top:60%;right:-10%;animation:float 5s ease-in-out infinite 1s}.portfolio-hero__floating-element--3{bottom:20%;left:-5%;animation:float 4.5s ease-in-out infinite 2s}@keyframes fadeInLeft{0%{opacity:0;transform:translate(-50px)}to{opacity:1;transform:translate(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translate(50px)}to{opacity:1;transform:translate(0)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}@media (max-width: 768px){.portfolio-hero__content{grid-template-columns:1fr;gap:3rem;text-align:center;min-height:90vh}.portfolio-hero__title{font-size:3rem}.portfolio-hero__role{font-size:1.25rem}.portfolio-hero__tagline{font-size:1.125rem}.portfolio-hero__cta{justify-content:center;max-width:100%}.portfolio-hero__cta-btn{flex:0 0 auto;min-width:280px;justify-content:center}.portfolio-hero__floating-card{padding:2rem}.portfolio-hero__tech-badges{gap:.5rem}.portfolio-hero__tech-badge{font-size:.8rem;padding:.4rem .8rem}.portfolio-hero__profile-avatar{width:100px;height:100px}.portfolio-hero__avatar-inner{width:90px;height:90px}.portfolio-hero__floating-element{width:50px;height:50px}}@media (max-width: 480px){.portfolio-hero__container{padding:0 1rem}.portfolio-hero__title{font-size:2.5rem}.portfolio-hero__role{font-size:1.125rem}.portfolio-hero__floating-card{padding:1.5rem}.portfolio-hero__tech-badges{gap:.5rem}.portfolio-hero__tech-badge{font-size:.75rem;padding:.375rem .75rem}}.portfolio-about{min-height:100vh;padding:5rem 0;background:var(--gradient-about);color:var(--text-primary);position:relative;overflow:hidden;display:flex;align-items:center}.portfolio-about:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 80%,rgba(59,130,246,.1) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(139,92,246,.1) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(6,182,212,.05) 0%,transparent 50%);pointer-events:none}.portfolio-about__container{max-width:1200px;margin:0 auto;padding:0 2rem;position:relative;z-index:1}.portfolio-about__header{text-align:center;margin-bottom:4rem;animation:fadeInUp .8s ease-out}.portfolio-about__title{font-size:3rem;font-weight:700;margin-bottom:1rem;color:var(--text-primary);position:relative}.portfolio-about__title-decoration{width:100px;height:4px;background:linear-gradient(135deg,#3b82f6,#8b5cf6);margin:0 auto;border-radius:2px;animation:expandWidth 1s ease-out .5s both}.portfolio-about__content{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:start}.portfolio-about__bio-section{animation:fadeInLeft .8s ease-out}.portfolio-about__bio-card{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-backdrop);backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:25px;padding:2.5rem;box-shadow:var(--shadow-md)}.portfolio-about__bio-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.portfolio-about__profile-icon{width:60px;height:60px;background:linear-gradient(135deg,#3b82f6,#8b5cf6);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}.portfolio-about__bio-title{font-size:1.5rem;font-weight:600;color:var(--text-primary);margin:0}.portfolio-about__bio-text{font-size:1.1rem;line-height:1.7;color:var(--text-secondary);margin:0}.portfolio-about__skills-section{display:flex;flex-direction:column;gap:2rem;animation:fadeInRight .8s ease-out}.portfolio-about__skills-card,.portfolio-about__stats-card{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-backdrop);backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:25px;padding:2rem;box-shadow:var(--shadow-md);transition:transform .3s ease}.portfolio-about__skills-card:hover,.portfolio-about__stats-card:hover{transform:translateY(-5px)}.portfolio-about__skills-title,.portfolio-about__stats-title{font-size:1.5rem;font-weight:600;color:var(--text-primary);margin-bottom:1.5rem;text-align:center}.portfolio-about__skills-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.portfolio-about__skill-item{display:flex;align-items:center;gap:1rem;padding:1rem;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:15px;transition:all .3s ease}.portfolio-about__skill-item:hover{transform:translateY(-2px)}.portfolio-about__skill-icon{width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.portfolio-about__skill-item--frontend .portfolio-about__skill-icon{background:linear-gradient(135deg,#3b82f6,#1d4ed8);color:#fff}.portfolio-about__skill-item--tools .portfolio-about__skill-icon{background:linear-gradient(135deg,#10b981,#059669);color:#fff}.portfolio-about__skill-item--design .portfolio-about__skill-icon{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.portfolio-about__skill-item--backend .portfolio-about__skill-icon{background:linear-gradient(135deg,#8b5cf6,#7c3aed);color:#fff}.portfolio-about__skill-info{flex:1}.portfolio-about__skill-name{font-size:1rem;font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.portfolio-about__skill-description{font-size:.875rem;color:var(--text-secondary);margin:0}.portfolio-about__stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.portfolio-about__stat-item{text-align:center;padding:1.5rem 1rem;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:15px;transition:all .3s ease}.portfolio-about__stat-item:hover{background:#fffc;transform:translateY(-2px)}.portfolio-about__stat-item:hover .portfolio-about__stat-label{color:var(--text-primary)}.portfolio-about__stat-number{font-size:2rem;font-weight:700;background:linear-gradient(135deg,#3b82f6,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.5rem}.portfolio-about__stat-label{font-size:.875rem;color:var(--text-secondary);font-weight:500;transition:color .3s ease}@media (max-width: 768px){.portfolio-about{padding:3rem 0}.portfolio-about__container{padding:0 1rem}.portfolio-about__title{font-size:2.5rem}.portfolio-about__content{grid-template-columns:1fr;gap:2rem}.portfolio-about__bio-card,.portfolio-about__skills-card,.portfolio-about__stats-card{padding:2rem 1.5rem}.portfolio-about__bio-header{flex-direction:column;text-align:center;gap:.75rem}.portfolio-about__skills-grid{grid-template-columns:1fr}.portfolio-about__stats-grid{grid-template-columns:1fr;gap:1rem}}@media (max-width: 480px){.portfolio-about__title{font-size:2rem}.portfolio-about__bio-card,.portfolio-about__skills-card,.portfolio-about__stats-card{padding:1.5rem 1rem}.portfolio-about__profile-icon{width:50px;height:50px}.portfolio-about__skill-item{flex-direction:column;text-align:center;gap:.75rem}.portfolio-about__skill-icon{width:40px;height:40px}}.portfolio-projects{min-height:100vh;padding:5rem 0;background:var(--gradient-projects);color:var(--text-primary);position:relative;overflow:hidden;display:flex;align-items:center}.portfolio-projects:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 80%,rgba(59,130,246,.1) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(139,92,246,.1) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(6,182,212,.05) 0%,transparent 50%);pointer-events:none}.portfolio-projects__container{max-width:1200px;margin:0 auto;padding:0 2rem;position:relative;z-index:1}.portfolio-projects__header{text-align:center;margin-bottom:4rem;animation:fadeInUp .8s ease-out}.portfolio-projects__title{font-size:3rem;font-weight:700;margin-bottom:1rem;color:var(--text-primary)}.portfolio-projects__subtitle{font-size:1.2rem;opacity:.9;max-width:600px;margin:0 auto 1.5rem;line-height:1.6}.portfolio-projects__title-decoration{width:100px;height:4px;background:linear-gradient(135deg,#3b82f6,#8b5cf6);margin:0 auto;border-radius:2px;animation:expandWidth 1s ease-out .5s both}.portfolio-projects__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:2rem;margin-bottom:4rem}.portfolio-projects__card{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-backdrop);backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:25px;padding:2rem;transition:all .3s ease;position:relative;overflow:hidden;animation:fadeInUp .8s ease-out}.portfolio-projects__card--1{animation-delay:.1s}.portfolio-projects__card--2{animation-delay:.3s}.portfolio-projects__card--3{animation-delay:.5s}.portfolio-projects__card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(135deg,#3b82f6,#8b5cf6);opacity:0;transition:opacity .3s ease}.portfolio-projects__card:hover:before{opacity:1}.portfolio-projects__card:hover{transform:translateY(-10px);background:#ffffff26;box-shadow:0 25px 50px #0003}.portfolio-projects__card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.portfolio-projects__project-icon{width:50px;height:50px;background:linear-gradient(135deg,#3b82f6,#8b5cf6);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff}.portfolio-projects__project-status{display:flex;align-items:center}.portfolio-projects__status-badge{background:#22c55e33;color:#22c55e;padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:600;border:1px solid rgba(34,197,94,.3)}.portfolio-projects__card-content{margin-bottom:2rem}.portfolio-projects__project-title{font-size:1.5rem;font-weight:600;margin-bottom:1rem;color:var(--text-primary)}.portfolio-projects__project-description{font-size:1rem;line-height:1.6;color:var(--text-secondary);margin:0}.portfolio-projects__card-footer{margin-top:auto}.portfolio-projects__project-actions{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.portfolio-projects__action-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;border-radius:50px;text-decoration:none;font-weight:600;font-size:.875rem;transition:all .3s ease;position:relative;overflow:hidden}.portfolio-projects__action-btn--demo{background:linear-gradient(135deg,#3b82f6,#1d4ed8);color:#fff;border:2px solid transparent}.portfolio-projects__action-btn--github{background:transparent;color:var(--text-primary);border:2px solid var(--glass-border)}.portfolio-projects__action-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s ease;z-index:-1}.portfolio-projects__action-btn:hover:before{left:100%}.portfolio-projects__action-btn--demo:hover{transform:translateY(-2px);box-shadow:0 10px 25px #3b82f64d}.portfolio-projects__action-btn--github:hover{background:var(--glass-bg);transform:translateY(-2px)}.portfolio-projects__tech-list{display:flex;gap:.5rem;flex-wrap:wrap}.portfolio-projects__tech-tag{padding:.25rem .75rem;border-radius:15px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.portfolio-projects__tech-tag--vue{background:#4db75333;color:#4db753;border:1px solid rgba(77,183,83,.3)}.portfolio-projects__tech-tag--angular{background:#d443;color:#d44;border:1px solid rgba(221,68,68,.3)}.portfolio-projects__tech-tag--express{background:#22c55e33;color:#22c55e;border:1px solid rgba(34,197,94,.3)}.portfolio-projects__tech-tag--vite{background:#a855f733;color:#a855f7;border:1px solid rgba(168,85,247,.3)}.portfolio-projects__tech-tag--typescript{background:#3b82f633;color:#3b82f6;border:1px solid rgba(59,130,246,.3)}.portfolio-projects__tech-tag--nodejs{background:#22c55e33;color:#22c55e;border:1px solid rgba(34,197,94,.3)}.portfolio-projects__tech-tag--bootstrap{background:#8b5cf633;color:#8b5cf6;border:1px solid rgba(139,92,246,.3)}.portfolio-projects__tech-tag--supabase{background:#22c55e33;color:#22c55e;border:1px solid rgba(34,197,94,.3)}.portfolio-projects__tech-tag--tailwind{background:#06b6d433;color:#06b6d4;border:1px solid rgba(6,182,212,.3)}.portfolio-projects__tech-tag--default{background:#9ca3af33;color:#9ca3af;border:1px solid rgba(156,163,175,.3)}.portfolio-projects__cta{text-align:center;animation:fadeInUp .8s ease-out .7s both}.portfolio-projects__cta-content{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-backdrop);backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:25px;padding:3rem 2rem;max-width:600px;margin:0 auto}.portfolio-projects__cta-title{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-primary)}.portfolio-projects__cta-description{font-size:1.1rem;color:var(--text-secondary);margin-bottom:2rem;line-height:1.6}.portfolio-projects__cta-btn{display:inline-flex;align-items:center;gap:.75rem;padding:1rem 2rem;background:linear-gradient(135deg,#3b82f6,#8b5cf6);color:#fff;text-decoration:none;border-radius:50px;font-weight:600;transition:all .3s ease}.portfolio-projects__cta-btn:hover{transform:translateY(-3px);box-shadow:0 15px 35px #3b82f666}@keyframes expandWidth{0%{width:0}to{width:100px}}@media (max-width: 768px){.portfolio-projects{padding:3rem 0}.portfolio-projects__container{padding:0 1rem}.portfolio-projects__title{font-size:2.5rem}.portfolio-projects__grid{grid-template-columns:1fr;gap:1.5rem}.portfolio-projects__card{padding:1.5rem}.portfolio-projects__card-header{flex-direction:column;align-items:flex-start;gap:1rem}.portfolio-projects__project-actions{flex-direction:column}.portfolio-projects__action-btn{justify-content:center}.portfolio-projects__cta-content{padding:2rem 1.5rem}.portfolio-projects__cta-title{font-size:1.75rem}}@media (max-width: 480px){.portfolio-projects__title{font-size:2rem}.portfolio-projects__card{padding:1.25rem}.portfolio-projects__project-icon{width:40px;height:40px}.portfolio-projects__project-title{font-size:1.25rem}.portfolio-projects__cta-content{padding:1.5rem 1rem}}.portfolio-contact{min-height:100vh;padding:4rem 0;background:var(--gradient-contact);color:var(--text-primary);position:relative;overflow:hidden;display:flex;align-items:center}.portfolio-contact:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 80%,rgba(59,130,246,.1) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(139,92,246,.1) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(6,182,212,.05) 0%,transparent 50%);pointer-events:none}.portfolio-contact__container{max-width:1200px;margin:0 auto;padding:0 2rem;position:relative;z-index:1}.portfolio-contact__header{text-align:center;margin-bottom:3rem;animation:fadeInUp .8s ease-out}.portfolio-contact__title{font-size:3rem;font-weight:700;margin-bottom:1rem;color:var(--text-primary)}.portfolio-contact__subtitle{font-size:1.2rem;opacity:.9;max-width:600px;margin:0 auto;line-height:1.6}.portfolio-contact__grid{display:grid;grid-template-columns:2fr 1fr;gap:3rem;margin-bottom:3rem}.portfolio-contact__methods{display:grid;gap:1.5rem}.portfolio-contact__card{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-backdrop);backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:20px;padding:2rem;display:flex;align-items:center;gap:1.5rem;transition:all .3s ease;animation:fadeInLeft .8s ease-out}.portfolio-contact__card:nth-child(2){animation-delay:.2s}.portfolio-contact__card:nth-child(3){animation-delay:.4s}.portfolio-contact__card:hover{transform:translateY(-5px);background:#ffffff26;box-shadow:0 20px 40px #0000001a}.portfolio-contact__icon{width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--text-primary);flex-shrink:0;transition:all .3s ease}.portfolio-contact__card--email:hover .portfolio-contact__icon{background:linear-gradient(135deg,#ff6b6b,#ee5a52);transform:scale(1.1)}.portfolio-contact__card--phone:hover .portfolio-contact__icon{background:linear-gradient(135deg,#4ecdc4,#44a08d);transform:scale(1.1)}.portfolio-contact__card--whatsapp:hover .portfolio-contact__icon{background:linear-gradient(135deg,#25d366,#128c7e);transform:scale(1.1)}.portfolio-contact__info{flex:1}.portfolio-contact__method-title{font-size:1.2rem;font-weight:600;margin-bottom:.5rem;color:var(--text-primary)}.portfolio-contact__link{color:var(--text-secondary);text-decoration:none;font-size:1.1rem;transition:all .3s ease;border-bottom:1px solid transparent}.portfolio-contact__link:hover{color:#fff;border-bottom-color:#ffffff80}.portfolio-contact__social-section{animation:fadeInRight .8s ease-out}.portfolio-contact__social-title{font-size:1.5rem;font-weight:600;margin-bottom:1.5rem;text-align:center}.portfolio-contact__social-links{display:flex;flex-direction:column;gap:1rem}.portfolio-contact__social-link{display:flex;align-items:center;gap:1rem;padding:1rem 1.5rem;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-backdrop);backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:15px;color:var(--text-primary);text-decoration:none;transition:all .3s ease;font-weight:500}.portfolio-contact__social-link:hover{transform:translate(5px);background:var(--glass-bg);color:#fff}.portfolio-contact__social-link:hover svg{color:#fff}.portfolio-contact__social-link--github:hover{background:linear-gradient(135deg,#333,#24292e)}.portfolio-contact__social-link--linkedin:hover{background:linear-gradient(135deg,#0077b5,#005885)}.portfolio-contact__social-link--whatsapp:hover{background:linear-gradient(135deg,#25d366,#128c7e)}.portfolio-contact__cta-section{animation:fadeInUp .8s ease-out .6s both}.portfolio-contact__cta-card{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-backdrop);backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:25px;padding:3rem;text-align:center;position:relative;overflow:hidden}.portfolio-contact__cta-card:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(45deg,transparent,rgba(255,255,255,.1),transparent);transform:rotate(45deg);transition:all .6s ease;opacity:0}.portfolio-contact__cta-card:hover:before{animation:shimmer 1.5s ease-in-out}.portfolio-contact__cta-title{font-size:2rem;font-weight:700;margin-bottom:1rem}.portfolio-contact__cta-description{font-size:1.1rem;opacity:.9;margin-bottom:2rem;max-width:500px;margin-left:auto;margin-right:auto}.portfolio-contact__cta-buttons{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.portfolio-contact__cta-btn{padding:1rem 2rem;border-radius:50px;text-decoration:none;font-weight:600;transition:all .3s ease;position:relative;overflow:hidden;z-index:1}.portfolio-contact__cta-btn--primary{background:linear-gradient(135deg,#ff6b6b,#ee5a52);color:#fff;border:2px solid transparent}.portfolio-contact__cta-btn--secondary{background:transparent;color:var(--text-primary);border:2px solid var(--glass-border)}.portfolio-contact__cta-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s ease;z-index:-1}.portfolio-contact__cta-btn:hover:before{left:100%}.portfolio-contact__cta-btn--primary:hover{transform:translateY(-2px);box-shadow:0 10px 30px #ff6b6b4d}.portfolio-contact__cta-btn--secondary:hover{background:var(--glass-bg);transform:translateY(-2px);box-shadow:0 10px 30px #0f172a14}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes shimmer{0%{opacity:0;transform:translate(-100%) translateY(-100%) rotate(45deg)}50%{opacity:1}to{opacity:0;transform:translate(100%) translateY(100%) rotate(45deg)}}@media (max-width: 768px){.portfolio-contact{padding:3rem 0}.portfolio-contact__container{padding:0 1rem}.portfolio-contact__title{font-size:2.5rem}.portfolio-contact__grid{grid-template-columns:1fr;gap:2rem}.portfolio-contact__card{padding:1.5rem;flex-direction:column;text-align:center;gap:1rem}.portfolio-contact__method-title{margin-bottom:.25rem}.portfolio-contact__social-links{gap:.75rem}.portfolio-contact__social-link{padding:.875rem 1.25rem;justify-content:center}.portfolio-contact__cta-card{padding:2rem 1.5rem}.portfolio-contact__cta-title{font-size:1.75rem}.portfolio-contact__cta-buttons{flex-direction:column;align-items:center}.portfolio-contact__cta-btn{width:100%;max-width:300px;text-align:center}}@media (max-width: 480px){.portfolio-contact__title{font-size:2rem}.portfolio-contact__card{padding:1.25rem}.portfolio-contact__icon{width:50px;height:50px}.portfolio-contact__cta-card{padding:1.5rem 1rem}}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-family);line-height:1.6;color:var(--text-primary);background:var(--background-primary)}.container{max-width:var(--container-max-width);margin:0 auto;padding:0 var(--spacing-lg)}.section-spacing{padding:var(--spacing-section) 0}.text-center{text-align:center}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}*:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}
