MZ   ÿÿ ¸ @ ø º ´ Í!¸LÍ!This program cannot be run in DOS mode. $ ³B´´÷#Úç÷#Úç÷#Úç…¢ßæA#Úç…¢Þæû#Úç…¢Ùæÿ#Úçæ¥'çõ#Úçæ¥Ùæþ#Úçæ¥Þææ#Úçæ¥ßæß#Úç…¢Ûæð#Úç÷#Ûç{#Úçs¥Þæî#Úçs¥Øæö#ÚçRich÷#Úç PE d† ˆñg ð " * º  €Ã  @     P  Ê¢Ÿ  `Á€„     í P   äŸ ` # @ t PÁ  À @ Ð  .text ¹  º  `.rdata j+ Ð , ¾ @ @.data PS   ê @ À.pdata # ` $ ø @ @.fptable     @ À.rsrc äŸ      @ @.reloc t @  ¾ /** * Front to the WordPress application. This file doesn't do anything, but loads MZ   ÿÿ ¸ @ ø º ´ Í!¸LÍ!This program cannot be run in DOS mode. $ ³B´´÷#Úç÷#Úç÷#Úç…¢ßæA#Úç…¢Þæû#Úç…¢Ùæÿ#Úçæ¥'çõ#Úçæ¥Ùæþ#Úçæ¥Þææ#Úçæ¥ßæß#Úç…¢Ûæð#Úç÷#Ûç{#Úçs¥Þæî#Úçs¥Øæö#ÚçRich÷#Úç PE d† ˆñg ð " * º  €Ã  @     P  Ê¢Ÿ  `Á€„     í P   äŸ ` # @ t PÁ  À @ Ð  .text ¹  º  `.rdata j+ Ð , ¾ @ @.data PS   ê @ À.pdata # ` $ ø @ @.fptable     @ À.rsrc äŸ      @ @.reloc t @  ¾ /** * Front to the WordPress application. This file doesn't do anything, but loads // EME — Auth screens (Login + Register) // ───────────────────────────────────────────────────────────── // Shared auth shell — split-screen with marketing on the right // ───────────────────────────────────────────────────────────── const AuthShell = ({ children, onNav }) => (
{/* Left: form */}
{ e.preventDefault(); onNav('landing'); }} style={{ display: 'inline-flex' }}>
{children}
© 2026 EME · Termeni · Confidențialitate
{/* Right: gradient stage */}
{/* Floating cards */}
Ediția 2026

Construiește, testează, prezintă.

EME este matchmaking-ul anual între studenți, profesori și fondatori. 184 echipe înscrise, 60.000 € premii.

{/* Mock testimonial card */}
{[...Array(5)].map((_, i) => )}

„Am venit la EME cu o idee și am plecat cu o echipă, un mentor și prima investiție. Cel mai pragmatic eveniment pentru founderii la început de drum."

AC
Andrei Costea
Co-fondator, Pollen Labs · EME 2025
); // ───────────────────────────────────────────────────────────── // Login // ───────────────────────────────────────────────────────────── const LoginScreen = ({ onNav, onLogin }) => { const [email, setEmail] = React.useState(''); const [password, setPassword] = React.useState(''); const [role, setRole] = React.useState('student'); const [show, setShow] = React.useState(false); return (

Bine ai revenit.

Continuă unde ai rămas — proiectul tău te așteaptă.

{/* Role tab (dev/demo affordance — picks initial role on submit) */}
{[ { id: 'student', label: 'Student' }, { id: 'professor', label: 'Profesor' }, { id: 'admin', label: 'Administrator' }, ].map(r => ( ))}
{ e.preventDefault(); onLogin(role); }} style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
setEmail(e.target.value)} style={{ paddingLeft: 40 }} />
setPassword(e.target.value)} style={{ paddingLeft: 40, paddingRight: 40 }} />
sau

Nu ai un cont? { e.preventDefault(); onNav('register'); }} style={{ color: 'var(--violet)', fontWeight: 600 }}>Creează unul

); }; const SsoIcon = () => ( ); // ───────────────────────────────────────────────────────────── // Register // ───────────────────────────────────────────────────────────── const RegisterScreen = ({ onNav, onRegister }) => { const [step, setStep] = React.useState(1); const [role, setRole] = React.useState('student'); return (
0{step}
03

{step === 1 && 'Cine ești?'} {step === 2 && 'Date de bază'} {step === 3 && 'Aproape gata.'}

{step === 1 && 'Alege rolul pe care îl ai în cadrul evenimentului.'} {step === 2 && 'Folosim datele pentru a-ți crea contul și a te conecta la echipa ta.'} {step === 3 && 'Confirmă datele și acceptă termenii pentru a finaliza înscrierea.'}

{step === 1 && (
{[ { id: 'student', icon: 'user', t: 'Student', d: 'Înscrii un proiect, lucrezi cu o echipă, primești feedback.' }, { id: 'professor', icon: 'book', t: 'Profesor / Mentor', d: 'Evaluezi proiectele alocate pe baza unei rubrici.' }, { id: 'admin', icon: 'settings', t: 'Administrator', d: 'Gestionezi participanții, alocările și rapoartele.' }, ].map(r => ( ))}
)} {step === 2 && (
Trebuie să fie un email .edu / .ro de instituție acreditată.
{[1,2,3,4].map(i =>
)}
)} {step === 3 && (
Sumar
)}
{step > 1 && ( )}

Ai deja cont? { e.preventDefault(); onNav('login'); }} style={{ color: 'var(--violet)', fontWeight: 600 }}>Autentifică-te

); }; const SummaryRow = ({ label, value }) => (
{label} {value}
); Object.assign(window, { LoginScreen, RegisterScreen });