/* NAMESPACE */
@namespace url("http://www.w3.org/1999/xhtml");   /* default namespace */
@namespace svg url('http://www.w3.org/2000/svg');


/* FONTS */
@font-face {
    font-family: "Butler Extrabold";
    src: url('assets/fonts/butler/Butler-ExtraBold.woff') format('woff'),
         url('assets/fonts/butler/Butler-ExtraBold.woff2') format('woff2');
    font-weight: 800;
    font-style: normal;
}

@font-face {
    font-family: "Montserrat";
    src: url('assets/fonts/Montserrat/static/Montserrat-Regular.woff2') format('woff2'),
         url('assets/fonts/Montserrat/static/Montserrat-Regular.woff') format('woff'),
         url('assets/fonts/Montserrat/static/Montserrat-Regular.ttf') format('truetype');
    font-weight: 400;
    font-style: normal;
}

@font-face {
    font-family: "Montserrat";
    src: url('assets/fonts/Montserrat/static/Montserrat-Bold.woff2') format('woff2'),
         url('assets/fonts/Montserrat/static/Montserrat-Bold.woff') format('woff'),
         url('assets/fonts/Montserrat/static/Montserrat-Bold.ttf') format('truetype');
    font-weight: 700;
    font-style: bold;
}

@font-face {
    font-family: "Montserrat";
    src: url('assets/fonts/Montserrat/static/Montserrat-ExtraBold.woff2') format('woff2'),
         url('assets/fonts/Montserrat/static/Montserrat-ExtraBold.woff') format('woff'),
         url('assets/fonts/Montserrat/static/Montserrat-ExtraBold.ttf') format('truetype');
    font-weight: 800;
    font-style: bolder;
}

@font-face {
    font-family: "Rajdhani Medium";
    src: url('assets/fonts/Rajdhani/Rajdhani-Medium.woff2') format('woff2'),
         url('assets/fonts/Rajdhani/Rajdhani-Medium.woff') format('woff'),
         url('assets/fonts/Rajdhani/Rajdhani-Medium.ttf') format('truetype');
    font-weight: 500;
    font-style: medium;
}



/* ||| Global variable definitions */
html {

    --primary-color: #111c28;
    --secondary-color: #F4AD2A;
    --tertiary-color: #F5F1E3;
    --link-color: #FF5976;

    --gradient-1-start: #FF5875;
    --gradient-1-end: #F5AE2D;
    --gradient-1-angle: 60deg;

    --gradient-2-start: #0A1b29;
    --gradient-2-end:#0090AC;
    --gradient-2-angle: 60deg;

    --gradient-3-start: #0A1B29;
    --gradient-3-end: #FF5875;
    --gradient-3-angle: 60deg;

    --gradient-4-start: #F87537;
    --gradient-4-end: #FBA81F;
    --gradient-4-angle: 60deg;

    --body-margin-left: 1.5rem;
    --body-margin-right: 1.5rem;

    /* Make the menu take up all the visible width */
    --header-width: 100vw - var(--body-margin-left) - var(--body-margin-right);
    --header-height: 3rem;
    --header-padding-top: 1rem;
    --header-box-height: var(--header-height) + var(--header-padding-top);

    --footer-box-height: 2rem;

    font-size: calc(100vw * calc( 16 / 375 ));  /* 16px for 375px and above - linear scaling below */
}

@media screen and (min-width: 375px) {
    html {
        font-size: 16px;
    }
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    html {
        font-size: 16px;

        --header-height: 5rem;
    }
}

@media screen and (min-width: 1024px) and (min-aspect-ratio: 1/1) {
    html {
        font-size: 16px;

        --header-height: 7rem;
    }
}

@media screen and (min-width: 2048px) and (min-aspect-ratio: 1/1) {
    html {
        font-size: 16px;
    }
}


/* || Body */
.body {

	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;

	line-height: 1;

    color: var(--primary-color);
    background-color: var(--tertiary-color);

    font-family: "Montserrat","Verdana", sans-serif;
    font-weight: 400;
    font-size: 1rem;

    margin: 0 var(--body-margin-left);

    display: flex;
    flex-direction: column;
    justify-content: space-between;
    min-height: 100vh;
}

/* 1440 + 2 * 1.5 * 16 = 1488 */
@media screen and (min-width: 1488px) and (min-aspect-ratio: 1/1) {
    .body {
        margin: 0 auto;
        max-width: 1200px;
    }
}

/* || Text and Paragraphs */
.text {
	display: block;
    margin-block-start: 0;
    margin-block-end: 0;
    margin-inline-start: 0;
    margin-inline-end: 0;
}

.text--long {
    text-align: justify;
    hyphens: auto;
}

.text--hide-on-mobile {
    display: none;
}

/* lobotomized owl selector */
/* https://alistapart.com/article/axiomatic-css-and-lobotomized-owls/ */
.text + .text {
	margin-top: 1.5em;
}

.tagline {
	display: block;
    margin-block-start: 0;
    margin-block-end: 0;
    margin-inline-start: 0;
    margin-inline-end: 0;

    font-size: 1.3rem;
    font-family: "Rajdhani Medium", "Tahoma";
}

.h1 {
    /* resets */
    display: block;
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
    margin-block-start: 0;
    margin-block-end: 0;
    margin-inline-start: 0;
    margin-inline-end: 0;

    font-size: 2.5rem;
    font-family: "Butler Extrabold", "Garamond", "Arial";
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .h1 {
        font-size: 2.5rem;
    }
}

@media screen and (min-width: 1024px) and (min-aspect-ratio: 1/1) {
    .h1 {
        font-size: 3.125rem;
    }
}

@media screen and (min-width: 2048px) and (min-aspect-ratio: 1/1) {
    .h1 {
        font-size: 3.75rem;
    }
}

.h2 {
    /* resets */
    display: block;
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
    margin-block-start: 0;
    margin-block-end: 0;
    margin-inline-start: 0;
    margin-inline-end: 0;

    font-size: 1.8rem;
    font-family: "Butler Extrabold", "Garamond", "Arial";

    margin-bottom: 1em;
}

.text + .h2 {
    margin-top: 1em;
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .h2 {
        font-size: 1.6rem;
    }
}

@media screen and (min-width: 1024px) and (min-aspect-ratio: 1/1) {
    .h2 {
        font-size: 2.25rem;
    }
}

@media screen and (min-width: 2048px) and (min-aspect-ratio: 1/1) {
    .h2 {
        font-size: 2.7rem;
    }
}

.h2--with-lines {
    display: inline-flex;
    align-items: center;
    margin-top: 2rem;
}

/* put a line before the title */
.h2--with-lines::before {
    content: "";
    display: inline-block;
    height: 1px;
    width: 2em;
    margin-right: 0.5em;
    background: var(--primary-color);
}

/* put a line after the title */
.h2--with-lines::after {
    content: "";
    display: inline-block;
    height: 1px;
    width: 2em;
    margin-left: 0.5em;  
    background: var(--primary-color);;
}

.h3 {
    /* resets */
    display: block;
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
    margin-block-start: 0;
    margin-block-end: 0;
    margin-inline-start: 0;
    margin-inline-end: 0;

    font-size: 1.5rem;
    font-family: "Rajdhani Medium", "Tahoma";

    margin-top: 1em;
    margin-bottom: 1em;
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .h3 {
        font-size: 1.5rem;
    }
}

@media screen and (min-width: 1024px) and (min-aspect-ratio: 1/1) {
    .h3 {
        font-size: 1.875rem;
    }
}

@media screen and (min-width: 2048px) and (min-aspect-ratio: 1/1) {
    .h3 {
        font-size: 2.25rem;
    }
}

/* || List */
.list {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
	list-style: none;
	list-style-type: none;

    margin-block-start: 0;
    margin-block-end: 0;
    margin-inline-start: 0;
    margin-inline-end: 0;
    padding-inline-start: 0;
}

.list--bullet {
    list-style-type: disc;
    margin-top: 1em;
    padding-left:1em;
}

.list__item {
    display: list-item;
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}

/* || Links */

.link {
    text-decoration: none;
}

.link:link { 
    text-decoration: none; 
    color: var(--primary-color);
}

.link:visited {
    text-decoration: none; 
    color: var(--primary-color);
}

.link:active {
	text-decoration: underline;
	color: var(--primary-color);
}

.link:hover {
	text-decoration: underline;
	color: var(--primary-color);
}

/* || Buttons */

.btn {
    font-size: inherit;
    display: block; /* legacy value */
    border: none;
    cursor: pointer;
    text-decoration: none;
    padding-block: 0;
    padding-inline: 0;

}

.btn__link:hover {
	text-decoration:none;
}

.btn__link:active {
	text-decoration:none;
}

/* ||| Hamburger button - 3 lines which turns into a cross when clicked */

/* The top slice */
.btn--hamburger {
    --hamburger-font-size: 0.5rem;
    --hamburger-slice-width: 4 * var(--hamburger-font-size);
    --hamburger-slice-height: 0.25rem;
    --hamburger-slice-space: 0.30rem;

    width: calc(var(--hamburger-slice-width));
    height: calc(var(--hamburger-slice-height));
    background-color: var(--primary-color);

    font-size: var(--hamburger-font-size);
    text-transform: uppercase;
    vertical-align: top;

    /* Add some margin above and below to make the clickable area square */
    margin-top: calc( calc(var(--hamburger-slice-width) - var(--hamburger-slice-height)) / 2 );
    margin-bottom: calc( calc(var(--hamburger-slice-width) - var(--hamburger-slice-height)) / 2 );
    
    position: relative;
    bottom: calc(var(--hamburger-slice-height) + var(--hamburger-slice-space));
}

/* The middle slice */
.btn--hamburger::before {
    content: "";
    display: block;
    width: calc(var(--hamburger-slice-width));
    height: calc(var(--hamburger-slice-height));
    background-color: inherit;

    position: absolute;
    left: 0;
    top: calc(var(--hamburger-slice-height) + var(--hamburger-slice-space));
}

/* The bottom slice */
.btn--hamburger::after {
    content: "";
    display: block;
    width: calc(var(--hamburger-slice-width));
    height: calc(var(--hamburger-slice-height));
    background-color: inherit;

    position: absolute;
    left: 0;
    top: calc( 2 * calc(var(--hamburger-slice-height) + var(--hamburger-slice-space)));
}

/* Transition to X cross when user clicked on it */
.btn--hamburger--active {
    transform:
        translateY(calc(var(--hamburger-slice-height) + var(--hamburger-slice-space)))
        rotate(45deg);
}

.btn--hamburger--active::before {
    opacity: 0;
}

.btn--hamburger--active::after {
    transform: 
        translateY(calc( -2 * var(--hamburger-slice-height)))
        translateY(calc( -2 * var(--hamburger-slice-space)))
        rotate(-90deg);
}

.btn--hamburger:hover {
    background-color: var(--link-color);
}


/* |||| Social network buttons - network icon is put as background image */

.btn--social {
    height: 1.5rem;
    width: 1.5rem;
    background-position: center;
    background-size: contain;
    background-repeat: no-repeat;
}


.btn--facebook {
    background-image: url("assets/images/common/social/facebook.svg");
}

.btn--facebook--light {
    background-image: url("assets/images/common/social/facebook-light.svg");
}

.btn--instagram {
    background-image: url("assets/images/common/social/instagram.svg");
}

.btn--instagram--light {
    background-image: url("assets/images/common/social/instagram-light.svg");
}

.btn--soundcloud {
    background-image: url("assets/images/common/social/soundcloud.svg");
}

.btn--soundcloud--light {
    background-image: url("assets/images/common/social/soundcloud-light.svg");
}

.btn--youtube {
    background-image: url("assets/images/common/social/youtube.svg");
}

.btn--youtube--light {
    background-image: url("assets/images/common/social/youtube-light.svg");
}

/* |||| Primary button - gradient background */

.btn--primary {
    color: var(--tertiary-color);
    text-decoration: none;
    background: linear-gradient(var(--gradient-1-angle), var(--gradient-1-start), var(--gradient-1-end));
}

.btn--primary:link {
    color: var(--tertiary-color);
    text-decoration: none;
}

.btn--primary:active {
    color: var(--tertiary-color);
    text-decoration: none;
}

.btn--primary:visited {
    color: var(--tertiary-color);
    text-decoration: none;
    background: linear-gradient(var(--gradient-1-angle), var(--gradient-1-start), var(--gradient-1-end));
}

.btn--primary:hover {
    color: var(--tertiary-color);
    background: var(--link-color);
    text-decoration: none;
}

.btn--primary:active {
    color: var(--tertiary-color);
    background: var(--link-color);
    text-decoration: none;
}

/* |||| Secondary button - dark background */

.btn--secondary, .btn--secondary:link {
    color: var(--tertiary-color);
    background: var(--primary-color);
}

.btn--secondary:visited {
    color: var(--tertiary-color);
    background: var(--primary-color);
}

.btn--secondary:hover {
    color: var(--tertiary-color);
    background: var(--link-color);
}

.btn--secondary:active {
    color: var(--tertiary-color);
    background: var(--link-color);
}

/* |||| Linktree buttons */

.linktree__item {
    display: flex;
    flex-direction: column;
    align-items: center;

    margin: 1rem 0;
}

.btn--linktree {
    display: inline-flex;
    border-radius: 0.5rem;
    padding-right: 1rem;
    align-items: center;

    font-size: 1.25rem;
    font-weight: bold;

    height: 4rem;
    width: 13rem;

    color: var(--tertiary-color);
    background: var(--primary-color);
}

.btn--linktree::before {
    content: "";

    width: 2rem;
    height: 4rem;
    background-repeat: no-repeat ;
    background-position: center;
    padding-left: 1rem;
    padding-right: 1rem;

}

.btn--linktree.btn--facebook--light::before {
    background-image: url("assets/images/common/social/facebook-light.svg");
}

.btn--linktree.btn--instagram--light::before {
    background-image: url("assets/images/common/social/instagram-light.svg");
}

.btn--linktree.btn--soundcloud--light::before {
    background-image: url("assets/images/common/social/soundcloud-light.svg");
}

.btn--linktree.btn--youtube--light::before {
    background-image: url("assets/images/common/social/youtube-light.svg");
}

.btn--linktree:visited {
    color: var(--tertiary-color);
    background: linear-gradient(var(--gradient-1-angle), var(--gradient-1-start), var(--gradient-1-end));
}

.btn--linktree:hover {
    color: var(--tertiary-color);
    background: var(--link-color);
    text-decoration: none;
}

.btn--linktree:active {
    color: var(--tertiary-color);
    background: var(--link-color);
    text-decoration: none;
}

/* |||| Media button - Arrow pointing right in a circle */
.btn--media {
    --btn-media-radius: 1.23rem;
    --btn-media-size: 2 * var(--btn-media-radius);
    height: calc(var(--btn-media-size));
    width: calc(var(--btn-media-size));
    position: relative;
    border-radius:var(--btn-media-radius);
    display: inline-flex;
    flex-direction: row;
}

/* use borders to draw an equilateral trianle shape */
/* 0.866 is approximately sqrt(3)/2 */
.btn--media::before {

    --btn-media-arrow-size: var(--btn-media-radius); /* size of edge of arrow */
    content: "";
    display: block;
    width: 0px; 
    height: 0px; 
    background: transparent;
    border-top: calc(0.5 * var(--btn-media-arrow-size)) solid transparent;
    border-bottom: calc(0.5 * var(--btn-media-arrow-size)) solid transparent;
    border-left: calc(0.866 * var(--btn-media-arrow-size)) solid var(--tertiary-color);  
    /* center arrow inside parent container */
    position: absolute;
    /* center arrow vertically */
    top: calc(var(--btn-media-radius) - 0.5 * var(--btn-media-arrow-size));
    /* first 2 terms center the arrow inside the button, third offset it a bit to the right to make it 'look' centered */
    left: calc(var(--btn-media-radius) - 0.433 * var(--btn-media-arrow-size) + 0.1 * var(--btn-media-radius)); 
}

@media screen and (min-width: 1024px) and (min-aspect-ratio: 1/1) {
    .btn--media {
        font-size: 1rem;
        width: 9rem;
    }

    .btn--media::after {
        content: "Écouter";
        margin: auto 1rem auto 3.5rem;
        font-size: 1.1rem;
        font-weight: bolder;
    }
}


/* |||| Button with text - Icon on the left and text */

.btn--with-text {
    display: inline-flex;
    border-radius: 2em;
    padding-right: 1.25em;
    align-items: center;
    max-width: 14em;

    font-size: 1em;
    font-weight: bold;
}

.btn--with-text::before {
    content: "";

    width: 1.5em;
    height: 2em;
    background-repeat: no-repeat ;
    background-position: center;
    padding-left: 1.25em;
    padding-right: 1em;
}

.btn--below-text {
        margin-top: 2em;
}

/* |||| Send button - Enveloppe icon before text in rounded rectangular shape */

.btn--send::before {
    background-image: url("assets/images/common/pictos/enveloppe.svg");
}

/* |||| listen button - Wave icon before text in rounded rectangular shape */

.btn--listen::before {
    width: 1em;
    background-image: url("assets/images/common/pictos/wave.svg");
}

/* |||| View button - youtube icon before text in rounded rectangular shape */
.btn--view::before {
    background-image: url("assets/images/common/social/youtube-light.svg");
}


/* |||| Up button - Arrow pointing up in a circle */
.btn--up {

    --btn-up-radius: 0.5em;
    --btn-up-size: 2 * var(--btn-up-radius);

    display: inline-block;
    height: calc(var(--btn-up-size));
    width: calc(var(--btn-up-size));
    border-radius: var(--btn-up-radius);

    margin-top: 0;
    margin-left: 1rem;

    position: relative;
}

/* use borders to draw an equilateral trianle shape */
/* 0.866 is approximately sqrt(3)/2 */
.btn--up::before {

    --btn-up-arrow-size: var(--btn-up-radius); /* size of edge of arrow */
    content: "";
    display: block;
    width: 0px; 
    height: 0px; 
    background: transparent;
    border-left: calc(0.5 * var(--btn-up-arrow-size)) solid transparent;
    border-right: calc(0.5 * var(--btn-up-arrow-size)) solid transparent;
    border-bottom: calc(0.866 * var(--btn-up-arrow-size)) solid var(--tertiary-color);  
    
    /* center arrow inside parent container */
    position: absolute;
    /* center arrow horizontally */
    left: calc(var(--btn-up-radius) - 0.5 * var(--btn-up-arrow-size));
    /* first 2 terms center the arrow inside the button, third offset it a bit to the top to make it 'look' centered */
    bottom: calc(var(--btn-up-radius) - 0.433 * var(--btn-up-arrow-size) + 0.1 * var(--btn-up-radius)); 
}

/* no display */

.btn--no-display {
    display: none;
}

/* || Media styles */

.cards__list {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-around;
    align-items: flex-start;

    gap: 1em;
}

.cards__list > * + * {
    margin-top: 0;
}

.card {
    display: grid;
    column-gap: 0.6rem;
    row-gap: 0.5rem;

    flex: 0;
}

/*
.card > * + * {
    margin-top: 0;
}
*/

/* https://webkit.org/blog/13096/css-has-pseudo-class/ */

.card:has(.card__link) {
    border-radius: 1rem;
    padding: 0.75rem;
}

.card:has(.card__link:is(:hover, :active)) {
    background: var(--link-color);
}

.card__img {
    width: 100%;
    height: 100%;
}

.card__title {
    display: block;
    margin-block-start: 0;
    margin-block-end: 0;
    margin-inline-start: 0;
    margin-inline-end: 0;

    font-family: "Montserrat", "Verdana";
    font-size: 0.9rem;
    font-weight: bold;
}

.card__copy {
    display: block;
    margin-block-start: 0;
    margin-block-end: 0;
    margin-inline-start: 0;
    margin-inline-end: 0;

    font-size: 0.9rem;
}

.card__link {
    grid-column: 1 /-1;
    grid-row: 1 / -1;
}


/* Two columns equal-width */
.card--type-1 {

    --card-column-width: 8.2rem;

    grid-template-columns: var(--card-column-width) var(--card-column-width);
    grid-template-rows: minmax(auto,auto) 1fr 2rem;
}

.card__media--type-1 {
    grid-column: 1;
    grid-row: 1 / -1;
}

.card__body--type-1 {
    grid-column: 2;
    grid-row: 2;
}

.card__header--type-1 {
    grid-column: 2;
    grid-row: 1;
}

.card__footer--type-1 {
    grid-column: 2;
    grid-row: 3;
    font-size:0.9rem;
}


@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {

    /* card-type-1: single column */
    /* Single columns */
    .card--type-1 {
        grid-template-columns: 8.3rem;
        grid-template-rows: 8.3rem 1rem 2rem 2rem;
    }

    .card__media--type-1 {
        grid-column: 1;
        grid-row: 1 ;
    }


    .card__header--type-1 {
        grid-column: 1;
        grid-row: 3;
    }

    .card__body--type-1 {
        grid-column: 1;
        grid-row: 2;
    }

    .card__footer--type-1 {
        grid-column: 1;
        grid-row: 4;
    }
}

/* Single column 16/9 (9/16=0.5625) ratio for image in 1st row */
.card--type-2 {
    /* 16/9 ratio for image in 1st row */
    grid-template-columns: 17rem; 
    grid-template-rows: calc(0.5625 * 17rem) auto 1fr 2rem; 
}

.card__media--type-2 {
    grid-column: 1;
    grid-row: 1;
}

.card__header--type-2 {
    grid-column: 1;
    grid-row: 2;
}

.card__body--type-2 {
    grid-column: 1;
    grid-row: 3;
}

.card__footer--type-2 {
    grid-column: 1;
    grid-row: 4;
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    /* card-type-2: 2 columns */

    /* 1st column contain an image with 16:9 ratio */
    /* Height is defined by right column: Title 2rem + gap 0.5rem + copy 0.875rem (x2 lines-> 2rem) + gap 0.5rem + button 2rem = 7rem */
    .card--type-2 {
        grid-template-columns: 12.4rem 12.4rem;
        grid-template-rows:  2rem 2rem 2rem;   
    }

    .card__media--type-2{
        grid-column: 1;
        grid-row: 1 / -1 ;
    }


    .card__header--type-2{
        grid-column: 2;
        grid-row: 1;
    }

    .card__body--type-2 {
        grid-column: 2;
        grid-row: 2;
    }

    .card__footer--type-2 {
        grid-column: 2;
        grid-row: 3;
    }
}

/* media on the left and wider text zone (16:9 ratio) on the right */
.card--type-3 {
    grid-template-columns: 5.9rem 11.5rem;
    grid-template-rows: minmax(2em,auto) 1fr 2em;
}

.card__media--type-3 {
    grid-column: 1;
    grid-row: 1 / -1;
}

.card__body--type-3 {
    grid-column: 2;
    grid-row: 2;
}

.card__header--type-3 {
    grid-column: 2;
    grid-row: 1;
    margin-top: 1em;
}

.card__footer--type-3 {
    grid-column: 2;
    grid-row: 3;
}

/* Card List */
.card__list {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
}

.card__list > * + * {
    margin-top: 0;
}

.card__list-item {
    flex: 0 70vw;

}


/* || Carousel */
/* https://www.w3.org/WAI/tutorials/carousels/full-code/ */
.carousel {

    --carousel-width: 17rem;
    --carousel-height: 8.9rem;

    --carousel-btn-width: 1.5rem;
    --carousel-btn-height: 8.9rem;

    --carousel-padding-horizontal: 0.5rem + var(--carousel-btn-width);
    --carousel-padding-slidenav: 2.25rem;

    display: block;
    overflow: hidden;

    width: var(--carousel-width);
    height: var(--carousel-height);
    
    padding: 0 calc(var(--carousel-padding-horizontal));
    border: none;

    margin-left: auto;
    margin-right: auto;
    margin-top: 2rem;
    margin-bottom: 2rem;

    position:relative;

}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .carousel {
        display: block;
        overflow: auto;

        width: 100%;
        height: auto;
        
        padding: 0;
        border: 0;
        margin-left: 0;
        margin-right: 0;

        position:static;
    }
}

.carousel.carousel--type-1 {
    --carousel-width: 17rem;
    --carousel-height: 8.9rem;
    --carousel-btn-height: 8.9rem;
}

.carousel.carousel--type-2 {
    --carousel-width: 17rem;
    --carousel-height: 15rem;
    --carousel-btn-height: 0.5625 * 17rem;
}

.carousel--with-slidenav {
    padding-bottom: var(--carousel-padding-slidenav);
}

.carousel__list {
    margin: 0;
    padding: 0;
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .carousel__list {
        display: flex;
        flex-wrap: wrap;
        justify-content: space-between;
        gap: 1rem;
    }
}


.carousel__slide {
    display: block;

    width: var(--carousel-width);
    height: var(--carousel-height);

    padding: 0;
    border: none;
    margin: 0 calc(var(--carousel-padding-horizontal));

    overflow: hidden;
    visibility: hidden;

    position: absolute;
    top: 0;
    left:0;

    transition: left .6s ease-out;
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .carousel__slide {
        display: block;

        width: auto;
        height: auto;

        padding: 0;
        border: none;
        margin: 0 0;

        overflow: none;
        visibility: visible;

        position: static;
        top: 0;
        left:0;

        transition: none;
    }
}

.carousel__slide.carousel__slide--current {
    visibility: visible;
    left: 0;
}

.carousel__slide.carousel__slide--next {
    left: 100%;
}

.carousel__slide.carousel__slide--prev {
    left: -100%;
}

.carousel__btn {
    width: var(--carousel-btn-width);
    height: calc(var(--carousel-btn-height));
    border:0;

    position: absolute;
    top: 0;

    
    background: var(--tertiary-color);
    padding: 0;
    transition: padding .4s ease-out;

    background-size: calc(var(--carousel-btn-width)) calc(var(--carousel-btn-height));
    background-repeat: no-repeat;
    background-position: center;
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .carousel__btn {
        display: none;
    }
}

.carousel__btn--prev {
    left: 0;
    background-image: url("assets/images/common/pictos/chevron-left.svg");
}

.carousel__btn--next {
    right: 0;
    border-radius: 0 0 0.25em 0.25em;
    background-image: url("assets/images/common/pictos/chevron-right.svg");

}

.carousel__nav {
    position: absolute;
    bottom: 0em;
    left: 0;
    right: 0;
    text-align: center;
    display: flex;
    justify-content: center;
    align-items: center;
}

.carousel__nav-item {
    display: inline-block;
    margin: 0 0.5em;

}

.carousel__nav-btn {
    --carousel-nav-btn-radius: 1.1em;
    --carousel-nav-btn-size: 2 * var(--carousel-nav-btn-radius);
    display: block;
    height: calc(var(--carousel-nav-btn-size));
    width: calc(var(--carousel-nav-btn-size));
    line-height: calc(var(--carousel-nav-btn-size));

    position: relative;
    border-radius:var(--carousel-nav-btn-radius);
}

/* use borders to draw an equilateral trianle shape */
/* 0.866 is approximately sqrt(3)/2 */
.carousel__nav-btn[data-action="start"]::before {

    --carousel-nav-btn-arrow-size: var(--carousel-nav-btn-radius); /* size of edge of arrow */
    content: "";
    display: inline-block;
    width: 0px; 
    height: 0px; 
    background: transparent;
    border-top: calc(0.5 * var(--carousel-nav-btn-arrow-size)) solid transparent;
    border-bottom: calc(0.5 * var(--carousel-nav-btn-arrow-size)) solid transparent;
    border-left: calc(0.866 * var(--carousel-nav-btn-arrow-size)) solid var(--tertiary-color);  
    /* center arrow inside parent container */
    position: absolute;
    /* center arrow vertically */
    top: calc(var(--carousel-nav-btn-radius) - 0.5 * var(--carousel-nav-btn-arrow-size));
    /* first 2 terms center the arrow inside the button, third offset it a bit to the right to make it 'look' centered */
    left: calc(var(--carousel-nav-btn-radius) - 0.433 * var(--carousel-nav-btn-arrow-size) + 0.1 * var(--carousel-nav-btn-radius)); 
}

/* use borders to draw an equilateral trianle shape */
/* 0.866 is approximately sqrt(3)/2 */
.carousel__nav-btn[data-action="stop"]::before {

    --carousel-nav-btn-stop-size: var(--carousel-nav-btn-radius); /* size of edge of arrow */

    content: "";
    display: inline-block;
    width: var(--carousel-nav-btn-stop-size); 
    height: var(--carousel-nav-btn-stop-size); 
    background: var(--tertiary-color);
 
    /* center arrow square parent container */
    position: absolute;
    top: calc(var(--carousel-nav-btn-radius) - 0.5 * var(--carousel-nav-btn-stop-size));
    /* first 2 terms center the arrow inside the button, third offset it a bit to the right to make it 'look' centered */
    left: calc(var(--carousel-nav-btn-radius) - 0.5 * var(--carousel-nav-btn-stop-size)); 
}

.carousel__nav-btn--current{
    background: var(--link-color);
}

/* || Header */
.header {
	/* make sure it is always on top */
	position: fixed;
    z-index: 1;      
    top: 0;
    left: calc(var(--body-margin-left));

    width: calc(var(--header-width));

    padding-top: var(--header-padding-top);

    display: block flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;

    background-color: inherit;
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .header {
        position: sticky;
        width: 100%;
        top: 0;
        left: 0;
        flex: 0;
    }
}

/* 14400 + 2 * 1.5 * 16 = 1488 */
@media screen and (min-width: 1488px) and (min-aspect-ratio: 1/1) {
    .header {
        margin: 0 auto;
        max-width: 1200px;
        left: auto;
    }
}

.header__logo {
    flex: 0;

    --header-logo-height: var(--header-height);
    height: calc(var(--header-logo-height));
}

.header__menu {
    z-index: 1;
    background-color: var(--tertiary-color);
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .header__menu {
        z-index: auto;
        background-color: transparent;
    }
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .header__menu-btn {
        display: none;
    }
}

.header__social {
	display: none;
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .header__social {
        display: flex;
        flex-direction: row;
        
    }
}

/* || Footer */
.footer {
    flex: 0;
    padding-top: 1.5em;
    padding-bottom: 4em;
}

.footer__legal {
    color: #ABA693;
    font-size: 0.75em;
    position: relative;
    text-align: right;
    margin-top: 2em;
    margin-bottom: 0em;

}

.footer__social {
    display: flex;
    flex-direction: row;
    justify-content: center;
    gap: 0.5em;

    padding: 1em 0;

    position: fixed;
    bottom: 0;
    left:0;
    right:0;

    background: var(--tertiary-color);
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .footer__social {
        display: none;
    }
}

@media screen and (min-width: 1024px) and (min-aspect-ratio: 1/1) {
}

@media screen and (min-width: 2048px) and (min-aspect-ratio: 1/1) {
}

/* || Navigation Menu */
.menu {
	/* resets */
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
	display: block;

}

.menu__list {
    /* Make the menu as wide as the header */
    --menu-width: var(--header-width);
    
    --menu-padding-top: 1rem;
    --menu-padding-bottom: var(--menu-padding-top);

    /* Put the menu list just below the header */
    position: absolute;         /* Header has position: fixed so absolute positioning is relative to header top-left corner */
    top: calc(var(--header-box-height));
    left: 0;

    margin: 0;
    padding: var(--menu-padding-top) 0;
    width: calc(var(--menu-width));

    display: flex;
    flex-direction: column;
    gap: 0;
    justify-content: flex-start;
    align-items: flex-start;

    list-style-type: none;
    background-color: var(--tertiary-color);
}

.menu__list--hidden {
    display: none;
}

.menu__item {
	flex: 1;
    line-height: 1.6em;
    width: 100%;
}

.menu__link {
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .menu__list {

        --menu-padding-top: 2rem;
        --menu-padding-bottom: var(--menu-padding-top);

        position: static;

        margin: 0;
        padding: var(--menu-padding-top) 0;
        width: auto;

        display: flex;
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
        gap: 1.5rem;
    }
}

@media screen and (min-width: 1024px) and (min-aspect-ratio: 1/1) {
    .menu__list {

        --menu-padding-top: 2rem;
        --menu-padding-bottom: var(--menu-padding-top);

        position: static;

        margin: 0;
        padding: var(--menu-padding-top) 0;
        width: auto;

        display: flex;
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
        gap: 1.5rem;
    }
}

@media screen and (min-width: 2048px) and (min-aspect-ratio: 1/1) {
}

.social__list {

    display: flex;
    flex-direction: row;
    justify-content: center;
    gap: 1.5em;

    padding: 1em 0;

    position: fixed;
    bottom: 0;
    left:0;
    right:0;

    background: var(--tertiary-color);
}

/* Social Networks Links */
@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {

    .social__list {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
        gap: 1.5rem;

        position: static;
    }
}

/* || Page */

.page {
    max-width: 800px;
    margin-top: calc(var(--header-box-height));
    padding-top: 1rem;  /* header is always visible  + 1rem padding */
    margin-left: auto;
    margin-right: auto;
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .page {
        max-width: none;
        margin-top: 0;
    }
}

/* ||| Home page */
@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .page--home {
        display: grid;
        grid-template-columns: auto 37.5% auto 37.5% auto;
        column-gap: 0;
        row-gap: 1rem;
    }

    .wrapper--home-img {
        grid-column: 4;
        grid-row: 1 / span 2;

        display: flex;
        flex-direction: column;
        justify-content: flex-start;
    }

    .wrapper--home-presentation {
            grid-column: 2;
            grid-row: 1;

            display: flex;
            flex-direction: column;
            justify-content: center;
    }

    .wrapper--home-booking {
            grid-column: 2;
            grid-row: 2;

            display: flex;
            flex-direction: column;
            justify-content: center;
    }
}

@media screen and (min-width: 1024px) and (min-aspect-ratio: 1/1) {
    .page--home {
        grid-template-columns: auto 50% auto 42% auto;
    }
}

@media screen and (min-width: 2048px) and (min-aspect-ratio: 1/1) {
    .page--home {
        grid-template-columns: auto 42% auto 33% auto;
    }
}

/* ||| Media page */
@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {

    .page--media {
        display: grid;
        grid-template-columns: auto 37.5% auto 50% auto;
        column-gap: 3rem;

    }

    .wrapper--section-media-albums {
        grid-column: 2;
    }

    .wrapper--section-media-videos {
        grid-column: 4;
    }

    .section--media-albums {
        display: grid;
        grid-template-columns: 1fr;
        grid-template-rows: 1fr auto;
        row-gap: 2rem;
    }

    .wrapper--media-albums-img {
        grid-row:1;
        display: flex;
        flex-direction: column;
        justify-content: center;
    }

    .wrapper--media-albums {
        grid-row: 2;
    }

    .section--media-videos {
        display: grid;
        grid-template-columns: 1fr;
        grid-template-rows: auto 1fr;
        row-gap: 2rem;
    }

    .section--media-videos > * + * {
        margin-top: 0;
    }

    .wrapper--media-videos-img {
        grid-row:2;
        display: flex;
        flex-direction: column;
        justify-content: center;
    }

    .wrapper--media-videos {
        grid-row: 1;
    }
}

@media screen and (min-width: 1024px) and (min-aspect-ratio: 1/1) {
    .page--media {
        grid-template-columns: auto 50% auto 42% auto;
    }
}

@media screen and (min-width: 2048px) and (min-aspect-ratio: 1/1) {
    .page--media {
        grid-template-columns: auto 33% auto 33% auto;
    }
}

/* ||| Setlist page */
@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .section--setlist {
        display: grid;
        grid-template-columns: auto 37.5% auto 37.5% auto;
        row-gap: 2rem;
        margin-top: 0;
    }

    .wrapper--img-setlist{
        grid-column: 2;
        grid-row: 1;
    }

    .wrapper--setlist-text{
        grid-column: 2;
        grid-row: 2;
    }

    .wrapper--setlist-figure{
        grid-column: 4;
        grid-row: 1 / span 2;
    }
}
/* ||| Friends page */
@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .section--friends {
        display: grid;
        grid-template-columns: 1fr 37.5% 1fr 50% 1fr;
        column-gap: 1rem;
    }

    .wrapper--friends-text{
        grid-column: 4;
        grid-row: 1;
    }

    .wrapper--friends-regions{
        grid-column: 4;
        grid-row: 2;
    }

    .wrapper--friends-map {
        position: fixed;
        left: 2.5rem;    /* page-left-margin (1rem) + 1st column (1rem) + column-gap (0.5rem) */
        width: 40vw;
    }

    .page_section--no-p-on-mobile > p {
        display: block;
    }

}

/* || Contact page */
@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .page--contact {
        display: grid;
        grid-template-columns: 1fr 60% 1fr 35% 1fr;
        column-gap: 0;
    }

    .wrapper--contact-section{
        grid-row: 1;
        grid-column: 2;
    }

    .wrapper--contact-form{
        grid-row: 1;
        grid-column: 4;
    }

}

.page__section {

}

.page__heading {
	margin-top: 2em;
	margin-bottom: 2em;

	display: grid;
    grid-template-columns: 1fr 2em; /* make sure 2nd column is wide enough for any items to fit */
    grid-row-gap: 0.46em;
    align-items: center;

}

/* Heading block */

.heading__title {
    grid-row: 1;
    grid-column: 1;
}

.heading__button {
    grid-row: 1;
    grid-column: 2;
    justify-self: end;
}

.heading__subtitle {
    grid-row: 2;
    grid-column: 1 / -1;
}

/* Wrappers */
.wrapper {

}

.wrapper--home-img {

}

.wrapper--home-presentation {

}


/* || Images */
.img {
    max-width: 100%;
    height: auto;
}

.img--rounded {
    border-radius: 50%;
}

.img--dark-background {
    background: var(--primary-color);
}

/* || Blobs */

.blob {
    width: 17rem;  /*272px dans 327px*/
    margin: auto;

    background-origin: content-box;
    background-repeat: no-repeat;
    
    display: flex;
    justify-content: space-around;
}

.blob--home {
    background-size: 13rem auto;
    background-image: url("assets/images/home/blob_home.svg");
    background-position: 0% 100%;
}

.blob--audio {
    background-size: 11rem auto;
    background-image: url("assets/images/medias/blob_media_1.svg");
    background-position: 100% 100%;
    margin-bottom: 2rem;
}

.blob--video {
    background-size: 11rem auto;
    background-image: url("assets/images/medias/blob_media_2.svg");
    background-position: 100% 100%;
    margin-bottom: 2rem;
}

.blob--setlist {
    background-size: 11rem auto;
    background-image: url("assets/images/setlist/blob_setlist.svg");
    background-position: 0% 100%;
    margin-bottom: 2rem;
}

.blob--contact {
    background-size: 10rem auto;
    background-image: url("assets/images/contact/blob_contact.svg");
    background-position: 0% 100%;
    margin-bottom: 2rem;
}

.blob--booking {
    background-size: 10rem auto;
    background-image: url("assets/images/booking/blob_booking.svg");
    background-position: 0% 100%;
    margin-bottom: 2rem;
}

.blob__img {
    width: 10rem; /*160 px dans 272px*/
    margin-top: 0rem;
    margin-bottom: 3rem;
    margin-bottom: 2rem;
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .blob {
        width:100%;
        margin: 0;
        justify-content: unset;
    }

    .blob--home {
        background-size: 90% auto;
        justify-content: flex-end;
        background-position: 100% 100%;
    }

    .blob--audio {
        width: 60%;
        margin-left: auto;
        margin-right: auto;
        background-size: 75.6% auto;

    }

    .blob--video {
        width: 60%;
        margin-left: auto;
        margin-right: auto;
        background-size: 75.6% auto;
    }

    .blob--setlist {
        width: 60%;
        margin-left: auto;
        margin-right: auto;
        background-size: 59% auto;
        background-position: 0% 100%;
    }

    .blob--contact {
        width: 40%;
        margin-left: auto;
        margin-right: auto;
        background-size: 59% auto;
        background-position: 0% 100%;
    }

    .blob--contact-large {
        width: 100%;
        background-size: 59% auto;
        justify-content: flex-start;
        background-position: 100% 100%;
    }

    .blob--booking {
        width: 40%;
        margin-left: auto;
        margin-right: auto;
        background-size: 59% auto;
        background-position: 0% 100%;
    }

    .blob--booking-large {
        width: 100%;
        background-size: 59% auto;
        justify-content: flex-start;
        background-position: 100% 100%;
    }

    .blob__img {
        width: 75%;
    }
}

/* || Figure */
.figure {
    width: 80%;
    margin: 2rem auto;
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .figure {
    width: 100%;
    margin: 0 auto;
    }
}

/* || Form */

.form {
    width: 100%;
    margin: 1rem auto;

    display: grid;
    grid-template-columns: 1.5em 1fr auto 1fr 1.5em;
    column-gap: 1em;
    row-gap: 0.5em;
}

.form__label{
  font-family: inherit;
  font-size: 100%;
  box-sizing: border-box;
  margin-top: 1rem;

  grid-column: 1 / -1;
}

.form__label--checkbox {
    display: flex;
    grid-column: 2 / -1;
}

.form__input{
  font-family: inherit;
  font-size: 100%;
  box-sizing: border-box;

  width: 100%;  
  height: 2em;
  padding:0;
  border: none;
  

  grid-column: 1 / -1;
}

.form__input[type="checkbox"] {
  width: 1.5em;
  grid-column: 1;
  margin: 0;
  margin-top: 1em;

}

.form__textarea{
  font-family: inherit;
  font-size: 100%;
  box-sizing: border-box;
  
  width: 100%;
  height: 10em;
  border: none;
  padding: 0;

  overflow: auto;
  grid-column: 1 / -1;
}

.form__btn {
    grid-column: 3;
}


/* SVG styling */

.section__anchor--region {
    height: 1rem;
    position: relative;
    top: -2.5rem;
    z-index: -1;
}

@media screen and (min-width: 768px) and (min-aspect-ratio: 1/1) {
    .section__anchor--region {
        position: relative;
        top: -4.5rem;
    }
}

@media screen and (min-width: 1024px) and (min-aspect-ratio: 1/1) {
    .section__anchor--region {
        position: relative;
        top: -6rem;
    }
}

svg|g.country {
    stroke : white; 
    stroke-width: 3; 
    fill-rule: evenodd;
    fill: url(#linearGradient-1);
}

svg|path:hover { 
    fill: url(#linearGradient-2);

/*
    --primary-color: #111c28;
    --secondary-color: #F4AD2A;
    --tertiary-color: #F5F1E3;
*/
}

