feat(projects): capa nos cards de projeto (captura real ou painel gerado em codigo)

- ProjectCover usa as capturas ja publicadas (next/image, webp/avif) e, sem captura, um painel com monograma e stack
- .ds-cover mantem proporcao 16:10 e nao encolhe no card flex

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:40:25 -03:00
1 parent e008a7c241
commit d5f04162a8
4 files changed
+103 -1

No files matched your search

+47
View File
@@ -942,6 +942,53 @@ textarea {
}
}
/* Capa dos cards de projeto: captura real ou painel gerado em codigo */
.ds-cover {
position: relative;
flex: none; /* o card e uma coluna flex: sem isto a capa encolhe e perde a proporcao */
aspect-ratio: 16 / 10;
overflow: hidden;
margin-bottom: var(--sp-5);
border: 1px solid var(--border);
background: var(--ink);
& img {
width: 100%;
height: 100%;
object-fit: cover;
object-position: top;
transition: transform 0.7s var(--ease-out);
}
.ds-card:hover & img {
transform: scale(1.035);
}
}
.ds-section-dark .ds-cover {
border-color: rgba(255, 255, 255, 0.1);
}
.ds-cover-fallback {
display: grid;
place-items: center;
padding: var(--sp-4);
color: var(--paper);
background:
radial-gradient(120% 90% at 100% 0%, var(--slash-dim), transparent 60%),
linear-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px) 0 0 / 100% 32px,
linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px) 0 0 / 32px 100%,
var(--ink);
& .ds-cover-mark {
font-family: var(--font-display);
font-size: clamp(48px, 7vw, 96px);
font-weight: 800;
letter-spacing: -0.05em;
color: var(--slash);
}
}
/* Cinematic card hover effect */
.ds-card {
transition: all 0.5s cubic-bezier(0.16, 1, 0.3, 1);