card open-graph
All checks were successful
Deploy / Deploy to Production (push) Successful in 10s

This commit is contained in:
Julie Blanc 2026-01-06 15:43:31 +01:00
parent 4642425f43
commit dc223ae1b8
24 changed files with 1199 additions and 492 deletions

View file

@ -35,4 +35,17 @@ body{
img{
max-width: 100%;
}
.link-block{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: block;
cursor: pointer;
// &:hover{
// background-color: rgba(255, 0, 0, 0.244);
// }
}

View file

@ -4,6 +4,7 @@ $medium-up: "screen and (min-width: 1080px)";
$small-up: "screen and (min-width: 768px)";
$small: "screen and (max-width: 768px)";
$x-small-up: "screen and (min-width: 560px)";
$x-small: "screen and (max-width: 560px)";
$paysage: "screen and (max-height: 670px) and (min-width: 1080px)";

View file

@ -52,6 +52,7 @@
--border: 1px solid var(--color-txt);
--border-medium: 1px solid var(--grey-600);
--border-light: 1px solid var(--grey-800);
@ -79,7 +80,7 @@
@media #{$small}{
:root {
--fs-xsmall: 10px;
--fs-small: 11px;
--fs-small: 12px;
--fs-normal: 14px;
--fs-medium: 18px;
--fs-big: 28px;

View file

@ -1,157 +1,178 @@
button {
cursor: pointer;
font-family: var(--font);
font-size: var(--fons-normal);
color: var(--color-txt);
&:hover {
color: var(--grey-100);
}
a {
text-decoration: none;
width: 100%;
height: 100%;
}
}
button:disabled {
cursor: auto;
}
.soutenir {
a {
color: var(--color-accent);
&:hover {
color: var(--color-accent) !important;
text-decoration: underline !important;
button{
cursor: pointer;
font-family: var(--font);
font-size: var(--fons-normal);
color: var(--color-txt);
&:hover{
color: var(--grey-100);
}
}
}
.btn--bold,
.btn--bold-inline {
display: block;
height: calc(var(--h-block) * 1);
border: var(--border);
border-radius: var(--radius-btn);
font-size: var(--fs-small);
text-transform: uppercase;
line-height: 1;
overflow: hidden;
white-space: nowrap;
a {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
padding: 0 2ch;
padding-top: 4px;
}
&.no-link {
display: flex;
align-items: center;
justify-content: center;
padding: 0 2ch;
padding-top: 4px;
}
}
.btn--bold {
background-color: var(--color-txt);
color: var(--color-bg);
&:hover {
background-color: var(--color-accent);
border-color: var(--color-accent);
a {
color: var(--color-bg);
a{
text-decoration: none;
width: 100%;
height: 100%;
}
}
}
.btn--bold-inline {
background-color: var(--color-bg);
button:disabled{
cursor: auto;
}
.btn--bold-inline:hover {
background-color: var(--grey-800);
color: var(--color-txt);
a {
.soutenir{
a{
color: var(--color-accent);
&:hover{
color: var(--color-accent)!important;
text-decoration: underline!important;
}
}
}
.btn--bold,
.btn--bold-inline{
display: block;
height: calc(var(--h-block)*1);
border: var(--border);
border-radius: var(--radius-btn);
font-size: var(--fs-small);
text-transform: uppercase;
line-height: 1;
overflow: hidden;
white-space: nowrap;
a{
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
padding: 0 2ch;
padding-top: 4px;
}
&.no-link{
display: flex;
align-items: center;
justify-content: center;
padding: 0 2ch;
padding-top: 4px;
}
}
.btn--bold{
background-color: var(--color-txt);
color: var(--color-bg);
&:hover{
background-color: var(--color-accent);
border-color: var(--color-accent);
a{
color: var(--color-bg);
}
}
}
.btn--bold-inline{
background-color: var(--color-bg);
}
.btn--bold-inline:hover{
background-color: var(--grey-800);
color: var(--color-txt);
}
a{
background-color: var(--grey-800);
color: var(--color-txt);
}
}
// DELETE ?
.btn__default {
--size: calc(var(--h-block) - 8px);
font-size: var(--fs-normal);
font-weight: var(--fw-normal);
height: var(--size);
padding-right: 1.5ch;
.btn__default{
position: relative;
display: flex;
align-items: center;
gap: 0ch;
// padding-right: 0.5ch;
color: var(--color-accent);
font-weight: var(--fw-medium);
text-decoration: none;
cursor: pointer;
.icon,
.txt {
z-index: 10;
}
.icon {
width: var(--size);
--size: calc(var(--h-block) - 8px);
font-size: var(--fs-normal);
font-weight: var(--fw-normal);
height: var(--size);
padding-right: 1.5ch;
position: relative;
display: flex;
align-items: center;
justify-content: center;
color: var(--color-bg);
text-align: center;
svg {
fill: var(--color-bg);
width: 80%;
}
}
.txt {
font-family: var(--font-title);
gap: 0ch;
// padding-right: 0.5ch;
color: var(--color-accent);
font-size: var(--fs-normal);
font-weight: var(--fw-bold);
padding-left: 1ch;
}
font-weight: var(--fw-medium);
text-decoration: none;
&::after {
content: "";
display: block;
background-color: var(--color-accent);
border-radius: calc(var(--size) / 2);
width: var(--size);
height: var(--size);
position: absolute;
left: 0;
z-index: 0;
transition: width 0.2s;
}
cursor: pointer;
&:hover {
//
.txt {
color: var(--color-bg);
display: block;
.icon, .txt{ z-index: 10; }
.icon{
width: var(--size);
height: var(--size);
display: flex;
align-items: center;
justify-content: center;
color: var(--color-bg);
text-align: center;
svg{
fill: var(--color-bg);
width: 80%;
}
}
&::after {
width: 100%;
.txt{
font-family: var(--font-title);
color: var(--color-accent);
font-size: var(--fs-normal);
font-weight: var(--fw-bold);
padding-left: 1ch;
}
}
&::after{
content: '';
display: block;
background-color: var(--color-accent);
border-radius: calc(var(--size)/2);
width: var(--size);
height: var(--size);
position: absolute;
left: 0;
z-index: 0;
transition: width .2s
}
&:hover{
//
.txt{
color: var(--color-bg);
display: block;
}
&::after{
width: 100%;
}
}
}

View file

@ -0,0 +1,81 @@
.card--impact{
display: grid;
grid-gap: var(--padding-inner);
grid-template-columns: 2fr 3fr;
padding: calc(var(--spacing)*0.5) 0;
border-bottom: var(--border-light);
&:first-of-type{
border-top: var(--border-light);
}
.content{
grid-column: 2;
}
&:not([data-impact-type="media"]) .content{
@media #{$x-small}{ grid-column: span 2; }
}
.tag{
width: auto;
justify-self: start;
position: relative;
top: -5px;
}
.content{
.see-more{
color: var(--color-txt-light);
text-decoration: none;
white-space: nowrap;
&::after{
content: ' +'
}
}
}
.open-graph__details{
grid-column: span 2;
@include details-summary();
summary{
color: var(--color-txt-light);
.arrow-details svg{ fill: var(--color-txt-light);}
}
}
// @media #{$x-small-up}{
.open-graph__details{
summary{
display: grid;
grid-template-columns: 2fr 3fr;
grid-gap: var(--padding-inner);
.summary-inner{
grid-column: 2;
}
}
}
.open-graph__inner{
margin-top: calc(var(--spacing)*0.5);
margin-bottom: calc(var(--spacing)*1);
@media #{$small-up}{
margin-bottom: calc(var(--spacing)*2);
}
.card--open-graph{
margin-bottom: calc(var(--spacing)*0.5);
}
}
// }
}

View file

@ -0,0 +1,66 @@
.card--open-graph{
display: grid;
grid-template-columns: 2fr 3fr;
grid-gap: var(--padding-inner);
border: var(--border-light);
border-radius: var(--radius-small);
position: relative;
figure{
grid-column: 1;
grid-row: 1;
}
@include figure-16-9();
@media #{$x-small}{
figure{
height: 100%;
aspect-ratio: auto;
}
}
.content{
padding: var(--padding-inner);
padding-left: 0;
grid-column: 2;
grid-row: 1;
}
.site-name{
color: var(--color-txt-light);
font-size: var(--fs-small);
}
.title{
font-size: var(--fs-normal);
font-weight: normal;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
margin-bottom: 0.5em;
a{
text-decoration: none;
}
}
.description{
font-size: var(--fs-small);
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}
&:hover{
.title{ text-decoration: underline;}
}
}

View file

@ -0,0 +1,67 @@
.card--small{
display: grid;
grid-gap: var(--padding-inner);
grid-template-columns: 2fr 3fr;
margin-bottom: var(--spacing);
position: relative;
@include figure-16-9();
.content{
display: flex;
flex-direction: column;
padding-top: calc(var(--spacing)*0.25);
}
.title{
font-weight: normal;
font-size: var(--fs-medium);
margin-bottom: 0.25em;
a{ text-decoration: none;}
}
time{
flex-grow: 1;
color: var(--color-txt-light);
}
.keywords{
margin-top: 1.5em;
padding-bottom: calc(var(--spacing)*0.25);
color: var(--color-txt-light);
}
&:hover{
.title{ text-decoration: underline;}
}
@media #{$medium}{
.title{
font-size: var(--fs-normal);
margin-bottom: 0;
}
}
@media #{$x-small}{
.content{
padding: 0;
}
.title{
margin-bottom: 0;
}
time{
font-size: var(--fs-small);
margin-top: 0.25em;
}
.keywords{
margin-top: 0.5em;
padding-bottom: 0;
}
}
}

View file

@ -0,0 +1,39 @@
@mixin details-summary(){
summary,
.summary-inner{
display: flex;
align-items: center;
cursor: pointer;
gap: 0.5ch;
}
.arrow-details{
line-height: 0;
--size: 11px;
height: var(--size);
width: var(--size);
display: inline-flex;
align-items: center;
justify-content: center;
position: relative;
top: -2px;
svg{
transition: transform 0.2s ease-in;
width: 100%;
fill: var(--color-txt);
}
}
&[open]{
.arrow-details svg{
transform: rotate(90deg);
}
}
}

View file

@ -0,0 +1,18 @@
@mixin figure-16-9{
figure{
aspect-ratio: 16/9;
display: flex;
overflow: hidden;
img{
width: 100%;
height: 100%;
object-fit: cover;
transition: cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.5s;
}
}
&:hover{
figure img{ transform: scale(1.05); }
}
}

View file

@ -1,34 +1,14 @@
.keywords{
list-style: none;
display: flex;
flex-wrap: wrap;
gap: 1ch;
li{
height: var(--h-block);
border-radius: calc(var(--h-block)*0.5);
border: var(--border-light);
font-size: var(--fs-normal);
overflow: hidden;
display: inline-block;
padding-right: 0.75ch;
a{
text-decoration: none;
width: 100%;
height: 100%;
display: flex;
align-items: center;
padding: 0 1.5ch;
line-height: 1;
padding-top: 2px;
}
&:hover{
border-color: var(--color-txt);
a{
color: currentColor;
&::before{
content: "#";
padding-right: 0.25ch;
}
}
}
}

View file

@ -0,0 +1,21 @@
.tag{
height: calc(var(--h-block)*0.75);
border-radius: calc(var(--h-block)*0.75/2);
display: flex;
align-items: center;
justify-content: center;
padding: 0 1.5ch;
padding-top: 3px;
font-size: var(--fs-small);
line-height: 1;
background-color: var(--color-txt);
color: var(--color-bg);
overflow: hidden;
white-space: nowrap;
}

View file

@ -1,12 +1,14 @@
body {
min-height: 100dvh;
min-height: 100vh;
body{
min-height: 100dvh;
min-height: 100vh;
display: flex;
flex-direction: column;
display: flex;
flex-direction: column;
main {
flex-grow: 1;
padding: 0 var(--padding-body);
}
}
main{
flex-grow: 1;
padding: 0 var(--padding-body);
}
}

View file

@ -74,7 +74,7 @@
margin: 0 auto;
}
.footer__socials .socials{
.footer__socials .container{
max-width: 400px;
columns: 2;
margin-top: calc(var(--spacing)*1);

View file

@ -1,7 +1,6 @@
#site-menu{
position: fixed;
width: var(--menu-w);
@media #{$small}{ width: 100vw; }
height: calc(100dvh - var(--header-h));
height: calc(100vh - var(--header-h));
top: var(--header-h);
@ -12,13 +11,14 @@
padding: var(--padding-body);
z-index: 1000;
@media #{$x-small}{
width: 100vw;
right: -100vw;
}
display: flex;
flex-direction: column;
// display: none;
// .baseline{
// font-size: var(--fs-medium);
// }
form{
margin-top: calc(var(--spacing)*1);
@ -77,7 +77,6 @@
padding: 0.5em 0;
&:hover{
text-decoration: underline;
// color: var(--grey-200);
}
}
}

View file

@ -29,6 +29,7 @@
--color-accent-100: #d8fdd8;
--dark: black;
--border: 1px solid var(--color-txt);
--border-medium: 1px solid var(--grey-600);
--border-light: 1px solid var(--grey-800);
--header-h: 80px;
--header-h-shrinked: 50px;
@ -52,7 +53,7 @@
@media screen and (max-width: 768px) {
:root {
--fs-xsmall: 10px;
--fs-small: 11px;
--fs-small: 12px;
--fs-normal: 14px;
--fs-medium: 18px;
--fs-big: 28px;
@ -99,6 +100,16 @@ img {
max-width: 100%;
}
.link-block {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: block;
cursor: pointer;
}
@keyframes add-border {
from {
border-bottom-color: transparent;
@ -326,8 +337,7 @@ button:disabled {
text-decoration: none;
cursor: pointer;
}
.btn__default .icon,
.btn__default .txt {
.btn__default .icon, .btn__default .txt {
z-index: 10;
}
.btn__default .icon {
@ -370,34 +380,35 @@ button:disabled {
width: 100%;
}
.tag {
height: calc(var(--h-block) * 0.75);
border-radius: calc(var(--h-block) * 0.75 / 2);
display: flex;
align-items: center;
justify-content: center;
padding: 0 1.5ch;
padding-top: 3px;
font-size: var(--fs-small);
line-height: 1;
background-color: var(--color-txt);
color: var(--color-bg);
overflow: hidden;
white-space: nowrap;
}
.keywords {
list-style: none;
display: flex;
flex-wrap: wrap;
gap: 1ch;
}
.keywords li {
height: var(--h-block);
border-radius: calc(var(--h-block) * 0.5);
border: var(--border-light);
font-size: var(--fs-normal);
overflow: hidden;
display: inline-block;
padding-right: 0.75ch;
}
.keywords li a {
text-decoration: none;
width: 100%;
height: 100%;
display: flex;
align-items: center;
padding: 0 1.5ch;
line-height: 1;
padding-top: 2px;
}
.keywords li:hover {
border-color: var(--color-txt);
}
.keywords li:hover a {
color: currentColor;
.keywords li a::before {
content: "#";
padding-right: 0.25ch;
}
.form__newsletter {
@ -725,6 +736,230 @@ button:disabled {
margin-bottom: 0.5em;
}
.card--small {
display: grid;
grid-gap: var(--padding-inner);
grid-template-columns: 2fr 3fr;
margin-bottom: var(--spacing);
position: relative;
}
.card--small figure {
aspect-ratio: 16/9;
display: flex;
overflow: hidden;
}
.card--small figure img {
width: 100%;
height: 100%;
-o-object-fit: cover;
object-fit: cover;
transition: cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.5s;
}
.card--small:hover figure img {
transform: scale(1.05);
}
.card--small .content {
display: flex;
flex-direction: column;
padding-top: calc(var(--spacing) * 0.25);
}
.card--small .title {
font-weight: normal;
font-size: var(--fs-medium);
margin-bottom: 0.25em;
}
.card--small .title a {
text-decoration: none;
}
.card--small time {
flex-grow: 1;
color: var(--color-txt-light);
}
.card--small .keywords {
margin-top: 1.5em;
padding-bottom: calc(var(--spacing) * 0.25);
color: var(--color-txt-light);
}
.card--small:hover .title {
text-decoration: underline;
}
@media screen and (max-width: 1080px) {
.card--small .title {
font-size: var(--fs-normal);
margin-bottom: 0;
}
}
@media screen and (max-width: 560px) {
.card--small .content {
padding: 0;
}
.card--small .title {
margin-bottom: 0;
}
.card--small time {
font-size: var(--fs-small);
margin-top: 0.25em;
}
.card--small .keywords {
margin-top: 0.5em;
padding-bottom: 0;
}
}
.card--impact {
display: grid;
grid-gap: var(--padding-inner);
grid-template-columns: 2fr 3fr;
padding: calc(var(--spacing) * 0.5) 0;
border-bottom: var(--border-light);
}
.card--impact:first-of-type {
border-top: var(--border-light);
}
.card--impact .content {
grid-column: 2;
}
@media screen and (max-width: 560px) {
.card--impact:not([data-impact-type=media]) .content {
grid-column: span 2;
}
}
.card--impact .tag {
width: auto;
justify-self: start;
position: relative;
top: -5px;
}
.card--impact .content .see-more {
color: var(--color-txt-light);
text-decoration: none;
white-space: nowrap;
}
.card--impact .content .see-more::after {
content: " +";
}
.card--impact .open-graph__details {
grid-column: span 2;
}
.card--impact .open-graph__details summary,
.card--impact .open-graph__details .summary-inner {
display: flex;
align-items: center;
cursor: pointer;
gap: 0.5ch;
}
.card--impact .open-graph__details .arrow-details {
line-height: 0;
--size: 11px;
height: var(--size);
width: var(--size);
display: inline-flex;
align-items: center;
justify-content: center;
position: relative;
top: -2px;
}
.card--impact .open-graph__details .arrow-details svg {
transition: transform 0.2s ease-in;
width: 100%;
fill: var(--color-txt);
}
.card--impact .open-graph__details[open] .arrow-details svg {
transform: rotate(90deg);
}
.card--impact .open-graph__details summary {
color: var(--color-txt-light);
}
.card--impact .open-graph__details summary .arrow-details svg {
fill: var(--color-txt-light);
}
.card--impact .open-graph__details summary {
display: grid;
grid-template-columns: 2fr 3fr;
grid-gap: var(--padding-inner);
}
.card--impact .open-graph__details summary .summary-inner {
grid-column: 2;
}
.card--impact .open-graph__inner {
margin-top: calc(var(--spacing) * 0.5);
margin-bottom: calc(var(--spacing) * 1);
}
@media screen and (min-width: 768px) {
.card--impact .open-graph__inner {
margin-bottom: calc(var(--spacing) * 2);
}
}
.card--impact .open-graph__inner .card--open-graph {
margin-bottom: calc(var(--spacing) * 0.5);
}
.card--open-graph {
display: grid;
grid-template-columns: 2fr 3fr;
grid-gap: var(--padding-inner);
border: var(--border-light);
border-radius: var(--radius-small);
position: relative;
}
.card--open-graph figure {
grid-column: 1;
grid-row: 1;
}
.card--open-graph figure {
aspect-ratio: 16/9;
display: flex;
overflow: hidden;
}
.card--open-graph figure img {
width: 100%;
height: 100%;
-o-object-fit: cover;
object-fit: cover;
transition: cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.5s;
}
.card--open-graph:hover figure img {
transform: scale(1.05);
}
@media screen and (max-width: 560px) {
.card--open-graph figure {
height: 100%;
aspect-ratio: auto;
}
}
.card--open-graph .content {
padding: var(--padding-inner);
padding-left: 0;
grid-column: 2;
grid-row: 1;
}
.card--open-graph .site-name {
color: var(--color-txt-light);
font-size: var(--fs-small);
}
.card--open-graph .title {
font-size: var(--fs-normal);
font-weight: normal;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
margin-bottom: 0.5em;
}
.card--open-graph .title a {
text-decoration: none;
}
.card--open-graph .description {
font-size: var(--fs-small);
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}
.card--open-graph:hover .title {
text-decoration: underline;
}
@keyframes add-border {
from {
border-bottom-color: transparent;
@ -869,9 +1104,10 @@ button:disabled {
display: flex;
flex-direction: column;
}
@media screen and (max-width: 768px) {
@media screen and (max-width: 560px) {
#site-menu {
width: 100vw;
right: -100vw;
}
}
#site-menu form {
@ -1019,7 +1255,7 @@ body.menu-open #menu-toggle .close {
max-width: 1200px;
margin: 0 auto;
}
#site-footer .footer__socials .socials {
#site-footer .footer__socials .container {
max-width: 400px;
-moz-columns: 2;
columns: 2;
@ -1074,6 +1310,11 @@ body main {
font-size: var(--fs-small);
padding-top: calc(var(--spacing) * 0.5);
}
@media screen and (max-width: 560px) {
.page-enquete #hero figcaption {
font-size: var(--fs-xsmall);
}
}
.page-enquete #hero.hero-video figure {
width: 100%;
}
@ -1104,7 +1345,7 @@ body main {
}
.page-enquete #section__dl .dl__group {
display: grid;
grid-template-columns: 40% 1fr;
grid-template-columns: 2fr 3fr;
border-top: var(--border-light);
padding: calc(var(--spacing) * 0.5) 0;
}
@ -1156,8 +1397,7 @@ body main {
.page-enquete .section__article {
margin: calc(var(--spacing) * 1.5) 0;
}
.page-enquete #section__impacts,
.page-enquete #section__en-lien {
.page-enquete #section__impacts, .page-enquete #section__en-lien {
margin-top: 0px;
}
.page-enquete #hero {
@ -1208,9 +1448,10 @@ body main {
}
@media screen and (max-width: 560px) {
.page-enquete #section__dl .dl__group {
grid-template-columns: 32% 1fr;
-moz-column-gap: 1ch;
column-gap: 1ch;
font-size: var(--fs-small);
padding: calc(var(--spacing) * 0.25) 0;
}
}
@media screen and (min-width: 768px) {

File diff suppressed because one or more lines are too long

View file

@ -8,11 +8,18 @@
// @import 'components/nav-tabs';
// @import 'components/btn--default';
@import 'components/buttons';
@import 'components/tags';
@import 'components/keywords';
@import 'components/details-summary';
@import 'components/figures';
@import 'components/form-newsletter';
@import 'components/list-socials';
@import 'components/modal-share';
@import 'components/text';
@import 'components/card-small';
@import 'components/card-impact';
@import 'components/card-open-graph';
@import 'partials/site-header';

View file

@ -1,129 +1,142 @@
.page-enquete {
position: relative;
header {
.page-type {
text-transform: uppercase;
color: var(--color-txt-light);
margin-bottom: calc(var(--spacing) * 0.5);
}
h2 {
font-size: var(--fs-xbig);
line-height: var(--leading-tight);
}
}
.section__article {
a:hover {
color: var(--grey-200);
}
.section__title {
font-weight: normal;
text-transform: uppercase;
margin-bottom: calc(var(--spacing) * 0.5);
}
}
#hero {
width: 100vw;
.page-enquete{
position: relative;
left: calc(var(--padding-body) * -1);
figcaption {
color: var(--color-txt-light);
font-size: var(--fs-small);
padding-top: calc(var(--spacing) * 0.5);
}
&.hero-video {
figure {
width: 100%;
img {
width: 100%;
aspect-ratio: 16/9;
object-fit: cover;
header{
.page-type{
text-transform: uppercase;
color: var(--color-txt-light);
margin-bottom: calc(var(--spacing)*0.5);
}
}
h2{
font-size: var(--fs-xbig);
line-height: var(--leading-tight);
}
}
}
#nav--page {
ul {
list-style: none;
li {
text-align: center;
color: var(--color-txt-light);
a {
display: block;
padding: 0.3em 0;
text-decoration: none;
.section__article{
a:hover{
color: var(--grey-200);
}
.section__title{
font-weight: normal;
text-transform: uppercase;
margin-bottom: calc(var(--spacing)*0.5)
}
}
}
}
#section__short {
font-size: var(--fs-medium);
}
#section__dl {
margin-top: calc(var(--spacing) * 1.5);
border-bottom: var(--border-light);
.dl__group {
display: grid;
grid-template-columns: 40% 1fr;
border-top: var(--border-light);
padding: calc(var(--spacing) * 0.5) 0;
}
dt {
color: var(--color-txt-light);
padding-right: 1ch;
#hero{
width: 100vw;
position: relative;
left: calc(var(--padding-body)*-1);
figcaption{
color: var(--color-txt-light);
font-size: var(--fs-small);
@media #{$x-small}{ font-size: var(--fs-xsmall); }
padding-top: calc(var(--spacing)*0.5);
}
&.hero-video{
figure{
width: 100%;
img{
width: 100%;
aspect-ratio: 16/9;
object-fit: cover;
}
}
}
}
ul:not(.keywords) {
list-style: none;
li {
padding-bottom: 0.2em;
}
}
}
#section__synthese {
p + p {
margin-top: 0.5em;
#nav--page{
ul{
list-style: none;
li{
text-align: center;
color: var(--color-txt-light);
a{
display: block;
padding: 0.3em 0;
text-decoration: none;
}
}
}
}
h4 {
margin-top: 2em;
margin-bottom: 1em;
font-size: var(--fs-normal);
font-weight: normal;
text-decoration: 1px underline var(--color-txt-light);
text-underline-offset: 3px;
#section__short{
font-size: var(--fs-medium);
}
}
#section__dl{
margin-top: calc(var(--spacing)*1.5);
border-bottom: var(--border-light);
.dl__group{
display: grid;
grid-template-columns: 2fr 3fr;
border-top: var(--border-light);
padding: calc(var(--spacing)*0.5) 0;
}
dt{
color: var(--color-txt-light);
padding-right: 1ch;
}
ul:not(.keywords){
list-style: none;
li{
padding-bottom: 0.2em;
}
}
}
#section__synthese{
p + p{
margin-top: 0.5em;
}
h4{
margin-top: 2em;
margin-bottom: 1em;
font-size: var(--fs-normal);
font-weight: normal;
text-decoration: 1px underline var(--color-txt-light);
text-underline-offset: 3px;
}
}
}
// SHAREACTIONS --------------------------------------------------
// ----------------------------------------------------------------
#share-banner__desktop {
display: none;
}
#share-banner__desktop ~ .modal--share {
opacity: 0;
pointer-events: none;
transition: opacity 0.2s ease-in;
#share-banner__desktop{ display: none; }
#share-banner__desktop ~ .modal--share{
opacity: 0;
pointer-events: none;
transition: opacity .2s ease-in;
}
#share-banner__desktop:checked ~ .modal--share {
opacity: 1;
pointer-events: auto;
#share-banner__desktop:checked ~ .modal--share{
opacity: 1;
pointer-events: auto;
}
// .page-enquete{
// #banner--page.is-sticky {
// position: fixed;
@ -134,191 +147,224 @@
// }
// }
// SMALL ----------------------------------------------------------
// ----------------------------------------------------------------
@media #{$small} {
.page-enquete {
header {
padding-top: calc(var(--spacing) * 1.5);
.page-type {
font-size: var(--fs-small);
}
}
.section__article {
margin: calc(var(--spacing) * 1.5) 0;
}
@media #{$small}{
#section__impacts,
#section__en-lien {
margin-top: 0px;
}
.page-enquete{
#hero {
margin: calc(var(--spacing) * 1.5) 0;
figcaption {
margin: 0 var(--padding-body);
}
}
header{
padding-top: calc(var(--spacing)*1.5);
.page-type{
font-size: var(--fs-small);
}
}
.modal--share {
position: absolute;
width: calc(100% - var(--padding-body) * 2);
bottom: calc(var(--spacing) * 2);
}
.section__article{
margin: calc(var(--spacing)*1.5) 0;
}
#banner--page {
padding: calc(var(--spacing) * 0.5) 0;
position: fixed;
bottom: 0;
left: 0;
width: 100vw;
padding: calc(var(--spacing) * 0.75) var(--padding-body);
padding-top: var(--spacing);
background-color: var(--color-bg);
background: linear-gradient(
0deg,
var(--color-bg) 0%,
var(--color-bg) 64%,
transparent 100%
);
z-index: 800;
#nav--page {
display: none;
}
.btn--group {
display: flex;
gap: calc(var(--spacing) * 0.25);
position: relative;
> button,
> label {
width: 50%;
cursor: pointer;
#section__impacts, #section__en-lien{
margin-top: 0px;
}
}
#hero{
margin: calc(var(--spacing)*1.5) 0;
figcaption{
margin: 0 var(--padding-body);
}
}
.modal--share{
position: absolute;
width: calc(100% - var(--padding-body)*2);
bottom: calc(var(--spacing) * 2);
}
#banner--page {
padding: calc(var(--spacing)*0.5) 0;
position: fixed;
bottom: 0;
left: 0;
width: 100vw;
padding: calc(var(--spacing)*0.75) var(--padding-body);
padding-top: var(--spacing);
background-color: var(--color-bg);
background: linear-gradient(0deg,var(--color-bg) 0%, var(--color-bg) 64%, transparent 100%);
z-index: 800;
#nav--page{
display: none;
}
.btn--group{
display: flex;
gap: calc(var(--spacing)*0.25);
position: relative;
> button,
> label {
width: 50%;
cursor: pointer;
}
}
}
// action
#banner--page{
opacity: 0;
pointer-events: none;
transition: opacity .2s ease-in;
}
#banner--page.is-visible{
opacity: 1;
pointer-events: auto;
}
}
// action
#banner--page {
opacity: 0;
pointer-events: none;
transition: opacity 0.2s ease-in;
}
#banner--page.is-visible {
opacity: 1;
pointer-events: auto;
}
}
}
@media #{$x-small} {
.page-enquete {
#section__dl .dl__group {
grid-template-columns: 32% 1fr;
column-gap: 1ch;
}
}
}
@media #{$x-small}{
.page-enquete{
#section__dl .dl__group{
column-gap: 1ch;
font-size: var(--fs-small);
padding: calc(var(--spacing)*0.25) 0;
}
}
}
// DESKTOP ----------------------------------------------------------
// ----------------------------------------------------------------
@media #{$small-up} {
.page-enquete {
#banner--page {
height: calc(100vh - var(--header-h));
height: calc(100dvh - var(--header-h));
margin-bottom: calc((100vh - var(--header-h)) * -1);
margin-bottom: calc((100dvh - var(--header-h)) * -1);
padding: var(--padding-body);
padding-left: 0px;
position: sticky;
top: var(--header-h);
width: var(--banner-medium);
display: flex;
flex-direction: column;
justify-content: space-between;
}
#banner--page .btn--group {
display: flex;
flex-direction: column;
align-items: center;
gap: calc(var(--spacing) * 0.25);
@media #{$small-up}{
> button,
> label {
width: 100%;
max-width: 160px;
cursor: pointer;
}
}
.page-enquete{
#hero {
margin: calc(var(--spacing) * 3) 0;
}
#banner--page{
height: calc(100vh - var(--header-h));
height: calc(100dvh - var(--header-h));
margin-bottom: calc((100vh - var(--header-h))*-1);
margin-bottom: calc((100dvh - var(--header-h))*-1);
padding: var(--padding-body);
padding-left: 0px;
position: sticky;
top: var(--header-h);
width: var(--banner-medium);
display: flex;
flex-direction: column;
justify-content: space-between;
}
.section__article {
margin-left: var(--banner-medium);
margin-top: calc(var(--spacing) * 3);
margin-bottom: calc(var(--spacing) * 3);
}
#banner--page .btn--group{
display: flex;
flex-direction: column;
align-items: center;
gap: calc(var(--spacing)*0.25);
> button,
> label {
width: 100%;
max-width: 160px;
cursor: pointer;
}
}
#section__short {
margin-top: var(--padding-body);
}
#hero{
margin: calc(var(--spacing)*3) 0;
header {
max-width: var(--max-w-content);
margin: calc(var(--spacing) * 2) auto;
}
}
.section__article {
.section__title {
font-size: var(--fs-medium);
margin-bottom: var(--spacing);
}
}
.section__article{
margin-left: var(--banner-medium);
margin-top: calc(var(--spacing)*3);
margin-bottom: calc(var(--spacing)*3);
}
#section__synthese {
font-size: var(--fs-medium);
}
}
.modal--share {
position: absolute;
bottom: calc(var(--padding-body) + var(--h-block) + var(--spacing) * 0.25);
width: calc(100% - var(--padding-body));
}
}
#section__short{
margin-top: var(--padding-body);
}
@media #{$medium-up} {
.page-enquete {
#banner--page {
width: calc((100% - var(--max-w-content)) / 2);
}
header{
max-width: var(--max-w-content);
margin: calc(var(--spacing)*2) auto;
}
#hero {
margin: calc(var(--spacing) * 3) 0;
figcaption {
max-width: var(--max-w-content);
margin: 0 auto;
}
}
.section__article{
.section__title{
font-size: var(--fs-medium);
margin-bottom: var(--spacing);
}
}
header {
max-width: var(--max-w-content);
margin: calc(var(--spacing) * 2) auto;
#section__synthese{
font-size: var(--fs-medium);
}
}
.modal--share{
position: absolute;
bottom: calc(var(--padding-body) + var(--h-block) + var(--spacing) * 0.25);
width: calc(100% - var(--padding-body));
}
}
.section__article {
max-width: var(--max-w-content);
margin: calc(var(--spacing) * 3) auto;
@media #{$medium-up}{
.page-enquete{
#banner--page{
width: calc((100% - var(--max-w-content))/2);
}
#hero{
margin: calc(var(--spacing)*3) 0;
figcaption{
max-width: var(--max-w-content);
margin: 0 auto;
}
}
header{
max-width: var(--max-w-content);
margin: calc(var(--spacing)*2) auto;
}
.section__article{
max-width: var(--max-w-content);
margin: calc(var(--spacing)*3) auto;
}
}
}
}
}

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M7.33 24l-2.83-2.829 9.339-9.175-9.339-9.167 2.83-2.829 12.17 11.996z"/></svg>

After

Width:  |  Height:  |  Size: 170 B

View file

@ -1,7 +0,0 @@
<svg width="34px" height="34px" viewBox="0 0 34 34" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(0.999997,0,0,1,-0.499614,-0.41986)">
<g id="facebook">
<path d="M17.5,2.099C8.995,2.099 2.1,8.994 2.1,17.499C2.1,25.22 7.787,31.595 15.198,32.708L15.198,21.58L11.388,21.58L11.388,17.532L15.198,17.532L15.198,14.839C15.198,10.379 17.371,8.421 21.077,8.421C22.853,8.421 23.791,8.553 24.236,8.613L24.236,12.146L21.707,12.146C20.134,12.146 19.584,13.638 19.584,15.32L19.584,17.532L24.196,17.532L23.57,21.58L19.584,21.58L19.584,32.741C27.101,31.721 32.9,25.295 32.9,17.499C32.9,8.994 26.005,2.099 17.5,2.099Z" style="fill-rule:nonzero;"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 896 B

1
assets/icons/link.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" style="fill: var(--color-txt)" width="24" height="24" viewBox="0 0 24 24"><path d="M13.723 18.654l-3.61 3.609c-2.316 2.315-6.063 2.315-8.378 0-1.12-1.118-1.735-2.606-1.735-4.188 0-1.582.615-3.07 1.734-4.189l4.866-4.865c2.355-2.355 6.114-2.262 8.377 0 .453.453.81.973 1.089 1.527l-1.593 1.592c-.18-.613-.5-1.189-.964-1.652-1.448-1.448-3.93-1.51-5.439-.001l-.001.002-4.867 4.865c-1.5 1.499-1.5 3.941 0 5.44 1.517 1.517 3.958 1.488 5.442 0l2.425-2.424c.993.284 1.791.335 2.654.284zm.161-16.918l-3.574 3.576c.847-.05 1.655 0 2.653.283l2.393-2.389c1.498-1.502 3.94-1.5 5.44-.001 1.517 1.518 1.486 3.959 0 5.442l-4.831 4.831-.003.002c-1.438 1.437-3.886 1.552-5.439-.002-.473-.474-.785-1.042-.956-1.643l-.084.068-1.517 1.515c.28.556.635 1.075 1.088 1.528 2.245 2.245 6.004 2.374 8.378 0l4.832-4.831c2.314-2.316 2.316-6.062-.001-8.377-2.317-2.321-6.067-2.313-8.379-.002z"/></svg>

After

Width:  |  Height:  |  Size: 911 B

View file

@ -1,7 +0,0 @@
<svg width="34px" height="34px" viewBox="0 0 34 34" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1.22222,0,0,1.22222,0.500004,0.500006)">
<g id="linkedin">
<path d="M23.786,0L3.214,0C1.44,0 0,1.44 0,3.214L0,23.786C0,25.56 1.44,27 3.214,27L23.786,27C25.56,27 27,25.56 27,23.786L27,3.214C27,1.44 25.56,0 23.786,0ZM8.357,10.286L8.357,22.5L4.5,22.5L4.5,10.286L8.357,10.286ZM4.5,6.731C4.5,5.831 5.271,5.143 6.429,5.143C7.586,5.143 8.312,5.831 8.357,6.731C8.357,7.631 7.637,8.357 6.429,8.357C5.271,8.357 4.5,7.631 4.5,6.731ZM22.5,22.5L18.643,22.5L18.643,16.071C18.643,14.786 18,13.5 16.393,13.474L16.341,13.474C14.786,13.474 14.143,14.799 14.143,16.071L14.143,22.5L10.286,22.5L10.286,10.286L14.143,10.286L14.143,11.931C14.143,11.931 15.384,10.286 17.878,10.286C20.43,10.286 22.5,12.041 22.5,15.596L22.5,22.5Z" style="fill-rule:nonzero;"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,108 @@
<?php
// URL à scraper (remplacez par l'URL souhaitée)
$url = 'https://www.lemonde.fr/societe/article/2025/07/16/au-c-ur-des-emeutes-de-nouvelle-caledonie-quand-la-mort-de-banane-abattu-par-le-gign-lance-le-siege-de-saint-louis_6621496_3224.html';
// Fonction pour récupérer les données Open Graph
function getOpenGraphData($url) {
$ogData = [
'title' => '',
'description' => '',
'image' => '',
'site_name' => '',
'url' => $url
];
// Configuration du contexte pour éviter les erreurs SSL
$context = stream_context_create([
'http' => [
'method' => 'GET',
'header' => 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'timeout' => 10
],
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false
]
]);
// Récupérer le HTML
$html = @file_get_contents($url, false, $context);
if ($html === false) {
return $ogData;
}
// Parser les meta tags Open Graph
preg_match_all('/<meta\s+property=["\']og:([^"\']+)["\']\s+content=["\']([^"\']+)["\']/i', $html, $matches);
if (!empty($matches[1])) {
foreach ($matches[1] as $index => $property) {
$content = $matches[2][$index];
switch ($property) {
case 'title':
$ogData['title'] = htmlspecialchars($content);
break;
case 'description':
$ogData['description'] = htmlspecialchars($content);
break;
case 'image':
$ogData['image'] = $content;
break;
case 'site_name':
$ogData['site_name'] = htmlspecialchars($content);
break;
}
}
}
// Fallback: si pas de og:title, utiliser <title>
if (empty($ogData['title'])) {
preg_match('/<title>([^<]+)<\/title>/i', $html, $titleMatch);
if (!empty($titleMatch[1])) {
$ogData['title'] = htmlspecialchars($titleMatch[1]);
}
}
// Fallback: si pas de site_name, utiliser le domaine
if (empty($ogData['site_name'])) {
$parsed = parse_url($url);
$ogData['site_name'] = $parsed['host'] ?? '';
}
return $ogData;
}
$ogData = getOpenGraphData($url);
// Toujours utiliser le domaine de l'URL pour site_name
$parsed = parse_url($url);
$ogData['site_name'] = $parsed['host'] ?? '';
?>
<div class="card--open-graph">
<?php if (!empty($ogData['image'])): ?>
<figure>
<img src="<?= $ogData['image'] ?>" alt="<?= $ogData['title'] ?>">
</figure>
<?php endif; ?>
<div class="content">
<?php if (!empty($ogData['site_name'])): ?>
<span class="site-name"><?= $ogData['site_name'] ?></span>
<?php endif; ?>
<?php if (!empty($ogData['title'])): ?>
<h3 class="title">
<a href="<?= $ogData['url'] ?>" target="_blank">
<?= $ogData['title'] ?>
</a>
</h3>
<?php endif; ?>
<?php if (!empty($ogData['description'])): ?>
<p class="description"><?= $ogData['description'] ?></p>
<?php endif; ?>
</div>
<a class="link-block" href="<?= $ogData['url'] ?>" target="_blank"></a>
</div>

View file

@ -31,7 +31,7 @@
</div>
<input type="checkbox" id="share-banner__desktop">
<div class="modal--share"><?php snippet('modal-share') ?></div>
<?php snippet('modal-share') ?>
</div>
@ -60,7 +60,6 @@
<li><a href="#" target="_blank">Occupation</a></li>
<li><a href="#" target="_blank">Colonialité</a></li>
<li><a href="#" target="_blank">Forces armées</a></li>
<li><a href="#" target="_blank">Mot-clé</a></li>
<li><a href="#" target="_blank">Colonialité</a></li>
</ul>
@ -115,12 +114,21 @@
<h3 class="section__title">Impacts</h3>
<div class="card--impact" data-impact-type="media">
<p class="type">Médiatique</p>
<p class="tag">Médiatique</p>
<div class="content">
<p>12 articles et reprises</p>
<p>1.5M de vues cumulées</p>
</div>
<details class="open-graph__details">
<summary><p class="summary-inner">Détails <span class="arrow-details"><?= svg('assets/icons/arrow-details.svg') ?></span><p></summary>
<div class="open-graph__inner">
<?php snippet('card-open-graph') ?>
</div>
</details>
</div>
<div class="card--impact" data-impact-type="judiciaire">
<p class="type">Judiciaire</p>
<p class="tag">Judiciaire</p>
<p class="date">12 Dec 2025</p>
<div class="content">
<p >La justice israélienne déclare ouvrir une enquête sur “les circonstances de la mort de Nidal et Khaled Amirah”.
@ -129,7 +137,7 @@
</div>
<div class="card--impact" data-impact-type="judiciaire">
<p class="type">Judiciaire</p>
<p class="tag">Judiciaire</p>
<p class="date">12 Dec 2025</p>
<div class="content">
<p >La justice israélienne déclare ouvrir une enquête sur “les circonstances de la mort de Nidal et Khaled Amirah”
@ -139,7 +147,7 @@
</div>
<div class="card--impact" data-impact-type="public">
<p class="type">Judiciaire</p>
<p class="tag">Judiciaire</p>
<p class="date">12 Dec 2025</p>
<div class="content">
<p>Index présente une série denquêtes récentes au Festival du Réel 2025. <a class="see-more" href="#">Voir plus</a>
@ -159,7 +167,7 @@
<div class="content">
<h4 class="title"><a href="/page-enquete" target="_blank">Lhomicide de Nahel Merzouk</a></h4>
<time datetime="2024-06-27">27 Jun 2024</time>
<ul class="keywords keywords--small">
<ul class="keywords">
<li><a href="#" target="_blank">Occupation</a></li>
<li><a href="#" target="_blank">Colonialité</a></li>
<li><a href="#" target="_blank">Forces armées</a></li>
@ -176,7 +184,7 @@
<div class="content">
<h4 class="title"><a href="/page-enquete" target="_blank">La mort par noyade de Jumaa al-Hasan</a></h4>
<time datetime="2024-06-27">27 Jun 2024</time>
<ul class="keywords keywords--small">
<ul class="keywords">
<li><a href="#" target="_blank">Occupation</a></li>
<li><a href="#" target="_blank">Colonialité</a></li>
<li><a href="#" target="_blank">Forces armées</a></li>
@ -193,7 +201,7 @@
<div class="content">
<h4 class="title"><a href="/page-enquete" target="_blank">Trois morts a Saint-Louis, Kanaky/Nouvelle-Caledonie</a></h4>
<time datetime="2024-06-27">27 Jun 2024</time>
<ul class="keywords keywords--small">
<ul class="keywords">
<li><a href="#" target="_blank">Occupation</a></li>
<li><a href="#" target="_blank">Colonialité</a></li>
<li><a href="#" target="_blank">Forces armées</a></li>