feat(hero): hero redesenhada, titulo visivel no HTML (LCP) e cena 3D so depois do idle

- titulo fluido (clamp ate 88px) com destaque em 'sob medida', eyebrow mono, seta no CTA e brilho de fundo
- numeros reais na hero (anos de experiencia, projetos publicados, demos online) calculados em app/page.tsx a partir dos dados do portfolio
- remove o opacity:0 inicial do motion: o texto nasce visivel; a entrada anima so a posicao (CSS)
- HeroSystem monta a cena Three.js via requestIdleCallback (timeout 2,5s), depois de pintar e hidratar o essencial
- capas decorativas (sem captura) escondidas no celular

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This commit is contained in:
Evandro Fonseca JuniorandClaude Sonnet 5.5 committed 2026-10-04 23:48:19 -03:00
1 parent 35a950a9b1
commit 23aeaa2fda
5 files changed
+140 -28

No files matched your search

+39
View File
@@ -976,6 +976,40 @@ textarea {
}
}
/* Hero: brilho de fundo e entrada em CSS (so posicao; o texto ja nasce visivel para o LCP) */
.hero-glow {
position: absolute;
inset: 0;
pointer-events: none;
background:
radial-gradient(55% 65% at 78% 38%, rgba(204, 255, 0, 0.11), transparent 70%),
radial-gradient(40% 50% at 6% 92%, rgba(204, 255, 0, 0.05), transparent 70%);
}
.hero-rise > * {
animation: hero-rise 0.8s var(--ease-out) both;
&:nth-child(2) {
animation-delay: 0.08s;
}
&:nth-child(3) {
animation-delay: 0.16s;
}
}
@keyframes hero-rise {
from {
transform: translateY(16px);
}
}
@media (prefers-reduced-motion: reduce) {
.hero-rise > * {
animation: none;
}
}
/* Capa dos cards de projeto: captura real ou painel gerado em codigo */
.ds-cover {
position: relative;
@@ -1021,6 +1055,11 @@ textarea {
letter-spacing: -0.05em;
color: var(--slash);
}
/* so decorativa: no celular some, para a pagina nao crescer sem informacao nova */
@media (max-width: 768px) {
display: none;
}
}
/* Cinematic card hover effect */