/* ============================================================
   App — roteamento por hash + montagem da landing
   ============================================================ */

/* ---- Zonas de SP ---- */
window.CRUZ_ZONES = {
  'zona-sul':   { label: 'Zona Sul',   desc: 'Santo Amaro, Capão, Grajaú e arredores em alta valorização.' },
  'zona-norte': { label: 'Zona Norte', desc: 'Santana, Tucuruvi e Casa Verde com ótima conexão de metrô.' },
  'zona-leste': { label: 'Zona Leste', desc: 'Itaquera, São Mateus e Penha — onde mais aprovamos.' },
  'zona-oeste': { label: 'Zona Oeste', desc: 'Lapa, Pirituba e Butantã com infraestrutura completa.' },
  'centro':     { label: 'Centro',     desc: 'Coração de SP, mobilidade total e novos lançamentos.' },
};

/* ---- Catálogo estático de fallback ---- */
const STATIC_EMP = {
  'zona-sul': [
    { nome: 'Residencial Vista Sul', bairro: 'Santo Amaro', status: 'Lançamento', preco: 'R$ 249 mil', dorms: '2 dorms', area: 'a partir de 42 m²', vagas: '1 vaga',
      desc: 'Lazer completo, próximo ao metrô e a polos comerciais. Entrada facilitada.',
      sobre: ['Empreendimento moderno no coração de Santo Amaro, com unidades inteligentes e lazer completo no rooftop.', 'A poucos minutos do metrô e dos principais polos comerciais da Zona Sul, com entrada facilitada pelo Minha Casa Minha Vida.'],
      lazer: ['Piscina', 'Academia', 'Salão de festas', 'Playground', 'Coworking', 'Pet place'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 42 m² · 2 dorms', url: '' }, { t: 'Planta 48 m² · 2 dorms + suíte', url: '' }] },
    { nome: 'Parque Brooklin', bairro: 'Brooklin', status: 'Em obras', preco: 'R$ 295 mil', dorms: '2 dorms', area: 'a partir de 48 m²', vagas: '1 vaga',
      desc: 'Empreendimento moderno em região de forte valorização e mobilidade.',
      sobre: ['No Brooklin, uma das regiões que mais valorizam em São Paulo, perto de centros empresariais e da Ponte Estaiada.'],
      lazer: ['Piscina', 'Academia', 'Espaço gourmet', 'Quadra', 'Brinquedoteca'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 48 m² · 2 dorms', url: '' }] },
    { nome: 'Jardim Campo Belo', bairro: 'Campo Belo', status: 'Pronto', preco: 'R$ 320 mil', dorms: '2-3 dorms', area: 'a partir de 55 m²', vagas: '1-2 vagas',
      desc: 'Pronto para morar, com infraestrutura de lazer e segurança.',
      sobre: ['Pronto para morar no Campo Belo, com infraestrutura completa de lazer, segurança 24h e acabamento de alto padrão.'],
      lazer: ['Piscina aquecida', 'Academia', 'Sauna', 'Salão de festas', 'Espaço gourmet'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 55 m² · 2 dorms', url: '' }, { t: 'Planta 68 m² · 3 dorms', url: '' }] },
  ],
  'zona-norte': [
    { nome: 'Santana Park', bairro: 'Santana', status: 'Lançamento', preco: 'R$ 235 mil', dorms: '2 dorms', area: 'a partir de 40 m²', vagas: '1 vaga',
      desc: 'A poucos minutos do metrô Santana, com lazer e comércio no entorno.',
      sobre: ['A poucos minutos do metrô Santana, com lazer completo e todo o comércio da região ao redor.'],
      lazer: ['Piscina', 'Academia', 'Salão de festas', 'Playground'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 40 m² · 2 dorms', url: '' }] },
    { nome: 'Tucuruvi Life', bairro: 'Tucuruvi', status: 'Em obras', preco: 'R$ 258 mil', dorms: '2 dorms', area: 'a partir de 44 m²', vagas: '1 vaga',
      desc: 'Ótimo custo-benefício, ideal para o primeiro imóvel.',
      sobre: ['Ótimo custo-benefício no Tucuruvi, ideal para quem busca o primeiro imóvel com fácil acesso ao metrô.'],
      lazer: ['Piscina', 'Academia', 'Espaço gourmet', 'Pet place'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 44 m² · 2 dorms', url: '' }] },
    { nome: 'Casa Verde Garden', bairro: 'Casa Verde', status: 'Pronto', preco: 'R$ 279 mil', dorms: '2 dorms', area: 'a partir de 47 m²', vagas: '1 vaga',
      desc: 'Pronto para morar, área de lazer e fácil acesso às marginais.',
      sobre: ['Pronto para morar na Casa Verde, com área de lazer completa e fácil acesso às marginais.'],
      lazer: ['Piscina', 'Academia', 'Salão de festas', 'Quadra'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 47 m² · 2 dorms', url: '' }] },
  ],
  'zona-leste': [
    { nome: 'Tatuapé Prime', bairro: 'Tatuapé', status: 'Lançamento', preco: 'R$ 219 mil', dorms: '2 dorms', area: 'a partir de 38 m²', vagas: '1 vaga',
      desc: 'Região com maior índice de aprovação. Próximo a shoppings e metrô.',
      sobre: ['No Tatuapé, região com maior índice de aprovação de financiamento, próximo a shoppings, parques e metrô.'],
      lazer: ['Piscina', 'Academia', 'Salão de festas', 'Playground', 'Coworking'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 38 m² · 2 dorms', url: '' }] },
    { nome: 'Itaquera Vida Nova', bairro: 'Itaquera', status: 'Em obras', preco: 'R$ 199 mil', dorms: '2 dorms', area: 'a partir de 40 m²', vagas: '1 vaga',
      desc: 'Excelente entrada no programa, ótimo para começar.',
      sobre: ['Excelente porta de entrada no Minha Casa Minha Vida, em Itaquera, perto do metrô e do Shopping.'],
      lazer: ['Piscina', 'Academia', 'Playground', 'Quadra'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 40 m² · 2 dorms', url: '' }] },
    { nome: 'Penha Residence', bairro: 'Penha', status: 'Pronto', preco: 'R$ 245 mil', dorms: '2 dorms', area: 'a partir de 45 m²', vagas: '1 vaga',
      desc: 'Pronto para morar, bairro consolidado e bem servido de transporte.',
      sobre: ['Pronto para morar na Penha, bairro consolidado e muito bem servido de transporte público.'],
      lazer: ['Piscina', 'Academia', 'Salão de festas', 'Espaço gourmet'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 45 m² · 2 dorms', url: '' }] },
  ],
  'zona-oeste': [
    { nome: 'Lapa Connection', bairro: 'Lapa', status: 'Lançamento', preco: 'R$ 289 mil', dorms: '2 dorms', area: 'a partir de 43 m²', vagas: '1 vaga',
      desc: 'Bairro consolidado, comércio forte e ótima conexão de transporte.',
      sobre: ['Na Lapa, bairro consolidado com comércio forte e ótima conexão de transporte para toda a cidade.'],
      lazer: ['Piscina', 'Academia', 'Coworking', 'Espaço gourmet', 'Pet place'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 43 m² · 2 dorms', url: '' }] },
    { nome: 'Pirituba Parque', bairro: 'Pirituba', status: 'Em obras', preco: 'R$ 255 mil', dorms: '2 dorms', area: 'a partir de 44 m²', vagas: '1 vaga',
      desc: 'Empreendimento com lazer completo e boa relação custo-benefício.',
      sobre: ['Empreendimento com lazer completo em Pirituba, ótima relação custo-benefício e área verde no entorno.'],
      lazer: ['Piscina', 'Academia', 'Salão de festas', 'Playground'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 44 m² · 2 dorms', url: '' }] },
    { nome: 'Butantã Garden', bairro: 'Butantã', status: 'Pronto', preco: 'R$ 315 mil', dorms: '2-3 dorms', area: 'a partir de 52 m²', vagas: '1 vaga',
      desc: 'Próximo à USP e ao metrô, pronto para morar.',
      sobre: ['Pronto para morar no Butantã, próximo à USP e ao metrô, com acabamento de qualidade.'],
      lazer: ['Piscina', 'Academia', 'Sauna', 'Salão de festas'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 52 m² · 2 dorms', url: '' }, { t: 'Planta 64 m² · 3 dorms', url: '' }] },
  ],
  'centro': [
    { nome: 'Centro Novo', bairro: 'República', status: 'Lançamento', preco: 'R$ 209 mil', dorms: '1-2 dorms', area: 'a partir de 36 m²', vagas: 'opcional',
      desc: 'Studios e apartamentos no coração de SP, mobilidade total.',
      sobre: ['Studios e apartamentos compactos no coração de São Paulo, com mobilidade total e tudo a pé.'],
      lazer: ['Academia', 'Coworking', 'Lavanderia', 'Rooftop'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 24 m² · studio', url: '' }, { t: 'Planta 36 m² · 1 dorm', url: '' }] },
    { nome: 'Higienópolis Compacto', bairro: 'Santa Cecília', status: 'Em obras', preco: 'R$ 269 mil', dorms: '1-2 dorms', area: 'a partir de 40 m²', vagas: 'opcional',
      desc: 'Região nobre e central, ideal para morar ou investir.',
      sobre: ['Em Santa Cecília, ao lado de Higienópolis, região nobre e central — ideal para morar ou investir.'],
      lazer: ['Academia', 'Coworking', 'Espaço gourmet', 'Rooftop'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 40 m² · 1 dorm', url: '' }] },
    { nome: 'Sé Living', bairro: 'Sé', status: 'Pronto', preco: 'R$ 189 mil', dorms: '1 dorm', area: 'a partir de 32 m²', vagas: 'não',
      desc: 'Pronto para morar, ao lado de metrô e todo o comércio do centro.',
      sobre: ['Pronto para morar ao lado da estação Sé, com todo o comércio e serviços do centro à disposição.'],
      lazer: ['Academia', 'Lavanderia', 'Bicicletário'], galeria: 4, imagens: [], plantas: [{ t: 'Planta 32 m² · 1 dorm', url: '' }] },
  ],
};

/* ---- Catálogo: começa com dados estáticos, atualiza ao receber do Órulo ---- */
window.CRUZ_EMP = { ...STATIC_EMP };

fetch('/api/orulo')
  .then(r => r.ok ? r.json() : null)
  .then(d => {
    if (d && d.ok && d.data) {
      let temDados = false;
      for (const z of Object.keys(d.data)) {
        if (d.data[z] && d.data[z].length > 0) {
          window.CRUZ_EMP[z] = d.data[z];
          temDados = true;
        }
      }
      if (temDados) window.dispatchEvent(new Event('cruzemp:ready'));
    }
  })
  .catch(() => {});

function parseHash() {
  const raw = location.hash.slice(1);
  const [view, qs] = raw.split('?');
  const p = new URLSearchParams(qs || '');
  if (view === 'regiao') return { view: 'regiao', z: p.get('z') || 'zona-sul', e: 0 };
  if (view === 'imovel') return { view: 'imovel', z: p.get('z') || 'zona-sul', e: parseInt(p.get('e') || '0', 10) };
  return { view: 'landing', anchor: view || '' };
}

function App() {
  const [page, setPage] = useState(parseHash);

  useEffect(() => {
    const handler = () => setPage(parseHash());
    window.addEventListener('hashchange', handler);
    return () => window.removeEventListener('hashchange', handler);
  }, []);

  useEffect(() => {
    if (page.view === 'landing' && page.anchor) {
      setTimeout(() => {
        const el = document.getElementById(page.anchor);
        if (el) el.scrollIntoView({ behavior: 'smooth' });
      }, 80);
    }
  }, [page.view, page.anchor]);

  if (page.view === 'regiao') return <RegiaoView zone={page.z} />;
  if (page.view === 'imovel') return <ImovelView zone={page.z} empIdx={page.e} />;

  return (
    <React.Fragment>
      <Header />
      <main>
        <Hero />
        <TrustBar />
        <Emotional />
        <HowItWorks />
        <CreditForm />
        <Regioes />
        <Objecoes />
        <Depoimentos />
        <Sobre />
        <FinalCTA />
      </main>
      <Footer />
      <WhatsFloat />
      <ExitIntentModal />
    </React.Fragment>
  );
}

ReactDOM.createRoot(document.getElementById("root")).render(<App />);
