Fran Sola | Conectá con quien sos
Si sentís que tu vida “funciona” pero algo por dentro no tiene sentido, esta página es para vos. No busco likes, busco gente lista para romper su piloto automático.
Soy Fran Sola. Grabé un video corto y una clase completa para dos tipos de personas:
max-width: 100%; margin: 0; box-sizing: border-box; } #ff-form-${FORM_CSS_ID} * { box-sizing: border-box; } #ff-form-${FORM_CSS_ID} .ff-card { background: ${STYLES.cardBg}; border-radius: ${STYLES.radiusLg}; padding: 24px; border: 1px solid ${STYLES.border}; } #ff-form-${FORM_CSS_ID} .ff-progress { display: flex; justify-content: space-between; align-items: center; font-size: 14px; margin-bottom: 16px; padding-bottom: 16px; border-bottom: 1px solid ${STYLES.border}; } #ff-form-${FORM_CSS_ID} .ff-progress-bar { width: 160px; height: 8px; background: ${STYLES.inputBg}; border-radius: 4px; overflow: hidden; } #ff-form-${FORM_CSS_ID} .ff-progress-fill { height: 100%; background: ${STYLES.primary}; transition: width 0.3s ease; } #ff-form-${FORM_CSS_ID} .ff-title { font-size: 24px; font-weight: bold; margin: 0 0 8px 0; color: ${STYLES.text}; } #ff-form-${FORM_CSS_ID} .ff-desc { color: ${STYLES.textSecondary}; margin: 0 0 16px 0; } #ff-form-${FORM_CSS_ID} .ff-options { display: flex; flex-direction: column; gap: 12px; margin-bottom: 24px; } #ff-form-${FORM_CSS_ID} .ff-option { width: 100%; padding: 12px 20px; border-radius: ${STYLES.radiusSm}; border: 2px solid ${STYLES.border}; background: ${STYLES.bg}; color: ${STYLES.text}; text-align: left; cursor: pointer; font-size: 16px; font-family: inherit; transition: all 0.2s ease; } #ff-form-${FORM_CSS_ID} .ff-option:hover { border-color: ${STYLES.primary}; background: ${STYLES.inputBg}; } #ff-form-${FORM_CSS_ID} .ff-option.selected { border-color: ${STYLES.primary}; background: ${STYLES.primary}; color: #ffffff; font-weight: 600; transform: scale(1.02); } #ff-form-${FORM_CSS_ID} .ff-input { width: 100%; padding: 16px; border-radius: ${STYLES.radiusSm}; border: 2px solid ${STYLES.border}; background: ${STYLES.inputBg}; color: ${STYLES.text}; font-size: 18px; font-family: inherit; margin-bottom: 0; } #ff-form-${FORM_CSS_ID} .ff-input:focus { outline: none; border-color: ${STYLES.primary}; } #ff-form-${FORM_CSS_ID} .ff-textarea { min-height: 120px; resize: vertical; } #ff-form-${FORM_CSS_ID} .ff-input-wrap { margin-bottom: 24px; } #ff-form-${FORM_CSS_ID} .ff-error { display: none; color: #ef4444; font-size: 14px; margin-top: 8px; } #ff-form-${FORM_CSS_ID} .ff-nav { display: flex; justify-content: space-between; gap: 16px; } #ff-form-${FORM_CSS_ID} .ff-btn { display: flex; align-items: center; gap: 8px; padding: 10px 20px; border-radius: ${STYLES.radiusSm}; font-size: 16px; font-family: inherit; cursor: pointer; transition: all 0.2s ease; border: none; } #ff-form-${FORM_CSS_ID} .ff-btn-prev { background: transparent; color: ${STYLES.textSecondary}; border: 2px solid ${STYLES.border}; } #ff-form-${FORM_CSS_ID} .ff-btn-prev:hover:not(:disabled) { border-color: ${STYLES.borderHover}; color: ${STYLES.text}; } #ff-form-${FORM_CSS_ID} .ff-btn-next { background: ${STYLES.primary}; color: #ffffff; font-weight: 600; box-shadow: 0 0 20px ${STYLES.primary}66; } #ff-form-${FORM_CSS_ID} .ff-btn-next:hover:not(:disabled) { background: ${STYLES.primaryHover}; transform: translateY(-2px); box-shadow: 0 0 30px ${STYLES.primary}99; } #ff-form-${FORM_CSS_ID} .ff-btn:disabled { opacity: 0.5; cursor: not-allowed; } #ff-form-${FORM_CSS_ID} .ff-success { text-align: center; padding: 40px 20px; } #ff-form-${FORM_CSS_ID} .ff-success-icon { width: 80px; height: 80px; background: ${STYLES.primary}22; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 24px; } #ff-form-${FORM_CSS_ID} .ff-success-icon svg { width: 40px; height: 40px; color: ${STYLES.primary}; } #ff-form-${FORM_CSS_ID} .ff-success h2 { font-size: 28px; font-weight: bold; margin: 0 0 16px 0; } #ff-form-${FORM_CSS_ID} .ff-success-btn { display: inline-flex; align-items: center; gap: 8px; padding: 16px 32px; background: ${STYLES.primary}; color: #ffffff; font-size: 18px; font-weight: 600; border: none; border-radius: ${STYLES.radiusSm}; cursor: pointer; margin-top: 24px; transition: all 0.2s ease; } #ff-form-${FORM_CSS_ID} .ff-success-btn:hover { background: ${STYLES.primaryHover}; transform: translateY(-2px); } @keyframes ff-fade-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } #ff-form-${FORM_CSS_ID} .ff-animate { animation: ff-fade-in 0.3s ease-out; } @media (max-width: 640px) { #ff-form-${FORM_CSS_ID} { padding: 0; max-width: 100%; margin: 0; } #ff-form-${FORM_CSS_ID} .ff-card { padding: 20px; border-radius: 18px; } #ff-form-${FORM_CSS_ID} .ff-title { font-size: 1.3rem; } #ff-form-${FORM_CSS_ID} .ff-desc { font-size: 0.95rem; } #ff-form-${FORM_CSS_ID} .ff-progress-bar { width: 100px; } #ff-form-${FORM_CSS_ID} .ff-option { padding: 14px 16px; font-size: 0.95rem; } #ff-form-${FORM_CSS_ID} .ff-input { padding: 14px; font-size: 1rem; } #ff-form-${FORM_CSS_ID} .ff-btn { padding: 12px 18px; font-size: 0.95rem; } #ff-form-${FORM_CSS_ID} .ff-success h2 { font-size: 1.2rem; } #ff-form-${FORM_CSS_ID} .ff-success-btn { padding: 14px 24px; font-size: 1rem; } } `; document.head.appendChild(styleEl); // Tracking functions function initTracking() { if (TRACKING.googleAnalyticsId) { const script = document.createElement('script'); script.async = true; script.src = 'https://www.googletagmanager.com/gtag/js?id=' + TRACKING.googleAnalyticsId; document.head.appendChild(script); window.dataLayer = window.dataLayer || []; window.gtag = function() { dataLayer.push(arguments); }; gtag('js', new Date()); gtag('config', TRACKING.googleAnalyticsId); } if (TRACKING.googleTagManagerId) { (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer',TRACKING.googleTagManagerId); } if (TRACKING.facebookPixelId) { !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', TRACKING.facebookPixelId); } } function trackEvent(eventName, params) { if (TRACKING.googleAnalyticsId && window.gtag) { gtag('event', eventName, params); } if (TRACKING.googleTagManagerId && window.dataLayer) { dataLayer.push({ event: eventName, ...params }); } if (TRACKING.facebookPixelId && window.fbq) { fbq('trackCustom', eventName, params); } } // Send Lead event to Meta Pixel (always fires if fbq exists, even without config) function trackLeadEvent(email) { if (window.fbq) { var params = email ? { email: email } : {}; fbq('track', 'Lead', params); console.log('[Tracking] Lead event sent to Meta Pixel', params); } } // Generate session ID for tracking var sessionId = 'embed_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9); // Save event to database function saveEventToDb(eventType, stepNumber) { try { fetch(SUPABASE_URL + '/rest/v1/form_events', { method: 'POST', headers: { 'Content-Type': 'application/json', 'apikey': SUPABASE_KEY, 'Authorization': 'Bearer ' + SUPABASE_KEY, 'Prefer': 'return=minimal' }, body: JSON.stringify({ form_id: FORM_ID, event_type: eventType, step_number: stepNumber || null, session_id: sessionId, form_version: 1 }) }); } catch (e) { console.error('[FormFlow] Error saving event:', e); } } // Initialize tracking initTracking(); trackEvent('Form_Load', { form_id: FORM_ID, form_name: FORM_NAME }); saveEventToDb('form_load'); // Render functions function render() { if (currentStep >= QUESTIONS.length) { renderSuccess(); return; } renderQuestion(); } function renderQuestion() { const q = QUESTIONS[currentStep]; const progress = ((currentStep + 1) / QUESTIONS.length) * 100; const isLast = currentStep === QUESTIONS.length - 1; const isMultipleChoice = q.type === 'multiple-choice'; let optionsHtml = ''; if (isMultipleChoice && q.options) { optionsHtml = '
'; } else if (q.type === 'long-text') { const val = textInputs[q.id] || ''; optionsHtml = ''; } else { const placeholder = q.type === 'email' ? T.emailPlaceholder : q.type === 'lead-capture' && q.leadCaptureType === 'instagram' ? T.instagramPlaceholder : q.type === 'lead-capture' && q.leadCaptureType === 'whatsapp' ? T.whatsappPlaceholder : T.yourAnswer; const inputType = q.type === 'email' || (q.type === 'lead-capture' && q.leadCaptureType === 'email') ? 'email' : (q.type === 'lead-capture' && q.leadCaptureType === 'whatsapp') ? 'tel' : 'text'; const inputMode = (q.type === 'lead-capture' && q.leadCaptureType === 'whatsapp') ? ' inputmode="tel"' : ''; const val = textInputs[q.id] || ''; optionsHtml = '' + escapeHtml(q.title) + '
' + (q.description ? '' + escapeHtml(q.description) + '
' : '') + optionsHtml + navHtml + '' + escapeHtml(SUCCESS_CONFIG.successMessage) + '
' + ctaHtml + 'Soy Fran Sola. Grabé un video corto y una clase completa para dos tipos de personas:
— las que viven esa mezcla rara de éxito visible y vacío interno…
— y las que escucharon hablar de Un Curso de Milagros, lo abrieron, leyeron un rato y no entendieron nada.
Si estás en crisis existencial, te sentís sin propósito y sabés que no podés seguir en automático, quedate. No vengo a prometerte que “el universo te manda todo lo que quieras” si repetís una frase frente al espejo.
Vengo a incomodarte, a pensar distinto y a darte un mapa simple para dos cosas: entender qué te está pasando por dentro y empezar a vivir lo que Un Curso de Milagros dice, aunque hasta hoy te haya parecido imposible de comprender.