(function () {
const { routeHref, LINKS, EXT, trackEvent } = window.Site;
const { useT } = window.I18n;
const { ProjectClose } = window.Portfolio;
function CefisContent() {
  const { t } = useT();
  React.useEffect(() => { trackEvent('view_work', { project: 'cefis', from: 'case_study' }); }, []);
  return <>
    <section className="studio-container case-hero"><a className="studio-text-link" href={routeHref('case-studies')}>← {t('All work', 'Todos os trabalhos')}</a><h1>{t('Learning,', 'Aprender,')}<br /><span>{t('wherever life goes.', 'onde a vida acontecer.')}</span></h1><div className="case-summary"><p>{t('A white-label learning app built to make courses available beyond a reliable connection. My contribution brought together mobile development, download management, video playback, and delivery to app stores.', 'Um aplicativo de aprendizagem white-label pensado para oferecer cursos além de uma conexão confiável. Minha contribuição reuniu desenvolvimento mobile, gerenciamento de downloads, reprodução de vídeo e publicação nas lojas.')}</p><dl className="case-facts"><div><dt>{t('CLIENT', 'CLIENTE')}</dt><dd>CEFIS</dd></div><div><dt>{t('PERIOD', 'PERÍODO')}</dt><dd>{t('October 2020 – February 2022', 'Outubro de 2020 – fevereiro de 2022')}</dd></div><div><dt>{t('CONTRIBUTION', 'CONTRIBUIÇÃO')}</dt><dd>{t('White-label mobile app development', 'Desenvolvimento de app mobile white-label')}</dd></div><div><dt>{t('CONTEXT', 'CONTEXTO')}</dt><dd>{t('Learning · offline · video', 'Aprendizagem · offline · vídeo')}</dd></div></dl></div><p className="work-source">{t('Case based on my published project record. The images below are current CEFIS App Store promotional panels retrieved September 6, 2026, not historical screens or a claim that I designed every part of today’s app.', 'Caso baseado no meu registro público do projeto. As imagens abaixo são peças promocionais atuais do CEFIS na App Store, consultadas em 6 de setembro de 2026, não telas históricas nem uma afirmação de que desenhei todas as partes do app atual.')} <a href={LINKS.linkedin} {...EXT}>LinkedIn ↗</a></p></section>
    <section className="case-gallery"><div className="studio-container case-gallery__grid">{[
      ['cefis-1', t('01 / Course catalog — current product imagery', '01 / Catálogo de cursos — imagem atual do produto')],
      ['cefis-2', t('02 / Course detail — current product imagery', '02 / Detalhe do curso — imagem atual do produto')],
      ['cefis-3', t('03 / Downloads — current product imagery', '03 / Downloads — imagem atual do produto')],
    ].map(([image, caption], i) => <figure key={image}><img src={'/uploads/projects/' + image + '.webp'} srcSet={`/uploads/projects/${image}-small.webp 400w, /uploads/projects/${image}.webp 800w`} sizes="(max-width: 760px) 75vw, 28vw" width="800" height="1422" loading={i === 0 ? 'eager' : 'lazy'} alt={caption} decoding="async" /><figcaption>{caption}</figcaption></figure>)}</div></section>
    <section className="studio-container case-story">
      <div className="case-story__row"><div><span className="studio-eyebrow">01 / {t('THE PRODUCT', 'O PRODUTO')}</span><h2>{t('Offline is part of the experience.', 'Offline faz parte da experiência.')}</h2></div><div><p>{t('The work included concurrent downloads of classes and courses, controls to pause or remove them, and the app state needed to keep those actions coherent. The download itself is only one part of a usable offline experience.', 'O trabalho incluiu downloads simultâneos de aulas e cursos, controles para pausá-los ou removê-los e o estado do aplicativo necessário para manter essas ações coerentes. O download em si é apenas uma parte de uma experiência offline utilizável.')}</p><h3>{t('Make the state understandable.', 'Tornar o estado compreensível.')}</h3><p>{t('Available, downloading, paused, and downloaded are different situations. Managing that complexity was central to the implementation—not an afterthought to the course catalog.', 'Disponível, baixando, pausado e baixado são situações diferentes. Gerenciar essa complexidade foi central na implementação — não um detalhe adicionado ao catálogo depois.')}</p></div></div>
      <div className="case-story__row"><div><span className="studio-eyebrow">02 / {t('THE INTERACTION', 'A INTERAÇÃO')}</span><h2>{t('Keep the learner in control.', 'Dar controle a quem aprende.')}</h2></div><div><p>{t('Video-player work covered progress tracking, playback speed, forward and rewind controls, class selection, and casting. These details connect an individual video to the wider experience of following a course.', 'O trabalho no player de vídeo incluiu acompanhamento de progresso, velocidade de reprodução, controles para avançar e voltar, seleção de aulas e transmissão. Esses detalhes conectam um vídeo à experiência maior de acompanhar um curso.')}</p><p>{t('The implementation also included certificate issuance and push notifications. These are documented contributions, not measured claims about engagement or learning outcomes.', 'A implementação também incluiu emissão de certificados e notificações push. São contribuições documentadas, não afirmações mensuradas sobre engajamento ou resultados de aprendizagem.')}</p></div></div>
      <div className="case-story__row"><div><span className="studio-eyebrow">03 / {t('THE SYSTEM', 'O SISTEMA')}</span><h2>{t('One foundation. Different identities.', 'Uma base. Diferentes identidades.')}</h2></div><div><p>{t('The white-label foundation supported delivery of branded apps for different clients. My involvement extended from the initial concept through mobile implementation and app-store publication.', 'A base white-label permitiu entregar aplicativos com identidades de diferentes clientes. Meu envolvimento foi do conceito inicial à implementação mobile e à publicação nas lojas.')}</p><div className="case-callout"><h3>{t('What this case demonstrates', 'O que este caso demonstra')}</h3><p>{t('Connecting interface behavior, state management, and product delivery. The purpose is to explain my contribution clearly—not to claim ownership of the entire current CEFIS platform.', 'Conectar comportamento de interface, gerenciamento de estado e entrega de produto. A proposta é explicar minha contribuição com clareza — não reivindicar autoria de toda a plataforma CEFIS atual.')}</p></div></div></div>
      <p className="work-source">{t('Product imagery © CEFIS. Current App Store listing; later product changes are outside this contribution period.', 'Imagens do produto © CEFIS. Listagem atual da App Store; mudanças posteriores do produto estão fora deste período de contribuição.')} <a href="https://apps.apple.com/br/app/cefis-cursos-profissionais/id1353968500" {...EXT}>{t('View the source', 'Ver a fonte')} ↗</a></p>
    </section><ProjectClose />
  </>;
}
window.Pages['work-cefis'] = { Content: CefisContent, label: 'CEFIS — Bruno Luigi' };
})();
