/*******************************/
/*******banner-frontpage********/
/*******************************/

.banner--frontpage{
    background-position: center 80%;
    padding-top: 14vh;
    z-index: 10;
}

h1.frontpage__title{
    margin: 0 auto 4rem auto;
}

.frontpage-banner__subtitle{
    max-width: 50rem;
    position: relative;
    z-index: 10;
}

:root{
    --yellow-diameter: 30vw;
    --border-width: .75rem;
    --yellow-top: -53%;
}

/* Position de la tasse de la photo, recalculée selon le recadrage
   --ratio-image : largeur / hauteur de la photo
   --tasse-x : centre de la tasse, en proportion de la largeur de la photo */
.banniere-accueil{
    --ratio-image: 1.5004;
    --tasse-x: 0.5879;
    --banniere-largeur: calc(100vw - var(--scrollbar-width, 0px));
    --banniere-hauteur: calc(100vh - var(--header-height));
    --image-largeur: max(var(--banniere-largeur), var(--banniere-hauteur) * var(--ratio-image));
    --tasse-centre: calc((var(--banniere-largeur) - var(--image-largeur)) / 2 + var(--tasse-x) * var(--image-largeur));
    --yellow-diameter: calc(0.3 * var(--image-largeur));
    --image-hauteur: calc(var(--image-largeur) / var(--ratio-image));
    --tasse-haut: calc((var(--banniere-hauteur) - var(--image-hauteur)) * 0.8 + 0.802 * var(--image-hauteur));
    --tasse-largeur: calc(0.0938 * var(--image-largeur));
}

.entry-content{
    position: relative;
}

.banniere-accueil::before,
.banniere-accueil::after
{
    content:'';
    display: block;
    position: absolute;
    border-radius: 999rem;
    top: 0;
}

/* La bannière est un bloc dans le contenu : pas de contexte d'empilement,
   pour que le disque jaune passe sous les blocs suivants et l'anneau par-dessus */
.entry-content > .banniere-accueil{
    z-index: auto;
    margin-top: 0;
}

.entry-content > .banniere-accueil + *{
    margin-block-start: 0;
}

/* Disque jaune : seule la partie sous la bannière est visible */
.banniere-accueil::before{
    top: 100%;
    width: var(--yellow-diameter);
    height: var(--yellow-diameter);
    left: calc(var(--tasse-centre) - var(--yellow-diameter) / 2);
    background-color: var(--couleur-6);
    transform: translateY(var(--yellow-top));
    clip-path: inset(53% 0 0 0);
    z-index: 0;
    pointer-events: none;
}

/* Anneau jaune, à cheval sur la bannière et le contenu */
.banniere-accueil::after{
    top: 100%;
    left: calc(var(--tasse-centre) - 1.02 * var(--yellow-diameter) / 2);
    transform: translateY(calc(var(--yellow-top) - var(--border-width) / 2));
    width: calc(1.02 * var(--yellow-diameter));
    height: calc(1.02 * var(--yellow-diameter));
    border: .75rem solid var(--couleur-6);
    z-index: 15;
    pointer-events: none;
}

.entry-content > *{
    position: relative;
    z-index: 5;
}

.banner-frontpage__coffe-trigger.wp-block-button__link{
    padding: var(--button-padding);
    background-color: var(--couleur-1);
    position: absolute;
    bottom: 2rem;
    right: 3rem;
    z-index: 25;
    padding-right: 2rem;
    margin-top: 0rem;
}

.banner-frontpage__coffe-trigger.wp-block-button__link::before{
    display: none;
}

.banner--frontpage .ttt-button-container{
    position: absolute;
    width: fit-content;
    left: 6vw;
    bottom: 4rem;
}

.banner--frontpage .ttt-button__link{
    margin-top: 0;
}

.banner--frontpage .ttt-button__link p:first-letter{
    text-transform: capitalize;
}

/* Éditeur : on neutralise les styles par défaut de Gutenberg pour un aperçu fidèle */
.editor-styles-wrapper .banniere-accueil .frontpage__title{
    font-family: var(--font-titre);
    font-size: var(--font-size-x-large);
    font-weight: 400;
    line-height: 1.5;
    text-transform: uppercase;
    color: var(--couleur-2);
    max-width: 60rem;
    margin: 0 auto 4rem auto;
}

.editor-styles-wrapper .banniere-accueil a{
    text-decoration: none;
}

.editor-styles-wrapper .banniere-accueil .banner-frontpage__coffe-trigger,
.editor-styles-wrapper .banniere-accueil .banner-frontpage__coffe-trigger strong{
    color: var(--couleur-2);
}

.editor-styles-wrapper .banniere-accueil .ttt-button__link p{
    margin: 0;
    line-height: 1.2;
}

/* Café qui remplit le cercle au survol de l'encart café */
.banniere-accueil__cafe{
    position: absolute;
    left: calc(var(--tasse-centre) - var(--yellow-diameter) / 2);
    top: calc(var(--banniere-hauteur) - .53 * var(--yellow-diameter));
    width: var(--yellow-diameter);
    height: var(--yellow-diameter);
    border-radius: 50%;
    overflow: hidden;
    pointer-events: none;
    z-index: 1;
}

/* Ombre intérieure */
.banniere-accueil__cafe::after{
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 50%;
    box-shadow: inset 0 0 calc(var(--yellow-diameter) * .08) rgba(150, 100, 0, .3);
    opacity: 0;
    transition: opacity .6s;
}

.banniere-accueil.cafe-actif .banniere-accueil__cafe::after{
    opacity: 1;
}

.cafe__svg{
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
}

/* Niveau du liquide */
.cafe__liquide{
    transform: translateY(105px);
    transition: transform 1.2s cubic-bezier(.45, 0, .55, 1);
}

.banniere-accueil.cafe-actif .cafe__liquide{
    transform: translateY(17px);
    transition: transform 2s cubic-bezier(.3, .15, .3, 1);
}

/* Vague de surface */
.cafe__vague{
    animation: cafe-vague 5s linear infinite;
    animation-play-state: paused;
}

.banniere-accueil.cafe-actif .cafe__vague{
    animation-play-state: running;
}

@keyframes cafe-vague{
    from { transform: translateX(0); }
    to   { transform: translateX(60px); }
}

@media (prefers-reduced-motion: reduce){
    .cafe__liquide,
    .banniere-accueil.cafe-actif .cafe__liquide{
        transition: none;
    }

    .cafe__vague{
        animation: none;
    }
}

/* Vapeur au-dessus de la tasse */
.banniere-accueil__vapeur{
    position: absolute;
    left: calc(var(--tasse-centre) - var(--tasse-largeur) / 2);
    top: calc(var(--tasse-haut) - 1.3 * var(--tasse-largeur));
    width: var(--tasse-largeur);
    height: calc(1.3 * var(--tasse-largeur));
    display: flex;
    justify-content: center;
    pointer-events: none;
    z-index: 1;
}

.banniere-accueil__vapeur span{
    width: 30%;
    height: 100%;
    margin: 0 -4%;
    background: url('../images/pictos/vapeur-volute.svg') center / 100% 100% no-repeat;
    filter: blur(calc(var(--tasse-largeur) * .035)) drop-shadow(0 0 calc(var(--tasse-largeur) * .03) rgba(90,100,110,.18));
    opacity: 0;
    transform-origin: bottom center;
    animation: banniere-vapeur 6s ease-in-out infinite;
}

.banniere-accueil__vapeur span:nth-child(2){
    --sens: -1;
    animation-delay: -2s;
}

.banniere-accueil__vapeur span:nth-child(3){
    animation-delay: -4s;
}

@keyframes banniere-vapeur{
    0%   { opacity: 0;   transform: translateY(10%) scale(calc(var(--sens, 1) * .7), .5) skewX(0deg); }
    25%  { opacity: .95; }
    60%  { opacity: .7;  transform: translateY(-10%) scale(calc(var(--sens, 1) * 1.2), 1) skewX(-6deg); }
    100% { opacity: 0;   transform: translateY(-30%) scale(calc(var(--sens, 1) * 1.8), 1.2) skewX(8deg); }
}

@media (prefers-reduced-motion: reduce){
    .banniere-accueil__vapeur span{
        animation: none;
        opacity: .5;
    }
}

/* Responsive */

@media (min-width: 992px) and (max-width: 1600px) {
    .banner--frontpage {
        padding-top: 10vh;
    }

    h1.frontpage__title {
        margin: 0 auto 2rem auto;
    }
}

@media (max-width: 991px) {
    .banner--frontpage .ttt-button-container {
        bottom: auto;
        top: 38%;
    }

    .banner-frontpage__coffe-trigger.wp-block-button__link {
        bottom: auto;
        top: 54%;
    }

    .banniere-accueil::before,
    .banniere-accueil::after,
    .banniere-accueil__cafe {
        display: none;
    }
}

@media (max-width: 767px) {
    .banner--frontpage {
        padding-top: 4vh;
    }
}