// ===================== Skills, Companies, Projects, Education, Contact, Footer ===================== // ---------- SKILLS ---------- function Skills(){ const C = window.useC(); const s = C.skills; const Reveal = window.Reveal; const H = window.H; return (
{s.num} · {s.kicker}

/ {s.num}
{s.stack_label}
{window.STACK.map((t,i)=>(
{t.trio ? t.trio.map((ic,k)=>()) : {t.n}{ e.target.style.display='none'; e.target.parentNode.classList.add('noimg'); e.target.parentNode.dataset.l=t.n[0]; }} />}
{t.n}
))}
{[...window.STACK,...window.STACK,...window.STACK].map((t,i)=>(
{t.trio ? t.trio.map((ic,k)=>()) : {t.n}{ e.target.style.display='none'; e.target.parentNode.classList.add('noimg'); e.target.parentNode.dataset.l=t.n[0]; }} />}
{t.n}
))}
{s.expertise.map((g,i)=>(
{g.ico}

{g.h}

{g.d}

))}
); } // ---------- COMPANIES ---------- function Companies(){ const C = window.useC(); const c = C.companies; const Reveal = window.Reveal; const H = window.H; const all = [...c.list, ...c.list, ...c.list]; return (
{c.num} · {c.kicker}

/ {c.num}
{c.list.map((co,i)=>(
{co.name||co.role}
))}
{all.map((co,i)=>(
{co.name||co.role}
))}
); } // ---------- PROJECTS ---------- function Projects(){ const C = window.useC(); const p = C.projects; const Reveal = window.Reveal; const H = window.H; const f = p.featured; const sp = p.soundpaper; return (
{p.num} · {p.kicker}

/ {p.num}
{f.tag}
{f.client}

{f.desc}

{f.tags.map((t,k)=>({t}))}
{f.cta}
Tutu
{sp.tag}
{sp.personal}

{sp.desc}

{sp.tags.map((t,k)=>({t}))}
Ver o projeto
SoundPaper
{p.ach_title}
{p.achievements.map((a,i)=>(
{a.badge}
{a.sub}

{a.desc}

))}
); } // ---------- EDUCATION (simple card) ---------- function Education(){ const C = window.useC(); const e = C.edu; const Reveal = window.Reveal; const H = window.H; return (
{e.num} · {e.kicker}

/ {e.num}
IFCEev.target.parentNode.classList.add('has-img')} onError={(ev)=>{ ev.target.style.display='none'; }} /> IFCE
{e.degLabel} {e.status}

{e.deg}

{e.school}
{e.when}
); } // ---------- CONTACT + FOOTER ---------- function Contact(){ const C = window.useC(); const c = C.contact; const f = C.footer; const H = window.H; return (
{c.eyebrow}

{c.lead}

✉ {c.mail}
{window.SOCIALS.map((s,i)=>({s.k} ↗))}
); } Object.assign(window, { Skills, Companies, Projects, Education, Contact });