diff --git a/.claude/settings.local.json b/.claude/settings.local.json
new file mode 100644
index 0000000..a48b55d
--- /dev/null
+++ b/.claude/settings.local.json
@@ -0,0 +1,11 @@
+{
+ "permissions": {
+ "allow": [
+ "Bash(git add:*)",
+ "Bash(git commit:*)",
+ "Bash(cat:*)"
+ ],
+ "deny": [],
+ "ask": []
+ }
+}
diff --git a/assets/css/base/_body.scss b/assets/css/base/_body.scss
new file mode 100644
index 0000000..3c0010e
--- /dev/null
+++ b/assets/css/base/_body.scss
@@ -0,0 +1,41 @@
+* {
+ margin: 0;
+ padding: 0;
+
+ box-sizing: border-box;
+ -webkit-font-smoothing: antialiased;
+ -moz-font-smoothing: antialiased;
+ -o-font-smoothing: antialiased
+}
+a {
+ color: currentColor;
+}
+button{
+ background: none;
+ outline: none;
+ border: none;
+ color: var(--color-txt);
+}
+iframe{
+ border: none;
+}
+
+body{
+ font-family: var(--font);
+ line-height: var(--leading-normal);
+ font-size: var(--fs-normal);
+
+ color: var(--color-txt);
+ background-color: var(--color-bg);
+ padding: 0px var(--padding-body);
+
+ width: 100vw;
+ overflow-x: hidden;
+}
+
+
+
+//temp
+main{
+ // padding-top: calc(var(--header-h-shrinked) - var(--padding-body));
+}
\ No newline at end of file
diff --git a/assets/css/base/_responsive.scss b/assets/css/base/_responsive.scss
new file mode 100644
index 0000000..41926a1
--- /dev/null
+++ b/assets/css/base/_responsive.scss
@@ -0,0 +1,14 @@
+$desktop: "screen and (min-width: 1200px)";
+$medium: "screen and (max-width: 1200px)";
+$small-up: "screen and (min-width: 720px)";
+$small: "screen and (max-width: 720px)";
+$x-small: "screen and (max-width: 560px)";
+
+
+@media #{$medium}{
+ :root{
+ --padding: 16px;
+ --padding-cards: 0.75rem;
+ --padding-cards-small: 0.5rem;
+ }
+}
diff --git a/assets/css/base/_var.scss b/assets/css/base/_var.scss
new file mode 100644
index 0000000..8d3c8c6
--- /dev/null
+++ b/assets/css/base/_var.scss
@@ -0,0 +1,55 @@
+:root{
+ --font: Arial, sans-serif;
+
+ // --fs-small: 9px;
+ // --font-size: 12px;
+ // --fs-medium: 18px;
+ // --fs-big: 24px;
+
+ --fs-x-small: 9px;
+ --fs-small: 13px;
+ --fs-normal: 18px;
+ --fs-medium: 22px;
+ --fs-big: 28px;
+ --fs-x-big: 36px;
+
+ --leading-tight: 1;
+ --leading-normal: 1.2;
+ // --leading-relaxed: 1.4;
+ // --leading-loose: 1.8;
+
+ --fw-normal: 400;
+ --fw-medium: 600;
+
+
+ --color-bg: #161616;
+ --color-txt: #FFFFFF;
+ --color-accent: #00FF00;
+ --color-accent-50: #e9ffe9;
+ --color-accent-100: #d8fdd8;
+
+ --grey-100: #d8d8d8;
+ --grey-300: #B9B9B9;
+ --grey-400: #969696;
+ --grey-800: #383838;
+
+ --border: 1px solid var(--color-txt);
+
+
+ --header-h: 140px;
+ --header-h-shrinked: 60px;
+
+
+ // responsive
+ --padding-body: 16px;
+
+
+ --radius-small: 4px;
+ --spacing: 40px;
+ --h-block: 40px;
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/assets/css/components/_buttons.scss b/assets/css/components/_buttons.scss
new file mode 100644
index 0000000..2fedcdd
--- /dev/null
+++ b/assets/css/components/_buttons.scss
@@ -0,0 +1,55 @@
+.btn--bold .btn--bold__container{
+ --size: 28px;
+ font-size: var(--fs-big);
+ height: var(--size);
+
+ position: relative;
+ display: flex;
+ align-items: center;
+ gap: 0.75ch;
+ padding-right: 1ch;
+ color: var(--color-accent);
+
+ font-weight: var(--fw-medium);
+
+ text-decoration: none;
+
+ cursor: pointer;
+
+ .icon, .txt{ z-index: 10; }
+
+ .icon{
+ width: var(--size);
+ height: var(--size);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding-top: 1px;
+ padding-left: 2px;
+
+ svg{
+ width: 70%;
+ fill: var(--color-bg);
+ }
+ }
+
+ &::before{
+ content: '';
+ display: block;
+ background-color: var(--color-accent);
+ border-radius: calc(var(--size)/2);
+ width: var(--size);
+ height: var(--size);
+ position: absolute;
+ left: 0px;
+ z-index: 0;
+ transition: width .2s
+ }
+
+ &:hover{
+ color: var(--color-bg);
+ &::before{
+ width: 100%;
+ }
+ }
+}
\ No newline at end of file
diff --git a/assets/css/components/_comments-slider.scss b/assets/css/components/_comments-slider.scss
new file mode 100644
index 0000000..2e08bfa
--- /dev/null
+++ b/assets/css/components/_comments-slider.scss
@@ -0,0 +1,74 @@
+.comments-slider {
+ display: flex;
+ overflow-x: auto;
+ scroll-snap-type: x mandatory;
+ scroll-behavior: smooth;
+ gap: 0;
+ padding: 0;
+ scrollbar-width: none; /* Firefox */
+
+ @media #{$small-up}{
+ padding-left: 20%;
+ flex: 0 0 40%;
+ }
+
+ }
+
+ .comments-slider::-webkit-scrollbar {
+ display: none;
+ }
+
+ .comment {
+ scroll-snap-align: start;
+ // background-color: #444;
+
+ @media #{$small}{
+ flex: 0 0 calc(100vw - var(--padding-body)*2); /* mobile */
+ padding: 0px 2ch;
+ }
+ @media #{$small-up}{
+ flex: 0 0 40%;
+ }
+
+ }
+
+
+ .comment__text{
+ font-size: var(--fs-medium);
+ font-weight: var(--fw-medium);
+ line-height: 1;
+ max-width: 40ch;
+ text-align: center;
+ }
+
+ .comment__name {
+ margin-top: calc(var(--spacing)*0.5);
+ text-align: center;
+ }
+
+
+
+
+
+ /* Dots */
+ .comments-slider__dots {
+ display: flex;
+ @media #{$small-up}{ justify-content: center; }
+ @media #{$small}{ justify-content: flex-end; }
+ margin-top: 0.5rem;
+ gap: 0.4rem;
+ margin-top: calc(var(--spacing)*1.5);
+ }
+ .comments-slider__dots button {
+ width: 10px;
+ height: 10px;
+ border-radius: 50%;
+ border: none;
+ background: var(--grey-400);
+ cursor: pointer;
+ transition: background 0.3s;
+ }
+ .comments-slider__dots button.active {
+ background: var(--color-txt);
+ }
+
\ No newline at end of file
diff --git a/assets/css/components/_form-newsletter.scss b/assets/css/components/_form-newsletter.scss
new file mode 100644
index 0000000..f517914
--- /dev/null
+++ b/assets/css/components/_form-newsletter.scss
@@ -0,0 +1,81 @@
+.form__newsletter{
+ --size: 24px;
+
+ position: relative;
+ display: flex;
+ align-items: center;
+
+ max-width: 36ch;
+
+ margin: calc(var(--spacing)*1) auto;
+ margin-top: calc(var(--spacing)*1.5);
+
+
+ input[type="email"]{
+
+ height: var(--h-block);
+ width: 100%;
+ border-radius: calc(var(--h-block)*0.5);
+ outline: none;
+ border: none;
+ padding: 0 1ch;
+
+ font-size: var(--fs-medium);
+ z-index: 40;
+ &::placeholder{
+ font-size: var(--fs-medium);
+ }
+
+ &:focus{
+ outline: 3px solid var(--grey-400);
+ }
+
+
+ }
+
+
+ button[type="submit"].btn--bold{
+
+ z-index: 50;
+ position: absolute;
+ right: 3px;
+
+ .btn--bold__container{
+ z-index: 50;
+ padding-right: 0;
+
+ &::before{
+ left: auto;
+ right: 0;
+ }
+
+ .txt{
+ font-size: var(--fs-medium);
+ display: none;
+ padding-left: 1ch;
+ }
+
+ &:hover{
+ .txt{
+ display: block;
+ }
+ }
+ }
+
+
+ // shadow on input
+ &::before{
+ content: '';
+ display: block;
+ width: 120px;
+ height: 30px;
+ background: linear-gradient(90deg,transparent 0%, var(--color-txt) 80%);
+ position: absolute;
+ left: -110px;
+ z-index: 40;
+ }
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/assets/css/components/_gauge.scss b/assets/css/components/_gauge.scss
new file mode 100644
index 0000000..849f48c
--- /dev/null
+++ b/assets/css/components/_gauge.scss
@@ -0,0 +1,51 @@
+.gauge__container{
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+}
+
+#gauge{
+ width: 100%;
+ margin-bottom: calc(var(--spacing)*0.25);
+ height: calc(var(--h-block)*0.5);
+ border-radius: calc(var(--h-block)*0.25);
+ background-color: var(--grey-400);
+ position: relative;
+ overflow: hidden;
+ &::before{
+ content: '';
+ display: block;
+ height: calc(var(--h-block)*0.5);
+ border-radius: calc(var(--h-block)*0.25);
+ width: 0%;
+ background-color: var(--color-txt);
+ position: absolute;
+ top: 0;
+ left: 0;
+ animation: fillGauge 1s ease forwards;
+ }
+
+}
+
+@keyframes fillGauge {
+ from {
+ width: 0%;
+ }
+ to {
+ width: var(--pourcent);
+ }
+}
+
+
+.gauge--infos{
+ .property{
+ font-size: var(--fs-small);
+ padding-bottom: 3px;
+ }
+
+ &:last-of-type{
+ text-align: right;
+ }
+}
+
diff --git a/assets/css/components/_heading.scss b/assets/css/components/_heading.scss
new file mode 100644
index 0000000..163b4d3
--- /dev/null
+++ b/assets/css/components/_heading.scss
@@ -0,0 +1 @@
+
diff --git a/assets/css/components/_list-socials.scss b/assets/css/components/_list-socials.scss
new file mode 100644
index 0000000..4f9c9d8
--- /dev/null
+++ b/assets/css/components/_list-socials.scss
@@ -0,0 +1,32 @@
+.list-socials{
+ list-style-type: none;
+
+ li {
+ margin-bottom: calc(var(--spacing)*0.25);
+ .link--external{
+ display: flex;
+ align-items: center;
+ gap: 1ch;
+ text-decoration: none;
+
+
+
+ .icon svg {
+ width: 25px;
+ fill: var(--color-txt);
+ }
+
+ .arrow svg{
+ position: relative;
+ top: 3px;
+ width: 12px;
+ fill: var(--grey-400);
+ }
+
+
+ }
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/assets/css/components/_nav-tabs.scss b/assets/css/components/_nav-tabs.scss
new file mode 100644
index 0000000..497c6e3
--- /dev/null
+++ b/assets/css/components/_nav-tabs.scss
@@ -0,0 +1,38 @@
+.nav--tabs{
+ height: var(--h-block);
+ width: auto;
+ border: var(--border);
+ border-radius: var(--radius-small);
+ overflow: hidden;
+
+
+ display: inline-flex;
+
+ width: auto;
+ margin: 0 auto;
+ margin-bottom: var(--spacing);
+
+
+ .nav--tabs__btn{
+ font-size: var(--fs-small);
+ padding: 0 1ch;
+
+ &.is-selected{
+ background-color: var(--color-txt);
+ color: var(--color-bg);
+ }
+
+ &:not(.is-selected):hover{
+ background-color: var(--grey-800);
+ cursor: pointer;
+ }
+
+ }
+
+ .nav--tabs__btn + .nav--tabs__btn{
+ border-left: var(--border);
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/assets/css/components/_player.scss b/assets/css/components/_player.scss
new file mode 100644
index 0000000..95a4e7f
--- /dev/null
+++ b/assets/css/components/_player.scss
@@ -0,0 +1,53 @@
+.player__container {
+ width: 100%;
+ height: 100%;
+
+
+
+ .player__element {
+ width: 100%;
+ height: 100%;
+ display: grid;
+ place-items: center;
+ overflow: hidden;
+ // display: none;
+
+
+ .player__btn {
+ svg {
+ fill: var(--color-txt);
+ width: 100%;
+ }
+
+ position: absolute;
+ width: 60px;
+ height: 60px;
+ cursor: pointer;
+ }
+
+ img,
+ video {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ }
+
+ }
+
+
+ .player__iframe {
+ display: none;
+ width: 100%;
+ height: 100%;
+ iframe{
+ width: 100%;
+ height: 100%;
+
+ }
+ }
+
+
+
+}
+
+
diff --git a/assets/css/components/_text.scss b/assets/css/components/_text.scss
new file mode 100644
index 0000000..ae52854
--- /dev/null
+++ b/assets/css/components/_text.scss
@@ -0,0 +1,65 @@
+#page-don{
+
+ // text -----------------------------------------
+
+ .p__baseline-big{
+ font-size: var(--fs-big);
+ font-weight: var(--fw-medium);
+ line-height: var(--leading-tight);
+ text-align: center;
+ margin: calc(var(--spacing)*1.75) 0;
+ }
+
+ .p__baseline{
+ font-size: var(--fs-medium);
+ font-weight: var(--fw-medium);
+ line-height: var(--leading-tight);
+ text-align: center;
+ margin: var(--spacing) 0;
+ }
+
+ .p__details{
+ font-size: var(--fs-small);
+ margin-bottom: 0.5em;
+ color: var(--grey-400);
+ }
+
+
+ // heading ---------------------------------------------
+
+ .hero-heading{
+ font-size: var(--fs-x-big);
+ line-height: var(--leading-tight);
+ font-weight: var(--fw-medium);
+ display: inline;
+ background: var(--color-txt);
+ color: var(--color-bg);
+ padding: 0 0.3em;
+ box-decoration-break: clone;
+ -webkit-box-decoration-break: clone;
+ text-align: center;
+ }
+
+ .section__heading{
+ font-size: var(--fs-medium);
+ font-weight: var(--fw-medium);
+ line-height: 1;
+
+ height: calc(var(--spacing)*3);
+ border-bottom: var(--border);
+ text-align: center;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .subsection__heading{
+ font-size: var(--fs-normal);
+ font-weight: var(--fw-medium);
+ line-height: 1;
+ margin-top: calc(var(--spacing)*0.75);
+ margin-bottom: calc(var(--spacing)*1);
+ }
+
+
+}
\ No newline at end of file
diff --git a/assets/css/pages/dons/_section-donation.scss b/assets/css/pages/dons/_section-donation.scss
new file mode 100644
index 0000000..0ae6977
--- /dev/null
+++ b/assets/css/pages/dons/_section-donation.scss
@@ -0,0 +1,44 @@
+#section__donation{
+ display: flex;
+ flex-direction: column;
+
+
+
+ .btn--donation__container{
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ grid-gap: var(--padding-body);
+ margin-bottom: calc(var(--spacing)*0.75);
+
+ .btn--donation__grow-2{
+ grid-column: span 2;
+ }
+ }
+
+
+ .btn--donation{
+ background-color: var(--color-txt);
+ color: var(--color-bg);
+ border-radius: var(--radius-small);
+ height: calc(var(--h-block)*2);
+
+ .bold{
+ font-size: var(--fs-medium);
+ font-weight: var(--fw-medium);
+ margin-bottom: 0.25em;
+ }
+
+ .small{
+ font-size: var(--fs-small);
+ }
+
+ &:hover{
+ background-color: var(--color-accent-50);
+ // outline: 4px solid var(--color-accent);
+ cursor: pointer;
+ }
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/assets/css/pages/dons/_section-hero.scss b/assets/css/pages/dons/_section-hero.scss
new file mode 100644
index 0000000..86b1aa8
--- /dev/null
+++ b/assets/css/pages/dons/_section-hero.scss
@@ -0,0 +1,24 @@
+#section__hero{
+
+
+ .hero-heading__container{
+ text-align: center;
+ margin-top: calc(var(--spacing)*1.5);
+ margin-bottom: calc(var(--spacing)*1.5);
+ }
+
+
+
+ .btn--bold{
+ display: block;
+ margin: var(--spacing) auto;
+ margin-bottom: calc(var(--spacing)*1.5);
+ }
+
+ .jauge__container{
+ margin-top: calc(var(--spacing)*1.5);
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/assets/css/pages/dons/_section-player.scss b/assets/css/pages/dons/_section-player.scss
new file mode 100644
index 0000000..b6f6422
--- /dev/null
+++ b/assets/css/pages/dons/_section-player.scss
@@ -0,0 +1,30 @@
+#section__player{
+
+ position: relative;
+ left: calc(var(--padding-body)*-1);
+
+ @media #{$small}{
+ width: 100vw;
+ // aspect-ratio: 1/1;
+ .player__container, .player__element, .player__iframe, iframe{
+ width: 100%;
+ height: 75vh;
+ overflow: hidden;
+ }
+
+ }
+
+ @media #{$small-up}{
+ position: relative;
+ width: 100vw;
+ height: 60vh;
+ .player__container, .player__element, .player__iframe, iframe{
+ width: 100%;
+ height: 60vh;
+ overflow: hidden;
+ }
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/assets/css/pages/dons/_section-questions.scss b/assets/css/pages/dons/_section-questions.scss
new file mode 100644
index 0000000..4564232
--- /dev/null
+++ b/assets/css/pages/dons/_section-questions.scss
@@ -0,0 +1,78 @@
+#section__questions{
+ details{
+ border-bottom: var(--border);
+
+
+ summary{
+ height: calc(var(--h-block)*1);
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ cursor: pointer;
+
+ &::after{
+ content: "▶";
+ font-size: 0.8em;
+ color: var(--grey-400);
+ }
+ }
+
+ p{
+ padding-top: calc(var(--spacing)*0.25);
+ margin-bottom: var(--spacing);
+ border-top: var(--border);
+ }
+
+
+ &::details-content {
+
+ max-height: 0;
+ transition: max-height ease-in .5s;
+ overflow: hidden;
+
+ // display: grid;
+ // grid-template-rows: 0fr;
+ // overflow: hidden;
+ // transition: grid-template-rows 1s;
+
+ }
+
+ &[open]{
+
+
+
+ &::details-content {
+ max-height: 1000px;
+ filter: none;
+ }
+
+
+ summary::after{
+ transform: rotate(90deg);
+ transform-origin: center;
+ }
+ }
+ }
+
+
+
+ .btn--bold{
+ display: block;
+ margin: calc(var(--spacing) * 1.5) auto;
+ margin-bottom: 0;
+ }
+
+
+}
+
+
+// @keyframes fadeInDown {
+// 0% {
+// opacity: 0;
+// transform: translateY(-1.25em);
+// }
+// 100% {
+// opacity: 1;
+// transform: translateY(0);
+// }
+// }
\ No newline at end of file
diff --git a/assets/css/pages/dons/_section-socials.scss b/assets/css/pages/dons/_section-socials.scss
new file mode 100644
index 0000000..59227b1
--- /dev/null
+++ b/assets/css/pages/dons/_section-socials.scss
@@ -0,0 +1,8 @@
+#section__socials{
+
+ .list-socials{
+ columns: 2;
+
+ }
+
+}
\ No newline at end of file
diff --git a/assets/css/pages/dons/_section-store.scss b/assets/css/pages/dons/_section-store.scss
new file mode 100644
index 0000000..4f2500f
--- /dev/null
+++ b/assets/css/pages/dons/_section-store.scss
@@ -0,0 +1,40 @@
+#section__store{
+
+
+ .store__product{
+
+
+ margin-top: calc(var(--spacing)*1.5);
+ margin-bottom: calc(var(--spacing)*0.5);
+ position: relative;
+
+ figure{
+ aspect-ratio: 4/3;
+ background-color: var(--color-bg);
+ background-color: var(--data-bg);
+ margin-bottom: calc(var(--spacing)*0.5);
+
+
+ }
+ img{
+ width: 100%;
+ height: 100%;
+ object-fit: contain;
+ }
+
+ a{
+ text-decoration: none;
+ }
+
+ .link-block{
+ display: block;
+ height: 100%;
+ width: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ cursor: pointer;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/assets/css/pages/dons/_sections.scss b/assets/css/pages/dons/_sections.scss
new file mode 100644
index 0000000..08de315
--- /dev/null
+++ b/assets/css/pages/dons/_sections.scss
@@ -0,0 +1,14 @@
+.section__page-don:not(#section__player), .subsection__page-don{
+ border-bottom: var(--border);
+ padding-bottom: calc(var(--spacing)*2);
+}
+
+
+
+@media #{$small}{
+
+ #section__hero, #section__comments{
+ padding-bottom: calc(var(--spacing)*0.5)!important;
+ }
+
+}
\ No newline at end of file
diff --git a/assets/css/partials/_site-header.scss b/assets/css/partials/_site-header.scss
new file mode 100644
index 0000000..c45507a
--- /dev/null
+++ b/assets/css/partials/_site-header.scss
@@ -0,0 +1,110 @@
+#site-header{
+
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ z-index: 100000;
+
+ width: 100vw;
+ height: var(--header-h);
+ padding: 0 var(--padding-body);
+
+ background-color: transparent;
+ border-bottom: var(--border);
+ border-color: transparent;
+
+ // display: grid;
+ // grid-template-columns: 1fr;
+
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .burger svg{
+ fill: var(--color-txt);
+ width: 40px;
+ }
+
+
+
+ .site-title{
+ display: flex;
+ width: 120px;
+ overflow: hidden;
+ svg{
+ fill: var(--color-txt);
+
+ }
+ }
+
+
+
+ nav{
+ height: 0;
+ overflow: hidden;
+ opacity: 0;
+ }
+ nav ul{
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 2ch;
+ list-style: none;
+ }
+
+
+ .header-left, .header-right{
+ width: 100px;
+ }
+
+
+ .header-center{
+
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+
+
+ }
+
+
+ #go-to-panier{
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+ gap: 1ch;
+ text-decoration: none;
+
+
+ #go-to-panier__nbr{
+
+ min-width: 2.6ch;
+ height: 2.6ch;
+ border-radius: 1.3ch;
+ border: var(--border);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0 6px;
+ }
+ }
+
+
+ &.is-shrinked{
+ background-color: var(--color-bg);
+ height: var(--header-h-shrinked);
+ transition: ease-in .3s;
+ border-color: var(--color-txt);
+
+ nav{
+ height: var(--h-block);
+ opacity: 1;
+ }
+
+ .site-title{
+ opacity: 0;
+ height: 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/assets/css/style.css b/assets/css/style.css
new file mode 100644
index 0000000..c1720e0
--- /dev/null
+++ b/assets/css/style.css
@@ -0,0 +1,681 @@
+@charset "UTF-8";
+:root {
+ --font: Arial, sans-serif;
+ --fs-x-small: 9px;
+ --fs-small: 13px;
+ --fs-normal: 18px;
+ --fs-medium: 22px;
+ --fs-big: 28px;
+ --fs-x-big: 36px;
+ --leading-tight: 1;
+ --leading-normal: 1.2;
+ --fw-normal: 400;
+ --fw-medium: 600;
+ --color-bg: #161616;
+ --color-txt: #FFFFFF;
+ --color-accent: #00FF00;
+ --color-accent-50: #e9ffe9;
+ --color-accent-100: #d8fdd8;
+ --grey-100: #d8d8d8;
+ --grey-300: #B9B9B9;
+ --grey-400: #969696;
+ --grey-800: #383838;
+ --border: 1px solid var(--color-txt);
+ --header-h: 140px;
+ --header-h-shrinked: 60px;
+ --padding-body: 16px;
+ --radius-small: 4px;
+ --spacing: 40px;
+ --h-block: 40px;
+}
+
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ -webkit-font-smoothing: antialiased;
+ -moz-font-smoothing: antialiased;
+ -o-font-smoothing: antialiased;
+}
+
+a {
+ color: currentColor;
+}
+
+button {
+ background: none;
+ outline: none;
+ border: none;
+ color: var(--color-txt);
+}
+
+iframe {
+ border: none;
+}
+
+body {
+ font-family: var(--font);
+ line-height: var(--leading-normal);
+ font-size: var(--fs-normal);
+ color: var(--color-txt);
+ background-color: var(--color-bg);
+ padding: 0px var(--padding-body);
+ width: 100vw;
+ overflow-x: hidden;
+}
+
+@media screen and (max-width: 1200px) {
+ :root {
+ --padding: 16px;
+ --padding-cards: 0.75rem;
+ --padding-cards-small: 0.5rem;
+ }
+}
+#page-don .p__baseline-big {
+ font-size: var(--fs-big);
+ font-weight: var(--fw-medium);
+ line-height: var(--leading-tight);
+ text-align: center;
+ margin: calc(var(--spacing) * 1.75) 0;
+}
+#page-don .p__baseline {
+ font-size: var(--fs-medium);
+ font-weight: var(--fw-medium);
+ line-height: var(--leading-tight);
+ text-align: center;
+ margin: var(--spacing) 0;
+}
+#page-don .p__details {
+ font-size: var(--fs-small);
+ margin-bottom: 0.5em;
+ color: var(--grey-400);
+}
+#page-don .hero-heading {
+ font-size: var(--fs-x-big);
+ line-height: var(--leading-tight);
+ font-weight: var(--fw-medium);
+ display: inline;
+ background: var(--color-txt);
+ color: var(--color-bg);
+ padding: 0 0.3em;
+ box-decoration-break: clone;
+ -webkit-box-decoration-break: clone;
+ text-align: center;
+}
+#page-don .section__heading {
+ font-size: var(--fs-medium);
+ font-weight: var(--fw-medium);
+ line-height: 1;
+ height: calc(var(--spacing) * 3);
+ border-bottom: var(--border);
+ text-align: center;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+#page-don .subsection__heading {
+ font-size: var(--fs-normal);
+ font-weight: var(--fw-medium);
+ line-height: 1;
+ margin-top: calc(var(--spacing) * 0.75);
+ margin-bottom: calc(var(--spacing) * 1);
+}
+
+.btn--bold .btn--bold__container {
+ --size: 28px;
+ font-size: var(--fs-big);
+ height: var(--size);
+ position: relative;
+ display: flex;
+ align-items: center;
+ gap: 0.75ch;
+ padding-right: 1ch;
+ color: var(--color-accent);
+ font-weight: var(--fw-medium);
+ text-decoration: none;
+ cursor: pointer;
+}
+.btn--bold .btn--bold__container .icon, .btn--bold .btn--bold__container .txt {
+ z-index: 10;
+}
+.btn--bold .btn--bold__container .icon {
+ width: var(--size);
+ height: var(--size);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding-top: 1px;
+ padding-left: 2px;
+}
+.btn--bold .btn--bold__container .icon svg {
+ width: 70%;
+ fill: var(--color-bg);
+}
+.btn--bold .btn--bold__container::before {
+ content: "";
+ display: block;
+ background-color: var(--color-accent);
+ border-radius: calc(var(--size) / 2);
+ width: var(--size);
+ height: var(--size);
+ position: absolute;
+ left: 0px;
+ z-index: 0;
+ transition: width 0.2s;
+}
+.btn--bold .btn--bold__container:hover {
+ color: var(--color-bg);
+}
+.btn--bold .btn--bold__container:hover::before {
+ width: 100%;
+}
+
+.nav--tabs {
+ height: var(--h-block);
+ width: auto;
+ border: var(--border);
+ border-radius: var(--radius-small);
+ overflow: hidden;
+ display: inline-flex;
+ width: auto;
+ margin: 0 auto;
+ margin-bottom: var(--spacing);
+}
+.nav--tabs .nav--tabs__btn {
+ font-size: var(--fs-small);
+ padding: 0 1ch;
+}
+.nav--tabs .nav--tabs__btn.is-selected {
+ background-color: var(--color-txt);
+ color: var(--color-bg);
+}
+.nav--tabs .nav--tabs__btn:not(.is-selected):hover {
+ background-color: var(--grey-800);
+ cursor: pointer;
+}
+.nav--tabs .nav--tabs__btn + .nav--tabs__btn {
+ border-left: var(--border);
+}
+
+.list-socials {
+ list-style-type: none;
+}
+.list-socials li {
+ margin-bottom: calc(var(--spacing) * 0.25);
+}
+.list-socials li .link--external {
+ display: flex;
+ align-items: center;
+ gap: 1ch;
+ text-decoration: none;
+}
+.list-socials li .link--external .icon svg {
+ width: 25px;
+ fill: var(--color-txt);
+}
+.list-socials li .link--external .arrow svg {
+ position: relative;
+ top: 3px;
+ width: 12px;
+ fill: var(--grey-400);
+}
+
+.player__container {
+ width: 100%;
+ height: 100%;
+}
+.player__container .player__element {
+ width: 100%;
+ height: 100%;
+ display: grid;
+ place-items: center;
+ overflow: hidden;
+}
+.player__container .player__element .player__btn {
+ position: absolute;
+ width: 60px;
+ height: 60px;
+ cursor: pointer;
+}
+.player__container .player__element .player__btn svg {
+ fill: var(--color-txt);
+ width: 100%;
+}
+.player__container .player__element img,
+.player__container .player__element video {
+ width: 100%;
+ height: 100%;
+ -o-object-fit: cover;
+ object-fit: cover;
+}
+.player__container .player__iframe {
+ display: none;
+ width: 100%;
+ height: 100%;
+}
+.player__container .player__iframe iframe {
+ width: 100%;
+ height: 100%;
+}
+
+.gauge__container {
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+}
+
+#gauge {
+ width: 100%;
+ margin-bottom: calc(var(--spacing) * 0.25);
+ height: calc(var(--h-block) * 0.5);
+ border-radius: calc(var(--h-block) * 0.25);
+ background-color: var(--grey-400);
+ position: relative;
+ overflow: hidden;
+}
+#gauge::before {
+ content: "";
+ display: block;
+ height: calc(var(--h-block) * 0.5);
+ border-radius: calc(var(--h-block) * 0.25);
+ width: 0%;
+ background-color: var(--color-txt);
+ position: absolute;
+ top: 0;
+ left: 0;
+ animation: fillGauge 1s ease forwards;
+}
+
+@keyframes fillGauge {
+ from {
+ width: 0%;
+ }
+ to {
+ width: var(--pourcent);
+ }
+}
+.gauge--infos .property {
+ font-size: var(--fs-small);
+ padding-bottom: 3px;
+}
+.gauge--infos:last-of-type {
+ text-align: right;
+}
+
+.form__newsletter {
+ --size: 24px;
+ position: relative;
+ display: flex;
+ align-items: center;
+ max-width: 36ch;
+ margin: calc(var(--spacing) * 1) auto;
+ margin-top: calc(var(--spacing) * 1.5);
+}
+.form__newsletter input[type=email] {
+ height: var(--h-block);
+ width: 100%;
+ border-radius: calc(var(--h-block) * 0.5);
+ outline: none;
+ border: none;
+ padding: 0 1ch;
+ font-size: var(--fs-medium);
+ z-index: 40;
+}
+.form__newsletter input[type=email]::-moz-placeholder {
+ font-size: var(--fs-medium);
+}
+.form__newsletter input[type=email]::placeholder {
+ font-size: var(--fs-medium);
+}
+.form__newsletter input[type=email]:focus {
+ outline: 3px solid var(--grey-400);
+}
+.form__newsletter button[type=submit].btn--bold {
+ z-index: 50;
+ position: absolute;
+ right: 3px;
+}
+.form__newsletter button[type=submit].btn--bold .btn--bold__container {
+ z-index: 50;
+ padding-right: 0;
+}
+.form__newsletter button[type=submit].btn--bold .btn--bold__container::before {
+ left: auto;
+ right: 0;
+}
+.form__newsletter button[type=submit].btn--bold .btn--bold__container .txt {
+ font-size: var(--fs-medium);
+ display: none;
+ padding-left: 1ch;
+}
+.form__newsletter button[type=submit].btn--bold .btn--bold__container:hover .txt {
+ display: block;
+}
+.form__newsletter button[type=submit].btn--bold::before {
+ content: "";
+ display: block;
+ width: 120px;
+ height: 30px;
+ background: linear-gradient(90deg, transparent 0%, var(--color-txt) 80%);
+ position: absolute;
+ left: -110px;
+ z-index: 40;
+}
+
+.comments-slider {
+ display: flex;
+ overflow-x: auto;
+ scroll-snap-type: x mandatory;
+ scroll-behavior: smooth;
+ gap: 0;
+ padding: 0;
+ scrollbar-width: none; /* Firefox */
+}
+@media screen and (min-width: 720px) {
+ .comments-slider {
+ padding-left: 20%;
+ flex: 0 0 40%;
+ }
+}
+
+.comments-slider::-webkit-scrollbar {
+ display: none;
+}
+
+.comment {
+ scroll-snap-align: start;
+}
+@media screen and (max-width: 720px) {
+ .comment {
+ flex: 0 0 calc(100vw - var(--padding-body) * 2); /* mobile */
+ padding: 0px 2ch;
+ }
+}
+@media screen and (min-width: 720px) {
+ .comment {
+ flex: 0 0 40%;
+ }
+}
+
+.comment__text {
+ font-size: var(--fs-medium);
+ font-weight: var(--fw-medium);
+ line-height: 1;
+ max-width: 40ch;
+ text-align: center;
+}
+
+.comment__name {
+ margin-top: calc(var(--spacing) * 0.5);
+ text-align: center;
+}
+
+/* Dots */
+.comments-slider__dots {
+ display: flex;
+ margin-top: 0.5rem;
+ gap: 0.4rem;
+ margin-top: calc(var(--spacing) * 1.5);
+}
+@media screen and (min-width: 720px) {
+ .comments-slider__dots {
+ justify-content: center;
+ }
+}
+@media screen and (max-width: 720px) {
+ .comments-slider__dots {
+ justify-content: flex-end;
+ }
+}
+
+.comments-slider__dots button {
+ width: 10px;
+ height: 10px;
+ border-radius: 50%;
+ border: none;
+ background: var(--grey-400);
+ cursor: pointer;
+ transition: background 0.3s;
+}
+
+.comments-slider__dots button.active {
+ background: var(--color-txt);
+}
+
+#site-header {
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ z-index: 100000;
+ width: 100vw;
+ height: var(--header-h);
+ padding: 0 var(--padding-body);
+ background-color: transparent;
+ border-bottom: var(--border);
+ border-color: transparent;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+#site-header .burger svg {
+ fill: var(--color-txt);
+ width: 40px;
+}
+#site-header .site-title {
+ display: flex;
+ width: 120px;
+ overflow: hidden;
+}
+#site-header .site-title svg {
+ fill: var(--color-txt);
+}
+#site-header nav {
+ height: 0;
+ overflow: hidden;
+ opacity: 0;
+}
+#site-header nav ul {
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 2ch;
+ list-style: none;
+}
+#site-header .header-left, #site-header .header-right {
+ width: 100px;
+}
+#site-header .header-center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+#site-header #go-to-panier {
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+ gap: 1ch;
+ text-decoration: none;
+}
+#site-header #go-to-panier #go-to-panier__nbr {
+ min-width: 2.6ch;
+ height: 2.6ch;
+ border-radius: 1.3ch;
+ border: var(--border);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0 6px;
+}
+#site-header.is-shrinked {
+ background-color: var(--color-bg);
+ height: var(--header-h-shrinked);
+ transition: ease-in 0.3s;
+ border-color: var(--color-txt);
+}
+#site-header.is-shrinked nav {
+ height: var(--h-block);
+ opacity: 1;
+}
+#site-header.is-shrinked .site-title {
+ opacity: 0;
+ height: 0;
+}
+
+.section__page-don:not(#section__player), .subsection__page-don {
+ border-bottom: var(--border);
+ padding-bottom: calc(var(--spacing) * 2);
+}
+
+@media screen and (max-width: 720px) {
+ #section__hero, #section__comments {
+ padding-bottom: calc(var(--spacing) * 0.5) !important;
+ }
+}
+#section__player {
+ position: relative;
+ left: calc(var(--padding-body) * -1);
+}
+@media screen and (max-width: 720px) {
+ #section__player {
+ width: 100vw;
+ }
+ #section__player .player__container, #section__player .player__element, #section__player .player__iframe, #section__player iframe {
+ width: 100%;
+ height: 75vh;
+ overflow: hidden;
+ }
+}
+@media screen and (min-width: 720px) {
+ #section__player {
+ position: relative;
+ width: 100vw;
+ height: 60vh;
+ }
+ #section__player .player__container, #section__player .player__element, #section__player .player__iframe, #section__player iframe {
+ width: 100%;
+ height: 60vh;
+ overflow: hidden;
+ }
+}
+
+#section__hero .hero-heading__container {
+ text-align: center;
+ margin-top: calc(var(--spacing) * 1.5);
+ margin-bottom: calc(var(--spacing) * 1.5);
+}
+#section__hero .btn--bold {
+ display: block;
+ margin: var(--spacing) auto;
+ margin-bottom: calc(var(--spacing) * 1.5);
+}
+#section__hero .jauge__container {
+ margin-top: calc(var(--spacing) * 1.5);
+}
+
+#section__store .store__product {
+ margin-top: calc(var(--spacing) * 1.5);
+ margin-bottom: calc(var(--spacing) * 0.5);
+ position: relative;
+}
+#section__store .store__product figure {
+ aspect-ratio: 4/3;
+ background-color: var(--color-bg);
+ background-color: var(--data-bg);
+ margin-bottom: calc(var(--spacing) * 0.5);
+}
+#section__store .store__product img {
+ width: 100%;
+ height: 100%;
+ -o-object-fit: contain;
+ object-fit: contain;
+}
+#section__store .store__product a {
+ text-decoration: none;
+}
+#section__store .store__product .link-block {
+ display: block;
+ height: 100%;
+ width: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ cursor: pointer;
+}
+
+#section__donation {
+ display: flex;
+ flex-direction: column;
+}
+#section__donation .btn--donation__container {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ grid-gap: var(--padding-body);
+ margin-bottom: calc(var(--spacing) * 0.75);
+}
+#section__donation .btn--donation__container .btn--donation__grow-2 {
+ grid-column: span 2;
+}
+#section__donation .btn--donation {
+ background-color: var(--color-txt);
+ color: var(--color-bg);
+ border-radius: var(--radius-small);
+ height: calc(var(--h-block) * 2);
+}
+#section__donation .btn--donation .bold {
+ font-size: var(--fs-medium);
+ font-weight: var(--fw-medium);
+ margin-bottom: 0.25em;
+}
+#section__donation .btn--donation .small {
+ font-size: var(--fs-small);
+}
+#section__donation .btn--donation:hover {
+ background-color: var(--color-accent-50);
+ cursor: pointer;
+}
+
+#section__questions details {
+ border-bottom: var(--border);
+}
+#section__questions details summary {
+ height: calc(var(--h-block) * 1);
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ cursor: pointer;
+}
+#section__questions details summary::after {
+ content: "▶";
+ font-size: 0.8em;
+ color: var(--grey-400);
+}
+#section__questions details p {
+ padding-top: calc(var(--spacing) * 0.25);
+ margin-bottom: var(--spacing);
+ border-top: var(--border);
+}
+#section__questions details::details-content {
+ max-height: 0;
+ transition: max-height ease-in 0.5s;
+ overflow: hidden;
+}
+#section__questions details[open]::details-content {
+ max-height: 1000px;
+ filter: none;
+}
+#section__questions details[open] summary::after {
+ transform: rotate(90deg);
+ transform-origin: center;
+}
+#section__questions .btn--bold {
+ display: block;
+ margin: calc(var(--spacing) * 1.5) auto;
+ margin-bottom: 0;
+}
+
+#section__socials .list-socials {
+ -moz-columns: 2;
+ columns: 2;
+}/*# sourceMappingURL=style.css.map */
\ No newline at end of file
diff --git a/assets/css/style.css.map b/assets/css/style.css.map
new file mode 100644
index 0000000..5e06ab6
--- /dev/null
+++ b/assets/css/style.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["style.css","base/_var.scss","base/_body.scss","base/_responsive.scss","components/_text.scss","components/_buttons.scss","components/_nav-tabs.scss","components/_list-socials.scss","components/_player.scss","components/_gauge.scss","components/_form-newsletter.scss","components/_comments-slider.scss","partials/_site-header.scss","pages/dons/_sections.scss","pages/dons/_section-player.scss","pages/dons/_section-hero.scss","pages/dons/_section-store.scss","pages/dons/_section-donation.scss","pages/dons/_section-questions.scss","pages/dons/_section-socials.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACAhB;EACI,yBAAA;EAOA,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,iBAAA;EACA,cAAA;EACA,gBAAA;EAEA,kBAAA;EACA,qBAAA;EAIA,gBAAA;EACA,gBAAA;EAGA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,0BAAA;EACA,2BAAA;EAEA,mBAAA;EACA,mBAAA;EACA,mBAAA;EACA,mBAAA;EAEA,oCAAA;EAGA,iBAAA;EACA,yBAAA;EAIA,oBAAA;EAGA,mBAAA;EACA,eAAA;EACA,eAAA;ADnBJ;;AE7BA;EACI,SAAA;EACA,UAAA;EAEA,sBAAA;EACA,mCAAA;EACA,gCAAA;EACA,8BAAA;AF+BJ;;AE7BA;EACI,mBAAA;AFgCJ;;AE9BA;EACI,gBAAA;EACA,aAAA;EACA,YAAA;EACA,uBAAA;AFiCJ;;AE/BA;EACI,YAAA;AFkCJ;;AE/BA;EACI,wBAAA;EACA,kCAAA;EACA,2BAAA;EAEA,uBAAA;EACA,iCAAA;EACA,gCAAA;EAEA,YAAA;EACA,kBAAA;AFgCJ;;AGzDA;EACI;IACI,eAAA;IACA,wBAAA;IACA,6BAAA;EH4DN;AACF;AIpEI;EACI,wBAAA;EACA,6BAAA;EACA,iCAAA;EACA,kBAAA;EACA,qCAAA;AJsER;AInEI;EACI,2BAAA;EACA,6BAAA;EACA,iCAAA;EACA,kBAAA;EACA,wBAAA;AJqER;AIlEI;EACI,0BAAA;EACA,oBAAA;EACA,sBAAA;AJoER;AI9DI;EACI,0BAAA;EACA,iCAAA;EACA,6BAAA;EACA,eAAA;EACA,4BAAA;EACA,sBAAA;EACA,gBAAA;EACA,2BAAA;EACA,mCAAA;EACA,kBAAA;AJgER;AI7DI;EACI,2BAAA;EACA,6BAAA;EACA,cAAA;EAEA,gCAAA;EACA,4BAAA;EACA,kBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;AJ8DR;AI3DI;EACI,2BAAA;EACA,6BAAA;EACA,cAAA;EACA,uCAAA;EACA,uCAAA;AJ6DR;;AKzHA;EACI,YAAA;EACA,wBAAA;EACA,mBAAA;EAEA,kBAAA;EACA,aAAA;EACA,mBAAA;EACA,WAAA;EACA,kBAAA;EACA,0BAAA;EAEA,6BAAA;EAEA,qBAAA;EAEA,eAAA;ALwHJ;AKtHI;EAAa,WAAA;ALyHjB;AKvHI;EACI,kBAAA;EACA,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,gBAAA;EACA,iBAAA;ALyHR;AKvHQ;EACI,UAAA;EACA,qBAAA;ALyHZ;AKrHI;EACI,WAAA;EACA,cAAA;EACA,qCAAA;EACA,oCAAA;EACA,kBAAA;EACA,mBAAA;EACA,kBAAA;EACA,SAAA;EACA,UAAA;EACA,sBAAA;ALuHR;AKpHI;EACI,sBAAA;ALsHR;AKrHQ;EACI,WAAA;ALuHZ;;AM1KA;EACI,sBAAA;EACA,WAAA;EACA,qBAAA;EACA,kCAAA;EACA,gBAAA;EAGA,oBAAA;EAEA,WAAA;EACA,cAAA;EACA,6BAAA;AN0KJ;AMvKI;EACI,0BAAA;EACA,cAAA;ANyKR;AMvKQ;EACI,kCAAA;EACA,sBAAA;ANyKZ;AMtKQ;EACI,iCAAA;EACA,eAAA;ANwKZ;AMnKI;EACI,0BAAA;ANqKR;;AOrMA;EACI,qBAAA;APwMJ;AOtMI;EACI,0CAAA;APwMR;AOvMQ;EACI,aAAA;EACA,mBAAA;EACA,QAAA;EACA,qBAAA;APyMZ;AOrMY;EACI,WAAA;EACA,sBAAA;APuMhB;AOpMY;EACI,kBAAA;EACA,QAAA;EACA,WAAA;EACA,qBAAA;APsMhB;;AQ5NA;EACI,WAAA;EACA,YAAA;AR+NJ;AQ3NI;EACI,WAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,gBAAA;AR6NR;AQzNQ;EAMI,kBAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;ARsNZ;AQ9NY;EACI,sBAAA;EACA,WAAA;ARgOhB;AQvNQ;;EAEI,WAAA;EACA,YAAA;EACA,oBAAA;KAAA,iBAAA;ARyNZ;AQnNI;EACI,aAAA;EACA,WAAA;EACA,YAAA;ARqNR;AQpNQ;EACI,WAAA;EACA,YAAA;ARsNZ;;ASjQA;EACI,WAAA;EACA,aAAA;EACA,eAAA;EACA,8BAAA;AToQJ;;ASjQA;EACI,WAAA;EACA,0CAAA;EACA,kCAAA;EACA,0CAAA;EACA,iCAAA;EACA,kBAAA;EACA,gBAAA;AToQJ;ASnQI;EACI,WAAA;EACA,cAAA;EACA,kCAAA;EACA,0CAAA;EACA,SAAA;EACA,kCAAA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,qCAAA;ATqQR;;AShQA;EACI;IACE,SAAA;ETmQJ;ESjQE;IACE,sBAAA;ETmQJ;AACF;AS9PI;EACI,0BAAA;EACA,mBAAA;ATgQR;AS7PI;EACI,iBAAA;AT+PR;;AU9SA;EACI,YAAA;EAEA,kBAAA;EACA,aAAA;EACA,mBAAA;EAEA,eAAA;EAEA,qCAAA;EACA,sCAAA;AV8SJ;AU3SI;EAEI,sBAAA;EACA,WAAA;EACA,yCAAA;EACA,aAAA;EACA,YAAA;EACA,cAAA;EAEA,2BAAA;EACA,WAAA;AV2SR;AU1SQ;EACI,2BAAA;AV4SZ;AU7SQ;EACI,2BAAA;AV4SZ;AUzSQ;EACI,kCAAA;AV2SZ;AUpSI;EAEI,WAAA;EACA,kBAAA;EACA,UAAA;AVqSR;AUnSQ;EACI,WAAA;EACA,gBAAA;AVqSZ;AUnSY;EACI,UAAA;EACA,QAAA;AVqShB;AUlSY;EACI,2BAAA;EACA,aAAA;EACA,iBAAA;AVoShB;AUhSgB;EACI,cAAA;AVkSpB;AU3RQ;EACI,WAAA;EACA,cAAA;EACA,YAAA;EACA,YAAA;EACA,wEAAA;EACA,kBAAA;EACA,YAAA;EACA,WAAA;AV6RZ;;AWvWA;EACI,aAAA;EACA,gBAAA;EACA,6BAAA;EACA,uBAAA;EACA,MAAA;EACA,UAAA;EACA,qBAAA,EAAA,YAAA;AX0WJ;AWxWI;EATJ;IAUM,iBAAA;IACA,aAAA;EX2WJ;AACF;;AWvWE;EACE,aAAA;AX0WJ;;AWvWE;EACE,wBAAA;AX0WJ;AWvWI;EAJF;IAKI,+CAAA,EAAA,WAAA;IACA,gBAAA;EX0WJ;AACF;AWzWI;EARF;IASI,aAAA;EX4WJ;AACF;;AWvWE;EACE,2BAAA;EACA,6BAAA;EACA,cAAA;EACA,eAAA;EACA,kBAAA;AX0WJ;;AWvWE;EACE,sCAAA;EACA,kBAAA;AX0WJ;;AWnWE,SAAA;AACA;EACE,aAAA;EAGA,kBAAA;EACA,WAAA;EACA,sCAAA;AXoWJ;AWxWI;EAFF;IAEwB,uBAAA;EX4WxB;AACF;AW5WI;EAHF;IAGqB,yBAAA;EXgXrB;AACF;;AW5WE;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,YAAA;EACA,2BAAA;EACA,eAAA;EACA,2BAAA;AX+WJ;;AW7WE;EACE,4BAAA;AXgXJ;;AYvbA;EAEI,eAAA;EACA,SAAA;EACA,QAAA;EACA,eAAA;EAEA,YAAA;EACA,uBAAA;EACA,8BAAA;EAEA,6BAAA;EACA,4BAAA;EACA,yBAAA;EAKA,aAAA;EACA,mBAAA;EACA,8BAAA;AZmbJ;AYjbI;EACI,sBAAA;EACA,WAAA;AZmbR;AY9aI;EACI,aAAA;EACA,YAAA;EACA,gBAAA;AZgbR;AY/aQ;EACI,sBAAA;AZibZ;AY1aI;EACI,SAAA;EACA,gBAAA;EACA,UAAA;AZ4aR;AY1aI;EACI,YAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,QAAA;EACA,gBAAA;AZ4aR;AYxaI;EACI,YAAA;AZ0aR;AYtaI;EAEI,aAAA;EACA,sBAAA;EACA,mBAAA;AZuaR;AYjaI;EACI,aAAA;EACA,yBAAA;EACA,mBAAA;EACA,QAAA;EACA,qBAAA;AZmaR;AYhaQ;EAEI,gBAAA;EACA,aAAA;EACA,oBAAA;EACA,qBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,cAAA;AZiaZ;AY5ZI;EACI,iCAAA;EACA,gCAAA;EACA,wBAAA;EACA,8BAAA;AZ8ZR;AY5ZQ;EACI,sBAAA;EACA,UAAA;AZ8ZZ;AY3ZQ;EACI,UAAA;EACA,SAAA;AZ6ZZ;;AavgBA;EACI,4BAAA;EACA,wCAAA;Ab0gBJ;;AargBA;EAEI;IACI,qDAAA;EbugBN;AACF;AclhBA;EAEI,kBAAA;EACA,oCAAA;AdmhBJ;AcjhBI;EALJ;IAMQ,YAAA;EdohBN;EclhBM;IACI,WAAA;IACA,YAAA;IACA,gBAAA;EdohBV;AACF;AchhBI;EAhBJ;IAiBQ,kBAAA;IACA,YAAA;IACA,YAAA;EdmhBN;EclhBM;IACI,WAAA;IACA,YAAA;IACA,gBAAA;EdohBV;AACF;;AeziBI;EACI,kBAAA;EACA,sCAAA;EACA,yCAAA;Af4iBR;AeviBI;EACI,cAAA;EACA,2BAAA;EACA,yCAAA;AfyiBR;AetiBI;EACI,sCAAA;AfwiBR;;AgBvjBI;EAGI,sCAAA;EACA,yCAAA;EACA,kBAAA;AhBwjBR;AgBtjBQ;EACI,iBAAA;EACA,iCAAA;EACA,gCAAA;EACA,yCAAA;AhBwjBZ;AgBpjBQ;EACI,WAAA;EACA,YAAA;EACA,sBAAA;KAAA,mBAAA;AhBsjBZ;AgBnjBQ;EACI,qBAAA;AhBqjBZ;AgBljBQ;EACI,cAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,eAAA;AhBojBZ;;AiBvlBA;EACI,aAAA;EACA,sBAAA;AjB0lBJ;AiBtlBI;EACI,aAAA;EACA,8BAAA;EACA,6BAAA;EACA,0CAAA;AjBwlBR;AiBtlBQ;EACI,mBAAA;AjBwlBZ;AiBnlBI;EACI,kCAAA;EACA,sBAAA;EACA,kCAAA;EACA,gCAAA;AjBqlBR;AiBnlBQ;EACI,2BAAA;EACA,6BAAA;EACA,qBAAA;AjBqlBZ;AiBllBQ;EACI,0BAAA;AjBolBZ;AiBjlBQ;EACI,wCAAA;EAEA,eAAA;AjBklBZ;;AkBtnBI;EACI,4BAAA;AlBynBR;AkBtnBQ;EACI,gCAAA;EACA,aAAA;EACA,mBAAA;EACA,8BAAA;EACA,eAAA;AlBwnBZ;AkBtnBY;EACI,YAAA;EACA,gBAAA;EACA,sBAAA;AlBwnBhB;AkBpnBQ;EACI,wCAAA;EACA,6BAAA;EACA,yBAAA;AlBsnBZ;AkBlnBQ;EAEI,aAAA;EACA,mCAAA;EACA,gBAAA;AlBmnBZ;AkBtmBY;EACI,kBAAA;EACA,YAAA;AlBwmBhB;AkBpmBY;EACI,wBAAA;EACA,wBAAA;AlBsmBhB;AkB/lBI;EACI,cAAA;EACA,uCAAA;EACA,gBAAA;AlBimBR;;AmB5pBI;EACI,eAAA;OAAA,UAAA;AnB+pBR","file":"style.css"}
\ No newline at end of file
diff --git a/assets/css/style.scss b/assets/css/style.scss
new file mode 100644
index 0000000..f7744ef
--- /dev/null
+++ b/assets/css/style.scss
@@ -0,0 +1,29 @@
+@charset "UTF-8";
+@import "base/var";
+@import "base/body";
+@import "base/responsive";
+
+@import "components/text";
+@import "components/heading";
+@import "components/buttons";
+@import "components/nav-tabs";
+@import "components/list-socials";
+
+@import "components/player";
+@import "components/gauge";
+@import "components/form-newsletter";
+@import "components/comments-slider";
+
+
+@import "partials/site-header";
+
+
+@import "pages/dons/sections";
+@import "pages/dons/section-player";
+@import "pages/dons/section-hero";
+@import "pages/dons/section-store";
+@import "pages/dons/section-donation";
+@import "pages/dons/section-questions";
+@import "pages/dons/section-socials";
+
+
diff --git a/assets/icons/arrow-left.svg b/assets/icons/arrow-left.svg
new file mode 100644
index 0000000..09437b0
--- /dev/null
+++ b/assets/icons/arrow-left.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/icons/arrow-top-right.svg b/assets/icons/arrow-top-right.svg
new file mode 100644
index 0000000..e46faa9
--- /dev/null
+++ b/assets/icons/arrow-top-right.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/icons/facebook.svg b/assets/icons/facebook.svg
new file mode 100644
index 0000000..2ef5a54
--- /dev/null
+++ b/assets/icons/facebook.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/icons/linkedin.svg b/assets/icons/linkedin.svg
new file mode 100644
index 0000000..7142601
--- /dev/null
+++ b/assets/icons/linkedin.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/icons/play-button.svg b/assets/icons/play-button.svg
new file mode 100644
index 0000000..ea58eaf
--- /dev/null
+++ b/assets/icons/play-button.svg
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/assets/js/script.js b/assets/js/script.js
new file mode 100644
index 0000000..7e121fe
--- /dev/null
+++ b/assets/js/script.js
@@ -0,0 +1,51 @@
+function updateLinkInterval(link, interval) {
+ const currentHref = link.getAttribute("href");
+ const newHref = currentHref.replace(
+ /default_interval=[om]/,
+ `default_interval=${interval}`
+ );
+ link.setAttribute("href", newHref);
+}
+
+function updateAmountDisplay(link, amount, interval) {
+ const boldText = link.querySelector(".bold");
+ if (!boldText) return;
+
+ const suffix = interval === "m" ? "€/mois" : "€";
+ boldText.innerHTML = `${amount}${suffix}`;
+}
+
+function switchActiveTab(clickedButton, allButtons) {
+ allButtons.forEach((btn) => btn.classList.remove("is-selected"));
+ clickedButton.classList.add("is-selected");
+}
+
+function handleDonationIntervalChange(interval) {
+ const donationLinks = document.querySelectorAll(".btn--donation[data-amount]");
+ const freeAmountLink = document.querySelector(".btn--donation:not([data-amount])");
+
+ donationLinks.forEach((link) => {
+ const amount = link.getAttribute("data-amount");
+ updateLinkInterval(link, interval);
+ updateAmountDisplay(link, amount, interval);
+ });
+
+ if (freeAmountLink) {
+ updateLinkInterval(freeAmountLink, interval);
+ }
+}
+
+document.addEventListener("DOMContentLoaded", function () {
+ const tabButtons = document.querySelectorAll(".nav--tabs__btn");
+ const donationLinks = document.querySelectorAll(".btn--donation[data-amount]");
+
+ if (tabButtons.length === 0 || donationLinks.length === 0) return;
+
+ tabButtons.forEach((button) => {
+ button.addEventListener("click", function () {
+ const interval = this.getAttribute("data-interval");
+ switchActiveTab(this, tabButtons);
+ handleDonationIntervalChange(interval);
+ });
+ });
+});
diff --git a/assets/src/_reset.scss b/assets/src/_reset.scss
deleted file mode 100644
index 2bb0934..0000000
--- a/assets/src/_reset.scss
+++ /dev/null
@@ -1 +0,0 @@
-@import "_reset.scss";
diff --git a/assets/style.css b/assets/style.css
deleted file mode 100644
index ffeba9b..0000000
--- a/assets/style.css
+++ /dev/null
@@ -1 +0,0 @@
-/*# sourceMappingURL=style.css.map */
\ No newline at end of file
diff --git a/assets/style.css.map b/assets/style.css.map
deleted file mode 100644
index 8d75751..0000000
--- a/assets/style.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":[],"names":[],"mappings":"","file":"style.css"}
\ No newline at end of file
diff --git a/site/blueprints/blocks/heading.yml b/site/blueprints/blocks/heading.yml
new file mode 100644
index 0000000..c17e29d
--- /dev/null
+++ b/site/blueprints/blocks/heading.yml
@@ -0,0 +1,20 @@
+name: field.blocks.heading.name
+icon: title
+wysiwyg: true
+preview: heading
+fields:
+ level:
+ label: field.blocks.heading.level
+ type: toggles
+ empty: false
+ default: "h2"
+ labels: false
+ options:
+ - value: h3
+ icon: h3
+ text: H3
+ text:
+ label: field.blocks.heading.text
+ type: writer
+ inline: true
+ placeholder: field.blocks.heading.placeholder
diff --git a/site/blueprints/blocks/image.yml b/site/blueprints/blocks/image.yml
new file mode 100644
index 0000000..392715d
--- /dev/null
+++ b/site/blueprints/blocks/image.yml
@@ -0,0 +1,27 @@
+name: field.blocks.image.name
+icon: image
+preview: image
+fields:
+ image:
+ label: field.blocks.image.name
+ type: files
+ query: model.images
+ multiple: false
+ image:
+ back: black
+ uploads:
+ template: blocks/image
+ alt:
+ label: field.blocks.image.alt
+ type: text
+ icon: title
+ help: Description de l’image, utile si elle ne s’affiche pas. Écrivez comme si vous expliquiez l'image à quelqu'un par téléphone.
+ caption:
+ label: field.blocks.image.caption
+ type: writer
+ icon: text
+ inline: true
+ link:
+ label: field.blocks.image.link
+ type: text
+ icon: url
diff --git a/site/blueprints/blocks/text.yml b/site/blueprints/blocks/text.yml
new file mode 100644
index 0000000..740ced6
--- /dev/null
+++ b/site/blueprints/blocks/text.yml
@@ -0,0 +1,10 @@
+name: field.blocks.text.name
+icon: text
+wysiwyg: true
+preview: text
+fields:
+ text:
+ type: writer
+ headings:
+ - 4
+ placeholder: field.blocks.text.placeholder
diff --git a/site/blueprints/pages/about.yml b/site/blueprints/pages/about.yml
new file mode 100644
index 0000000..6f11445
--- /dev/null
+++ b/site/blueprints/pages/about.yml
@@ -0,0 +1 @@
+title: À propos
diff --git a/site/blueprints/pages/home.yml b/site/blueprints/pages/home.yml
new file mode 100644
index 0000000..06870fd
--- /dev/null
+++ b/site/blueprints/pages/home.yml
@@ -0,0 +1 @@
+title: Accueil
diff --git a/site/blueprints/pages/impacts.yml b/site/blueprints/pages/impacts.yml
new file mode 100644
index 0000000..fad6765
--- /dev/null
+++ b/site/blueprints/pages/impacts.yml
@@ -0,0 +1 @@
+title: Impacts
diff --git a/site/blueprints/pages/investigation.yml b/site/blueprints/pages/investigation.yml
new file mode 100644
index 0000000..ffa08e1
--- /dev/null
+++ b/site/blueprints/pages/investigation.yml
@@ -0,0 +1,104 @@
+title: Investigation
+create:
+ fields:
+ - subtitle
+
+tabs:
+ contentTab:
+ label: Contenu
+ icon: page
+ columns:
+ - width: 2/6
+ fields:
+ created:
+ label: Première publication
+ type: date
+ display: DD / MM / YYYY
+ default: today
+ width: 1/4
+ - width: 4/6
+ fields:
+ subtitle:
+ label: Sous-titre
+ type: text
+ chapo:
+ label: Chapo
+ type: writer
+ nodes: false
+ buttons: false
+ cover:
+ label: Visuel de couverture
+ type: files
+ multiple: false
+ min: 1
+ layout: cards
+ size: full
+ image:
+ ratio: 12/7
+ cover: true
+ body:
+ label: Corps
+ type: layout
+ layouts:
+ - "1/1"
+ - "1/2, 1/2"
+ - "1/3, 1/3, 1/3"
+ fieldsets:
+ - heading
+ - text
+ - image
+ metadataTab:
+ label: Métadonnées
+ icon: table
+ fields:
+ incidentDate:
+ label: Date de l'incident
+ type: date
+ display: DD / MM / YYYY
+ width: 1/3
+ incidentLocation:
+ label: Lieu de l'incident
+ type: text
+ width: 1/3
+ incidentConsequences:
+ label: Conséquence(s)
+ type: text
+ width: 1/3
+ keywords:
+ label: Mots-clés
+ type: tags
+ width: 1/2
+ partners:
+ label: Partenaires
+ type: structure
+ width: 1/2
+ fields:
+ name:
+ label: Nom
+ type: text
+ link:
+ label: Lien
+ type: link
+ options:
+ - url
+ line:
+ type: line
+ indexTeam:
+ label: Équipe Index
+ type: structure
+ columns:
+ responsability:
+ width: 1/2
+ names:
+ width: 1/2
+ fields:
+ responsability:
+ label: Responsabilité
+ type: text
+ width: 1/2
+ names:
+ label: Nom
+ type: entries
+ width: 1/2
+ field:
+ type: text
diff --git a/site/blueprints/pages/investigations.yml b/site/blueprints/pages/investigations.yml
new file mode 100644
index 0000000..2aca985
--- /dev/null
+++ b/site/blueprints/pages/investigations.yml
@@ -0,0 +1,17 @@
+title: Investigations
+
+tabs:
+ contentTab:
+ label: Contenu
+ sections:
+ investigations:
+ type: pages
+ template: investigation
+ text: "{{ page.title }}, {{ page.subtitle }}"
+ info: "{{ page.incidentConsequences }} à {{ page.incidentLocation }}"
+ layout: cards
+ size: huge
+ search: true
+ image:
+ cover: true
+ ratio: 12/7
diff --git a/site/blueprints/pages/product.yml b/site/blueprints/pages/product.yml
new file mode 100644
index 0000000..9963f7b
--- /dev/null
+++ b/site/blueprints/pages/product.yml
@@ -0,0 +1,25 @@
+title: Produit
+
+tabs:
+ contentTab:
+ columns:
+ - width: 1/3
+ sections:
+ gallery:
+ label: Galerie
+ type: files
+ layout: cards
+ min: 1
+ max: 1
+ - width: 2/3
+ fields:
+ price:
+ label: Prix
+ type: number
+ after: €
+ width: 1/3
+ description:
+ type: writer
+ nodes: false
+ marks: false
+ width: 2/3
diff --git a/site/blueprints/pages/resources.yml b/site/blueprints/pages/resources.yml
new file mode 100644
index 0000000..35ad676
--- /dev/null
+++ b/site/blueprints/pages/resources.yml
@@ -0,0 +1 @@
+title: Resources
diff --git a/site/blueprints/pages/shop.yml b/site/blueprints/pages/shop.yml
new file mode 100644
index 0000000..37ea190
--- /dev/null
+++ b/site/blueprints/pages/shop.yml
@@ -0,0 +1,10 @@
+title: Boutique
+
+tabs:
+ contentTab:
+ sections:
+ products:
+ label: Produits
+ type: pages
+ template: product
+ ratio: 4/3
diff --git a/site/blueprints/pages/support.yml b/site/blueprints/pages/support.yml
new file mode 100644
index 0000000..8b6f16c
--- /dev/null
+++ b/site/blueprints/pages/support.yml
@@ -0,0 +1,45 @@
+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
diff --git a/site/config/config.php b/site/config/config.php
new file mode 100644
index 0000000..8e65d31
--- /dev/null
+++ b/site/config/config.php
@@ -0,0 +1,34 @@
+ true,
+ 'thumbs' => [
+ 'quality' => 80,
+ 'presets' => [
+ 'grid' => 400,
+ 'default' => [
+ 'width' => 1024, 'format' => 'webp'
+ ],
+ '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'],
+ ],
+ ],
+ ],
+ 'panel' => [
+ 'menu' => require_once __DIR__ . '/menu.php'
+ ],
+ 'donorbox' => [
+ 'api_key' => '', // À remplir avec la clé API Donorbox
+ 'campaign_slug' => 'soutenir-index-en-2024',
+ 'campaign_url' => 'https://donorbox.org/soutenir-index-en-2024',
+ 'api_base_url' => 'https://donorbox.org/api/v1'
+ ]
+];
\ No newline at end of file
diff --git a/site/config/menu.php b/site/config/menu.php
new file mode 100644
index 0000000..a3f33c2
--- /dev/null
+++ b/site/config/menu.php
@@ -0,0 +1,24 @@
+ [
+ 'label' => 'Soutien',
+ 'icon' => 'money',
+ 'link' => 'pages/soutien',
+ 'current' => function ($current) {
+ $path = Kirby::instance()->request()->path()->toString();
+ return Str::contains($path, 'pages/soutien');
+ },
+ ],
+ 'shop' => [
+ 'label' => 'Boutique',
+ 'icon' => 'cart',
+ 'link' => 'pages/boutique',
+ 'current' => function ($current) {
+ $path = Kirby::instance()->request()->path()->toString();
+ return Str::contains($path, 'pages/boutique');
+ },
+ ],
+ '-',
+ 'users'
+];
\ No newline at end of file
diff --git a/site/controllers/support.php b/site/controllers/support.php
new file mode 100644
index 0000000..d1b4138
--- /dev/null
+++ b/site/controllers/support.php
@@ -0,0 +1,55 @@
+option('donorbox');
+ $apiKey = $config['api_key'];
+ $campaignSlug = $config['campaign_slug'];
+
+ // Valeurs par défaut
+ $data = [
+ 'amount_raised' => 0,
+ 'donor_count' => 0,
+ 'goal_amount' => 20000, // Objectif par défaut
+ 'percentage' => 0,
+ 'campaign_url' => $config['campaign_url']
+ ];
+
+ // Si la clé API est configurée, récupérer les données en temps réel
+ if (!empty($apiKey)) {
+ try {
+ $apiUrl = $config['api_base_url'] . '/campaigns/' . $campaignSlug;
+
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $apiUrl);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_HTTPHEADER, [
+ 'Authorization: Bearer ' . $apiKey,
+ 'Content-Type: application/json'
+ ]);
+
+ $response = curl_exec($ch);
+ $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+ curl_close($ch);
+
+ if ($httpCode === 200 && $response) {
+ $campaignData = json_decode($response, true);
+
+ if ($campaignData) {
+ $data['amount_raised'] = $campaignData['amount_raised'] ?? 0;
+ $data['donor_count'] = $campaignData['donor_count'] ?? 0;
+ $data['goal_amount'] = $campaignData['goal_amount'] ?? 20000;
+
+ // Calculer le pourcentage
+ if ($data['goal_amount'] > 0) {
+ $data['percentage'] = round(($data['amount_raised'] / $data['goal_amount']) * 100, 0);
+ }
+ }
+ }
+ } catch (Exception $e) {
+ // En cas d'erreur, on garde les valeurs par défaut
+ // Optionnel : logger l'erreur
+ }
+ }
+
+ return $data;
+};
diff --git a/site/snippets/footer.php b/site/snippets/footer.php
new file mode 100644
index 0000000..0e1fcd2
--- /dev/null
+++ b/site/snippets/footer.php
@@ -0,0 +1,3 @@
+
+