{"id":85,"date":"2026-03-02T09:38:16","date_gmt":"2026-03-02T12:38:16","guid":{"rendered":"https:\/\/rnlsn.cc\/?page_id=85"},"modified":"2026-03-29T06:27:50","modified_gmt":"2026-03-29T09:27:50","slug":"proposal","status":"publish","type":"page","link":"https:\/\/rnlsn.cc\/en\/proposal\/","title":{"rendered":"Proposal"},"content":{"rendered":"\n<style>\n#rnlsncc-proposal {\n  font-family: Inter, sans-serif;\n  font-size: 0.95rem;\n  font-weight: 300;\n  line-height: 1.4;\n  letter-spacing: 0px;\n  color: #111111;\n  margin: 0;\n}\n#rnlsncc-proposal * { box-sizing: border-box; }\n\n#rnlsncc-proposal .rq-prog-wrap {\n  width: 100%;\n  height: 1px;\n  background: #d0d0d0;\n  margin-bottom: 2rem;\n}\n#rnlsncc-proposal .rq-prog-fill {\n  height: 100%;\n  background: #111111;\n  width: 0%;\n  transition: width 0.45s ease;\n}\n#rnlsncc-proposal .rq-eyebrow {\n  display: block;\n  font-size: 0.875rem;\n  font-weight: 700;\n  letter-spacing: 1.4px;\n  text-transform: uppercase;\n  color: #686868;\n  margin-bottom: 1rem;\n}\n#rnlsncc-proposal .rq-title {\n  font-family: Inter, sans-serif;\n  font-size: clamp(1.75rem, 5vw, 2.15rem);\n  font-weight: 400;\n  line-height: 1.125;\n  letter-spacing: 0px;\n  text-transform: uppercase;\n  color: #111111;\n  margin: 0 0 1.5rem;\n}\n#rnlsncc-proposal .rq-meta {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 1rem 2rem;\n  border-top: 1px solid #d0d0d0;\n  padding-top: 1.25rem;\n  margin-bottom: 1.5rem;\n}\n#rnlsncc-proposal .rq-meta-key {\n  font-size: 0.875rem;\n  font-weight: 700;\n  letter-spacing: 1.4px;\n  text-transform: uppercase;\n  color: #686868;\n  margin-bottom: 4px;\n}\n#rnlsncc-proposal .rq-meta-val {\n  font-size: 0.9rem;\n  font-weight: 300;\n  color: #111111;\n}\n#rnlsncc-proposal .rq-step-label {\n  font-size: 0.75rem;\n  font-weight: 700;\n  letter-spacing: 1.4px;\n  text-transform: uppercase;\n  color: #686868;\n  margin-bottom: 0.25rem;\n}\n#rnlsncc-proposal .rq-step-title {\n  font-size: 1.35rem;\n  font-weight: 400;\n  line-height: 1.125;\n  color: #111111;\n  margin-bottom: 1.75rem;\n  padding-bottom: 1.25rem;\n  border-bottom: 1px solid #d0d0d0;\n}\n#rnlsncc-proposal .rq-field {\n  margin-bottom: 1.25rem;\n}\n#rnlsncc-proposal .rq-field-label {\n  display: block;\n  font-size: 0.75rem;\n  font-weight: 700;\n  letter-spacing: 1.2px;\n  text-transform: uppercase;\n  color: #686868;\n  margin-bottom: 0.4rem;\n}\n#rnlsncc-proposal .rq-field-input,\n#rnlsncc-proposal .rq-field-textarea {\n  width: 100%;\n  padding: 0.75rem 0.9rem;\n  border: 1px solid #d0d0d0;\n  border-radius: 6px;\n  font-family: Inter, sans-serif;\n  font-size: 0.95rem;\n  font-weight: 300;\n  color: #111;\n  background: #fff;\n  transition: border-color 0.2s;\n  outline: none;\n  -webkit-appearance: none;\n}\n#rnlsncc-proposal .rq-field-textarea {\n  resize: vertical;\n  min-height: 100px;\n  line-height: 1.5;\n}\n#rnlsncc-proposal .rq-field-input:focus,\n#rnlsncc-proposal .rq-field-textarea:focus { border-color: #111; }\n#rnlsncc-proposal .rq-field-input.error,\n#rnlsncc-proposal .rq-field-textarea.error { border-color: #c03030; }\n#rnlsncc-proposal .rq-field-error {\n  font-size: 0.8rem;\n  color: #c03030;\n  margin-top: 0.4rem;\n  display: none;\n}\n#rnlsncc-proposal .rq-field-error.visible { display: block; }\n\n\/* Radio \/ option buttons *\/\n#rnlsncc-proposal .rq-opts { margin-bottom: 0.4rem; }\n#rnlsncc-proposal .rq-opt {\n  display: flex;\n  align-items: flex-start;\n  gap: 0.5rem;\n  margin-bottom: 0.4rem;\n  padding: 0.75rem 0.9rem;\n  border: 1px solid #d0d0d0;\n  border-radius: 6px;\n  background: #ffffff;\n  cursor: pointer;\n  width: 100%;\n  text-align: left;\n  font-family: Inter, sans-serif;\n  font-size: 0.95rem;\n  font-weight: 300;\n  color: #111111;\n  line-height: 1.4;\n  transition: border-color 0.2s ease, box-shadow 0.2s ease;\n}\n#rnlsncc-proposal .rq-opt:hover { border-color: #888; }\n#rnlsncc-proposal .rq-opt.sel {\n  border-color: #000;\n  box-shadow: 0 0 0 1px #000;\n}\n#rnlsncc-proposal .rq-radio {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: 16px;\n  height: 16px;\n  min-width: 16px;\n  border-radius: 50%;\n  border: 1px solid #d0d0d0;\n  margin-top: 2px;\n  flex-shrink: 0;\n  transition: border-color 0.15s, background 0.15s;\n}\n#rnlsncc-proposal .rq-opt.sel .rq-radio {\n  border-color: #000;\n  background: #000;\n  box-shadow: inset 0 0 0 2px #fff;\n}\n#rnlsncc-proposal .rq-opt-txt {\n  font-size: 0.95rem;\n  font-weight: 300;\n  line-height: 1.5;\n}\n\n\/* Nav *\/\n#rnlsncc-proposal .rq-nav {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-top: 1.75rem;\n  padding-top: 1.25rem;\n  border-top: 1px solid #d0d0d0;\n}\n#rnlsncc-proposal .rq-btn-submit {\n  padding: 0.85rem 1.5rem;\n  font-family: Inter, sans-serif;\n  font-size: 0.95rem;\n  font-weight: 400;\n  background: #000;\n  color: #fff;\n  border: none;\n  border-radius: 6px;\n  cursor: pointer;\n  transition: opacity 0.2s ease;\n}\n#rnlsncc-proposal .rq-btn-submit:hover { opacity: 0.85; }\n#rnlsncc-proposal .rq-btn-ghost {\n  font-family: Inter, sans-serif;\n  font-size: 0.875rem;\n  font-weight: 400;\n  background: none;\n  border: none;\n  color: #686868;\n  cursor: pointer;\n  padding: 4px 0;\n  transition: color 0.15s;\n}\n#rnlsncc-proposal .rq-btn-ghost:hover { color: #111; }\n#rnlsncc-proposal .rq-btn-ghost:disabled { opacity: 0.2; pointer-events: none; }\n\n\/* Counter *\/\n#rnlsncc-proposal .rq-counter {\n  font-size: 0.875rem;\n  font-weight: 400;\n  color: #686868;\n  margin-bottom: 1.25rem;\n  display: flex;\n  align-items: center;\n  gap: 12px;\n}\n#rnlsncc-proposal .rq-counter-line {\n  flex: 1;\n  height: 1px;\n  background: #d0d0d0;\n}\n\n\/* Results \/ confirmation *\/\n#rnlsncc-proposal .rq-confirm-eyebrow {\n  display: block;\n  font-size: 0.875rem;\n  font-weight: 700;\n  letter-spacing: 1.4px;\n  text-transform: uppercase;\n  color: #686868;\n  margin-bottom: 0.75rem;\n}\n#rnlsncc-proposal .rq-confirm-title {\n  font-size: clamp(2rem, 6vw, 3rem);\n  font-weight: 400;\n  line-height: 1.125;\n  text-transform: uppercase;\n  color: #111111;\n  margin: 0 0 0.5rem;\n}\n#rnlsncc-proposal .rq-confirm-sep {\n  border: none;\n  border-top: 1px solid #111;\n  margin: 0 0 1.25rem;\n}\n#rnlsncc-proposal .rq-confirm-desc {\n  font-size: 0.95rem;\n  font-weight: 300;\n  line-height: 1.6;\n  color: #111;\n  margin-bottom: 2rem;\n}\n#rnlsncc-proposal .rq-cta-block {\n  border-top: 1px solid #d0d0d0;\n  padding-top: 1.5rem;\n  display: flex;\n  flex-direction: column;\n  gap: 0.75rem;\n  align-items: flex-start;\n}\n#rnlsncc-proposal .rq-cta-label {\n  font-size: 0.75rem;\n  font-weight: 700;\n  letter-spacing: 1.4px;\n  text-transform: uppercase;\n  color: #686868;\n}\n#rnlsncc-proposal .rq-btn-whatsapp {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  padding: 0.85rem 1.5rem;\n  font-family: Inter, sans-serif;\n  font-size: 0.95rem;\n  font-weight: 400;\n  background: #25D366;\n  color: #fff;\n  border: none;\n  border-radius: 6px;\n  cursor: pointer;\n  text-decoration: none;\n  transition: opacity 0.2s ease;\n}\n#rnlsncc-proposal .rq-btn-whatsapp:hover { opacity: 0.85; }\n#rnlsncc-proposal .rq-send-status {\n  font-size: 0.8rem;\n  font-weight: 300;\n  color: #686868;\n}\n#rnlsncc-proposal .rq-send-status.ok  { color: #2a7a2a; }\n#rnlsncc-proposal .rq-send-status.err { color: #c03030; }\n\n\/* Intro submit button *\/\n#rnlsncc-proposal .rq-btn-intro {\n  margin-top: 1.5rem;\n  padding: 0.85rem 1.5rem;\n  font-family: Inter, sans-serif;\n  font-size: 0.95rem;\n  font-weight: 400;\n  background: #000;\n  color: #fff;\n  border: none;\n  border-radius: 6px;\n  cursor: pointer;\n  transition: opacity 0.2s ease;\n}\n#rnlsncc-proposal .rq-btn-intro:hover { opacity: 0.85; }\n\n#rnlsncc-proposal .qh { display: none !important; }\n#rnlsncc-proposal .qfade { animation: _prfi 0.32s ease forwards; }\n@keyframes _prfi {\n  from { opacity: 0; transform: translateY(6px); }\n  to   { opacity: 1; transform: translateY(0); }\n}\n@media (max-width: 500px) {\n  #rnlsncc-proposal .rq-meta { grid-template-columns: 1fr; }\n}\n<\/style>\n\n<div id=\"rnlsncc-proposal\">\n  <div id=\"pr-intro\" class=\"qfade\"><\/div>\n  <div id=\"pr-steps\" class=\"qh\"><\/div>\n  <div id=\"pr-confirm\" class=\"qh\"><\/div>\n<\/div>\n\n<script>\n(function(){\n\n  const WHATSAPP_NUMBER = '5511985390818';\n  const FORMSPREE_URL   = 'https:\/\/formspree.io\/f\/xqegpqkj';\n\n  const isEN = \/\\\/en(\\\/|$)\/.test(window.location.pathname);\n\n  const UI = {\n    en: {\n      eyebrow:  'Proposal',\n      title:    'Request a proposal',\n      subtitle: 'Fill in the details below. Based on your answers, I\\'ll prepare a tailored proposal and get back to you within 2 business days.',\n      start:    'Start \u2192',\n      prev:     '\u2190 Previous',\n      next:     'Next \u2192',\n      send:     'Send request \u2192',\n      whatsappLabel: 'Prefer to talk directly?',\n      whatsappBtn:   'Message on WhatsApp',\n      whatsappMsg:   'Hi, I filled out the proposal form and would like to talk to you.',\n      sendOk:   'Your request has been sent. I\\'ll be in touch within 2 business days.',\n      sendErr:  'Could not send automatically. Please use WhatsApp.',\n      confirmEyebrow: 'Proposal',\n      confirmTitle:   'Request received',\n      confirmDesc:    'Thank you. I\\'ll review your answers and get back to you with a tailored proposal within 2 business days.',\n      steps: [\n        { label: 'Step 1 \u00b7 4', title: 'About you' },\n        { label: 'Step 2 \u00b7 4', title: 'The project' },\n        { label: 'Step 3 \u00b7 4', title: 'Context' },\n        { label: 'Step 4 \u00b7 4', title: 'Scope' },\n      ],\n      fields: {\n        name:        'Full name',\n        phone:       'Phone',\n        email:       'E-mail',\n        company:     'Company name',\n        website:     'Website or social media',\n        service:     'Service of interest',\n        moment:      'Brand moment',\n        industry:    'Industry \/ Segment',\n        description: 'Briefly describe the project',\n        challenge:   'Main challenge or objective',\n        timeline:    'Desired timeline',\n        budget:      'Investment range',\n        decision:    'Who is responsible for the final decision?',\n        source:      'How did you find RNLSNCC?',\n      },\n      options: {\n        service: ['Naming', 'Brand Strategy', 'Visual Identity', 'Combination of the three'],\n        moment:  ['New brand', 'Rebranding', 'Established brand'],\n        timeline:['Urgent (up to 30 days)', 'Medium term (up to 60 days)', 'No defined urgency'],\n        budget:  ['Up to 5k', '5k to 10k', '10k to 20k', 'Above 20k'],\n        source:  ['Referral', 'LinkedIn', 'Instagram', 'Google', 'Other'],\n      },\n      errors: {\n        required: 'Please fill in this field.',\n        select:   'Please select an option.',\n        email:    'Please enter a valid e-mail.',\n      }\n    },\n    pt: {\n      eyebrow:  'Proposta',\n      title:    'Solicite uma proposta',\n      subtitle: 'Preencha os campos abaixo. Com base nas suas respostas, vou preparar uma proposta personalizada e retorno em at\u00e9 2 dias \u00fateis.',\n      start:    'Iniciar \u2192',\n      prev:     '\u2190 Anterior',\n      next:     'Pr\u00f3ximo \u2192',\n      send:     'Enviar solicita\u00e7\u00e3o \u2192',\n      whatsappLabel: 'Prefere falar diretamente?',\n      whatsappBtn:   'Enviar mensagem no WhatsApp',\n      whatsappMsg:   'Ol\u00e1, preenchi o formul\u00e1rio de proposta e gostaria de falar com voc\u00ea.',\n      sendOk:   'Sua solicita\u00e7\u00e3o foi enviada. Entrarei em contato em at\u00e9 2 dias \u00fateis.',\n      sendErr:  'N\u00e3o foi poss\u00edvel enviar automaticamente. Use o WhatsApp.',\n      confirmEyebrow: 'Proposta',\n      confirmTitle:   'Solicita\u00e7\u00e3o recebida',\n      confirmDesc:    'Obrigado. Vou analisar suas respostas e retornar com uma proposta personalizada em at\u00e9 2 dias \u00fateis.',\n      steps: [\n        { label: 'Etapa 1 \u00b7 4', title: 'Sobre voc\u00ea' },\n        { label: 'Etapa 2 \u00b7 4', title: 'O projeto' },\n        { label: 'Etapa 3 \u00b7 4', title: 'Contexto' },\n        { label: 'Etapa 4 \u00b7 4', title: 'Escopo' },\n      ],\n      fields: {\n        name:        'Nome completo',\n        phone:       'Telefone',\n        email:       'E-mail',\n        company:     'Nome da empresa',\n        website:     'Website ou rede social',\n        service:     'Servi\u00e7o de interesse',\n        moment:      'Momento da marca',\n        industry:    'Ind\u00fastria \/ Segmento',\n        description: 'Descreva brevemente o projeto',\n        challenge:   'Principal desafio ou objetivo',\n        timeline:    'Prazo desejado',\n        budget:      'Faixa de investimento',\n        decision:    'Quem \u00e9 o respons\u00e1vel pela decis\u00e3o final?',\n        source:      'Como chegou at\u00e9 a RNLSNCC?',\n      },\n      options: {\n        service: ['Naming', 'Brand Strategy', 'Visual Identity', 'Combina\u00e7\u00e3o dos tr\u00eas'],\n        moment:  ['Nova marca', 'Rebranding', 'Marca estabelecida'],\n        timeline:['Urgente (at\u00e9 30 dias)', 'M\u00e9dio prazo (at\u00e9 60 dias)', 'Sem urg\u00eancia definida'],\n        budget:  ['At\u00e9 5k', '5k a 10k', '10k a 20k', 'Acima de 20k'],\n        source:  ['Indica\u00e7\u00e3o', 'LinkedIn', 'Instagram', 'Google', 'Outro'],\n      },\n      errors: {\n        required: 'Por favor, preencha este campo.',\n        select:   'Por favor, selecione uma op\u00e7\u00e3o.',\n        email:    'Por favor, insira um e-mail v\u00e1lido.',\n      }\n    }\n  };\n\n  const L = isEN ? UI.en : UI.pt;\n\n  \/* State *\/\n  let currentStep = 0;\n  const data = {};\n  const $ = id => document.getElementById(id);\n\n  function show(id){\n    const el = $(id);\n    el.classList.remove('qh','qfade');\n    void el.offsetWidth;\n    el.classList.add('qfade');\n  }\n\n  \/* \u2500\u2500 Intro \u2500\u2500 *\/\n  (function buildIntro(){\n    $('pr-intro').innerHTML = `\n      <span class=\"rq-eyebrow\">${L.eyebrow}<\/span>\n      <h2 class=\"rq-title\">${L.title}<\/h2>\n      <div class=\"rq-meta\">\n        <div><p class=\"rq-meta-key\">${isEN ? 'Steps' : 'Etapas'}<\/p><p class=\"rq-meta-val\">${isEN ? '4 steps' : '4 etapas'}<\/p><\/div>\n        <div><p class=\"rq-meta-key\">${isEN ? 'Response time' : 'Retorno'}<\/p><p class=\"rq-meta-val\">${isEN ? 'Up to 2 business days' : 'At\u00e9 2 dias \u00fateis'}<\/p><\/div>\n      <\/div>\n      <p style=\"font-size:0.9rem;font-weight:300;color:#686868;line-height:1.6;margin-bottom:0;\">${L.subtitle}<\/p>\n      <button class=\"rq-btn-intro\" onclick=\"prStart()\">${L.start}<\/button>\n    `;\n  })();\n\n  window.prStart = function(){\n    $('pr-intro').classList.add('qh');\n    show('pr-steps');\n    renderStep(0);\n  };\n\n  \/* \u2500\u2500 Step definitions \u2500\u2500 *\/\n  const STEPS = [\n    \/* Step 1 \u2014 About you *\/\n    function(){\n      return `\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\" for=\"pr-name\">${L.fields.name}<\/label>\n          <input class=\"rq-field-input\" id=\"pr-name\" type=\"text\" autocomplete=\"name\" value=\"${data.name||''}\">\n          <p class=\"rq-field-error\" id=\"pr-name-err\">${L.errors.required}<\/p>\n        <\/div>\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\" for=\"pr-phone\">${L.fields.phone}<\/label>\n          <input class=\"rq-field-input\" id=\"pr-phone\" type=\"tel\" autocomplete=\"tel\" value=\"${data.phone||''}\">\n          <p class=\"rq-field-error\" id=\"pr-phone-err\">${L.errors.required}<\/p>\n        <\/div>\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\" for=\"pr-email\">${L.fields.email}<\/label>\n          <input class=\"rq-field-input\" id=\"pr-email\" type=\"email\" autocomplete=\"email\" value=\"${data.email||''}\">\n          <p class=\"rq-field-error\" id=\"pr-email-err\">${L.errors.email}<\/p>\n        <\/div>\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\" for=\"pr-company\">${L.fields.company}<\/label>\n          <input class=\"rq-field-input\" id=\"pr-company\" type=\"text\" autocomplete=\"organization\" value=\"${data.company||''}\">\n          <p class=\"rq-field-error\" id=\"pr-company-err\">${L.errors.required}<\/p>\n        <\/div>\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\" for=\"pr-website\">${L.fields.website}<\/label>\n          <input class=\"rq-field-input\" id=\"pr-website\" type=\"text\" value=\"${data.website||''}\">\n        <\/div>\n      `;\n    },\n    \/* Step 2 \u2014 The project *\/\n    function(){\n      return `\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\">${L.fields.service}<\/label>\n          <div class=\"rq-opts\" id=\"pr-service-opts\">\n            ${L.options.service.map((o,i) => `\n              <button class=\"rq-opt${data.service===o?' sel':''}\" data-group=\"service\" data-val=\"${o}\" onclick=\"prSelect('service',this)\">\n                <span class=\"rq-radio\"><\/span><span class=\"rq-opt-txt\">${o}<\/span>\n              <\/button>`).join('')}\n          <\/div>\n          <p class=\"rq-field-error\" id=\"pr-service-err\">${L.errors.select}<\/p>\n        <\/div>\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\">${L.fields.moment}<\/label>\n          <div class=\"rq-opts\" id=\"pr-moment-opts\">\n            ${L.options.moment.map((o,i) => `\n              <button class=\"rq-opt${data.moment===o?' sel':''}\" data-group=\"moment\" data-val=\"${o}\" onclick=\"prSelect('moment',this)\">\n                <span class=\"rq-radio\"><\/span><span class=\"rq-opt-txt\">${o}<\/span>\n              <\/button>`).join('')}\n          <\/div>\n          <p class=\"rq-field-error\" id=\"pr-moment-err\">${L.errors.select}<\/p>\n        <\/div>\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\" for=\"pr-industry\">${L.fields.industry}<\/label>\n          <input class=\"rq-field-input\" id=\"pr-industry\" type=\"text\" value=\"${data.industry||''}\">\n          <p class=\"rq-field-error\" id=\"pr-industry-err\">${L.errors.required}<\/p>\n        <\/div>\n      `;\n    },\n    \/* Step 3 \u2014 Context *\/\n    function(){\n      return `\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\" for=\"pr-description\">${L.fields.description}<\/label>\n          <textarea class=\"rq-field-textarea\" id=\"pr-description\">${data.description||''}<\/textarea>\n          <p class=\"rq-field-error\" id=\"pr-description-err\">${L.errors.required}<\/p>\n        <\/div>\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\" for=\"pr-challenge\">${L.fields.challenge}<\/label>\n          <textarea class=\"rq-field-textarea\" id=\"pr-challenge\">${data.challenge||''}<\/textarea>\n          <p class=\"rq-field-error\" id=\"pr-challenge-err\">${L.errors.required}<\/p>\n        <\/div>\n      `;\n    },\n    \/* Step 4 \u2014 Scope *\/\n    function(){\n      return `\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\">${L.fields.timeline}<\/label>\n          <div class=\"rq-opts\">\n            ${L.options.timeline.map(o => `\n              <button class=\"rq-opt${data.timeline===o?' sel':''}\" data-group=\"timeline\" data-val=\"${o}\" onclick=\"prSelect('timeline',this)\">\n                <span class=\"rq-radio\"><\/span><span class=\"rq-opt-txt\">${o}<\/span>\n              <\/button>`).join('')}\n          <\/div>\n          <p class=\"rq-field-error\" id=\"pr-timeline-err\">${L.errors.select}<\/p>\n        <\/div>\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\">${L.fields.budget}<\/label>\n          <div class=\"rq-opts\">\n            ${L.options.budget.map(o => `\n              <button class=\"rq-opt${data.budget===o?' sel':''}\" data-group=\"budget\" data-val=\"${o}\" onclick=\"prSelect('budget',this)\">\n                <span class=\"rq-radio\"><\/span><span class=\"rq-opt-txt\">${o}<\/span>\n              <\/button>`).join('')}\n          <\/div>\n          <p class=\"rq-field-error\" id=\"pr-budget-err\">${L.errors.select}<\/p>\n        <\/div>\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\" for=\"pr-decision\">${L.fields.decision}<\/label>\n          <input class=\"rq-field-input\" id=\"pr-decision\" type=\"text\" value=\"${data.decision||''}\">\n          <p class=\"rq-field-error\" id=\"pr-decision-err\">${L.errors.required}<\/p>\n        <\/div>\n        <div class=\"rq-field\">\n          <label class=\"rq-field-label\">${L.fields.source}<\/label>\n          <div class=\"rq-opts\">\n            ${L.options.source.map(o => `\n              <button class=\"rq-opt${data.source===o?' sel':''}\" data-group=\"source\" data-val=\"${o}\" onclick=\"prSelect('source',this)\">\n                <span class=\"rq-radio\"><\/span><span class=\"rq-opt-txt\">${o}<\/span>\n              <\/button>`).join('')}\n          <\/div>\n          <p class=\"rq-field-error\" id=\"pr-source-err\">${L.errors.select}<\/p>\n        <\/div>\n      `;\n    }\n  ];\n\n  window.prSelect = function(group, btn){\n    const parent = btn.closest('.rq-opts') || btn.parentElement;\n    parent.querySelectorAll('.rq-opt').forEach(b => b.classList.remove('sel'));\n    btn.classList.add('sel');\n    data[group] = btn.dataset.val;\n    const err = document.getElementById('pr-' + group + '-err');\n    if (err) err.classList.remove('visible');\n    btn.closest('.rq-field')?.querySelector('.rq-field-input.error')?.classList.remove('error');\n  };\n\n  function renderStep(si){\n    const step = L.steps[si];\n    const isLast = si === STEPS.length - 1;\n    const el = $('pr-steps');\n\n    const pct = ((si) \/ STEPS.length * 100);\n\n    el.innerHTML = `\n      <div class=\"rq-prog-wrap\"><div class=\"rq-prog-fill\" id=\"pr-prog\" style=\"width:${pct}%\"><\/div><\/div>\n      <div class=\"rq-counter\">\n        <span>${String(si+1).padStart(2,'0')} \/ ${STEPS.length}<\/span>\n        <div class=\"rq-counter-line\"><\/div>\n      <\/div>\n      <div class=\"rq-step-label\">${step.label}<\/div>\n      <div class=\"rq-step-title\">${step.title}<\/div>\n      <div id=\"pr-fields\">${STEPS[si]()}<\/div>\n      <div class=\"rq-nav\">\n        <button class=\"rq-btn-ghost\" onclick=\"prPrev()\" ${si===0?'disabled':''}>${L.prev}<\/button>\n        <button class=\"rq-btn-submit\" onclick=\"${isLast?'prSend()':'prNext()'}\">${isLast?L.send:L.next}<\/button>\n      <\/div>\n    `;\n\n    void el.offsetWidth;\n    el.classList.remove('qfade');\n    void el.offsetWidth;\n    el.classList.add('qfade');\n    window.scrollTo(0,0);\n  }\n\n  \/* \u2500\u2500 Validation \u2500\u2500 *\/\n  function validateStep(si){\n    let ok = true;\n\n    function checkText(id){\n      const el = $(id);\n      if (!el) return;\n      const err = $(id+'-err');\n      if (!el.value.trim()) {\n        el.classList.add('error');\n        if (err) err.classList.add('visible');\n        ok = false;\n      } else {\n        el.classList.remove('error');\n        if (err) err.classList.remove('visible');\n      }\n    }\n\n    function checkEmail(id){\n      const el = $(id);\n      if (!el) return;\n      const err = $(id+'-err');\n      const valid = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(el.value.trim());\n      if (!valid) {\n        el.classList.add('error');\n        if (err) err.classList.add('visible');\n        ok = false;\n      } else {\n        el.classList.remove('error');\n        if (err) err.classList.remove('visible');\n      }\n    }\n\n    function checkSelect(key){\n      const err = $('pr-'+key+'-err');\n      if (!data[key]) {\n        if (err) err.classList.add('visible');\n        ok = false;\n      } else {\n        if (err) err.classList.remove('visible');\n      }\n    }\n\n    if (si === 0) {\n      checkText('pr-name');\n      checkText('pr-phone');\n      checkEmail('pr-email');\n      checkText('pr-company');\n    }\n    if (si === 1) {\n      checkSelect('service');\n      checkSelect('moment');\n      checkText('pr-industry');\n    }\n    if (si === 2) {\n      checkText('pr-description');\n      checkText('pr-challenge');\n    }\n    if (si === 3) {\n      checkSelect('timeline');\n      checkSelect('budget');\n      checkText('pr-decision');\n      checkSelect('source');\n    }\n\n    return ok;\n  }\n\n  function saveStep(si){\n    if (si === 0) {\n      data.name     = ($('pr-name')?.value||'').trim();\n      data.phone    = ($('pr-phone')?.value||'').trim();\n      data.email    = ($('pr-email')?.value||'').trim();\n      data.company  = ($('pr-company')?.value||'').trim();\n      data.website  = ($('pr-website')?.value||'').trim();\n    }\n    if (si === 1) {\n      data.industry = ($('pr-industry')?.value||'').trim();\n    }\n    if (si === 2) {\n      data.description = ($('pr-description')?.value||'').trim();\n      data.challenge   = ($('pr-challenge')?.value||'').trim();\n    }\n    if (si === 3) {\n      data.decision = ($('pr-decision')?.value||'').trim();\n    }\n  }\n\n  window.prNext = function(){\n    saveStep(currentStep);\n    if (!validateStep(currentStep)) return;\n    currentStep++;\n    renderStep(currentStep);\n  };\n\n  window.prPrev = function(){\n    saveStep(currentStep);\n    currentStep--;\n    renderStep(currentStep);\n  };\n\n  \/* \u2500\u2500 Send \u2500\u2500 *\/\n  window.prSend = function(){\n    saveStep(currentStep);\n    if (!validateStep(currentStep)) return;\n\n    const waMsg = encodeURIComponent(L.whatsappMsg);\n    const waHref = `https:\/\/wa.me\/${WHATSAPP_NUMBER}?text=${waMsg}`;\n\n    $('pr-steps').classList.add('qh');\n\n    const el = $('pr-confirm');\n    el.innerHTML = `\n      <span class=\"rq-confirm-eyebrow\">${L.confirmEyebrow}<\/span>\n      <h2 class=\"rq-confirm-title\">${L.confirmTitle}<\/h2>\n      <hr class=\"rq-confirm-sep\">\n      <p class=\"rq-confirm-desc\">${L.confirmDesc}<\/p>\n      <div class=\"rq-cta-block\">\n        <p class=\"rq-cta-label\">${L.whatsappLabel}<\/p>\n        <a href=\"${waHref}\" target=\"_blank\" rel=\"noopener\" class=\"rq-btn-whatsapp\">\n          <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n            <path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347z\" fill=\"white\"\/>\n            <path d=\"M12 0C5.373 0 0 5.373 0 12c0 2.127.557 4.126 1.526 5.858L.057 23.215a.75.75 0 00.917.972l5.593-1.469A11.95 11.95 0 0012 24c6.627 0 12-5.373 12-12S18.627 0 12 0zm0 21.75a9.702 9.702 0 01-4.932-1.341l-.353-.21-3.664.963.98-3.573-.23-.37A9.703 9.703 0 012.25 12C2.25 6.615 6.615 2.25 12 2.25S21.75 6.615 21.75 12 17.385 21.75 12 21.75z\" fill=\"white\"\/>\n          <\/svg>\n          ${L.whatsappBtn}\n        <\/a>\n        <p class=\"rq-send-status\" id=\"pr-send-status\"><\/p>\n      <\/div>\n    `;\n    show('pr-confirm');\n\n    \/* Send to Formspree *\/\n    if (FORMSPREE_URL && !FORMSPREE_URL.includes('SEU_ID')) {\n      const payload = {\n        nome:       data.name,\n        email:      data.email,\n        telefone:   data.phone,\n        empresa:    data.company,\n        website:    data.website || '\u2014',\n        servico:    data.service,\n        momento:    data.moment,\n        industria:  data.industry,\n        projeto:    data.description,\n        desafio:    data.challenge,\n        prazo:      data.timeline,\n        investimento: data.budget,\n        decisor:    data.decision,\n        origem:     data.source,\n        _subject:   `Proposta \u00b7 ${data.company} \u2014 ${data.name}`\n      };\n\n      fetch(FORMSPREE_URL, {\n        method:  'POST',\n        headers: { 'Content-Type': 'application\/json', 'Accept': 'application\/json' },\n        body:    JSON.stringify(payload)\n      })\n      .then(r => {\n        const s = $('pr-send-status');\n        if (!s) return;\n        s.textContent = r.ok ? L.sendOk : L.sendErr;\n        s.className = 'rq-send-status ' + (r.ok ? 'ok' : 'err');\n      })\n      .catch(() => {\n        const s = $('pr-send-status');\n        if (s) { s.textContent = L.sendErr; s.className = 'rq-send-status err'; }\n      });\n    }\n\n    window.scrollTo(0,0);\n  };\n\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-85","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/rnlsn.cc\/en\/wp-json\/wp\/v2\/pages\/85","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rnlsn.cc\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rnlsn.cc\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rnlsn.cc\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rnlsn.cc\/en\/wp-json\/wp\/v2\/comments?post=85"}],"version-history":[{"count":14,"href":"https:\/\/rnlsn.cc\/en\/wp-json\/wp\/v2\/pages\/85\/revisions"}],"predecessor-version":[{"id":682,"href":"https:\/\/rnlsn.cc\/en\/wp-json\/wp\/v2\/pages\/85\/revisions\/682"}],"wp:attachment":[{"href":"https:\/\/rnlsn.cc\/en\/wp-json\/wp\/v2\/media?parent=85"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}