// ORIGENS — marketing website (UI kit). Self-contained; mirrors DS primitives. const { useState, useEffect, useRef } = React; const ASSET = 'assets/'; /* Reveal-on-scroll helper — a small, purposeful entrance. */ function useReveal() { const ref = useRef(null); useEffect(() => { document.documentElement.classList.add('js-anim'); const els = ref.current ? Array.from(ref.current.querySelectorAll('.reveal')) : []; const show = (el) => { el.style.transitionDelay = (el.dataset.delay || 0) + 'ms'; el.classList.add('in'); }; let io; if ('IntersectionObserver' in window) { io = new IntersectionObserver((es) => { es.forEach((e) => { if (e.isIntersecting) { show(e.target); io.unobserve(e.target); } }); }, { threshold: 0.12, rootMargin: '0px 0px -8% 0px' }); els.forEach((el) => io.observe(el)); } // Guaranteed fallback — never leave content hidden if IO doesn't fire. const t = setTimeout(() => els.forEach(show), 700); return () => { if (io) io.disconnect(); clearTimeout(t); }; }, []); return ref; } function Icon({ name, ...rest }) { return ; } /* ── Nav ──────────────────────────────────────────────────────────────── */ function Nav() { const [scrolled, setScrolled] = useState(false); const [open, setOpen] = useState(false); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 12); window.addEventListener('scroll', onScroll); onScroll(); return () => window.removeEventListener('scroll', onScroll); }, []); const links = [['Soluções', '#solucoes'], ['Processo', '#processo'], ['Atuação', '#atuacao'], ['Sobre', '#sobre'], ['Dúvidas', '#duvidas']]; return (
ORIGENS PARCERIAS AGRÍCOLAS
{open && (
{links.map(([t, h]) => setOpen(false)}>{t})} setOpen(false)} style={{ fontWeight: 700 }}>Fale com a gente →
)}
); } /* ── Hero ─────────────────────────────────────────────────────────────── */ function Hero() { const ref = useReveal(); return (
); } /* ── Services ─────────────────────────────────────────────────────────── */ function Services() { const ref = useReveal(); const items = [ ['01', 'land-plot', 'Variabilidade espacial e zonas de manejo', 'Mapeamento da variabilidade do talhão e definição de zonas de manejo para decisões sítio-específicas.'], ['02', 'tractor', 'Mecanização agrícola', 'Ajuste de máquinas e operações para mais eficiência e menos custo em cada passada no campo.'], ['03', 'shovel', 'Amostragem de solo', 'Coleta georreferenciada e estruturada para uma leitura precisa da fertilidade de cada área.'], ['04', 'user-round', 'Consultoria agronômica', 'Acompanhamento técnico de perto, da semeadura à colheita, com recomendações sob medida.'], ['05', 'sprout', 'Assessoria em fertilidade do solo', 'Diagnóstico e estratégia de correção e adubação para construir e manter solos produtivos.'], ['06', 'clipboard-list', 'Assessoria em planejamento agrícola', 'Planejamento de safra, rotação e recursos para uma operação previsível e bem dimensionada.'], ['07', 'satellite', 'Pesquisa em geoprocessamento', 'Sensoriamento remoto e dados geoespaciais aplicados ao monitoramento da lavoura.'], ['08', 'flask-conical', 'Pesquisa aplicada', 'Ensaios e validação em campo que transformam dados em prática agronômica.'], ]; return (
O que fazemos

Soluções técnicas para
cada etapa da lavoura.

Da análise do solo ao dado geoespacial — frentes que se complementam para uma agricultura mais precisa, produtiva e previsível.

{items.map(([n, ico, t, d]) => (
{n}

{t}

{d}

))}
); } /* ── Manifesto (dark) ─────────────────────────────────────────────────── */ function Manifesto() { const ref = useReveal(); return (
); } /* ── Process ──────────────────────────────────────────────────────────── */ function Process() { const ref = useReveal(); const steps = [ ['01', 'Diagnóstico', 'Entendemos a operação, a cultura e os objetivos de cada produtor.'], ['02', 'Estruturação', 'Desenhamos o acordo, a logística e as garantias de forma transparente.'], ['03', 'Execução', 'Acompanhamos cada etapa, do plantio ao escoamento da produção.'], ['04', 'Resultado', 'Medimos, ajustamos e fortalecemos a parceria para a próxima safra.'], ]; return (
Como trabalhamos

Um processo, quatro raízes.

{steps.map(([n, t, d], i) => (
{n}

{t}

{d}

))}
); } /* ── Áreas de atuação (mapa) ──────────────────────────────────────────── */ const ATU = { states: { MT: 'Mato Grosso', MS: 'Mato Grosso do Sul', GO: 'Goiás', TO: 'Tocantins', DF: 'Distrito Federal' }, totals: { mun: 26, ha: 230000, pesquisa: 500 }, culturas: ['Soja', 'Milho', 'Algodão'], }; const NAME2UF = { 'Acre': 'AC', 'Alagoas': 'AL', 'Amapá': 'AP', 'Amazonas': 'AM', 'Bahia': 'BA', 'Ceará': 'CE', 'Distrito Federal': 'DF', 'Espírito Santo': 'ES', 'Goiás': 'GO', 'Maranhão': 'MA', 'Mato Grosso': 'MT', 'Mato Grosso do Sul': 'MS', 'Minas Gerais': 'MG', 'Pará': 'PA', 'Paraíba': 'PB', 'Paraná': 'PR', 'Pernambuco': 'PE', 'Piauí': 'PI', 'Rio de Janeiro': 'RJ', 'Rio Grande do Norte': 'RN', 'Rio Grande do Sul': 'RS', 'Rondônia': 'RO', 'Roraima': 'RR', 'Santa Catarina': 'SC', 'São Paulo': 'SP', 'Sergipe': 'SE', 'Tocantins': 'TO', }; const GEO_URL = 'https://raw.githubusercontent.com/codeforamerica/click_that_hood/master/public/data/brazil-states.geojson'; const GEO_CACHE = 'origens_br_geojson_v1'; const fmtBR = (n) => n.toLocaleString('pt-BR'); function Atuacao() { const ref = useReveal(); const mapRef = useRef(null); const tipRef = useRef(null); useEffect(() => { const wrap = mapRef.current, tip = tipRef.current; if (!wrap || !window.d3) return; let alive = true; const ufOf = (p) => p.sigla || p.SIGLA || NAME2UF[p.name] || NAME2UF[p.NOME] || ''; const draw = (geo) => { if (!alive) return; wrap.innerHTML = ''; const d3 = window.d3, W = 760, H = 720; const svg = d3.create('svg').attr('class', 'atu-map').attr('viewBox', `0 0 ${W} ${H}`).attr('role', 'img') .attr('aria-label', 'Mapa do Brasil com os estados de atuação da ORIGENS destacados'); const defs = svg.append('defs'); const f = defs.append('filter').attr('id', 'atuShadow').attr('x', '-30%').attr('y', '-30%').attr('width', '160%').attr('height', '160%'); f.append('feDropShadow').attr('dx', 0).attr('dy', 6).attr('stdDeviation', 8).attr('flood-color', '#46B5AD').attr('flood-opacity', .35); const projection = d3.geoMercator().fitExtent([[24, 24], [W - 24, H - 24]], geo); const path = d3.geoPath(projection); const gBase = svg.append('g'), gOp = svg.append('g').attr('filter', 'url(#atuShadow)'), gLabels = svg.append('g'); const showTip = (e, uf, name) => { tip.innerHTML = `${name}${uf}`; tip.style.left = e.clientX + 'px'; tip.style.top = e.clientY + 'px'; tip.style.opacity = '1'; }; const hideTip = () => { tip.style.opacity = '0'; }; geo.features.forEach((feat) => { const uf = ufOf(feat.properties); const op = !!ATU.states[uf]; const name = (op && ATU.states[uf]) || feat.properties.name || uf; const node = (op ? gOp : gBase).append('path') .attr('d', path(feat)) .attr('class', 'atu-state' + (op ? ' is-op' : '')) .attr('fill', op ? 'var(--turquesa-500)' : '#232222') .attr('stroke', op ? '#0c2b28' : '#3a3938') .attr('stroke-width', op ? 1 : .75) .attr('vector-effect', 'non-scaling-stroke'); if (op) { node .on('mousemove', (e) => showTip(e, uf, name)) .on('mouseenter', function (e) { showTip(e, uf, name); d3.select(this).attr('fill', 'var(--turquesa-400)'); }) .on('mouseleave', function () { hideTip(); d3.select(this).attr('fill', 'var(--turquesa-500)'); }); const c = path.centroid(feat); if (!isNaN(c[0])) { gLabels.append('text').attr('class', 'atu-uflabel') .attr('x', uf === 'DF' ? c[0] + 14 : c[0]).attr('y', c[1]) .attr('text-anchor', 'middle').attr('dominant-baseline', 'central') .attr('pointer-events', 'none').text(uf); } } }); wrap.appendChild(svg.node()); }; let cached = null; try { cached = JSON.parse(localStorage.getItem(GEO_CACHE) || 'null'); } catch (e) { } if (cached && cached.features) { draw(cached); } else { fetch(GEO_URL).then((r) => { if (!r.ok) throw new Error(r.status); return r.json(); }) .then((geo) => { try { localStorage.setItem(GEO_CACHE, JSON.stringify(geo)); } catch (e) { } draw(geo); }) .catch(() => { if (alive && mapRef.current) mapRef.current.innerHTML = '

Não foi possível carregar o mapa.

'; }); } return () => { alive = false; }; }, []); const t = ATU.totals; return (
Onde estamos

Áreas de atuação.

Atuação técnica concentrada no coração agrícola do Brasil — Centro-Oeste e Tocantins, onde está a maior fronteira produtiva do país.

Estado com atuação Demais estados
+{t.mun}
Municípios atendidos
+{fmtBR(t.ha)}ha
Área de atuação
+{fmtBR(t.pesquisa)}ha
Pesquisa em parcerias
{ATU.culturas.join(' · ')}
Principais culturas
); } /* ── FAQ ──────────────────────────────────────────────────────────────── */ function Faq() { const ref = useReveal(); const [open, setOpen] = useState(0); const items = [ ['Como funcionam as parcerias da ORIGENS?', 'Estruturamos acordos de longo prazo entre produtores e o mercado, com transparência em cada etapa — da originação à entrega.'], ['Quais culturas vocês atendem?', 'Trabalhamos com as principais commodities agrícolas, com foco em grãos como soja, milho e algodão.'], ['Em quais regiões a ORIGENS atua?', 'Atendemos produtores em 5 estados — Mato Grosso, Mato Grosso do Sul, Goiás, Tocantins e o Distrito Federal — com estrutura logística distribuída para reduzir prazos e custos.'], ['Como começar uma parceria?', 'Fale com a gente pelo formulário abaixo. Fazemos um diagnóstico da sua operação antes de propor qualquer estrutura.'], ]; return (
Dúvidas frequentes

Boas relações começam
com clareza.

{items.map(([q, a], i) => (
{a}
))}
); } /* ── Contact ──────────────────────────────────────────────────────────── */ function Contact() { const ref = useReveal(); return (
Fale com a gente

Vamos cultivar
uma parceria.

Conte sobre a sua operação. Respondemos em até um dia útil.

E-mail
administrativo@origens.agr.br
Telefone
(66) 3423-3264
); } /* ── Footer ───────────────────────────────────────────────────────────── */ function Footer() { return ( ); } function App() { useEffect(() => { if (window.lucide) window.lucide.createIcons(); }); return (<>