// DemoKanban.jsx — auto-looping demo: pipeline CRM (kanban). // O cursor agarra uma oportunidade e arrasta-a de Qualificação para Proposta — // ghost flutuante, coluna destacada, pulso ao largar, totais a atualizar. (function () { const STR = { pt: { windowTitle: 'Clientes · Pipeline', badge: '4 oportunidades', moving: 'A mover…', toast: 'Oportunidade movida para Proposta', cardSchoolBraga: 'Escola Machico Norte', cardSchoolEvora: 'Escola Ponta do Sol', cols: [ { name: 'Contacto', dot: '#60A5FA' }, { name: 'Proposta', dot: '#A78BFA' }, { name: 'Negociação', dot: '#F59E0B' }, ], }, en: { windowTitle: 'Clients · Pipeline', badge: '4 opportunities', moving: 'Moving…', toast: 'Opportunity moved to Proposal', cardSchoolBraga: 'Machico North School', cardSchoolEvora: 'Ponta do Sol School', cols: [ { name: 'Contact', dot: '#60A5FA' }, { name: 'Proposal', dot: '#A78BFA' }, { name: 'Negotiation', dot: '#F59E0B' }, ], }, es: { windowTitle: 'Clientes · Pipeline', badge: '4 oportunidades', moving: 'Moviendo…', toast: 'Oportunidad movida a Propuesta', cardSchoolBraga: 'Escuela Machico Norte', cardSchoolEvora: 'Escuela Ponta do Sol', cols: [ { name: 'Contacto', dot: '#60A5FA' }, { name: 'Propuesta', dot: '#A78BFA' }, { name: 'Negociación', dot: '#F59E0B' }, ], }, }; function KBCard({ title, company, value, owner, ghost }) { return (