/* ── Video player ────────────────────────────────────────────────────────────── */

body.media-player--video .media-player__video {
    --media-player-video-visibility: visible;
    --media-player-video-opacity: 1;
}

.media-player__video--minimized {
    --media-player-video-width: clamp(180px, 30vw, 400px);
    --media-player-video-height: calc(clamp(180px, 30vw, 400px) * 9 / 16);
    --media-player-aspect-ratio: 16 / 9;

    --media-player-video-top: calc(100vh - var(--media-player-video-height) - var(--footer-height, 20px));
    --media-player-video-left: calc(100vw - var(--media-player-video-width) - 20px);
    --media-player-video-right: auto;
    --media-player-video-bottom: auto;
    --media-player-video-border-radius: 10px;
    --media-player-video-overflow: hidden;
    --media-player-video-clip-path: inset(0 round 10px);

    --media-player-video-wrapper-display: flex;
    --media-player-video-wrapper-align-items: center;
    --media-player-video-wrapper-justify-content: center;
    --media-player-video-wrapper-width: 100%;
    --media-player-video-wrapper-height: 100%;
    --media-player-video-wrapper-max-width: none;
    --media-player-video-wrapper-max-height: none;
    --media-player-video-wrapper-margin: 0;

    --media-player-video-player-max-height: 100%;

    --media-player-controls-top: clamp(5px, 0.5vw, 16px);
    --media-player-controls-right: clamp(5px, 0.5vw, 16px);
}

@media (max-width: 480px) {
    :root {
        --media-player-control-minimize-display: none;
    }
}

.media-player__video {
    display: flex;
    visibility: var(--media-player-video-visibility, hidden);
    opacity: var(--media-player-video-opacity, 0);
    position: fixed;

    top: var(--media-player-video-top, 0);
    right: var(--media-player-video-right, auto);
    bottom: var(--media-player-video-bottom, auto);
    left: var(--media-player-video-left, 0);

    width: var(--media-player-video-width, 100vw);
    height: var(--media-player-video-height, 100vh);
    aspect-ratio: var(--media-player-aspect-ratio, initial);

    align-items: center;
    justify-content: center;
    z-index: 200;
    
    border-radius: var(--media-player-video-border-radius, initial);

    overflow: var(--media-player-video-overflow, initial);
    clip-path: var(--media-player-video-clip-path, inset(0 round 0));

    transition:
        top 350ms cubic-bezier(0.22, 1, 0.36, 1),
        left 350ms cubic-bezier(0.22, 1, 0.36, 1),
        width 350ms cubic-bezier(0.22, 1, 0.36, 1),
        height 350ms cubic-bezier(0.22, 1, 0.36, 1),
        border-radius 350ms ease,
        clip-path 350ms cubic-bezier(0.22, 1, 0.36, 1);
}

body.media-player--video::after {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 199;
    background: rgba(0, 0, 0, 0.82);
    opacity: 1;
    pointer-events: none;
    transition: opacity 350ms ease;
}

body.media-player--video:has(.media-player__video--minimized)::after {
    opacity: 0;
}

.media-player__video .media-player__wrapper {
    display: var(--media-player-video-wrapper-display, initial);
    position: relative;

    width: var(--media-player-video-wrapper-width, 90vw);
    height: var(--media-player-video-wrapper-height, initial);
    max-width: var(--media-player-video-wrapper-max-width, 1280px);
    max-height: var(--media-player-video-wrapper-max-height, 92vh);

    margin: var(--media-player-video-wrapper-margin, 4vh auto);

    align-items: var(--media-player-video-wrapper-align-items, initial);    
    justify-content: var(--media-player-video-wrapper-justify-content, initial);

    transition:
        width 250ms ease,
        height 250ms ease,
        margin 250ms ease;
}

.media-player__video-player {
    display: block;

    width: 100%;
    height: 100%;
    max-height: var(--media-player-video-player-max-height, 88vh);

    border-radius: 10px;

    background: #000;
    object-fit: contain;
    outline: none;
}

.media-player__controls {
    position: absolute;
    z-index: 10;

    top: var(--media-player-controls-top, 16px);
    right: var(--media-player-controls-right, 16px);
}

.media-player__control {
    width: 40px;
    height: 40px;

    border: none;
    border-radius: 50%;

    background: rgba(0,0,0,0.35);
    color: #fff;

    font-size: 32px;
    line-height: 40px;
    text-align: center;

    cursor: pointer;
    transition: all 0.3s ease;

    outline: none;
    -webkit-tap-highlight-color: transparent;
}

.media-player__control:focus,
.media-player__control:focus-visible,
.media-player__control:active {
    outline: none;
    box-shadow: none;
    -webkit-tap-highlight-color: transparent;
}

.media-player__video .media-player__control {
    box-shadow: 0 2px 10px rgba(0,0,0,0.5);

    opacity: 0;
    pointer-events: none;
}

.media-player__video .media-player__control svg {
    height: 20px;
    width: auto;
    
    transition: all 0.3s ease;
}

.media-player__video--show-controls .media-player__control {
    opacity: 1;
    pointer-events: auto;
}

.media-player__control--minimize {
    display: var(--media-player-control-minimize-display, initial);
}

.media-player__control--minimize svg {
    transform: rotate(-90deg);
}

.media-player__video--minimized .media-player__control--minimize svg {
    transform: rotate(90deg);
}

.media-player__control--minimize:hover svg {
    scale: 1.2;
}

.media-player__control--close:hover {
    transform: rotate(90deg);
}

/* ── Audio player bar ────────────────────────────────────────────────────────── */

:root {
    --audio-player-max-width: 860px;
    --audio-player-wrapper-padding-x: 40px;
    --audio-player-wrapper-padding-y: 10px;
    --audio-player-border-radius: 20px 20px 0 0;
}

@media (max-width: 480px) {
    :root {
        --audio-player-wrapper-padding-y: 5px;
        --audio-player-border-radius: none;
    }
}

.media-player__audio {
    display: none;
    position: fixed;
    z-index: 200;

    right: 0;
    bottom: calc(var(--footer-height, 0px) - 1px);
    left: 0;

    justify-content: center;

    pointer-events: none;
}

body.media-player--audio .media-player__audio {
    display: flex;
}

.media-player__audio .media-player__wrapper {
    display: flex;
    position: relative;

    width: calc(var(--audio-player-max-width) + 2*var(--audio-player-wrapper-padding-x) + 10px);

    justify-content: center;

    padding: var(--audio-player-wrapper-padding-y) var(--audio-player-wrapper-padding-x);

    pointer-events: auto;
    isolation: isolate;

    background: rgba(255, 0, 0, 0);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);

    border-radius: var(--audio-player-border-radius);
}

.media-player__audio-player {
    width: 100%;
    max-width: var(--audio-player-max-width);
    outline: none;
}

.media-player__audio .media-player__controls {
    top: 8px;
    right: 12px;
}

.media-player__audio .media-player__control {
    background: var(--bg-button);
    color: var(--text-primary);

    width: 28px;
    height: 28px;

    font-size: 22px;
    line-height: 26px;
    text-align: center;
}

/* ─────── Audio playing overlay ────────────────────────────────────────────── */

.media-player__audio-playing-overlay {
    position: absolute;
    z-index: 2;

    inset: 0;

    opacity: 0;

    transition: opacity 0.5s ease;
    
    pointer-events: none;
}

.audio-playing-overlay__playing-icon {
    display: flex;
    position: absolute;

    left: 10px;
    bottom: 10px;

    align-items: center;
    justify-content: center;
}

body.grid-view.media-player--audio .media-player__audio-playing-overlay {
    opacity: 1;
}

.audio-playing-overlay__playing-icon svg {
    width: 60px;
    height: 60px;

    opacity: 0.9;
}

body.grid-view.media-player--audio .audio-playing-overlay__playing-icon svg {
    animation: media-result-audio-player-spin 2.4s linear infinite;
    animation-play-state: running;
}

body.grid-view.player-paused .audio-playing-overlay__playing-icon svg {
    animation-play-state: paused;
}

@keyframes media-result-audio-player-spin {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

@media (prefers-reduced-motion: reduce) {
    body.grid-view.media-player--audio .audio-playing-overlay__playing-icon svg {
        animation: none;
    }
}

.audio-playing-overlay__duration {
    display: flex;
    position: absolute;
    gap: 4px;

    right: 10px;
    bottom: 10px;

    align-items: center;

    padding: 3px 6px;

    border-radius: 6px;

    background: var(--thumbnail-duration-bg);
    color: var(--thumbnail-duration-color);

    font-size: 12px;
    font-weight: 500;
    line-height: 1;

    pointer-events: none;

    user-select: none;
}

.audio-playing-overlay__play-icon,
.audio-playing-overlay__pause-icon {
    display: flex;
    position: absolute;

    width: 20%;
    aspect-ratio: 1;

    inset: 0;
    margin: auto;

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

    padding: 4%;
    box-sizing: border-box;

    border-radius: 50%;
    background: rgb(0 0 0 / 55%);

    opacity: 0;
    transform: scale(0);

    transition:
        opacity 0.5s ease,
        transform 0.5s ease;

    backdrop-filter: blur(2px);
}

.audio-playing-overlay__play-icon svg,
.audio-playing-overlay__pause-icon svg {
    width: 100%;
    height: 100%;

    color: rgb(255 255 255 / 85%);
    filter: drop-shadow(0 1px 3px rgb(0 0 0 / 35%));
}

body.grid-view.player-paused .audio-playing-overlay__play-icon {
    opacity: 1;
    transform: scale(1);
}