, trait, .sous_titre apparaissent directement sur le fond gris.
+// Couleur grisée (text_grey atténué) en cohérence avec les "meta" de la home.
+.layout-content .page-header-outside {
+ padding: 3vh $x_margin 2vh;
+ background: transparent;
+ color: $text_grey;
+ .retour_projets,
+ .retour_actus,
+ .retour_ressources,
+ .retour-meetup {
+ margin-bottom: 1.5rem;
+ a {
+ // Marianne, pas Vogun.
+ font-family: $marianne;
+ font-weight: $fw_bold;
+ font-size: $fs_xs;
+ color: $text_grey;
+ opacity: 0.7;
+ text-decoration: none;
+ &:hover { opacity: 1; }
+ }
+ }
+ // Typo titre harmonisée entre toutes les pages (projets / actus / autres) :
+ // Vogun 36px constant, on retire le bump à 57px du main_title() par défaut.
+ > h2 {
+ font-family: $vogun;
+ font-weight: $fw_medium;
+ font-size: $fs_xl;
+ color: black;
+ line-height: $lh_tight;
+ margin: 0;
+ padding: 0;
+ a { color: inherit; text-decoration: none; }
+ }
+ // Trait de séparation entre titre et sous-titre.
+ > h2 + .sous_titre,
+ > h2 ~ .sous_titre {
+ padding-top: 1.2rem;
+ margin-top: 1.2rem;
+ border-top: 1px solid $text_grey;
+ }
+ .sous_titre {
+ font-family: $vogun;
+ font-weight: $fw_medium;
+ font-size: $fs_lg; // 22px constant sur tous les breakpoints
+ line-height: $lh_tight;
+ color: $text_grey;
+ opacity: 0.7;
+ padding: 0;
+ margin-bottom: 0;
+ }
+ @media (min-width: $breakpoint_tablet) {
+ width: 75vw;
+ margin-left: 12.5vw;
+ margin-top: 5vh;
+ }
+ @media (min-width: $breakpoint_desktop) {
+ width: 50vw;
+ margin-left: 25%;
+ margin-top: 5vh; // identique à tablette, en ligne avec les pages projets
+ }
+}
+
+// Sur les pages d'index (.fullpage.large-container : /projets, /actualites,
+// /meetup), la colonne blanche est plus large. On aligne le .page-header-outside
+// dessus pour que le titre démarre à la même abscisse que le contenu.
+.layout-content .page-header-outside:has(+ .fullpage.large-container) {
+ @media (min-width: $breakpoint_tablet) {
+ width: auto;
+ margin-left: calc(#{$x_margin} * 2.5);
+ margin-right: calc(#{$x_margin} * 2.5);
+ }
+}
+
+// Quand le .page-header-outside est suivi d'une .fullpage (pages SANS
+// sidebar : actus, programme…), on supprime la marge top de .fullpage pour
+// rapprocher la colonne blanche du bloc en-tête.
+// Exceptions :
+// - /ressources : layout hacky (cf. _ressources.scss), on n'y touche pas
+// - articles non-premiers d'une vue (.views-row:not(:first-of-type)) :
+// leur en-tête est masqué donc pas de besoin d'override.
+.layout-content .page-header-outside + .fullpage,
+.layout-content .page-header-outside + article.fullpage {
+ margin-top: 1rem !important;
+ @media (min-width: $breakpoint_tablet) {
+ margin-top: 1rem !important;
+ }
+}
+// Restaurer le margin-top par défaut pour les cas exclus en desktop.
+@media (min-width: $breakpoint_desktop) {
+ .views-row:not(:first-of-type) .page-header-outside + .fullpage,
+ .views-row:not(:first-of-type) .page-header-outside + article.fullpage,
+ .ressources.page-header-outside + .fullpage,
+ .page-header-outside + .ressources,
+ .page-header-outside + article.ressources {
+ margin-top: revert !important;
+ }
+}
+
+// Sur les pages SANS sidebar (mentions-legales, programme, etc.), le
+// ayant été sorti dans .page-header-outside, le contenu peut se retrouver
+// collé au bord supérieur de la colonne (la règle p:first-of-type
+// { margin-top: 7vh } ne matche que si le premier élément est un
). +// On compense uniquement dans ce contexte. +main:not(:has(#block-erabletheme-leprogramme-2)):not(:has(#block-erabletheme-views-block-projets-block-1)) + .layout-content .page-header-outside + .fullpage > .fullpage_content { + padding-top: 1.5rem; + // Si le premier élément est un
, on neutralise sa marge top par défaut
+ // (sinon elle s'ajoute au padding qu'on vient de poser).
+ p:first-of-type {
+ margin-top: 0;
+ }
+}
+
+// Contexte page projet (sidebar sommaire à gauche, layout en flex row-reverse
+// au niveau du de l'intro à 2rem.
+ // (Le sélecteur générique .layout-content .fullpage .fullpage_content
+ // p:first-of-type met 7vh — trop pour ce contexte.)
+ .intro p:first-of-type {
+ margin-top: 2rem !important;
+ }
+ // Thématiques : "tags" sur fond blanc avec contour 1px brand color.
.thematiques {
margin-top: 1rem;
margin-left: $x_margin;
@@ -199,12 +243,13 @@
> div {
display: inline-block;
font-size: 0.8rem !important;
- background-color: #d3f0ea;
+ background-color: white;
+ border: 1px solid $fluo_green;
margin: 0.2rem;
transition: background-color 0.3s ease;
@include main_text_content();
&:hover {
- background-color: #8ec2b8;
+ background-color: $fluo_green;
}
a {
display: block;
@@ -245,17 +290,16 @@
width: 1.2rem;
height: 1.2rem;
border-radius: 1.5rem;
- background-color: $teal !important;
- transition: background-color 0.3s ease;
+ background-color: transparent !important;
&:hover {
- background-color: white !important;
+ background-color: transparent !important;
&::before {
- color: $teal;
+ color: black;
}
}
&::before {
opacity: 1 !important;
- color: white;
+ color: $text_grey;
font-weight: bold;
font-family: 'Marianne', sans-serif;
display: block;
@@ -272,7 +316,13 @@
.text-content {
.intertitre {
margin-left: $x_margin;
- @include sous_titre();
+ padding-right: $x_margin;
+ // Intertitres en Vogun un peu plus grands.
+ font-family: $vogun;
+ font-weight: $fw_medium;
+ font-size: $fs_lg;
+ color: black;
+ line-height: $lh_tight;
}
.paragraph {
margin-bottom: 3rem;
@@ -288,7 +338,7 @@
grid-column-gap: 2rem;
grid-row-gap: 2rem;
width: auto;
- margin: 4rem $x_margin;
+ margin: 0 $x_margin;
.paragraph {
> div:first-of-type {
font-size: 2rem !important;
@@ -298,7 +348,7 @@
margin: 0;
padding: 0;
margin-top: 0.5rem;
- color: $teal;
+ color: $text_grey;
}
}
}
@@ -352,10 +402,26 @@
.equipe {
margin-top: 4rem;
> div {
+ // Label "Collectif du projet" : intertitre Vogun, brand color, avec un
+ // filet 1px à droite centré verticalement jusqu'à la marge de colonne.
> div:first-of-type {
margin-left: $x_margin;
+ margin-right: $x_margin;
margin-bottom: 2rem;
- @include sous_titre_alt();
+ font-family: $vogun;
+ font-weight: $fw_medium;
+ font-size: $fs_lg;
+ line-height: $lh_tight;
+ color: $fluo_green;
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+ &::after {
+ content: '';
+ flex: 1;
+ height: 1px;
+ background-color: $fluo_green;
+ }
}
> div:nth-of-type(2) {
> div:first-of-type > div {
@@ -392,21 +458,17 @@
> div:first-of-type {
margin-bottom: 2rem;
display: inline-block;
- @include sous_titre();
+ // Titre de rôle d'équipe : même typo que les intertitres.
+ font-family: $vogun;
+ font-weight: $fw_medium;
+ font-size: $fs_lg;
+ color: black;
+ line-height: $lh_tight;
> div:last-of-type {
display: flex;
align-items: center;
- &::before {
- content: '';
- display: inline-block;
- width: 1.8rem;
- height: 1.8rem;
- background-color: $teal;
- mask-repeat: no-repeat;
- mask-position: center;
- mask-size: 1.8rem;
- margin-right: 0.5rem;
- }
+ // Icônes en ::before (grenouille/marmotte/etc.) retirées —
+ // les règles mask-image plus haut deviennent inopérantes.
}
}
> div:nth-of-type(2) {
@@ -428,38 +490,30 @@
> .paragraph {
margin: 0 !important;
padding: 0 !important;
- display: grid;
- grid-template-columns: auto 1fr;
- grid-column-gap: 0;
+ display: flex;
flex-direction: column;
> .portrait {
display: none;
}
- > .nom {
- grid-column: 2;
- grid-row: 2;
- margin: 0;
- padding: 0;
- color: black !important;
- font-size: $fs_sm !important;
- @include sous_titre();
- > div {
- padding-left: 0.2rem !important;
+ // Prénom + nom regroupés via le template
+ // paragraph--membre-equipe.html.twig.
+ > .nom-prenom {
+ display: flex;
+ flex-wrap: wrap;
+ column-gap: 0.3rem;
+ color: black;
+ font-family: $marianne;
+ font-weight: $fw_regular;
+ font-size: $fs_md;
+ line-height: $lh_normal;
+ > .prenom,
+ > .nom {
+ margin: 0;
+ padding: 0;
}
}
- > .prenom {
- grid-column: 1;
- grid-row: 2;
- margin: 0;
- padding: 0;
- color: black !important;
- font-size: $fs_sm !important;
- @include sous_titre();
- }
> .texte {
margin-top: 0.5rem;
- grid-column: 1 / span 2;
- grid-row: 3;
p {
font-size: $fs_sm;
margin: 0 !important;
@@ -481,17 +535,41 @@
}
}
}
-.views-row:first-of-type > .taxonomy_page {
- margin-top: 13vh !important;
+// Page d'archive taxonomy : on n'affiche le .page-header-outside (titre du
+// tag + retour) que sur la 1re .views-row. Les autres sont masquées.
+.views-row .page-header-outside.taxonomy_header {
+ display: none;
}
+.views-row:first-of-type > .page-header-outside.taxonomy_header {
+ display: block;
+}
+
+// Border-bottom brand color uniquement sur le dernier .taxonomy_page (les
+// .fullpage intermédiaires l'ont par défaut, cf. _fullpage.scss).
+.views-row:not(:last-of-type) > .taxonomy_page {
+ border-bottom: none !important;
+}
+
.taxonomy_page {
margin-top: 0 !important;
margin-bottom: 0 !important;
+ // Titres de projets listés : réduits drastiquement (cards compactes).
+ > .fullpage_content > .projet_label {
+ font-family: $vogun;
+ font-weight: $fw_medium;
+ font-size: $fs_md;
+ color: black;
+ line-height: $lh_tight;
+ margin: 0 !important;
+ padding: 0 $x_margin 0 $x_margin !important;
+ a { color: inherit; text-decoration: none; }
+ }
> .fullpage_content {
> div:last-of-type {
display: grid !important;
grid-template-columns: 0.5fr 1fr;
grid-template-rows: repeat(3, auto);
+ padding-right: $x_margin;
> .diapo {
grid-column: 1;
grid-row: 2/4;
@@ -501,12 +579,29 @@
> .sous_titre {
grid-column: 1/3;
grid-row: 1;
- margin-bottom: 2rem;
+ margin-bottom: 0.5rem;
+ // Sous-titres : également réduits.
+ // (chaîne d'éléments traversée par un ajouté en JS, on cible
+ // descendants tous niveaux confondus avec !important.)
+ font-size: $fs_sm !important;
+ font-family: $marianne !important;
+ font-weight: $fw_regular !important;
+ color: $text_grey !important;
+ line-height: $lh_normal !important;
+ * {
+ font-size: $fs_sm !important;
+ font-family: $marianne !important;
+ font-weight: $fw_regular !important;
+ color: $text_grey !important;
+ line-height: $lh_normal !important;
+ }
+ a { text-decoration: none; }
}
> .localisation {
grid-column: 2;
grid-row: 2;
margin-top: 0 !important;
+ font-size: $fs_xs !important;
}
> .thematiques {
grid-column: 2;
@@ -520,7 +615,3 @@
.feed-icon {
display: none;
}
-
-.views-row:not(:first-of-type) .taxonomy_page .retour_projets {
- display: none;
-}
diff --git a/web/themes/erabletheme/scss/_ressources.scss b/web/themes/erabletheme/scss/_ressources.scss
index d8ca8c6..0cf95d4 100644
--- a/web/themes/erabletheme/scss/_ressources.scss
+++ b/web/themes/erabletheme/scss/_ressources.scss
@@ -1,9 +1,27 @@
+// Le titre "Ressources" est rendu par chaque node (dans .page-header-outside,
+// frère de .ressources). On masque par défaut, et on n'affiche que sur la
+// 1re ressource via .views-row:first-of-type ci-dessous.
+.views-row .page-header-outside {
+ display: none;
+}
+
+// Pas d'espace entre les .views-row sur la page Ressources : on veut donner
+// l'illusion d'une colonne blanche unique. On annule margin-bottom de la
+// .views-row, et padding-top/bottom de chaque carte .ressources.
+.views-row:has(> .ressources) {
+ margin-bottom: 0 !important;
+}
+// Border-bottom brand color uniquement sur la dernière ressource (les
+// .fullpage intermédiaires l'ont par défaut, cf. _fullpage.scss).
+.views-row:not(:last-of-type) > .ressources {
+ border-bottom: none !important;
+}
+
.ressources {
margin-top: 0 !important;
margin-bottom: 0 !important;
- > .main-title {
- display: none;
- }
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
> div {
padding: 0 $x_margin;
display: grid;
@@ -35,6 +53,8 @@
> div > span {
margin-top: -1rem;
@include fluo_button();
+ // Carte sur fond blanc : on contraste le CTA en gris pâle.
+ a { background-color: $page_bg; }
}
> div > span:last-of-type {
display: none;
@@ -66,13 +86,20 @@
}
}
-.views-row:first-of-type {
- > .ressources {
- margin-top: 13vh !important;
- > .main-title {
- display: block;
- padding-top: 5vh !important;
- @include main_title();
+// Scope strict à la page /ressources (article.ressources frère du
+// .page-header-outside dans la 1re views-row). On ne touche pas aux autres
+// pages où un .page-header-outside peut aussi être dans une .views-row
+// (ex. /taxonomy/term/N avec .taxonomy_header).
+.views-row:first-of-type:has(> article.ressources) {
+ > .page-header-outside {
+ display: block;
+ // La page /ressources utilise un layout hacky qui pousse et .sous_titre ont été sortis dans .page-header-outside ;
+ // l'ancien sélecteur `h2 + div` est remplacé par `.article_meta + div`
+ // qui cible le wrapper de contenu directement.
+ .article_meta + div {
position: relative;
padding: 0 $x_margin;
.visually-hidden {
width: 0% !important;
}
- .sous_titre {
- margin-top: -1.5rem;
-
- > div > div {
- font-size: $fs_lg;
- margin-bottom: 30px;
- }
- }
> div {
> div {
width: 100%;
@@ -68,6 +60,10 @@
@include fluo_button();
a {
display: inline-block;
+ // En mobile, ces liens sont en flux normal dans la colonne blanche,
+ // donc on contraste leur fond en gris pâle (en desktop ils sont
+ // position: fixed sur fond gris, on garde le fond blanc d'origine).
+ background-color: $page_bg;
}
@media (min-width: $breakpoint_desktop) {
margin-bottom: 0 !important;
@@ -80,6 +76,7 @@
}
a {
max-width: calc(25vw - $x_margin * 2);
+ background-color: white;
}
}
}
diff --git a/web/themes/erabletheme/scss/partials/_footer.scss b/web/themes/erabletheme/scss/partials/_footer.scss
index b2b8e9e..e5e92d1 100644
--- a/web/themes/erabletheme/scss/partials/_footer.scss
+++ b/web/themes/erabletheme/scss/partials/_footer.scss
@@ -39,7 +39,22 @@
align-items: center;
gap: 1rem;
#block-erabletheme-logorep img { max-width: 100px; height: auto; }
- #block-erabletheme-logoepau img { max-width: 150px; height: auto; }
+ // Logo epau : padding vertical pour cohérence visuelle avec le header
+ // (le logo a moins de marge interne que les autres).
+ #block-erabletheme-logoepau {
+ a {
+ display: flex;
+ align-items: center;
+ height: 4.5rem; // hauteur de référence (= $header_height)
+ padding: 1.4rem 0;
+ box-sizing: border-box;
+ }
+ img {
+ max-width: 150px;
+ height: 100%;
+ width: auto;
+ }
+ }
}
// --- Groupe droite : navs + linkedin ---
diff --git a/web/themes/erabletheme/scss/partials/_header.scss b/web/themes/erabletheme/scss/partials/_header.scss
index bdafac9..0c8dd3c 100644
--- a/web/themes/erabletheme/scss/partials/_header.scss
+++ b/web/themes/erabletheme/scss/partials/_header.scss
@@ -49,12 +49,44 @@ $header_height: 4.5rem; // 72px maquette
padding: 0 1rem;
}
+ // Logo République : occupe toute la hauteur du header
+ // (pas le -1rem de marge appliqué aux autres logos).
#block-erabletheme-logorep-2 {
padding-left: 1.25rem;
+ img {
+ max-height: $header_height;
+ height: $header_height;
+ width: auto;
+ }
}
#block-erabletheme-logoerable {
margin-left: auto; // pousse le burger à droite
+ img {
+ width: auto;
+ height: auto;
+ max-height: calc($header_height - 1rem);
+ }
+ }
+
+ // Templates custom (block--erabletheme-logoepau-2 et logoerable)
+ // → structure
hors du sélecteur générique
+ // `div > div > div img`. On rappelle la contrainte de hauteur.
+ // Padding vertical pour réduire visuellement le logo epau,
+ // qui a moins de marge interne que les autres logos.
+ #block-erabletheme-logoepau-2 {
+ a {
+ display: flex;
+ align-items: center;
+ height: 100%;
+ padding: 1.4rem 0;
+ box-sizing: border-box;
+ }
+ img {
+ width: auto;
+ height: 100%;
+ max-height: 100%;
+ }
}
#block-erabletheme-socialmedialinks {
@@ -208,9 +240,6 @@ $header_height: 4.5rem; // 72px maquette
}
}
- #block-erabletheme-navigationprincipale {
- margin-top: 0 !important;
- }
}
> div:nth-of-type(2) {
@@ -219,51 +248,6 @@ $header_height: 4.5rem; // 72px maquette
}
}
- #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;
- 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;
diff --git a/web/themes/erabletheme/templates/block--views-block--home-blocks-block-1.html.twig b/web/themes/erabletheme/templates/block--views-block--home-blocks-block-1.html.twig
index 3159647..8c9c475 100644
--- a/web/themes/erabletheme/templates/block--views-block--home-blocks-block-1.html.twig
+++ b/web/themes/erabletheme/templates/block--views-block--home-blocks-block-1.html.twig
@@ -32,7 +32,7 @@
+
{{ label }}
{% endif %}
+ {{ title_suffix }}
+
+
+
+{{ label }}
{% endif %}
+ {{ title_suffix }}
+
+
+
+{{ label }}
{% endif %}
+ {{ title_suffix }}
+
+
+
+
{{ elements.erabletheme_contenudelapageprincipale.content['#title'] }}
+