/**
 * Media Player Styles
 *
 * Audio and video use Plyr (plyr.io) — these styles override Plyr defaults
 * to match the app's design system. Images and text passages use custom CSS.
 * Mobile-first, touch-friendly design for Telegram Mini App.
 */

/* ============================================
   Shared Media Container
   ============================================ */
.media-audio-container,
.media-image-container,
.media-video-container,
.media-text-container {
    margin-bottom: var(--spacing-sm);
}

/* ============================================
   Shared Animations
   ============================================ */
@keyframes media-skeleton-pulse {
    0%, 100% { opacity: 0.4; }
    50% { opacity: 0.8; }
}

/* ============================================
   Plyr Theme Overrides (Audio + Video)
   ============================================ */
:root {
    --plyr-color-main: var(--accent-primary);
    --plyr-audio-controls-background: var(--bg-surface);
    --plyr-audio-control-color: var(--text-primary);
    --plyr-audio-control-color-hover: var(--bg-surface);
    --plyr-audio-control-background-hover: var(--accent-primary);
    --plyr-range-track-height: 6px;
    --plyr-range-thumb-height: 14px;
    --plyr-range-fill-background: var(--accent-primary);
    --plyr-range-thumb-background: var(--accent-primary);
    --plyr-audio-progress-buffered-background: var(--bg-tertiary);
    --plyr-audio-range-track-background: var(--bg-tertiary);
    --plyr-range-track-background: var(--bg-tertiary);
    --plyr-video-controls-background: linear-gradient(transparent, rgba(0,0,0,0.7));
    --plyr-video-control-color: #fff;
    --plyr-font-family: inherit;
}

/* ============================================
   Audio Player (Plyr)
   ============================================ */
.media-audio-container {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--bg-surface);
    border-radius: 16px;
    box-shadow: var(--shadow-sm);
}

.media-audio-player {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.media-audio-label {
    font-size: 14px;
    font-weight: 500;
    color: var(--text-secondary);
    white-space: nowrap;
}

/* Make Plyr audio player fit inside our container */
.media-audio-player .plyr--audio {
    border-radius: var(--radius-sm);
}

.media-audio-player .plyr--audio .plyr__controls {
    padding: 4px 8px;
}

/* ============================================
   Image Viewer — Swipeable Carousel
   ============================================ */
.media-image-container {
    padding: var(--spacing-sm) var(--spacing-md);
}

.media-image-track {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    border-radius: 16px;
    background: var(--bg-surface);
    box-shadow: var(--shadow-sm);
}

.media-image-track::-webkit-scrollbar {
    display: none;
}

.media-image-slide {
    flex: 0 0 100%;
    scroll-snap-align: start;
    position: relative;
    cursor: pointer;
    min-height: 120px;
    display: flex;
    align-items: center;
    justify-content: center;
    -webkit-tap-highlight-color: transparent;
}

.media-image-track:not(.multi) {
    overflow: hidden;
}

.media-image-slide.loading {
    cursor: default;
}

.media-image-skeleton {
    position: absolute;
    inset: 0;
    background: var(--bg-secondary);
    animation: media-skeleton-pulse 1.5s ease-in-out infinite;
    border-radius: var(--radius-md);
}

.media-image-slide img {
    width: 100%;
    max-height: 250px;
    object-fit: contain;
    display: block;
}

.media-image-slide:active {
    opacity: 0.8;
}

.media-image-error {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100px;
    color: var(--text-muted);
    font-size: 14px;
    cursor: pointer;
}

.media-image-dots {
    display: flex;
    justify-content: center;
    gap: 6px;
    padding: var(--spacing-xs) 0 0;
}

.media-image-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--bg-secondary);
    transition: background var(--transition-fast);
}

.media-image-dot.active {
    background: var(--accent-primary);
}

/* Fullscreen overlay */
.media-image-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 3000;
    background: rgba(0, 0, 0, 0.9);
    display: flex;
    align-items: center;
    justify-content: center;
    animation: fadeIn var(--transition-normal);
    -webkit-tap-highlight-color: transparent;
}

.media-image-overlay img {
    max-width: 95%;
    max-height: 90vh;
    object-fit: contain;
    border-radius: var(--radius-sm);
}

.media-image-overlay-close {
    position: absolute;
    top: var(--spacing-md);
    right: var(--spacing-md);
    width: 44px;
    height: 44px;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.2);
    color: #fff;
    font-size: 24px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* ============================================
   Video Player (Plyr)
   ============================================ */
.media-video-container {
    padding: var(--spacing-sm) var(--spacing-md);
}

.media-video-wrapper {
    border-radius: 16px;
    overflow: hidden;
    box-shadow: var(--shadow-sm);
}

/* Plyr video inside our wrapper */
.media-video-wrapper .plyr--video {
    border-radius: 16px;
}

.media-video-wrapper .plyr__video-wrapper {
    max-height: 40vh;
}

/* ============================================
   Reading Passage (show_text)
   ============================================ */
.media-text-container {
    padding: 0 var(--spacing-md);
}

.media-text-content {
    padding: var(--spacing-md);
    background: var(--bg-surface);
    border-radius: 16px;
    box-shadow: var(--shadow-sm);
    font-size: 14px;
    line-height: 1.6;
    color: var(--text-primary);
    max-height: 200px;
    overflow-y: auto;
    white-space: pre-wrap;
}

.media-text-content .passage-heading {
    font-weight: 600;
    margin-bottom: var(--spacing-xs);
}
