diff --git a/.gitignore b/.gitignore index 510df57..7f2fa28 100644 --- a/.gitignore +++ b/.gitignore @@ -49,6 +49,12 @@ Icon /site/config/.license +# Host-specific config (credentials) +# --------------- + +/site/config/config.index.ngo.php +/site/config/config.localhost.php + # Content # --------------- diff --git a/assets/css/base/_body.scss b/assets/css/base/_body.scss index 4bfe9c1..55c2bff 100644 --- a/assets/css/base/_body.scss +++ b/assets/css/base/_body.scss @@ -1,72 +1,74 @@ * { - margin: 0; - padding: 0; + margin: 0; + padding: 0; - box-sizing: border-box; - -webkit-font-smoothing: antialiased; - -moz-font-smoothing: antialiased; - -o-font-smoothing: antialiased; + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-font-smoothing: antialiased; + -o-font-smoothing: antialiased; - scroll-behavior: smooth; + scroll-behavior: smooth; } a { - color: currentColor; + color: currentColor; } -button{ - background: none; - outline: none; - border: none; - color: var(--color-txt); +button { + background: none; + outline: none; + border: none; + color: var(--color-txt); } -iframe{ - border: none; +iframe { + border: none; } -body{ - font-family: var(--font); - line-height: var(--leading-normal); - font-size: var(--fs-normal); +body { + font-family: var(--font); + line-height: var(--leading-normal); + font-size: var(--fs-normal); - color: var(--color-txt); - background-color: var(--color-bg); + color: var(--color-txt); + background-color: var(--color-bg); } -img{ - max-width: 100%; +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); - // } +.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); + // } } -.swiper-button-next, .swiper-button-prev, -body, #site-header, #site-footer{ - transition: background-color 0.3s ease, color 0.3s ease; +.swiper-button-next, +.swiper-button-prev, +body, +#site-header, +#site-footer { + transition: background-color 0.3s ease, color 0.3s ease; } -@mixin grid-content(){ - display: grid; - grid-gap: var(--padding-inner); - grid-template-columns: 2fr 3fr; - position: relative; +@mixin grid-content() { + display: grid; + grid-gap: var(--padding-inner); + grid-template-columns: 2fr 3fr; + position: relative; } - -@mixin hide-scroll(){ - scrollbar-width: none; - -ms-overflow-style: none; - &::-webkit-scrollbar { +@mixin hide-scroll() { + scrollbar-width: none; + -ms-overflow-style: none; + &::-webkit-scrollbar { display: none; - } + } } @mixin clamp($lines) { @@ -76,56 +78,60 @@ body, #site-header, #site-footer{ overflow: hidden; } -@mixin hover-card-line(){ - border-bottom: var(--border-light); - &:first-of-type{ - border-top: var(--border-light); - } - position: relative; - &::before{ - content: ''; - width: 100%; - border-top: 1px solid transparent; - position: absolute; - top: -1px; - left: 0; - } +@mixin hover-card-line() { + border-bottom: var(--border-light); + &:first-of-type { + border-top: var(--border-light); + } + position: relative; + &::before { + content: ""; + width: 100%; + border-top: 1px solid transparent; + position: absolute; + top: -1px; + left: 0; + } - &:hover{ - background-color: var(--grey-950); + &:not([data-impact-type="media"]) { + &:hover { + background-color: var(--grey-950); + border-color: var(--color-txt); + &::before { border-color: var(--color-txt); - &::before{ - border-color: var(--color-txt); - } - + } } + } } - -@mixin pin(){ - .pin{ - z-index: 90; - width: 18px; - height: 18px; - transform: rotate(45deg); - transform-origin: center; - svg{ - width: 100%; - height: 100%; - fill: var(--color-txt); - } +@mixin pin() { + .pin { + z-index: 90; + width: 18px; + height: 18px; + transform: rotate(45deg); + transform-origin: center; + svg { + width: 100%; + height: 100%; + fill: var(--color-txt); } + } } - +@mixin icon($size) { + .icon { + display: flex; + width: $size; + height: $size; + svg { + width: $size; + height: $size; + } + } +} body.menu-open, -body.is-hidden{ - overflow-y: hidden; - main, footer, #nav-highlight, .btn--back-to-top{ - transition: opacity .3s ease-in; - opacity: 0.1; - } +body.is-hidden { + overflow-y: hidden; } - - diff --git a/assets/css/base/_var.scss b/assets/css/base/_var.scss index e2f35ad..1ab0960 100644 --- a/assets/css/base/_var.scss +++ b/assets/css/base/_var.scss @@ -18,6 +18,7 @@ --max-w-content: 700px; --max-w-cards: 940px; + --max-w-site: 1600px; --z-header: 2000; --panel-w: 310px; @@ -29,7 +30,7 @@ --leading-tight: 1.05; --leading-normal: 1.3; - --leading-title: 1.1; + --leading-title: 1.2; // --leading-relaxed: 1.4; // --leading-loose: 1.8; @@ -79,15 +80,18 @@ --h-block: 30px; --curve: cubic-bezier(0.175, 0.885, 0.32, 1.275); + --transition-scroll: .5s ease-in-out; + + } @media #{$small}{ :root { - --fs-xsmall: 13px; - --fs-small: 16px; - --fs-normal: 20px; - --fs-text: 20px; + --fs-xsmall: 12px; + --fs-small: 14px; + --fs-normal: 18px; + --fs-text: 18px; --fs-medium: 24px; --fs-big: 34px; @@ -112,6 +116,8 @@ --color-txt: #161616; --color-txt-light: var(--grey-400); + --border-light: 1px solid var(--grey-800); + --color-accent: #ff00ff; --color-accent-50: #ffe9ff; --color-accent-100: #fdd8fd; diff --git a/assets/css/components/_bottom-bar.scss b/assets/css/components/_bottom-bar.scss new file mode 100644 index 0000000..e481f60 --- /dev/null +++ b/assets/css/components/_bottom-bar.scss @@ -0,0 +1,112 @@ +#bottom-bar { + position: fixed; + left: 0; + bottom: calc(var(--header-h) * -0.75); + &.is-visible { + bottom: 0px; + } + + z-index: calc(var(--z-header) - 10); + height: calc(var(--header-h) * 0.75); + width: 100vw; + background-color: var(--color-bg); + + padding-left: var(--padding-body); + padding-right: var(--padding-body); + + transition: bottom var(--transition-scroll); + + .progress-container { + position: absolute; + top: 0; + left: 0; + height: 2px; + width: 100vw; + background-color: var(--grey-800); + + .progress-bar { + height: 2px; + background-color: var(--color-txt); + width: 40%; + } + } + + .bottom-bar__inner { + height: calc(var(--header-h) * 0.75); + display: flex; + justify-content: flex-end; + align-items: center; + gap: var(--padding-inner); + } + + .btn--back-to-top { + @include icon(20px); + position: relative; + top: -3px; + width: 100px; + + a { + justify-content: flex-end; + } + + .icon { + transform: rotate(-90deg); + transform-origin: center; + svg { + fill: var(--color-txt); + } + } + } + + .title-group { + font-size: var(--fs-small); + display: flex; + color: var(--color-txt-light); + flex-grow: 1; + width: 100%; + padding-top: 5px; + + min-width: 0; + + .title-type { + text-transform: uppercase; + &::after { + content: "/"; + padding-left: 1ch; + padding-right: 1ch; + } + } + + .title { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + } + + @media #{$small} { + // display: flex; + // align-items: center; + // justify-content: center; + .bottom-bar__inner { + height: calc(var(--header-h) * 0.75); + justify-content: center; + align-items: center; + } + + .btn--download, + .btn--back-to-top { + display: none; + } + } + + @media #{$x-small} { + display: flex; + align-items: center; + justify-content: center; + .title-group { + display: none; + } + } +} diff --git a/assets/css/components/_buttons.scss b/assets/css/components/_buttons.scss index 4738fd3..0395f45 100644 --- a/assets/css/components/_buttons.scss +++ b/assets/css/components/_buttons.scss @@ -23,7 +23,7 @@ button:disabled{ } -.soutenir{ +.support{ a{ color: var(--color-accent); &:hover{ @@ -92,26 +92,22 @@ button:disabled{ a{ color: var(--color-bg); } svg{ fill: var(--color-bg); } } - -.btn--bold, -.btn--bold-inline{ - display: block; + + +.btn--simple{ height: calc(var(--h-block)*1); - border: var(--border); - border-radius: var(--radius-btn); - font-size: var(--fs-xsmall); + font-size: var(--fs-small); font-weight: 500; text-transform: uppercase; line-height: 1; - overflow: hidden; white-space: nowrap; - svg{ - width: 18px; - height: 18px; + @include icon(20px); + .icon{ position: relative; - top: -1px; + top: -2px; } - a{ + + a{ display: flex; align-items: center; justify-content: center; @@ -120,6 +116,7 @@ button:disabled{ height: 100%; padding: 0 2ch; padding-top: 4px; + white-space: nowrap; } &.no-link{ display: flex; @@ -130,6 +127,45 @@ button:disabled{ padding-top: 4px; } +} + +.btn--bold{ + display: block; + height: calc(var(--h-block)*1); + border: var(--border); + border-radius: var(--radius-btn); + font-size: var(--fs-small); + // font-weight: 500; + // text-transform: uppercase; + line-height: 1; + overflow: hidden; + white-space: nowrap; + @include icon(12px); + svg{ + position: relative; + top: -1px; + } + a{ + display: flex; + align-items: center; + justify-content: center; + gap: 1ch; + width: 100%; + height: 100%; + padding: 0 1.25ch; + padding-top: 4px; + } + &.no-link{ + display: flex; + align-items: center; + justify-content: center; + gap: 1ch; + padding: 0 1.25ch; + padding-top: 4px; + + } + + } @@ -151,9 +187,98 @@ button:disabled{ } -.btn--bold-inline{ +.btn--see-more{ + + margin-top: calc(var(--spacing)*1); + margin-inline: auto; + + display: block; + height: calc(var(--h-block)*1); + border: 1px solid var(--color-txt-light); + border-radius: var(--radius-btn); + font-size: var(--fs-small); + + line-height: 1; + overflow: hidden; + white-space: nowrap; + + color: var(--color-txt-light); background-color: var(--color-bg); - svg{ fill: var(--color-txt); } + + + @include icon(12px); + .icon{ + position: relative; + top: -2px; + + } + svg{ +fill: var(--color-txt-light); + } + a{ + display: flex; + align-items: center; + justify-content: center; + gap: 1ch; + width: 100%; + height: 100%; + padding: 0 1.25ch; + padding-top: 4px; + font-size: var(--fs-small); + } + + + + + &:hover{ + background-color: var(--grey-950); + color: var(--grey-100); + border-color: var(--grey-100); + a{ + background-color: var(--grey-950); + color: var(--grey-100); + } + svg{ fill: var(--grey-100); } + } + +} + + +.btn--home{ + + display: block; + height: calc(var(--h-block)*1); + border: var(--border); + border-radius: var(--radius-btn); + font-size: var(--fs-small); + + line-height: 1; + overflow: hidden; + white-space: nowrap; + + background-color: var(--color-bg); + font-weight: 500; + + + @include icon(12px); + .icon{ + position: relative; + top: -2px; + } + a{ + display: flex; + align-items: center; + justify-content: center; + gap: 1ch; + width: 100%; + height: 100%; + padding: 0 1.25ch; + padding-top: 4px; + } + + + + &:hover{ background-color: var(--grey-950); color: var(--grey-100); @@ -193,16 +318,16 @@ button:disabled{ } @media #{$small}{ svg{ - width: 11px; - height: 11px; + width: 12px; + height: 12px; } } @media #{$x-small}{ right: calc(var(--padding-inner)*0.5); bottom: calc(var(--padding-inner)*0.25); svg{ - width: 11px; - height: 11px; + width: 12px; + height: 12px; } } } @@ -228,41 +353,88 @@ button:disabled{ -.btn--back-to-top{ - display: flex; - border-color: var(--color-txt); +#btn--back-to-top{ + width: fit-content; - margin: var(--spacing) auto; - font-size: var(--fs-xsmall); - @media #{$small}{ - margin-bottom: calc(var(--spacing)*2); + margin-bottom: var(--spacing); + margin-left: auto; + margin-right: var(--padding-body); + + + + a{ + display: flex; + align-items: center; + gap: 1ch; + text-decoration: none; + } + + .text{ + font-size: var(--fs-small); + padding-top: 2px; } .icon{ - width: 12px; - height: 12px; + flex-shrink: 0; + --size: 26px; + border: 1px solid var(--color-txt); + background-color: var(--color-bg); + border-radius: 50%; + width: var(--size); + height: var(--size); + transform: rotate(-90deg); - transform-origin: center; - position: relative; - top: -1px; + + display: flex; + align-items: center; + justify-content: center; svg{ width: 12px; height: 12px; + fill: var(--color-txt); } } &:hover{ - background-color: var(--grey-950); - color: var(--grey-100); - border-color: var(--grey-100); - a{ - background-color: var(--grey-950); - color: var(--grey-100); - } - svg{ fill: var(--grey-100); } + opacity: 0.8; } + + + @media #{$x-small}{ + opacity: 0; + transition: opacity .5s ease; + position: fixed; + bottom: calc(var(--padding-body)*1.5); + right: var(--padding-body); + z-index: var(--z-header); + margin-right: 0; + margin-bottom: 0; + + .icon{ + --size: 32px; + border-width: 2px; + svg{ + width: 19px; + height: 19px; + } + } + .text{ + display: none; + } + &.is-visible{ + opacity: 1; + } + } + + } - - +.btn--support{ + color: var(--color-accent); + &:hover{ + color: var(--color-accent); + text-decoration: underline; + text-underline-offset: 2px; + } +} diff --git a/assets/css/components/_card-article-small.scss b/assets/css/components/_card-article-small.scss index e24ea3f..fa8907a 100644 --- a/assets/css/components/_card-article-small.scss +++ b/assets/css/components/_card-article-small.scss @@ -10,33 +10,14 @@ border-top: var(--border-light); } - // &.has-link { - // @include hover-card-line(); - // } + @include figure-16-9(); - figure { - @media #{$x-small} { - margin-left: 0px; - } - } .type { - display: inline-flex; - flex-grow: 0; - height: calc(var(--h-block)*0.75); - border-radius: var(--radius-small); - border: var(--border-medium); - align-items: center; - padding: 5px 1ch 0 1ch; - - font-size: var(--fs-xsmall); - text-transform: uppercase; - font-weight: 500; - color: var(--color-txt-light); margin-bottom: calc(var(--spacing)*0.75); } @@ -92,9 +73,8 @@ .description { font-size: var(--fs-small); @include clamp(2); - // margin-bottom: calc(var(--spacing)*0.75); - margin-top: calc(var(--spacing)*0.25); - display: none; + // margin-top: calc(var(--spacing)*-0.5); + // display: none; } @@ -102,9 +82,7 @@ @include btn--go-to(); @include hover-card-line(); - .keywords { - display: none; - } + @media #{$medium} { .title { @@ -113,24 +91,70 @@ } } - @media #{$x-small} { + @media #{$small} { + row-gap: 0; + display: block; - .content { - display: contents; + .content{ + padding: calc(var(--spacing)*0.5) var(--padding-inner); } - .title { - font-size: var(--fs-small); - padding-top: calc(var(--spacing)*0.25); + .type{ + margin-bottom: calc(var(--spacing)*0.75); } - figure { - grid-row: 1/3; - } + .title{ + margin-bottom: calc(var(--spacing)*0.25); + } - .description { - grid-column: span 2; - } + .details, + .date{ + margin-top: calc(var(--spacing)*0.5); + } + + .btn--go-to{ + bottom: calc(var(--padding-inner) * 0.75); + + right: calc(var(--padding-inner)*0.75); + } + + + + // .content { + // align-self: auto; + // height: 100%; + + // padding: 0; + // padding-bottom: calc(var(--padding-inner)*0.5); + // display: flex; + // flex-direction: column; + + // align-content: center; + + + // } + + // .type{ + // display: none; + // } + + // .title { + // font-size: var(--fs-xsmall); + // padding-top: calc(var(--spacing)*0.5); + // padding-right: 2ch; + // text-wrap: wrap; + // flex-grow: 1; + // } + + // .date{ + // font-size: var(--fs-xsmall); + // } + + // figure { + // grid-row: 1 + // } + + } diff --git a/assets/css/components/_card-article.scss b/assets/css/components/_card-article.scss index 4dc23fa..d188246 100644 --- a/assets/css/components/_card-article.scss +++ b/assets/css/components/_card-article.scss @@ -6,20 +6,29 @@ padding: var(--padding-inner); - - @include figure-16-9(); @include pin(); - & > figure{ + & > figure, + .video-extract{ width: calc(100% + var(--padding-inner)*2); position: relative; left: calc(var(--padding-inner)*-1); top: calc(var(--padding-inner)*-1); + + + } + + .video-extract video{ + width: 100%; + width: 100%; + aspect-ratio: 16/9; + object-fit: cover; + position: relative; + } .content{ - // padding: var(--padding-inner); display: flex; flex-direction: column; } @@ -41,13 +50,13 @@ line-height: var(--leading-title); font-weight: 500; text-transform: uppercase; - text-wrap: balance; + // text-wrap: balance; a{ text-decoration: none;} } .description{ - margin-top: calc(var(--spacing)*0.5); + margin-top: calc(var(--spacing)*1.25); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; @@ -56,14 +65,18 @@ } .dl{ - margin-top: calc(var(--spacing)*0.5); + margin-top: calc(var(--spacing)*0.75); // font-size: var(--fs-small); - border-bottom: var(--border-light); + font-size: var(--fs-small); + flex-grow: 2; .dl__group{ @include grid-content(); border-top: var(--border-light); padding: calc(var(--spacing)*0.5) 0; + &:last-of-type{ + border-bottom: var(--border-light); + } } dt{ @@ -86,12 +99,78 @@ background-color: var(--grey-950); } - .link-block{ - z-index: 2000; + + + .keywords-wrapper{ + padding-top: calc(var(--spacing)*0.75); + z-index: 100; + .keywords li a{ + font-size: var(--fs-xsmall); + } } + + -} \ No newline at end of file +} + + + +[data-template="home"] .pinned-home{ + grid-column: span 2; + + display: grid; + grid-template-columns: 1fr 1fr; + padding: calc(var(--padding-inner)*2); + + + figure, + picture, + .video-extract{ + grid-column: span 2; + display: flex; + + width: calc(100% + var(--padding-inner)*4); + position: relative; + left: calc(var(--padding-inner)*-2); + top: calc(var(--padding-inner)*-2); + } + + + .title{ + grid-column: span 2; + font-size: var(--fs-text); + padding-right: 3ch; + margin-bottom: calc(var(--spacing)*1); + margin-top: calc(var(--spacing)*0.5); + } + + + .description{ + grid-column: 1; + grid-row: 3; + padding-right: 3ch; + display: block; + -webkit-line-clamp: unset; + -webkit-box-orient: unset; + overflow: visible; + font-size: var(--fs-normal); + margin-top: 0px; + } + + dl{ + margin-top: 0px; + grid-column: 2; + grid-row: 3; + } + + .keywords-wrapper{ + grid-column: span 2; + grid-row: 4; + } + + +} diff --git a/assets/css/components/_card-block-small.scss b/assets/css/components/_card-block-small.scss new file mode 100644 index 0000000..4ed81e1 --- /dev/null +++ b/assets/css/components/_card-block-small.scss @@ -0,0 +1,141 @@ +.card--block-small { + border-bottom: var(--border-light); + padding: var(--padding-inner) 0; + padding-bottom: calc(var(--spacing) * 0.75); + + &:first-of-type { + border-top: var(--border-light); + } + + @include grid-content(); + @include hover-card-line(); + + .group-top { + position: relative; + // top: -5px; + } + + @include btn--go-to(); + + .btn--go-to { + top: calc(var(--padding-inner) * 1); + bottom: auto; + } + + .title { + grid-column: 2; + grid-row: 2; + font-size: var(--fs-normal); + line-height: var(--leading-title); + font-weight: 500; + text-transform: uppercase; + margin-right: 4ch; + } + + .date { + font-size: var(--fs-small); + grid-column: 2; + grid-row: 1; + margin-top: 4px; + } + + @media #{$small} { + display: block; + padding-bottom: calc(var(--spacing) * 0.5); + + .btn--go-to { + top: auto; + bottom: calc(var(--padding-inner) * 1); + } + + .group-top { + top: 0px; + margin-bottom: calc(var(--spacing) * 0.5); + } + + .title { + margin-bottom: calc(var(--spacing) * 0.75); + margin-right: 1ch; + } + + .date { + margin-top: 0px; + } + } +} + +.card--block-small { + .card--open-graph { + grid-column: 2; + z-index: 10; + } + + .card--open-graph:not(:last-child) { + margin-bottom: 1rem; + } + + .open-graph__details { + grid-column: 2; + + 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); + } + } + + summary:hover { + color: var(--color-txt); + + .arrow-details svg { + fill: var(--color-txt); + } + } + + &[open] { + .arrow-details svg { + transform: rotate(90deg); + } + } + + summary { + color: var(--color-txt-light); + + .arrow-details svg { + fill: var(--color-txt-light); + } + } + + @media #{$x-small} { + summary { + @include grid-content(); + grid-row-gap: 0; + + .summary-inner { + grid-column: 2; + } + } + + grid-column: 1/3; + } + } +} diff --git a/assets/css/components/_card-impact.scss b/assets/css/components/_card-block.scss similarity index 63% rename from assets/css/components/_card-impact.scss rename to assets/css/components/_card-block.scss index 0994562..d75214f 100644 --- a/assets/css/components/_card-impact.scss +++ b/assets/css/components/_card-block.scss @@ -1,4 +1,4 @@ -.card--impact { +.card--block { container-type: inline-size; container-name: impact; @@ -14,35 +14,61 @@ @include hover-card-line(); - @include figure-3-1(); + @include figure-16-9(); @include pin(); + + + .group-top{ + display: flex; + gap: calc(var(--padding-inner)*0.5); + } + + + .title{ font-size: var(--fs-normal); font-weight: 500; text-transform: uppercase; line-height: var(--leading-title); - padding-top: calc(var(--spacing)*0.5); + padding-top: calc(var(--spacing)*0.75); + padding-bottom: calc(var(--spacing)*1); margin-right: 2ch; } .date{ font-size: var(--fs-small); - margin-top: calc(var(--spacing)*1.5); } .investigations{ text-decoration: none; list-style: none; + // border-top: var(--border-light); + padding-top: calc(var(--spacing)*0.5); + width: 100%; + + z-index: 100; li{ - font-size: var(--fs-small); + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; color: var(--color-txt-light); + font-size: var(--fs-small); a{ text-decoration: none; + color: var(--color-txt-light); } a::before{ content: "↪ " } + &:hover{ + a{ + text-decoration: underline 1px; + text-underline-offset: 2px; + color: var(--color-txt); + } + } } } @@ -69,6 +95,10 @@ top: 3px; } + // .link-block{ + // background-color: rgba(255, 0, 0, 0.781); + // } + @@ -76,7 +106,7 @@ @media #{$small-up}{ -.card--impact, +.card--block, .grid-sizer{ width: calc(50% - 13px); } diff --git a/assets/css/components/_card-impact-small.scss b/assets/css/components/_card-impact-small.scss deleted file mode 100644 index ee668b7..0000000 --- a/assets/css/components/_card-impact-small.scss +++ /dev/null @@ -1,104 +0,0 @@ - -.card--impact-small { - - border-bottom: var(--border-light); - &:first-of-type{ - border-top: var(--border-light); - } - - @include grid-content(); - padding: var(--padding-inner) 0; - - &.has-link { - @include hover-card-line(); - } - - @include btn--go-to(); - - .btn--go-to { - top: calc(var(--padding-inner)*1); - bottom: auto; - } - - .title { - grid-column: 2; - font-size: var(--fs-normal); - font-weight: 500; - text-transform: uppercase; - margin-right: 4ch; - } - - .date{ - font-size: var(--fs-small); - } - - .card--open-graph { - grid-column: 2; - z-index: 10; - } - - .keywords { - grid-column: 2; - z-index: 10; - @media #{$x-small} { display: none; } - - - } - - &:not([data-impact-type="media"]) .content, - .keywords { - @media #{$x-small} { - grid-column: span 2; - } - } - - .category { - width: auto; - justify-self: start; - position: relative; - top: -5px; - } - - &:not([data-impact-type="media"]) { - .content { - padding-right: calc(var(--padding-inner)*2.5); - @media #{$x-small} { - padding-right: 0; - } - } - - } - - - .open-graph__details { - grid-column: 2; - @include details-summary(); - - summary { - color: var(--color-txt-light); - - .arrow-details svg { - fill: var(--color-txt-light); - } - } - - @media #{$x-small} { - summary { - @include grid-content(); - grid-row-gap: 0; - - .summary-inner { - grid-column: 2; - } - } - - grid-column: 1/3; - } - } - - - - -} - - diff --git a/assets/css/components/_card-open-graph.scss b/assets/css/components/_card-open-graph.scss index ff75674..4dc8414 100644 --- a/assets/css/components/_card-open-graph.scss +++ b/assets/css/components/_card-open-graph.scss @@ -2,6 +2,7 @@ container-type: inline-size; container-name: opengraph; + z-index: calc(var(--z-header) - 100); .open-graph__inner{ @include grid-content(); diff --git a/assets/css/components/_card-package.scss b/assets/css/components/_card-package.scss deleted file mode 100644 index 6711032..0000000 --- a/assets/css/components/_card-package.scss +++ /dev/null @@ -1,94 +0,0 @@ -// .card--package { -// position: relative; -// max-width: var(--max-w-cards); -// border: var(--border-light); - -// @include grid-content(); -// @include figure-16-9(); - -// container-type: inline-size; -// container-name: cardpackage; - -// figure { -// border-radius: var(--radius-small); -// background-color: var(--color-accent); - -// img { -// opacity: 0.8; -// filter: grayscale(1); -// } -// } - -// .content { -// display: flex; -// flex-direction: column; -// font-size: var(--fs-small); -// } - -// .title { -// font-weight: 500; -// font-size: var(--fs-normal); -// line-height: var(--leading-title); - -// margin-bottom: 0.75em; -// text-wrap: balance; -// max-width: 42ch; -// text-transform: uppercase; -// padding-top: calc(var(--spacing) * 0.25); -// a { -// text-decoration: none; -// } - -// @media #{$small} { -// font-size: var(--fs-normal); -// } - -// .icon { -// padding-right: 1ch; -// position: relative; -// top: 1px; -// svg { -// height: 15px; -// width: 15px; -// fill: var(--color-txt); -// } -// } -// } - -// .short { -// @include clamp(3); -// flex-grow: 1; -// padding-right: calc(var(--padding-inner) * 2); -// } - -// ul { -// display: flex; -// list-style: none; -// gap: 1ch; -// color: var(--color-txt-light); -// padding-top: calc(var(--spacing) * 0.5); - -// li + li { -// &::before { -// content: "|"; -// padding-right: 1ch; -// } -// } -// @media #{$small} { -// font-size: var(--fs-small); -// } -// } - -// .btn--go-to { -// position: absolute; -// right: calc(var(--padding-inner) * 1); -// bottom: var(--padding-inner); -// } - -// @include btn--go-to(); - -// &:hover { -// background-color: var(--grey-950); -// border-color: var(--color-txt); -// } -// } diff --git a/assets/css/components/_category.scss b/assets/css/components/_category.scss new file mode 100644 index 0000000..b6323dd --- /dev/null +++ b/assets/css/components/_category.scss @@ -0,0 +1,102 @@ +.type { + height: calc(var(--h-block) * 0.75); + // border-radius: calc(var(--h-block)*0.75/2); + border-radius: var(--radius-small); + width: max-content; + + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 1ch; + padding-top: 3px; + + font-size: var(--fs-xsmall); + line-height: 1; + font-weight: 500; + + background-color: var(--color-txt); + color: var(--color-bg); + + overflow: hidden; + white-space: nowrap; +} + +.category { + height: calc(var(--h-block) * 0.75); + border-radius: var(--radius-small); + + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 1ch; + padding-top: 3px; + + font-size: var(--fs-xsmall); + line-height: 1; + font-weight: 500; + + border: var(--border-medium); + background-color: var(--color-bg); + color: var(--color-txt-light); + + overflow: hidden; + white-space: nowrap; +} + +.page__category { + height: calc(var(--h-block) * 1); + border-radius: var(--radius-small); + border: var(--border-medium); + + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 1.5ch; + padding-top: 5px; + + font-size: var(--fs-small); + + background-color: var(--color-bg); + color: var(--color-txt-light); + font-weight: 500; + + overflow: hidden; + white-space: nowrap; + text-transform: uppercase; + + @media #{$small} { + height: calc(var(--h-block) * 0.75); + font-size: var(--fs-xsmall); + padding: 0 1ch; + padding-top: 3px; + } +} + +.page__type { + height: calc(var(--h-block) * 1); + border-radius: var(--radius-small); + margin-left: calc(var(--padding-inner) * 0.25); + + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 1.5ch; + padding-top: 5px; + + font-size: var(--fs-small); + + background-color: var(--color-txt); + color: var(--color-bg); + font-weight: 500; + + overflow: hidden; + white-space: nowrap; + text-transform: uppercase; + + @media #{$small} { + height: calc(var(--h-block) * 0.75); + font-size: var(--fs-xsmall); + padding: 0 1ch; + padding-top: 3px; + } +} diff --git a/assets/css/components/_details-summary.scss b/assets/css/components/_details-summary.scss deleted file mode 100644 index e73d365..0000000 --- a/assets/css/components/_details-summary.scss +++ /dev/null @@ -1,46 +0,0 @@ - - - -@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); - } - - } - - summary:hover{ - color: var(--color-txt); - .arrow-details svg{ - fill: var(--color-txt); - } - } - - &[open]{ - .arrow-details svg{ - transform: rotate(90deg); - } - } -} \ No newline at end of file diff --git a/assets/css/components/_dl-table.scss b/assets/css/components/_dl-table.scss new file mode 100644 index 0000000..a4e458d --- /dev/null +++ b/assets/css/components/_dl-table.scss @@ -0,0 +1,37 @@ + + .dl-table { + margin-top: calc(var(--spacing) * 1.5); + border-bottom: var(--border-light); + max-width: var(--max-w-content); + max-width: var(--max-w-cards); + margin-inline: auto; + font-size: var(--fs-normal); + + @media #{$small} { + font-size: var(--fs-small); + } + + .dl__group { + @include grid-content(); + column-gap: 1ch; + 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; + } + } + + a:hover{ + opacity: 0.8; + } + } diff --git a/assets/css/components/_dropdown.scss b/assets/css/components/_dropdown.scss index 0c813c8..9f7b7eb 100644 --- a/assets/css/components/_dropdown.scss +++ b/assets/css/components/_dropdown.scss @@ -10,7 +10,7 @@ position: absolute; top: 100%; left: 0; - min-width: 180px; + margin-top: var(--padding-inner); background-color: var(--color-bg); border: var(--border); @@ -19,9 +19,9 @@ visibility: hidden; transform: translateY(-4px); transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s; - z-index: 100; + z-index: calc(var(--z-header) - 100); - &::before{ + &::before { content: "◀"; transform: rotate(90deg); font-size: 14px; @@ -29,13 +29,16 @@ top: -13px; left: 16px; } + ul { list-style: none; margin: 0; padding: var(--padding-inner); + min-width: 180px; } - a, button { + a, + button { display: block; width: 100%; padding: 0.75em 1ch; @@ -58,14 +61,15 @@ &--align-right .dropdown__content { left: auto; right: 0; - &::before{ + + &::before { left: auto; right: 16px; } } - &.is-open { + &.is-open { .dropdown__content { opacity: 1; visibility: visible; @@ -73,98 +77,129 @@ } } - // PANEL  - &--position-mobile .dropdown__content { - top: auto; - bottom: calc(var(--h-block) + var(--padding-inner)*2); - left: auto; - right: 0; - margin-top: 0; - margin-left: 4px; - - &::before{ - font-family: Arial; - content: "◀"; - transform: rotate(-90deg); - font-size: 14px; - position: absolute; - top: auto; - bottom: -13px; - left: auto; - right: 10%; - } - } - - - - &--position-mobile.is-open { - .dropdown__content { - transform: translateX(0); - } - } - - - - - @media #{$small-up}{ - &--position-panel .dropdown__content { - top: auto; - bottom: 0; - left: calc(100% + var(--padding-inner)); - margin-top: 0; - margin-left: 4px; - - &::before{ - font-family: Arial; - content: "◀"; - transform: rotate(0deg); - font-size: 14px; - position: absolute; - top: auto; - bottom: 4px; - left: -11px; - } - } - - - - &--position-panel.is-open { - .dropdown__content { - transform: translateX(0); - } - } - + &--position-mobile .dropdown__content { + background-color: red; } + // PANEL + // &--position-mobile .dropdown__content { + // top: auto; + // bottom: calc(var(--h-block) + var(--padding-inner)*2); + // left: auto; + // right: 0; + // margin-top: 0; + // margin-left: 4px; - @media #{$x-small}{ + // &::before{ + // font-family: Arial; + // content: "◀"; + // transform: rotate(-90deg); + // font-size: 14px; + // position: absolute; + // top: auto; + // bottom: -13px; + // left: auto; + // right: 10%; + // } + // } - .dropdown__content{ - width: calc(100vw - var(--padding-body)*2); - .modal--share{ - width: 100%; - } + + + // &--position-mobile.is-open { + // .dropdown__content { + // transform: translateX(0); + // } + // } + + + + + @media #{$small-up} { + &--position-panel .dropdown__content { + top: auto; + bottom: 0; + left: calc(100% + var(--padding-inner)); + margin-top: 0; + margin-left: 4px; + + &::before { + font-family: Arial; + content: "◀"; + transform: rotate(0deg); + font-size: 14px; + position: absolute; + top: auto; + bottom: 4px; + left: -11px; + } + } + + + + &--position-panel.is-open { + .dropdown__content { + transform: translateX(0); + } } - } -} + @media #{$x-small} { - -@media screen and (max-width: 1280px){ - - [data-template="investigations"]{ - .dropdown .dropdown__content { + .dropdown__content { + width: calc(100vw - var(--padding-body)*2); left: auto; right: 0; - &::before{ - left: auto; - right: 16px; - + + .modal--share { + width: 100%; } } + + } } + + + +#bottom-bar { + + + .dropdown .dropdown__content { + top: auto; + bottom: calc(var(--h-block) + var(--padding-inner)*2); + left: auto; + right: 0; + margin-top: 0; + margin-left: 4px; + + &::before { + font-family: Arial; + content: "◀"; + transform: rotate(-90deg); + font-size: 14px; + position: absolute; + top: auto; + bottom: -13px; + left: auto; + right: 10%; + @media #{$x-small} { + left: 20%; + right: auto; + } + + } + + } + + + + .dropdown.is-open { + .dropdown__content { + transform: translateX(0); + } + } +} + diff --git a/assets/css/components/_figures.scss b/assets/css/components/_figures.scss index aed5e44..177e0d3 100644 --- a/assets/css/components/_figures.scss +++ b/assets/css/components/_figures.scss @@ -1,64 +1,23 @@ - -@mixin figure-16-9{ - & > picture, - & > 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; - - } +@mixin figure-16-9 { + & > figure { + aspect-ratio: 16/9; + display: flex; + overflow: hidden; + img, + picture { + width: 100%; + height: 100%; + object-fit: cover; + transition: cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.5s; } + } } - - -@mixin figure-3-1(){ - & > picture, - & > figure{ - aspect-ratio: 3/1; - overflow: hidden; - img{ - width: 100%; - height: 100%; - object-fit: cover; - } - } +figcaption, +.caption { + font-size: var(--fs-small) !important; + color: var(--color-txt-light); + font-weight: 500; + line-height: 1.1; + margin: calc(var(--spacing) * 0.5) 0 !important; } - - - -// @mixin figure-2-1(){ -// & > picture, -// & > figure{ -// aspect-ratio: 2/1; -// overflow: hidden; -// img{ -// width: 100%; -// height: 100%; -// object-fit: cover; -// } -// } -// } - -// @mixin figure-16-9-hover{ -// 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); } -// } -// } \ No newline at end of file diff --git a/assets/css/components/_investigation-hero.scss b/assets/css/components/_investigation-hero.scss new file mode 100644 index 0000000..3230c9f --- /dev/null +++ b/assets/css/components/_investigation-hero.scss @@ -0,0 +1,91 @@ +#investigation__hero { + width: 100%; + max-width: var(--max-w-cards); + margin-inline: auto; + + figcaption { + color: var(--color-txt-light); + font-size: var(--fs-small); + @media #{$x-small} { + font-size: var(--fs-xsmall); + } + padding: calc(var(--spacing) * 0.5) var(--padding-body); + padding-bottom: 0; + text-align: center; + max-width: var(--max-w-content); + margin-inline: auto; + } + + figure { + width: 100%; + position: relative; + img { + width: 100%; + height: auto; + aspect-ratio: 2/1; + object-fit: cover; + } + } + + .player-container { + width: 100%; + position: relative; + aspect-ratio: 2/1; + + .extract, + video { + width: 100%; + height: 100%; + object-fit: cover; + position: relative; + } + + .video-full { + width: 100%; + height: 100%; + iframe { + width: 100%; + height: 100%; + } + display: none; + } + + #hero-play-video { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + text-transform: uppercase; + display: flex; + align-items: center; + justify-content: center; + + .btn--bold { + display: flex; + align-items: center; + justify-content: center; + gap: 1ch; + padding: 0 1ch; + opacity: 0.8; + &:hover { + opacity: 1; + } + } + + .text { + color: black; + font-weight: 500; + line-height: 1; + padding-top: 4px; + } + + svg { + width: 18px; + height: 18px; + fill: black; + opacity: 0.8; + } + } + } +} diff --git a/assets/css/components/_lightbox.scss b/assets/css/components/_lightbox.scss new file mode 100644 index 0000000..d4dcb5b --- /dev/null +++ b/assets/css/components/_lightbox.scss @@ -0,0 +1,81 @@ +#lightbox { + position: fixed; + inset: 0; + z-index: calc(var(--z-header) + 10); + background-color: rgba(0, 0, 0, 0.92); + display: flex; + align-items: center; + justify-content: center; + opacity: 0; + visibility: hidden; + pointer-events: none; + transition: opacity 0.3s ease, visibility 0.3s ease; + + body.lightbox-open & { + opacity: 1; + visibility: visible; + pointer-events: auto; + } +} + +#lightbox-close { + position: absolute; + top: var(--padding-body); + right: var(--padding-body); + background: none; + border: none; + color: var(--color-txt); + cursor: pointer; + padding: 8px; + z-index: 1; + line-height: 0; + + svg { + width: 30px; + fill: var(--color-txt); + transition: fill 0.2s ease; + } + + &:hover svg { + fill: var(--grey-400); + } +} + +#lightbox-swiper { + width: 90vw; + + .swiper-slide { + display: flex; + align-items: center; + justify-content: center; + + figure { + display: flex; + flex-direction: column; + align-items: center; + cursor: default; + + img { + max-width: 90vw; + max-height: calc(90dvh - 100px); + width: auto; + height: auto; + object-fit: contain; + } + + figcaption { + margin-top: calc(var(--spacing) * 0.5); + color: var(--color-txt-light); + font-size: var(--fs-small); + text-align: center; + } + } + } +} + +// Cursor zoom-in sur les figures éligibles — desktop uniquement +@media (min-width: 1080px) { + figure[data-lightbox] { + cursor: zoom-in; + } +} diff --git a/assets/css/components/_list-socials.scss b/assets/css/components/_list-socials.scss index 1a6670f..784108b 100644 --- a/assets/css/components/_list-socials.scss +++ b/assets/css/components/_list-socials.scss @@ -3,65 +3,82 @@ display: flex; justify-content: space-between; align-items: center; - max-width: 400px; + max-width: 350px; a{ display: flex; align-items: center; text-decoration: none; } + + li{ + --size-icon: 20px; + } + + li[data-socials="youtube"]{ + --size-icon: 26px; + } + + .icon{ - width: 20px; - height: 20px; + width: var(--size-icon); + height: var(--size-icon); position: relative; top: -2px; } svg{ display: flex; align-items: center; - width: 20px; - height: 20px; + width: var(--size-icon); + height: var(--size-icon); + fill: var(--color-txt); } - .text{ display: none; } + + + a:hover{ + svg{ + fill: var(--color-txt-light); + } + } } // with text -@media #{$small-up}{ - .footer__socials .list-socials{ +// @media #{$small-up}{ +// .footer__socials .list-socials{ - display: block; +// display: block; - li{ - margin-bottom: calc(var(--spacing)*0.25); - break-inside: avoid; - font-size: var(--fs-small); +// li{ +// margin-bottom: calc(var(--spacing)*0.25); +// break-inside: avoid; +// font-size: var(--fs-small); - } +// } - a{ - gap: 1ch; +// a{ +// gap: 1ch; - height: calc(var(--spacing)*1); - &::after{ - content: '↗'; - color: var(--grey-300); - } +// height: calc(var(--spacing)*1); +// &::after{ +// content: '↗'; +// color: var(--grey-300); +// } - &:hover{ - color: var(--color-accent); - &::after{ - color: var(--color-accent); - opacity: 0.5; - } - } - } - .text{ - display: block; - line-height: 1; - } - } -} +// &:hover{ +// color: var(--color-accent); +// &::after{ +// color: var(--color-accent); +// opacity: 0.5; +// } +// } +// } +// .text{ +// display: block; +// line-height: 1; +// } +// } +// } diff --git a/assets/css/components/_modal-share.scss b/assets/css/components/_modal-share.scss index b28b375..92e97ca 100644 --- a/assets/css/components/_modal-share.scss +++ b/assets/css/components/_modal-share.scss @@ -4,7 +4,7 @@ background-color: var(--color-bg); .title { - font-size: var(--fs-xsmall); + font-size: var(--fs-small); line-height: 1.2; padding: var(--padding-inner); padding-bottom: 0px; @@ -23,7 +23,7 @@ list-style: none; li{ - font-size: var(--fs-xsmall); + font-size: var(--fs-small); border-bottom: var(--border-light); &:first-of-type{ border-top: var(--border-light); @@ -34,7 +34,7 @@ align-items: center; gap: 2ch; text-decoration: none; - font-size: var(--fs-xsmall); + font-size: var(--fs-small); } .icon { width: 16px; diff --git a/assets/css/components/_newsletter-form.scss b/assets/css/components/_newsletter-form.scss new file mode 100644 index 0000000..8861470 --- /dev/null +++ b/assets/css/components/_newsletter-form.scss @@ -0,0 +1,112 @@ +.form__newsletter { +margin-top: calc(var(--spacing)*2); + --size: 24px; + position: relative; + display: flex; + align-items: center; + position: relative; + + max-width: var(--max-w-content); + margin-inline: auto; +} +.form__newsletter input[type=email] { + height: calc(var(--h-block) * 1.5); + width: 100%; + border-radius: calc(var(--h-block) * 0.75); + outline: none; + border: none; + padding: 0 2ch; + font-family: var(--font); + font-size: var(--fs-normal); + z-index: 40; + padding-top: 4px; + border: 1px solid var(--color-txt); + background-color: white; + + font-family: var(--font); + font-size: var(--fs-normal); + font-weight: 500; + color: black; + + &::-moz-placeholder, + &::placeholder { + font-family: var(--font); + font-size: var(--fs-normal); + font-weight: 500; + color: black!important; +} + +} + +.form__newsletter input[type=email]:focus { + outline: 3px solid var(--grey-400); +} +.form__newsletter button[type=submit] { + position: absolute; + right: 2px; + z-index: 100; + --size: calc(var(--h-block)*1.5 - 4px); + font-family: var(--font); + font-size: var(--fs-button-bold); + height: var(--size); + display: flex; + align-items: center; + gap: 0.75ch; + color: var(--color-accent); + font-weight: var(--fw-medium); + text-decoration: none; + cursor: pointer; +} +.form__newsletter button[type=submit] .icon, +.form__newsletter button[type=submit] .txt { + z-index: 10; +} +.form__newsletter button[type=submit] .icon { + width: var(--size); + height: var(--size); + display: flex; + align-items: center; + justify-content: center; + color: var(--color-bg); + text-align: center; +} +.form__newsletter button[type=submit] .icon svg { + fill: var(--color-bg); + width: 80%; +} +.form__newsletter button[type=submit] .txt { + position: relative; + top: 2px; + font-size: var(--fs-normal); + display: none; + padding-left: 1ch; +} +.form__newsletter button[type=submit]::after { + content: ""; + display: block; + background-color: var(--color-accent); + border-radius: calc(var(--size) / 2); + width: var(--size); + height: var(--size); + position: absolute; + right: 0; + z-index: 0; + transition: width 0.2s; +} +.form__newsletter button[type=submit]:hover .txt { + color: var(--color-bg); + display: block; +} +.form__newsletter button[type=submit]:hover::after { + width: 100%; +} + + +[data-template="newsletter"]{ + + .details p{ + font-size: var(--fs-xsmall); + margin-top: calc(var(--spacing)*1); + } + +} \ No newline at end of file diff --git a/assets/css/components/_slider-before-after.scss b/assets/css/components/_slider-before-after.scss index 149bb34..6f86fd3 100644 --- a/assets/css/components/_slider-before-after.scss +++ b/assets/css/components/_slider-before-after.scss @@ -1,86 +1,80 @@ +.slider-before-after { + width: 100%; -.slider-before-after{ + max-width: 700px; + z-index: 300; + display: grid; + place-content: center; + position: relative; + overflow: hidden; + --position: 50%; - width: 100%; + img { + display: block; + max-width: 100%; + } - max-width: 700px; - z-index: 300; - display: grid; - place-content: center; + .image-container { position: relative; - overflow: hidden; - --position: 50%; + width: 100%; + // max-width: 800px; + // max-height: 90vh; + // aspect-ratio: 1/1; + } - img { - display: block; - max-width: 100%; - } + .slider-image { + width: 100%; + height: 100%; + object-fit: cover; + object-position: left; + } + .image-before { + position: absolute; + inset: 0; + width: var(--position); + } - .image-container { - position: relative; - width: 100%; - // max-width: 800px; - // max-height: 90vh; - // aspect-ratio: 1/1; - } - + .slider { + position: absolute; + inset: 0; + cursor: pointer; + opacity: 0; + /* for Firefox */ + width: 100%; + height: 100%; + } - - .slider-image { - width: 100%; - height: 100%; - object-fit: cover; - object-position: left; - } - - .image-before { - position: absolute; - inset: 0; - width: var(--position); - } - - .slider { - position: absolute; - inset: 0; - cursor: pointer; - opacity: 0; - /* for Firefox */ - width: 100%; - height: 100%; - } - - .slider:focus-visible ~ .slider-button { - outline: 5px solid black; - outline-offset: 3px; - } - - .slider-line { - position: absolute; - inset: 0; - width: .2rem; - height: 100%; - background-color: #fff; - /* z-index: 10; */ - left: var(--position); - transform: translateX(-50%); - pointer-events: none; - } - - .slider-button { - position: absolute; - background-color: #fff; - color: black; - padding: .5rem; - border-radius: 100vw; - display: grid; - place-items: center; - top: 50%; - left: var(--position); - transform: translate(-50%, -50%); - pointer-events: none; - /* z-index: 100; */ - box-shadow: 1px 1px 1px hsl(0, 50%, 2%, .5); - } + .slider:focus-visible ~ .slider-button { + outline: 5px solid black; + outline-offset: 3px; + } -} \ No newline at end of file + .slider-line { + position: absolute; + inset: 0; + width: 0.2rem; + height: 100%; + background-color: #fff; + /* z-index: 10; */ + left: var(--position); + transform: translateX(-50%); + pointer-events: none; + } + + .slider-button { + position: absolute; + background-color: #fff; + color: black; + padding: 0.5rem; + border-radius: 100vw; + display: grid; + place-items: center; + top: 50%; + left: var(--position); + transform: translate(-50%, -50%); + pointer-events: none; + /* z-index: 100; */ + box-shadow: 1px 1px 1px hsl(0, 50%, 2%, 0.5); + } +} diff --git a/assets/css/components/_summary-hero.scss b/assets/css/components/_summary-hero.scss deleted file mode 100644 index b7a5168..0000000 --- a/assets/css/components/_summary-hero.scss +++ /dev/null @@ -1,136 +0,0 @@ - #summary__hero{ - width: 100%; - position: relative; - left: 0; - - - figcaption{ - color: var(--color-txt-light); - font-size: var(--fs-small); - @media #{$x-small}{ font-size: var(--fs-xsmall); } - padding: calc(var(--spacing)*0.5) var(--padding-body); - padding-bottom: 0; - - - } - - figure{ - width: 100%; - position: relative; - img{ - width: 100%; - aspect-ratio: 2/1; - object-fit: cover; - } - } - - .swiper-slide{ - position: relative; - } - - .swiper-button-prev, .swiper-button-next{ - --swiper-navigation-sides-offset: 32px; - --swiper-navigation-size: 32px; - - @media #{$x-small}{ - --swiper-navigation-sides-offset: 15px; - --swiper-navigation-size: 15px; - } - opacity: 0.8; - - // Position buttons relative to the image (16/9 aspect ratio) - // Calculate: 50% of image height = 50% * (9/16) of width - // Image is 100vw wide, so center at: (100vw * 9/16) / 2 - top: calc(100vw * 9 / 2 - var(--swiper-navigation-size)*0.5); - margin-top: 0; - - svg{ color: white; } - } - - .swiper-pagination{ - position: static; - margin-top: calc(var(--spacing)*0.5); - padding: 0 var(--padding-body); - text-align: center; - - .swiper-pagination-bullet{ - width: 15px; - height: 4px; - border-radius: 2px; - background: var(--color-txt-light); - // opacity: 0.4; - } - - .swiper-pagination-bullet-active{ - background: var(--color-txt); - opacity: 0.8; - } - } - - - .player-container{ - width: 100%; - position: relative; - aspect-ratio: 2/1; - - .extract, video{ - width: 100%; - height: 100%; - object-fit: cover; - position: relative; - } - - - - .video-full{ - width: 100%; - height: 100%; - iframe{ - width: 100%; - height: 100%; - } - display: none; - } - - #hero-play-video{ - position: absolute; - width: 100%; - height: 100%; - top: 0; - left: 0; - text-transform: uppercase; - display: flex; - align-items: center; - justify-content: center; - - - .btn--bold{ - display: flex; - align-items: center; - justify-content: center; - gap: 1ch; - padding: 0 1ch; - opacity: 0.8; - &:hover{ - opacity: 1; - } - } - - .text{ - color: black; - line-height: 1; - padding-top: 4px; - } - - svg{ - width: 18px; - height: 18px; - fill: black; - opacity: 0.8; - } - } - - } - - - } \ No newline at end of file diff --git a/assets/css/components/_support-bar.scss b/assets/css/components/_support-bar.scss new file mode 100644 index 0000000..29fab46 --- /dev/null +++ b/assets/css/components/_support-bar.scss @@ -0,0 +1,63 @@ +#support-bar { + height: var(--header-h); + background-color: var(--color-accent); + color: var(--color-bg); + padding: 0 var(--padding-body); + + + + .support-bar__container { + max-width: var(--max-w-cards); + margin: 0 auto; + + height: 100%; + display: flex; + + @media #{$small-up} { + + align-items: center; + justify-content: space-between; + gap: 2ch; + } + + @media #{$small} { + flex-direction: column; + font-size: var(--fs-small); + line-height: 1.1; + align-items: flex-start; + justify-content: center; + } + + } + + .baseline { + text-transform: uppercase; + font-weight: 500; + + } + + .btn { + text-transform: uppercase; + color: var(--color-bg); + font-weight: 500; + text-decoration: underline; + text-underline-offset: 2px; + word-wrap: nowrap; + white-space: nowrap; + + &:hover { + opacity: 0.7; + } + } + + + @media #{$small} { + height: auto; + padding: calc(var(--spacing)*0.75) var(--padding-body); + .btn{ + margin-top: calc(var(--spacing)*0.75); + } + } + + +} \ No newline at end of file diff --git a/assets/css/components/_swiper.scss b/assets/css/components/_swiper.scss index d5e709d..72933e8 100644 --- a/assets/css/components/_swiper.scss +++ b/assets/css/components/_swiper.scss @@ -1,49 +1,14 @@ .swiper { - - --slide-padding: 30px; - + width: 100%!important; + min-width: 0; .swiper-button-prev, - .swiper-button-next { - --swiper-navigation-size: 32px; + .swiper-button-next{ color: var(--color-txt); - background-color: var(--color-bg); - height: 100%; - width: var(--slide-padding); - top: 0px!important; - height: calc(100% - var(--spacing)*1); - // background-color: red; - - svg { - width: 14px; + svg { + width: 20px; } - - &.swiper-button-disabled { - opacity: 1; - - svg { - opacity: 0.05; - } - } - } - - .swiper-button-prev { - left: 0px!important; - top: 0px; - justify-content: flex-start; - } - - .swiper-button-next { - right: 0px!important; - top: 0px; - justify-content: flex-end; - - } - - .swiper-slide { - padding-left: var(--slide-padding); - padding-right: var(--slide-padding); } .swiper-pagination { @@ -63,15 +28,28 @@ } } - @media #{$x-small} { - .swiper-button-prev, - .swiper-button-next { - display: none; - } - - .swiper-slide { - padding: 0px; - } + .swiper-wrapper { + height: max-content; + align-items: center; } + + .swiper-slide { + height: auto; + display: flex; + align-items: center; + justify-content: center; + } + + // @media #{$x-small} { + + // .swiper-button-prev, + // .swiper-button-next { + // display: none; + // } + + // .swiper-slide { + // padding: 0px; + // } + // } } \ No newline at end of file diff --git a/assets/css/components/_tags.scss b/assets/css/components/_tags.scss deleted file mode 100644 index 2bdcbf5..0000000 --- a/assets/css/components/_tags.scss +++ /dev/null @@ -1,25 +0,0 @@ -.category{ - height: calc(var(--h-block)*0.75); - // border-radius: calc(var(--h-block)*0.75/2); - border-radius: var(--radius-small); - - display: inline-flex; - align-items: center; - justify-content: center; - padding: 0 1ch; - padding-top: 3px; - - font-size: var(--fs-xsmall); - line-height: 1; - font-weight: 500; - - background-color: var(--color-txt); - color: var(--color-bg); - - overflow: hidden; - white-space: nowrap; - -} - - - diff --git a/assets/css/components/_text.scss b/assets/css/components/_text.scss index e69de29..c143ca8 100644 --- a/assets/css/components/_text.scss +++ b/assets/css/components/_text.scss @@ -0,0 +1,98 @@ +[data-template="package"] .page__content, +.main__single .page__content, +#investigation__content { + font-size: var(--fs-text); + + p, + li, + ul { + font-size: var(--fs-text); + } + + h3, + h4, + h5 { + font-weight: 500; + max-width: var(--max-w-content); + margin-inline: auto; + } + + h3 { + margin-top: calc(var(--spacing) * 4); + margin-bottom: calc(var(--spacing) * 2); + font-size: 1.45em; + text-transform: uppercase; + } + + h4 { + margin-top: calc(var(--spacing) * 3); + margin-bottom: calc(var(--spacing) * 1.5); + font-size: 1.2em; + text-transform: uppercase; + } + + h5 { + margin-top: calc(var(--spacing) * 1.5); + margin-bottom: calc(var(--spacing) * 1); + font-size: 1.2em; + text-decoration: 1px underline var(--grey-600); + text-underline-offset: 5px; + } + + p { + margin: calc(var(--spacing) * 0.75) 0; + } + + ul { + padding-left: 3ch; + + li { + margin: calc(var(--spacing) * 0.5) 0; + } + } + + video, + figure, + img:not(.slider-before-after img), + picture { + width: 100%; + height: auto; + } + + .insert { + max-width: var(--max-w-cards); + margin-inline: auto; + border: 1px solid var(--grey-600); + padding: calc(var(--padding-inner) * 3); + @media #{$small} { + padding: calc(var(--padding-inner) * 1); + } + background-color: var(--grey-800); + + .insert--inner { + max-width: var(--max-w-content); + margin-inline: auto; + } + + h3, + h4, + h5 { + margin-top: 0; + @media #{$small} { + margin-top: calc(var(--spacing) * 0.5); + margin-bottom: calc(var(--spacing) * 0.75); + } + } + } + + & > .insert, + & > .swiper, + & > .slider-before-after, + & > figure { + margin-top: calc(var(--spacing) * 2); + margin-bottom: calc(var(--spacing) * 2); + & + .caption { + margin-top: calc(var(--spacing) * -1.5) !important; + } + } +} diff --git a/assets/css/panel.css b/assets/css/panel.css new file mode 100644 index 0000000..05c98b0 --- /dev/null +++ b/assets/css/panel.css @@ -0,0 +1,68 @@ +/* Executive - Regular */ +@font-face { + font-family: "Executive"; + src: url("../fonts/Executive-55Regular.woff") format("woff"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "Executive"; + src: url("../fonts/Executive-56Italic.woff") format("woff"); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: "Executive"; + src: url("../fonts/Executive-65Medium.woff") format("woff"); + font-weight: 500; + font-style: normal; +} + +@font-face { + font-family: "Executive"; + src: url("../fonts/Executive-66MediumIt.woff") format("woff"); + font-weight: 500; + font-style: italic; +} + +:root { + --font: "Executive", Arial, Helvetica, sans-serif; + --color-green: #00ff00; +} + +body * { + font-family: var(--font); +} + +.k-login-dialog::before { + content: ""; + text-align: center; + height: 7rem; + background-image: url("data:image/svg+xml,%3Csvg%20width%3D%22200px%22%20viewBox%3D%220%200%20162%2029%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20xml%3Aspace%3D%22preserve%22%20xmlns%3Aserif%3D%22http%3A%2F%2Fwww.serif.com%2F%22%20style%3D%22fill%3A%20%23fff%22%3E%3Ctitle%3EIndex.ngo%3C%2Ftitle%3E%3Cg%20transform%3D%22matrix(1.04516%2C0%2C0%2C0.659091%2C57.4839%2C-6.59091)%22%3E%3Crect%20x%3D%22-55%22%20y%3D%2210%22%20width%3D%22155%22%20height%3D%2244%22%20style%3D%22fill%3Anone%3B%22%3E%3C%2Frect%3E%3CclipPath%20id%3D%22_clip1%22%3E%3Crect%20x%3D%22-55%22%20y%3D%2210%22%20width%3D%22155%22%20height%3D%2244%22%3E%3C%2Frect%3E%3C%2FclipPath%3E%3Cg%20clip-path%3D%22url(%23_clip1)%22%3E%3Cg%20transform%3D%22matrix(0.95679%2C0%2C0%2C1.51724%2C-55%2C10)%22%3E%3Cpath%20d%3D%22M162%2C29L148.198%2C29L141.174%2C20.767L134.15%2C29L91.184%2C29L91.184%2C0.004L120.653%2C0.004L120.653%2C7.351L102.637%2C7.351L102.637%2C10.867L120.137%2C10.867L120.137%2C18.13L102.637%2C18.13L102.637%2C21.606L120.926%2C21.606L120.926%2C28.951L134.273%2C14.414L120.807%2C0L134.56%2C0L141.388%2C7.767L147.76%2C0L161.201%2C0L148.236%2C13.79L161.996%2C28.997L162%2C29ZM68.58%2C29L54.224%2C29L54.224%2C0.004L68.637%2C0.004C74.672%2C0.004%2078.31%2C0.004%2082.046%2C2.045C86.259%2C4.379%2088.674%2C8.889%2088.674%2C14.417C88.674%2C19.406%2086.862%2C23.405%2083.427%2C25.975C79.463%2C29%2075.345%2C29%2068.58%2C29ZM49.819%2C29L38.775%2C29L31.499%2C19.815C29.746%2C17.735%2028.088%2C15.545%2027.307%2C14.495C27.387%2C15.813%2027.524%2C17.238%2027.524%2C20.499L27.524%2C29L15.965%2C29L15.965%2C0.004L27.009%2C0.004L33.798%2C8.349C36.223%2C11.121%2037.709%2C12.993%2038.393%2C13.881C38.347%2C12.615%2038.26%2C9.911%2038.26%2C6.84L38.26%2C0.004L49.819%2C0.004L49.819%2C29ZM11.559%2C29L0%2C29L0%2C0.004L11.559%2C0.004L11.559%2C29ZM65.784%2C21.818L67.904%2C21.818C70.918%2C21.818%2073.067%2C21.818%2074.728%2C20.531C76.074%2C19.491%2076.845%2C17.308%2076.845%2C14.541C76.845%2C11.526%2076.084%2C9.541%2074.525%2C8.476C72.895%2C7.411%2071.461%2C7.224%2067.578%2C7.224L65.784%2C7.224L65.784%2C21.818Z%22%20style%3D%22fill-rule%3Anonzero%3B%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E"); + background-repeat: no-repeat; + background-position: 50% 50%; + background-size: 100%; + display: grid; + place-items: flex-end; + justify-content: center; + margin: 0 var(--dialog-padding); +} + +.k-login-dialog .k-dialog-body { + padding-top: 0; +} + +.k-button[data-theme^="green"]:not(.k-page-status-icon-option), +.k-button[data-theme^="positive"]:not(.k-page-status-icon-option) { + background-color: var(--color-green); +} +.k-button[data-theme^="green"] .k-icon:not([data-type="status-listed"]), +.k-button[data-theme^="positive"] .k-icon:not([data-type="status-listed"]) { + color: #000; +} + +.k-icon[data-type="status-listed"] { + color: var(--color-green); +} diff --git a/assets/css/partials/_main-layout.scss b/assets/css/partials/_main-layout.scss index 1c7aa30..adeaf22 100644 --- a/assets/css/partials/_main-layout.scss +++ b/assets/css/partials/_main-layout.scss @@ -12,21 +12,22 @@ body{ flex-grow: 1; padding: 0 var(--padding-body); padding-top: var(--header-h); - padding-bottom: calc(var(--spacing)*2); + padding-bottom: calc(var(--spacing)*6); - min-height: 100dvh; - min-height: 100vh; + // min-height: 100dvh; + // min-height: 100vh; - .page__header, .page__content{ max-width: var(--max-w-cards); margin-inline: auto; } + + .page__header{ + max-width: var(--max-w-cards); + margin-inline: auto; + } } - - - } \ No newline at end of file diff --git a/assets/css/partials/_page-aside.scss b/assets/css/partials/_page-aside.scss new file mode 100644 index 0000000..a902d83 --- /dev/null +++ b/assets/css/partials/_page-aside.scss @@ -0,0 +1,20 @@ +.package__section, +.page__aside{ + max-width: var(--max-w-cards); + margin-inline: auto; + padding-top: calc(var(--spacing)*4); + @media #{$small} { + padding-top: calc(var(--spacing)*3); + } + + .section__title, + .aside__title{ + font-weight: 500; + text-transform: uppercase; + margin-bottom: calc(var(--spacing)*1); + font-size: 1.2em; + @media #{$small} { + font-size: var(--fs-normal); + } + } + } diff --git a/assets/css/partials/_page-header.scss b/assets/css/partials/_page-header.scss index 2ceddfb..1a3d498 100644 --- a/assets/css/partials/_page-header.scss +++ b/assets/css/partials/_page-header.scss @@ -1,38 +1,19 @@ -.page__type{ - - height: calc(var(--h-block)*1); - border-radius: var(--radius-small); - border: var(--border-medium); - - display: inline-flex; - align-items: center; - justify-content: center; - padding: 0 1.5ch; - padding-top: 5px; - - font-size: var(--fs-small); - - background-color: var(--color-bg); - color: var(--color-txt-light); - font-weight: 500; - - overflow: hidden; - white-space: nowrap; - text-transform: uppercase; - -} - main .page__header { margin-top: calc(var(--spacing) * 3); margin-bottom: calc(var(--spacing) * 2); + @media #{$small} { - margin-top: calc(var(--spacing) * 2); + margin-top: calc(var(--spacing) * 1); } + .page__type{ +margin-bottom: calc(var(--spacing) * 1); + } + .page__title { max-width: var(--max-w-content); text-transform: uppercase; @@ -40,20 +21,79 @@ main .page__header { font-size: var(--fs-medium); font-weight: 500; line-height: var(--leading-title); - margin-top: calc(var(--spacing) * 1); - margin-bottom: calc(var(--spacing) * 1.5); + margin-bottom: calc(var(--spacing) * 2); + + @media #{$small-up} { text-wrap: balance; + } + + @media #{$small} { + margin-bottom: calc(var(--spacing) * 1); + } } - .description { - font-size: var(--fs-text); - margin-bottom: calc(var(--spacing) * 3); + .page__cover{ + margin-top: calc(var(--spacing) * 2); } - // .description-medium{ - // font-size: var(--fs-medium); - // max-width: 58ch; - // line-height: 1.1; - // } + .date{ + display: block; + margin-top: calc(var(--spacing) * -1.5); + margin-bottom: calc(var(--spacing) * 2); + color: var(--color-txt-light); + @media #{$small} { + margin-bottom: calc(var(--spacing) * 1); + margin-top: calc(var(--spacing) * -0.75); + } + } + + .page__description { + font-size: var(--fs-text); + margin-bottom: calc(var(--spacing) * 3); + @media #{$small} { + margin-bottom: calc(var(--spacing) * 1.5); + } + max-width: var(--max-w-content); + } + + ul.list-nav{ + display: flex; + // justify-content: space-between; + flex-wrap: wrap; + // gap: 3ch; + list-style: none; + margin-top: calc(var(--spacing) * -1.5); + @media #{$small} { + margin-top: calc(var(--spacing) * -0.5); + } + color: var(--color-txt-light); + + li{ + white-space: nowrap; + margin-right: 2ch; + &:last-of-type{ + margin-right: 0; + } + @media #{$small} { + width: 12ch; + } + margin-bottom: calc(var(--spacing) * 0.25); + } + + a{ + text-decoration: none; + text-transform: lowercase; + &::after{ + content: " ↓"; + } + } + li:hover{ + color: var(--color-txt) + } + + } + + + } diff --git a/assets/css/partials/_site-footer.scss b/assets/css/partials/_site-footer.scss index 63dd38c..432957e 100644 --- a/assets/css/partials/_site-footer.scss +++ b/assets/css/partials/_site-footer.scss @@ -1,116 +1,146 @@ -#site-footer{ - - background-color: var(--dark); - padding: calc(var(--padding-body)*2) var(--padding-body); - z-index: 500; - - .site-footer__container{ - max-width: var(--max-w-cards); - margin: 0 auto; - padding: 0 var(--padding-body); - } - - .logo { - margin-top: calc(var(--spacing)*0.25); - margin-bottom: calc(var(--spacing)*1); - svg{ - width: 100px; - } - } - - p{ - margin: calc(var(--spacing)*0.5) 0; - font-size: var(--fs-small); - a{ - text-decoration: none; - &:hover{ - text-decoration: underline; - color: currentColor; - } - } - } - - .p__small{ - font-size: var(--fs-xsmall); - color: var(--grey-600); - } - - .footer__mentions{ - p{ - font-size: var(--fs-xsmall); - color: var(--color-txt) - } - } - - - .footer__socials > p{ - font-weight: 500; - - } - - @media #{$small}{ +#site-footer { - .footer__socials{ - margin-top: calc(var(--spacing)*0.75); - padding-top: calc(var(--spacing)*0.25); - border-top: var(--border-light); + + + background-color: var(--dark); + padding: calc(var(--spacing)*2) var(--padding-body) calc(var(--spacing)*1) var(--padding-body); + z-index: 500; + + .site-footer__container { + max-width: var(--max-w-cards); + margin: 0 auto; + + font-size: var(--fs-small); + } + + + + .logo { + // margin-top: calc(var(--spacing)*0.25); + margin-bottom: calc(var(--spacing)*0.5); + + svg { + width: 100px; + } + } + + .baseline{ + max-width: 40ch; + } + + .list-links { + + + ul { + list-style: none; + + li { + margin-bottom: calc(var(--spacing)*0.25); + } + + a { + text-decoration: none; + } + + li:hover a { + text-decoration: underline; + } + } + + .hightlight { + text-transform: uppercase; + font-weight: 500; + } + } + - .list-socials{ - margin-top: calc(var(--spacing)*0.5); - margin-bottom: calc(var(--spacing)*0.75); + // @media #{$medium} { + + + // } + + @media #{$small-up} { + .site-footer__container { + display: grid; + grid-template-columns: 1fr 350px; + column-gap: calc(var(--padding-inner)*2); + + .logo{ grid-column: span 2;} + .baseline{ + grid-column: 1; + grid-row: 2; + } + .list-links{ + grid-column: 2; + grid-row: 2; + max-width: 350px; + display: flex; + justify-content: space-between; + gap: var(--padding-inner); + + + + li { + // margin-bottom: calc(var(--spacing)*1); + } + } + .socials{ + grid-column: 1; + grid-row: 3; + } + + + .credits { + font-size: var(--fs-xsmall); + grid-column: 1; + grid-row: 4; + margin-top: calc(var(--spacing)*2); + } } + + + + + } - .footer__mentions{ - - border-top: var(--border-light); - padding-top: calc(var(--spacing)*0.25); - p{ - font-size: 12px; - text-align: center; + + @media #{$small} { + + .list-links { + margin-top: calc(var(--spacing)*1); + // li { + // margin-bottom: calc(var(--spacing)*0.25); + // } + + .hightlight { + margin-top: calc(var(--spacing)*0.5); + } } - } - .p__small{ - font-size: 12px; - } - } + - - @media #{$small-up}{ - - .site-footer__container{ - display: grid; - grid-template-columns: 3fr 2fr; - column-gap: calc(var(--spacing)*2); - } - - .footer__newsletter{ - grid-column: 1; - grid-row: 2; - } - - .footer__socials{ - grid-column: 2; - grid-row: 2; - } - - .footer__socials .socials{ - columns: 2; + .socials { margin-top: calc(var(--spacing)*1); } - - .footer__mentions{ - grid-column: span 2; - p{ - margin-top: calc(var(--spacing)*1); + + .credits { + margin-top: calc(var(--spacing)*2); } + + } - } + @media #{$x-small} { + .credits { + text-align: center; + } + } + + } \ No newline at end of file diff --git a/assets/css/partials/_site-header.scss b/assets/css/partials/_site-header.scss index e9c4c11..5235eb8 100644 --- a/assets/css/partials/_site-header.scss +++ b/assets/css/partials/_site-header.scss @@ -1,5 +1,4 @@ #site-header { - z-index: var(--z-header); --gap: 3ch; @@ -12,118 +11,249 @@ background-color: var(--color-bg); padding: 0 var(--padding-body); - box-shadow: -1px 4px 10px 0px var(--color-bg); + box-shadow: -1px 4px 10px 0px var(--color-bg); - .site-header__inner{ + .site-header__inner { width: 100%; height: 100%; - // border-bottom: 1px solid var(--color-bg); - // transition: border-color ease-in .5s; display: flex; align-items: center; justify-content: space-between; - gap: var(--gap); + gap: calc(var(--gap) * 0.25); } - - a{ + a { text-decoration: none; - &:hover{ + &:hover { color: var(--grey-200); } } - #site-title { - flex-grow: 2; - // opacity: 0; - svg{ + position: relative; + top: -3px; + width: 140px; + + svg { width: 100px; - @media #{$small}{ + } + + @media #{$small} { + svg { width: 80px; } + top: -4px; + } + } + + #nav-highlight, + #nav-investigation { + flex-grow: 2; + ul { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + gap: var(--gap); + list-style-type: none; + + li { + white-space: nowrap; + } } } - .header__title-page{ - display: none; - flex-grow: 2; - text-align: left; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - text-transform: uppercase; - font-size: var(--fs-small); - line-height: 2; - - } - - ul{ - list-style-type: none; - display: flex; - align-items: center; - gap: var(--gap); - text-transform: uppercase; + #nav-highlight ul { font-weight: 500; + text-transform: uppercase; + + @media #{$medium} { + font-size: var(--fs-small); + } + @media screen and (max-width: 890px) { + justify-content: flex-end; + padding-right: 2ch; + + li { + display: none; + } + li.support { + display: block; + } + } } + #nav-investigation { + position: absolute; + // transition: top var(--transition-scroll); + top: 10%; + left: 0; + display: flex; + opacity: 0; + // transform: translateY(-10px); + transition: top 0.3s ease; + pointer-events: none; - #theme-toggle{ + min-width: 0; + + .title { + text-transform: uppercase; + font-size: var(--fs-small); + font-weight: 500; + + max-width: 100%; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding-left: 2ch; + padding-right: 2ch; + text-align: center; + color: var(--color-txt-light); + } + + @media #{$medium} { + ul { + font-size: var(--fs-small); + padding-left: 6ch; + padding-right: 6ch; + } + } + + li { + color: var(--color-txt-light); + transition: color 0.3s ease; + } + + li.is-selected { + color: var(--color-txt); + &:hover { + color: var(--color-txt); + pointer-events: none; + a:hover { + color: var(--color-txt); + } + } + } + } + + #theme-toggle { width: var(--h-block); height: var(--h-block); display: flex; align-items: center; justify-content: center; - svg{ + svg { width: 18px; position: relative; top: -2px; - } } - #lang-toggle{ + #lang-toggle { display: flex; - gap: 1ch; - button{ + gap: 0.75ch; + padding-right: 1.5ch; + a { + font-size: var(--fs-small); font-weight: 500; } - button:disabled{ color: var(--color-txt-light); } + button:disabled { + color: var(--color-txt-light); + } } - #menu-toggle{ + #menu-toggle { cursor: pointer; - svg{ + svg { width: 30px; fill: var(--color-txt); } - .close{ display: none; } - - } - - button{ - - &:hover{ - svg{ fill: var(--grey-200)!important; } + .close { + display: none; } } + button { + &:hover { + svg { + fill: var(--grey-200) !important; + } + } + } } +// Animation, change header - -#site-header.is-visible{ - // .site-header__inner{ - // border-color: var(--grey-800); - // } +#site-header.has-nav-investigation { + #nav-highlight { + display: none; + } + #nav-investigation { + position: relative; + opacity: 1; + transform: translateY(0); + top: 0px; + pointer-events: auto; + } } - -@media #{$medium}{ - #nav-highlight{ +@media #{$small-up} { + #site-header #nav-investigation .title { display: none; } } +@media #{$small} { + #site-header #nav-highlight ul { + display: none; + } + #site-header #nav-investigation .title { + display: none; + } + + #site-header.has-nav-investigation { + #nav-investigation { + ul { + display: none; + } + .title { + display: block; + } + } + } +} + +// @media #{$x-small}{ +// #site-header.has-nav-investigation{ +// #nav-investigation{ +// .title{ display: none; } +// } +// } + +// } + +// @media #{$x-small}{ +// [data-template="investigation"] #site-header{ + +// #lang-toggle{ display: none; } +// #theme-toggle{ padding-right: 1ch; } +// #nav-investigation .title{ +// font-size: var(--fs-xsmall); +// } +// } +// } + +// Quand le menu est ouvert : on dimme tout sauf le logo +body.menu-open #site-header { + cursor: pointer; + + #nav-highlight, + #nav-investigation { + opacity: 0.15; + pointer-events: none; + transition: opacity 0.3s ease-in; + } +} diff --git a/assets/css/partials/_site-menu.scss b/assets/css/partials/_site-menu.scss index b1350b7..2735055 100644 --- a/assets/css/partials/_site-menu.scss +++ b/assets/css/partials/_site-menu.scss @@ -19,8 +19,15 @@ right: -100vw; } - display: flex; - flex-direction: column; + + .site-menu__inner{ + height: 100%; + overflow: scroll; + @include hide-scroll(); + + } + // display: flex; + // flex-direction: column; .search-form{ @@ -28,45 +35,73 @@ margin-bottom: calc(var(--spacing)*1); } - nav{ - flex-grow: 1; - ul{ - list-style-type: none; - text-transform: uppercase; - font-weight: 500; - li{ - font-size: var(--fs-normal); - a{ - display: block; - text-decoration: none; - padding: 0.5em 0; - &:hover{ - text-decoration: underline; - } - } - } - .highlight{ - text-transform: uppercase; + + nav{ + margin-top: calc(var(--spacing)*1.5); + ul{ + list-style-type: none; + li{ + margin-bottom: calc(var(--spacing)*0.5); + } + a{ + text-decoration: none; + font-weight: 500; } } + } + #nav-pages{ + li{ + text-transform: uppercase; + } + + } + + .support{ + text-transform: uppercase; + } + + #nav-aside{ + margin-top: calc(var(--spacing)*1); + } + + + .socials{ + margin-top: calc(var(--spacing)*2); padding-bottom: calc(var(--spacing)*0.75); } } +#menu-overlay{ + position: fixed; + inset: 0; + z-index: calc(var(--z-header) - 2); + cursor: pointer; + background-color: rgba(0, 0, 0, 0.4); + opacity: 0; + visibility: hidden; + pointer-events: none; + transition: opacity .3s ease-in, visibility .3s ease-in; +} + body.menu-open{ #site-menu{ right: 0; - } #menu-toggle{ .open{ display: none; } .close{ display: block!important; } } - + + #menu-overlay{ + opacity: 1; + visibility: visible; + pointer-events: auto; + } + } \ No newline at end of file diff --git a/assets/css/style.css b/assets/css/style.css index b9d848f..47854d3 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -11,6 +11,7 @@ --fs-button-bold: 22px; --max-w-content: 700px; --max-w-cards: 940px; + --max-w-site: 1600px; --z-header: 2000; --panel-w: 310px; } @@ -23,7 +24,7 @@ :root { --leading-tight: 1.05; --leading-normal: 1.3; - --leading-title: 1.1; + --leading-title: 1.2; --fw-normal: 400; --fw-medium: 500; --fw-bold: 600; @@ -56,14 +57,15 @@ --spacing: 30px; --h-block: 30px; --curve: cubic-bezier(0.175, 0.885, 0.32, 1.275); + --transition-scroll: .5s ease-in-out; } @media screen and (max-width: 768px) { :root { - --fs-xsmall: 13px; - --fs-small: 16px; - --fs-normal: 20px; - --fs-text: 20px; + --fs-xsmall: 12px; + --fs-small: 14px; + --fs-normal: 18px; + --fs-text: 18px; --fs-medium: 24px; --fs-big: 34px; --header-h: 60px; @@ -81,6 +83,7 @@ --color-bg: #efefef; --color-txt: #161616; --color-txt-light: var(--grey-400); + --border-light: 1px solid var(--grey-800); --color-accent: #ff00ff; --color-accent-50: #ffe9ff; --color-accent-100: #fdd8fd; @@ -135,8 +138,11 @@ img { cursor: pointer; } -.swiper-button-next, .swiper-button-prev, -body, #site-header, #site-footer { +.swiper-button-next, +.swiper-button-prev, +body, +#site-header, +#site-footer { transition: background-color 0.3s ease, color 0.3s ease; } @@ -144,14 +150,6 @@ body.menu-open, body.is-hidden { overflow-y: hidden; } -body.menu-open main, body.menu-open footer, body.menu-open #nav-highlight, body.menu-open .btn--back-to-top, -body.is-hidden main, -body.is-hidden footer, -body.is-hidden #nav-highlight, -body.is-hidden .btn--back-to-top { - transition: opacity 0.3s ease-in; - opacity: 0.1; -} #site-header { z-index: var(--z-header); @@ -171,7 +169,7 @@ body.is-hidden .btn--back-to-top { display: flex; align-items: center; justify-content: space-between; - gap: var(--gap); + gap: calc(var(--gap) * 0.25); } #site-header a { text-decoration: none; @@ -180,7 +178,9 @@ body.is-hidden .btn--back-to-top { color: var(--grey-200); } #site-header #site-title { - flex-grow: 2; + position: relative; + top: -3px; + width: 140px; } #site-header #site-title svg { width: 100px; @@ -189,25 +189,92 @@ body.is-hidden .btn--back-to-top { #site-header #site-title svg { width: 80px; } + #site-header #site-title { + top: -4px; + } } -#site-header .header__title-page { - display: none; +#site-header #nav-highlight, +#site-header #nav-investigation { flex-grow: 2; - text-align: left; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - text-transform: uppercase; - font-size: var(--fs-small); - line-height: 2; } -#site-header ul { - list-style-type: none; +#site-header #nav-highlight ul, +#site-header #nav-investigation ul { + width: 100%; display: flex; align-items: center; + justify-content: center; gap: var(--gap); - text-transform: uppercase; + list-style-type: none; +} +#site-header #nav-highlight ul li, +#site-header #nav-investigation ul li { + white-space: nowrap; +} +#site-header #nav-highlight ul { font-weight: 500; + text-transform: uppercase; +} +@media screen and (max-width: 1080px) { + #site-header #nav-highlight ul { + font-size: var(--fs-small); + } +} +@media screen and (max-width: 890px) { + #site-header #nav-highlight ul { + justify-content: flex-end; + padding-right: 2ch; + } + #site-header #nav-highlight ul li { + display: none; + } + #site-header #nav-highlight ul li.support { + display: block; + } +} +#site-header #nav-investigation { + position: absolute; + top: 10%; + left: 0; + display: flex; + opacity: 0; + transition: top 0.3s ease; + pointer-events: none; + min-width: 0; +} +#site-header #nav-investigation .title { + text-transform: uppercase; + font-size: var(--fs-small); + font-weight: 500; + max-width: 100%; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding-left: 2ch; + padding-right: 2ch; + text-align: center; + color: var(--color-txt-light); +} +@media screen and (max-width: 1080px) { + #site-header #nav-investigation ul { + font-size: var(--fs-small); + padding-left: 6ch; + padding-right: 6ch; + } +} +#site-header #nav-investigation li { + color: var(--color-txt-light); + transition: color 0.3s ease; +} +#site-header #nav-investigation li.is-selected { + color: var(--color-txt); +} +#site-header #nav-investigation li.is-selected:hover { + color: var(--color-txt); + pointer-events: none; +} +#site-header #nav-investigation li.is-selected:hover a:hover { + color: var(--color-txt); } #site-header #theme-toggle { width: var(--h-block); @@ -223,9 +290,11 @@ body.is-hidden .btn--back-to-top { } #site-header #lang-toggle { display: flex; - gap: 1ch; + gap: 0.75ch; + padding-right: 1.5ch; } -#site-header #lang-toggle button { +#site-header #lang-toggle a { + font-size: var(--fs-small); font-weight: 500; } #site-header #lang-toggle button:disabled { @@ -245,11 +314,46 @@ body.is-hidden .btn--back-to-top { fill: var(--grey-200) !important; } -@media screen and (max-width: 1080px) { - #nav-highlight { +#site-header.has-nav-investigation #nav-highlight { + display: none; +} +#site-header.has-nav-investigation #nav-investigation { + position: relative; + opacity: 1; + transform: translateY(0); + top: 0px; + pointer-events: auto; +} + +@media screen and (min-width: 768px) { + #site-header #nav-investigation .title { display: none; } } +@media screen and (max-width: 768px) { + #site-header #nav-highlight ul { + display: none; + } + #site-header #nav-investigation .title { + display: none; + } + #site-header.has-nav-investigation #nav-investigation ul { + display: none; + } + #site-header.has-nav-investigation #nav-investigation .title { + display: block; + } +} +body.menu-open #site-header { + cursor: pointer; +} +body.menu-open #site-header #nav-highlight, +body.menu-open #site-header #nav-investigation { + opacity: 0.15; + pointer-events: none; + transition: opacity 0.3s ease-in; +} + button { cursor: pointer; font-family: var(--font); @@ -275,10 +379,10 @@ button:disabled { cursor: auto; } -.soutenir a { +.support a { color: var(--color-accent); } -.soutenir a:hover { +.support a:hover { color: var(--color-accent) !important; text-decoration: underline !important; } @@ -340,28 +444,28 @@ button:disabled { fill: var(--color-bg); } -.btn--bold, -.btn--bold-inline { - display: block; +.btn--simple { height: calc(var(--h-block) * 1); - border: var(--border); - border-radius: var(--radius-btn); - font-size: var(--fs-xsmall); + font-size: var(--fs-small); font-weight: 500; text-transform: uppercase; line-height: 1; - overflow: hidden; white-space: nowrap; } -.btn--bold svg, -.btn--bold-inline svg { - width: 18px; - height: 18px; - position: relative; - top: -1px; +.btn--simple .icon { + display: flex; + width: 20px; + height: 20px; } -.btn--bold a, -.btn--bold-inline a { +.btn--simple .icon svg { + width: 20px; + height: 20px; +} +.btn--simple .icon { + position: relative; + top: -2px; +} +.btn--simple a { display: flex; align-items: center; justify-content: center; @@ -370,9 +474,9 @@ button:disabled { height: 100%; padding: 0 2ch; padding-top: 4px; + white-space: nowrap; } -.btn--bold.no-link, -.btn--bold-inline.no-link { +.btn--simple.no-link { display: flex; align-items: center; justify-content: center; @@ -381,6 +485,48 @@ button:disabled { padding-top: 4px; } +.btn--bold { + display: block; + height: calc(var(--h-block) * 1); + border: var(--border); + border-radius: var(--radius-btn); + font-size: var(--fs-small); + line-height: 1; + overflow: hidden; + white-space: nowrap; +} +.btn--bold .icon { + display: flex; + width: 12px; + height: 12px; +} +.btn--bold .icon svg { + width: 12px; + height: 12px; +} +.btn--bold svg { + position: relative; + top: -1px; +} +.btn--bold a { + display: flex; + align-items: center; + justify-content: center; + gap: 1ch; + width: 100%; + height: 100%; + padding: 0 1.25ch; + padding-top: 4px; +} +.btn--bold.no-link { + display: flex; + align-items: center; + justify-content: center; + gap: 1ch; + padding: 0 1.25ch; + padding-top: 4px; +} + .btn--bold { background-color: var(--color-txt); color: var(--color-bg); @@ -399,22 +545,105 @@ button:disabled { fill: var(--color-bg); } -.btn--bold-inline { +.btn--see-more { + margin-top: calc(var(--spacing) * 1); + margin-inline: auto; + display: block; + height: calc(var(--h-block) * 1); + border: 1px solid var(--color-txt-light); + border-radius: var(--radius-btn); + font-size: var(--fs-small); + line-height: 1; + overflow: hidden; + white-space: nowrap; + color: var(--color-txt-light); background-color: var(--color-bg); } -.btn--bold-inline svg { - fill: var(--color-txt); +.btn--see-more .icon { + display: flex; + width: 12px; + height: 12px; } -.btn--bold-inline:hover { +.btn--see-more .icon svg { + width: 12px; + height: 12px; +} +.btn--see-more .icon { + position: relative; + top: -2px; +} +.btn--see-more svg { + fill: var(--color-txt-light); +} +.btn--see-more a { + display: flex; + align-items: center; + justify-content: center; + gap: 1ch; + width: 100%; + height: 100%; + padding: 0 1.25ch; + padding-top: 4px; + font-size: var(--fs-small); +} +.btn--see-more:hover { background-color: var(--grey-950); color: var(--grey-100); border-color: var(--grey-100); } -.btn--bold-inline:hover a { +.btn--see-more:hover a { background-color: var(--grey-950); color: var(--grey-100); } -.btn--bold-inline:hover svg { +.btn--see-more:hover svg { + fill: var(--grey-100); +} + +.btn--home { + display: block; + height: calc(var(--h-block) * 1); + border: var(--border); + border-radius: var(--radius-btn); + font-size: var(--fs-small); + line-height: 1; + overflow: hidden; + white-space: nowrap; + background-color: var(--color-bg); + font-weight: 500; +} +.btn--home .icon { + display: flex; + width: 12px; + height: 12px; +} +.btn--home .icon svg { + width: 12px; + height: 12px; +} +.btn--home .icon { + position: relative; + top: -2px; +} +.btn--home a { + display: flex; + align-items: center; + justify-content: center; + gap: 1ch; + width: 100%; + height: 100%; + padding: 0 1.25ch; + padding-top: 4px; +} +.btn--home:hover { + background-color: var(--grey-950); + color: var(--grey-100); + border-color: var(--grey-100); +} +.btn--home:hover a { + background-color: var(--grey-950); + color: var(--grey-100); +} +.btn--home:hover svg { fill: var(--grey-100); } @@ -438,42 +667,97 @@ button:disabled { transform: translateX(0); } } -.btn--back-to-top { - display: flex; - border-color: var(--color-txt); +#btn--back-to-top { width: -moz-fit-content; width: fit-content; - margin: var(--spacing) auto; - font-size: var(--fs-xsmall); + margin-bottom: var(--spacing); + margin-left: auto; + margin-right: var(--padding-body); } -@media screen and (max-width: 768px) { - .btn--back-to-top { - margin-bottom: calc(var(--spacing) * 2); +#btn--back-to-top a { + display: flex; + align-items: center; + gap: 1ch; + text-decoration: none; +} +#btn--back-to-top .text { + font-size: var(--fs-small); + padding-top: 2px; +} +#btn--back-to-top .icon { + flex-shrink: 0; + --size: 26px; + border: 1px solid var(--color-txt); + background-color: var(--color-bg); + border-radius: 50%; + width: var(--size); + height: var(--size); + transform: rotate(-90deg); + display: flex; + align-items: center; + justify-content: center; +} +#btn--back-to-top .icon svg { + width: 12px; + height: 12px; + fill: var(--color-txt); +} +#btn--back-to-top:hover { + opacity: 0.8; +} +@media screen and (max-width: 560px) { + #btn--back-to-top { + opacity: 0; + transition: opacity 0.5s ease; + position: fixed; + bottom: calc(var(--padding-body) * 1.5); + right: var(--padding-body); + z-index: var(--z-header); + margin-right: 0; + margin-bottom: 0; + } + #btn--back-to-top .icon { + --size: 32px; + border-width: 2px; + } + #btn--back-to-top .icon svg { + width: 19px; + height: 19px; + } + #btn--back-to-top .text { + display: none; + } + #btn--back-to-top.is-visible { + opacity: 1; } } -.btn--back-to-top .icon { - width: 12px; - height: 12px; - transform: rotate(-90deg); - transform-origin: center; - position: relative; - top: -1px; + +.btn--support { + color: var(--color-accent); } -.btn--back-to-top .icon svg { - width: 12px; - height: 12px; +.btn--support:hover { + color: var(--color-accent); + text-decoration: underline; + text-underline-offset: 2px; } -.btn--back-to-top:hover { - background-color: var(--grey-950); - color: var(--grey-100); - border-color: var(--grey-100); -} -.btn--back-to-top:hover a { - background-color: var(--grey-950); - color: var(--grey-100); -} -.btn--back-to-top:hover svg { - fill: var(--grey-100); + +.type { + height: calc(var(--h-block) * 0.75); + border-radius: var(--radius-small); + width: -moz-max-content; + width: max-content; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 1ch; + padding-top: 3px; + font-size: var(--fs-xsmall); + line-height: 1; + font-weight: 500; + background-color: var(--color-txt); + color: var(--color-bg); + overflow: hidden; + white-space: nowrap; } .category { @@ -487,12 +771,65 @@ button:disabled { font-size: var(--fs-xsmall); line-height: 1; font-weight: 500; - background-color: var(--color-txt); - color: var(--color-bg); + border: var(--border-medium); + background-color: var(--color-bg); + color: var(--color-txt-light); overflow: hidden; white-space: nowrap; } +.page__category { + height: calc(var(--h-block) * 1); + border-radius: var(--radius-small); + border: var(--border-medium); + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 1.5ch; + padding-top: 5px; + font-size: var(--fs-small); + background-color: var(--color-bg); + color: var(--color-txt-light); + font-weight: 500; + overflow: hidden; + white-space: nowrap; + text-transform: uppercase; +} +@media screen and (max-width: 768px) { + .page__category { + height: calc(var(--h-block) * 0.75); + font-size: var(--fs-xsmall); + padding: 0 1ch; + padding-top: 3px; + } +} + +.page__type { + height: calc(var(--h-block) * 1); + border-radius: var(--radius-small); + margin-left: calc(var(--padding-inner) * 0.25); + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 1.5ch; + padding-top: 5px; + font-size: var(--fs-small); + background-color: var(--color-txt); + color: var(--color-bg); + font-weight: 500; + overflow: hidden; + white-space: nowrap; + text-transform: uppercase; +} +@media screen and (max-width: 768px) { + .page__type { + height: calc(var(--h-block) * 0.75); + font-size: var(--fs-xsmall); + padding: 0 1ch; + padding-top: 3px; + } +} + .keywords { list-style: none; display: flex; @@ -607,95 +944,72 @@ button.sort[data-sort-type=up] .arrow { opacity: 0 !important; } } -#summary__hero { - width: 100%; - position: relative; - left: 0; +figcaption, +.caption { + font-size: var(--fs-small) !important; + color: var(--color-txt-light); + font-weight: 500; + line-height: 1.1; + margin: calc(var(--spacing) * 0.5) 0 !important; } -#summary__hero figcaption { + +#investigation__hero { + width: 100%; + max-width: var(--max-w-cards); + margin-inline: auto; +} +#investigation__hero figcaption { color: var(--color-txt-light); font-size: var(--fs-small); } @media screen and (max-width: 560px) { - #summary__hero figcaption { + #investigation__hero figcaption { font-size: var(--fs-xsmall); } } -#summary__hero figcaption { +#investigation__hero figcaption { padding: calc(var(--spacing) * 0.5) var(--padding-body); padding-bottom: 0; -} -#summary__hero figure { - width: 100%; - position: relative; -} -#summary__hero figure img { - width: 100%; - aspect-ratio: 2/1; - -o-object-fit: cover; - object-fit: cover; -} -#summary__hero .swiper-slide { - position: relative; -} -#summary__hero .swiper-button-prev, #summary__hero .swiper-button-next { - --swiper-navigation-sides-offset: 32px; - --swiper-navigation-size: 32px; -} -@media screen and (max-width: 560px) { - #summary__hero .swiper-button-prev, #summary__hero .swiper-button-next { - --swiper-navigation-sides-offset: 15px; - --swiper-navigation-size: 15px; - } -} -#summary__hero .swiper-button-prev, #summary__hero .swiper-button-next { - opacity: 0.8; - top: calc(450vw - var(--swiper-navigation-size) * 0.5); - margin-top: 0; -} -#summary__hero .swiper-button-prev svg, #summary__hero .swiper-button-next svg { - color: white; -} -#summary__hero .swiper-pagination { - position: static; - margin-top: calc(var(--spacing) * 0.5); - padding: 0 var(--padding-body); text-align: center; + max-width: var(--max-w-content); + margin-inline: auto; } -#summary__hero .swiper-pagination .swiper-pagination-bullet { - width: 15px; - height: 4px; - border-radius: 2px; - background: var(--color-txt-light); +#investigation__hero figure { + width: 100%; + position: relative; } -#summary__hero .swiper-pagination .swiper-pagination-bullet-active { - background: var(--color-txt); - opacity: 0.8; +#investigation__hero figure img { + width: 100%; + height: auto; + aspect-ratio: 2/1; + -o-object-fit: cover; + object-fit: cover; } -#summary__hero .player-container { +#investigation__hero .player-container { width: 100%; position: relative; aspect-ratio: 2/1; } -#summary__hero .player-container .extract, #summary__hero .player-container video { +#investigation__hero .player-container .extract, +#investigation__hero .player-container video { width: 100%; height: 100%; -o-object-fit: cover; object-fit: cover; position: relative; } -#summary__hero .player-container .video-full { +#investigation__hero .player-container .video-full { width: 100%; height: 100%; } -#summary__hero .player-container .video-full iframe { +#investigation__hero .player-container .video-full iframe { width: 100%; height: 100%; } -#summary__hero .player-container .video-full { +#investigation__hero .player-container .video-full { display: none; } -#summary__hero .player-container #hero-play-video { +#investigation__hero .player-container #hero-play-video { position: absolute; width: 100%; height: 100%; @@ -706,7 +1020,7 @@ button.sort[data-sort-type=up] .arrow { align-items: center; justify-content: center; } -#summary__hero .player-container #hero-play-video .btn--bold { +#investigation__hero .player-container #hero-play-video .btn--bold { display: flex; align-items: center; justify-content: center; @@ -714,15 +1028,16 @@ button.sort[data-sort-type=up] .arrow { padding: 0 1ch; opacity: 0.8; } -#summary__hero .player-container #hero-play-video .btn--bold:hover { +#investigation__hero .player-container #hero-play-video .btn--bold:hover { opacity: 1; } -#summary__hero .player-container #hero-play-video .text { +#investigation__hero .player-container #hero-play-video .text { color: black; + font-weight: 500; line-height: 1; padding-top: 4px; } -#summary__hero .player-container #hero-play-video svg { +#investigation__hero .player-container #hero-play-video svg { width: 18px; height: 18px; fill: black; @@ -874,66 +1189,43 @@ button.sort[data-sort-type=up] .arrow { display: flex; justify-content: space-between; align-items: center; - max-width: 400px; + max-width: 350px; } .list-socials a { display: flex; align-items: center; text-decoration: none; } +.list-socials li { + --size-icon: 20px; +} +.list-socials li[data-socials=youtube] { + --size-icon: 26px; +} .list-socials .icon { - width: 20px; - height: 20px; + width: var(--size-icon); + height: var(--size-icon); position: relative; top: -2px; } .list-socials svg { display: flex; align-items: center; - width: 20px; - height: 20px; + width: var(--size-icon); + height: var(--size-icon); + fill: var(--color-txt); } -.list-socials .text { - display: none; +.list-socials a:hover svg { + fill: var(--color-txt-light); } -@media screen and (min-width: 768px) { - .footer__socials .list-socials { - display: block; - } - .footer__socials .list-socials li { - margin-bottom: calc(var(--spacing) * 0.25); - -moz-column-break-inside: avoid; - break-inside: avoid; - font-size: var(--fs-small); - } - .footer__socials .list-socials a { - gap: 1ch; - height: calc(var(--spacing) * 1); - } - .footer__socials .list-socials a::after { - content: "↗"; - color: var(--grey-300); - } - .footer__socials .list-socials a:hover { - color: var(--color-accent); - } - .footer__socials .list-socials a:hover::after { - color: var(--color-accent); - opacity: 0.5; - } - .footer__socials .list-socials .text { - display: block; - line-height: 1; - } -} .modal--share { width: 240px; padding-bottom: var(--padding-inner); background-color: var(--color-bg); } .modal--share .title { - font-size: var(--fs-xsmall); + font-size: var(--fs-small); line-height: 1.2; padding: var(--padding-inner); padding-bottom: 0px; @@ -954,7 +1246,7 @@ button.sort[data-sort-type=up] .arrow { list-style: none; } .modal--share .socials li { - font-size: var(--fs-xsmall); + font-size: var(--fs-small); border-bottom: var(--border-light); } .modal--share .socials li:first-of-type { @@ -965,7 +1257,7 @@ button.sort[data-sort-type=up] .arrow { align-items: center; gap: 2ch; text-decoration: none; - font-size: var(--fs-xsmall); + font-size: var(--fs-small); } .modal--share .socials li .icon { width: 16px; @@ -1076,7 +1368,6 @@ button.sort[data-sort-type=up] .arrow { position: absolute; top: 100%; left: 0; - min-width: 180px; margin-top: var(--padding-inner); background-color: var(--color-bg); border: var(--border); @@ -1085,7 +1376,7 @@ button.sort[data-sort-type=up] .arrow { visibility: hidden; transform: translateY(-4px); transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s; - z-index: 100; + z-index: calc(var(--z-header) - 100); } .dropdown__content::before { content: "◀"; @@ -1099,8 +1390,10 @@ button.sort[data-sort-type=up] .arrow { list-style: none; margin: 0; padding: var(--padding-inner); + min-width: 180px; } -.dropdown__content a, .dropdown__content button { +.dropdown__content a, +.dropdown__content button { display: block; width: 100%; padding: 0.75em 1ch; @@ -1112,7 +1405,8 @@ button.sort[data-sort-type=up] .arrow { border: none; cursor: pointer; } -.dropdown__content a:hover, .dropdown__content button:hover { +.dropdown__content a:hover, +.dropdown__content button:hover { background-color: var(--grey-800); } .dropdown--align-right .dropdown__content { @@ -1129,26 +1423,7 @@ button.sort[data-sort-type=up] .arrow { transform: translateY(0); } .dropdown--position-mobile .dropdown__content { - top: auto; - bottom: calc(var(--h-block) + var(--padding-inner) * 2); - left: auto; - right: 0; - margin-top: 0; - margin-left: 4px; -} -.dropdown--position-mobile .dropdown__content::before { - font-family: Arial; - content: "◀"; - transform: rotate(-90deg); - font-size: 14px; - position: absolute; - top: auto; - bottom: -13px; - left: auto; - right: 10%; -} -.dropdown--position-mobile.is-open .dropdown__content { - transform: translateX(0); + background-color: red; } @media screen and (min-width: 768px) { .dropdown--position-panel .dropdown__content { @@ -1175,22 +1450,203 @@ button.sort[data-sort-type=up] .arrow { @media screen and (max-width: 560px) { .dropdown .dropdown__content { width: calc(100vw - var(--padding-body) * 2); + left: auto; + right: 0; } .dropdown .dropdown__content .modal--share { width: 100%; } } -@media screen and (max-width: 1280px) { - [data-template=investigations] .dropdown .dropdown__content { - left: auto; - right: 0; - } - [data-template=investigations] .dropdown .dropdown__content::before { - left: auto; - right: 16px; +#bottom-bar .dropdown .dropdown__content { + top: auto; + bottom: calc(var(--h-block) + var(--padding-inner) * 2); + left: auto; + right: 0; + margin-top: 0; + margin-left: 4px; +} +#bottom-bar .dropdown .dropdown__content::before { + font-family: Arial; + content: "◀"; + transform: rotate(-90deg); + font-size: 14px; + position: absolute; + top: auto; + bottom: -13px; + left: auto; + right: 10%; +} +@media screen and (max-width: 560px) { + #bottom-bar .dropdown .dropdown__content::before { + left: 20%; + right: auto; } } +#bottom-bar .dropdown.is-open .dropdown__content { + transform: translateX(0); +} + +[data-template=package] .page__content, +.main__single .page__content, +#investigation__content { + font-size: var(--fs-text); +} +[data-template=package] .page__content p, +[data-template=package] .page__content li, +[data-template=package] .page__content ul, +.main__single .page__content p, +.main__single .page__content li, +.main__single .page__content ul, +#investigation__content p, +#investigation__content li, +#investigation__content ul { + font-size: var(--fs-text); +} +[data-template=package] .page__content h3, +[data-template=package] .page__content h4, +[data-template=package] .page__content h5, +.main__single .page__content h3, +.main__single .page__content h4, +.main__single .page__content h5, +#investigation__content h3, +#investigation__content h4, +#investigation__content h5 { + font-weight: 500; + max-width: var(--max-w-content); + margin-inline: auto; +} +[data-template=package] .page__content h3, +.main__single .page__content h3, +#investigation__content h3 { + margin-top: calc(var(--spacing) * 4); + margin-bottom: calc(var(--spacing) * 2); + font-size: 1.45em; + text-transform: uppercase; +} +[data-template=package] .page__content h4, +.main__single .page__content h4, +#investigation__content h4 { + margin-top: calc(var(--spacing) * 3); + margin-bottom: calc(var(--spacing) * 1.5); + font-size: 1.2em; + text-transform: uppercase; +} +[data-template=package] .page__content h5, +.main__single .page__content h5, +#investigation__content h5 { + margin-top: calc(var(--spacing) * 1.5); + margin-bottom: calc(var(--spacing) * 1); + font-size: 1.2em; + -webkit-text-decoration: 1px underline var(--grey-600); + text-decoration: 1px underline var(--grey-600); + text-underline-offset: 5px; +} +[data-template=package] .page__content p, +.main__single .page__content p, +#investigation__content p { + margin: calc(var(--spacing) * 0.75) 0; +} +[data-template=package] .page__content ul, +.main__single .page__content ul, +#investigation__content ul { + padding-left: 3ch; +} +[data-template=package] .page__content ul li, +.main__single .page__content ul li, +#investigation__content ul li { + margin: calc(var(--spacing) * 0.5) 0; +} +[data-template=package] .page__content video, +[data-template=package] .page__content figure, +[data-template=package] .page__content img:not(.slider-before-after img), +[data-template=package] .page__content picture, +.main__single .page__content video, +.main__single .page__content figure, +.main__single .page__content img:not(.slider-before-after img), +.main__single .page__content picture, +#investigation__content video, +#investigation__content figure, +#investigation__content img:not(.slider-before-after img), +#investigation__content picture { + width: 100%; + height: auto; +} +[data-template=package] .page__content .insert, +.main__single .page__content .insert, +#investigation__content .insert { + max-width: var(--max-w-cards); + margin-inline: auto; + border: 1px solid var(--grey-600); + padding: calc(var(--padding-inner) * 3); +} +@media screen and (max-width: 768px) { + [data-template=package] .page__content .insert, + .main__single .page__content .insert, + #investigation__content .insert { + padding: calc(var(--padding-inner) * 1); + } +} +[data-template=package] .page__content .insert, +.main__single .page__content .insert, +#investigation__content .insert { + background-color: var(--grey-800); +} +[data-template=package] .page__content .insert .insert--inner, +.main__single .page__content .insert .insert--inner, +#investigation__content .insert .insert--inner { + max-width: var(--max-w-content); + margin-inline: auto; +} +[data-template=package] .page__content .insert h3, +[data-template=package] .page__content .insert h4, +[data-template=package] .page__content .insert h5, +.main__single .page__content .insert h3, +.main__single .page__content .insert h4, +.main__single .page__content .insert h5, +#investigation__content .insert h3, +#investigation__content .insert h4, +#investigation__content .insert h5 { + margin-top: 0; +} +@media screen and (max-width: 768px) { + [data-template=package] .page__content .insert h3, + [data-template=package] .page__content .insert h4, + [data-template=package] .page__content .insert h5, + .main__single .page__content .insert h3, + .main__single .page__content .insert h4, + .main__single .page__content .insert h5, + #investigation__content .insert h3, + #investigation__content .insert h4, + #investigation__content .insert h5 { + margin-top: calc(var(--spacing) * 0.5); + margin-bottom: calc(var(--spacing) * 0.75); + } +} +[data-template=package] .page__content > .insert, [data-template=package] .page__content > .swiper, [data-template=package] .page__content > .slider-before-after, [data-template=package] .page__content > figure, +.main__single .page__content > .insert, +.main__single .page__content > .swiper, +.main__single .page__content > .slider-before-after, +.main__single .page__content > figure, +#investigation__content > .insert, +#investigation__content > .swiper, +#investigation__content > .slider-before-after, +#investigation__content > figure { + margin-top: calc(var(--spacing) * 2); + margin-bottom: calc(var(--spacing) * 2); +} +[data-template=package] .page__content > .insert + .caption, [data-template=package] .page__content > .swiper + .caption, [data-template=package] .page__content > .slider-before-after + .caption, [data-template=package] .page__content > figure + .caption, +.main__single .page__content > .insert + .caption, +.main__single .page__content > .swiper + .caption, +.main__single .page__content > .slider-before-after + .caption, +.main__single .page__content > figure + .caption, +#investigation__content > .insert + .caption, +#investigation__content > .swiper + .caption, +#investigation__content > .slider-before-after + .caption, +#investigation__content > figure + .caption { + margin-top: calc(var(--spacing) * -1.5) !important; +} + .card--article { border: var(--border-light); position: relative; @@ -1198,12 +1654,13 @@ button.sort[data-sort-type=up] .arrow { flex-direction: column; padding: var(--padding-inner); } -.card--article > picture, .card--article > figure { +.card--article > figure { aspect-ratio: 16/9; display: flex; overflow: hidden; } -.card--article > picture img, .card--article > figure img { +.card--article > figure img, +.card--article > figure picture { width: 100%; height: 100%; -o-object-fit: cover; @@ -1222,12 +1679,21 @@ button.sort[data-sort-type=up] .arrow { height: 100%; fill: var(--color-txt); } -.card--article > figure { +.card--article > figure, +.card--article .video-extract { width: calc(100% + var(--padding-inner) * 2); position: relative; left: calc(var(--padding-inner) * -1); top: calc(var(--padding-inner) * -1); } +.card--article .video-extract video { + width: 100%; + width: 100%; + aspect-ratio: 16/9; + -o-object-fit: cover; + object-fit: cover; + position: relative; +} .card--article .content { display: flex; flex-direction: column; @@ -1248,13 +1714,12 @@ button.sort[data-sort-type=up] .arrow { line-height: var(--leading-title); font-weight: 500; text-transform: uppercase; - text-wrap: balance; } .card--article .title a { text-decoration: none; } .card--article .description { - margin-top: calc(var(--spacing) * 0.5); + margin-top: calc(var(--spacing) * 1.25); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; @@ -1262,9 +1727,9 @@ button.sort[data-sort-type=up] .arrow { font-size: var(--fs-small); } .card--article .dl { - margin-top: calc(var(--spacing) * 0.5); - border-bottom: var(--border-light); + margin-top: calc(var(--spacing) * 0.75); font-size: var(--fs-small); + flex-grow: 2; } .card--article .dl .dl__group { display: grid; @@ -1274,6 +1739,9 @@ button.sort[data-sort-type=up] .arrow { border-top: var(--border-light); padding: calc(var(--spacing) * 0.5) 0; } +.card--article .dl .dl__group:last-of-type { + border-bottom: var(--border-light); +} .card--article .dl dt { color: var(--color-txt-light); padding-right: 1ch; @@ -1288,8 +1756,56 @@ button.sort[data-sort-type=up] .arrow { border-color: var(--color-txt); background-color: var(--grey-950); } -.card--article .link-block { - z-index: 2000; +.card--article .keywords-wrapper { + padding-top: calc(var(--spacing) * 0.75); + z-index: 100; +} +.card--article .keywords-wrapper .keywords li a { + font-size: var(--fs-xsmall); +} + +[data-template=home] .pinned-home { + grid-column: span 2; + display: grid; + grid-template-columns: 1fr 1fr; + padding: calc(var(--padding-inner) * 2); +} +[data-template=home] .pinned-home figure, +[data-template=home] .pinned-home picture, +[data-template=home] .pinned-home .video-extract { + grid-column: span 2; + display: flex; + width: calc(100% + var(--padding-inner) * 4); + position: relative; + left: calc(var(--padding-inner) * -2); + top: calc(var(--padding-inner) * -2); +} +[data-template=home] .pinned-home .title { + grid-column: span 2; + font-size: var(--fs-text); + padding-right: 3ch; + margin-bottom: calc(var(--spacing) * 1); + margin-top: calc(var(--spacing) * 0.5); +} +[data-template=home] .pinned-home .description { + grid-column: 1; + grid-row: 3; + padding-right: 3ch; + display: block; + -webkit-line-clamp: unset; + -webkit-box-orient: unset; + overflow: visible; + font-size: var(--fs-normal); + margin-top: 0px; +} +[data-template=home] .pinned-home dl { + margin-top: 0px; + grid-column: 2; + grid-row: 3; +} +[data-template=home] .pinned-home .keywords-wrapper { + grid-column: span 2; + grid-row: 4; } .card--package, @@ -1305,41 +1821,24 @@ button.sort[data-sort-type=up] .arrow { .card--article-small:first-of-type { border-top: var(--border-light); } -.card--package > picture, .card--package > figure, -.card--article-small > picture, +.card--package > figure, .card--article-small > figure { aspect-ratio: 16/9; display: flex; overflow: hidden; } -.card--package > picture img, .card--package > figure img, -.card--article-small > picture img, -.card--article-small > figure img { +.card--package > figure img, +.card--package > figure picture, +.card--article-small > figure img, +.card--article-small > figure picture { width: 100%; height: 100%; -o-object-fit: cover; object-fit: cover; transition: cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.5s; } -@media screen and (max-width: 560px) { - .card--package figure, - .card--article-small figure { - margin-left: 0px; - } -} .card--package .type, .card--article-small .type { - display: inline-flex; - flex-grow: 0; - height: calc(var(--h-block) * 0.75); - border-radius: var(--radius-small); - border: var(--border-medium); - align-items: center; - padding: 5px 1ch 0 1ch; - font-size: var(--fs-xsmall); - text-transform: uppercase; - font-weight: 500; - color: var(--color-txt-light); margin-bottom: calc(var(--spacing) * 0.75); } .card--package .content, @@ -1396,8 +1895,6 @@ button.sort[data-sort-type=up] .arrow { -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; - margin-top: calc(var(--spacing) * 0.25); - display: none; } .card--package, .card--article-small { @@ -1418,8 +1915,8 @@ button.sort[data-sort-type=up] .arrow { @media screen and (max-width: 768px) { .card--package .btn--go-to svg, .card--article-small .btn--go-to svg { - width: 11px; - height: 11px; + width: 12px; + height: 12px; } } @media screen and (max-width: 560px) { @@ -1430,8 +1927,8 @@ button.sort[data-sort-type=up] .arrow { } .card--package .btn--go-to svg, .card--article-small .btn--go-to svg { - width: 11px; - height: 11px; + width: 12px; + height: 12px; } } .card--package:hover .btn--go-to, @@ -1459,19 +1956,15 @@ button.sort[data-sort-type=up] .arrow { top: -1px; left: 0; } -.card--package:hover, -.card--article-small:hover { +.card--package:not([data-impact-type=media]):hover, +.card--article-small:not([data-impact-type=media]):hover { background-color: var(--grey-950); border-color: var(--color-txt); } -.card--package:hover::before, -.card--article-small:hover::before { +.card--package:not([data-impact-type=media]):hover::before, +.card--article-small:not([data-impact-type=media]):hover::before { border-color: var(--color-txt); } -.card--package .keywords, -.card--article-small .keywords { - display: none; -} @media screen and (max-width: 1080px) { .card--package .title, .card--article-small .title { @@ -1479,27 +1972,38 @@ button.sort[data-sort-type=up] .arrow { margin-bottom: 0; } } -@media screen and (max-width: 560px) { +@media screen and (max-width: 768px) { + .card--package, + .card--article-small { + row-gap: 0; + display: block; + } .card--package .content, .card--article-small .content { - display: contents; + padding: calc(var(--spacing) * 0.5) var(--padding-inner); + } + .card--package .type, + .card--article-small .type { + margin-bottom: calc(var(--spacing) * 0.75); } .card--package .title, .card--article-small .title { - font-size: var(--fs-small); - padding-top: calc(var(--spacing) * 0.25); + margin-bottom: calc(var(--spacing) * 0.25); } - .card--package figure, - .card--article-small figure { - grid-row: 1/3; + .card--package .details, + .card--package .date, + .card--article-small .details, + .card--article-small .date { + margin-top: calc(var(--spacing) * 0.5); } - .card--package .description, - .card--article-small .description { - grid-column: span 2; + .card--package .btn--go-to, + .card--article-small .btn--go-to { + bottom: calc(var(--padding-inner) * 0.75); + right: calc(var(--padding-inner) * 0.75); } } -.card--impact { +.card--block { container-type: inline-size; container-name: impact; border: var(--border-light); @@ -1512,13 +2016,13 @@ button.sort[data-sort-type=up] .arrow { gap: calc(var(--spacing) * 0.25); border-bottom: var(--border-light); } -.card--impact:first-of-type { +.card--block:first-of-type { border-top: var(--border-light); } -.card--impact { +.card--block { position: relative; } -.card--impact::before { +.card--block::before { content: ""; width: 100%; border-top: 1px solid transparent; @@ -1526,110 +2030,130 @@ button.sort[data-sort-type=up] .arrow { top: -1px; left: 0; } -.card--impact:hover { +.card--block:not([data-impact-type=media]):hover { background-color: var(--grey-950); border-color: var(--color-txt); } -.card--impact:hover::before { +.card--block:not([data-impact-type=media]):hover::before { border-color: var(--color-txt); } -.card--impact > picture, .card--impact > figure { - aspect-ratio: 3/1; +.card--block > figure { + aspect-ratio: 16/9; + display: flex; overflow: hidden; } -.card--impact > picture img, .card--impact > figure img { +.card--block > figure img, +.card--block > figure picture { 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--impact .pin { +.card--block .pin { z-index: 90; width: 18px; height: 18px; transform: rotate(45deg); transform-origin: center; } -.card--impact .pin svg { +.card--block .pin svg { width: 100%; height: 100%; fill: var(--color-txt); } -.card--impact .title { +.card--block .group-top { + display: flex; + gap: calc(var(--padding-inner) * 0.5); +} +.card--block .title { font-size: var(--fs-normal); font-weight: 500; text-transform: uppercase; line-height: var(--leading-title); - padding-top: calc(var(--spacing) * 0.5); + padding-top: calc(var(--spacing) * 0.75); + padding-bottom: calc(var(--spacing) * 1); margin-right: 2ch; } -.card--impact .date { +.card--block .date { font-size: var(--fs-small); - margin-top: calc(var(--spacing) * 1.5); } -.card--impact .investigations { +.card--block .investigations { text-decoration: none; list-style: none; + padding-top: calc(var(--spacing) * 0.5); + width: 100%; + z-index: 100; } -.card--impact .investigations li { +.card--block .investigations li { + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: var(--color-txt-light); font-size: var(--fs-small); +} +.card--block .investigations li a { + text-decoration: none; color: var(--color-txt-light); } -.card--impact .investigations li a { - text-decoration: none; -} -.card--impact .investigations li a::before { +.card--block .investigations li a::before { content: "↪ "; } -.card--impact .card--open-graph { +.card--block .investigations li:hover a { + -webkit-text-decoration: underline 1px; + text-decoration: underline 1px; + text-underline-offset: 2px; + color: var(--color-txt); +} +.card--block .card--open-graph { width: 100%; margin: calc(var(--spacing) * 0.5) 0; } -.card--impact .pin { +.card--block .pin { position: absolute; top: var(--padding-inner); right: var(--padding-inner); } -.card--impact > figure { +.card--block > figure { width: calc(100% + var(--padding-inner) * 2); position: relative; left: calc(var(--padding-inner) * -1); top: calc(var(--padding-inner) * -1); } -.card--impact .tag { +.card--block .tag { position: relative; top: 3px; } @media screen and (min-width: 768px) { - .card--impact, + .card--block, .grid-sizer { width: calc(50% - 13px); } } -.card--impact-small { +.card--block-small { border-bottom: var(--border-light); + padding: var(--padding-inner) 0; + padding-bottom: calc(var(--spacing) * 0.75); } -.card--impact-small:first-of-type { +.card--block-small:first-of-type { border-top: var(--border-light); } -.card--impact-small { +.card--block-small { display: grid; grid-gap: var(--padding-inner); grid-template-columns: 2fr 3fr; position: relative; - padding: var(--padding-inner) 0; -} -.card--impact-small.has-link { border-bottom: var(--border-light); } -.card--impact-small.has-link:first-of-type { +.card--block-small:first-of-type { border-top: var(--border-light); } -.card--impact-small.has-link { +.card--block-small { position: relative; } -.card--impact-small.has-link::before { +.card--block-small::before { content: ""; width: 100%; border-top: 1px solid transparent; @@ -1637,103 +2161,107 @@ button.sort[data-sort-type=up] .arrow { top: -1px; left: 0; } -.card--impact-small.has-link:hover { +.card--block-small:not([data-impact-type=media]):hover { background-color: var(--grey-950); border-color: var(--color-txt); } -.card--impact-small.has-link:hover::before { +.card--block-small:not([data-impact-type=media]):hover::before { border-color: var(--color-txt); } -.card--impact-small { +.card--block-small .group-top { position: relative; } -.card--impact-small .btn--go-to { +.card--block-small { + position: relative; +} +.card--block-small .btn--go-to { position: absolute; right: var(--padding-inner); bottom: calc(var(--padding-inner) - 3px); } -.card--impact-small .btn--go-to svg { +.card--block-small .btn--go-to svg { width: 15px; height: 15px; fill: var(--color-txt); } @media screen and (max-width: 768px) { - .card--impact-small .btn--go-to svg { - width: 11px; - height: 11px; + .card--block-small .btn--go-to svg { + width: 12px; + height: 12px; } } @media screen and (max-width: 560px) { - .card--impact-small .btn--go-to { + .card--block-small .btn--go-to { right: calc(var(--padding-inner) * 0.5); bottom: calc(var(--padding-inner) * 0.25); } - .card--impact-small .btn--go-to svg { - width: 11px; - height: 11px; + .card--block-small .btn--go-to svg { + width: 12px; + height: 12px; } } -.card--impact-small:hover .btn--go-to { +.card--block-small:hover .btn--go-to { animation: wiggle-left 0.8s ease-in-out; } -.card--impact-small .btn--go-to { +.card--block-small .btn--go-to { top: calc(var(--padding-inner) * 1); bottom: auto; } -.card--impact-small .title { +.card--block-small .title { grid-column: 2; + grid-row: 2; font-size: var(--fs-normal); + line-height: var(--leading-title); font-weight: 500; text-transform: uppercase; margin-right: 4ch; } -.card--impact-small .date { +.card--block-small .date { font-size: var(--fs-small); + grid-column: 2; + grid-row: 1; + margin-top: 4px; } -.card--impact-small .card--open-graph { +@media screen and (max-width: 768px) { + .card--block-small { + display: block; + padding-bottom: calc(var(--spacing) * 0.5); + } + .card--block-small .btn--go-to { + top: auto; + bottom: calc(var(--padding-inner) * 1); + } + .card--block-small .group-top { + top: 0px; + margin-bottom: calc(var(--spacing) * 0.5); + } + .card--block-small .title { + margin-bottom: calc(var(--spacing) * 0.75); + margin-right: 1ch; + } + .card--block-small .date { + margin-top: 0px; + } +} + +.card--block-small .card--open-graph { grid-column: 2; z-index: 10; } -.card--impact-small .keywords { - grid-column: 2; - z-index: 10; +.card--block-small .card--open-graph:not(:last-child) { + margin-bottom: 1rem; } -@media screen and (max-width: 560px) { - .card--impact-small .keywords { - display: none; - } -} -@media screen and (max-width: 560px) { - .card--impact-small:not([data-impact-type=media]) .content, - .card--impact-small .keywords { - grid-column: span 2; - } -} -.card--impact-small .category { - width: auto; - justify-self: start; - position: relative; - top: -5px; -} -.card--impact-small:not([data-impact-type=media]) .content { - padding-right: calc(var(--padding-inner) * 2.5); -} -@media screen and (max-width: 560px) { - .card--impact-small:not([data-impact-type=media]) .content { - padding-right: 0; - } -} -.card--impact-small .open-graph__details { +.card--block-small .open-graph__details { grid-column: 2; } -.card--impact-small .open-graph__details summary, -.card--impact-small .open-graph__details .summary-inner { +.card--block-small .open-graph__details summary, +.card--block-small .open-graph__details .summary-inner { display: flex; align-items: center; cursor: pointer; gap: 0.5ch; } -.card--impact-small .open-graph__details .arrow-details { +.card--block-small .open-graph__details .arrow-details { line-height: 0; --size: 11px; height: var(--size); @@ -1744,38 +2272,38 @@ button.sort[data-sort-type=up] .arrow { position: relative; top: -2px; } -.card--impact-small .open-graph__details .arrow-details svg { +.card--block-small .open-graph__details .arrow-details svg { transition: transform 0.2s ease-in; width: 100%; fill: var(--color-txt); } -.card--impact-small .open-graph__details summary:hover { +.card--block-small .open-graph__details summary:hover { color: var(--color-txt); } -.card--impact-small .open-graph__details summary:hover .arrow-details svg { +.card--block-small .open-graph__details summary:hover .arrow-details svg { fill: var(--color-txt); } -.card--impact-small .open-graph__details[open] .arrow-details svg { +.card--block-small .open-graph__details[open] .arrow-details svg { transform: rotate(90deg); } -.card--impact-small .open-graph__details summary { +.card--block-small .open-graph__details summary { color: var(--color-txt-light); } -.card--impact-small .open-graph__details summary .arrow-details svg { +.card--block-small .open-graph__details summary .arrow-details svg { fill: var(--color-txt-light); } @media screen and (max-width: 560px) { - .card--impact-small .open-graph__details summary { + .card--block-small .open-graph__details summary { display: grid; grid-gap: var(--padding-inner); grid-template-columns: 2fr 3fr; position: relative; grid-row-gap: 0; } - .card--impact-small .open-graph__details summary .summary-inner { + .card--block-small .open-graph__details summary .summary-inner { grid-column: 2; } - .card--impact-small .open-graph__details { + .card--block-small .open-graph__details { grid-column: 1/3; } } @@ -1783,6 +2311,7 @@ button.sort[data-sort-type=up] .arrow { .card--open-graph { container-type: inline-size; container-name: opengraph; + z-index: calc(var(--z-header) - 100); } .card--open-graph .open-graph__inner { display: grid; @@ -1853,43 +2382,16 @@ button.sort[data-sort-type=up] .arrow { @container opengraph (width < 500px) {} .swiper { - --slide-padding: 30px; + width: 100% !important; + min-width: 0; } .swiper .swiper-button-prev, .swiper .swiper-button-next { - --swiper-navigation-size: 32px; color: var(--color-txt); - background-color: var(--color-bg); - height: 100%; - width: var(--slide-padding); - top: 0px !important; - height: calc(100% - var(--spacing) * 1); } .swiper .swiper-button-prev svg, .swiper .swiper-button-next svg { - width: 14px; -} -.swiper .swiper-button-prev.swiper-button-disabled, -.swiper .swiper-button-next.swiper-button-disabled { - opacity: 1; -} -.swiper .swiper-button-prev.swiper-button-disabled svg, -.swiper .swiper-button-next.swiper-button-disabled svg { - opacity: 0.05; -} -.swiper .swiper-button-prev { - left: 0px !important; - top: 0px; - justify-content: flex-start; -} -.swiper .swiper-button-next { - right: 0px !important; - top: 0px; - justify-content: flex-end; -} -.swiper .swiper-slide { - padding-left: var(--slide-padding); - padding-right: var(--slide-padding); + width: 20px; } .swiper .swiper-pagination { position: relative; @@ -1905,16 +2407,92 @@ button.sort[data-sort-type=up] .arrow { .swiper .swiper-pagination .swiper-pagination-bullet-active { background: var(--color-txt); } -@media screen and (max-width: 560px) { - .swiper .swiper-button-prev, - .swiper .swiper-button-next { - display: none; - } - .swiper .swiper-slide { - padding: 0px; - } +.swiper .swiper-wrapper { + height: -moz-max-content; + height: max-content; + align-items: center; +} +.swiper .swiper-slide { + height: auto; + display: flex; + align-items: center; + justify-content: center; } +#lightbox { + position: fixed; + inset: 0; + z-index: calc(var(--z-header) + 10); + background-color: rgba(0, 0, 0, 0.92); + display: flex; + align-items: center; + justify-content: center; + opacity: 0; + visibility: hidden; + pointer-events: none; + transition: opacity 0.3s ease, visibility 0.3s ease; +} +body.lightbox-open #lightbox { + opacity: 1; + visibility: visible; + pointer-events: auto; +} + +#lightbox-close { + position: absolute; + top: var(--padding-body); + right: var(--padding-body); + background: none; + border: none; + color: var(--color-txt); + cursor: pointer; + padding: 8px; + z-index: 1; + line-height: 0; +} +#lightbox-close svg { + width: 30px; + fill: var(--color-txt); + transition: fill 0.2s ease; +} +#lightbox-close:hover svg { + fill: var(--grey-400); +} + +#lightbox-swiper { + width: 90vw; +} +#lightbox-swiper .swiper-slide { + display: flex; + align-items: center; + justify-content: center; +} +#lightbox-swiper .swiper-slide figure { + display: flex; + flex-direction: column; + align-items: center; + cursor: default; +} +#lightbox-swiper .swiper-slide figure img { + max-width: 90vw; + max-height: calc(90dvh - 100px); + width: auto; + height: auto; + -o-object-fit: contain; + object-fit: contain; +} +#lightbox-swiper .swiper-slide figure figcaption { + margin-top: calc(var(--spacing) * 0.5); + color: var(--color-txt-light); + font-size: var(--fs-small); + text-align: center; +} + +@media (min-width: 1080px) { + figure[data-lightbox] { + cursor: zoom-in; + } +} .slider-before-after { width: 100%; max-width: 700px; @@ -1986,6 +2564,321 @@ button.sort[data-sort-type=up] .arrow { box-shadow: 1px 1px 1px hsla(0, 50%, 2%, 0.5); } +.dl-table { + margin-top: calc(var(--spacing) * 1.5); + border-bottom: var(--border-light); + max-width: var(--max-w-content); + max-width: var(--max-w-cards); + margin-inline: auto; + font-size: var(--fs-normal); +} +@media screen and (max-width: 768px) { + .dl-table { + font-size: var(--fs-small); + } +} +.dl-table .dl__group { + display: grid; + grid-gap: var(--padding-inner); + grid-template-columns: 2fr 3fr; + position: relative; + -moz-column-gap: 1ch; + column-gap: 1ch; + border-top: var(--border-light); + padding: calc(var(--spacing) * 0.5) 0; +} +.dl-table dt { + color: var(--color-txt-light); + padding-right: 1ch; +} +.dl-table ul:not(.keywords) { + list-style: none; +} +.dl-table ul:not(.keywords) li { + padding-bottom: 0.2em; +} +.dl-table a:hover { + opacity: 0.8; +} + +#bottom-bar { + position: fixed; + left: 0; + bottom: calc(var(--header-h) * -0.75); +} +#bottom-bar.is-visible { + bottom: 0px; +} +#bottom-bar { + z-index: calc(var(--z-header) - 10); + height: calc(var(--header-h) * 0.75); + width: 100vw; + background-color: var(--color-bg); + padding-left: var(--padding-body); + padding-right: var(--padding-body); + transition: bottom var(--transition-scroll); +} +#bottom-bar .progress-container { + position: absolute; + top: 0; + left: 0; + height: 2px; + width: 100vw; + background-color: var(--grey-800); +} +#bottom-bar .progress-container .progress-bar { + height: 2px; + background-color: var(--color-txt); + width: 40%; +} +#bottom-bar .bottom-bar__inner { + height: calc(var(--header-h) * 0.75); + display: flex; + justify-content: flex-end; + align-items: center; + gap: var(--padding-inner); +} +#bottom-bar .btn--back-to-top .icon { + display: flex; + width: 20px; + height: 20px; +} +#bottom-bar .btn--back-to-top .icon svg { + width: 20px; + height: 20px; +} +#bottom-bar .btn--back-to-top { + position: relative; + top: -3px; + width: 100px; +} +#bottom-bar .btn--back-to-top a { + justify-content: flex-end; +} +#bottom-bar .btn--back-to-top .icon { + transform: rotate(-90deg); + transform-origin: center; +} +#bottom-bar .btn--back-to-top .icon svg { + fill: var(--color-txt); +} +#bottom-bar .title-group { + font-size: var(--fs-small); + display: flex; + color: var(--color-txt-light); + flex-grow: 1; + width: 100%; + padding-top: 5px; + min-width: 0; +} +#bottom-bar .title-group .title-type { + text-transform: uppercase; +} +#bottom-bar .title-group .title-type::after { + content: "/"; + padding-left: 1ch; + padding-right: 1ch; +} +#bottom-bar .title-group .title { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +@media screen and (max-width: 768px) { + #bottom-bar .bottom-bar__inner { + height: calc(var(--header-h) * 0.75); + justify-content: center; + align-items: center; + } + #bottom-bar .btn--download, + #bottom-bar .btn--back-to-top { + display: none; + } +} +@media screen and (max-width: 560px) { + #bottom-bar { + display: flex; + align-items: center; + justify-content: center; + } + #bottom-bar .title-group { + display: none; + } +} + +.form__newsletter { + margin-top: calc(var(--spacing) * 2); + --size: 24px; + position: relative; + display: flex; + align-items: center; + position: relative; + max-width: var(--max-w-content); + margin-inline: auto; +} + +.form__newsletter input[type=email] { + height: calc(var(--h-block) * 1.5); + width: 100%; + border-radius: calc(var(--h-block) * 0.75); + outline: none; + border: none; + padding: 0 2ch; + font-family: var(--font); + font-size: var(--fs-normal); + z-index: 40; + padding-top: 4px; + border: 1px solid var(--color-txt); + background-color: white; + font-family: var(--font); + font-size: var(--fs-normal); + font-weight: 500; + color: black; +} +.form__newsletter input[type=email]::-moz-placeholder { + font-family: var(--font); + font-size: var(--fs-normal); + font-weight: 500; + color: black !important; +} +.form__newsletter input[type=email]::-moz-placeholder, .form__newsletter input[type=email]::placeholder { + font-family: var(--font); + font-size: var(--fs-normal); + font-weight: 500; + color: black !important; +} + +.form__newsletter input[type=email]:focus { + outline: 3px solid var(--grey-400); +} + +.form__newsletter button[type=submit] { + position: absolute; + right: 2px; + z-index: 100; + --size: calc(var(--h-block)*1.5 - 4px); + font-family: var(--font); + font-size: var(--fs-button-bold); + height: var(--size); + display: flex; + align-items: center; + gap: 0.75ch; + color: var(--color-accent); + font-weight: var(--fw-medium); + text-decoration: none; + cursor: pointer; +} + +.form__newsletter button[type=submit] .icon, +.form__newsletter button[type=submit] .txt { + z-index: 10; +} + +.form__newsletter button[type=submit] .icon { + width: var(--size); + height: var(--size); + display: flex; + align-items: center; + justify-content: center; + color: var(--color-bg); + text-align: center; +} + +.form__newsletter button[type=submit] .icon svg { + fill: var(--color-bg); + width: 80%; +} + +.form__newsletter button[type=submit] .txt { + position: relative; + top: 2px; + font-size: var(--fs-normal); + display: none; + padding-left: 1ch; +} + +.form__newsletter button[type=submit]::after { + content: ""; + display: block; + background-color: var(--color-accent); + border-radius: calc(var(--size) / 2); + width: var(--size); + height: var(--size); + position: absolute; + right: 0; + z-index: 0; + transition: width 0.2s; +} + +.form__newsletter button[type=submit]:hover .txt { + color: var(--color-bg); + display: block; +} + +.form__newsletter button[type=submit]:hover::after { + width: 100%; +} + +[data-template=newsletter] .details p { + font-size: var(--fs-xsmall); + margin-top: calc(var(--spacing) * 1); +} + +#support-bar { + height: var(--header-h); + background-color: var(--color-accent); + color: var(--color-bg); + padding: 0 var(--padding-body); +} +#support-bar .support-bar__container { + max-width: var(--max-w-cards); + margin: 0 auto; + height: 100%; + display: flex; +} +@media screen and (min-width: 768px) { + #support-bar .support-bar__container { + align-items: center; + justify-content: space-between; + gap: 2ch; + } +} +@media screen and (max-width: 768px) { + #support-bar .support-bar__container { + flex-direction: column; + font-size: var(--fs-small); + line-height: 1.1; + align-items: flex-start; + justify-content: center; + } +} +#support-bar .baseline { + text-transform: uppercase; + font-weight: 500; +} +#support-bar .btn { + text-transform: uppercase; + color: var(--color-bg); + font-weight: 500; + text-decoration: underline; + text-underline-offset: 2px; + word-wrap: nowrap; + white-space: nowrap; +} +#support-bar .btn:hover { + opacity: 0.7; +} +@media screen and (max-width: 768px) { + #support-bar { + height: auto; + padding: calc(var(--spacing) * 0.75) var(--padding-body); + } + #support-bar .btn { + margin-top: calc(var(--spacing) * 0.75); + } +} + #site-header { z-index: var(--z-header); --gap: 3ch; @@ -2004,7 +2897,7 @@ button.sort[data-sort-type=up] .arrow { display: flex; align-items: center; justify-content: space-between; - gap: var(--gap); + gap: calc(var(--gap) * 0.25); } #site-header a { text-decoration: none; @@ -2013,7 +2906,9 @@ button.sort[data-sort-type=up] .arrow { color: var(--grey-200); } #site-header #site-title { - flex-grow: 2; + position: relative; + top: -3px; + width: 140px; } #site-header #site-title svg { width: 100px; @@ -2022,25 +2917,92 @@ button.sort[data-sort-type=up] .arrow { #site-header #site-title svg { width: 80px; } + #site-header #site-title { + top: -4px; + } } -#site-header .header__title-page { - display: none; +#site-header #nav-highlight, +#site-header #nav-investigation { flex-grow: 2; - text-align: left; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - text-transform: uppercase; - font-size: var(--fs-small); - line-height: 2; } -#site-header ul { - list-style-type: none; +#site-header #nav-highlight ul, +#site-header #nav-investigation ul { + width: 100%; display: flex; align-items: center; + justify-content: center; gap: var(--gap); - text-transform: uppercase; + list-style-type: none; +} +#site-header #nav-highlight ul li, +#site-header #nav-investigation ul li { + white-space: nowrap; +} +#site-header #nav-highlight ul { font-weight: 500; + text-transform: uppercase; +} +@media screen and (max-width: 1080px) { + #site-header #nav-highlight ul { + font-size: var(--fs-small); + } +} +@media screen and (max-width: 890px) { + #site-header #nav-highlight ul { + justify-content: flex-end; + padding-right: 2ch; + } + #site-header #nav-highlight ul li { + display: none; + } + #site-header #nav-highlight ul li.support { + display: block; + } +} +#site-header #nav-investigation { + position: absolute; + top: 10%; + left: 0; + display: flex; + opacity: 0; + transition: top 0.3s ease; + pointer-events: none; + min-width: 0; +} +#site-header #nav-investigation .title { + text-transform: uppercase; + font-size: var(--fs-small); + font-weight: 500; + max-width: 100%; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding-left: 2ch; + padding-right: 2ch; + text-align: center; + color: var(--color-txt-light); +} +@media screen and (max-width: 1080px) { + #site-header #nav-investigation ul { + font-size: var(--fs-small); + padding-left: 6ch; + padding-right: 6ch; + } +} +#site-header #nav-investigation li { + color: var(--color-txt-light); + transition: color 0.3s ease; +} +#site-header #nav-investigation li.is-selected { + color: var(--color-txt); +} +#site-header #nav-investigation li.is-selected:hover { + color: var(--color-txt); + pointer-events: none; +} +#site-header #nav-investigation li.is-selected:hover a:hover { + color: var(--color-txt); } #site-header #theme-toggle { width: var(--h-block); @@ -2056,9 +3018,11 @@ button.sort[data-sort-type=up] .arrow { } #site-header #lang-toggle { display: flex; - gap: 1ch; + gap: 0.75ch; + padding-right: 1.5ch; } -#site-header #lang-toggle button { +#site-header #lang-toggle a { + font-size: var(--fs-small); font-weight: 500; } #site-header #lang-toggle button:disabled { @@ -2078,11 +3042,46 @@ button.sort[data-sort-type=up] .arrow { fill: var(--grey-200) !important; } -@media screen and (max-width: 1080px) { - #nav-highlight { +#site-header.has-nav-investigation #nav-highlight { + display: none; +} +#site-header.has-nav-investigation #nav-investigation { + position: relative; + opacity: 1; + transform: translateY(0); + top: 0px; + pointer-events: auto; +} + +@media screen and (min-width: 768px) { + #site-header #nav-investigation .title { display: none; } } +@media screen and (max-width: 768px) { + #site-header #nav-highlight ul { + display: none; + } + #site-header #nav-investigation .title { + display: none; + } + #site-header.has-nav-investigation #nav-investigation ul { + display: none; + } + #site-header.has-nav-investigation #nav-investigation .title { + display: block; + } +} +body.menu-open #site-header { + cursor: pointer; +} +body.menu-open #site-header #nav-highlight, +body.menu-open #site-header #nav-investigation { + opacity: 0.15; + pointer-events: none; + transition: opacity 0.3s ease-in; +} + #site-menu { position: fixed; width: var(--menu-w); @@ -2109,40 +3108,58 @@ button.sort[data-sort-type=up] .arrow { right: -100vw; } } -#site-menu { - display: flex; - flex-direction: column; +#site-menu .site-menu__inner { + height: 100%; + overflow: scroll; + scrollbar-width: none; + -ms-overflow-style: none; +} +#site-menu .site-menu__inner::-webkit-scrollbar { + display: none; } #site-menu .search-form { margin-top: calc(var(--spacing) * 1); margin-bottom: calc(var(--spacing) * 1); } #site-menu nav { - flex-grow: 1; + margin-top: calc(var(--spacing) * 1.5); } #site-menu nav ul { list-style-type: none; - text-transform: uppercase; - font-weight: 500; } #site-menu nav ul li { - font-size: var(--fs-normal); + margin-bottom: calc(var(--spacing) * 0.5); } -#site-menu nav ul li a { - display: block; +#site-menu nav ul a { text-decoration: none; - padding: 0.5em 0; + font-weight: 500; } -#site-menu nav ul li a:hover { - text-decoration: underline; -} -#site-menu nav ul .highlight { +#site-menu #nav-pages li { text-transform: uppercase; } +#site-menu .support { + text-transform: uppercase; +} +#site-menu #nav-aside { + margin-top: calc(var(--spacing) * 1); +} #site-menu .socials { + margin-top: calc(var(--spacing) * 2); padding-bottom: calc(var(--spacing) * 0.75); } +#menu-overlay { + position: fixed; + inset: 0; + z-index: calc(var(--z-header) - 2); + cursor: pointer; + background-color: rgba(0, 0, 0, 0.4); + opacity: 0; + visibility: hidden; + pointer-events: none; + transition: opacity 0.3s ease-in, visibility 0.3s ease-in; +} + body.menu-open #site-menu { right: 0; } @@ -2152,94 +3169,98 @@ body.menu-open #menu-toggle .open { body.menu-open #menu-toggle .close { display: block !important; } +body.menu-open #menu-overlay { + opacity: 1; + visibility: visible; + pointer-events: auto; +} #site-footer { background-color: var(--dark); - padding: calc(var(--padding-body) * 2) var(--padding-body); + padding: calc(var(--spacing) * 2) var(--padding-body) calc(var(--spacing) * 1) var(--padding-body); z-index: 500; } #site-footer .site-footer__container { max-width: var(--max-w-cards); margin: 0 auto; - padding: 0 var(--padding-body); + font-size: var(--fs-small); } #site-footer .logo { - margin-top: calc(var(--spacing) * 0.25); - margin-bottom: calc(var(--spacing) * 1); + margin-bottom: calc(var(--spacing) * 0.5); } #site-footer .logo svg { width: 100px; } -#site-footer p { - margin: calc(var(--spacing) * 0.5) 0; - font-size: var(--fs-small); +#site-footer .baseline { + max-width: 40ch; } -#site-footer p a { +#site-footer .list-links ul { + list-style: none; +} +#site-footer .list-links ul li { + margin-bottom: calc(var(--spacing) * 0.25); +} +#site-footer .list-links ul a { text-decoration: none; } -#site-footer p a:hover { +#site-footer .list-links ul li:hover a { text-decoration: underline; - color: currentColor; } -#site-footer .p__small { - font-size: var(--fs-xsmall); - color: var(--grey-600); -} -#site-footer .footer__mentions p { - font-size: var(--fs-xsmall); - color: var(--color-txt); -} -#site-footer .footer__socials > p { +#site-footer .list-links .hightlight { + text-transform: uppercase; font-weight: 500; } -@media screen and (max-width: 768px) { - #site-footer .footer__socials { - margin-top: calc(var(--spacing) * 0.75); - padding-top: calc(var(--spacing) * 0.25); - border-top: var(--border-light); - } - #site-footer .footer__socials .list-socials { - margin-top: calc(var(--spacing) * 0.5); - margin-bottom: calc(var(--spacing) * 0.75); - } - #site-footer .footer__mentions { - border-top: var(--border-light); - padding-top: calc(var(--spacing) * 0.25); - } - #site-footer .footer__mentions p { - font-size: 12px; - text-align: center; - } - #site-footer .p__small { - font-size: 12px; - } -} @media screen and (min-width: 768px) { #site-footer .site-footer__container { display: grid; - grid-template-columns: 3fr 2fr; - -moz-column-gap: calc(var(--spacing) * 2); - column-gap: calc(var(--spacing) * 2); + grid-template-columns: 1fr 350px; + -moz-column-gap: calc(var(--padding-inner) * 2); + column-gap: calc(var(--padding-inner) * 2); } - #site-footer .footer__newsletter { + #site-footer .site-footer__container .logo { + grid-column: span 2; + } + #site-footer .site-footer__container .baseline { grid-column: 1; grid-row: 2; } - #site-footer .footer__socials { + #site-footer .site-footer__container .list-links { grid-column: 2; grid-row: 2; + max-width: 350px; + display: flex; + justify-content: space-between; + gap: var(--padding-inner); } - #site-footer .footer__socials .socials { - -moz-columns: 2; - columns: 2; + #site-footer .site-footer__container .socials { + grid-column: 1; + grid-row: 3; + } + #site-footer .site-footer__container .credits { + font-size: var(--fs-xsmall); + grid-column: 1; + grid-row: 4; + margin-top: calc(var(--spacing) * 2); + } +} +@media screen and (max-width: 768px) { + #site-footer .list-links { margin-top: calc(var(--spacing) * 1); } - #site-footer .footer__mentions { - grid-column: span 2; + #site-footer .list-links .hightlight { + margin-top: calc(var(--spacing) * 0.5); } - #site-footer .footer__mentions p { + #site-footer .socials { margin-top: calc(var(--spacing) * 1); } + #site-footer .credits { + margin-top: calc(var(--spacing) * 2); + } +} +@media screen and (max-width: 560px) { + #site-footer .credits { + text-align: center; + } } body { @@ -2254,32 +3275,15 @@ body main { flex-grow: 1; padding: 0 var(--padding-body); padding-top: var(--header-h); - padding-bottom: calc(var(--spacing) * 2); - min-height: 100dvh; - min-height: 100vh; + padding-bottom: calc(var(--spacing) * 6); } -body main .page__header, body main .page__content { max-width: var(--max-w-cards); margin-inline: auto; } - -.page__type { - height: calc(var(--h-block) * 1); - border-radius: var(--radius-small); - border: var(--border-medium); - display: inline-flex; - align-items: center; - justify-content: center; - padding: 0 1.5ch; - padding-top: 5px; - font-size: var(--fs-small); - background-color: var(--color-bg); - color: var(--color-txt-light); - font-weight: 500; - overflow: hidden; - white-space: nowrap; - text-transform: uppercase; +body main .page__header { + max-width: var(--max-w-cards); + margin-inline: auto; } main .page__header { @@ -2288,9 +3292,12 @@ main .page__header { } @media screen and (max-width: 768px) { main .page__header { - margin-top: calc(var(--spacing) * 2); + margin-top: calc(var(--spacing) * 1); } } +main .page__header .page__type { + margin-bottom: calc(var(--spacing) * 1); +} main .page__header .page__title { max-width: var(--max-w-content); text-transform: uppercase; @@ -2298,14 +3305,114 @@ main .page__header .page__title { font-size: var(--fs-medium); font-weight: 500; line-height: var(--leading-title); - margin-top: calc(var(--spacing) * 1); - margin-bottom: calc(var(--spacing) * 1.5); - text-wrap: balance; + margin-bottom: calc(var(--spacing) * 2); } -main .page__header .description { +@media screen and (min-width: 768px) { + main .page__header .page__title { + text-wrap: balance; + } +} +@media screen and (max-width: 768px) { + main .page__header .page__title { + margin-bottom: calc(var(--spacing) * 1); + } +} +main .page__header .page__cover { + margin-top: calc(var(--spacing) * 2); +} +main .page__header .date { + display: block; + margin-top: calc(var(--spacing) * -1.5); + margin-bottom: calc(var(--spacing) * 2); + color: var(--color-txt-light); +} +@media screen and (max-width: 768px) { + main .page__header .date { + margin-bottom: calc(var(--spacing) * 1); + margin-top: calc(var(--spacing) * -0.75); + } +} +main .page__header .page__description { font-size: var(--fs-text); margin-bottom: calc(var(--spacing) * 3); } +@media screen and (max-width: 768px) { + main .page__header .page__description { + margin-bottom: calc(var(--spacing) * 1.5); + } +} +main .page__header .page__description { + max-width: var(--max-w-content); +} +main .page__header ul.list-nav { + display: flex; + flex-wrap: wrap; + list-style: none; + margin-top: calc(var(--spacing) * -1.5); +} +@media screen and (max-width: 768px) { + main .page__header ul.list-nav { + margin-top: calc(var(--spacing) * -0.5); + } +} +main .page__header ul.list-nav { + color: var(--color-txt-light); +} +main .page__header ul.list-nav li { + white-space: nowrap; + margin-right: 2ch; +} +main .page__header ul.list-nav li:last-of-type { + margin-right: 0; +} +@media screen and (max-width: 768px) { + main .page__header ul.list-nav li { + width: 12ch; + } +} +main .page__header ul.list-nav li { + margin-bottom: calc(var(--spacing) * 0.25); +} +main .page__header ul.list-nav a { + text-decoration: none; + text-transform: lowercase; +} +main .page__header ul.list-nav a::after { + content: " ↓"; +} +main .page__header ul.list-nav li:hover { + color: var(--color-txt); +} + +.package__section, +.page__aside { + max-width: var(--max-w-cards); + margin-inline: auto; + padding-top: calc(var(--spacing) * 4); +} +@media screen and (max-width: 768px) { + .package__section, + .page__aside { + padding-top: calc(var(--spacing) * 3); + } +} +.package__section .section__title, +.package__section .aside__title, +.page__aside .section__title, +.page__aside .aside__title { + font-weight: 500; + text-transform: uppercase; + margin-bottom: calc(var(--spacing) * 1); + font-size: 1.2em; +} +@media screen and (max-width: 768px) { + .package__section .section__title, + .package__section .aside__title, + .page__aside .section__title, + .page__aside .aside__title { + font-size: var(--fs-normal); + } +} .container-cards { max-width: var(--max-w-cards); @@ -2352,19 +3459,6 @@ main .page__header .description { line-height: 1.1; margin-bottom: calc(var(--spacing) * 1); } -.section--home .btn--bold-inline { - text-transform: none; - font-weight: 500; - font-size: var(--fs-small); -} -.section--home .btn--bold-inline .icon { - position: relative; - top: 2px; -} -.section--home .btn--bold-inline svg { - width: 13px; - height: 13px; -} @media screen and (min-width: 1080px) { .section--home .section--inner { max-width: 1600px; @@ -2372,23 +3466,28 @@ main .page__header .description { margin-bottom: calc(var(--spacing) * 4); padding-top: calc(var(--spacing) * 4); display: grid; - --gap: calc(var(--padding-body)*2); - grid-template-columns: 1fr 2fr; - grid-gap: var(--gap); + grid-template-columns: minmax(360px, 1fr) 2fr; + grid-gap: calc(var(--padding-body) * 3); } .section--home .col-left { align-self: start; position: sticky; - top: calc(var(--header-h) + var(--spacing) * 4); + top: calc(var(--header-h) + var(--spacing) * 1.5); } .section--home .col-right { width: 100%; height: 100%; } + .section--home#home__investigations .section--inner .section--inner { + padding-top: calc(var(--spacing) * 1); + } + .section--home#home__investigations .section--inner .col-left { + top: calc(var(--header-h) + var(--spacing) * 1.5); + } } @media screen and (max-width: 768px) { .section--home .card--article, - .section--home .card--impact { + .section--home .card--block { margin-bottom: calc(var(--spacing) * 1); } .section--home .baseline-section { @@ -2396,178 +3495,216 @@ main .page__header .description { } } +#home__investigations .section--inner { + padding-top: calc(var(--spacing) * 1.5); +} @media screen and (min-width: 768px) { #home__investigations .col-right { display: grid; grid-template-columns: 1fr 1fr; gap: var(--padding-body); } - #home__investigations .col-right .card--article:first-of-type { - grid-column: span 2; - display: grid; - grid-template-columns: 1fr 1fr; - } - #home__investigations .col-right .card--article:first-of-type figure, - #home__investigations .col-right .card--article:first-of-type picture { - grid-column: span 2; - } - #home__investigations .col-right .card--article:first-of-type .title { - grid-column: span 2; - font-size: var(--fs-medium); - padding-right: 3ch; - margin-bottom: calc(var(--spacing) * 1); - } - #home__investigations .col-right .card--article:first-of-type .description { - grid-column: 1; - grid-row: 3; - padding-right: 3ch; - display: block; - -webkit-line-clamp: unset; - -webkit-box-orient: unset; - overflow: visible; - } - #home__investigations .col-right .card--article:first-of-type dl { - grid-column: 2; - grid-row: 3; - } - #home__investigations .col-right .card--article:first-of-type .keywords-wrapper { - grid-column: 2; - grid-row: 4; - } #home__investigations .col-right .see-more { grid-column: span 2; } } +.main__single .page__header { + max-width: var(--max-w-content); + border-bottom: var(--border-light); + padding-bottom: calc(var(--spacing) * 1); +} +.main__single .page__header .page__description { + margin-bottom: calc(var(--spacing) * 1); +} +.main__single .page__header > figure { + aspect-ratio: 16/9; + display: flex; + overflow: hidden; +} +.main__single .page__header > figure img, +.main__single .page__header > figure picture { + width: 100%; + height: 100%; + -o-object-fit: cover; + object-fit: cover; + transition: cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.5s; +} +.main__single .page__content { + max-width: var(--max-w-content); + margin-top: calc(var(--spacing) * 3); +} +@media screen and (max-width: 768px) { + .main__single .page__content { + margin-top: calc(var(--spacing) * 1.25); + } +} + +.page__header + #related-investigations { + padding-top: calc(var(--spacing) * 1); +} +@media screen and (max-width: 768px) { + .page__header + #related-investigations { + padding-top: 0; + } +} + +[data-template=newsletter] .page__header, +[data-template=about] .page__header, +[data-template=privacy-policy] .page__header, +[data-template=legal-notices] .page__header { + border-bottom: none; + padding-bottom: 0px; +} +[data-template=newsletter] .page__header .page__title, +[data-template=about] .page__header .page__title, +[data-template=privacy-policy] .page__header .page__title, +[data-template=legal-notices] .page__header .page__title { + text-align: center; + border-bottom: var(--border-medium); + padding-bottom: calc(var(--spacing) * 0.5); +} + [data-template=investigation] main { position: relative; } [data-template=investigation] main .page__header { margin-inline: auto; max-width: var(--max-w-content); + margin-bottom: 0px; +} +[data-template=investigation] main .page__header .page__description { + margin-bottom: 0px; } [data-template=investigation] main .page__content { max-width: 100%; } -[data-template=investigation] main .investigation__content { - font-size: var(--fs-text); -} -[data-template=investigation] main #investigation__dl { - margin-top: calc(var(--spacing) * 1.5); - border-bottom: var(--border-light); - max-width: var(--max-w-content); - margin-inline: auto; - font-size: var(--fs-normal); -} -[data-template=investigation] main #investigation__dl .dl__group { - display: grid; - grid-gap: var(--padding-inner); - grid-template-columns: 2fr 3fr; - position: relative; - -moz-column-gap: 1ch; - column-gap: 1ch; - border-top: var(--border-light); - padding: calc(var(--spacing) * 0.5) 0; -} -[data-template=investigation] main #investigation__dl dt { - color: var(--color-txt-light); - padding-right: 1ch; -} -[data-template=investigation] main #investigation__dl ul:not(.keywords) { - list-style: none; -} -[data-template=investigation] main #investigation__dl ul:not(.keywords) li { - padding-bottom: 0.2em; -} -[data-template=investigation] main .investigation__aside { - max-width: var(--max-w-cards); - margin: calc(var(--spacing) * 4) auto; -} -[data-template=investigation] main .investigation__aside .aside__title { - font-weight: 500; - text-transform: uppercase; - margin-bottom: calc(var(--spacing) * 1); -} - -.investigation__content { - margin-top: calc(var(--spacing) * 4); -} -.investigation__content .section-content { - padding-left: calc(var(--padding-body) * 1.5); - padding-right: calc(var(--padding-body) * 1.5); - margin-bottom: calc(var(--spacing) * 6); -} -.investigation__content .section-content:target { - padding-top: calc(var(--header-h) + var(--spacing) * 2); -} -@media screen and (max-width: 768px) { - .investigation__content .section-content:target { - padding-top: calc(var(--header-h) + var(--spacing) * 0.5); +@media screen and (min-width: 768px) { + [data-template=investigation] main #investigation__hero { + padding-top: calc(var(--spacing) * 2.5); + margin-bottom: calc(var(--spacing) * 3); } } -.investigation__content .section-title { - max-width: var(--max-w-content); - margin-inline: auto; - margin-bottom: calc(var(--spacing) * 2); - font-size: var(--fs-medium); - font-weight: 500; - text-wrap: balance; - max-width: var(--max-w-content); +@media screen and (max-width: 768px) { + [data-template=investigation] main #investigation__hero { + padding-top: calc(var(--spacing) * 1.5); + margin-bottom: calc(var(--spacing) * 2); + } } -.investigation__content .section-txt { + +#investigation__content { + padding-top: calc(var(--spacing) * 4); +} +#investigation__content .section-title-only { + margin-bottom: 0; +} +#investigation__content .section-txt { max-width: var(--max-w-content); margin-inline: auto; } -.investigation__content .subsection-w-media { - display: grid; - grid-template-columns: 1fr 1fr; - gap: var(--padding-body); - margin-bottom: calc(var(--spacing) * 4); +#investigation__content .subsection-txt .insert { margin-top: calc(var(--spacing) * 2); - position: relative; + margin-bottom: calc(var(--spacing) * 2); + padding: calc(var(--padding-inner) * 2) calc(var(--padding-inner) * 1.5); } -.investigation__content .subsection-w-media .media { - margin-inline: auto; +#investigation__content .subsection-txt { max-width: var(--max-w-content); - padding-left: var(--padding-inner); - padding-right: var(--padding-inner); - position: sticky; - top: calc(var(--header-h) + var(--spacing)); - align-self: start; } -.investigation__content .subsection-txt { - min-height: calc(100vh - var(--header-h)); - max-width: var(--max-w-content); - padding-left: var(--padding-inner); - padding-right: var(--padding-inner); - padding-bottom: calc(var(--spacing) * 6); +#investigation__content img { + max-height: 75vh; + -o-object-fit: cover; + object-fit: cover; } -.investigation__content .subsection-w-hscroll { +@media screen and (min-width: 768px) { + #investigation__content .section-content { + margin-bottom: calc(var(--spacing) * 4); + } + #investigation__content .subsection-w-media { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); + gap: var(--padding-body); + position: relative; + } + #investigation__content .subsection-w-media .media { + margin-inline: auto; + width: 100%; + position: sticky; + top: calc(var(--header-h) + var(--spacing)); + align-self: start; + } +} +@media screen and (min-width: 768px) and (min-width: 1080px) { + #investigation__content .subsection-w-media .media { + padding-left: var(--padding-inner); + padding-right: var(--padding-inner); + } +} +@media screen and (min-width: 768px) { + #investigation__content .subsection-txt { + min-height: calc(100vh - var(--header-h)); + padding-left: var(--padding-inner); + padding-right: var(--padding-inner); + padding-bottom: calc(var(--spacing) * 6); + } +} +@media screen and (max-width: 768px) { + #investigation__content .section-content:not(.section-title-only) { + padding-bottom: calc(var(--spacing) * 1); + margin-bottom: calc(var(--spacing) * 2); + border-bottom: var(--border-light); + } + #investigation__content .section-title-only { + margin-bottom: calc(var(--spacing) * 1.5); + } + #investigation__content .media { + margin-bottom: calc(var(--spacing) * 2); + } + #investigation__content h3 { + margin-top: calc(var(--spacing) * 3); + margin-bottom: calc(var(--spacing) * 1.5); + font-size: 1.35em; + } + #investigation__content h4 { + margin-top: calc(var(--spacing) * 3); + margin-bottom: calc(var(--spacing) * 1); + font-size: 1em; + } + #investigation__content h4, + #investigation__content h5 { + margin-top: calc(var(--spacing) * 3); + margin-bottom: calc(var(--spacing) * 1); + } + #investigation__content .subsection-txt .insert { + margin-top: calc(var(--spacing) * 1.5); + } +} +#investigation__content .subsection-w-hscroll { position: relative; margin-bottom: calc(var(--spacing) * 4); } -.investigation__content .subsection-w-hscroll .horizontal-scroll { +#investigation__content .subsection-w-hscroll .horizontal-scroll { height: 100vh; width: 100vw; overflow: hidden; display: flex; align-items: center; } -.investigation__content .subsection-w-hscroll .horizontal-scroll-wrapper { +#investigation__content .subsection-w-hscroll .horizontal-scroll-wrapper { display: flex; flex-wrap: nowrap; will-change: transform; } -.investigation__content .subsection-w-hscroll .horizontal-scroll-slide { +#investigation__content .subsection-w-hscroll .horizontal-scroll-slide { flex-shrink: 0; width: 90vw; max-width: 700px; padding: 0 calc(var(--spacing) * 1); } -.investigation__content .subsection-w-hscroll .horizontal-scroll-slide figure, .investigation__content .subsection-w-hscroll .horizontal-scroll-slide img { +#investigation__content .subsection-w-hscroll .horizontal-scroll-slide figure, +#investigation__content .subsection-w-hscroll .horizontal-scroll-slide img { width: 100%; } -.investigation__content .subsection-w-hscroll .horizontal-scroll-pagination { +#investigation__content .subsection-w-hscroll .horizontal-scroll-pagination { position: fixed; bottom: calc(var(--spacing) * 2); left: 50%; @@ -2576,14 +3713,13 @@ main .page__header .description { gap: 8px; z-index: 10; } -.investigation__content p { - margin: calc(var(--spacing) * 0.75) 0; +#investigation__content .insert--inner > :last-child { + margin-bottom: 0px; } -.investigation__content ul { - padding-left: 3ch; -} -.investigation__content ul li { - margin: calc(var(--spacing) * 0.5) 0; +#investigation__content .insert--inner > :first-child, +#investigation__content .subsection-txt > :first-child, +#investigation__content .section-content > :first-child { + margin-top: 0px; } .investigation__content:target { @@ -2595,97 +3731,4 @@ main .page__header .description { } .media figure { height: auto; -} -.media .caption { - font-size: var(--fs-small); - color: var(--color-txt-light); - font-weight: 500; - line-height: 1.1; -} -.media .swiper { - width: calc(100% - 60px); - max-width: 600px; -} - -.content-package { - max-width: var(--max-w-cards); - margin: 0 auto; - display: grid; - grid-gap: calc(var(--padding-body) * 1.5); - position: relative; -} -.content-package .container-cards { - display: block; - align-self: start; -} -.content-package #section__investigations article { - margin-bottom: calc(var(--spacing) * 1); -} -.content-package .container__title { - font-weight: normal; - font-size: var(--fs-small); - font-weight: 500; - text-transform: uppercase; - margin-bottom: calc(var(--spacing) * 0.75); -} -@media screen and (max-width: 1080px) { - .content-package #section__investigations { - display: grid; - grid-template-columns: 1fr 1fr; - grid-gap: calc(var(--padding-inner) * 1.5) !important; - margin-bottom: calc(var(--spacing) * 3); - } - .content-package #section__investigations article { - margin-bottom: 0px; - } - .content-package #section__investigations .container__title { - grid-column: span 2; - margin-bottom: 0px; - } - .content-package section:target { - padding-top: calc(var(--header-h) + var(--spacing)); - } -} -@media screen and (min-width: 1080px) { - .content-package #nav-package { - display: none; - } - .content-package { - grid-template-columns: 1fr 1fr; - } - .content-package #section__investigations { - display: block; - margin-bottom: 0px; - } - .content-package #section__investigations article { - margin-bottom: calc(var(--spacing) * 1); - } -} -@media screen and (max-width: 768px) { - .content-package { - display: block; - } - .content-package #section__investigations { - display: block; - } - .content-package .container__title { - margin-bottom: calc(var(--spacing) * 0.5) !important; - } -} - -#nav-package { - display: flex; - margin-top: calc(var(--spacing) * -1); - margin-bottom: calc(var(--spacing) * 2); -} -#nav-package svg { - width: 10px; - height: 10px; - transform: rotate(90deg); -} - -@media screen and (min-width: 1080px) { - #nav-package { - display: none; - } }/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/assets/css/style.css.map b/assets/css/style.css.map index a3042c9..1a8a561 100644 --- a/assets/css/style.css.map +++ b/assets/css/style.css.map @@ -1 +1 @@ -{"version":3,"sources":["style.css","base/_var.scss","base/_body.scss","partials/_site-header.scss","components/_buttons.scss","components/_tags.scss","components/_keywords.scss","components/_sort.scss","components/_btn-group-mobile.scss","components/_summary-hero.scss","components/_form-newsletter.scss","components/_search-form.scss","components/_list-socials.scss","components/_modal-share.scss","components/_dropdown.scss","components/_card-article.scss","components/_figures.scss","components/_card-article-small.scss","components/_card-impact.scss","components/_card-impact-small.scss","components/_details-summary.scss","components/_card-open-graph.scss","components/_swiper.scss","components/_slider-before-after.scss","partials/_site-menu.scss","partials/_site-footer.scss","partials/_main-layout.scss","partials/_page-header.scss","partials/_container-cards.scss","template/_home.scss","template/_investigation.scss","template/_investigation_content.scss","template/_package.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file +{"version":3,"sources":["style.css","base/_var.scss","base/_body.scss","partials/_site-header.scss","components/_buttons.scss","components/_category.scss","components/_keywords.scss","components/_sort.scss","components/_btn-group-mobile.scss","components/_figures.scss","components/_investigation-hero.scss","components/_form-newsletter.scss","components/_search-form.scss","components/_list-socials.scss","components/_modal-share.scss","components/_dropdown.scss","components/_text.scss","components/_card-article.scss","components/_card-article-small.scss","components/_card-block.scss","components/_card-block-small.scss","components/_card-open-graph.scss","components/_swiper.scss","components/_lightbox.scss","components/_slider-before-after.scss","components/_dl-table.scss","components/_bottom-bar.scss","components/_newsletter-form.scss","components/_support-bar.scss","partials/_site-menu.scss","partials/_site-footer.scss","partials/_main-layout.scss","partials/_page-header.scss","partials/_page-aside.scss","partials/_container-cards.scss","template/_home.scss","template/_page-single.scss","template/_investigation.scss","template/_investigation_content.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file diff --git a/assets/css/style.scss b/assets/css/style.scss index cd38aee..3a46dd1 100644 --- a/assets/css/style.scss +++ b/assets/css/style.scss @@ -8,14 +8,13 @@ // @import 'components/nav-tabs'; // @import 'components/btn--default'; @import "components/buttons"; -@import "components/tags"; +@import "components/category"; @import "components/keywords"; -@import "components/details-summary"; @import "components/sort"; @import "components/btn-group-mobile"; @import "components/figures"; -@import "components/summary-hero"; +@import "components/investigation-hero"; @import "components/form-newsletter"; @import "components/search-form"; @import "components/list-socials"; @@ -24,22 +23,28 @@ @import "components/text"; @import "components/card-article"; @import "components/card-article-small"; -@import "components/card-impact"; -@import "components/card-impact-small"; -// @import "components/card-package"; +@import "components/card-block"; +@import "components/card-block-small"; @import "components/card-open-graph"; @import "components/swiper"; +@import "components/lightbox"; @import "components/slider-before-after"; +@import "components/dl-table"; +@import "components/bottom-bar"; +@import "components/newsletter-form"; +@import "components/support-bar"; + @import "partials/site-header"; @import "partials/site-menu"; @import "partials/site-footer"; @import "partials/main-layout"; @import "partials/page-header"; +@import "partials/page-aside"; @import "partials/container-cards"; @import "template/home"; +@import "template/page-single"; @import "template/investigation"; @import "template/investigation_content"; -@import "template/package"; @import "template/impacts"; diff --git a/assets/css/template/_home.scss b/assets/css/template/_home.scss index 71dc2bc..7b4101a 100644 --- a/assets/css/template/_home.scss +++ b/assets/css/template/_home.scss @@ -7,12 +7,14 @@ @media #{$medium} { padding-bottom: calc(var(--spacing)*4); margin-bottom: calc(var(--spacing)*4); - &:first-of-type{ + + &:first-of-type{ padding-top: calc(var(--spacing)*2); } .col-left{ margin-bottom: calc(var(--spacing)*3); } + } .baseline-section { @@ -22,19 +24,7 @@ margin-bottom: calc(var(--spacing)*1); } - .btn--bold-inline{ - text-transform: none; - font-weight: 500; - font-size: var(--fs-small); - .icon{ - position: relative; - top: 2px; - } - svg{ - width: 13px; - height: 13px; - } - } + @media #{$medium-up} { @@ -45,16 +35,16 @@ margin-bottom: calc(var(--spacing)*4); padding-top: calc(var(--spacing)*4); display: grid; - --gap: calc(var(--padding-body)*2); - grid-template-columns: 1fr 2fr; - grid-gap: var(--gap); + // grid-template-columns: 1fr 2fr; + grid-template-columns: minmax(360px, 1fr) 2fr; + grid-gap: calc(var(--padding-body)*3); } - + .col-left { align-self: start; position: sticky; - top: calc(var(--header-h) + var(--spacing)*4); + top: calc(var(--header-h) + var(--spacing)*1.5); } @@ -63,6 +53,13 @@ height: 100%; } + &#home__investigations .section--inner{ + .section--inner{ padding-top: calc(var(--spacing)*1); } + .col-left{ top: calc(var(--header-h) + var(--spacing)*1.5); } + } + + + } @@ -70,7 +67,7 @@ @media #{$small} { .card--article, - .card--impact{ + .card--block{ margin-bottom: calc(var(--spacing)*1); } @@ -93,53 +90,19 @@ - #home__investigations { + .section--inner{ + padding-top: calc(var(--spacing)*1.5); + } + @media #{$small-up} { .col-right{ display: grid; grid-template-columns: 1fr 1fr; gap: var(--padding-body); - .card--article:first-of-type{ - grid-column: span 2; - - display: grid; - grid-template-columns: 1fr 1fr; - - figure, - picture{ - grid-column: span 2; - } - - .title{ - grid-column: span 2; - font-size: var(--fs-medium); - padding-right: 3ch; - margin-bottom: calc(var(--spacing)*1); - } - - .description{ - grid-column: 1; - grid-row: 3; - padding-right: 3ch; - display: block; - -webkit-line-clamp: unset; - -webkit-box-orient: unset; - overflow: visible; - } - - dl{ - grid-column: 2; - grid-row: 3; - } - - .keywords-wrapper{ - grid-column: 2; - grid-row: 4; - } - } + .see-more{ grid-column: span 2; @@ -151,6 +114,8 @@ + + } diff --git a/assets/css/template/_investigation.scss b/assets/css/template/_investigation.scss index b6ff266..980afe9 100644 --- a/assets/css/template/_investigation.scss +++ b/assets/css/template/_investigation.scss @@ -2,11 +2,15 @@ position: relative; - - .page__header { margin-inline: auto; max-width: var(--max-w-content); + margin-bottom: 0px; + + + .page__description{ + margin-bottom: 0px; + } } .page__content{ @@ -14,118 +18,32 @@ } - .investigation__content{ - font-size: var(--fs-text); - } - - - - // @media screen and (max-width: 1340px) { - // margin-left: auto; - // margin-right: calc(var(--padding-body) * 3); - // .panel-left { - // width: calc(100vw - var(--max-w-cards) - var(--padding-body) * 6); - // } - // } - - // @media screen and (max-width: 1220px) { - // margin-left: auto; - // margin-right: 0px; - // width: calc(100% - var(--panel-w) * 0.5 - var(--padding-body)); - // .panel-left { - // width: calc(var(--panel-w) * 0.5); - // } - // } - - // .section__article { - // background-color: red; - // margin-top: calc(var(--spacing) * 3); - // margin-bottom: calc(var(--spacing) * 3); - // max-width: var(--max-w-content); - // margin-inline: auto; - - // &:target { - // padding-top: calc(var(--header-h) + var(--spacing) * 1); - // } - - // a:hover { - // color: var(--grey-200); - // } - - // .section__title { - // font-weight: 500; - // text-transform: uppercase; - // margin-bottom: calc(var(--spacing) * 1); - // padding-right: 2ch; - // text-wrap: balance; - // } - // } - - - - #investigation__dl { - margin-top: calc(var(--spacing) * 1.5); - border-bottom: var(--border-light); - max-width: var(--max-w-content); - margin-inline: auto; - font-size: var(--fs-normal); - - .dl__group { - @include grid-content(); - column-gap: 1ch; - 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; + #investigation__hero{ + @media #{$small-up} { + padding-top: calc(var(--spacing)*2.5); + margin-bottom: calc(var(--spacing)*3); + } + @media #{$small} { + padding-top: calc(var(--spacing)*1.5); + margin-bottom: calc(var(--spacing)*2); + } } - } - } - .investigation__aside{ - max-width: var(--max-w-cards); - margin: calc(var(--spacing)*4) auto; - .aside__title{ - font-weight: 500; - text-transform: uppercase; - margin-bottom: calc(var(--spacing)*1) - - } - } + + + + + + + -// SMALL ---------------------------------------------------------- -// ---------------------------------------------------------------- - -// @media #{$small} { -// [data-template="investigation"] main { -// width: 100%; - -// header { -// margin-bottom: calc(var(--spacing) * 1); -// } - -// .section__article { -// margin-top: calc(var(--spacing) * 2); -// margin-bottom: calc(var(--spacing) * 2); -// } - -// .panel-left { -// display: none; -// } -// } - } + + + + diff --git a/assets/css/template/_investigation_content.scss b/assets/css/template/_investigation_content.scss index 689cc76..58de4bc 100644 --- a/assets/css/template/_investigation_content.scss +++ b/assets/css/template/_investigation_content.scss @@ -1,153 +1,162 @@ +#investigation__content { + padding-top: calc(var(--spacing) * 4); -.investigation__content { + .section-title-only { + margin-bottom: 0; + } - margin-top: calc(var(--spacing) * 4); + .section-txt { + max-width: var(--max-w-content); + margin-inline: auto; + } + .subsection-txt .insert { + margin-top: calc(var(--spacing) * 2); + margin-bottom: calc(var(--spacing) * 2); + padding: calc(var(--padding-inner) * 2) calc(var(--padding-inner) * 1.5); + } + + .subsection-txt { + max-width: var(--max-w-content); + } + + img { + max-height: 75vh; + object-fit: cover; + } + + @media #{$small-up} { .section-content { - // min-height: calc(100vh - var(--header-h)); - padding-left: calc(var(--padding-body)*1.5); - padding-right: calc(var(--padding-body)*1.5); - margin-bottom: calc(var(--spacing)*6); - &:target{ - padding-top: calc(var(--header-h) + var(--spacing)*2); - @media #{$small}{ padding-top: calc(var(--header-h) + var(--spacing)*0.5); } - } - + margin-bottom: calc(var(--spacing) * 4); } + .subsection-w-media { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); + gap: var(--padding-body); + position: relative; - - .section-title { - - max-width: var(--max-w-content); + .media { margin-inline: auto; - margin-bottom: calc(var(--spacing)*2); + width: 100%; - font-size: var(--fs-medium); - - font-weight: 500; - // text-transform: uppercase; - text-wrap: balance; - max-width: var(--max-w-content); - } + position: sticky; + top: calc(var(--header-h) + var(--spacing)); + align-self: start; - .section-txt{ - max-width: var(--max-w-content); - margin-inline: auto; - - - } - - .subsection-w-media{ - display: grid; - grid-template-columns: 1fr 1fr; - gap: var(--padding-body); - margin-bottom: calc(var(--spacing)*4); - margin-top: calc(var(--spacing)*2); - position: relative; - - - .media{ - margin-inline: auto; - max-width: var(--max-w-content); - padding-left: var(--padding-inner); - padding-right: var(--padding-inner); - position: sticky; - top: calc(var(--header-h) + var(--spacing)); - align-self: start; + @media #{$medium-up} { + padding-left: var(--padding-inner); + padding-right: var(--padding-inner); } - + } } - .subsection-txt { - min-height: calc(100vh - var(--header-h)); - max-width: var(--max-w-content); - padding-left: var(--padding-inner); - padding-right: var(--padding-inner); - padding-bottom: calc(var(--spacing)*6); + min-height: calc(100vh - var(--header-h)); + padding-left: var(--padding-inner); + padding-right: var(--padding-inner); + padding-bottom: calc(var(--spacing) * 6); + } + } + + @media #{$small} { + .section-content:not(.section-title-only) { + padding-bottom: calc(var(--spacing) * 1); + margin-bottom: calc(var(--spacing) * 2); + border-bottom: var(--border-light); } - .subsection-w-hscroll{ - position: relative; - margin-bottom: calc(var(--spacing)*4); - - .horizontal-scroll{ - height: 100vh; - width: 100vw; - overflow: hidden; - display: flex; - align-items: center; - } - - .horizontal-scroll-wrapper{ - display: flex; - flex-wrap: nowrap; - will-change: transform; - } - - .horizontal-scroll-slide{ - flex-shrink: 0; - width: 90vw; - max-width: 700px; - padding: 0 calc(var(--spacing) * 1); - - figure, img{ - width: 100%; - } - } - - .horizontal-scroll-pagination{ - position: fixed; - bottom: calc(var(--spacing) * 2); - left: 50%; - transform: translateX(-50%); - display: flex; - gap: 8px; - z-index: 10; - } - + .section-title-only { + margin-bottom: calc(var(--spacing) * 1.5); + } + .media { + margin-bottom: calc(var(--spacing) * 2); } - - - p { - margin: calc(var(--spacing)*0.75) 0; + h3 { + margin-top: calc(var(--spacing) * 3); + margin-bottom: calc(var(--spacing) * 1.5); + font-size: 1.35em; } - ul { - padding-left: 3ch; - - li{ - margin: calc(var(--spacing)*0.5) 0; - } + h4 { + margin-top: calc(var(--spacing) * 3); + margin-bottom: calc(var(--spacing) * 1); + font-size: 1em; } + + h4, + h5 { + margin-top: calc(var(--spacing) * 3); + margin-bottom: calc(var(--spacing) * 1); + } + + .subsection-txt .insert { + margin-top: calc(var(--spacing) * 1.5); + } + } + + .subsection-w-hscroll { + position: relative; + margin-bottom: calc(var(--spacing) * 4); + + .horizontal-scroll { + height: 100vh; + width: 100vw; + overflow: hidden; + display: flex; + align-items: center; + } + + .horizontal-scroll-wrapper { + display: flex; + flex-wrap: nowrap; + will-change: transform; + } + + .horizontal-scroll-slide { + flex-shrink: 0; + width: 90vw; + max-width: 700px; + padding: 0 calc(var(--spacing) * 1); + + figure, + img { + width: 100%; + } + } + + .horizontal-scroll-pagination { + position: fixed; + bottom: calc(var(--spacing) * 2); + left: 50%; + transform: translateX(-50%); + display: flex; + gap: 8px; + z-index: 10; + } + } + + .insert--inner > :last-child { + margin-bottom: 0px; + } + .insert--inner > :first-child, + .subsection-txt > :first-child, + .section-content > :first-child { + margin-top: 0px; + } } .investigation__content:target { - padding-top: calc(var(--header-h)*2 + var(--spacing)) !important; + padding-top: calc(var(--header-h) * 2 + var(--spacing)) !important; } +.media { + video { + width: 100%; + } -.media{ - - video{ - width: 100%; - } - - figure{ - height: auto; - } - - .caption{ - font-size: var(--fs-small); - color: var(--color-txt-light); - font-weight: 500; - line-height: 1.1; - } - - .swiper{ - width: calc(100% - 60px); - max-width: 600px; - } + figure { + height: auto; + } } diff --git a/assets/css/template/_package.scss b/assets/css/template/_package.scss deleted file mode 100644 index 263e37f..0000000 --- a/assets/css/template/_package.scss +++ /dev/null @@ -1,88 +0,0 @@ -.content-package { - // max-width: 1300px; - max-width: var(--max-w-cards); - margin: 0 auto; - display: grid; - grid-gap: calc(var(--padding-body) * 1.5); - // grid-template-columns: 60% cacl(40% - var(--padding-body)*1.5); - - position: relative; - - .container-cards { - display: block; - align-self: start; - } - - #section__investigations article { - margin-bottom: calc(var(--spacing) * 1); - } - - .container__title { - font-weight: normal; - font-size: var(--fs-small); - font-weight: 500; - - text-transform: uppercase; - margin-bottom: calc(var(--spacing) * 0.75); - } - - @media #{$medium} { - #section__investigations { - display: grid; - grid-template-columns: 1fr 1fr; - grid-gap: calc(var(--padding-inner) * 1.5) !important; - margin-bottom: calc(var(--spacing) * 3); - article { - margin-bottom: 0px; - } - .container__title { - grid-column: span 2; - margin-bottom: 0px; - } - } - section:target { - padding-top: calc(var(--header-h) + var(--spacing)); - } - } - - @media #{$medium-up} { - #nav-package { - display: none; - } - grid-template-columns: 1fr 1fr; - #section__investigations { - display: block; - margin-bottom: 0px; - article { - margin-bottom: calc(var(--spacing) * 1); - } - } - } - - @media #{$small} { - display: block; - #section__investigations { - display: block; - } - .container__title { - margin-bottom: calc(var(--spacing) * 0.5) !important; - } - } -} - -#nav-package { - display: flex; - margin-top: calc(var(--spacing) * -1); - margin-bottom: calc(var(--spacing) * 2); - - svg { - width: 10px; - height: 10px; - transform: rotate(90deg); - } -} -@media #{$medium-up} { - #nav-package { - display: none; - } -} diff --git a/assets/css/template/_page-single.scss b/assets/css/template/_page-single.scss new file mode 100644 index 0000000..003ebab --- /dev/null +++ b/assets/css/template/_page-single.scss @@ -0,0 +1,51 @@ +.main__single { + + .page__header{ + max-width: var(--max-w-content); + border-bottom: var(--border-light); + padding-bottom: calc(var(--spacing)*1); + + .page__description{ + margin-bottom: calc(var(--spacing)*1); + + } + @include figure-16-9(); + } + + + .page__content{ + max-width: var(--max-w-content); + margin-top: calc(var(--spacing)*3); + @media #{$small} { + margin-top: calc(var(--spacing)*1.25); + } + } + +} + + +.page__header + #related-investigations{ + padding-top: calc(var(--spacing) * 1); + @media #{$small} { + padding-top: 0; + } +} + + + +[data-template="newsletter"], +[data-template="about"], +[data-template="privacy-policy"], +[data-template="legal-notices"]{ + .page__header{ + border-bottom: none; + padding-bottom: 0px; + + .page__title{ + text-align: center; + border-bottom: var(--border-medium); + padding-bottom: calc(var(--spacing) * 0.5); + + } + } +} \ No newline at end of file diff --git a/assets/icons/download.svg b/assets/icons/download.svg new file mode 100644 index 0000000..d486481 --- /dev/null +++ b/assets/icons/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/share.svg b/assets/icons/share.svg index f61e992..0937f29 100644 --- a/assets/icons/share.svg +++ b/assets/icons/share.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/js/back-to-top.js b/assets/js/back-to-top.js new file mode 100644 index 0000000..834ca56 --- /dev/null +++ b/assets/js/back-to-top.js @@ -0,0 +1,24 @@ +export function backToTop(){ + const btn = document.getElementById('btn--back-to-top'); + if (!btn) return; + + let lastY = window.scrollY; + let peakY = window.scrollY; + + window.addEventListener('scroll', () => { + const currentY = window.scrollY; + + if (currentY > lastY) { + peakY = currentY; + btn.classList.remove('is-visible'); + } else { + if (currentY <= 800) { + btn.classList.remove('is-visible'); + } else if (peakY - currentY >= 200 && peakY > 600) { + btn.classList.add('is-visible'); + } + } + + lastY = currentY; + }, { passive: true }); +} \ No newline at end of file diff --git a/assets/js/banner-sticky-desktop.js b/assets/js/banner-sticky-desktop.js deleted file mode 100644 index 3495b43..0000000 --- a/assets/js/banner-sticky-desktop.js +++ /dev/null @@ -1,58 +0,0 @@ -let isInitialized = false; - -export function bannerStickyDesktop(responsiveSmall) { - if (isInitialized) return; - - let body = document.body; - let panel = body.querySelector(".panel-left"); - - if (!panel) return; - - let footer = document.querySelector("#site-footer"); - - // Stocker la hauteur initiale du banner - const bannerInitialHeight = panel.offsetHeight; - - function checkScroll() { - const screenWidth = window.innerWidth; - - // Vérifier que l'écran est plus grand que responsiveSmall - if (screenWidth <= responsiveSmall) { - // Réinitialiser le transform si on est en dessous de responsiveSmall - panel.style.transform = ''; - return; - } - - // Calculer la position du bas de la fenêtre - const windowBottom = window.scrollY + window.innerHeight; - - // Calculer dynamiquement la position du footer à chaque scroll - // Utiliser getBoundingClientRect() + scrollY pour une valeur toujours à jour - const footerTop = footer.getBoundingClientRect().top + window.scrollY; - - // Calculer de combien on dépasse le haut du footer - const overlap = windowBottom - footerTop; - - if (overlap > 0) { - // Le bas de la fenêtre a atteint le haut du footer - // Déplacer le banner vers le haut du nombre de pixels de dépassement - const translateValue = Math.min(overlap, bannerInitialHeight); - panel.style.transform = `translateY(-${translateValue}px)`; - } else { - // Réinitialiser la position si on n'a pas encore atteint le footer - panel.style.transform = 'translateY(0)'; - } - } - - window.addEventListener('scroll', checkScroll); - window.addEventListener('resize', () => { - if (window.innerWidth > responsiveSmall) { - panel.style.transform = ''; - } - checkScroll(); - }); - - checkScroll(); - - isInitialized = true; -} \ No newline at end of file diff --git a/assets/js/bottom-bar.js b/assets/js/bottom-bar.js new file mode 100644 index 0000000..392a76d --- /dev/null +++ b/assets/js/bottom-bar.js @@ -0,0 +1,59 @@ + + +export function progressBar(){ + const bar = document.getElementById('progressBar'); + if (!bar) return; + + window.addEventListener('scroll', () => { + const scrollTop = window.scrollY; + const docHeight = document.documentElement.scrollHeight - window.innerHeight; + const progress = docHeight > 0 ? (scrollTop / docHeight) * 100 : 0; + bar.style.width = `${progress}vw`; + }, { passive: true }); +} + + +export function scrollBack(){ + const bottomBar = document.getElementById('bottom-bar'); + const navInvestigation = document.getElementById('nav-investigation'); + const header = document.getElementById('site-header'); + const footerEl = document.getElementById('support-bar') || document.getElementById('site-footer'); + + let lastY = window.scrollY; + let peakY = window.scrollY; + let visible = false; + + window.addEventListener('scroll', () => { + const currentY = window.scrollY; + + // header : basé uniquement sur la position absolue + if (navInvestigation && header) { + header.classList.toggle('has-nav-investigation', currentY >= 160); + } + + // zone footer : bottom-bar masquée et verrouillée + const inFooterZone = footerEl && (currentY + window.innerHeight >= footerEl.offsetTop); + + if (inFooterZone) { + if (visible) { + visible = false; + if (bottomBar) bottomBar.classList.remove('is-visible'); + } + } else if (currentY > lastY) { + // scroll bas + peakY = currentY; + if (!visible && currentY > 280) { + visible = true; + if (bottomBar) bottomBar.classList.add('is-visible'); + } + } else { + // scroll haut : hide après 200px remontés + if (visible && peakY - currentY >= 200) { + visible = false; + if (bottomBar) bottomBar.classList.remove('is-visible'); + } + } + + lastY = currentY; + }, { passive: true }); +} \ No newline at end of file diff --git a/assets/js/btn-group-mobile.js b/assets/js/btn-group-mobile.js deleted file mode 100644 index 518b6aa..0000000 --- a/assets/js/btn-group-mobile.js +++ /dev/null @@ -1,35 +0,0 @@ -let isInitialized = false; - -export function btnGroupMobile() { - if (isInitialized) return; - const btnGroup = document.querySelector(".btn--group__mobile"); - let footer = document.querySelector("#site-footer"); - - if (!btnGroup) return; - - function checkScroll() { - - const windowHeight = window.innerHeight; - const scrollY = window.scrollY; - const footerTop = footer.getBoundingClientRect().top; - - if (scrollY > windowHeight * 0.6) { - btnGroup.classList.add('is-visible'); - - if (footerTop < windowHeight) { - btnGroup.classList.remove('is-visible'); - } - } else { - btnGroup.classList.remove('is-visible'); - } - } - - window.addEventListener('scroll', checkScroll); - checkScroll(); - - isInitialized = true; - - -} - - diff --git a/assets/js/dropdown.js b/assets/js/dropdown.js index d254a9d..7610727 100644 --- a/assets/js/dropdown.js +++ b/assets/js/dropdown.js @@ -1,4 +1,4 @@ -export function initDropdowns(responsiveSmall) { +export function initDropdowns(responsiveSmall, responsiveSmallX) { const dropdowns = document.querySelectorAll('.dropdown'); function updateBodyOverflow(isOpen, dropdownElement = null) { @@ -17,7 +17,7 @@ export function initDropdowns(responsiveSmall) { if (!trigger) return; - + // Empêche la fermeture au clic dans le contenu des dropdowns contenant .modal--share if (dropdown.querySelector('.modal--share') && content) { content.addEventListener('click', (e) => { @@ -33,12 +33,14 @@ export function initDropdowns(responsiveSmall) { if (other !== dropdown) { other.classList.remove('is-open', 'dropdown--align-right'); other.querySelector('.dropdown__trigger')?.classList.remove('is-selected'); + const otherContent = other.querySelector('.dropdown__content'); + if (otherContent) otherContent.style.transform = ''; } }); const isOpening = !dropdown.classList.contains('is-open'); - if (isOpening) { + if (isOpening && !dropdown.closest('#bottom-bar')) { // Vérifie s'il y a la place à droite const content = dropdown.querySelector('.dropdown__content'); const triggerRect = trigger.getBoundingClientRect(); @@ -56,6 +58,19 @@ export function initDropdowns(responsiveSmall) { dropdown.classList.toggle('is-open'); trigger.classList.toggle('is-selected'); + // Décalage horizontal pour #bottom-bar sur petit écran + if (dropdown.closest('#bottom-bar') && window.innerWidth < responsiveSmallX) { + if (dropdown.classList.contains('is-open')) { + requestAnimationFrame(() => { + const rect = content.getBoundingClientRect(); + const paddingBody = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--padding-body')) || 0; + content.style.transform = `translateX(${-rect.left + paddingBody}px)`; + }); + } else { + content.style.transform = ''; + } + } + // Gère l'overflow du body sur mobile updateBodyOverflow(dropdown.classList.contains('is-open'), dropdown); }); @@ -70,6 +85,8 @@ export function initDropdowns(responsiveSmall) { } dropdown.classList.remove('is-open', 'dropdown--align-right'); dropdown.querySelector('.dropdown__trigger')?.classList.remove('is-selected'); + const c = dropdown.querySelector('.dropdown__content'); + if (c) c.style.transform = ''; }); updateBodyOverflow(false); }); @@ -80,6 +97,8 @@ export function initDropdowns(responsiveSmall) { dropdowns.forEach(dropdown => { dropdown.classList.remove('is-open', 'dropdown--align-right'); dropdown.querySelector('.dropdown__trigger')?.classList.remove('is-selected'); + const c = dropdown.querySelector('.dropdown__content'); + if (c) c.style.transform = ''; }); updateBodyOverflow(false); } diff --git a/assets/js/header.js b/assets/js/header.js index 0549ae3..daf8a40 100644 --- a/assets/js/header.js +++ b/assets/js/header.js @@ -1,10 +1,38 @@ export function headerToggle() { const header = document.getElementById("site-header"); const buttonToggle = document.querySelector("#menu-toggle"); + const siteMenu = document.getElementById("site-menu"); + const overlay = document.getElementById("menu-overlay"); if (!header || !buttonToggle) return; - buttonToggle.addEventListener("click", () => { - const isOpen = document.body.classList.toggle("menu-open"); + + function openMenu() { + document.body.classList.add("menu-open"); + buttonToggle.setAttribute("aria-expanded", "true"); + buttonToggle.setAttribute("aria-label", "Fermer le menu"); + siteMenu?.removeAttribute("inert"); + } + + function closeMenu() { + document.body.classList.remove("menu-open"); + buttonToggle.setAttribute("aria-expanded", "false"); + buttonToggle.setAttribute("aria-label", "Ouvrir le menu"); + siteMenu?.setAttribute("inert", ""); + } + + buttonToggle.addEventListener("click", (e) => { + e.stopPropagation(); + document.body.classList.contains("menu-open") ? closeMenu() : openMenu(); + }); + + header.addEventListener("click", () => { + if (document.body.classList.contains("menu-open")) closeMenu(); + }); + + overlay?.addEventListener("click", closeMenu); + + document.addEventListener("keydown", (e) => { + if (e.key === "Escape" && document.body.classList.contains("menu-open")) closeMenu(); }); } diff --git a/assets/js/hero-slider.js b/assets/js/hero-slider.js deleted file mode 100644 index dd39df8..0000000 --- a/assets/js/hero-slider.js +++ /dev/null @@ -1,50 +0,0 @@ -import Swiper from 'https://cdn.jsdelivr.net/npm/swiper@12/swiper-bundle.min.mjs'; - -export function initHeroSlider() { - const heroSlider = document.querySelector('.hero-slider'); - - if (!heroSlider) { - return; - } - - const swiper = new Swiper('.hero-slider', { - // Optional parameters - loop: true, - speed: 600, - effect: 'fade', - fadeEffect: { - crossFade: true - }, - - // Touch/Swipe settings (activé par défaut, mais configuré ici pour optimisation) - touchRatio: 1, - touchAngle: 45, - grabCursor: true, - simulateTouch: true, - allowTouchMove: true, - - // Navigation arrows - navigation: { - nextEl: '.swiper-button-next', - prevEl: '.swiper-button-prev', - }, - - // Pagination - pagination: { - el: '.swiper-pagination', - clickable: true, - }, - - // Keyboard control - keyboard: { - enabled: true, - }, - - // Accessibility - a11y: { - prevSlideMessage: 'Diapositive précédente', - nextSlideMessage: 'Diapositive suivante', - paginationBulletMessage: 'Aller à la diapositive {{index}}', - }, - }); -} diff --git a/assets/js/hero-video.js b/assets/js/hero-video.js index 707c316..2ab524c 100644 --- a/assets/js/hero-video.js +++ b/assets/js/hero-video.js @@ -1,38 +1,49 @@ export function playVideo() { const playButton = document.querySelector('#hero-play-video'); + if (!playButton) return; - if (!playButton) { - return; - } + const playerDiv = document.querySelector('#youtube-player'); + if (!playerDiv) return; - playButton.addEventListener('click', function() { + // Charger l'API YouTube IFrame Player + const tag = document.createElement('script'); + tag.src = 'https://www.youtube.com/iframe_api'; + document.head.appendChild(tag); + + let ytReady = false; + window.onYouTubeIframeAPIReady = () => { ytReady = true; }; + + playButton.addEventListener('click', function () { const extract = document.querySelector('.extract'); const videoFull = document.querySelector('.video-full'); const titleSmall = document.querySelector('.page-title-small'); - - if (extract) { - extract.style.display = 'none'; - } - - if(titleSmall){ - titleSmall.style.display = 'none'; - } + if (extract) extract.style.display = 'none'; + if (titleSmall) titleSmall.style.display = 'none'; if (videoFull) { videoFull.style.display = 'block'; - const iframe = videoFull.querySelector('iframe'); - if (iframe) { - const src = iframe.src; + function createPlayer() { + new YT.Player('youtube-player', { + videoId: playerDiv.dataset.videoId, + width: '100%', + height: '100%', + playerVars: { + autoplay: 1, + rel: 0, + }, + events: { + onReady: (e) => e.target.playVideo(), + }, + }); + } - // Ajouter les paramètres autoplay et mute pour YouTube - if (src) { - const separator = src.includes('?') ? '&' : '?'; - iframe.src = src + separator + 'autoplay=1&mute=1'; - iframe.setAttribute('allow', 'autoplay; encrypted-media'); - } + if (ytReady) { + createPlayer(); + } else { + window.onYouTubeIframeAPIReady = createPlayer; } } }); diff --git a/assets/js/investigation.js b/assets/js/investigation.js index 3068488..58a8c97 100644 --- a/assets/js/investigation.js +++ b/assets/js/investigation.js @@ -1,11 +1,32 @@ -export function initSliderBeforeAfter(container = document){ - const slidersBeforeAfter = container.querySelectorAll('.slider-before-after'); - slidersBeforeAfter.forEach(function (sliderContainer, index) { - const sliderInput = sliderContainer.querySelector('.slider'); - if (sliderInput) { - sliderInput.addEventListener('input', (e) => { - sliderContainer.style.setProperty('--position', `${e.target.value}%`); - }); +export function navInvestigation(){ + const nav = document.getElementById('nav-investigation'); + if (!nav) return; + + const items = nav.querySelectorAll('li'); + const headerOffset = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--h-header')) || 0; + + const sections = Array.from(items).map(li => { + const href = li.querySelector('a')?.getAttribute('href'); + const target = href ? document.querySelector(href) : null; + return { li, target }; + }).filter(s => s.target); + + const update = () => { + const scrollY = window.scrollY + headerOffset; + let current = sections[0]; + + for (const section of sections) { + if (section.target.offsetTop <= scrollY) { + current = section; + } } - }); + + items.forEach(li => li.classList.remove('is-selected')); + if (current) current.li.classList.add('is-selected'); + }; + + window.addEventListener('scroll', update, { passive: true }); + update(); } + + diff --git a/assets/js/lightbox.js b/assets/js/lightbox.js new file mode 100644 index 0000000..eed3f3e --- /dev/null +++ b/assets/js/lightbox.js @@ -0,0 +1,162 @@ +import Swiper from 'https://cdn.jsdelivr.net/npm/swiper@12/swiper-bundle.min.mjs'; + +const DESKTOP = window.matchMedia('(min-width: 1080px)'); + +// Inline du close.svg (assets/icons/close.svg) +const CLOSE_SVG = ``; + +let lightboxEl = null; +let lightboxSwiper = null; + +function createLightboxDOM() { + const el = document.createElement('div'); + el.id = 'lightbox'; + el.setAttribute('aria-modal', 'true'); + el.setAttribute('role', 'dialog'); + el.setAttribute('aria-label', 'Image agrandie'); + el.setAttribute('inert', ''); + + el.innerHTML = ` + + + `; + + document.body.appendChild(el); + + el.querySelector('#lightbox-close').addEventListener('click', closeLightbox); + + // Fermeture au clic sur le fond (pas sur le swiper) + el.addEventListener('click', (e) => { + if (e.target === el) closeLightbox(); + }); + + return el; +} + +function ensureLightboxDOM() { + if (!lightboxEl) { + lightboxEl = createLightboxDOM(); + } +} + +function getImageData(figure) { + const img = figure.querySelector('img'); + + // 1. figcaption dans la figure + // 2. p.caption dans la figure (horizontal-gallery) + // 3. p.caption sibling de la figure (covers : resource, news-item, impact…) + const captionEl = + figure.querySelector('figcaption') || + figure.querySelector('p.caption') || + (figure.nextElementSibling?.matches('p.caption') ? figure.nextElementSibling : null); + + return { + src: img?.src || '', + alt: img?.alt || '', + caption: captionEl?.innerHTML || '', + }; +} + +function buildSlides(images) { + const wrapper = lightboxEl.querySelector('.swiper-wrapper'); + wrapper.innerHTML = ''; + + images.forEach(({ src, alt, caption }) => { + const slide = document.createElement('div'); + slide.className = 'swiper-slide'; + slide.innerHTML = ` +
+ ${alt} + ${caption ? `
${caption}
` : ''} +
+ `; + wrapper.appendChild(slide); + }); +} + +function openLightbox(images, startIndex = 0) { + ensureLightboxDOM(); + buildSlides(images); + + const swiperEl = lightboxEl.querySelector('#lightbox-swiper'); + + // Détruire l'instance précédente si elle existe + if (swiperEl.swiper) { + swiperEl.swiper.destroy(true, true); + } + + lightboxSwiper = new Swiper(swiperEl, { + slidesPerView: 1, + initialSlide: startIndex, + speed: 400, + watchOverflow: true, + keyboard: { enabled: true }, + navigation: { + nextEl: swiperEl.querySelector('.swiper-button-next'), + prevEl: swiperEl.querySelector('.swiper-button-prev'), + }, + pagination: { + el: swiperEl.querySelector('.swiper-pagination'), + clickable: true, + }, + a11y: { + prevSlideMessage: 'Image précédente', + nextSlideMessage: 'Image suivante', + }, + }); + + lightboxEl.removeAttribute('inert'); + document.body.classList.add('lightbox-open'); + lightboxEl.querySelector('#lightbox-close').focus(); +} + +function closeLightbox() { + document.body.classList.remove('lightbox-open'); + lightboxEl.setAttribute('inert', ''); +} + +function isEligible(figure) { + // Exclure les figures dans un + if (figure.closest('a')) return false; + // Exclure si le parent direct contient un .link-block (card navigable) + if (figure.parentElement.querySelector(':scope > .link-block')) return false; + return true; +} + +export function initLightbox() { + // Fermeture à la touche Echap + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape' && document.body.classList.contains('lightbox-open')) { + closeLightbox(); + } + }); + + document.querySelectorAll('figure').forEach((figure) => { + if (!isEligible(figure)) return; + + // Marquer les figures éligibles (pour le cursor CSS) + figure.setAttribute('data-lightbox', ''); + + figure.addEventListener('click', () => { + if (!DESKTOP.matches) return; + + const slide = figure.closest('.swiper-slide'); + + if (slide) { + // Galerie : ouvrir toutes les images du swiper parent + const swiperEl = slide.closest('.swiper'); + const allFigures = [...swiperEl.querySelectorAll('.swiper-slide > figure')]; + const startIndex = allFigures.indexOf(figure); + openLightbox(allFigures.map(getImageData), startIndex); + } else { + // Image standalone + openLightbox([getImageData(figure)], 0); + } + }); + }); +} diff --git a/assets/js/newsletter-brevo.js b/assets/js/newsletter-brevo.js new file mode 100644 index 0000000..101681c --- /dev/null +++ b/assets/js/newsletter-brevo.js @@ -0,0 +1,89 @@ +(function () { + 'use strict'; + + const PROXY_URL = '/newsletter/subscribe'; + + async function subscribeToNewsletter(email, attributes = {}) { + const response = await fetch(PROXY_URL, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ email, attributes }), + }); + + const data = await response.json(); + + if (!response.ok) { + const error = new Error( + data.user_message || data.message || 'Subscription error' + ); + error.code = data.error; + error.data = data; + throw error; + } + + return data; + } + + function showMessage(form, text, isError = false) { + const oldMessages = form.parentNode.querySelectorAll('.newsletter-message'); + oldMessages.forEach((msg) => msg.remove()); + + const message = document.createElement('p'); + message.className = 'newsletter-message'; + message.textContent = text; + message.style.marginTop = '0.5rem'; + message.style.fontSize = '0.9rem'; + message.style.color = isError + ? 'var(--color-error, #ef4444)' + : 'var(--color-success, #22c55e)'; + + form.parentNode.insertBefore(message, form.nextSibling); + + if (!isError) { + setTimeout(() => message.remove(), 5000); + } + } + + async function handleFormSubmit(event) { + event.preventDefault(); + + const form = event.target; + const emailInput = form.querySelector('input[type="email"]'); + const submitButton = form.querySelector('button[type="submit"]'); + + if (!emailInput || !emailInput.value) { + const message = document.documentElement.lang.startsWith('en') + ? 'Please enter a valid email address.' + : 'Veuillez entrer une adresse email valide.'; + showMessage(form, message, true); + return; + } + + const email = emailInput.value.trim(); + submitButton.disabled = true; + + try { + await subscribeToNewsletter(email); + const message = document.documentElement.lang.startsWith('en') + ? 'Thank you! Your subscription has been confirmed.' + : 'Merci, votre inscription est confirmée !'; + showMessage(form, message, false); + form.reset(); + } catch (error) { + const isAlreadySubscribed = error.code === 'email_already_exists'; + showMessage(form, error.message, !isAlreadySubscribed); + } finally { + submitButton.disabled = false; + } + } + + function initNewsletterForms() { + const forms = document.querySelectorAll('.form__newsletter'); + forms.forEach((form) => form.addEventListener('submit', handleFormSubmit)); + } + + document.addEventListener('DOMContentLoaded', initNewsletterForms); +})(); diff --git a/assets/js/panel.js b/assets/js/panel.js deleted file mode 100644 index 7575010..0000000 --- a/assets/js/panel.js +++ /dev/null @@ -1,60 +0,0 @@ -export function panelToggle(responsiveSmall) { - const toggleBtn = document.querySelector('#toggle-panel'); - const toggleBtnMobile = document.querySelector('#toggle-panel__mobile'); - const main = document.querySelector('main'); - const closeBtn = document.querySelector('.panel-left .panel__header'); - - function openPanel() { - main.classList.add('panel-open'); - const screenWidth = window.innerWidth; - if (screenWidth <= responsiveSmall) { - console.log("small screen"); - document.body.style.overflowY = 'hidden'; - } - - } - - function closePanel() { - main.classList.remove('panel-open'); - main.classList.add('panel-close'); - document.body.style.overflowY = ''; - } - - if (toggleBtn) { - toggleBtn.addEventListener('click', (e) => { - e.stopPropagation(); - openPanel(); - }); - } - - if (toggleBtnMobile) { - toggleBtnMobile.addEventListener('click', (e) => { - e.stopPropagation(); - openPanel(); - }); - } - - if (closeBtn) { - closeBtn.addEventListener('click', closePanel); - } -} - - -export function tocMobile(responsiveSmall) { - const toc = document.querySelector('#toc'); - const main = document.querySelector('main'); - - if (!toc) return; - - const tocLinks = toc.querySelectorAll('a'); - - tocLinks.forEach(link => { - link.addEventListener('click', () => { - if (window.innerWidth <= responsiveSmall) { - main.classList.remove('panel-open'); - main.classList.add('panel-close'); - document.body.style.overflowY = ''; - } - }); - }); -} \ No newline at end of file diff --git a/assets/js/script.js b/assets/js/script.js index 6aa5dd2..31198a9 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -1,61 +1,79 @@ import { headerToggle, headerScrollVisibility } from './header.js'; import { copyLink } from './share.js'; -import { panelToggle, tocMobile } from './panel.js'; -import { btnGroupMobile } from './btn-group-mobile.js'; -import { bannerStickyDesktop } from './banner-sticky-desktop.js'; +import { backToTop } from './back-to-top.js'; import { themeToggle } from './themeToggle.js'; -import { initHeroSlider } from './hero-slider.js'; import { playVideo } from './hero-video.js'; import { initDropdowns } from './dropdown.js'; import { initSwipers } from './swipers.js'; -import { initSliderBeforeAfter } from './investigation.js'; +import { initSliderBeforeAfter} from './sliderBeforeAfter.js'; +import { navInvestigation } from './investigation.js'; +import { progressBar, scrollBack} from './bottom-bar.js'; +import { initSort } from './sort.js'; +import { initLightbox } from './lightbox.js'; const responsiveMedium = 1080; const responsiveSmall = 768; +const responsiveSmallX = 560; window.onload = async function () { console.log("SCRIPT LOADED"); + headerToggle(); - panelToggle(responsiveSmall); themeToggle(); + backToTop(); + initSliderBeforeAfter(); - tocMobile(responsiveSmall); copyLink(); - btnGroupMobile(responsiveSmall) - bannerStickyDesktop(responsiveSmall); - initHeroSlider(); playVideo(); - initDropdowns(responsiveSmall); + initDropdowns(responsiveSmall, responsiveSmallX); initSwipers(); + initLightbox(); - initSliderBeforeAfter(); + progressBar(); - var elem = document.querySelector('.grid-masonry'); - var msnry = null; + + scrollBack(); + navInvestigation(); + + var elems = document.querySelectorAll('.grid-masonry'); + var msnries = []; function initMasonry() { - if (!elem) return; + if (!elems.length) return; if (window.innerWidth >= responsiveSmall) { - if (!msnry) { - msnry = new Masonry(elem, { - itemSelector: '.card--impact', - columnWidth: '.grid-sizer', - percentPosition: true, - gutter: 26 - }); - } + elems.forEach(function(elem, i) { + if (!msnries[i]) { + msnries[i] = new Masonry(elem, { + itemSelector: '.card--block:not(.is-sort-hidden)', + columnWidth: '.grid-sizer', + percentPosition: true, + gutter: 26 + }); + } + }); } else { - if (msnry) { - msnry.destroy(); - msnry = null; - } + msnries.forEach(function(msnry, i) { + if (msnry) { + msnry.destroy(); + msnries[i] = null; + } + }); } } initMasonry(); window.addEventListener('resize', initMasonry); + initSort(() => { + msnries.forEach(function(msnry) { + if (msnry) { + msnry.reloadItems(); + msnry.layout(); + } + }); + }); + } \ No newline at end of file diff --git a/assets/js/sliderBeforeAfter.js b/assets/js/sliderBeforeAfter.js new file mode 100644 index 0000000..3068488 --- /dev/null +++ b/assets/js/sliderBeforeAfter.js @@ -0,0 +1,11 @@ +export function initSliderBeforeAfter(container = document){ + const slidersBeforeAfter = container.querySelectorAll('.slider-before-after'); + slidersBeforeAfter.forEach(function (sliderContainer, index) { + const sliderInput = sliderContainer.querySelector('.slider'); + if (sliderInput) { + sliderInput.addEventListener('input', (e) => { + sliderContainer.style.setProperty('--position', `${e.target.value}%`); + }); + } + }); +} diff --git a/assets/js/sort.js b/assets/js/sort.js new file mode 100644 index 0000000..e0c964f --- /dev/null +++ b/assets/js/sort.js @@ -0,0 +1,63 @@ +const HIDDEN_CLASS = 'is-sort-hidden'; + +// Injecte la règle CSS pour masquer les cards filtrées +const style = document.createElement('style'); +style.textContent = `.${HIDDEN_CLASS} { display: none !important; }`; +document.head.appendChild(style); + +export function initSort(onLayoutChange) { + const pageSort = document.querySelector('.page__sort'); + if (!pageSort) return; + + const container = document.querySelector('[data-sort-container]'); + if (!container) return; + + const getCards = () => Array.from(container.querySelectorAll('[data-date]')); + + // — Sort by date — + const sortBtn = pageSort.querySelector('[data-sort-type]'); + if (sortBtn) { + sortBtn.addEventListener('click', () => { + const dir = sortBtn.getAttribute('data-sort-type') === 'down' ? 'up' : 'down'; + sortBtn.setAttribute('data-sort-type', dir); + + const cards = getCards(); + cards.sort((a, b) => { + const da = new Date(a.dataset.date || 0); + const db = new Date(b.dataset.date || 0); + return dir === 'up' ? da - db : db - da; + }); + cards.forEach(c => container.appendChild(c)); + + onLayoutChange?.(); + }); + } + + // — Filter by category / location — + const filterBtns = Array.from(pageSort.querySelectorAll('[data-filter]')); + filterBtns.forEach(btn => { + btn.addEventListener('click', () => { + const wasSelected = btn.classList.contains('is-selected'); + + // Ferme le dropdown parent + btn.closest('.dropdown')?.classList.remove('is-open'); + + // Bascule la sélection + filterBtns.forEach(b => b.classList.remove('is-selected')); + const value = wasSelected ? null : btn.getAttribute('data-filter'); + if (!wasSelected) btn.classList.add('is-selected'); + + // Affiche / cache les cards + getCards().forEach(card => { + if (!value) { + card.classList.remove(HIDDEN_CLASS); + } else { + const cardFilters = (card.dataset.filter || '').split(' ').filter(Boolean); + card.classList.toggle(HIDDEN_CLASS, !cardFilters.includes(value)); + } + }); + + onLayoutChange?.(); + }); + }); +} diff --git a/assets/js/swipers.js b/assets/js/swipers.js index c69ed3d..ca08787 100644 --- a/assets/js/swipers.js +++ b/assets/js/swipers.js @@ -18,6 +18,7 @@ export function initSwipers(container = document) { slidesPerView: 1, spaceBetween: 20, speed: 600, + loop: true, // Touch/Swipe settings touchRatio: 1, diff --git a/assets/vendor/swiper/swiper-bundle.min.css b/assets/vendor/swiper/swiper-bundle.min.css new file mode 100644 index 0000000..4a790c3 --- /dev/null +++ b/assets/vendor/swiper/swiper-bundle.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +:root{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px;.swiper-cube-shadow,.swiper-slide{transform-style:preserve-3d}}.swiper-css-mode{>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none;&::-webkit-scrollbar{display:none}}>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}&.swiper-horizontal{>.swiper-wrapper{scroll-snap-type:x mandatory}>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}>.swiper-wrapper>.swiper-slide:last-child{margin-inline-end:var(--swiper-slides-offset-after)}}&.swiper-vertical{>.swiper-wrapper{scroll-snap-type:y mandatory}>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}>.swiper-wrapper>.swiper-slide:last-child{margin-block-end:var(--swiper-slides-offset-after)}}&.swiper-free-mode{>.swiper-wrapper{scroll-snap-type:none}>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}}&.swiper-centered{>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}}&.swiper-centered.swiper-horizontal{>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}}&.swiper-centered.swiper-vertical{>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}}}.swiper-3d{.swiper-slide-shadow,.swiper-slide-shadow-bottom,.swiper-slide-shadow-left,.swiper-slide-shadow-right,.swiper-slide-shadow-top{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}.swiper-slide-shadow{background:#00000026}.swiper-slide-shadow-left{background-image:linear-gradient(270deg,#00000080,#0000)}.swiper-slide-shadow-right{background-image:linear-gradient(90deg,#00000080,#0000)}.swiper-slide-shadow-top{background-image:linear-gradient(0deg,#00000080,#0000)}.swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,#00000080,#0000)}}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid #0000;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible,.swiper:not(.swiper-watch-progress){.swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite}}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode{.swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}}.swiper-virtual.swiper-css-mode.swiper-horizontal{.swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}}.swiper-virtual.swiper-css-mode.swiper-vertical{.swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;position:absolute;width:var(--swiper-navigation-size);z-index:10;&.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}&.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled &{display:none!important}svg{height:100%;object-fit:contain;transform-origin:center;width:100%;fill:currentColor;pointer-events:none}}.swiper-button-lock{display:none}.swiper-button-next,.swiper-button-prev{margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto;.swiper-navigation-icon{transform:rotate(180deg)}}.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal{.swiper-button-next,.swiper-button-prev,~.swiper-button-next,~.swiper-button-prev{margin-left:0;margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}&.swiper-rtl .swiper-button-next,&.swiper-rtl~.swiper-button-next,&~.swiper-button-prev,.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}&.swiper-rtl .swiper-button-prev,&.swiper-rtl~.swiper-button-prev,&~.swiper-button-next,.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}&.swiper-rtl .swiper-button-next,&.swiper-rtl~.swiper-button-next,&~.swiper-button-prev,.swiper-button-prev{.swiper-navigation-icon{transform:rotate(180deg)}}&.swiper-rtl .swiper-button-prev,&.swiper-rtl~.swiper-button-prev{.swiper-navigation-icon{transform:rotate(0deg)}}}.swiper-vertical{.swiper-button-next,.swiper-button-prev,~.swiper-button-next,~.swiper-button-prev{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - var(--swiper-navigation-size)/2);margin-top:0;right:auto}.swiper-button-prev,~.swiper-button-prev{bottom:auto;top:var(--swiper-navigation-sides-offset,4px);.swiper-navigation-icon{transform:rotate(-90deg)}}.swiper-button-next,~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto;.swiper-navigation-icon{transform:rotate(90deg)}}}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10;&.swiper-pagination-hidden{opacity:0}&.swiper-pagination-disabled,.swiper-pagination-disabled>&{display:none!important}}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden;.swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullet-active,.swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullet-active-next-next{transform:scale(.33)}}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));button&{appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable &{cursor:pointer}&:only-child{display:none!important}}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0);.swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}&.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px;.swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}}}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-horizontal.swiper-pagination-bullets{.swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}&.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap;.swiper-pagination-bullet{transition:transform .2s,left .2s}}}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute;.swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl & .swiper-pagination-progressbar-fill{transform-origin:right top}&.swiper-pagination-horizontal,&.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-horizontal>&,.swiper-vertical>&.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}&.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,&.swiper-pagination-vertical,.swiper-horizontal>&.swiper-pagination-progressbar-opposite,.swiper-vertical>&{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,#0000001a);border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;&.swiper-scrollbar-disabled,.swiper-scrollbar-disabled>&{display:none!important}&.swiper-scrollbar-horizontal,.swiper-horizontal>&{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}&.swiper-scrollbar-vertical,.swiper-vertical>&{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%;>canvas,>img,>svg{max-height:100%;max-width:100%;object-fit:contain}}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade{&.swiper-free-mode{.swiper-slide{transition-timing-function:ease-out}}.swiper-slide{pointer-events:none;transition-property:opacity;.swiper-slide{pointer-events:none}}.swiper-slide-active{pointer-events:auto;& .swiper-slide-active{pointer-events:auto}}}.swiper.swiper-cube{overflow:visible}.swiper-cube{.swiper-slide{backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1;.swiper-slide{pointer-events:none}}&.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-slide-active{&,& .swiper-slide-active{pointer-events:auto}}.swiper-slide-active,.swiper-slide-next,.swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0;&:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}}}.swiper-cube{.swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}}.swiper-cube{.swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-slide-shadow-cube.swiper-slide-shadow-top{backface-visibility:hidden;z-index:0}}.swiper.swiper-flip{overflow:visible}.swiper-flip{.swiper-slide{backface-visibility:hidden;pointer-events:none;z-index:1;.swiper-slide{pointer-events:none}}.swiper-slide-active{&,& .swiper-slide-active{pointer-events:auto}}}.swiper-flip{.swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-slide-shadow-flip.swiper-slide-shadow-top{backface-visibility:hidden;z-index:0}}.swiper-creative{.swiper-slide{backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}}.swiper.swiper-cards{overflow:visible}.swiper-cards{.swiper-slide{backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}} \ No newline at end of file diff --git a/assets/vendor/swiper/swiper-bundle.min.mjs b/assets/vendor/swiper/swiper-bundle.min.mjs new file mode 100644 index 0000000..2e3724a --- /dev/null +++ b/assets/vendor/swiper/swiper-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import Virtual from"./modules/virtual.min.mjs";import Keyboard from"./modules/keyboard.min.mjs";import Mousewheel from"./modules/mousewheel.min.mjs";import Navigation from"./modules/navigation.min.mjs";import Pagination from"./modules/pagination.min.mjs";import Scrollbar from"./modules/scrollbar.min.mjs";import Parallax from"./modules/parallax.min.mjs";import Zoom from"./modules/zoom.min.mjs";import Controller from"./modules/controller.min.mjs";import A11y from"./modules/a11y.min.mjs";import History from"./modules/history.min.mjs";import HashNavigation from"./modules/hash-navigation.min.mjs";import Autoplay from"./modules/autoplay.min.mjs";import Thumb from"./modules/thumbs.min.mjs";import freeMode from"./modules/free-mode.min.mjs";import Grid from"./modules/grid.min.mjs";import Manipulation from"./modules/manipulation.min.mjs";import EffectFade from"./modules/effect-fade.min.mjs";import EffectCube from"./modules/effect-cube.min.mjs";import EffectFlip from"./modules/effect-flip.min.mjs";import EffectCoverflow from"./modules/effect-coverflow.min.mjs";import EffectCreative from"./modules/effect-creative.min.mjs";import EffectCards from"./modules/effect-cards.min.mjs";const modules=[Virtual,Keyboard,Mousewheel,Navigation,Pagination,Scrollbar,Parallax,Zoom,Controller,A11y,History,HashNavigation,Autoplay,Thumb,freeMode,Grid,Manipulation,EffectFade,EffectCube,EffectFlip,EffectCoverflow,EffectCreative,EffectCards];Swiper.use(modules);export{Swiper,Swiper as default}; +//# sourceMappingURL=swiper-bundle.min.mjs.map \ No newline at end of file diff --git a/site/blueprints/blocks/heading-sub.yml b/site/blueprints/blocks/heading-sub.yml new file mode 100644 index 0000000..94c8063 --- /dev/null +++ b/site/blueprints/blocks/heading-sub.yml @@ -0,0 +1,23 @@ +name: Titre +icon: title +wysiwyg: true +preview: heading +fields: + level: + label: Niveau + type: toggles + empty: false + default: "h4" + labels: false + options: + - value: h4 + icon: h4 + text: H4 + - value: h5 + icon: h5 + text: H5 + text: + label: Texte + type: writer + inline: true + placeholder: Titre… diff --git a/site/blueprints/blocks/insert.yml b/site/blueprints/blocks/insert.yml new file mode 100644 index 0000000..372494b --- /dev/null +++ b/site/blueprints/blocks/insert.yml @@ -0,0 +1,29 @@ +name: Insert (conclusion, hightlight, notes) +icon: text +preview: fields +fields: + title: + label: Titre + type: text + width: 2/3 + level: + label: Niveau + type: select + default: h3 + width: 1/3 + options: + h3: H3 + h4: H4 + h5: H5 + text: + type: writer + size: huge + marks: + - bold + - italic + - underline + - link + - strike + nodes: + - bulletList + placeholder: Texte d'insert... diff --git a/site/blueprints/fields/investigations.yml b/site/blueprints/fields/investigations.yml index f6c3c0b..c713cc6 100644 --- a/site/blueprints/fields/investigations.yml +++ b/site/blueprints/fields/investigations.yml @@ -1,9 +1,12 @@ label: Enquêtes type: pages parent: page('enquetes') +template: investigation layout: cards -text: "{{ page.title }}, {{ page.subtitle }}" +text: "{{ page.title }}" info: "{{ page.incidentConsequences }} à {{ page.incidentLocation }}" +size: huge +search: true image: cover: true ratio: 16/9 diff --git a/site/blueprints/pages/about.yml b/site/blueprints/pages/about.yml index f06fb49..4b0a0ea 100644 --- a/site/blueprints/pages/about.yml +++ b/site/blueprints/pages/about.yml @@ -4,4 +4,20 @@ tabs: contentTab: label: Contenu icon: page + fields: + title: + label: Titre + type: text + required: true + body: + label: Corps + type: blocks + fieldsets: + - heading-sub + - text + - image + - beforeafter + - video + - gallery + - insert seo: seo/page diff --git a/site/blueprints/pages/contact.yml b/site/blueprints/pages/contact.yml index 7a501e1..77c5075 100644 --- a/site/blueprints/pages/contact.yml +++ b/site/blueprints/pages/contact.yml @@ -3,4 +3,17 @@ title: Contact tabs: contentTab: label: Contenu + icon: page + fields: + title: + label: Titre + type: text + required: true + body: + label: Corps + type: blocks + fieldsets: + - heading + - text + - image seo: seo/page diff --git a/site/blueprints/pages/database.yml b/site/blueprints/pages/database.yml index a406d88..5d91b05 100644 --- a/site/blueprints/pages/database.yml +++ b/site/blueprints/pages/database.yml @@ -24,6 +24,18 @@ columns: methodologies: label: Méthodologies type: tags + impactCategories: + label: Catégories des impacts + type: tags + newsCategories: + label: Catégories des brèves + type: tags + projectCategories: + label: Catégories des projets + type: tags + resourceCategories: + label: Catégories des ressources + type: tags robots: type: hidden default: noindex, nofollow diff --git a/site/blueprints/pages/home.yml b/site/blueprints/pages/home.yml index 80acfda..4942571 100644 --- a/site/blueprints/pages/home.yml +++ b/site/blueprints/pages/home.yml @@ -5,14 +5,37 @@ tabs: label: Contenu icon: page fields: - mainBaseline: - label: Baseline - type: text - help: À gauche des enquêtes. - width: 1/2 - impactsBaseline: - label: Phrase d'introduction des impacts - type: text - help: À gauche des impacts. - width: 1/2 + sections: + label: Sections + type: structure + fields: + baseline: + label: Baseline (colonne gauche) + type: text + width: 1/1 + buttonText: + label: Texte du bouton + type: text + width: 1/2 + buttonLink: + label: Lien du bouton + type: url + width: 1/2 + contentType: + label: Type de contenu + type: select + required: true + options: + investigations: "Enquêtes" + impacts: Impacts + packages: Dossiers + projects: "Projets (Lab)" + news: "Brèves" + width: 1/2 + count: + label: "Nombre d'éléments (min. 4)" + type: number + min: 4 + default: 6 + width: 1/2 seo: seo/page diff --git a/site/blueprints/pages/impact-media.yml b/site/blueprints/pages/impact-media.yml new file mode 100644 index 0000000..f51cd51 --- /dev/null +++ b/site/blueprints/pages/impact-media.yml @@ -0,0 +1,18 @@ +title: Impact médiatique + +fields: + linkedInvestigation: + label: Enquête liée + type: pages + query: page('enquetes').children.listed + multiple: false + layout: list + text: "{{ page.title }}" + info: "{{ page.created }}" + width: 1/2 + entries: + label: Articles et reprises + type: entries + width: 1/2 + field: + type: url diff --git a/site/blueprints/pages/impact.yml b/site/blueprints/pages/impact.yml index 9605ee7..ca8fe0d 100644 --- a/site/blueprints/pages/impact.yml +++ b/site/blueprints/pages/impact.yml @@ -2,9 +2,63 @@ title: Impact tabs: contentTab: - linkedInvestigations: - type: pages - template: investigation - linkedMedias: - type: url + label: Contenu + icon: page + columns: + - width: 2/6 + sections: + createdSection: + type: fields + fields: + created: + label: Date de publication + type: date + display: DD / MM / YYYY + default: today + width: 1/2 + category: + label: Catégorie + type: tags + max: 1 + options: query + query: page('database').impactCategories.split + cover: + label: Image de couverture + type: files + multiple: false + layout: cards + image: + ratio: 12/7 + cover: true + help: Optionnelle — utilisée dans la liste des impacts. Format 16/9. + + - width: 4/6 + fields: + chapo: + label: Chapeau + type: writer + nodes: false + marks: + - bold + - italic + linkedInvestigations: + label: Enquêtes liées + type: pages + query: page('enquetes').children.listed + multiple: true + layout: list + text: "{{ page.title }}" + info: "{{ page.created }}" + body: + label: Corps + type: blocks + fieldsets: + - heading + - text + - image + - beforeafter + - video + - gallery + - insert + seo: seo/page diff --git a/site/blueprints/pages/impacts.yml b/site/blueprints/pages/impacts.yml index f7ffd62..f3db425 100644 --- a/site/blueprints/pages/impacts.yml +++ b/site/blueprints/pages/impacts.yml @@ -3,4 +3,26 @@ title: Impacts tabs: contentTab: label: Contenu + icon: page + columns: + - width: 1/3 + fields: + chapo: + label: Introduction + type: writer + nodes: false + buttons: false + - width: 2/3 + sections: + impactsSection: + type: pages + label: Liste des impacts + templates: + - impact + - impact-media + layout: list + text: "{{ page.title }}" + info: "{{ page.category }} — {{ page.created.toDate('d/m/Y') }}" + sortBy: created desc + seo: seo/page diff --git a/site/blueprints/pages/investigation.yml b/site/blueprints/pages/investigation.yml index e668678..2472705 100644 --- a/site/blueprints/pages/investigation.yml +++ b/site/blueprints/pages/investigation.yml @@ -1,4 +1,11 @@ title: Investigation +status: + draft: + label: Brouillon + text: La page est accessible uniquement pour les éditeurs connectés ou via un lien secret + listed: + label: Public + text: La page est accessible par tout le monde tabs: contentTab: @@ -24,7 +31,7 @@ tabs: image: ratio: 12/7 cover: true - help: Image utilisée dans les listes d'enquêtes + help: Image utilisée dans les listes d'enquêtes. Format 16/9. - width: 4/6 fields: chapo: @@ -32,37 +39,24 @@ tabs: type: writer nodes: false buttons: false - heroType: - label: Type de hero - type: select - default: image - options: - image: Image simple - video: Vidéo - default: image - width: 1/3 - heroImages: - label: Images hero - type: files - multiple: true - layout: cards - width: 1/3 - when: - heroType: image videoPreview: - label: Preview + label: Preview vidéo type: files multiple: false - help: Extrait joué en autoplay muet. - width: 1/3 - when: - heroType: video + help: "Extrait joué en autoplay muet. À remplir avec l'URL vidéo — les deux champs vont ensemble." + width: 1/2 videoUrl: label: URL vidéo complète (YouTube embed) type: url - width: 1/3 - when: - heroType: video + width: 1/2 + help: "À remplir avec la preview — les deux champs vont ensemble." + heroCaption: + label: Légende du hero + type: writer + nodes: false + marks: + - italic + help: "Recommandé : 140 caractères max" body: label: Corps type: layout @@ -77,6 +71,7 @@ tabs: - video # - horizontal-gallery - gallery + - insert metadataTab: label: Métadonnées icon: table @@ -127,7 +122,7 @@ tabs: team: label: Équipe Index type: structure - width: 2/4 + help: Le « rôle » s’affiche entre parenthèses columns: name: label: Nom diff --git a/site/blueprints/pages/investigations.yml b/site/blueprints/pages/investigations.yml index d2d73cc..7b15b5a 100644 --- a/site/blueprints/pages/investigations.yml +++ b/site/blueprints/pages/investigations.yml @@ -3,6 +3,41 @@ title: Investigations tabs: contentTab: label: Contenu - sections: - investigations: fields/investigations + icon: page + columns: + - width: 1/3 + fields: + chapo: + label: Introduction + type: writer + nodes: false + buttons: false + - width: 2/3 + sections: + investigations: fields/investigations + starredTab: + label: En avant + icon: star + fields: + featuredInvestigation: + label: À la une + type: pages + query: page('enquetes').children.listed + multiple: false + max: 1 + layout: list + text: "{{ page.title }}" + info: "{{ page.incidentDate }}" + width: 1/3 + help: Affichée en tête et en plus grand, avec son média de couverture (vidéo ou image). + pinnedInvestigations: + label: Enquêtes épinglées + type: pages + query: page('enquetes').children.listed + multiple: true + layout: list + text: "{{ page.title }}" + info: "{{ page.incidentDate }}" + width: 2/3 + help: Affichées après l'enquête "à la une", avant les autres mais dans le même format, simplement marquées par une 📌. seo: seo/page diff --git a/site/blueprints/pages/lab.yml b/site/blueprints/pages/lab.yml new file mode 100644 index 0000000..5764d3f --- /dev/null +++ b/site/blueprints/pages/lab.yml @@ -0,0 +1,27 @@ +title: Laboratoire + +tabs: + contentTab: + label: Contenu + icon: page + columns: + - width: 1/3 + fields: + chapo: + label: Introduction + type: writer + nodes: false + buttons: false + - width: 2/3 + sections: + projectsSection: + type: pages + label: Liste des projets + template: project + create: project + layout: list + text: "{{ page.title }}" + info: "{{ page.category }} — {{ page.created.toDate('d/m/Y') }}" + sortBy: created desc + + seo: seo/page diff --git a/site/blueprints/pages/laboratory.yml b/site/blueprints/pages/laboratory.yml deleted file mode 100644 index 72a6b68..0000000 --- a/site/blueprints/pages/laboratory.yml +++ /dev/null @@ -1,6 +0,0 @@ -title: Laboratoire - -tabs: - contentTab: - label: Contenu - seo: seo/page diff --git a/site/blueprints/pages/legal-notices.yml b/site/blueprints/pages/legal-notices.yml index 5ba6fbe..d911925 100644 --- a/site/blueprints/pages/legal-notices.yml +++ b/site/blueprints/pages/legal-notices.yml @@ -3,4 +3,37 @@ title: Mentions légales tabs: contentTab: label: Contenu + icon: page + fields: + title: + label: Titre + type: text + required: true + definitions: + label: Tableau de définitions + help: Affiché sous forme de liste en deux colonnes (terme — définition) + type: structure + fields: + term: + label: Terme + type: text + width: 1/3 + definition: + label: Définition + type: writer + width: 2/3 + marks: + - bold + - italic + - highlight + - link + nodes: + - bulletList + - orderedList + body: + label: Corps + type: blocks + fieldsets: + - heading-sub + - text seo: seo/page diff --git a/site/blueprints/pages/news-item.yml b/site/blueprints/pages/news-item.yml new file mode 100644 index 0000000..8b8b063 --- /dev/null +++ b/site/blueprints/pages/news-item.yml @@ -0,0 +1,64 @@ +title: Brève + +tabs: + contentTab: + label: Contenu + icon: page + columns: + - width: 2/6 + sections: + createdSection: + type: fields + fields: + created: + label: Date de publication + type: date + display: DD / MM / YYYY + default: today + width: 1/2 + category: + label: Catégorie + type: tags + max: 1 + options: query + query: page('database').newsCategories.split + cover: + label: Image de couverture + type: files + multiple: false + layout: cards + image: + ratio: 12/7 + cover: true + help: Optionnelle — utilisée dans la liste des brèves. Format 16/9. + + - width: 4/6 + fields: + chapo: + label: Chapeau + type: writer + nodes: false + marks: + - bold + - italic + linkedInvestigations: + label: Enquêtes liées + type: pages + query: page('enquetes').children.listed + multiple: true + layout: list + text: "{{ page.title }}" + info: "{{ page.created }}" + body: + label: Corps + type: blocks + fieldsets: + - heading + - text + - image + - beforeafter + - video + - gallery + - insert + + seo: seo/page diff --git a/site/blueprints/pages/news.yml b/site/blueprints/pages/news.yml new file mode 100644 index 0000000..c576d55 --- /dev/null +++ b/site/blueprints/pages/news.yml @@ -0,0 +1,27 @@ +title: Brèves + +tabs: + contentTab: + label: Contenu + icon: page + columns: + - width: 1/3 + fields: + chapo: + label: Introduction + type: writer + nodes: false + buttons: false + - width: 2/3 + sections: + newsSection: + type: pages + label: Liste des brèves + template: news-item + create: news-item + layout: list + text: "{{ page.title }}" + info: "{{ page.category }} — {{ page.created.toDate('d/m/Y') }}" + sortBy: created desc + + seo: seo/page diff --git a/site/blueprints/pages/newsletter.yml b/site/blueprints/pages/newsletter.yml new file mode 100644 index 0000000..ec63d2a --- /dev/null +++ b/site/blueprints/pages/newsletter.yml @@ -0,0 +1,30 @@ +title: Newsletter + +tabs: + contentTab: + label: Contenu + icon: email + fields: + title: + label: Titre + type: text + required: true + chapo: + label: Chapeau + type: writer + nodes: false + marks: + - bold + - italic + - underline + - link + details: + label: Détails + type: writer + nodes: false + marks: + - bold + - italic + - underline + - link + seo: seo/page diff --git a/site/blueprints/pages/package.yml b/site/blueprints/pages/package.yml index 53adfe5..ba7917f 100644 --- a/site/blueprints/pages/package.yml +++ b/site/blueprints/pages/package.yml @@ -9,18 +9,35 @@ tabs: label: Visuel de couverture type: files multiple: false + required: true layout: cards width: 1/3 image: ratio: 12/7 cover: true - help: Image utilisée dans la liste des dossiers + help: Image utilisée dans la liste des dossiers. Format 16/9. description: label: Description type: writer width: 2/3 linkedContent: - label: Contenu + label: Enquêtes type: pages query: site.find('enquetes').children + linkedImpacts: + label: Impacts + type: pages + query: site.find('impacts').children + linkedResources: + label: Ressources + type: pages + query: site.find('ressources').children + linkedNews: + label: Brèves + type: pages + query: site.find('news').children + linkedProjects: + label: Projets (Lab) + type: pages + query: site.find('laboratoire').children seo: seo/page diff --git a/site/blueprints/pages/packages.yml b/site/blueprints/pages/packages.yml index 668dc8e..38481e0 100644 --- a/site/blueprints/pages/packages.yml +++ b/site/blueprints/pages/packages.yml @@ -3,17 +3,27 @@ title: Dossiers tabs: contentTab: label: Contenu - sections: - packages: - label: Dossiers - type: pages - text: "{{ page.title }}" - info: "{{ page.linkedContent.toPages.count }} contenus" - layout: cards - size: huge - search: true - image: - cover: true - ratio: 12/7 - template: package + icon: page + columns: + - width: 1/3 + fields: + chapo: + label: Introduction + type: writer + nodes: false + buttons: false + - width: 2/3 + sections: + packages: + label: Dossiers + type: pages + text: "{{ page.title }}" + info: "{{ page.linkedContent.toPages.count }} contenus" + layout: cards + size: huge + search: true + image: + cover: true + ratio: 12/7 + template: package seo: seo/page diff --git a/site/blueprints/pages/privacy-policy.yml b/site/blueprints/pages/privacy-policy.yml new file mode 100644 index 0000000..bd1b5a5 --- /dev/null +++ b/site/blueprints/pages/privacy-policy.yml @@ -0,0 +1,18 @@ +title: Politique de confidentialité + +tabs: + contentTab: + label: Contenu + icon: page + fields: + title: + label: Titre + type: text + required: true + body: + label: Corps + type: blocks + fieldsets: + - heading-sub + - text + seo: seo/page diff --git a/site/blueprints/pages/project.yml b/site/blueprints/pages/project.yml new file mode 100644 index 0000000..00c00a7 --- /dev/null +++ b/site/blueprints/pages/project.yml @@ -0,0 +1,64 @@ +title: Projet + +tabs: + contentTab: + label: Contenu + icon: page + columns: + - width: 2/6 + sections: + createdSection: + type: fields + fields: + created: + label: Date de publication + type: date + display: DD / MM / YYYY + default: today + width: 1/2 + category: + label: Catégorie + type: tags + max: 1 + options: query + query: page('database').projectCategories.split + cover: + label: Image de couverture + type: files + multiple: false + layout: cards + image: + ratio: 12/7 + cover: true + help: Optionnelle — utilisée dans la liste des projets. Format 16/9. + + - width: 4/6 + fields: + chapo: + label: Chapeau + type: writer + nodes: false + marks: + - bold + - italic + linkedInvestigations: + label: Enquêtes liées + type: pages + query: page('enquetes').children.listed + multiple: true + layout: list + text: "{{ page.title }}" + info: "{{ page.created }}" + body: + label: Corps + type: blocks + fieldsets: + - heading + - text + - image + - beforeafter + - video + - gallery + - insert + + seo: seo/page diff --git a/site/blueprints/pages/resource.yml b/site/blueprints/pages/resource.yml new file mode 100644 index 0000000..4379869 --- /dev/null +++ b/site/blueprints/pages/resource.yml @@ -0,0 +1,64 @@ +title: Ressource + +tabs: + contentTab: + label: Contenu + icon: page + columns: + - width: 2/6 + sections: + createdSection: + type: fields + fields: + created: + label: Date de publication + type: date + display: DD / MM / YYYY + default: today + width: 1/2 + category: + label: Catégorie + type: tags + max: 1 + options: query + query: page('database').resourceCategories.split + cover: + label: Image de couverture + type: files + multiple: false + layout: cards + image: + ratio: 12/7 + cover: true + help: Optionnelle — utilisée dans la liste des ressources. Format 16/9. + + - width: 4/6 + fields: + chapo: + label: Chapeau + type: writer + nodes: false + marks: + - bold + - italic + linkedInvestigations: + label: Enquêtes liées + type: pages + query: page('enquetes').children.listed + multiple: true + layout: list + text: "{{ page.title }}" + info: "{{ page.created }}" + body: + label: Corps + type: blocks + fieldsets: + - heading + - text + - image + - beforeafter + - video + - gallery + - insert + + seo: seo/page diff --git a/site/blueprints/pages/resources.yml b/site/blueprints/pages/resources.yml index c2bec4e..ae0f17f 100644 --- a/site/blueprints/pages/resources.yml +++ b/site/blueprints/pages/resources.yml @@ -1,7 +1,27 @@ -title: Resources +title: Ressources tabs: contentTab: label: Contenu icon: page + columns: + - width: 1/3 + fields: + chapo: + label: Introduction + type: writer + nodes: false + buttons: false + - width: 2/3 + sections: + resourcesSection: + type: pages + label: Liste des ressources + template: resource + create: resource + layout: list + text: "{{ page.title }}" + info: "{{ page.category }} — {{ page.created.toDate('d/m/Y') }}" + sortBy: created desc + seo: seo/page diff --git a/site/blueprints/pages/support.yml b/site/blueprints/pages/support.yml deleted file mode 100644 index 9d69b63..0000000 --- a/site/blueprints/pages/support.yml +++ /dev/null @@ -1,46 +0,0 @@ -title: Nous soutenir - -tabs: - contentTab: - sections: - supportFields: - type: fields - fields: - heroHeadline: - type: headline - label: Hero - heroMedia: - label: Media de couverture - type: files - multiple: false - layout: cards - help: image ou vidéo affichée dans le héro, sous la phrase d'accroche - heroCatchPhrase: - label: Phrase d'accroche - type: text - heroBaseline: - label: Baseline - type: text - donorLine: - type: line - donorHeadline: - label: Dons - type: headline - donorCatchPhrase: - label: Phrase d'accroche - type: text - FAQLine: - type: line - FAQHeadline: - label: Questions fréquentes - type: headline - FAQQuestions: - label: Questions / réponses - type: structure - fields: - question: - type: text - answer: - label: Réponse - type: text - seo: seo/page diff --git a/site/config/config.php b/site/config/config.php index 2a6e19e..bb91ad5 100644 --- a/site/config/config.php +++ b/site/config/config.php @@ -4,6 +4,11 @@ return [ 'debug' => true, 'languages' => true, 'date.handler' => 'intl', + // 'auth' => [ + // 'methods' => [ + // 'password' => ['2fa' => true] + // ] + // ], 'thumbs' => [ 'quality' => 80, 'presets' => [ @@ -11,21 +16,58 @@ return [ 'default' => [ 'width' => 1024, 'format' => 'webp' ], - 'full' => 2048, + 'full' => 2048, 'format' => 'webp' ], 'srcsets' => [ 'default' => [200, 400, 600, 800, 1024, 1440, 2048], 'webp' => [ - '300w' => ['width' => 300 * 1.2, 'format' => 'webp'], - '600w' => ['width' => 600 * 1.2, 'format' => 'webp'], - '900w' => ['width' => 900 * 1.2, 'format' => 'webp'], - '1200w' => ['width' => 1200 * 1.2, 'format' => 'webp'], + '300w' => ['width' => 300, 'format' => 'webp'], + '600w' => ['width' => 600, 'format' => 'webp'], + '900w' => ['width' => 900, 'format' => 'webp'], + '1200w' => ['width' => 1200, 'format' => 'webp'], + ], + // Cover cards investigations : 465px fixe ≥1000px, 50vw 728–1000px, 100vw <728px + // Widths couvrent 1x et 2x (retina) pour chaque breakpoint + 'cover-card' => [465, 728, 930, 1000, 1456], + 'cover-card-webp' => [ + '465w' => ['width' => 465, 'format' => 'webp'], + '728w' => ['width' => 728, 'format' => 'webp'], + '930w' => ['width' => 930, 'format' => 'webp'], + '1000w' => ['width' => 1000, 'format' => 'webp'], + '1456w' => ['width' => 1456, 'format' => 'webp'], + ], + // Hero cover investigation : 940px fixe ≥1000px, 90vw en dessous + 'cover-hero' => [680, 940, 1200, 1880], + 'cover-hero-webp' => [ + '680w' => ['width' => 680, 'format' => 'webp'], + '940w' => ['width' => 940, 'format' => 'webp'], + '1200w' => ['width' => 1200, 'format' => 'webp'], + '1880w' => ['width' => 1880, 'format' => 'webp'], + ], + // Body 1 colonne : 100vw + 'body-full' => [750, 1000, 1440, 1880], + 'body-full-webp' => [ + '750w' => ['width' => 750, 'format' => 'webp'], + '1000w' => ['width' => 1000, 'format' => 'webp'], + '1440w' => ['width' => 1440, 'format' => 'webp'], + '1880w' => ['width' => 1880, 'format' => 'webp'], + ], + // Body 2 colonnes : 50vw ≥768px, 90vw en dessous + 'body-half' => [680, 720, 1000, 1380, 1440], + 'body-half-webp' => [ + '680w' => ['width' => 680, 'format' => 'webp'], + '720w' => ['width' => 720, 'format' => 'webp'], + '1000w' => ['width' => 1000, 'format' => 'webp'], + '1380w' => ['width' => 1380, 'format' => 'webp'], + '1440w' => ['width' => 1440, 'format' => 'webp'], ], ], ], 'panel' => [ - 'menu' => require_once __DIR__ . '/menu.php' + 'menu' => require_once __DIR__ . '/menu.php', + 'css' => '/assets/css/panel.css', + 'home' => 'pages/home', ], 'donorbox' => [ 'api_key' => '', // À remplir avec la clé API Donorbox @@ -35,6 +77,14 @@ return [ ], 'tobimori.seo.canonicalBase' => 'https://www.index.ngo', + 'cache' => [ + 'og' => true, + ], + + 'routes' => [ + require(__DIR__ . '/routes/newsletter.php'), + ], + 'hooks' => [ 'page.update:after' => function ($newPage) { if ($newPage->intendedTemplate()->name() !== 'investigation') { @@ -71,4 +121,4 @@ return [ } } ] -]; \ No newline at end of file +]; diff --git a/site/config/menu.php b/site/config/menu.php index d557ec6..a844971 100644 --- a/site/config/menu.php +++ b/site/config/menu.php @@ -1,25 +1,16 @@ [ - 'label' => 'Dashboard', - 'icon' => 'bolt', - 'link' => '/', - 'current' => function (string $current): bool { - $path = Kirby\Cms\App::instance()->path(); - return Str::contains($path, '/site'); - } - ], - '-', 'home' => [ 'label' => 'Accueil', 'icon' => 'home', 'link' => 'pages/home', 'current' => function (string $current): bool { $path = Kirby\Cms\App::instance()->path(); - return Str::contains($path, 'pages/home'); + return $path === '' || Str::contains($path, 'pages/home'); } ], + '-', 'enquetes' => [ 'label' => 'Enquêtes', 'icon' => 'pen', @@ -38,6 +29,15 @@ return [ return Str::contains($path, 'pages/impacts'); } ], + 'news' => [ + 'label' => 'Brèves', + 'icon' => 'bell', + 'link' => 'pages/news', + 'current' => function (string $current): bool { + $path = Kirby\Cms\App::instance()->path(); + return Str::contains($path, 'pages/news'); + } + ], 'dossiers' => [ 'label' => 'Dossiers', 'icon' => 'folder', @@ -77,13 +77,31 @@ return [ ], 'legal-notices' => [ 'label' => 'Mentions légales', - 'icon' => 'email', + 'icon' => 'edit-line', 'link' => 'pages/mentions-legales', 'current' => function (string $current): bool { $path = Kirby\Cms\App::instance()->path(); return Str::contains($path, 'pages/mentions-legales'); } ], + 'newsletter' => [ + 'label' => 'Newsletter', + 'icon' => 'email', + 'link' => 'pages/newsletter', + 'current' => function (string $current): bool { + $path = Kirby\Cms\App::instance()->path(); + return Str::contains($path, 'pages/newsletter'); + } + ], + 'privacy-policy' => [ + 'label' => 'Politique de confidentialité', + 'icon' => 'lock', + 'link' => 'pages/politique-de-confidentialite', + 'current' => function (string $current): bool { + $path = Kirby\Cms\App::instance()->path(); + return Str::contains($path, 'pages/politique-de-confidentialite'); + } + ], '-', 'database' => [ 'label' => 'Bases de données', diff --git a/site/config/routes/newsletter.php b/site/config/routes/newsletter.php new file mode 100644 index 0000000..bc3cc5e --- /dev/null +++ b/site/config/routes/newsletter.php @@ -0,0 +1,116 @@ + 'newsletter/subscribe', + 'method' => 'POST|OPTIONS', + 'action' => function () { + header('Content-Type: application/json'); + + if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { + http_response_code(200); + die(); + } + + $config = kirby()->option('brevo'); + $apiKey = $config['api_key'] ?? ''; + $listId = (int)($config['list_id'] ?? 2); + $apiUrl = $config['api_url'] ?? 'https://api.brevo.com/v3/contacts'; + + if (empty($apiKey)) { + http_response_code(500); + die(json_encode(['error' => 'Server configuration error', 'message' => 'Brevo API key not configured'])); + } + + $input = file_get_contents('php://input'); + $data = json_decode($input, true); + + if (!isset($data['email']) || empty($data['email'])) { + http_response_code(400); + die(json_encode(['error' => 'Email required'])); + } + + $email = filter_var($data['email'], FILTER_VALIDATE_EMAIL); + if ($email === false) { + http_response_code(400); + die(json_encode(['error' => 'Invalid email'])); + } + + $brevoData = [ + 'email' => $email, + 'listIds' => [$listId], + 'updateEnabled' => true, + ]; + + if (isset($data['attributes']) && is_array($data['attributes']) && !empty($data['attributes'])) { + $brevoData['attributes'] = $data['attributes']; + } + + $ch = curl_init(); + curl_setopt_array($ch, [ + CURLOPT_URL => $apiUrl, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => json_encode($brevoData), + CURLOPT_HTTPHEADER => [ + 'Content-Type: application/json', + 'api-key: ' . $apiKey, + 'User-Agent: Index-NGO-Newsletter', + ], + CURLOPT_TIMEOUT => 10, + CURLOPT_SSL_VERIFYPEER => true, + ]); + + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $curlError = curl_error($ch); + curl_close($ch); + + if ($response === false) { + http_response_code(500); + die(json_encode(['error' => 'Connection error', 'details' => $curlError])); + } + + $responseData = json_decode($response, true); + + switch ($httpCode) { + case 201: + case 204: + http_response_code(200); + die(json_encode(['success' => true, 'message' => 'Successfully subscribed', 'email' => $email])); + + case 400: + $isDuplicate = isset($responseData['code']) && $responseData['code'] === 'duplicate_parameter'; + http_response_code(400); + die(json_encode([ + 'error' => $isDuplicate ? 'email_already_exists' : 'invalid_data', + 'message' => $isDuplicate ? 'You are already subscribed!' : 'Invalid email address.', + 'user_message' => $isDuplicate ? 'Vous êtes déjà inscrit·e !' : 'Veuillez vérifier votre adresse email.', + ])); + + case 401: + http_response_code(500); + die(json_encode([ + 'error' => 'invalid_api_key', + 'message' => 'Invalid API key', + 'user_message' => 'Une erreur technique est survenue. Veuillez réessayer plus tard.', + ])); + + case 404: + http_response_code(500); + die(json_encode([ + 'error' => 'list_not_found', + 'message' => 'Contact list not found', + 'user_message' => 'Une erreur technique est survenue. Veuillez réessayer plus tard.', + ])); + + default: + http_response_code($httpCode); + die(json_encode([ + 'error' => 'api_error', + 'message' => 'Error communicating with subscription service', + 'user_message' => 'Une erreur est survenue. Veuillez réessayer.', + 'http_code' => $httpCode, + ])); + } + }, +]; diff --git a/site/languages/en.php b/site/languages/en.php index 8441bf0..31a2559 100644 --- a/site/languages/en.php +++ b/site/languages/en.php @@ -6,4 +6,29 @@ return [ 'locale' => 'en_US.UTF-8', 'name' => 'English', 'url' => '/en', + 'translations' => [ + 'impact.type' => 'Impact', + 'impact.type.plural' => 'Impacts', + 'impacts.title' => 'Impacts', + 'news.type' => 'News', + 'news.type.plural' => 'News', + 'news.title' => 'News', + 'investigation.type' => 'Investigation', + 'investigation.type.plural' => 'Investigations', + 'investigations.title' => 'Investigations', + 'investigations.related' => 'Related investigations', + 'investigations.see_all' => 'See all investigations', + 'filter.all' => 'All', + 'filter.all.m' => 'All', + 'package.type' => 'Folder', + 'packages.title' => 'Folders', + 'project.type' => 'Project', + 'project.type.plural' => 'Projects', + 'projects.title' => 'Projects', + 'lab.title' => 'Laboratory', + 'resource.type' => 'Resource', + 'resource.type.plural' => 'Resources', + 'resources.title' => 'Resources', + 'resources.methodologies' => 'Methodologies', + ], ]; \ No newline at end of file diff --git a/site/languages/fr.php b/site/languages/fr.php index 77fc6a6..28bc650 100644 --- a/site/languages/fr.php +++ b/site/languages/fr.php @@ -7,4 +7,29 @@ return [ 'locale' => 'fr_FR.UTF-8', 'name' => 'Français', 'url' => '/', + 'translations' => [ + 'impact.type' => 'Impact', + 'impact.type.plural' => 'Impacts', + 'impacts.title' => 'Impacts', + 'news.type' => 'Brève', + 'news.type.plural' => 'Brèves', + 'news.title' => 'Brèves', + 'investigation.type' => 'Enquête', + 'investigation.type.plural' => 'Enquêtes', + 'investigations.title' => 'Enquêtes', + 'investigations.related' => 'Enquêtes liées', + 'investigations.see_all' => 'Voir toutes les enquêtes', + 'filter.all' => 'Toutes', + 'filter.all.m' => 'Tous', + 'package.type' => 'Dossier', + 'packages.title' => 'Dossiers', + 'project.type' => 'Projet', + 'project.type.plural' => 'Projets', + 'projects.title' => 'Projets', + 'lab.title' => 'Laboratoire', + 'resource.type' => 'Ressource', + 'resource.type.plural' => 'Ressources', + 'resources.title' => 'Ressources', + 'resources.methodologies' => 'Méthodologies', + ], ]; \ No newline at end of file diff --git a/site/plugins/beforeafter/snippets/blocks/beforeafter.php b/site/plugins/beforeafter/snippets/blocks/beforeafter.php index 8718c07..dfc31ac 100644 --- a/site/plugins/beforeafter/snippets/blocks/beforeafter.php +++ b/site/plugins/beforeafter/snippets/blocks/beforeafter.php @@ -1,8 +1,8 @@ imageBefore()->toFile(); -$imageAfter = $block->imageAfter()->toFile(); -$caption = $block->caption()->value(); +$imageAfter = $block->imageAfter()->toFile(); +$caption = $block->caption()->value(); ?> diff --git a/site/snippets/back-to-top.php b/site/snippets/back-to-top.php index 8868e95..530ba66 100644 --- a/site/snippets/back-to-top.php +++ b/site/snippets/back-to-top.php @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/site/snippets/blocks/gallery.php b/site/snippets/blocks/gallery.php new file mode 100644 index 0000000..4e03f0c --- /dev/null +++ b/site/snippets/blocks/gallery.php @@ -0,0 +1,30 @@ +images()->toFiles(); +$imgSizes = $imgSizes ?? '(min-width: 768px) 50vw, 90vw'; +$imgSrcset = $imgSrcset ?? 'body-half'; +?> + +
+
+ +
+
+ $image, + 'alt' => $image->alt()->value(), + 'sizes' => $imgSizes, + 'srcsetName' => $imgSrcset, + 'lazy' => true, + ]) ?> + caption()->isNotEmpty()): ?> +
caption()->html() ?>
+ +
+
+ +
+
+
+
+
diff --git a/site/snippets/blocks/insert.php b/site/snippets/blocks/insert.php new file mode 100644 index 0000000..d12e2b3 --- /dev/null +++ b/site/snippets/blocks/insert.php @@ -0,0 +1,11 @@ + +
+
+ title()->isNotEmpty()): ?> + <level()->or('h3') ?>>title()->esc() ?>level()->or('h3') ?>> + + text() ?> +
+
diff --git a/site/snippets/bottom-bar.php b/site/snippets/bottom-bar.php new file mode 100644 index 0000000..5cfb02c --- /dev/null +++ b/site/snippets/bottom-bar.php @@ -0,0 +1,43 @@ +
+ +
+ +
+
+
+ + intendedTemplate()->name() === 'investigation'): ?> +
+

Enquête

+

title()->esc() ?>

+
+ + + + + + intendedTemplate()->name() === 'investigation'): ?> + + + + + + + +
+
diff --git a/site/snippets/card-open-graph.php b/site/snippets/card-open-graph.php index 9853bf8..73f54b8 100644 --- a/site/snippets/card-open-graph.php +++ b/site/snippets/card-open-graph.php @@ -1,111 +1,109 @@ - '', - 'description' => '', - 'image' => '', - 'site_name' => '', - 'url' => $url - ]; +if (empty($url)) return; - // 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 - ] - ]); +$cache = kirby()->cache('og'); +$cacheKey = md5($url); +$ogData = $cache->get($cacheKey); - // Récupérer le HTML - $html = @file_get_contents($url, false, $context); +if ($ogData === null) { + $ogData = [ + 'title' => '', + 'description' => '', + 'image' => '', + 'site_name' => '', + 'url' => $url, + ]; - if ($html === false) { - return $ogData; - } + $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, + ], + ]); - // Parser les meta tags Open Graph - preg_match_all('/ $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; - } - } - } + if ($html !== false) { + // Parse OG meta tags (both property...content and content...property orders) + preg_match_all('/ - if (empty($ogData['title'])) { - preg_match('/([^<]+)<\/title>/i', $html, $titleMatch); - if (!empty($titleMatch[1])) { - $ogData['title'] = htmlspecialchars($titleMatch[1]); - } - } + if (!empty($matches[1])) { + foreach ($matches[1] as $index => $property) { + $prop = $property ?: $matches[4][$index]; + $content = $matches[2][$index] ?: $matches[3][$index]; + $content = html_entity_decode(trim($content), ENT_QUOTES | ENT_HTML5, 'UTF-8'); + switch ($prop) { + case 'title': + $ogData['title'] = $content; + break; + case 'description': + $ogData['description'] = $content; + break; + case 'image': + $ogData['image'] = $content; + break; + case 'site_name': + $ogData['site_name'] = $content; + break; + } + } + } - // Fallback: si pas de site_name, utiliser le domaine - if (empty($ogData['site_name'])) { - $parsed = parse_url($url); - $ogData['site_name'] = $parsed['host'] ?? ''; - } + // Fallback: use <title> if no og:title + if (empty($ogData['title'])) { + preg_match('/<title>([^<]+)<\/title>/i', $html, $titleMatch); + if (!empty($titleMatch[1])) { + $ogData['title'] = html_entity_decode($titleMatch[1], ENT_QUOTES, 'UTF-8'); + } + } + } - return $ogData; - } + // Always use domain as site_name + $parsed = parse_url($url); + $ogData['site_name'] = $parsed['host'] ?? ''; - $ogData = getOpenGraphData($url); + $cache->set($cacheKey, $ogData, 360); // 6 hours +} +?> - // Toujours utiliser le domaine de l'URL pour site_name - $parsed = parse_url($url); - $ogData['site_name'] = $parsed['host'] ?? ''; - ?> +<div class="card--open-graph"> + <div class="open-graph__inner"> - <div class="card--open-graph"> - <div class="open-graph__inner"> + <?php if (!empty($ogData['image'])): ?> + <figure> + <img src="<?= htmlspecialchars($ogData['image']) ?>" alt=""> + </figure> + <?php endif ?> - <?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"><?= htmlspecialchars($ogData['site_name']) ?></span> + <?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="<?= htmlspecialchars($ogData['url']) ?>" target="_blank"> + <?= htmlspecialchars($ogData['title']) ?> + </a> + </h3> + <?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> - </div> \ No newline at end of file + <?php if (!empty($ogData['description'])): ?> + <p class="description"><?= htmlspecialchars($ogData['description']) ?></p> + <?php endif ?> + </div> + <a class="link-block" href="<?= htmlspecialchars($ogData['url']) ?>" target="_blank"></a> +</div> +</div> diff --git a/site/snippets/footer.php b/site/snippets/footer.php index 0636217..804e669 100644 --- a/site/snippets/footer.php +++ b/site/snippets/footer.php @@ -1,65 +1,41 @@ <?php snippet('back-to-top') ?> + +<div id="support-bar"> + <div class="support-bar__container"> + <p class="baseline">Pour continuer à enquêter, nous avons besoin de vous</p> + <button class="btn"><a targer="_blank" href="https://soutenir.index.ngo/">Soutenez-nous</a></button> + </div> +</div> + + <footer id="site-footer"> + + <div class="site-footer__container"> - <div class="logo"><?= svg('assets/images/index-logo.svg') ?></div> - - <div class="footer__newsletter"> - - <p> - Recevez les dernières enquêtes et actualités d’Index directement - dans votre boîte mail. - </p> - <p>Inscrivez-vous à la newsletter</p> - - <form class="form__newsletter"> - <input - type="email" - name="email" - placeholder="Votre adresse e-mail" - required - /> - <button class="btn--newletter" type="submit" aria-label="s’inscrire"> - <span class="txt">S’inscrire</span> - <span class="icon"> - <svg - clip-rule="evenodd" - fill-rule="evenodd" - stroke-linejoin="round" - stroke-miterlimit="2" - viewBox="0 0 24 24" - xmlns="http://www.w3.org/2000/svg" - > - <path - d="m14.523 18.787s4.501-4.505 6.255-6.26c.146-.146.219-.338.219-.53s-.073-.383-.219-.53c-1.753-1.754-6.255-6.258-6.255-6.258-.144-.145-.334-.217-.524-.217-.193 0-.385.074-.532.221-.293.292-.295.766-.004 1.056l4.978 4.978h-14.692c-.414 0-.75.336-.75.75s.336.75.75.75h14.692l-4.979 4.979c-.289.289-.286.762.006 1.054.148.148.341.222.533.222.19 0 .378-.072.522-.215z" - fill-rule="nonzero" - /> - </svg> - </span> - </button> - </form> - - <p class="p__small"> - En vous inscrivant, vous acceptez les - <a target="_blank" href="https://www.index.ngo/mentions-legales/" - >conditions d’utilisation</a - > - d’Index qui vous informent notamment des droits dont vous disposez - sur vos données personnelles. - </p> + <div class="logo"><?= svg('assets/images/index-logo.svg') ?></div> + <p class="baseline">Index est une ONG d’investigation numérique, au service du public, de la vérité et de la justice.</p> + + <div class="list-links"> + <ul> + <li><a target="_blank" href="<?= page('mentions-legales')->url() ?>"><?= kirby()->language() && kirby()->language()->code() === 'en' ? 'Legal notices' : 'Mentions légales' ?></a></li> + <li><a target="_blank" href="<?= page('politique-de-confidentialite')->url() ?>"><?= kirby()->language() && kirby()->language()->code() === 'en' ? 'Privacy policy' : 'Politique de confidentialité' ?></a></li> + </ul> + <ul class="hightlight"> + <li><a target="_blank" href="#">Contact</a></li> + <li><a target="_blank" href="#">Newsletter</a></li> + </ul> + </div> - <div class="footer__socials"> - <p>Suivez Index sur les réseaux sociaux</p> + <?php snippet('socials') ?> - </div> + + <p class="credits"> + © 2025 Index Investigation | Site développé par <a href="https://studio-variable.com/" target="_blank">Studio Variable</a> + </p> - <div class="footer__mentions"> - <p> - © 2025 Index Investigation | - <a target="_blank" href="https://www.index.ngo/mentions-legales/">Mentions légales</a> - </p> - </div> + </div> </footer> <?php snippet('seo/schemas'); ?> diff --git a/site/snippets/header.php b/site/snippets/header.php index f932dc2..96f4d02 100644 --- a/site/snippets/header.php +++ b/site/snippets/header.php @@ -7,12 +7,6 @@ <link rel="stylesheet" type="text/css" href="<?= url('assets/fonts/stylesheet.css') ?>"> <script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script> <meta name="robots" content="noindex,nofollow"> - <title> - <?php if ($page->isHomePage() == false): ?> - <?= $page->title() ?> |  - <?php endif ?> - <?= $site->title() ?> - - -

L’exécution de Nidal et Khaled ‘Amirah à Naplouse

- + + template() == 'investigation'): ?> + + + diff --git a/site/snippets/modal-share.php b/site/snippets/modal-share.php index e0a4037..b96cbfa 100644 --- a/site/snippets/modal-share.php +++ b/site/snippets/modal-share.php @@ -1,52 +1,52 @@ +url(); +$shareTitle = $page->title()->value(); +if ($page->subtitle()->isNotEmpty()) { + $shareTitle .= ' — ' . $page->subtitle()->value(); +} +$shareText = $shareTitle . ' — ' . $shareUrl; +?> diff --git a/site/snippets/nav.php b/site/snippets/nav.php index a3e74f4..137a6f9 100644 --- a/site/snippets/nav.php +++ b/site/snippets/nav.php @@ -1,4 +1,5 @@ - - + + - - - - - -
-
- -
- -

impactsBaseline() ?>

- - - -
- -
- -
- -
- - - - - - - - - - - - - - -
-

Index dans le Monde

-

Médiatique

-

24 janvier 2026

- -
- - - - - - -
- - - -
- - -
- - - - - - - + - \ No newline at end of file + diff --git a/site/templates/impact-media.php b/site/templates/impact-media.php new file mode 100644 index 0000000..75e4751 --- /dev/null +++ b/site/templates/impact-media.php @@ -0,0 +1,47 @@ + + +
+ + + +entries()->toEntries(); +$investigation = $page->linkedInvestigation()->toPages()->first(); +?> + +isNotEmpty()): ?> +
+ + $entry->value()]) ?> + +
+ + + + + + +
+ + + diff --git a/site/templates/impact.php b/site/templates/impact.php new file mode 100644 index 0000000..00ead9b --- /dev/null +++ b/site/templates/impact.php @@ -0,0 +1,131 @@ + + +
+ + + + + + + + + body()->isNotEmpty()): ?> +
+ body()->toBlocks() ?> +
+ + + + + + + linkedInvestigations()->toPages() ?> + isNotEmpty()): ?> + + + + + language(); + $locale = $lang ? $lang->locale(LC_ALL) : 'fr_FR.UTF-8'; + $dateLocale = substr(is_array($locale) ? reset($locale) : $locale, 0, 5); + + $latestImpacts = site()->find('impacts') + ->children()->listed()->not($page) + ->sortBy('created', 'desc') + ->limit(5); + ?> + + isNotEmpty()): ?> + + + + + +
+ + + diff --git a/site/templates/impacts.php b/site/templates/impacts.php index 6322025..59e0a8f 100644 --- a/site/templates/impacts.php +++ b/site/templates/impacts.php @@ -6,7 +6,7 @@

title() ?>

chapo()->isNotEmpty()): ?> -
+

chapo() ?>

@@ -14,113 +14,69 @@
- +
-
+
- + children()->listed()->sortBy('created', 'desc') as $impact): ?> - - \ No newline at end of file + diff --git a/site/templates/investigation.php b/site/templates/investigation.php index 2fe6ab4..5236bd5 100644 --- a/site/templates/investigation.php +++ b/site/templates/investigation.php @@ -1,78 +1,81 @@ -
- -
- -
- - - -
+videoPreview()->toFile(); +$hasVideo = $videoPreview || $page->videoUrl()->isNotEmpty(); +$lang = kirby()->language(); +$locale = $lang ? $lang->locale(LC_ALL) : 'fr_FR.UTF-8'; +$dateLocale = substr(is_array($locale) ? reset($locale) : $locale, 0, 5); +?> - -heroType()->value() == 'image'): ?> - heroImages()->toFile()): ?> - -
-
- <?= $page->title()->esc() ?> -
- caption()->isNotEmpty()): ?> -
caption() ?>
- -
- - -heroType()->value() == 'video'): ?> + -
+
- videoExtractUrl()->isNotEmpty()): ?> +
- +
- videoFullUrl()->isNotEmpty()): ?> + videoUrl()->isNotEmpty()): + preg_match('/(?:embed\/|v=|youtu\.be\/)([a-zA-Z0-9_-]+)/', $page->videoUrl()->value(), $m); + $videoId = $m[1] ?? ''; + ?>
- +
+ heroCaption()->isNotEmpty()): ?> +
heroCaption()->inline() ?>
+ +
+ +cover()->toFile()): ?> + +
+
+ $cover, + 'alt' => $page->title()->value(), + 'sizes' => '(min-width: 1000px) 940px, 90vw', + 'srcsetName' => 'cover-hero', + 'lazy' => false, + ]) ?> + heroCaption()->isNotEmpty()): ?> +
heroCaption()->inline() ?>
+ caption()->isNotEmpty()): ?> +
caption() ?>
+ +
+
+ -
+
incidentDate()->isNotEmpty()): ?>
Date de l'incident
-
+
@@ -162,12 +165,12 @@ created()->isNotEmpty()): ?>
Date de publication
-
+
-
+
body()->toLayouts() as $layout): ?> columns(); @@ -191,10 +194,10 @@ } ?> -
+
type() === 'heading'): ?> - <level()->or('h3') ?> class="section-title">text() ?>level()->or('h3') ?>> + <level()->or('h3') ?>>text() ?>level()->or('h3') ?>> type() === 'text'): ?>
text() ?> @@ -205,11 +208,17 @@ image()->toFile(); ?>
- <?= $image->alt()->esc() ?> -
+ $image, + 'alt' => $image->alt()->value(), + 'sizes' => '100vw', + 'srcsetName' => 'body-full', + 'lazy' => true, + ]) ?> caption()->isNotEmpty()): ?> -

caption()->html() ?>

+
caption()->html() ?>

+
@@ -226,6 +235,9 @@ type() === 'horizontal-gallery'): ?> type(), ['block' => $block]) ?> + type() === 'insert'): ?> + $block]) ?> +
@@ -245,11 +257,17 @@ image()->toFile(); ?>
- <?= $image->alt()->esc() ?> -
+ $image, + 'alt' => $image->alt()->value(), + 'sizes' => '(min-width: 768px) 50vw, 90vw', + 'srcsetName' => 'body-half', + 'lazy' => true, + ]) ?> caption()->isNotEmpty()): ?> -

caption()->html() ?>

+
caption()->html() ?>
+
@@ -259,6 +277,9 @@ type() === 'video'): ?> type(), ['block' => $block]) ?> + type() === 'gallery'): ?> + $block]) ?> +
@@ -269,6 +290,8 @@ text() ?> type() === 'heading'): ?> <level()->or('h3') ?>>text() ?>level()->or('h3') ?>> + type() === 'insert'): ?> + $block]) ?>
@@ -279,49 +302,110 @@
-
-

Impacts

- -
- -

Médiatique

-
-

12 articles et reprises

-

1.5M de vues cumulées

+ +find('ressources'); +$resources = $resourcesParent ? $resourcesParent->children()->listed()->filter(function($resource) use ($page) { + return $resource->linkedInvestigations()->toPages()->has($page); +}) : null; +?> + +isNotEmpty()): ?> + + + +find('impacts'); +$impacts = $impactsParent ? $impactsParent->children()->listed()->filter(function($impact) use ($page) { + if ($impact->intendedTemplate()->name() === 'impact-media') { + return $impact->linkedInvestigation()->toPages()->has($page); + } + return $impact->linkedInvestigations()->toPages()->has($page); +}) : null; +?> + +isNotEmpty()): ?> +
+ + isEmpty()) { ?> - - - - - - - -package()->value(); -$package = null; -if (!empty($packageSlug) && site()->find('dossiers')) { - $package = site()->find('dossiers')->children()->filterBy('slug', $packageSlug)->first(); -} +// Récupérer le dossier associé à cette investigation (reverse lookup via linkedContent) +$packagesParent = site()->find('dossiers'); +$package = $packagesParent + ? $packagesParent->children()->listed()->filter(fn($p) => $p->linkedContent()->toPages()->has($page))->first() + : null; if ($package): + $investigationsCount = $package->linkedContent()->toPages()->count(); ?> -
+
+ + + + diff --git a/site/templates/investigations.php b/site/templates/investigations.php index 0770195..e797c79 100644 --- a/site/templates/investigations.php +++ b/site/templates/investigations.php @@ -4,11 +4,11 @@ @@ -18,23 +18,37 @@
-
+
-children()->listed() as $investigation): ?> -
- - cover()->toFile()): ?> +children()->listed()->sortBy('created', 'desc') as $investigation): + $cover = $investigation->cover()->toFile(); + $dateAttr = $investigation->incidentDate()->isNotEmpty() + ? $investigation->incidentDate()->toDate('yyyy-MM-dd') + : ($investigation->created()->isNotEmpty() ? $investigation->created()->toDate('yyyy-MM-dd') : ''); + $filterAttr = implode(' ', array_map(fn($c) => Str::slug($c), $investigation->incidentCountry()->split())); +?> +
+ +
- <?= $investigation->title()->esc() ?> + $cover, + 'alt' => $investigation->title()->value(), + 'sizes' => '(min-width: 1000px) 465px, (min-width: 728px) 50vw, 100vw', + 'srcsetName' => 'cover-card', + 'lazy' => true, + ]) ?>
@@ -76,24 +90,19 @@
- keywords()->split()): ?> -
+
-
- - -pinned()->toBool()): ?> -
- +
+ diff --git a/site/templates/lab.php b/site/templates/lab.php new file mode 100644 index 0000000..ba7e489 --- /dev/null +++ b/site/templates/lab.php @@ -0,0 +1,81 @@ + +
+ + + + +
+ + +
+ +
+ +
+ + children()->listed()->sortBy('created', 'desc') as $project): ?> + + category()->split(); + $category = $categories[0] ?? ''; + $cover = $project->cover()->toFile(); + $investigations = $project->linkedInvestigations()->toPages(); + ?> + + + + + +
+ +
+ diff --git a/site/templates/laboratory.php b/site/templates/laboratory.php deleted file mode 100644 index 8e54641..0000000 --- a/site/templates/laboratory.php +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/site/templates/legal-notices.php b/site/templates/legal-notices.php index 8e54641..c098d13 100644 --- a/site/templates/legal-notices.php +++ b/site/templates/legal-notices.php @@ -1,2 +1,27 @@ - \ No newline at end of file +
+ + + +definitions()->toStructure() ?> +isNotEmpty()): ?> + + + +body()->isNotEmpty()): ?> +
+ body()->toBlocks() ?> +
+ + +
+ diff --git a/site/templates/news-item.php b/site/templates/news-item.php new file mode 100644 index 0000000..69e1860 --- /dev/null +++ b/site/templates/news-item.php @@ -0,0 +1,123 @@ + +language(); +$locale = $lang ? $lang->locale(LC_ALL) : 'fr_FR.UTF-8'; +$dateLocale = substr(is_array($locale) ? reset($locale) : $locale, 0, 5); +?> + +
+ + + + + body()->isNotEmpty()): ?> +
+ body()->toBlocks() ?> +
+ + + + + linkedInvestigations()->toPages() ?> + isNotEmpty()): ?> + + + + find('news') + ->children()->listed()->not($page) + ->sortBy('created', 'desc') + ->limit(5); + ?> + + isNotEmpty()): ?> + + + + +
+ + + diff --git a/site/templates/news.php b/site/templates/news.php new file mode 100644 index 0000000..4085a6c --- /dev/null +++ b/site/templates/news.php @@ -0,0 +1,87 @@ + +language(); +$locale = $lang ? $lang->locale(LC_ALL) : 'fr_FR.UTF-8'; +$dateLocale = substr(is_array($locale) ? reset($locale) : $locale, 0, 5); +?> +
+ + + + +
+ + +
+ +
+ +
+ + children()->listed()->sortBy('created', 'desc') as $newsItem): ?> + + category()->split(); + $category = $categories[0] ?? ''; + $cover = $newsItem->cover()->toFile(); + $investigations = $newsItem->linkedInvestigations()->toPages(); + ?> + + + + + +
+ +
+ + + diff --git a/site/templates/newsletter.php b/site/templates/newsletter.php new file mode 100644 index 0000000..e9c1ec8 --- /dev/null +++ b/site/templates/newsletter.php @@ -0,0 +1,40 @@ + + +
+ + + +
+ + chapo()->isNotEmpty()): ?> +
+

chapo() ?>

+
+ + + + +details()->isNotEmpty()): ?> + +
+

details() ?>

+
+ + + +
+ +
+ diff --git a/site/templates/package.php b/site/templates/package.php index 20560b3..5068b46 100644 --- a/site/templates/package.php +++ b/site/templates/package.php @@ -1,212 +1,221 @@ -
- - +
find('enquetes')->children()->listed()->filter(function($investigation) use ($page) { - return $investigation->package()->value() === $page->slug(); -}); +$lang = kirby()->language(); +$locale = $lang ? $lang->locale(LC_ALL) : 'fr_FR.UTF-8'; +$dateLocale = substr(is_array($locale) ? reset($locale) : $locale, 0, 5); + +$investigations = $page->linkedContent()->toPages(); +$impacts = $page->linkedImpacts()->toPages(); +$resources = $page->linkedResources()->toPages(); +$news = $page->linkedNews()->toPages(); +$projects = $page->linkedProjects()->toPages(); ?> + + + + +description()->isNotEmpty()): ?> +
+

description() ?>

+ -
isNotEmpty()): ?> -
- -

2 enquêtes

+
+

(count() ?>)

-
- +
cover()->toFile()): ?>
<?= $investigation->title()->esc() ?>
-
- -

title()->esc() ?>

- - chapo()->isNotEmpty()): ?> -

chapo()->excerpt(200) ?>

- - -
+

+

title()->esc() ?>

incidentDate()->isNotEmpty()): ?> -
-
Date de l'incident
-
-
+ - - partners()->toStructure()): ?> - isNotEmpty()): ?> -
-
Partenaire(s)
-
- - - name()->value() ?> - - -
-
+ chapo()->isNotEmpty()): ?> +

chapo()->excerpt(200) ?>

- - - incidentLocation()->isNotEmpty()): ?> -
-
Lieu de l'incident
-
incidentLocation()->esc() ?>
-
- - - - - -
-
- - - keywords()->split()): ?> -
-
    - -
  • - -
-
- - - - - - - + +
-
- -

Aucune enquête associée à ce dossier pour le moment.

+
+isNotEmpty()): ?> +
+

(count() ?>)

-
- - -

4 impacts

- - - - - -
+ + + +isNotEmpty()): ?> +
+

(count() ?>)

+ + + + + +
+ + + +isNotEmpty()): ?> +
+

(count() ?>)

+ + + + + +
+ diff --git a/site/templates/packages.php b/site/templates/packages.php index 3c2151e..e3fdca4 100644 --- a/site/templates/packages.php +++ b/site/templates/packages.php @@ -6,7 +6,7 @@

title() ?>

chapo()->isNotEmpty()): ?> -
+

chapo() ?>

@@ -17,41 +17,43 @@ children()->listed() as $package): ?> -
- cover()->toFile()): ?> -
- <?= $package->title()->esc() ?> -
- - -
-

title()->esc() ?>

- - description()->isNotEmpty()): ?> -

description()->excerpt(200) ?>

+
+ cover()->toFile()): ?> +
+ <?= $package->title()->esc() ?> +
+
+

+

title()->esc() ?>

- find('enquetes')->children()->listed()->filter(function($investigation) use ($package) { - return $investigation->package()->value() === $package->slug(); - })->count(); - ?> + -
    + linkedContent()->toPages()->count(); + $impactsCount = $package->linkedImpacts()->toPages()->count(); + ?> + 0 || $impactsCount > 0): ?> +
      0): ?> -
    • enquête 1 ? 's' : '' ?>
    • +
    • enquête 1 ? 's' : '' ?>
    • -
    • 8 impacts
    • -
    + 0): ?> +
  • impact 1 ? 's' : '' ?>
  • + +
+ +
+ + +
+ -
- - -
diff --git a/site/templates/privacy-policy.php b/site/templates/privacy-policy.php new file mode 100644 index 0000000..a4bb8b9 --- /dev/null +++ b/site/templates/privacy-policy.php @@ -0,0 +1,15 @@ + +
+ + + +body()->isNotEmpty()): ?> +
+ body()->toBlocks() ?> +
+ + +
+ diff --git a/site/templates/project.php b/site/templates/project.php new file mode 100644 index 0000000..2650d0f --- /dev/null +++ b/site/templates/project.php @@ -0,0 +1,123 @@ + + +
+ + + + + body()->isNotEmpty()): ?> +
+ body()->toBlocks() ?> +
+ + + + linkedInvestigations()->toPages() ?> + isNotEmpty()): ?> + + + + + find('laboratoire') + ->children()->listed()->not($page) + ->sortBy('created', 'desc') + ->limit(5); + ?> + + isNotEmpty()): ?> + + + + + +
+ + + diff --git a/site/templates/resource.php b/site/templates/resource.php new file mode 100644 index 0000000..d4713b8 --- /dev/null +++ b/site/templates/resource.php @@ -0,0 +1,123 @@ + + +
+ + + + + body()->isNotEmpty()): ?> +
+ body()->toBlocks() ?> +
+ + + + linkedInvestigations()->toPages() ?> + isNotEmpty()): ?> + + + + + find('ressources') + ->children()->listed()->not($page) + ->sortBy('created', 'desc') + ->limit(5); + ?> + + isNotEmpty()): ?> + + + + + +
+ + + diff --git a/site/templates/resources.php b/site/templates/resources.php index 375317a..7e236fe 100644 --- a/site/templates/resources.php +++ b/site/templates/resources.php @@ -1,4 +1,81 @@
+ + + + +
+ + +
+ +
+ +
+ + children()->listed()->sortBy('created', 'desc') as $resource): ?> + + category()->split(); + $category = $categories[0] ?? ''; + $cover = $resource->cover()->toFile(); + $investigations = $resource->linkedInvestigations()->toPages(); + ?> + + + + + +
+
- \ No newline at end of file + diff --git a/site/templates/support.php b/site/templates/support.php deleted file mode 100644 index 40d3e6e..0000000 --- a/site/templates/support.php +++ /dev/null @@ -1,190 +0,0 @@ - - -
-
-
-
- - -
-
- -
-
-
- - -
-
-

Pour continuer à enquêter, Index a besoin de vous

-
-

Minutieuses et approfondies, nos enquêtes représentent des mois de travail par plusieurs membres de notre équipe. Tout ceci a un coût important.

- -
- -
- -
-

Donnateur·ices

-

-
- -
-

Objectif

-

-
-
- -

Soutenez-nous avant le 31 décembre 2021

- - - -

Le don donne droit à une réduction fiscale de 66%

-
- - -
-

Index est une ONG d’investigation à but non-lucratif. Vos dons garantissent notre indépendance.

- - - - - -

Le don donne droit à une réduction fiscale de 66%
Vous pouvez stopper votre don à tout moment

-
- - -
-

Commentaires de donnateur·ices

- -
-
-

Vous faites un travail admirable. Merci de faire avancer la Justice avec un grand J. Force à vous!

-

Olivier

-
- -
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet.

-

Name

-
- -
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet.

-

Name

-
- -
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet.

-

Name

-
-
-
-
- - -
-

Questions fréquentes

- -
- Pourquoi faire un don à index ? -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.

-
- -
- À quoi va servir mon don ? -

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Rerum tempore exercitationem asperiores ipsam pariatur! Esse ab, at labore doloribus sit aperiam quidem beatae id unde facere totam perferendis quod itaque voluptatem aut officia laudantium, aliquid quis earum quisquam alias soluta voluptatibus, voluptate porro? Reprehenderit officia debitis suscipit ab deleniti possimus dignissimos error illum labore. Quos cumque modi alias repellendus, necessitatibus qui impedit nisi! Veritatis illo quod praesentium, voluptates explicabo accusantium reprehenderit ullam provident quaerat ipsum dignissimos molestias, deserunt voluptas dolor.

-
- -
- Pourquoi faire un don à index ? -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.

-
- -
- Les dons sont-ils défiscalisables ? -

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Rerum tempore exercitationem asperiores ipsam pariatur! Esse ab, at labore doloribus sit aperiam quidem beatae id unde facere totam perferendis quod itaque voluptatem aut officia laudantium, aliquid quis earum quisquam alias soluta voluptatibus.

-
- - -
- Index, c’est quoi au juste ? -

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Rerum tempore exercitationem asperiores ipsam pariatur! Esse ab, at labore doloribus sit aperiam quidem beatae id unde facere totam perferendis quod itaque voluptatem aut officia laudantium, aliquid quis earum quisquam alias soluta voluptatibus, voluptate porro? Reprehenderit officia debitis suscipit ab deleniti possimus dignissimos error illum labore. Quos cumque modi alias repellendus, necessitatibus qui impedit nisi! Veritatis illo quod praesentium, voluptates explicabo accusantium reprehenderit ullam provident quaerat ipsum dignissimos molestias, deserunt voluptas dolor.

-
- - -
- -
-

Boutique

-

Vous pouvez également soutenir Index en commandant des articles disponibles sur notre boutique.

- -
- children() as $product): ?> -
- hasFiles()): ?> -
- -
- -

title() ?>

- description() ?> - -
- -
-
- -
-

Nous suivre

- -

Abonnez-vous
à la newsletter d’Index

-

Recevez nos dernière publications et actualités directement dans votre boite mail.

- - - -

Votre adresse e-mail est uniquement utilisée pour vous envoyer notre newsletter ainsi que les informations relatives aux activités d’INDEX. Vous pouvez vous désinscrire à tout moment à l’aide du lien inclus dans chaque email.

-
- -
-

Suivez Index sur les réseaux sociaux

- -
-
- \ No newline at end of file