/* ===== VALEA Inversiones — Estilos estáticos ===== */ :root { --azulOscuro: #1F4E79; --azulPrincipal: #2F6FB3; --azulMedio: #4FA3D1; --azulClaro: #8FD0E8; --naranjaAccento: #F07A2B; --naranjaOscuro: #D9681A; --grisClaro: #F2F2F2; --grisMedio: #6E6E6E; --blanco: #FFFFFF; --radius: 0.5rem; --shadow-md: 0 4px 6px -1px rgba(0,0,0,.1), 0 2px 4px -1px rgba(0,0,0,.06); --shadow-lg: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -2px rgba(0,0,0,.05); --shadow-xl: 0 20px 25px -5px rgba(0,0,0,.1), 0 10px 10px -5px rgba(0,0,0,.04); } * { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; background: var(--azulOscuro); color: var(--blanco); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; line-height: 1.5; } ::selection { background: var(--naranjaAccento); color: var(--blanco); } ::-webkit-scrollbar { width: 10px; } ::-webkit-scrollbar-track { background: var(--azulOscuro); } ::-webkit-scrollbar-thumb { background: var(--azulPrincipal); border-radius: 9999px; } ::-webkit-scrollbar-thumb:hover { background: var(--azulMedio); } a { color: inherit; text-decoration: none; } img { max-width: 100%; display: block; } button { font-family: inherit; cursor: pointer; border: none; } /* ===== Layout ===== */ .container { width: 100%; max-width: 1400px; margin: 0 auto; padding: 0 1rem; } @media (min-width: 768px) { .container { padding: 0 2rem; } } .pt-20 { padding-top: 5rem; } /* ===== Buttons ===== */ .btn { display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius); font-size: .875rem; font-weight: 500; padding: .5rem 1rem; transition: background-color .2s, transform .15s, box-shadow .2s; color: var(--blanco); } .btn:active { transform: scale(.98); } .btn-cta { background: var(--naranjaAccento); } .btn-cta:hover { background: var(--naranjaOscuro); } .btn-default { background: var(--azulPrincipal); } .btn-default:hover { background: var(--azulOscuro); } .btn-ghost { background: transparent; } .btn-ghost:hover { background: rgba(47,111,179,.2); } .btn-lg { padding: .75rem 2rem; font-size: 1rem; height: 2.75rem; } .btn-rounded-full { border-radius: 9999px; } .btn-block { width: 100%; } .btn-shadow { box-shadow: var(--shadow-lg); } /* ===== Navigation ===== */ .nav { position: fixed; top: 0; left: 0; right: 0; z-index: 50; background: rgba(31,78,121,.95); backdrop-filter: blur(4px); border-bottom: 1px solid rgba(79,163,209,.3); } .nav-inner { display: flex; align-items: center; justify-content: space-between; height: 5rem; } .nav-logo img { height: 3rem; width: auto; object-fit: contain; filter: drop-shadow(0 2px 4px rgba(0,0,0,.3)); transition: transform .3s; } .nav-logo:hover img { transform: scale(1.05) rotate(2deg); } .nav-desktop { display: none; align-items: center; gap: .25rem; } .nav-link { position: relative; padding: .5rem 1rem; color: var(--blanco); font-size: .875rem; font-weight: 500; border-radius: var(--radius); transition: color .2s, background .2s; } .nav-link:hover { color: var(--azulPrincipal); background: rgba(31,78,121,.5); } .nav-link.active { color: var(--azulPrincipal); } .nav-link.active::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 2px; background: var(--naranjaAccento); } .nav-cta { margin-left: 1rem; } .nav-toggle { display: inline-flex; align-items: center; justify-content: center; padding: .5rem; background: transparent; color: var(--blanco); } .nav-toggle:hover { color: var(--azulPrincipal); } .nav-mobile { display: none; background: var(--azulOscuro); border-top: 1px solid rgba(79,163,209,.3); overflow: hidden; } .nav-mobile.open { display: block; } .nav-mobile-inner { padding: 1rem; display: flex; flex-direction: column; gap: .5rem; } .nav-mobile-link { padding: .75rem 1rem; border-radius: .5rem; color: var(--blanco); transition: background .2s; } .nav-mobile-link:hover, .nav-mobile-link.active { background: rgba(47,111,179,.4); } .nav-mobile-cta { margin-top: 1rem; padding: .75rem 1rem; border-radius: .5rem; background: var(--naranjaAccento); color: var(--blanco); text-align: center; font-weight: 500; } @media (min-width: 768px) { .nav-desktop { display: flex; } .nav-toggle { display: none; } } /* ===== Hero ===== */ .hero { position: relative; min-height: 100vh; display: flex; align-items: center; justify-content: center; overflow: hidden; } .hero-bg { position: absolute; inset: 0; } .hero-bg img { width: 100%; height: 100%; object-fit: cover; } .hero-overlay { position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(31,78,121,.9), rgba(31,78,121,.8), rgba(31,78,121,.9)); } .hero-overlay-r { position: absolute; inset: 0; background: linear-gradient(to right, rgba(31,78,121,.8), transparent); } .hero-content { position: relative; z-index: 10; text-align: center; max-width: 56rem; margin: 0 auto; } .hero h1 { font-size: 2.25rem; font-weight: 700; color: var(--blanco); margin-bottom: 1.5rem; line-height: 1.1; } .hero-sub { font-size: 1.25rem; color: var(--grisClaro); font-weight: 300; margin-bottom: 2rem; } .hero-sub strong { color: var(--azulClaro); font-weight: 600; } @media (min-width: 768px) { .hero h1 { font-size: 3.75rem; } .hero-sub { font-size: 1.875rem; } } @media (min-width: 1024px) { .hero h1 { font-size: 4.5rem; } .hero-sub { font-size: 2.25rem; } } .scroll-indicator { position: absolute; bottom: 2rem; left: 50%; transform: translateX(-50%); z-index: 10; } .scroll-mouse { width: 1.5rem; height: 2.5rem; border: 2px solid var(--azulClaro); border-radius: 9999px; display: flex; align-items: flex-start; justify-content: center; padding: .5rem; } .scroll-dot { width: .375rem; height: .375rem; background: var(--naranjaAccento); border-radius: 9999px; animation: scrollBounce 1.5s infinite; } @keyframes scrollBounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(8px); } } /* ===== Page hero (interior pages) ===== */ .page-hero { position: relative; padding: 5rem 0; overflow: hidden; background: var(--azulOscuro); } .page-hero-bg { position: absolute; inset: 0; } .page-hero-bg img { width: 100%; height: 100%; object-fit: cover; mix-blend-mode: overlay; opacity: .3; } .page-hero-overlay { position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(31,78,121,.95), rgba(31,78,121,.9), rgba(31,78,121,.95)); } .page-hero-content { position: relative; text-align: center; max-width: 48rem; margin: 0 auto; } .page-hero h1 { font-size: 2.25rem; font-weight: 700; color: var(--blanco); margin-bottom: 1.5rem; } .page-hero h1 span { color: var(--naranjaAccento); } .page-hero p { font-size: 1.25rem; color: var(--azulClaro); } @media (min-width: 768px) { .page-hero h1 { font-size: 3.75rem; } } /* ===== Sections ===== */ .section { padding: 4rem 0; } .section-light { background: var(--grisClaro); } .section-white { background: var(--blanco); } .section-dark { background: var(--azulOscuro); } .section-head { text-align: center; margin-bottom: 4rem; } .section-head h2 { font-size: 1.875rem; font-weight: 700; color: var(--azulOscuro); margin-bottom: 1.5rem; } .section-head h2 span { color: var(--azulPrincipal); } .section-head h2.on-dark { color: var(--blanco); } .section-head h2.on-dark span { color: var(--azulClaro); } .section-head p { font-size: 1.125rem; color: var(--grisMedio); max-width: 42rem; margin: 0 auto; } .section-head p.on-dark { color: var(--grisClaro); } @media (min-width: 768px) { .section-head h2 { font-size: 3rem; } } /* ===== About / values ===== */ .about-text { max-width: 48rem; margin: 0 auto; } .about-text p { font-size: 1.125rem; color: var(--grisMedio); margin-bottom: 1.5rem; } .grid { display: grid; gap: 1.5rem; } .grid-2 { grid-template-columns: 1fr; } .grid-3 { grid-template-columns: 1fr; } .grid-4 { grid-template-columns: 1fr; } @media (min-width: 768px) { .grid-2 { grid-template-columns: repeat(2, 1fr); } .grid-3 { grid-template-columns: repeat(2, 1fr); } .grid-4 { grid-template-columns: repeat(2, 1fr); } } @media (min-width: 1024px) { .grid-3 { grid-template-columns: repeat(3, 1fr); } .grid-4 { grid-template-columns: repeat(4, 1fr); } } /* ===== Cards ===== */ .card { background: var(--blanco); border: 1px solid rgba(79,163,209,.3); border-radius: .75rem; padding: 1.5rem; box-shadow: var(--shadow-md); transition: transform .3s, box-shadow .3s, border-color .3s; } .card:hover { transform: translateY(-5px) scale(1.02); box-shadow: var(--shadow-xl); border-color: var(--azulPrincipal); } .card-light { background: var(--grisClaro); border: 1px solid rgba(79,163,209,.2); } .card-light:hover { border-color: var(--naranjaAccento); } .card-icon { width: 3rem; height: 3rem; background: rgba(143,208,232,.3); border-radius: .5rem; display: flex; align-items: center; justify-content: center; margin-bottom: 1rem; } .card-icon-lg { width: 4rem; height: 4rem; } .card-icon.dark { background: var(--azulOscuro); } .card-icon svg { width: 1.5rem; height: 1.5rem; color: var(--azulPrincipal); } .card-icon.dark svg { color: var(--azulClaro); width: 2rem; height: 2rem; } .card h3 { font-size: 1.25rem; font-weight: 600; color: var(--azulOscuro); margin-bottom: .5rem; } .card .card-title-blue { color: var(--azulPrincipal); } .card p { color: var(--grisMedio); font-size: .875rem; line-height: 1.6; } .card-link { display: inline-block; margin-top: 1rem; color: var(--naranjaAccento); font-weight: 500; font-size: .875rem; transition: color .2s; } .card-link:hover { color: var(--azulPrincipal); } /* ===== Service detail (services page) ===== */ .service-detail { background: var(--blanco); border-left: 4px solid var(--azulPrincipal); border-radius: 0 .75rem .75rem 0; padding: 2rem; box-shadow: var(--shadow-xl); margin-bottom: 4rem; } @media (min-width: 768px) { .service-detail { padding: 3rem; } } .service-detail-grid { display: grid; gap: 2rem; } @media (min-width: 768px) { .service-detail-grid { grid-template-columns: 1fr 1fr; align-items: start; } } .service-detail h2 { font-size: 1.875rem; font-weight: 700; color: var(--azulOscuro); margin-bottom: 1rem; } .service-detail .desc { color: var(--grisMedio); font-size: 1.125rem; margin-bottom: 1.5rem; } .service-features { background: var(--grisClaro); padding: 1.5rem; border-radius: .5rem; } .service-features h3 { font-weight: 700; color: var(--azulOscuro); margin-bottom: 1rem; } .feature-item { display: flex; align-items: flex-start; gap: .75rem; margin-bottom: .75rem; } .feature-item svg { width: 1.25rem; height: 1.25rem; color: var(--naranjaAccento); flex-shrink: 0; margin-top: .25rem; } .feature-item span { color: var(--azulOscuro); font-weight: 500; } /* ===== Projects ===== */ .project-card { background: var(--blanco); border-radius: .5rem; padding: 1.5rem; border-bottom: 4px solid var(--naranjaAccento); box-shadow: var(--shadow-lg); transition: transform .3s; } .project-card:hover { transform: translateY(-5px) scale(1.02); } .project-card-head { display: flex; align-items: flex-start; gap: .75rem; margin-bottom: 1rem; } .project-card-icon { width: 2.5rem; height: 2.5rem; background: var(--azulClaro); border-radius: .5rem; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .project-card-icon svg { width: 1.25rem; height: 1.25rem; color: var(--azulOscuro); } .project-card h3 { font-size: 1.125rem; font-weight: 700; color: var(--azulPrincipal); margin-bottom: .5rem; } .project-card p { color: var(--grisMedio); font-size: .875rem; margin-bottom: 1rem; } .project-client { display: flex; align-items: center; gap: .5rem; color: var(--azulMedio); } .project-client svg { width: 1rem; height: 1rem; color: var(--naranjaAccento); } .project-client span { font-size: .875rem; font-weight: 600; } /* ===== Clients ===== */ .client-card { background: var(--blanco); border: 1px solid rgba(79,163,209,.2); border-radius: .5rem; padding: 1.5rem; box-shadow: var(--shadow-md); display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; transition: transform .3s, box-shadow .3s; } .client-card:hover { transform: scale(1.05); box-shadow: var(--shadow-lg); } .client-icon { width: 3rem; height: 3rem; background: rgba(143,208,232,.3); border-radius: 9999px; display: flex; align-items: center; justify-content: center; margin-bottom: .75rem; } .client-icon svg { width: 1.5rem; height: 1.5rem; color: var(--azulPrincipal); } .client-card span { color: var(--azulOscuro); font-weight: 700; } /* ===== Mission / Vision ===== */ .mv-card { background: rgba(255,255,255,.05); backdrop-filter: blur(4px); border: 1px solid rgba(79,163,209,.3); border-radius: .75rem; padding: 2rem; } .mv-card h2 { font-size: 1.5rem; font-weight: 700; color: var(--naranjaAccento); margin-bottom: 1rem; } .mv-card p { color: var(--grisClaro); line-height: 1.7; font-size: 1.125rem; } /* ===== Contact ===== */ .contact-info-card { background: var(--blanco); border: 1px solid rgba(79,163,209,.2); border-radius: .75rem; padding: 1.5rem; box-shadow: var(--shadow-md); transition: box-shadow .3s, border-color .3s; } .contact-info-card:hover { box-shadow: var(--shadow-xl); border-color: var(--naranjaAccento); } .contact-info-icon { width: 3rem; height: 3rem; background: var(--azulOscuro); border-radius: .5rem; display: flex; align-items: center; justify-content: center; margin-bottom: 1rem; } .contact-info-icon svg { width: 1.5rem; height: 1.5rem; color: var(--naranjaAccento); } .contact-info-card h3 { font-size: 1.125rem; font-weight: 700; color: var(--azulPrincipal); margin-bottom: .75rem; } .contact-info-card p { color: var(--grisMedio); font-size: .875rem; margin-bottom: .5rem; } /* ===== Form ===== */ .form { background: var(--grisClaro); border: 1px solid rgba(79,163,209,.3); border-radius: .75rem; padding: 2rem; box-shadow: var(--shadow-xl); max-width: 48rem; margin: 0 auto; } .form-grid { display: grid; gap: 1.5rem; margin-bottom: 1.5rem; } @media (min-width: 768px) { .form-grid { grid-template-columns: 1fr 1fr; } } .form-group { margin-bottom: 1.5rem; } .form-label { display: block; font-size: .875rem; font-weight: 500; color: var(--azulPrincipal); margin-bottom: .5rem; } .form-label .req { color: var(--naranjaAccento); } .form-label .opt { color: var(--grisMedio); font-size: .75rem; font-weight: 400; } .form-input, .form-textarea { width: 100%; padding: .75rem 1rem; background: var(--blanco); border: 1px solid var(--azulClaro); border-radius: .5rem; color: var(--azulOscuro); font-family: inherit; font-size: 1rem; transition: border-color .2s, box-shadow .2s; } .form-input::placeholder, .form-textarea::placeholder { color: var(--grisMedio); } .form-input:focus, .form-textarea:focus { outline: none; border-color: var(--azulPrincipal); box-shadow: 0 0 0 2px var(--azulClaro); } .form-input.error, .form-textarea.error { border-color: #ef4444; } .form-error { margin-top: .25rem; font-size: .875rem; color: #ef4444; } .form-textarea { resize: none; } /* ===== Toast ===== */ .toast-viewport { position: fixed; bottom: 0; right: 0; z-index: 100; display: flex; flex-direction: column; gap: .5rem; padding: 1rem; max-width: 420px; width: 100%; pointer-events: none; } .toast { pointer-events: auto; display: flex; align-items: center; justify-content: space-between; gap: 1rem; background: var(--blanco); border: 1px solid var(--azulMedio); border-radius: .5rem; padding: 1.5rem 2rem 1.5rem 1.5rem; box-shadow: var(--shadow-lg); animation: toastIn .3s ease-out; } .toast.success { border-color: var(--azulPrincipal); } .toast.error { border-color: #ef4444; background: #fef2f2; } .toast-title { font-size: .875rem; font-weight: 600; color: var(--azulOscuro); } .toast.error .toast-title { color: #b91c1c; } .toast-desc { font-size: .875rem; color: var(--grisMedio); margin-top: .25rem; } .toast-close { position: absolute; top: .5rem; right: .5rem; background: transparent; color: rgba(0,0,0,.4); padding: .25rem; border-radius: .25rem; } .toast-close:hover { color: rgba(0,0,0,.7); } @keyframes toastIn { from { opacity: 0; transform: translateX(100%); } to { opacity: 1; transform: translateX(0); } } /* ===== Footer ===== */ .footer { background: var(--azulOscuro); border-top: 1px solid var(--azulMedio); padding: 2.5rem 0 0; } .footer-grid { display: grid; gap: 1.5rem; } @media (min-width: 768px) { .footer-grid { grid-template-columns: 1fr 1fr; } } @media (min-width: 1024px) { .footer-grid { grid-template-columns: 1fr 1fr 1fr; } } .footer h3 { font-size: 1.5rem; font-weight: 700; color: var(--blanco); margin-bottom: .5rem; } .footer h4 { font-size: 1.125rem; font-weight: 600; color: var(--blanco); border-bottom: 1px solid var(--azulMedio); padding-bottom: .5rem; margin-bottom: 1rem; display: inline-block; } .footer p { color: var(--azulClaro); font-size: .875rem; } .footer-links { display: flex; flex-direction: column; gap: .5rem; } .footer-links a { color: var(--blanco); font-size: .875rem; transition: color .2s; } .footer-links a:hover { color: var(--naranjaAccento); } .footer-contact { display: flex; flex-direction: column; gap: .75rem; } .footer-contact-item { display: flex; align-items: flex-start; gap: .75rem; } .footer-contact-item svg { width: 1.25rem; height: 1.25rem; color: var(--azulClaro); flex-shrink: 0; margin-top: .125rem; } .footer-contact-item span, .footer-contact-item a { color: var(--blanco); font-size: .875rem; } .footer-contact-item a:hover { color: var(--naranjaAccento); } .footer-bottom { margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--azulMedio); text-align: center; color: var(--blanco); font-size: .875rem; padding-bottom: 1.5rem; } /* ===== Scroll reveal ===== */ .reveal { opacity: 0; transform: translateY(30px); transition: opacity .6s ease-out, transform .6s ease-out; } .reveal.visible { opacity: 1; transform: translateY(0); } .reveal-delay-1 { transition-delay: .1s; } .reveal-delay-2 { transition-delay: .2s; } .reveal-delay-3 { transition-delay: .3s; } .reveal-delay-4 { transition-delay: .4s; } .reveal-delay-5 { transition-delay: .5s; } @media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; transition: none; } .scroll-dot { animation: none; } * { scroll-behavior: auto !important; } }