/* eslint-disable react/prop-types */ /** * ContactSection · Sección 11 del Home. * Brief 1 §3.1 Sección 11. * * - Claim grande izquierda * - Form a la derecha con title + subtitle * - Inputs estilo Brief 0.1 (border-bottom navy, focus cobre 2px) * - Botón cobre patinado * - ID #contacto */ const { useState: uS_C } = React; function Field({ label, type = 'text', name, required, placeholder, ...rest }) { const [focused, setFocused] = uS_C(false); return ( {label}{required && ' *'} setFocused(true)} onBlur={() => setFocused(false)} style={{ ...contStyles.input, borderBottomColor: focused ? 'var(--color-copper-fallback)' : 'rgba(33,52,64,0.5)', borderBottomWidth: focused ? 2 : 1, }} {...rest} /> ); } function ContactSection() { const onSubmit = (e) => { e.preventDefault(); /* En producción: integrar con backend o servicio de form. */ }; return ( DEL TERRENO A LA DECISIÓN. EN UNA REUNIÓN. ¿Quieres saber qué hay debajo de tu próximo proyecto? Déjanos tus datos y agenda tu diagnóstico inicial sin costo. ¿Qué estás buscando? * Selecciona una opción Originación (análisis de demanda + tesis comercial) Co-Desarrollo (acompañar la ejecución del proyecto) Algoritmo DIGO® (estudio de polígono específico) Otro / Hablemos Mensaje Enviar Al enviar, aceptas el tratamiento de tus datos según nuestro {' '}Aviso de Privacidad. ); } const contStyles = { section: { background: '#fff', paddingBlock: 'var(--space-3xl)', }, grid: { display: 'grid', gridTemplateColumns: '1fr', gap: 48, }, claimCol: {}, claim: { margin: 0, fontWeight: 800, fontSize: 'clamp(26px, 3.4vw, 40px)', lineHeight: 1.1, color: 'var(--color-navy-deep)', letterSpacing: '0.005em', display: 'flex', flexDirection: 'column', gap: 2, }, claimLine: { whiteSpace: 'nowrap', display: 'block', }, formCol: { background: 'var(--color-cream)', padding: 'clamp(24px, 4vw, 48px)', borderRadius: 4, }, formTitle: { margin: 0, fontSize: 'clamp(18px, 1.8vw, 22px)', fontWeight: 700, color: 'var(--color-navy-deep)', lineHeight: 1.25, textWrap: 'pretty', }, formSubtitle: { margin: '12px 0 32px', fontSize: 17, color: 'rgba(33,52,64,0.8)', lineHeight: 1.6, }, form: { display: 'flex', flexDirection: 'column', gap: 24, }, row2: { display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 16, }, field: { display: 'flex', flexDirection: 'column', gap: 8, }, fieldLabel: { fontWeight: 700, fontSize: 12, letterSpacing: '0.12em', textTransform: 'uppercase', color: 'var(--color-navy-medium)', }, input: { width: '100%', background: 'transparent', border: 0, borderBottom: '1px solid rgba(33,52,64,0.5)', fontFamily: 'inherit', fontSize: 16, padding: '12px 0', color: 'var(--color-navy-deep)', outline: 'none', transition: 'border-color 200ms ease-out, border-width 200ms ease-out', }, select: { width: '100%', background: 'transparent', border: 0, borderBottom: '1px solid rgba(33,52,64,0.5)', fontFamily: 'inherit', fontSize: 16, padding: '12px 0', color: 'var(--color-navy-deep)', outline: 'none', appearance: 'none', backgroundImage: `url("data:image/svg+xml;utf8,")`, backgroundRepeat: 'no-repeat', backgroundPosition: 'right 4px center', }, textarea: { width: '100%', background: 'transparent', border: 0, borderBottom: '1px solid rgba(33,52,64,0.5)', fontFamily: 'inherit', fontSize: 16, padding: '12px 0', color: 'var(--color-navy-deep)', outline: 'none', resize: 'vertical', minHeight: 80, }, submitBtn: { alignSelf: 'flex-start', marginTop: 8, padding: '16px 48px', }, disclaimer: { margin: 0, fontSize: 12, color: 'var(--color-navy-medium)', lineHeight: 1.5, }, }; const contMQ = document.createElement('style'); contMQ.textContent = ` /* En mobile, las frases del claim pueden romper si son muy largas */ section[data-screen-label="11 Contact"] h2 > span { white-space: normal !important; } @media (min-width: 1024px) { section[data-screen-label="11 Contact"] .container { grid-template-columns: 1.2fr 1fr !important; gap: 56px !important; align-items: start !important; } /* En desktop, cada frase se mantiene en una sola línea */ section[data-screen-label="11 Contact"] h2 > span { white-space: nowrap !important; } } `; document.head.appendChild(contMQ); window.ContactSection = ContactSection;
Déjanos tus datos y agenda tu diagnóstico inicial sin costo.
Al enviar, aceptas el tratamiento de tus datos según nuestro {' '}Aviso de Privacidad.