/* doc-project | assets/css/video-showcase.css | Habille le carrousel de démonstrations CNOC, ses miniatures et sa modal vidéo quasi plein écran sur toutes les variantes de landing. | Expose: aucun | Dépend de: includes/video-showcase.php, assets/css/base.css, assets/js/video-showcase.js | Impacte: preuve produit, hiérarchie visuelle, responsive, navigation tactile, modal et accessibilité | Tables: aucune */
.video-showcase {
    position: relative;
    overflow: hidden;
}

.video-showcase::before {
    position: absolute;
    inset: 8% auto auto 50%;
    width: min(64rem, 88vw);
    height: 28rem;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(76, 188, 255, .11), transparent 68%);
    content: "";
    pointer-events: none;
    transform: translateX(-50%);
}

.video-showcase .container {
    position: relative;
}

.video-showcase__heading {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, .72fr);
    align-items: end;
    gap: clamp(1.2rem, 5vw, 4.5rem);
    margin-bottom: clamp(1.5rem, 4vw, 2.75rem);
}

.video-showcase__heading h2 {
    max-width: 760px;
    margin: 0;
    color: var(--text);
    font-size: clamp(2rem, 4vw, 3.35rem);
    line-height: 1.06;
    letter-spacing: -.035em;
}

.video-showcase__heading > p {
    max-width: 560px;
    margin: 0;
    color: var(--muted);
    font-size: clamp(1rem, 1.8vw, 1.1rem);
    line-height: 1.75;
}

.video-showcase__viewport {
    position: relative;
}

.video-showcase__track {
    display: grid;
    grid-auto-columns: min(100%, 980px);
    grid-auto-flow: column;
    gap: 1.25rem;
    overflow-x: auto;
    padding: .25rem .25rem 1rem;
    scroll-behavior: smooth;
    scroll-snap-type: x mandatory;
    scrollbar-width: thin;
    overscroll-behavior-inline: contain;
}

.video-showcase__track:focus-visible {
    outline: 3px solid rgba(111, 231, 255, .55);
    outline-offset: 5px;
    border-radius: var(--radius-lg);
}

.video-showcase__card {
    min-width: 0;
    scroll-snap-align: start;
}

.video-showcase__open {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(250px, .65fr);
    width: 100%;
    min-height: 100%;
    padding: 0;
    border: 1px solid rgba(111, 231, 255, .18);
    border-radius: calc(var(--radius-lg) + 4px);
    background:
        radial-gradient(circle at 80% 0%, rgba(140, 124, 255, .13), transparent 32%),
        linear-gradient(145deg, rgba(255, 255, 255, .06), rgba(13, 28, 49, .82));
    box-shadow: var(--shadow);
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
    overflow: hidden;
    transition:
        border-color .22s ease,
        box-shadow .22s ease,
        transform .22s ease;
}

.video-showcase__open:hover {
    border-color: rgba(111, 231, 255, .4);
    box-shadow: 0 30px 90px rgba(2, 8, 20, .58);
    transform: translateY(-3px);
}

.video-showcase__open:focus-visible {
    outline: 3px solid rgba(111, 231, 255, .62);
    outline-offset: 5px;
}

.video-showcase__media {
    position: relative;
    display: block;
    min-height: 340px;
    overflow: hidden;
    background: #07111f;
}

.video-showcase__media::after {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent 65%, rgba(7, 17, 31, .3));
    content: "";
    pointer-events: none;
}

.video-showcase__media img {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 340px;
    object-fit: cover;
    transition: transform .45s ease;
}

.video-showcase__open:hover .video-showcase__media img {
    transform: scale(1.018);
}

.video-showcase__media-label {
    position: absolute;
    z-index: 2;
    top: 1rem;
    left: 1rem;
    padding: .5rem .72rem;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 999px;
    background: rgba(7, 17, 31, .78);
    box-shadow: 0 8px 28px rgba(0, 0, 0, .28);
    color: var(--text);
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .04em;
    backdrop-filter: blur(12px);
}

.video-showcase__play {
    position: absolute;
    z-index: 3;
    top: 50%;
    left: 50%;
    display: grid;
    width: clamp(66px, 8vw, 86px);
    height: clamp(66px, 8vw, 86px);
    place-items: center;
    border: 1px solid rgba(255, 255, 255, .28);
    border-radius: 50%;
    background: rgba(7, 17, 31, .72);
    box-shadow:
        0 18px 48px rgba(0, 0, 0, .38),
        inset 0 0 0 1px rgba(255, 255, 255, .06);
    transform: translate(-50%, -50%);
    backdrop-filter: blur(14px);
    transition:
        background .2s ease,
        transform .2s ease;
}

.video-showcase__play span {
    width: 0;
    height: 0;
    margin-left: 5px;
    border-top: 10px solid transparent;
    border-bottom: 10px solid transparent;
    border-left: 16px solid var(--primary);
}

.video-showcase__open:hover .video-showcase__play {
    background: rgba(7, 17, 31, .9);
    transform: translate(-50%, -50%) scale(1.06);
}

.video-showcase__body {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: clamp(1.4rem, 4vw, 2.4rem);
}

.video-showcase__body > strong {
    color: var(--text);
    font-size: clamp(1.45rem, 2.6vw, 2rem);
    line-height: 1.15;
    letter-spacing: -.025em;
}

.video-showcase__body > span:not(.video-showcase__action) {
    margin-top: .9rem;
    color: var(--muted);
    line-height: 1.7;
}

.video-showcase__action {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    margin-top: 1.5rem;
    color: var(--primary);
    font-weight: 800;
}

.video-showcase__action span {
    transition: transform .2s ease;
}

.video-showcase__open:hover .video-showcase__action span {
    transform: translateX(4px);
}

.video-showcase__controls {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .8rem;
    margin-top: .5rem;
}

.video-showcase__controls button {
    display: grid;
    width: 46px;
    height: 46px;
    place-items: center;
    border: 1px solid var(--border);
    border-radius: 50%;
    background: var(--surface);
    color: var(--text);
    font: inherit;
    cursor: pointer;
}

.video-showcase__controls button:hover:not(:disabled) {
    border-color: rgba(111, 231, 255, .45);
    color: var(--primary);
}

.video-showcase__controls button:disabled {
    opacity: .32;
    cursor: default;
}

.video-showcase__controls span {
    min-width: 3.6rem;
    color: var(--muted);
    text-align: center;
}

.video-modal-open {
    overflow: hidden;
}

.video-showcase-modal {
    width: min(96vw, 1500px);
    max-width: none;
    height: auto;
    max-height: 94vh;
    margin: auto;
    padding: 0;
    border: 1px solid rgba(111, 231, 255, .24);
    border-radius: calc(var(--radius-lg) + 4px);
    background: #07111f;
    box-shadow: 0 40px 140px rgba(0, 0, 0, .74);
    color: var(--text);
    overflow: auto;
}

.video-showcase-modal::backdrop {
    background: rgba(1, 5, 12, .86);
    backdrop-filter: blur(9px);
}

.video-showcase-modal__panel {
    padding: clamp(.8rem, 2vw, 1.25rem);
}

.video-showcase-modal__header {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 1rem;
    align-items: start;
    padding: .35rem .35rem 1rem;
}

.video-showcase-modal__eyebrow {
    margin: 0 0 .35rem;
    color: var(--primary);
    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.video-showcase-modal__header h2 {
    margin: 0;
    color: var(--text);
    font-size: clamp(1.3rem, 2.8vw, 2rem);
    line-height: 1.15;
}

.video-showcase-modal__header p:last-child {
    max-width: 850px;
    margin: .55rem 0 0;
    color: var(--muted);
}

.video-showcase-modal__close {
    display: grid;
    width: 48px;
    height: 48px;
    place-items: center;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 50%;
    background: rgba(255, 255, 255, .06);
    color: var(--text);
    font: 300 2rem/1 sans-serif;
    cursor: pointer;
}

.video-showcase-modal__close:hover,
.video-showcase-modal__close:focus-visible {
    border-color: rgba(111, 231, 255, .5);
    color: var(--primary);
}

.video-showcase-modal__player-shell {
    display: grid;
    min-height: 0;
    place-items: center;
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: var(--radius-md);
    background: #000;
    overflow: hidden;
}

.video-showcase-modal__player {
    display: block;
    width: 100%;
    max-width: 100%;
    height: min(72vh, 820px);
    background: #000;
    object-fit: contain;
}

@media (max-width: 860px) {
    .video-showcase__heading,
    .video-showcase__open {
        grid-template-columns: 1fr;
    }

    .video-showcase__heading {
        align-items: start;
        gap: 1rem;
    }

    .video-showcase__media {
        min-height: 0;
        aspect-ratio: 16 / 9;
    }

    .video-showcase__media img {
        min-height: 0;
    }

    .video-showcase__body {
        padding: 1.35rem;
    }

    .video-showcase-modal {
        width: 97vw;
        max-height: 96vh;
        border-radius: var(--radius-md);
    }

    .video-showcase-modal__player {
        height: auto;
        max-height: 72vh;
        aspect-ratio: 16 / 9;
    }
}

@media (max-width: 560px) {
    .video-showcase__track {
        grid-auto-columns: 96%;
        gap: .8rem;
    }

    .video-showcase__open {
        border-radius: var(--radius-md);
    }

    .video-showcase__media-label {
        top: .7rem;
        left: .7rem;
    }

    .video-showcase-modal__panel {
        padding: .55rem;
    }

    .video-showcase-modal__header {
        padding: .35rem .25rem .75rem;
    }

    .video-showcase-modal__header p:last-child {
        font-size: .9rem;
    }

    .video-showcase-modal__close {
        width: 42px;
        height: 42px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .video-showcase__track,
    .video-showcase__open,
    .video-showcase__media img,
    .video-showcase__play,
    .video-showcase__action span {
        scroll-behavior: auto;
        transition: none;
    }
}