refonte page d'accueil nouveau design, sans images pour l'instant

This commit is contained in:
2026-05-29 01:15:56 +02:00
parent 39ed94c029
commit 1956952a2a
31 changed files with 1407 additions and 1346 deletions

View File

@@ -6,7 +6,7 @@
padding-top: 3vh;
padding-left: $x_margin;
a {
font-size: $sm_font_size;
font-size: $fs_xs;
font-weight: 800;
color: $teal;
}
@@ -15,7 +15,7 @@
padding-left: $x_margin;
margin: 20px 0;
div {
font-size: $sm_font_size;
font-size: $fs_xs;
margin-bottom: 5px;
}
}
@@ -36,7 +36,7 @@
margin-top: -1.5rem;
> div > div {
font-size: $l_font_size;
font-size: $fs_lg;
margin-bottom: 30px;
}
}

View File

@@ -3,6 +3,7 @@
background-color: white;
padding: 1rem;
box-sizing: border-box;
border-bottom: 7px solid $fluo_green;
@media screen and (min-width: $breakpoint_tablet) {
padding: 2rem;
}
@@ -26,43 +27,40 @@
}
.preview_meta {
font-family: "Marianne", sans-serif;
font-size: $sm_font_size;
@include meta_text();
width: auto;
display: flex;
justify-content: space-between;
color: $teal;
margin: 0 $x_margin;
margin-top: 1.3rem;
padding-top: 0.7rem;
margin-left: 0;
@media (min-width: $breakpoint_tablet) {
margin-left: unset;
font-size: $m_font_size;
}
}
.preview_sous_titre {
font-family: "Marianne", sans-serif;
font-size: $m_font_size;
@include main_text_content();
padding: 5px $x_margin;
padding-left: 0 !important;
.sous_titre {
line-height: 1.3 !important;
line-height: $lh_normal !important;
margin-top: 1rem;
margin-bottom: 1.5rem;
}
@media (min-width: $breakpoint_tablet) {
padding-left: unset;
font-size: $l_font_size;
padding-top: unset !important;
}
}
h2 {
@include sous_titre_alt();
margin-bottom: 0.5rem;
margin-top: 1rem !important;
padding: 0 !important;
line-height: 1.2;
@include main_title();
a { color: inherit; text-decoration: none; }
}
}

View File

@@ -1,3 +1,7 @@
// Variables pagination du carrousel (flèches + dots slick).
$arrow_size: 2.3rem;
$pagination_line_offset: 4rem; // distance bas carrousel -> centre de la ligne flèches/dots
.carousel_container {
@media screen and (min-width: $breakpoint_tablet) {
width: 100%;
@@ -45,46 +49,52 @@
}
}
}
// --- Ligne de pagination ---
// Slick rend les flèches dans .slick-list (donc dans .slick-container)
// et les dots dans #carousel_dots (frère, géré plus bas).
.slick-arrow {
width: 1.5rem;
height: 1.5rem;
border-radius: 1.5rem;
background-color: $teal !important;
width: $arrow_size;
height: $arrow_size;
border-radius: 50%;
background-color: $fluo_green !important;
transition: background-color 0.3s ease;
top: unset !important;
bottom: calc(-25px - 4rem);
@media (min-width: $breakpoint_tablet) {
width: 2rem;
height: 2rem;
bottom: calc(-25px - 6rem);
}
// Centre vertical de la flèche aligné sur $pagination_line_offset
bottom: calc(-1 * (#{$pagination_line_offset} + #{$arrow_size} / 2));
display: flex !important;
align-items: center;
justify-content: center;
padding: 0;
&:hover {
background-color: white !important;
&::before {
color: $teal;
}
&::before { color: black; }
}
&::before {
position: static;
opacity: 1 !important;
color: white;
color: $text_grey;
font-weight: bold;
font-family: 'Marianne', sans-serif;
display: block;
font-size: $sm_font_size !important;
@media (min-width: $breakpoint_tablet) {
font-size: $l_font_size !important;
}
font-family: $marianne;
font-size: $fs_md !important;
line-height: 1;
width: auto;
height: auto;
}
}
.slick-prev {
left: 20vw;
left: 5vw;
@media (min-width: $breakpoint_tablet) {
left: calc(50vw + 10vw); // tablette : proche du bord (repère 200vw)
}
@media (min-width: $breakpoint_desktop) {
left: calc(50vw + 35vw);
}
}
.slick-next {
right: 20vw;
right: 5vw;
@media (min-width: $breakpoint_tablet) {
right: calc(50vw + 10vw);
}
@media (min-width: $breakpoint_desktop) {
right: calc(50vw + 35vw);
}
}
@@ -96,26 +106,56 @@
margin-bottom: 6rem;
}
}
#carousel_dots {
z-index: 1;
position: relative;
margin-top: -15px;
ul {
position: relative;
bottom: 0;
li.slick-active button::before{
color: $teal;
}
li button::before{
color: rgba(0.9, 0.9, 0.9, 1);
}
} // /.slick-container
// #carousel_dots utilise le ::before unicode de slick comme pastille
// (cf. slick-theme.css ~ligne 178). On stylise donc la couleur du ::before
// au lieu de masquer le ::before et de styler le button — c'est plus simple
// et c'est ainsi que ça fonctionnait avant la refonte.
//
// Alignement vertical avec les flèches :
// - Les flèches sont ancrées via `bottom: -($pagination_line_offset + $arrow_size/2)`
// donc leur centre vertical est à $pagination_line_offset sous le bas du carrousel.
// - Le #carousel_dots arrive juste en dessous (flux normal). Sa rangée de dots
// intrinsèque (ul.slick-dots de slick) fait environ 1.25rem de hauteur visuelle.
// - Pour aligner les centres, on remonte de :
// $pagination_line_offset + $arrow_size/2 - 1.25rem
$slick_dots_intrinsic_height: 1.25rem;
#carousel_dots {
position: relative;
z-index: 1;
// Formule calibrée pour tablette+/desktop (cf. commentaire ci-dessus).
margin-top: calc(-1 * (#{$pagination_line_offset} + #{$arrow_size} / 2 - #{$slick_dots_intrinsic_height}));
// En mobile, slick passe à slidesToShow: 1 → le parent positionné des
// flèches change, ce qui décale leur centre d'~33px vers le haut par
// rapport au flux du #carousel_dots. Magic number pour compenser.
@media (max-width: #{$breakpoint_tablet - 1px}) {
margin-top: calc(-1 * (#{$pagination_line_offset} + #{$arrow_size} / 2 - #{$slick_dots_intrinsic_height}) + 33px);
}
ul {
position: relative;
bottom: 0;
li {
margin: 0 0.75rem;
button::before {
font-size: $fs_xs;
opacity: 1;
color: $text_grey;
transition: color 0.2s ease;
}
&:hover button::before {
color: black;
}
&.slick-active button::before {
color: $fluo_green;
}
}
footer {
@include fluo_button();
text-align: center;
margin-top: 4rem;
margin-bottom: 4rem;
}
}
}
footer {
@include fluo_button();
text-align: center;
margin-top: 4rem;
margin-bottom: 4rem;
}
}

View File

@@ -1,123 +1,95 @@
// Footer : 2 groupes — logos à gauche, navs + linkedin à droite.
//
// Structure DOM (cf. page.html.twig + Drupal regions) :
// footer
// section#footer_top (vide actuellement)
// section#footer_middle
// section#footer_left (logos rep + epau)
// div#footer_section
// section#footer_center (nav compte + nav pied de page)
// section#footer_right (icône linkedin)
// section#footer_bottom (vide actuellement)
//
// Largeur : 100% en mobile, réduit à la colonne contenu (50vw centré)
// en desktop, comme le reste du contenu de la home.
.layout-container > footer {
width: 100%;
background-color: white;
margin-top: 50px;
padding: 0 $x_margin !important;
@media screen and (min-width: $breakpoint_desktop) {
width: calc(100% - 50vw);
margin-left: 25vw;
}
#footer_middle {
display: flex;
#footer_left > div {
margin-top: 5px;
display: flex;
justify-content: start;
align-items: center;
flex-wrap: nowrap;
#block-erabletheme-logorep {
max-width: 100px;
img {
width: 100%;
height: auto;
}
}
#block-erabletheme-logoepau {
max-width: 150px;
img {
width: 100%;
height: auto;
}
@media (min-width: $breakpoint_tablet) {
padding-left: 2vw;
}
}
}
#footer_section {
display: flex;
width: 100%;
justify-content: space-between;
align-items: center;
margin-top: 10px;
margin-bottom: 20px;
position: relative;
#footer_center {
width: 100%;
> div {
display: flex;
justify-content: space-around;
nav ul {
display: flex;
justify-content: space-between;
li {
a {
color: $dark_green;
font-family: 'Marianne', sans-serif;
font-weight: 800;
text-decoration: underline;
font-size: 0.6rem;
text-align: center;
display: inline-block;
line-height: 1.2;
}
&:last-of-type {
margin-left: 1rem;
}
}
&:first-of-type {
margin-left: 1rem;
}
&:last-of-type {
margin-right: 1rem;
}
}
}
@media (min-width: $breakpoint_tablet) {
padding-left: 0;
}
}
width: 100%;
background-color: white;
margin-top: 50px;
padding: 1rem $x_margin;
box-sizing: border-box;
@media (min-width: $breakpoint_desktop) {
width: 50vw;
margin-left: 25vw;
padding: 1rem;
}
#footer_right {
width: 30%;
#block-erabletheme-socialmedialinks-2 ul {
display: flex;
justify-content: end;
li {
a {
span {
font-weight: lighter;
font-size: 0.8rem;
width: 1.6rem;
height: 1.6rem;
padding-top: 0.2rem;
border-radius: 0.8rem;
color: white;
background-color: $teal;
display: flex;
justify-content: center;
align-items: center;
}
svg.ext {
display: none;
}
}
&:last-of-type {
margin-left: 5px;
}
}
}
@media (min-width: $breakpoint_tablet) {
width: auto;
}
}
#footer_middle {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
gap: 1.5rem;
}
}
@media (min-width: $breakpoint_tablet) {
display: flex;
}
// --- Groupe gauche : logos ---
#footer_left > div {
display: flex;
align-items: center;
gap: 1rem;
#block-erabletheme-logorep img { max-width: 100px; height: auto; }
#block-erabletheme-logoepau img { max-width: 150px; height: auto; }
}
// --- Groupe droite : navs + linkedin ---
#footer_section {
display: flex;
align-items: center;
gap: 1.5rem;
}
// Drupal injecte un <div> wrapper entre #footer_center et les <nav>.
// On flexe ce wrapper pour aligner les 2 navs côte à côte.
#footer_center > div {
display: flex;
align-items: center;
gap: 1.5rem;
nav ul {
display: flex;
gap: 1.5rem;
margin: 0;
padding: 0;
list-style: none;
li a {
color: $text_grey;
font-family: $marianne;
font-weight: $fw_bold;
font-size: $fs_xs;
text-decoration: underline;
line-height: 1.2;
}
}
@media (min-width: $breakpoint_tablet) {
display: block;
padding: 0;
}
#footer_right #block-erabletheme-socialmedialinks-2 ul {
display: flex;
gap: 0.5rem;
margin: 0;
padding: 0;
list-style: none;
a span {
display: flex;
align-items: center;
justify-content: center;
width: 1.6rem;
height: 1.6rem;
border-radius: 50%;
background-color: $fluo_green;
color: $text_grey;
font-size: 0.8rem;
font-weight: lighter;
}
a svg.ext { display: none; }
}
}

View File

@@ -1,155 +1,123 @@
$header_height: 4.5rem; // 72px maquette
.layout-container {
header[role="banner"] {
width: 100%;
background-color: white;
@media (min-width: $breakpoint_desktop) {
position: sticky;
top: -12vh;
box-shadow: none;
}
position: sticky;
top: 0;
z-index: 99;
box-shadow: none;
> div:first-of-type {
z-index: 99;
position: relative;
display: grid;
grid-template-columns: repeat(16, 1fr);
> div{
height: 12vh;
grid-row: 1;
max-height: 100%;
width: 100%;
display: flex;
align-items: center;
height: $header_height;
// Conteneurs Drupal des blocs logos / burger
> div {
height: $header_height;
display: flex;
align-items: center;
> div {
width: 100%;
display: flex;
justify-content: center;
align-items: center;
height: 100%;
> div {
height: 12vh;
height: 100%;
a {
display: block;
height: 100%;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
height: 100%;
}
img {
width: auto;
height: auto;
max-width: 100%;
max-height: 100%;
max-height: calc($header_height - 1rem);
}
}
}
}
#block-erabletheme-logorep-2 {
img {
padding-top: 0.8rem;
padding-bottom: 0.8rem;
}
grid-column: 1 / 5;
@media (min-width: $breakpoint_tablet) {
grid-column: 0 / 4;
}
@media (min-width: $breakpoint_desktop) {
grid-column: 1 / 3;
}
}
#block-erabletheme-logoepau-2 {
grid-column: 5 / 9;
> div {
align-items: flex-start;
justify-content: flex-start;
> div > a > img {
transform: translateX(-20px);
padding-top: 1.2rem;
padding-bottom: 1.2rem;
}
}
@media (min-width: $breakpoint_tablet) {
grid-column: 4 / 7;
> div > div > a > img {
padding-top: 1.5rem;
padding-bottom: 1.5rem;
}
}
@media (min-width: $breakpoint_desktop) {
grid-column: 3 / 8;
}
@media (min-width: $breakpoint_desktop_large) {
grid-column: 3 / 6;
> div > div > a > img {
transform: translateX(-40px);
padding-top: 30px;
padding-bottom: 30px;
}
}
}
#block-erabletheme-logorep-2,
#block-erabletheme-logoepau-2,
#block-erabletheme-logoerable {
grid-column: 10 / 15;
@media (min-width: $breakpoint_desktop) {
grid-column: 14 / 16;
}
img {
padding-right: 1rem;
padding-top: 0.8rem;
padding-bottom: 0.8rem;
}
padding: 0 1rem;
}
#block-erabletheme-logorep-2 {
padding-left: 1.25rem;
}
#block-erabletheme-logoerable {
margin-left: auto; // pousse le burger à droite
}
#block-erabletheme-socialmedialinks {
display: none;
}
#block-erabletheme-header {
grid-column: 15 / 17;
@media (min-width: $breakpoint_desktop) {
grid-column: 16 / 17;
}
height: $header_height;
#hamburger {
cursor: pointer;
width: auto;
height: 100%;
width: $header_height; // carré 72x72
height: $header_height;
background-color: $fluo_green;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
padding: 0.5rem 0;
h2 {
font-size: $sm_font_size;
font-family: 'Marianne', sans-serif;
font-weight: 800;
text-align: center;
}
justify-content: center;
.burger-icon {
width: 2rem;
height: 1.5rem;
display: flex;
flex-direction: column;
justify-content: space-between;
padding-bottom: 0.5rem;
position: relative;
width: 1.75rem;
height: 1rem;
$bar_thickness: 2px;
$bar_transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), top 0.35s cubic-bezier(0.4, 0, 0.2, 1), bottom 0.35s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s ease;
div {
border-bottom: solid 1px black;
width: 100%;
position: absolute;
left: 0;
right: 0;
height: $bar_thickness;
background-color: black;
opacity: 1;
transition: opacity 0.2s ease-out, transform 0.4s ease-out;
transform: none;
border-radius: 1px;
transform-origin: center center;
transition: $bar_transition;
}
div:nth-of-type(1) { top: 0; }
div:nth-of-type(2) {
top: 50%;
transform: translateY(-50%);
opacity: 1;
}
div:nth-of-type(3) { bottom: 0; }
}
.burger-icon.open {
div:first-of-type {
transform: translate(0rem, 0.5rem) rotate(-45deg);
div:nth-of-type(1) {
top: 50%;
transform: translateY(-50%) rotate(45deg);
}
div:nth-of-type(2) {
opacity: 0;
}
div:last-of-type {
transform: translate(0rem, -0.5rem) rotate(45deg);
div:nth-of-type(3) {
bottom: 50%;
transform: translateY(50%) rotate(-45deg);
}
}
}
ul:not(.social-media-links--platforms) {
position: absolute;
left: 0;
top: $header_height;
z-index: -1;
display: none;
height: auto;
@@ -172,7 +140,7 @@
text-align: center;
line-height: 1.2;
color: white;
font-family: 'Marianne', sans-serif;
font-family: $marianne;
font-weight: 800;
padding: 4px 6px;
background-color: rgba(255, 255, 255, 0);
@@ -205,8 +173,6 @@
}
}
}
}
}
> li.visible {
@@ -237,86 +203,90 @@
ul.active {
padding: 30px 0;
padding-top: 3rem;
max-height: 100vh;
max-height: calc(100vh - #{$header_height});
overflow-y: scroll;
}
}
#block-erabletheme-navigationprincipale {
margin-top: 0 !important;
}
}
> div:nth-of-type(2) {
z-index: 98;
position: relative;
z-index: 98;
position: relative;
}
}
#block-erabletheme-navigationprincipale {
background: linear-gradient(to bottom, white, rgba(255, 255, 255, 0.8) 50%, transparent);
width: 100%;
display: none;
position: absolute;
padding-top: 1rem;
@media (min-width: $breakpoint_desktop) {
display: block;
}
ul {
width: 100%;
display: flex;
padding: 1rem 10vw;
justify-content: space-around;
li {
font-family: 'Marianne', sans-serif;
font-size: $m_font_size;
padding: 9px 16px;
background-color: white;
transition: background-color 0.3s ease;
&:first-of-type {
display: flex;
justify-items: center;
&::after {
content: url(../assets/icons/arrow-down-s-line.svg);
display: inline-block;
height: 1rem;
width: 1rem;
margin-left: 0.2rem;
}
}
&:hover, &.submenu-open {
background-color: $fluo_green;
}
a {
font-weight: 800;
color: black;
&:is-active {
background-color: $fluo_green;
}
}
}
}
}
#block-erabletheme-leprogramme {
position: fixed;
background-color: white;
max-height: 0vh;
overflow: hidden;
display: none;
transition: max-height 0.6s ease;
> h2 {
background: linear-gradient(to bottom, white, rgba(255, 255, 255, 0.8) 50%, transparent);
width: 100%;
display: none;
}
ul {
padding: 1rem 1.5rem;
li {
font-family: 'Marianne', sans-serif;
font-size: $m_font_size;
margin: 0.5rem 0;
a {
color: black;
&:hover, &.is-active {
font-weight: 800;
}
}
position: absolute;
padding-top: 1rem;
@media (min-width: $breakpoint_desktop) {
display: block;
}
ul {
width: 100%;
display: flex;
padding: 1rem 10vw;
justify-content: space-around;
li {
font-family: $marianne;
font-size: $fs_sm;
padding: 9px 16px;
background-color: white;
transition: background-color 0.3s ease;
&:first-of-type {
display: flex;
justify-items: center;
&::after {
content: url(../assets/icons/arrow-down-s-line.svg);
display: inline-block;
height: 1rem;
width: 1rem;
margin-left: 0.2rem;
}
}
&:hover, &.submenu-open {
background-color: $fluo_green;
}
a {
font-weight: 800;
color: black;
&:is-active {
background-color: $fluo_green;
}
}
}
}
}
#block-erabletheme-leprogramme {
position: fixed;
background-color: white;
max-height: 0vh;
overflow: hidden;
display: none;
transition: max-height 0.6s ease;
> h2 {
display: none;
}
ul {
padding: 1rem 1.5rem;
li {
font-family: $marianne;
font-size: $fs_sm;
margin: 0.5rem 0;
a {
color: black;
&:hover, &.is-active {
font-weight: 800;
}
}
}
}
}
}
}