*,
:after,
:before {
    box-sizing: border-box
}

html {
    overflow-x: hidden
}

:root {
    font-size: 20px
}

body {
    margin: 0;
    --color-text: #000;
    --color-bg: #f9dddd;
    --color-link: #C50F90;
    --color-link-hover: #990033;
    color: var(--color-text);
    background-color: var(--color-bg);
font-family: "Proza Libre", sans-serif;
font-weight: 400;
font-style: italic;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    --cursor-stroke: #000;
    --cursor-fill: none;
    --cursor-stroke-width: 1px;
    line-height: 1;
    overflow: hidden;
    overflow-y: scroll
}

.oh {
    overflow: hidden
}

.js .loading:after,
.js .loading:before {
    content: "";
    position: fixed;
    z-index: 3000
}

.js .loading:before {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: var(--color-bg)
}

.js .loading:after {
    top: 50%;
    left: 50%;
    width: 60px;
    height: 60px;
    margin: -30px 0 0 -30px;
    border-radius: 50%;
    opacity: .4;
    background: var(--color-link);
    animation: loaderAnim .7s linear infinite alternate forwards
}

@keyframes loaderAnim {
    to {
        opacity: 1;
        transform: scale3d(.5, .5, 1)
    }
}

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

a,
a:hover {
    outline: none
}

a:hover {
    color: var(--color-link-hover)
}

a:focus {
    outline: none;
    background: #d3d3d3
}

a:focus-visible,
a:focus:not(:focus-visible) {
    background: transparent
}

a:focus-visible {
    outline: 2px solid red
}

.unbutton {
    background: none;
    border: 0;
    padding: 0;
    margin: 0;
    font: inherit
}

.unbutton:focus {
    outline: none
}

main {
    padding: 3rem 2rem;
    max-width: 2000px;
    margin-left: auto;
    margin-right: auto;
    overflow-x: hidden
}

.cursor {
    display: none
}

.frame {
    position: relative
}

.frame--footer {
    display: flex;
    flex-direction: column;
    justify-content: center;
    margin-top: 40vh
}

.frame__title-wrap {
    width: 80%;
    max-width: 600px
}
.frame__title {
    font-size: 2.4rem;
    margin: 0;
  font-family: "Cormorant", serif;
  font-optical-sizing: auto;
  font-weight: 300;
  font-style: normal;
}
.frame__tagline {
    margin: 2rem 0 2.5rem;
    line-height: 1.2;
    max-width: 45ch
}

.frame__links a:not(:last-child) {
    margin-right: 1rem
}

.heading {
  font-family: "Cormorant", serif;
  font-optical-sizing: auto;
  font-weight: 300;
  font-style: normal;
    font-weight: 300;
    font-size: 6vw;
    font-size: clamp(2rem, 6vw, 5rem);
    line-height: 1.2;
}

.heading .splitting .char,
.heading .splitting .word {
    display: flex
}

.char-wrap {
    position: relative;
    overflow: hidden
}

.char,
.char-wrap {
    display: inline-block
}

.char {
    will-change: transform
}

.heading>span {
    display: flex
}

.heading>span:first-child {
    font-size: 14vw;
    font-size:clamp(2rem, 9vw, 7rem)
}

.heading>span:nth-child(2) {
    margin-top: -2vw;
    text-transform: lowercase
}

.item {
    margin:2vh 0 2vh;
    border-bottom: 5px dotted #fff;
    padding-bottom: 10px;
}

.content__imgwrap,
.item__imgwrap {
    overflow: hidden;
    display: flex;
    align-items: center;
    width: 100%;
    min-height: 200px;
    will-change: transform
}

.content__img,
.item__img {
    width: 100%;
    height: 100%;
    min-height: 200px;
    background-size: cover;
    background-position: 50% 50%;
    will-change: transform;
    border:1vw solid #fff;
}
.item__meta {
    line-height:1.5;
    font-size: 1.07rem;
    text-transform: uppercase;
    font-weight: 500;
    color: var(--color-link);
}
.item__meta-row {
    display: block;
    position: relative;
    overflow: hidden
}

.item__meta-row span {
    display: block;
    will-change: transform
}

.item__enter {
    display: none;
    will-change: transform
}

.item__enter-circle {
    fill: none;
    stroke: #000;
    stroke-width: 1px;
    will-change: transform, opacity
}

.item__excerpt {
    line-height: 1.2;
    will-change: transform
}

.item__excerpt-link {
    display: inline-block;
    position: relative;
    cursor: pointer;
    color: var(--color-text);
    line-height: 1;
    overflow: hidden
}
.item__excerpt-link span {
    display: inline-block;
    padding-bottom: 10px;
    position: relative;
    color: var(--color-link);
    font-family: "Parisienne", cursive;
    font-size: 1.3rem;
    font-style: normal;
}
.item__excerpt-link span:after {
    content: "";
    width: 100%;
    height: 2px;
    top: calc(100% - 10px);
    position: absolute;
    left: 0;
    background: var(--color-text);
    transition: transform .2s;
    transform-origin: 100% 0
}

.item__excerpt-link span:hover:after {
    transform: scaleX(0)
}

.content {
    position: fixed;
    top: 0;
    right: 0;
    width: 100%;
    height: 100vh;
    z-index: 2000;
    pointer-events: none
}

.content .heading {
    margin-bottom: 5rem;
    font-size: 10vw;
    font-size: clamp(2rem, 10vw, 6rem)
}

.content .heading>span:first-child {
    font-size: 14vw;
    font-size:clamp(2rem, 9vw, 7rem)
}

.content__article {
    height: 0;
    overflow: hidden;
    opacity: 0;
    /* fermeture : fade opacity d'abord (0.45s), puis height→0 après le fade */
    transition: opacity 0.45s ease, height 0s 0.5s
}

.content__article--open {
    pointer-events: auto;
    padding: 0 0 20vh;
    height: 100%;
    overflow-y: scroll;
    background: var(--color-bg);
    opacity: 1;
    /* ouverture : immédiate, GSAP gère ses propres animations */
    transition: none
}

.content__article .heading {
    text-align: center
}

.content__text {
    padding: 0 1rem;
    line-height: 1.2;
    margin: 0 auto;
    max-width: 65ch;
    will-change: transform
}

.content__text p {
    margin: 1.5rem 0
}

.content__text > p:first-child {
    font-family: "Cormorant", serif;
    font-weight: 300;
    font-style: normal;
    font-size: clamp(1.15rem, 2.5vw, 1.55rem);
    line-height: 1.5
}

.content__text img {
    display: block;
    width: 100%;
    max-width: 100%;
    margin: 1.5rem auto;
}

.content__back {
    position: absolute;
    top: 2rem;
    left: 2rem;
    opacity: 0;
    cursor: pointer
}

.content__article--open~.content__back {
    pointer-events: auto
}

@media screen and (min-width:53em) {
    .item {
        position: relative;
        display: grid;
        grid-template-areas: "image image image enter""meta meta meta meta""... ... excerpt ...";
        grid-template-rows: auto auto auto
    }

    .item,
    .item--invert {
        grid-template-columns: 1fr auto 360px 1fr
    }

    .item--invert {
        grid-template-areas: "enter image image image""meta meta meta meta""... ... excerpt ..."
    }

    .item__imgwrap {
        grid-area: image;
        aspect-ratio: 1 / 1;
        min-height: 0;
        max-width: 550px;
        justify-self: start;
        cursor: pointer
    }

    .item--invert .item__imgwrap {
        justify-self: end
    }

    .item__img {
        width: 100%;
        height: 100%;
        min-height: 0
    }

    /* excerpt = 65 % de la largeur de l'image (550 × 0.65 ≈ 357px) */
    .item__excerpt {
        max-width: 357px
    }

    /* Image contenu principale : flottante à gauche, texte enroulé à droite */
    .content__text > img {
        float: left;
        width: 42%;
        max-width: 42%;
        height: auto;
        object-fit: cover;
        margin: 0.5rem 2rem 1.5rem 0;
    }

    /* Image de bloc : flottante à gauche après le h3 — tablet : 200px max */
    .bloc .bloc__img {
        display: block;
        float: left;
        width: auto;
        max-width: 200px;
        height: auto;
        object-fit: contain;
        margin: 0.3rem 1.8rem 1rem 0;
    }

    .content__text::after {
        content: '';
        display: table;
        clear: both;
    }

    .item__enter {
        align-self: center;
        justify-self: center;
        display: flex;
        grid-area: enter;
        position: relative;
        z-index: 1000;
        max-width: 400px;
        max-height: 400px;
        align-items: center;
        justify-content: center
    }

    .item__enter-circle {
        pointer-events: none;
        cursor: pointer;
        flex: none
    }

    .item__meta {
        grid-area: meta
    }

    .item--invert .item__meta {
        justify-self: end;
        text-align: right
    }

    .item__excerpt {
        grid-area: excerpt
    }

    .item__excerpt p {
        margin: 0 0 1.5rem
    }

    .heading>span {
        justify-content: center
    }

    .heading--item {
        margin: 0;
        grid-area: 1/1/2/5;
        justify-self: center;
        align-self: center;
        text-align: center
    }
}

@media (any-pointer:fine) {
    .cursor {
        position: fixed;
        top: 0;
        left: 0;
        display: block;
        pointer-events: none;
        z-index: 5000
    }

    .cursor__inner {
        fill: var(--cursor-fill);
        stroke: var(--cursor-stroke);
        stroke-width: var(--cursor-stroke-width);
        opacity: .7
    }

    .no-js .cursor {
        display: none
    }
}

.splitting .char,
.splitting .word {
    display: inline-block
}
.splitting .char {
    position: relative;
    text-shadow: 1px 1px 1px #FFF;
}
.splitting .char:after,
.splitting .char:before {
    content: attr(data-char);
    position: absolute;
    top: 0;
    left: 0;
    visibility: hidden;
    transition: inherit;
    user-select: none
}
.splitting {
    --word-center: calc(var(--word-total)/2 - 0.5);
    --char-center: calc(var(--char-total)/2 - 0.5);
    --line-center: calc(var(--line-total)/2 - 0.5)
}
.splitting .word {
    --word-percent: calc(var(--word-index)/var(--word-total));
    --line-percent: calc(var(--line-index)/var(--line-total))
}
.splitting .char {
    --char-percent: calc(var(--char-index)/var(--char-total));
    --char-offset: calc(var(--char-index) - var(--char-center));
    --distance: calc(var(--char-offset)*var(--char-offset)/var(--char-center));
    --distance-sine: calc(var(--char-offset)/var(--char-center));
    --distance-percent: calc(var(--distance)/var(--char-center))
}
.splitting.cells img {
    width: 100%;
    display: block
}
.whitespace {
    display: inline-block;
    width: 0.5rem;
}

@supports (display:grid) {
    .splitting.cells {
        position: relative;
        overflow: hidden;
        background-size: cover;
        visibility: hidden
    }

    .splitting .cell-grid {
        background: inherit;
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        display: grid;
        grid-template: repeat(var(--row-total), 1fr)/repeat(var(--col-total), 1fr)
    }

    .splitting .cell {
        background: inherit;
        position: relative;
        overflow: hidden
    }

    .splitting .cell-inner {
        background: inherit;
        position: absolute;
        visibility: visible;
        width: calc(100%*var(--col-total));
        height: calc(100%*var(--row-total));
        left: calc(-100%*var(--col-index));
        top: calc(-100%*var(--row-index))
    }

    .splitting .cell {
        --center-x: calc(var(--col-total)/2 - 0.5);
        --center-y: calc(var(--row-total)/2 - 0.5);
        --offset-x: calc(var(--col-index) - var(--center-x));
        --offset-y: calc(var(--row-index) - var(--center-y));
        --distance-x: calc(var(--offset-x)*var(--offset-x)/var(--center-x));
        --distance-y: calc(var(--offset-y)*var(--offset-y)/var(--center-y))
    }
}

/* ── Blocs de contenu avec image à gauche ── */
.bloc {
    margin: 1.8rem 0
}

/* clearfix interne (nettoie bloc__img) sans créer de BFC,
   pour que le texte des blocs s'enroule autour de l'image principale */
.bloc::after {
    content: '';
    display: table;
    clear: both
}

/* .bloc__img : masquée par défaut sur mobile via le breakpoint mobile ci-dessous */

/* Blocs de contenu (h3 + lien CTA) ── */
.content__text h3 {
  font-family: "Cormorant", serif;
  font-optical-sizing: auto;
  font-weight: 300;
  font-style: normal;
    font-size: clamp(1.4rem, 4vw, 2rem);
    font-weight: 300;
    color: var(--color-link);
    margin: 2.5rem 0 0.5rem;
    line-height: 1.1
}

.block-link {
    display: inline-block;
    margin-top: 1rem;
    padding: 7px 18px;
    border: 1px solid var(--color-link);
    color: var(--color-link);
    font-size: 0.7rem;
    font-weight: 500;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    transition: background 0.3s, color 0.3s
}

.block-link:hover,
.block-link:focus-visible {
    background: var(--color-link);
    color: #fff;
    outline: none
}

/* ── Carrousel outils multireflex ── */
.tools-carousel {
    border: 1px solid rgba(255, 255, 255, 0.75);
    margin:0.5rem auto 0;
    padding: 1.4rem 1rem 1.2rem;
    max-width: 65ch;
    position: relative;
    clear: both
}

.tools-carousel__title {
    text-align: center;
    font-family: "Cormorant", serif;
    font-weight: 300;
    font-style: normal;
    color: var(--color-link);
    font-size: 0.8rem;
    letter-spacing: 2px;
    text-transform: uppercase;
    margin: 0 0 1.2rem;
    line-height: 1.2
}

.tools-carousel__viewport {
    overflow: hidden
}

.tools-carousel__track {
    display: flex;
    transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    will-change: transform
}

.tools-carousel__item {
    flex: 0 0 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 0.8rem;
    text-decoration: none
}

.tools-carousel__item img {
    display: block;
    width: 100%;
    height: auto;
    /* annule le float desktop de .content__text img */
    float: none !important;
    aspect-ratio: unset !important;
    object-fit: unset !important;
    max-width: 260px !important;
    margin: 0 auto !important;
    transition: transform 0.3s ease
}

.tools-carousel__item:hover img {
    transform: scale(1.06)
}

.tools-carousel__nav {
    display: flex;
    justify-content: center;
    gap: 0.6rem;
    margin-top: 1.1rem
}

.tools-carousel__btn {
    background: var(--color-link);
    color: #fff;
    border: 0;
    width: 38px;
    height: 38px;
    font-size: 1.7rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    padding: 0;
    flex-shrink: 0;
    transition: background 0.2s;
    font-family: sans-serif
}

.tools-carousel__btn:hover,
.tools-carousel__btn:focus-visible {
    background: var(--color-link-hover);
    outline: none
}

/* ── Tablet portrait (iPad vertical 768px–847px) ── */
@media screen and (min-width: 600px) and (max-width: 52.99em) {
    .content__imgwrap,
    .item__imgwrap {
        min-height: 420px
    }
    .content__img, .item__img {
        width: 50%;
        background-size: contain;
        background-position: 0 0;
        will-change: transform;
        background-repeat: no-repeat;
        min-height: 420px;
    }
}

/* ── Responsive mobile ── */
@media screen and (max-width:52.99em) {
    :root {
        font-size: 17px
    }

    main {
        padding: 2rem 1.2rem
    }
    .item {
        margin: 0;
        border-bottom: none;
    }
    .heading {
        font-size: clamp(1.8rem, 7vw, 3.5rem);
        margin: 0;
    }

    .heading>span:first-child {
        font-size: clamp(2rem, 10vw, 4rem)
    }

    .frame__title {
        font-size: 1.8rem
    }

    .frame__tagline {
        margin: 1.2rem 0 1.5rem
    }

    .content .heading {
        font-size: clamp(1.6rem, 7vw, 3rem);
        padding-right: 10px
    }

    .content .heading > span {
        justify-content: flex-end
    }
    .content__text {padding: 0 10px}
    .content__back {top: 1rem;left: 1rem}
    .bloc .bloc__img {display: none}
}

/* ── Bouton retour Chan❜beauté ─────────────────────────────────────── */
.cb-home-btn img {
    position: fixed;
    top: 1.2rem;
    right: 1.4rem;
    z-index: 500;
    width: 65px;
    height: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(249, 221, 221, 0.78);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    box-shadow: 0 0 15px rgba(197, 15, 144, 0.3);
    text-decoration: none;
    transition: transform .45s cubic-bezier(.34, 1.56, .64, 1), background .3s ease, color .3s ease, box-shadow .3s ease;
    will-change: transform;
}

.cb-home-btn:hover img {
    background: var(--color-link);
    color: #fff;
    border-color: transparent;
    box-shadow: 0 6px 28px rgba(197, 15, 144, 0.42);
    transform: scale(1.12) rotate(20deg);
}

/* ── Grand écran : image de bloc jusqu'à 300px ── */
@media screen and (min-width: 80em) {
    .bloc .bloc__img {
        max-width: 300px
    }
}