/* ============================================================
   Main app — Router
   ============================================================ */

function App() {
  const { path } = useHashRoute();

  // apply tweak defaults on first mount so SSR-less page picks up data attrs
  useEffect(() => {
    try {
      applyTweaksToDocument(IBD_TWEAK_DEFAULTS);
    } catch (e) {}
    window.scrollTo(0, 0);
  }, [path]);

  let page;
  if (path === '/' || path === '') page = <HomePage />;
  else if (path === '/sobre') page = <SobrePage />;
  else if (path === '/biblioteca') page = <BibliotecaPage />;
  else if (path.startsWith('/post/')) page = <PostPage />;
  else if (path.startsWith('/aula/')) page = <AulaPage />;
  else if (path === '/cadastro') page = <CadastroPage />;
  else if (path === '/login') page = <LoginPage />;
  else if (path === '/dashboard') page = <DashboardPage />;
  else if (path === '/ferramentas/black-scholes') page = <CalcBlackScholesPage />;
  else if (path === '/ferramentas/payoff') page = <CalcPayoffPage />;
  else if (path === '/ferramentas/futuros') page = <CalcFuturosPage />;
  // Placeholders — ferramentas e conteúdos em desenvolvimento (alguns exclusivos a membros)
  else if (path === '/ferramentas/backtest') page = (
    <ComingSoonPage
      title="Backtest de Estratégias"
      kind="Ferramenta quantitativa · exclusivo a membros"
      eta="2026 · segundo semestre"
      description="Avalie estratégias com opções e futuros em séries históricas do mercado brasileiro. Métricas de retorno, drawdown, sharpe e exposição por fator de risco."
    />
  );
  else if (path === '/ferramentas/var') page = (
    <ComingSoonPage
      title="Calculadora de VaR"
      kind="Ferramenta de risco · exclusivo a membros"
      eta="2026 · segundo semestre"
      description="Value at Risk para carteiras com derivativos não-lineares. Métodos paramétrico, histórico e Monte Carlo, com decomposição por fator."
    />
  );
  else if (path === '/membros/cursos') page = (
    <ComingSoonPage
      title="Cursos completos"
      kind="Educação estruturada · exclusivo a membros"
      eta="2027"
      description="Trilhas de especialização com certificado de conclusão, em parceria com instituições acadêmicas brasileiras. Avaliação por projeto e mentoria."
    />
  );
  else if (path === '/conceitos/glossario') page = (
    <ComingSoonPage
      title="Glossário"
      kind="Acervo de referência · aberto a todos"
      eta="2026 · segundo semestre"
      description="Verbetes técnicos do universo de derivativos, com referência cruzada à literatura institucional e remissões internas ao acervo do IBD."
    />
  );
  else if (path === '/conceitos/quizzes') page = (
    <ComingSoonPage
      title="Quizzes interativos"
      kind="Avaliação formativa · exclusivo a membros"
      eta="2027"
      description="Avaliações graduais para consolidar a leitura de cada peça da biblioteca. Feedback imediato com remissão ao texto original."
    />
  );
  else page = <NotFoundPage />;

  return (
    <AuthProvider>
      {page}
      <IBDTweaks />
    </AuthProvider>
  );
}

function NotFoundPage() {
  return (
    <Page>
      <section className="section">
        <div className="container" style={{textAlign: 'center', padding: 'var(--s-9) 0'}}>
          <div className="eyebrow eyebrow-accent">Erro 404</div>
          <h1 style={{fontSize: 'clamp(3rem, 6vw, 5rem)', fontWeight: 400, letterSpacing: '-0.02em', marginTop: 'var(--s-4)'}}>
            Página não encontrada
          </h1>
          <p style={{color: 'var(--fg-muted)', maxWidth: '40ch', margin: 'var(--s-4) auto'}}>
            O endereço solicitado não existe no acervo do Instituto.
          </p>
          <Link to="/" className="btn" style={{marginTop: 'var(--s-4)'}}>Voltar ao início <span className="icon-arrow"></span></Link>
        </div>
      </section>
    </Page>
  );
}

// Wait for ALL component files to load before mounting
function mount() {
  const root = ReactDOM.createRoot(document.getElementById('root'));
  root.render(<App />);
}

window.__ibdMount = mount;
