:root{--primary:#2563eb;--primary-dark:#1e40af;--accent:#8b5cf6;--accent-dark:#7c3aed;--bg:#ffffff;--bg-secondary:#f8fafc;--bg-dark:#0f172a;--surface:#ffffff;--text:#1e293b;--text-light:#64748b;--text-muted:#94a3b8;--text-inverse:#ffffff;--border:#e2e8f0;--border-light:#f1f5f9;--success:#10b981;--error:#ef4444;--warning:#f59e0b;--shadow-sm:0 1px 2px 0 rgba(0,0,0,0.05);--shadow:0 4px 6px -1px rgba(0,0,0,0.1);--shadow-md:0 10px 15px -3px rgba(0,0,0,0.1);--shadow-lg:0 20px 25px -5px rgba(0,0,0,0.1);--space-xs:0.5rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2rem;--space-xl:3rem;--space-2xl:4rem;--space-3xl:6rem;--font-sans:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;--font-mono:'SF Mono',Monaco,'Cascadia Code','Courier New',monospace;--font-size-xs:0.75rem;--font-size-sm:0.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;--transition:200ms ease-in-out;--transition-slow:300ms ease-in-out;--container-max:1200px;--container-padding:1.5rem}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-sans);font-size:var(--font-size-base);line-height:1.6;color:var(--text);background-color:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,picture,video,canvas,svg{display:block;max-width:100%;height:auto}a{color:var(--primary);text-decoration:none;transition:color var(--transition)}a:hover,a:focus{color:var(--primary-dark)}a:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:2px}button{font-family:inherit;cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.container{max-width:var(--container-max);margin:0 auto;padding:0 var(--container-padding)}.btn{display:inline-block;padding:0.75rem 1.5rem;font-size:var(--font-size-base);font-weight:600;text-align:center;border:2px solid transparent;border-radius:8px;transition:all var(--transition);cursor:pointer;white-space:nowrap}.btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.btn--primary{background-color:var(--primary);color:var(--text-inverse);border-color:var(--primary)}.btn--primary:hover,.btn--primary:focus{background-color:var(--primary-dark);border-color:var(--primary-dark);color:var(--text-inverse);transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn--secondary{background-color:transparent;color:var(--text-inverse);border-color:var(--text-inverse)}.btn--secondary:hover,.btn--secondary:focus{background-color:rgba(255,255,255,0.15);color:var(--text-inverse);border-color:var(--text-inverse)}.btn--large{padding:1rem 2rem;font-size:var(--font-size-lg)}.header{position:sticky;top:0;z-index:1000;background-color:rgba(255,255,255,0.95);backdrop-filter:blur(10px);border-bottom:1px solid var(--border-light);box-shadow:var(--shadow-sm)}.header__content{display:flex;justify-content:space-between;align-items:center;padding:1rem 0}.logo__text{font-size:var(--font-size-2xl);font-weight:700;color:var(--primary)}.nav__toggle{display:none;background:none;border:none;padding:0.5rem;color:var(--text)}.nav__toggle-icon{display:block;width:24px;height:2px;background-color:var(--text);position:relative}.nav__toggle-icon::before,.nav__toggle-icon::after{content:'';position:absolute;width:24px;height:2px;background-color:var(--text);left:0}.nav__toggle-icon::before{top:-8px}.nav__toggle-icon::after{bottom:-8px}.nav__list{display:flex;gap:var(--space-md);list-style:none;align-items:center}.nav__link{padding:0.5rem 1rem;color:var(--text);font-weight:500;transition:color var(--transition)}.nav__link:hover,.nav__link:focus{color:var(--primary)}.nav__link.btn--primary{color:var(--text-inverse)}.nav__link.btn--primary:hover,.nav__link.btn--primary:focus{color:var(--text-inverse)}.hero{position:relative;min-height:90vh;display:flex;align-items:center;justify-content:center;background-image:url('../images/hero-background.jpg');background-size:cover;background-position:center;background-repeat:no-repeat;color:var(--text-inverse);text-align:center}.hero__overlay{position:absolute;inset:0;background:linear-gradient(135deg,rgba(37,99,235,0.85),rgba(139,92,246,0.75))}.hero__content{position:relative;z-index:1;max-width:800px;padding:var(--space-xl)}.hero__title{font-size:var(--font-size-4xl);font-weight:800;line-height:1.1;margin-bottom:var(--space-md)}.hero__subtitle{font-size:var(--font-size-xl);margin-bottom:var(--space-xl);opacity:0.95;line-height:1.5}.hero__cta{display:flex;gap:var(--space-md);justify-content:center;flex-wrap:wrap}.section{padding:var(--space-3xl) 0}.section:nth-child(even){background-color:var(--bg-secondary)}.section__header{text-align:center;margin-bottom:var(--space-2xl)}.section__title{font-size:var(--font-size-3xl);font-weight:700;color:var(--text);margin-bottom:var(--space-sm)}.section__subtitle{font-size:var(--font-size-lg);color:var(--text-light)}.about__content{display:grid;gap:var(--space-xl);align-items:center}.about__paragraph{margin-bottom:var(--space-md);font-size:var(--font-size-lg);color:var(--text-light);line-height:1.7}.about__paragraph:last-child{margin-bottom:0}.about__image img{border-radius:50%;aspect-ratio:1/1;object-fit:cover;box-shadow:var(--shadow-lg);max-width:400px;width:100%}.services__grid{display:grid;gap:var(--space-lg)}.service-card{background-color:var(--surface);padding:var(--space-xl);border-radius:12px;border:1px solid var(--border);transition:all var(--transition-slow)}.service-card:hover,.service-card:focus-within{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--primary)}.service-card__icon{font-size:var(--font-size-4xl);margin-bottom:var(--space-md)}.service-card__title{font-size:var(--font-size-2xl);font-weight:600;margin-bottom:var(--space-sm);color:var(--text)}.service-card__description{color:var(--text-light);margin-bottom:var(--space-md);line-height:1.6}.service-card__features{list-style:none;margin-top:var(--space-md)}.service-card__features li{padding:0.5rem 0;padding-left:1.5rem;position:relative;color:var(--text-light)}.service-card__features li::before{content:'✓';position:absolute;left:0;color:var(--success);font-weight:700}.projects__grid{display:grid;gap:var(--space-xl)}.project-card{background-color:var(--surface);border-radius:12px;overflow:hidden;border:1px solid var(--border);transition:all var(--transition-slow);display:grid}.project-card:hover,.project-card:focus-within{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.project-card__image{width:100%;aspect-ratio:16/9;object-fit:cover}.project-card__content{padding:var(--space-lg)}.project-card__title{font-size:var(--font-size-xl);font-weight:600;margin-bottom:var(--space-sm);color:var(--text)}.project-card__description{color:var(--text-light);margin-bottom:var(--space-md);line-height:1.6}.project-card__meta{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-bottom:var(--space-md);font-size:var(--font-size-sm);color:var(--text-muted)}.project-card__tags{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.tag{padding:0.25rem 0.75rem;background-color:var(--bg-secondary);border-radius:999px;font-size:var(--font-size-xs);font-weight:500;color:var(--primary);border:1px solid var(--border)}.project-card__link{display:inline-block;margin-top:var(--space-md);font-weight:600;color:var(--primary)}.project-card__link:hover{text-decoration:underline}.testimonials__grid{display:grid;gap:var(--space-lg)}.testimonial-card{background-color:var(--surface);padding:var(--space-xl);border-radius:12px;border:1px solid var(--border);box-shadow:var(--shadow)}.testimonial-card__quote{font-size:var(--font-size-lg);line-height:1.7;color:var(--text-light);font-style:italic;margin-bottom:var(--space-md)}.testimonial-card__quote::before{content:'"';font-size:var(--font-size-3xl);color:var(--primary);line-height:0}.testimonial-card__author{display:flex;flex-direction:column;gap:0.25rem}.testimonial-card__author strong{color:var(--text);font-weight:600}.testimonial-card__author span{color:var(--text-muted);font-size:var(--font-size-sm)}.contact__content{max-width:700px;margin:0 auto}.contact__text{margin-bottom:var(--space-xl);text-align:center}.contact__text p{font-size:var(--font-size-lg);color:var(--text-light);margin-bottom:var(--space-md);line-height:1.7}.contact-form{background-color:var(--surface);padding:var(--space-xl);border-radius:12px;border:1px solid var(--border);box-shadow:var(--shadow)}.form-group{margin-bottom:var(--space-lg)}.form-label{display:block;margin-bottom:var(--space-xs);font-weight:600;color:var(--text)}.required{color:var(--error)}.form-input{width:100%;padding:0.75rem 1rem;font-size:var(--font-size-base);font-family:inherit;border:2px solid var(--border);border-radius:8px;background-color:var(--bg);color:var(--text);transition:all var(--transition)}.form-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,0.1)}.form-input:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.form-input::placeholder{color:var(--text-muted)}.form-error{display:block;margin-top:var(--space-xs);font-size:var(--font-size-sm);color:var(--error);min-height:1.25rem}.form-actions{margin-top:var(--space-xl)}.modal{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:var(--space-md)}.modal__overlay{position:absolute;inset:0;background-color:rgba(0,0,0,0.6);backdrop-filter:blur(4px)}.modal__content{position:relative;background-color:var(--surface);padding:var(--space-xl);border-radius:12px;max-width:500px;box-shadow:var(--shadow-lg);text-align:center}.modal__title{font-size:var(--font-size-2xl);font-weight:700;color:var(--text);margin-bottom:var(--space-md)}.modal__message{font-size:var(--font-size-lg);color:var(--text-light);margin-bottom:var(--space-xl);line-height:1.6}.modal__close{width:100%}.footer{background-color:var(--bg-dark);color:var(--text-inverse);padding:var(--space-xl) 0 var(--space-md)}.footer__content{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md)}.footer__brand{text-align:center}.footer__logo{font-size:var(--font-size-4xl);font-weight:700;color:var(--primary);display:block}.footer__tagline{margin-top:var(--space-sm);margin-bottom:var(--space-md);color:var(--text-muted);text-align:center}.footer__social{display:flex;justify-content:center;align-items:center;flex-direction:row;gap:var(--space-lg);list-style:none;flex-wrap:nowrap}.footer__social li{display:inline-flex}.social-icon{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background-color:rgba(255,255,255,0.1);color:var(--text-inverse);transition:all var(--transition)}.social-icon:hover,.social-icon:focus{background-color:var(--primary);color:var(--text-inverse);transform:translateY(-2px)}.footer__nav{display:none;gap:var(--space-xl)}.footer__nav-section{text-align:center}.footer__nav-title{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--space-md)}.footer__nav-list{list-style:none;display:flex;flex-direction:column;gap:var(--space-sm)}.footer__nav-list a{color:var(--text-muted);transition:color var(--transition)}.footer__nav-list a:hover,.footer__social a:hover,.footer__nav-list a:focus,.footer__social a:focus{color:var(--primary)}.footer__bottom{text-align:center;padding-top:var(--space-md);border-top:1px solid rgba(255,255,255,0.1)}.footer__copyright,.footer__credits{color:var(--text-muted);font-size:var(--font-size-sm)}.footer__credits{margin-top:var(--space-xs)}.loading{text-align:center;padding:var(--space-2xl);color:var(--text-muted)}.error-message{text-align:center;padding:var(--space-xl);background-color:rgba(239,68,68,0.1);border:1px solid var(--error);border-radius:8px;color:var(--error)}

/* Enlace especial Apps Web */
.nav__link--special{
    position:relative;
    background:linear-gradient(135deg,#00f0ff 0%,#7c3aed 50%,#f72585 100%);
    -webkit-background-clip:text;
    -webkit-text-fill-color:transparent;
    background-clip:text;
    font-weight:700;
    padding:0.5rem 1rem;
    border-radius:8px;
    animation:special-link-pulse 2s ease-in-out infinite;
}
.nav__link--special::before{
    content:'';
    position:absolute;
    inset:-2px;
    background:linear-gradient(135deg,#00f0ff 0%,#7c3aed 50%,#f72585 100%);
    border-radius:10px;
    opacity:0.2;
    z-index:-1;
    transition:opacity 0.3s ease;
}
.nav__link--special:hover{
    -webkit-text-fill-color:transparent;
    transform:scale(1.05);
}
.nav__link--special:hover::before{
    opacity:0.4;
    animation:glow-border 1.5s ease-in-out infinite;
}
@keyframes special-link-pulse{
    0%,100%{filter:brightness(1)}
    50%{filter:brightness(1.2)}
}
@keyframes glow-border{
    0%,100%{box-shadow:0 0 5px rgba(0,240,255,0.5),0 0 10px rgba(124,58,237,0.3)}
    50%{box-shadow:0 0 15px rgba(0,240,255,0.7),0 0 25px rgba(124,58,237,0.5)}
}

@media (min-width:768px) and (max-width:1024px){.hero__title{font-size:var(--font-size-4xl)}.services__grid{grid-template-columns:repeat(2,1fr)}.projects__grid{grid-template-columns:repeat(2,1fr)}.testimonials__grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:768px){:root{--font-size-3xl:2.25rem;--font-size-4xl:3rem;--font-size-5xl:3.75rem}.hero__title{font-size:var(--font-size-5xl)}.about__content{grid-template-columns:1.5fr 1fr}.services__grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.projects__grid{grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.testimonials__grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}}/* Tablets pequeñas (hasta 7 pulgadas) */
@media (max-width:767px){:root{--container-padding:1rem}.nav__toggle{display:block}.nav__list{position:absolute;top:100%;left:0;right:0;flex-direction:column;background-color:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-md);padding:var(--space-md);display:none}.nav__list.active{display:flex}.nav__link{width:100%;padding:var(--space-sm)}.nav__link.btn--primary,.nav__link.btn--neon{margin-top:1rem;background-color:#1e40af !important;border-color:#1e40af !important;color:var(--text-inverse) !important;box-shadow:none !important;text-shadow:none !important}.nav__link.btn--primary:hover,.nav__link.btn--neon:hover{background-color:#1e3a8a !important;transform:none !important}.hero{min-height:70vh;padding:var(--space-xl) 0}.hero__title{font-size:var(--font-size-3xl)}.hero__subtitle{font-size:var(--font-size-base)}.hero__cta{flex-direction:column}.btn--large{width:100%}.section{padding:var(--space-2xl) 0}.section__title{font-size:var(--font-size-2xl)}.about__content{grid-template-columns:1fr}.services__grid{grid-template-columns:1fr}.projects__grid{grid-template-columns:1fr}.testimonials__grid{grid-template-columns:1fr}.contact-form{padding:var(--space-lg)}.footer__logo{font-size:var(--font-size-3xl)}}

/* Tablets pequeñas en modo landscape */
@media (max-width:900px) and (orientation:landscape){.hero{min-height:50vh}.section{padding:var(--space-xl) 0}}

/* Smartphones (4-6 pulgadas) */
@media (max-width:480px){:root{--container-padding:0.75rem;--font-size-3xl:1.5rem;--font-size-4xl:1.875rem}.hero{min-height:60vh;padding:var(--space-lg) 0}.hero__title{font-size:var(--font-size-3xl);line-height:1.2}.hero__subtitle{font-size:0.95rem}.hero__cta{gap:var(--space-sm)}.btn{padding:0.65rem 1.25rem;font-size:0.95rem}.btn--large{padding:0.875rem 1.5rem}.section{padding:var(--space-xl) 0}.section__title{font-size:var(--font-size-xl)}.section__subtitle{font-size:var(--font-size-base)}.service-card{padding:var(--space-lg)}.service-card__icon{font-size:var(--font-size-3xl)}.service-card__title{font-size:var(--font-size-xl)}.about__paragraph{font-size:var(--font-size-base)}.footer__logo{font-size:var(--font-size-2xl)}.nav__list{padding:var(--space-sm)}.nav__link{padding:0.65rem 1rem;font-size:0.95rem}.footer__nav{display:flex;flex-direction:column}

/* Smartphones muy pequeños (4 pulgadas) */
@media (max-width:360px){:root{--container-padding:0.5rem}.hero__title{font-size:1.5rem}.section__title{font-size:1.25rem}.btn{font-size:0.875rem;padding:0.5rem 1rem}.service-card{padding:var(--space-md)}.nav__link.btn--primary,.nav__link.btn--neon{font-size:0.875rem;padding:0.65rem 1rem}}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:0.01ms!important;animation-iteration-count:1!important;transition-duration:0.01ms!important;scroll-behavior:auto!important}}
