.pop-screen{
    min-height:calc(100vh - 40px);
    padding:34px 20px 70px;
    background:
        radial-gradient(circle at 18% 18%,rgba(255,70,180,.13),transparent 25%),
        radial-gradient(circle at 82% 28%,rgba(107,82,255,.16),transparent 28%),
        #f7f7fb;
    color:#10102d;
}

.pop-heading{
    text-align:center;
    margin:0 auto 24px;
}

.pop-kicker{
    display:block;
    font-size:11px;
    font-weight:900;
    letter-spacing:.28em;
    color:#765cff;
    margin-bottom:6px;
}

.pop-heading h1{
    margin:0;
    font-size:clamp(34px,5vw,60px);
    line-height:.95;
    letter-spacing:-.065em;
    font-weight:950;
}

.pop-heading h1 i{
    font-size:.35em;
    font-style:normal;
    letter-spacing:.08em;
    opacity:.35;
    vertical-align:middle;
    margin:0 8px;
}

.pop-heading p{
    margin:12px 0 0;
    color:#747487;
    font-size:14px;
}

.pop-stage{
    width:min(100%,540px);
    margin:0 auto;
    perspective:1200px;
}

.pop-card{
    position:relative;
    overflow:hidden;
    background:#fff;
    border-radius:32px;
    box-shadow:
        0 35px 90px rgba(24,19,70,.16),
        0 8px 25px rgba(24,19,70,.08);
    touch-action:pan-y;
    transform-origin:50% 90%;
    transition:
        transform .42s cubic-bezier(.2,.8,.2,1),
        opacity .35s ease;
    user-select:none;
}

.pop-card.is-dragging{
    transition:none;
    cursor:grabbing;
}

.pop-visual{
    position:relative;
    display:block;
    height:390px;
    overflow:hidden;
    background:#11112e;
}

.pop-visual img{
    width:100%;
    height:100%;
    display:block;
    object-fit:cover;
}

.pop-gradient{
    position:absolute;
    inset:0;
    background:
        linear-gradient(
            to bottom,
            transparent 45%,
            rgba(10,9,36,.68) 100%
        );
}

.pop-noimage{
    width:100%;
    height:100%;
    display:flex;
    align-items:center;
    justify-content:center;
    background:
        radial-gradient(circle at 30% 30%,#ff53ad,transparent 28%),
        radial-gradient(circle at 70% 65%,#7257ff,transparent 32%),
        #10102e;
}

.pop-noimage span{
    color:white;
    font-weight:950;
    font-size:56px;
    letter-spacing:-.08em;
}

.pop-tag{
    position:absolute;
    left:22px;
    bottom:20px;
    z-index:2;
    padding:8px 12px;
    border-radius:999px;
    color:#fff;
    background:rgba(13,12,45,.62);
    backdrop-filter:blur(12px);
    font-size:11px;
    font-weight:850;
}

.pop-content{
    padding:25px 27px 24px;
}

.pop-content h2{
    margin:0;
    font-size:27px;
    line-height:1.08;
    letter-spacing:-.045em;
}

.pop-description{
    margin:11px 0 21px;
    font-size:14px;
    line-height:1.55;
    color:#666678;
    display:-webkit-box;
    -webkit-line-clamp:3;
    -webkit-box-orient:vertical;
    overflow:hidden;
}

.pop-author{
    display:flex;
    align-items:center;
    gap:11px;
    border-top:1px solid #eeeef4;
    padding-top:18px;
}

.pop-avatar{
    width:38px;
    height:38px;
    border-radius:50%;
    overflow:hidden;
    flex:0 0 auto;
    display:flex;
    align-items:center;
    justify-content:center;
    text-decoration:none;
    background:#11112e;
    color:white;
    font-size:12px;
    font-weight:900;
}

.pop-avatar img{
    width:100%;
    height:100%;
    object-fit:cover;
}

.pop-author small{
    display:block;
    font-size:8px;
    letter-spacing:.13em;
    font-weight:900;
    color:#aaa9b6;
}

.pop-author strong{
    font-size:12px;
}

.pop-discuss{
    margin-left:auto;
    text-decoration:none;
    text-align:right;
    color:#15152f;
}

.pop-discuss b{
    display:block;
    font-size:17px;
    line-height:1;
}

.pop-discuss span{
    font-size:8px;
    font-weight:900;
    letter-spacing:.09em;
    color:#878696;
}

.pop-actions{
    width:min(100%,620px);
    margin:24px auto 0;
    display:grid;
    grid-template-columns:1fr 36px 1fr;
    align-items:center;
    gap:8px;
}

.vote-button{
    appearance:none;
    border:0;
    min-height:82px;
    border-radius:24px;
    cursor:pointer;
    position:relative;
    overflow:hidden;
    transition:
        transform .18s ease,
        box-shadow .18s ease;
}

.vote-button:hover{
    transform:translateY(-3px);
}

.vote-button span{
    display:block;
    font-size:30px;
    line-height:1;
    font-weight:950;
    letter-spacing:-.06em;
}

.vote-button small{
    display:block;
    margin-top:5px;
    font-size:10px;
    font-weight:800;
    letter-spacing:.03em;
}

.vote-flop{
    background:#15152f;
    color:white;
    box-shadow:0 14px 35px rgba(15,15,42,.18);
}

.vote-flop small{
    color:#9b9bab;
}

.vote-pop{
    color:white;
    background:
        linear-gradient(135deg,#6b55ff,#c44cff 52%,#ff4c9f);
    box-shadow:0 15px 40px rgba(151,71,255,.28);
}

.vote-pop::before{
    content:"";
    position:absolute;
    width:100px;
    height:160px;
    top:-70px;
    right:-25px;
    transform:rotate(25deg);
    background:rgba(255,255,255,.16);
}

.vote-pop small{
    color:rgba(255,255,255,.72);
}

.pop-or{
    text-align:center;
    font-size:9px;
    font-weight:950;
    color:#aaa9b6;
}

.pop-footerline{
    text-align:center;
    margin:18px auto 0;
}

.pop-footerline a{
    color:#777687;
    text-decoration:none;
    font-size:11px;
    font-weight:750;
}

.pop-stamp{
    position:absolute;
    top:32px;
    z-index:20;
    padding:7px 14px 9px;
    border:4px solid;
    border-radius:10px;
    font-size:35px;
    line-height:1;
    font-weight:950;
    letter-spacing:-.05em;
    opacity:0;
    pointer-events:none;
}

.pop-stamp-pop{
    left:25px;
    color:#ff4ca4;
    border-color:#ff4ca4;
    transform:rotate(-10deg);
}

.pop-stamp-flop{
    right:25px;
    color:#fff;
    border-color:#fff;
    transform:rotate(10deg);
}

.preview-pop .pop-stamp-pop,
.preview-flop .pop-stamp-flop{
    opacity:1;
}

.pop-card.is-pop{
    transform:translateX(120vw) rotate(22deg) !important;
    opacity:0;
}

.pop-card.is-flop{
    transform:translateX(-120vw) rotate(-22deg) !important;
    opacity:0;
}

.pop-card.is-pop .pop-stamp-pop,
.pop-card.is-flop .pop-stamp-flop{
    opacity:1;
}

.pop-empty{
    max-width:500px;
    margin:90px auto;
    padding:55px 30px;
    background:white;
    border-radius:30px;
    text-align:center;
    box-shadow:0 30px 80px rgba(20,18,60,.1);
}

.pop-empty > span{
    font-size:11px;
    font-weight:950;
    letter-spacing:.25em;
    color:#765cff;
}

.pop-empty h2{
    font-size:36px;
    margin:10px 0;
    letter-spacing:-.05em;
}

.pop-empty p{
    color:#777687;
}

.pop-empty a{
    display:inline-block;
    margin-top:14px;
    padding:13px 19px;
    border-radius:15px;
    text-decoration:none;
    background:#11112e;
    color:white;
    font-weight:850;
}

@media(max-width:700px){

    .pop-screen{
        padding:20px 13px 105px;
    }

    .pop-heading{
        margin-bottom:17px;
    }

    .pop-heading p{
        display:none;
    }

    .pop-visual{
        height:47vh;
        min-height:310px;
        max-height:440px;
    }

    .pop-card{
        border-radius:27px;
    }

    .pop-content{
        padding:20px 21px;
    }

    .pop-content h2{
        font-size:23px;
    }

    .pop-description{
        -webkit-line-clamp:2;
    }

    .pop-actions{
        margin-top:17px;
        grid-template-columns:1fr 24px 1fr;
    }

    .vote-button{
        min-height:68px;
        border-radius:20px;
    }

    .vote-button span{
        font-size:25px;
    }

    .vote-button small{
        font-size:8px;
    }

    .pop-footerline{
        margin-top:14px;
    }
}
/* ========================================
   BYLBY POP V2
   Verdict + discussion
======================================== */

.pop-live-result{
    margin-top:18px;
    padding-top:17px;
    border-top:1px solid #eeeef4;
}

.pop-result-numbers{
    display:grid;
    grid-template-columns:1fr auto 1fr;
    align-items:end;
    gap:16px;
}

.pop-result-numbers > div:last-child{
    text-align:right;
}

.pop-result-numbers strong{
    display:block;
    font-size:23px;
    line-height:1;
    letter-spacing:-.055em;
    color:#15152f;
}

.pop-result-numbers small{
    display:block;
    margin-top:4px;
    font-size:9px;
    font-weight:950;
    letter-spacing:.13em;
    color:#9695a5;
}

.pop-result-total{
    font-size:10px;
    font-weight:850;
    color:#aaa9b6;
    padding-bottom:2px;
}

.pop-result-bar{
    position:relative;
    height:7px;
    margin-top:11px;
    overflow:hidden;
    border-radius:999px;
    background:#181830;
}

.pop-result-bar span{
    display:block;
    height:100%;
    border-radius:999px;
    background:
        linear-gradient(
            90deg,
            #7556ff,
            #c14cff,
            #ff4b9e
        );
    transition:width .45s ease;
}


/*
   Avant le vote, on sait que des résultats
   existent mais on ne donne pas forcément
   toute la vedette au score.
*/

.pop-live-result:not(.already-voted){
    opacity:.62;
}

.pop-live-result.revealed,
.pop-live-result.already-voted{
    opacity:1;
}


/* CTA DISCUSSION */

.pop-discussion-cta{
    width:min(100%,620px);
    margin:14px auto 0;
    box-sizing:border-box;

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

    gap:20px;

    padding:17px 20px;

    border:1px solid rgba(30,27,70,.09);
    border-radius:21px;

    background:#fff;

    box-shadow:
        0 10px 30px rgba(24,19,70,.07);

    color:#15152f;
    text-decoration:none;

    transition:
        transform .18s ease,
        box-shadow .18s ease;
}

.pop-discussion-cta:hover{
    transform:translateY(-2px);

    box-shadow:
        0 16px 38px rgba(24,19,70,.12);
}

.pop-discussion-cta span{
    display:block;
}

.pop-discussion-cta small{
    display:block;

    margin-bottom:3px;

    color:#a09faf;

    font-size:8px;
    font-weight:950;
    letter-spacing:.15em;
}

.pop-discussion-cta strong{
    display:block;

    font-size:14px;
    font-weight:900;
    letter-spacing:-.02em;
}

.pop-discussion-cta > b{
    flex:0 0 auto;

    width:38px;
    height:38px;

    display:flex;
    align-items:center;
    justify-content:center;

    border-radius:50%;

    background:#15152f;
    color:#fff;

    font-size:19px;
}


/* Nombre de discussions dans la carte */

.pop-mini-discussion{
    margin-left:auto;
    text-align:right;
}

.pop-mini-discussion b{
    display:block;

    font-size:17px;
    line-height:1;

    color:#15152f;
}

.pop-mini-discussion span{
    display:block;

    margin-top:3px;

    font-size:8px;
    font-weight:900;
    letter-spacing:.08em;
    text-transform:uppercase;

    color:#9998a8;
}


/* Le choix vient d'être fait */

.vote-chosen-pop{
    box-shadow:
        0 35px 90px rgba(150,65,255,.23),
        0 8px 25px rgba(24,19,70,.08);
}

.vote-chosen-flop{
    box-shadow:
        0 35px 90px rgba(20,20,45,.22),
        0 8px 25px rgba(24,19,70,.08);
}


@media(max-width:700px){

    .pop-discussion-cta{
        margin-top:12px;
        padding:14px 16px;
        border-radius:18px;
    }

    .pop-discussion-cta strong{
        font-size:12px;
    }

    .pop-result-numbers strong{
        font-size:20px;
    }

}

/* =========================================================
   BYLBY — FICHE PROJET CENTRÉE V3
   ========================================================= */

.y4-detail .container.y4-detailgrid {
    display: block !important;
    width: min(100% - 40px, 1080px) !important;
    max-width: 1080px !important;
    margin-left: auto !important;
    margin-right: auto !important;
}

.y4-detailgrid > main {
    width: 100% !important;
    max-width: 1080px !important;
    margin: 0 auto !important;
}

/* Partage intégré à la fiche */
.bylby-project-actions {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 10px;
    margin: 18px 0 24px;
}

.bylby-project-actions button {
    appearance: none;
    border: 0;
    border-radius: 999px;
    padding: 12px 20px;
    background: #11112f;
    color: #fff;
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}
.bylby-report-link{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:10px 12px;
    color:#96919c;
    font-size:12px;
    font-weight:700;
    text-decoration:none;
    border-radius:10px;
    transition:.15s ease;
}

.bylby-report-link:hover{
    background:#fff0f0;
    color:#c83f3f;
}
.bylby-project-actions button.secondary {
    background: #eeeaf8;
    color: #11112f;
}

/* Discussion = même largeur que la fiche */
.y4-discussion {
    width: 100% !important;
    max-width: none !important;
}
.bylby-comment-report{
    display:inline-block;
    margin:2px 0 10px;
    color:#aaa5ae;
    font-size:11px;
    font-weight:700;
    text-decoration:none;
}

.bylby-comment-report:hover{
    color:#c83f3f;
    text-decoration:underline;
}
/* Mobile */
@media (max-width: 700px) {
    .y4-detail .container.y4-detailgrid {
        width: min(100% - 24px, 1080px) !important;
    }

    .bylby-project-actions {
        justify-content: center;
        margin: 14px 0 20px;
    }

    .bylby-project-actions button {
        flex: 1;
        padding: 12px 10px;
        font-size: 13px;
    }
}

/* =========================================================
   BYLBY — VERDICT FICHE PROJET V4
   ========================================================= */

.bylby-vote-v2 {
    margin: 22px 0 28px;
    padding: 24px 28px;
    border-radius: 22px;
    background: #fff;
    border: 1px solid rgba(20,20,50,.07);
    box-shadow: 0 10px 35px rgba(25,20,70,.06);
}

.bylby-verdict-head {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 20px;
    margin-bottom: 12px;
}

.bylby-verdict-side {
    display: flex;
    align-items: baseline;
    gap: 9px;
}

.bylby-verdict-side strong {
    font-size: 13px;
    font-weight: 950;
    letter-spacing: .1em;
}

.bylby-verdict-side span {
    font-size: 24px;
    line-height: 1;
    font-weight: 950;
    letter-spacing: -.04em;
}

.bylby-verdict-side.flop-side {
    justify-content: flex-start;
}

.bylby-verdict-side.pop-side {
    justify-content: flex-end;
}

.bylby-verdict-center small {
    color: #9998a8;
    font-size: 11px;
    font-weight: 800;
}

.bylby-verdict-bar {
    position: relative;
    height: 7px;
    overflow: hidden;
    border-radius: 999px;
    background: #17172e;
}

.bylby-verdict-fill {
    position: absolute;
    right: 0;
    top: 0;
    height: 100%;
    border-radius: 999px;
    background: linear-gradient(
        90deg,
        #7657ff,
        #bf4dff,
        #ff4c9e
    );
}

.bylby-verdict-fill.no-vote {
    opacity: .2;
}

.bylby-vote-buttons-v2 {
    margin-top: 22px;
}

.bylby-vote-buttons-v2 form {
    flex: 1;
}

.bylby-vote-buttons-v2 button {
    width: 100%;
}

.bylby-vote-buttons-v2 button small {
    display: block;
    margin-top: 2px;
    font-size: 9px;
    font-weight: 750;
    opacity: .7;
}

@media (max-width:700px) {

    .bylby-vote-v2 {
        padding: 19px 16px;
        border-radius: 18px;
    }

    .bylby-verdict-head {
        gap: 8px;
    }

    .bylby-verdict-side span {
        font-size: 20px;
    }

    .bylby-verdict-side strong {
        font-size: 11px;
    }

    .bylby-verdict-center small {
        font-size: 9px;
    }
}

/* =========================================================
   BYLBY — NAVIGATION 3 BOUTONS
   ========================================================= */

.bylby-main-nav-3 {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;

    width: min(360px, calc(100% - 28px)) !important;

    left: 50% !important;
    right: auto !important;
    transform: translateX(-50%) !important;

    margin: 0 !important;
}

.bylby-main-nav-3 > a {
    width: auto !important;
    min-width: 0 !important;
    margin: 0 !important;

    display: flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    text-align: center;
}

.bylby-main-nav-3 > a.plus {
    justify-self: stretch !important;
}

@media (max-width:700px) {

    .bylby-main-nav-3 {
        width: calc(100% - 24px) !important;
        max-width: 390px !important;

        left: 50% !important;
        right: auto !important;
        transform: translateX(-50%) !important;

        grid-template-columns: repeat(3, 1fr) !important;
    }

}

/* BYLBY — IDÉE SUIVANTE */

.pop-next{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:8px;

    margin:12px auto 0;
    padding:8px 14px;

    border:0;
    background:transparent;

    color:#9291a1;
    font-size:11px;
    font-weight:850;

    cursor:pointer;
}

.pop-next span{
    font-size:15px;
    transition:transform .18s ease;
}

.pop-next:hover{
    color:#15152f;
}

.pop-next:hover span{
    transform:translateX(4px);
}

.pop-card.is-next{
    transform:translateY(-40px) scale(.98);
    opacity:0;
    transition:
        transform .35s ease,
        opacity .28s ease;
}
/* =========================================================
   BYLBY — POP FULLSCREEN RESPONSIVE
   La totalité de l'expérience tient dans le viewport
   ========================================================= */

.pop-screen{
    box-sizing:border-box;
    min-height:100dvh;
    height:100dvh;
    overflow:hidden;

    padding:
        clamp(10px, 2vh, 28px)
        20px
        clamp(88px, 10vh, 112px);
}

/* ---------- TITRE ---------- */

.pop-heading{
    margin-bottom:clamp(8px, 1.6vh, 20px);
}

.pop-kicker{
    margin-bottom:clamp(2px, .5vh, 6px);
}

.pop-heading h1{
    font-size:clamp(30px, 5vh, 56px);
}

.pop-heading p{
    margin-top:clamp(4px, .8vh, 10px);
    font-size:clamp(11px, 1.5vh, 14px);
}


/* ---------- ZONE CENTRALE ---------- */

.pop-stage{
    width:min(100%,540px);
}


/* L'image devient la principale variable d'ajustement */

.pop-visual{
    height:clamp(
        180px,
        32vh,
        360px
    );
}


/* ---------- CONTENU CARTE ---------- */

.pop-content{
    padding:
        clamp(13px, 1.8vh, 22px)
        clamp(18px, 2vw, 27px);
}

.pop-content h2{
    font-size:clamp(19px, 2.7vh, 26px);
}

.pop-description{
    margin:
        clamp(5px, .8vh, 10px)
        0
        clamp(8px, 1.3vh, 17px);

    font-size:clamp(11px, 1.45vh, 14px);
    line-height:1.4;

    -webkit-line-clamp:2;
}

.pop-author{
    padding-top:clamp(8px, 1.2vh, 15px);
}

.pop-avatar{
    width:clamp(30px, 4.2vh, 38px);
    height:clamp(30px, 4.2vh, 38px);
}


/* ---------- RÉSULTAT ---------- */

.pop-live-result{
    margin-top:clamp(8px, 1.2vh, 15px);
    padding-top:clamp(8px, 1.2vh, 14px);
}

.pop-result-numbers strong{
    font-size:clamp(18px, 2.5vh, 23px);
}

.pop-result-bar{
    margin-top:clamp(6px, .8vh, 10px);
}


/* ---------- POP / FLOP ---------- */

.pop-actions{
    margin-top:clamp(9px, 1.5vh, 18px);
}

.vote-button{
    min-height:clamp(55px, 8vh, 78px);
}

.vote-button span{
    font-size:clamp(22px, 3.4vh, 29px);
}

.vote-button small{
    margin-top:3px;
}


/* ---------- DISCUSSION ---------- */

.pop-discussion-cta{
    margin-top:clamp(7px, 1.1vh, 12px);

    padding:
        clamp(10px, 1.4vh, 15px)
        18px;
}

.pop-discussion-cta > b{
    width:clamp(31px, 4.5vh, 38px);
    height:clamp(31px, 4.5vh, 38px);
}


/* ---------- SUIVANTE ---------- */

.pop-next{
    margin-top:clamp(2px, .5vh, 8px);
    padding:clamp(4px, .6vh, 7px) 14px;
}


/* =========================================================
   MOBILE
   ========================================================= */

@media(max-width:700px){

    .pop-screen{
        padding:
            clamp(8px, 1.5vh, 16px)
            12px
            clamp(88px, 11vh, 105px);
    }

    .pop-heading{
        margin-bottom:clamp(7px, 1.2vh, 13px);
    }

    .pop-heading h1{
        font-size:clamp(28px, 5vh, 42px);
    }

    .pop-heading p{
        display:none;
    }

    .pop-visual{
        height:clamp(
            150px,
            29vh,
            300px
        );

        min-height:0;
        max-height:none;
    }

    .pop-card{
        border-radius:clamp(20px, 3vh, 27px);
    }

    .pop-content{
        padding:
            clamp(11px, 1.6vh, 17px)
            17px;
    }

    .pop-content h2{
        font-size:clamp(18px, 2.6vh, 22px);
    }

    .pop-description{
        font-size:clamp(10px, 1.4vh, 13px);
        -webkit-line-clamp:2;
    }

    .pop-author{
        gap:8px;
    }

    .pop-actions{
        grid-template-columns:1fr 20px 1fr;
        gap:5px;
    }

    .vote-button{
        min-height:clamp(52px, 7.5vh, 66px);
        border-radius:18px;
    }

    .vote-button span{
        font-size:clamp(21px, 3.2vh, 25px);
    }

    .pop-discussion-cta{
        border-radius:17px;
    }

}


/* =========================================================
   ÉCRANS TRÈS BAS
   ex. téléphone en paysage / petits smartphones
   ========================================================= */

@media(max-height:700px){

    .pop-kicker{
        display:none;
    }

    .pop-heading h1{
        font-size:30px;
    }

    .pop-heading{
        margin-bottom:6px;
    }

    .pop-visual{
        height:clamp(125px, 25vh, 190px);
    }

    .pop-description{
        -webkit-line-clamp:1;
        margin:4px 0 7px;
    }

    .pop-content{
        padding:10px 16px;
    }

    .pop-author{
        padding-top:7px;
    }

    .pop-live-result{
        margin-top:6px;
        padding-top:6px;
    }

    .pop-actions{
        margin-top:7px;
    }

    .vote-button{
        min-height:50px;
    }

    .pop-discussion-cta{
        margin-top:6px;
        padding:8px 14px;
    }

    .pop-next{
        margin-top:0;
        padding:3px 12px;
    }

}
/* =========================================================
/* =========================================================
   BYLBY — FEED SWIPE VERTICAL
   ========================================================= */

.pop-feed-item{
    position:relative;
    transform:translate3d(0,0,0);
    opacity:1;
}


/* Pendant le geste */

.pop-feed-item.is-dragging{
    transition:none !important;
    will-change:transform,opacity;
}


/* Geste annulé */

.pop-feed-item.is-returning{
    transition:
        transform .30s cubic-bezier(.22,.8,.25,1),
        opacity .25s ease !important;
}


/* Idée suivante */

.pop-feed-item.is-next{
    transform:translate3d(0,-110vh,0) scale(.96) !important;
    opacity:0 !important;

    transition:
        transform .38s cubic-bezier(.55,.05,.75,.2),
        opacity .26s ease !important;
}


/*
 * Important sur mobile :
 * le navigateur conserve le scroll horizontal,
 * mais le geste vertical appartient au feed.
 */

@media (max-width:700px){

    .pop-feed-item{
        touch-action:pan-x;
        overscroll-behavior:contain;
    }

}
/* =========================================================
   VOIR PLUS — DESCRIPTION POP / FLOP
   ========================================================= */

.pop-description-wrap{
    position:relative;
}

.pop-description{
    display:-webkit-box;
    -webkit-box-orient:vertical;
    overflow:hidden;
}

.pop-description.is-expanded{
    display:block;
    -webkit-line-clamp:unset !important;
    overflow:visible;
}

.pop-see-more{
    appearance:none;
    border:0;
    background:none;
    padding:0;
    margin:-5px 0 10px;
    font:inherit;
    font-size:12px;
    font-weight:800;
    color:#6b4eff;
    cursor:pointer;
}

.pop-see-more:hover{
    text-decoration:underline;
}
/* =========================================================
   COEUR SUR PHOTO — MES BYLBY
   ========================================================= */

.pop-stage{
    position:relative;
}

.pop-photo-heart{
    position:absolute;
    z-index:20;
    top:24px;
    right:24px;

    width:48px;
    height:48px;
    border-radius:50%;

    display:flex;
    align-items:center;
    justify-content:center;

    border:1px solid rgba(23,23,44,.12);
    background:rgba(255,255,255,.92);
    box-shadow:0 5px 18px rgba(0,0,0,.14);

    color:transparent;
    -webkit-text-stroke:2px #17172c;

    font-size:27px;
    line-height:1;
    cursor:pointer;

    transition:
        transform .15s ease,
        background .15s ease,
        color .15s ease;
}

.pop-photo-heart:hover{
    transform:scale(1.08);
}

.pop-photo-heart.is-saved{
    color:#ef315f;
    -webkit-text-stroke:0;
}

@media(max-width:850px){
    .pop-photo-heart{
        top:18px;
        right:18px;
        width:44px;
        height:44px;
        font-size:25px;
    }
}
cat >> assets/bylby-pop.css <<'EOF'

/* =========================================================
   BYLBY — MOBILE VIEWPORT NORMALIZATION
   Safari / Chrome / navigateurs intégrés
   ========================================================= */

@media (max-width:700px){

    html,
    body{
        min-height:100%;
    }

    .pop-screen{
        height:auto !important;
        min-height:100svh !important;
        overflow:visible !important;

        padding-top:12px !important;
        padding-left:12px !important;
        padding-right:12px !important;

        /* réserve la place de la navigation BYLBY */
        padding-bottom:110px !important;
    }

    .pop-heading{
        margin-bottom:10px !important;
    }

    .pop-heading h1{
        font-size:clamp(32px, 10vw, 42px) !important;
    }

    /*
       IMPORTANT :
       dimension basée principalement sur la largeur du téléphone,
       et non plus sur la hauteur variable du navigateur.
    */
    .pop-visual{
        height:clamp(230px, 72vw, 330px) !important;
        min-height:0 !important;
        max-height:330px !important;
    }

    .pop-content{
        padding:14px 17px !important;
    }

    .pop-content h2{
        font-size:clamp(20px, 5.6vw, 24px) !important;
    }

    .pop-description{
        font-size:13px !important;
        line-height:1.4 !important;
        margin:7px 0 10px !important;
        -webkit-line-clamp:2 !important;
    }

    .pop-avatar{
        width:36px !important;
        height:36px !important;
    }

    .pop-author{
        padding-top:9px !important;
    }

    .pop-live-result{
        margin-top:9px !important;
        padding-top:9px !important;
    }

    .pop-result-numbers strong{
        font-size:22px !important;
    }

    .pop-actions{
        margin-top:10px !important;
        grid-template-columns:1fr 20px 1fr !important;
        gap:6px !important;
    }

    .vote-button{
        min-height:64px !important;
    }

    .vote-button span{
        font-size:25px !important;
    }
}

/*
   On neutralise l'ancienne compression basée uniquement
   sur la hauteur du viewport navigateur.
*/
@media (max-width:700px) and (max-height:700px){

    .pop-kicker{
        display:block !important;
    }

    .pop-visual{
        height:clamp(210px, 68vw, 290px) !important;
    }

    .pop-description{
        -webkit-line-clamp:2 !important;
    }

    .vote-button{
        min-height:58px !important;
    }
}

EOF
/* =========================================================
   BYLBY — ANTI-CHEVAUCHEMENT MOBILE
   Chrome / Google / petits viewports visibles
   ========================================================= */

@media (max-width:700px) {

    .pop-visual{
        height:clamp(
            210px,
            68vw,
            min(330px, 38dvh)
        ) !important;
    }

    .pop-actions{
        margin-bottom:18px !important;
    }

}

/* Écrans dont le navigateur mange beaucoup de hauteur */
@media (max-width:700px) and (max-height:780px) {

    .pop-visual{
        height:min(64vw, 30dvh) !important;
        min-height:200px !important;
    }

    .pop-content{
        padding-top:11px !important;
        padding-bottom:11px !important;
    }

    .pop-content h2{
        font-size:20px !important;
        line-height:1.08 !important;
    }

    .pop-description{
        margin:5px 0 7px !important;
    }

    .pop-author{
        padding-top:7px !important;
    }

    .pop-live-result{
        margin-top:7px !important;
        padding-top:7px !important;
    }

    .pop-actions{
        margin-top:7px !important;
        margin-bottom:18px !important;
    }

    .vote-button{
        min-height:56px !important;
    }
}
/* =========================================================
   BYLBY — DESKTOP POP
   Mobile inchangé
   ========================================================= */

@media (min-width:701px){

    /* Le contenu principal prend mieux possession de l'écran */
    .pop-screen{
        width:min(760px, calc(100vw - 300px));
        margin:0 auto;
    }

    .pop-heading{
        margin-left:auto;
        margin-right:auto;
    }

    /* Carte légèrement plus généreuse sur ordinateur */
    .pop-feed-item{
        width:100%;
        max-width:680px;
        margin-left:auto;
        margin-right:auto;
    }

    .pop-stage{
        width:100%;
    }

    .pop-card{
        width:100%;
        max-width:680px;
        margin-left:auto;
        margin-right:auto;
    }

    .pop-actions{
        width:100%;
        max-width:680px;
        margin-left:auto;
        margin-right:auto;
    }

    /* =========================================================
   BYLBY — NAVIGATION DESKTOP
   Même identité visuelle que le menu mobile
   ========================================================= */

.bylby-main-nav-3{
    position:fixed !important;

    left:28px !important;
    top:50% !important;
    bottom:auto !important;

    transform:translateY(-50%) !important;

    width:190px !important;
    height:auto !important;

    display:grid !important;
    grid-template-columns:1fr !important;
    gap:0 !important;

    padding:18px 0 !important;
    margin:0 !important;

    background:#fff !important;
    border-radius:26px !important;

    box-shadow:
        0 18px 50px rgba(11,11,42,.14),
        0 2px 8px rgba(11,11,42,.06) !important;

    overflow:visible !important;
}


/* POP + PROFIL */

.bylby-main-nav-3 > a{
    width:100% !important;
    min-height:88px !important;

    display:flex !important;
    flex-direction:column !important;
    align-items:center !important;
    justify-content:center !important;

    gap:7px !important;
    padding:12px !important;
    margin:0 !important;

    background:transparent !important;
    color:#11122d !important;

    text-align:center !important;
    border-radius:0 !important;

    box-shadow:none !important;
}


/* BOUTON PUBLIER */

.bylby-main-nav-3 > a.plus{
    position:relative !important;

    width:calc(100% - 24px) !important;
    min-height:100px !important;

    margin:6px 12px !important;
    padding:12px !important;

    justify-self:auto !important;

    background:
        linear-gradient(
            135deg,
            #7147ff 0%,
            #a943e9 48%,
            #ef55bd 100%
        ) !important;

    color:#fff !important;

    border-radius:24px !important;

    box-shadow:
        0 14px 30px rgba(155,67,232,.28) !important;
}


/* Petit effet flottant du + comme sur mobile */

.bylby-main-nav-3 > a.plus strong,
.bylby-main-nav-3 > a.plus .plus-icon{
    transform:scale(1.12);
}
/* =========================================================
   BYLBY — NAVIGATION DESKTOP
   Même identité visuelle que le menu mobile
   ========================================================= */

.bylby-main-nav-3{
    position:fixed !important;

    left:28px !important;
    top:50% !important;
    bottom:auto !important;

    transform:translateY(-50%) !important;

    width:190px !important;
    height:auto !important;

    display:grid !important;
    grid-template-columns:1fr !important;
    gap:0 !important;

    padding:18px 0 !important;
    margin:0 !important;

    background:#fff !important;
    border-radius:26px !important;

    box-shadow:
        0 18px 50px rgba(11,11,42,.14),
        0 2px 8px rgba(11,11,42,.06) !important;

    overflow:visible !important;
}


/* POP + PROFIL */

.bylby-main-nav-3 > a{
    width:100% !important;
    min-height:88px !important;

    display:flex !important;
    flex-direction:column !important;
    align-items:center !important;
    justify-content:center !important;

    gap:7px !important;
    padding:12px !important;
    margin:0 !important;

    background:transparent !important;
    color:#11122d !important;

    text-align:center !important;
    border-radius:0 !important;

    box-shadow:none !important;
}


/* BOUTON PUBLIER */

.bylby-main-nav-3 > a.plus{
    position:relative !important;

    width:calc(100% - 24px) !important;
    min-height:100px !important;

    margin:6px 12px !important;
    padding:12px !important;

    justify-self:auto !important;

    background:
        linear-gradient(
            135deg,
            #7147ff 0%,
            #a943e9 48%,
            #ef55bd 100%
        ) !important;

    color:#fff !important;

    border-radius:24px !important;

    box-shadow:
        0 14px 30px rgba(155,67,232,.28) !important;
}


/* Petit effet flottant du + comme sur mobile */

.bylby-main-nav-3 > a.plus strong,
.bylby-main-nav-3 > a.plus .plus-icon{
    transform:scale(1.12);
}
.bylby-main-nav-3{
    width:150px !important;
    padding:14px 0 !important;
    border-radius:22px !important;
}

.bylby-main-nav-3 > a{
    min-height:72px !important;
    gap:5px !important;
    padding:9px !important;
}

.bylby-main-nav-3 > a.plus{
    width:calc(100% - 18px) !important;
    min-height:86px !important;
    margin:5px 9px !important;
    border-radius:20px !important;
}
}
/* =========================================================
   BYLBY — SIDEBAR POP DESKTOP
   ========================================================= */

.bylby-pop-desktop-side{
    display:none;
}

@media (min-width:1000px){

    .bylby-pop-desktop-side{
        position:fixed;

        top:120px;
        right:34px;

        display:flex;
        flex-direction:column;
        gap:16px;

        width:270px;
    }

    .bylby-side-card{
        padding:22px;

        background:#fff;
        border:1px solid #ebe8f1;
        border-radius:22px;

        box-shadow:0 12px 35px rgba(11,11,42,.05);
    }

    .bylby-side-kicker{
        display:block;

        margin-bottom:8px;

        color:#7651ff;

        font-size:10px;
        font-weight:900;
        letter-spacing:.1em;
    }

    .bylby-side-card h2{
        margin:0 0 20px;

        color:#11122d;

        font-size:20px;
        line-height:1.1;
        letter-spacing:-.5px;
    }

    .bylby-side-stats{
        display:grid;
        grid-template-columns:repeat(3,1fr);
        gap:8px;
    }

    .bylby-side-stats div{
        min-width:0;
    }

    .bylby-side-stats strong{
        display:block;

        color:#11122d;

        font-size:22px;
        line-height:1;
    }

    .bylby-side-stats span{
        display:block;

        margin-top:6px;

        color:#9691a0;

        font-size:10px;
        font-weight:700;
    }

    .bylby-side-trending{
        display:grid;
    }

    .bylby-side-trending a{
        display:flex;
        align-items:center;
        justify-content:space-between;
        gap:12px;

        padding:14px 0;

        color:#11122d;
        text-decoration:none;

        border-bottom:1px solid #f0edf3;
    }

    .bylby-side-trending a:first-child{
        padding-top:4px;
    }

    .bylby-side-trending a:last-child{
        padding-bottom:0;
        border-bottom:0;
    }

    .bylby-side-trending a > div{
        min-width:0;
    }

    .bylby-side-trending strong{
        display:block;

        overflow:hidden;
        text-overflow:ellipsis;
        white-space:nowrap;

        font-size:13px;
    }

    .bylby-side-trending small{
        display:block;

        margin-top:4px;

        color:#9994a1;
        font-size:10px;
    }

    .bylby-side-trending b{
        flex:0 0 auto;

        padding:7px 9px;

        background:#f1edff;
        color:#704cff;

        border-radius:10px;

        font-size:12px;
    }
}
/* FIX — sidebar desktop sans débordement */

@media (min-width:1000px){

    .bylby-pop-desktop-side{
        width:240px !important;
        right:18px !important;
    }

    .bylby-side-card{
        width:100%;
        box-sizing:border-box;
        overflow:hidden;
    }

    .bylby-side-trending a{
        min-width:0;
        width:100%;
    }

    .bylby-side-trending a > div{
        min-width:0;
        flex:1 1 auto;
        overflow:hidden;
    }

    .bylby-side-trending strong{
        display:block;
        max-width:100%;
        overflow:hidden;
        text-overflow:ellipsis;
        white-space:nowrap;
    }
}
