/* ============================================================
   YJ SITE — Biographie (v3.2.0)
   Layout interleaved : texte + images reveal-wipe
   Colonne droite sticky : portrait flottant + timeline
============================================================ */

.yj-bio{
    position:relative;
    width:100%;
    padding:60px 5% 100px;
    box-sizing:border-box;
    font-family:var(--yj-body);
    color:var(--yj-ink);
}
.yj-bio__inner{
    position:relative; z-index:1;
    max-width:1400px;
    margin:0 auto;
}

/* ============ HEADER ============ */
.yj-bio__header{
    text-align:left;
    margin-bottom:60px;
    opacity:0;transform:translateY(20px);
    animation:yjBioReveal .9s var(--yj-ease-out) .1s forwards;
}
@keyframes yjBioReveal{ to{opacity:1;transform:translateY(0);} }

.yj-bio__eyebrow{
    display:inline-block;
    font-family:var(--yj-body);
    font-size:12px; font-weight:600;
    letter-spacing:.18em; text-transform:uppercase;
    color:var(--yj-green-deep);
    padding-bottom:6px;
    border-bottom:2px solid var(--yj-terracotta);
    margin-bottom:18px;
}
.yj-bio__heading{
    font-family:var(--yj-display);
    font-size:clamp(40px, 5.5vw, 76px);
    font-weight:900; line-height:1;
    letter-spacing:-.035em;
    color:var(--yj-ink);
    margin:0 0 16px;
}
.yj-bio__heading span{
    color:var(--yj-green-deep);
    position:relative;
    display:inline-block;
}
.yj-bio__heading span::after{
    content:""; position:absolute;
    left:0;right:0;bottom:-0.15em;
    height:.12em;
    background:var(--yj-terracotta);
    border-radius:2px;
}
.yj-bio__subtitle{
    font-family:var(--yj-display);
    font-size:clamp(18px, 2vw, 24px);
    font-weight:300; line-height:1.4;
    color:var(--yj-muted);
    max-width:720px;
    margin:0;
}

/* ============ GRID ============ */
.yj-bio__grid{
    display:grid;
    grid-template-columns:minmax(0, 1.55fr) minmax(0, 1fr);
    gap:70px;
    align-items:flex-start;
}

/* ============ LEFT : Content blocks ============ */
.yj-bio__content{
    display:flex;
    flex-direction:column;
    gap:32px;
    min-width:0;
}

/* TEXT blocks */
.yj-bio__text{
    opacity:0;
    transform:translateY(18px);
    transition:opacity .8s var(--yj-ease-out), transform .8s var(--yj-ease-out);
    transition-delay:var(--yj-reveal-delay, 0s);
}
.yj-bio__text.is-revealed{
    opacity:1;
    transform:translateY(0);
}
.yj-bio__text p{
    font-family:var(--yj-body);
    font-size:16px;
    line-height:1.75;
    color:var(--yj-ink);
    margin:0;
}
.yj-bio__text strong{
    font-weight:700;
    color:var(--yj-ink);
}
.yj-bio__text:first-of-type p:first-of-type::first-letter{
    font-family:var(--yj-display);
    font-size:64px;
    font-weight:900;
    float:left;
    line-height:.85;
    margin:8px 12px 0 0;
    color:var(--yj-green-deep);
    letter-spacing:-.03em;
}

/* IMAGE blocks — reveal wipe */
.yj-bio__image{
    margin:14px 0;
    opacity:0;
    transform:translateY(20px);
    transition:opacity .6s var(--yj-ease-out), transform .8s var(--yj-ease-out);
}
.yj-bio__image.is-revealed{
    opacity:1;
    transform:translateY(0);
}
.yj-bio__image-frame{
    position:relative;
    overflow:hidden;
    border-radius:6px;
    box-shadow:
        0 30px 60px -25px rgba(27,94,61,.3),
        0 16px 30px -16px rgba(0,0,0,.15);
    transition:transform .7s var(--yj-ease), box-shadow .7s var(--yj-ease);
    cursor:pointer;
}
.yj-bio__image-frame:hover{
    transform:scale(1.01);
    box-shadow:
        0 50px 80px -25px rgba(27,94,61,.4),
        0 25px 40px -18px rgba(0,0,0,.2);
}
.yj-bio__image-frame img{
    display:block;
    width:100%;
    height:auto;
    transition:transform 1s var(--yj-ease);
    filter:saturate(1.05) contrast(1.03);
}
.yj-bio__image-frame:hover img{
    transform:scale(1.04);
}

/* The wipe mask */
.yj-bio__image-mask{
    position:absolute;
    inset:0;
    background:var(--yj-cream, #FAF7EE);
    transform:scaleX(1);
    transform-origin:right center;
    transition:transform 1.1s cubic-bezier(.77, 0, .175, 1) .15s;
    z-index:2;
    pointer-events:none;
}
.yj-bio__image[data-direction="rl"] .yj-bio__image-mask{
    transform-origin:left center;
}
.yj-bio__image.is-revealed .yj-bio__image-mask{
    transform:scaleX(0);
}
/* Set the actual background color of the mask to match the section bg */
.yj-app{ --yj-cream: #FAF7EE; }
.yj-bio__image-mask{ background: var(--yj-cream); }

.yj-bio__image-caption{
    margin-top:12px;
    font-family:var(--yj-body);
    font-size:12.5px;
    font-style:italic;
    color:var(--yj-muted);
    line-height:1.45;
    padding-left:14px;
    border-left:2px solid var(--yj-terracotta);
    transition:color .35s var(--yj-ease), border-color .35s var(--yj-ease);
}
.yj-bio__image:hover .yj-bio__image-caption{
    color:var(--yj-ink);
    border-left-color:var(--yj-green-deep);
}

/* ============ RIGHT : Side column ============ */
.yj-bio__side{
    position:relative;
}
.yj-bio__side-sticky{
    position:sticky;
    top:110px;
    display:flex;
    flex-direction:column;
    gap:28px;
}

/* PORTRAIT — gentle floating */
.yj-bio__portrait{
    opacity:0;
    transform:translateY(20px);
    transition:opacity .9s var(--yj-ease-out), transform .9s var(--yj-ease-out);
    transition-delay:.2s;
}
.yj-bio__portrait.is-revealed{
    opacity:1;
    transform:translateY(0);
}
.yj-bio__portrait-float{
    position:relative;
    aspect-ratio:3/4;
    border-radius:6px;
    overflow:hidden;
    background:var(--yj-green-deep);
    box-shadow:
        0 40px 70px -25px rgba(27,94,61,.45),
        0 24px 40px -20px rgba(0,0,0,.2);
    /* Subtle floating animation */
    animation:yjPortraitFloat 9s ease-in-out infinite;
    transition:transform .7s var(--yj-ease), box-shadow .7s var(--yj-ease);
    cursor:pointer;
}
@keyframes yjPortraitFloat{
    0%, 100%{ transform:translateY(0); }
    50%{ transform:translateY(-10px); }
}
.yj-bio__portrait-float:hover{
    animation-play-state:paused;
    transform:translateY(-6px) scale(1.02);
    box-shadow:
        0 60px 90px -25px rgba(27,94,61,.55),
        0 30px 50px -20px rgba(0,0,0,.25);
}
.yj-bio__portrait-float::after{
    content:"";
    position:absolute;
    inset:0;
    background:linear-gradient(135deg, transparent 55%, rgba(199,93,58,.18));
    opacity:0;
    transition:opacity .5s var(--yj-ease);
    pointer-events:none;
}
.yj-bio__portrait-float:hover::after{ opacity:1; }
.yj-bio__portrait-float img{
    width:100%; height:100%;
    object-fit:cover;
    filter:saturate(1.05) contrast(1.04);
    transition:transform 1s var(--yj-ease);
    display:block;
}
.yj-bio__portrait-float:hover img{ transform:scale(1.04); }

/* SIDE ID */
.yj-bio__side-id{
    padding-bottom:24px;
    border-bottom:1px solid var(--yj-line);
}
.yj-bio__side-name{
    font-family:var(--yj-display);
    font-size:24px;
    font-weight:900;
    letter-spacing:-.01em;
    color:var(--yj-ink);
    line-height:1.1;
    margin-bottom:10px;
}
.yj-bio__side-tag{
    font-family:var(--yj-body);
    font-size:13.5px;
    line-height:1.5;
    color:var(--yj-muted);
    margin:0;
}

/* TIMELINE */
.yj-bio__timeline-label{
    font-family:var(--yj-body);
    font-size:11px; font-weight:600;
    letter-spacing:.2em; text-transform:uppercase;
    color:var(--yj-green-deep);
    padding-bottom:6px;
    border-bottom:2px solid var(--yj-terracotta);
    display:inline-block;
    margin-bottom:24px;
}
.yj-bio__timeline-list{
    position:relative;
    list-style:none;
    margin:0; padding:0;
}
.yj-bio__timeline-list::before{
    content:"";
    position:absolute;
    left:8px; top:6px; bottom:6px;
    width:2px;
    background:linear-gradient(180deg,
        var(--yj-terracotta) 0%,
        var(--yj-green) 50%,
        var(--yj-green-deep) 100%);
    border-radius:2px;
    opacity:.3;
}
.yj-bio__timeline-item{
    position:relative;
    padding:0 0 22px 36px;
    transition:transform .4s var(--yj-ease);
}
.yj-bio__timeline-item:last-child{ padding-bottom:0; }
.yj-bio__timeline-item:hover{ transform:translateX(4px); }
.yj-bio__timeline-dot{
    position:absolute;
    left:0; top:5px;
    width:18px; height:18px;
    border-radius:50%;
    background:#fff;
    border:3px solid var(--yj-green-deep);
    transition:all .4s var(--yj-ease);
    z-index:1;
}
.yj-bio__timeline-item:hover .yj-bio__timeline-dot{
    background:var(--yj-terracotta);
    border-color:var(--yj-terracotta);
    transform:scale(1.2);
    box-shadow:0 0 0 5px rgba(199,93,58,.15);
}
.yj-bio__timeline-year{
    font-family:var(--yj-display);
    font-size:17px; font-weight:900;
    color:var(--yj-green-deep);
    letter-spacing:-.02em;
    line-height:1;
    margin-bottom:3px;
    transition:color .3s var(--yj-ease);
}
.yj-bio__timeline-item:hover .yj-bio__timeline-year{ color:var(--yj-terracotta); }
.yj-bio__timeline-title{
    font-family:var(--yj-body);
    font-size:13.5px; font-weight:600;
    color:var(--yj-ink);
    margin-bottom:3px;
    line-height:1.3;
}
.yj-bio__timeline-text{
    font-family:var(--yj-body);
    font-size:12px;
    line-height:1.5;
    color:var(--yj-muted);
}

/* ============ RESPONSIVE ============ */
@media (max-width: 1100px){
    .yj-bio__grid{ gap:50px; }
}
@media (max-width: 980px){
    .yj-bio__grid{
        grid-template-columns:1fr;
        gap:50px;
    }
    .yj-bio__side-sticky{
        position:static;
    }
    /* Reorder on mobile : side col goes on top */
    .yj-bio__side{ order:-1; }
    .yj-bio__portrait-float{
        max-width:380px;
        margin:0 auto;
    }
    .yj-bio__side-id{
        text-align:center;
        max-width:520px;
        margin:0 auto;
    }
}
@media (max-width: 640px){
    .yj-bio{ padding:40px 6% 80px; }
    .yj-bio__header{ margin-bottom:40px; }
    .yj-bio__heading{ font-size:42px; }
    .yj-bio__subtitle{ font-size:17px; }
    .yj-bio__content{ gap:24px; }
    .yj-bio__text p{ font-size:15px; line-height:1.7; }
    .yj-bio__text:first-of-type p:first-of-type::first-letter{
        font-size:54px; margin:4px 10px 0 0;
    }
    .yj-bio__portrait-float{ max-width:280px; }
    .yj-bio__side-name{ font-size:20px; }
    .yj-bio__side-tag{ font-size:13px; }
    .yj-bio__timeline-item{ padding-left:30px; padding-bottom:18px; }
    .yj-bio__image-caption{ font-size:12px; }
}
