feat(trajectoire): intégration complète de la page Construire sa trajectoire

- Implémentation des composants React (8 trajectoires, Human Employment Model, méthodologie 6 étapes, Learning by Doing, exemples de projets, compétences)
- Rendu dynamique des cartes via .map()
- Configuration du routage SPA dans Symfony (route catch-all) et React Router (Header Link)
- Ajustements graphiques et CSS conformes au Figma (#F4F1EA, vert olive)
This commit is contained in:
MohamedLoum1001
2026-09-24 21:20:18 +02:00
parent d3b9318dee
commit cd6a66893a
31 changed files with 1582 additions and 146 deletions

View File

@ -0,0 +1,114 @@
/* ==========================================================================
SECTION HUMAN EMPLOYMENT MODEL (FIGMA)
========================================================================== */
.hem-wrapper {
width: 100%;
background-color: #ffffff;
padding: 1rem 2rem 5rem 2rem;
box-sizing: border-box;
}
.hem-inner {
max-width: 1240px;
margin: 0 auto;
display: flex;
flex-direction: column;
}
/* Texte d'intro gris */
.hem-description {
font-size: 0.85rem;
line-height: 1.55;
color: #6b7280;
max-width: 780px;
margin: 0 0 2.5rem 0;
}
/* Grille 4 colonnes alignées */
.hem-cards-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 1.5rem;
width: 100%;
margin-bottom: 3.5rem;
box-sizing: border-box;
}
/* Chaque carte beige */
.hem-card {
background-color: #F4F1EA;
border-radius: 12px;
padding: 1.75rem 1.4rem;
box-sizing: border-box;
min-height: 160px;
}
.hem-card-title {
font-size: 0.95rem;
font-weight: 700;
color: #4B6A4A;
margin: 0 0 1rem 0;
}
.hem-card-list {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 0.35rem;
}
.hem-card-list li {
font-size: 0.8rem;
color: #9A9595;
line-height: 1.45;
}
/* Phrase centrale */
.hem-phrase {
text-align: center;
font-size: 0.95rem;
color: #111827;
margin: 0 0 2rem 0;
}
.hem-phrase strong {
font-weight: 700;
}
/* Image arrondie */
.hem-banner-container {
width: 100%;
max-width: 1000px;
margin: 0 auto;
border-radius: 20px;
overflow: hidden;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
}
.hem-banner-img {
width: 100%;
height: 480px;
object-fit: cover;
display: block;
}
/* Responsive : passage en 2 colonnes uniquement sur smartphone / écran très étroit */
@media (max-width: 720px) {
.hem-cards-grid {
grid-template-columns: repeat(2, 1fr);
gap: 1rem;
}
.hem-banner-img {
height: 280px;
}
}
@media (max-width: 480px) {
.hem-cards-grid {
grid-template-columns: 1fr;
}
}