src/styles/player.css
/* Player OSD Controls Styling */

/* Video container background */
.video-container,
.video-area {
    background-color: black;
}

/* OSD overlay controls base style - Ultra minimal */
.osd {
    background: rgba(10, 10, 10, 0.8);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-radius: 8px;
    padding: 6px;
    margin: 4px;
    transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.4);
    border: 1px solid rgba(255, 255, 255, 0.03);
}

/* OSD circular buttons - compact and minimal */
.osd.circular {
    background: rgba(255, 255, 255, 0.06);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgba(255, 255, 255, 0.05);
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
    transition: all 150ms ease;
    min-width: 32px !important;
    min-height: 32px !important;
    width: 32px !important;
    height: 32px !important;
    max-width: 32px !important;
    max-height: 32px !important;
    padding: 6px;
    border-radius: 50%;
    color: rgba(255, 255, 255, 0.8);
}

.osd.circular:hover {
    background: rgba(255, 255, 255, 0.1);
    border-color: rgba(255, 255, 255, 0.08);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
    transform: scale(1.05);
}

.osd.circular:active {
    transform: scale(0.98);
}

/* OSD pill buttons (Skip Intro/Credits) - compact */
.osd.pill {
    background-color: rgba(0, 0, 0, 0.75);
    border-radius: 18px;
    padding: 8px 16px;
    color: rgba(255, 255, 255, 0.9);
    font-weight: 500;
    font-size: 13px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    transition: all 200ms ease;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
}

.osd.pill:hover {
    background-color: rgba(0, 0, 0, 0.85);
    border-color: rgba(255, 255, 255, 0.3);
    transform: scale(1.03);
    box-shadow: 0 3px 10px rgba(0, 0, 0, 0.5);
}

/* Player controls container - ultra compact */
.player-controls {
    background: rgba(12, 12, 12, 0.85);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-radius: 10px;
    padding: 8px 12px;
    box-shadow: 0 2px 16px rgba(0, 0, 0, 0.5);
    border: 1px solid rgba(255, 255, 255, 0.04);
}

.player-controls.minimal {
    background: rgba(10, 10, 10, 0.8);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-radius: 8px;
    padding: 6px 10px;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.4);
}

/* Progress bar - ultra thin */
.player-controls .progress-bar {
    min-height: 2px;
    transition: all 200ms ease;
    margin: 2px 0;
}

.player-controls .progress-bar trough {
    background: rgba(255, 255, 255, 0.06);
    border-radius: 1px;
    min-height: 2px;
}

.player-controls .progress-bar highlight {
    background: rgba(255, 255, 255, 0.8);
    border-radius: 1px;
    min-height: 2px;
}

.player-controls .progress-bar slider {
    min-width: 0;
    min-height: 0;
    background: rgba(255, 255, 255, 1);
    border-radius: 50%;
    margin: 0;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
    transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1);
    opacity: 0;
}

.player-controls .progress-bar:hover {
    min-height: 4px;
}

.player-controls .progress-bar:hover trough {
    min-height: 4px;
    background: rgba(255, 255, 255, 0.08);
}

.player-controls .progress-bar:hover highlight {
    min-height: 4px;
    background: rgba(255, 255, 255, 0.85);
}

.player-controls .progress-bar:hover slider {
    min-width: 12px;
    min-height: 12px;
    margin: -4.5px 0;
    opacity: 1;
}

/* Seek bar styling - ultra thin */
.seek-bar {
    opacity: 1;
    transition: all 200ms ease;
}

.seek-bar trough {
    background: rgba(255, 255, 255, 0.06);
    border-radius: 1px;
    min-height: 2px;
}

.seek-bar:hover trough {
    background: rgba(255, 255, 255, 0.08);
    min-height: 4px;
}

.seek-bar highlight {
    background: rgba(255, 255, 255, 0.8);
    border-radius: 1px;
    min-height: 2px;
}

.seek-bar:hover highlight {
    min-height: 4px;
    background: rgba(255, 255, 255, 0.85);
}

.seek-bar slider {
    background: rgba(255, 255, 255, 1);
    border-radius: 50%;
    min-width: 0;
    min-height: 0;
    margin: 0;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
    transition: all 150ms ease;
    opacity: 0;
}

.seek-bar:hover {
    min-height: 4px;
}

.seek-bar:hover slider {
    min-width: 10px;
    min-height: 10px;
    margin: -4px 0;
    opacity: 1;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
}

/* Time labels - readable typography */
.player-controls .dim-label {
    font-size: 12px;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.65);
    letter-spacing: 0.3px;
    font-family:
        -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto,
        sans-serif;
}

.player-controls label.numeric {
    color: rgba(255, 255, 255, 0.8);
    font-weight: 500;
    font-size: 13px;
    font-variant-numeric: tabular-nums;
}

/* Flat buttons in controls - ultra minimal */
.player-controls button.flat {
    min-width: 28px;
    min-height: 28px;
    padding: 4px;
    margin: 0 1px;
    color: rgba(255, 255, 255, 0.7);
    background: transparent;
    border: none;
    box-shadow: none;
    border-radius: 6px;
    transition: all 120ms ease;
    opacity: 0.8;
}

.player-controls button.flat:hover {
    background: rgba(255, 255, 255, 0.05);
    color: rgba(255, 255, 255, 0.9);
    opacity: 1;
}

.player-controls button.flat:active {
    transform: scale(0.98);
    background: rgba(255, 255, 255, 0.1);
}

/* Play/pause button container - enforces square aspect ratio */
.play-pause-container {
    width: 36px !important;
    height: 36px !important;
    min-width: 36px !important;
    min-height: 36px !important;
    max-width: 36px !important;
    max-height: 36px !important;
    padding: 0 !important;
    margin: 0 !important;
}

/* Play/pause button - sleek and minimal */
.play-pause-button {
    width: 36px !important;
    height: 36px !important;
    min-width: 36px !important;
    min-height: 36px !important;
    max-width: 36px !important;
    max-height: 36px !important;
    border-radius: 50% !important;
    padding: 0 !important;
    margin: 0 !important;
    background: rgba(255, 255, 255, 0.08);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    border: none;
    transition: all 150ms ease;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
    color: rgba(255, 255, 255, 0.9);
}

.play-pause-button:hover {
    background: rgba(255, 255, 255, 0.12);
    transform: scale(1.05);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
    color: rgba(255, 255, 255, 0.95);
}

.play-pause-button:active {
    transform: scale(0.98);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
    background: rgba(255, 255, 255, 0.06);
}

/* Ensure play/pause icon is centered and properly sized */
.play-pause-button image {
    margin: 0 !important;
    padding: 0 !important;
    min-width: 16px;
    min-height: 16px;
    max-width: 16px;
    max-height: 16px;
}

/* Other circular buttons (not play/pause) */
.player-controls button.circular:not(.play-pause-button),
button.circular:not(.play-pause-button) {
    border-radius: 50% !important;
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
    max-width: 34px !important;
    max-height: 34px !important;
    padding: 0 !important;
    background: rgba(255, 255, 255, 0.06);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    border: none;
    transition: all 150ms ease;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
    color: rgba(255, 255, 255, 0.85);
}

.player-controls button.circular:not(.play-pause-button):hover,
button.circular:not(.play-pause-button):hover {
    background: rgba(255, 255, 255, 0.1);
    transform: scale(1.05);
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
    color: rgba(255, 255, 255, 0.95);
}

.player-controls button.circular:not(.play-pause-button):active,
button.circular:not(.play-pause-button):active {
    transform: scale(0.98);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
    background: rgba(255, 255, 255, 0.05);
}

/* Ensure other circular button icons are centered */
.player-controls button.circular:not(.play-pause-button) image,
button.circular:not(.play-pause-button) image {
    margin: 0 !important;
    padding: 0 !important;
    min-width: 16px;
    min-height: 16px;
    max-width: 16px;
    max-height: 16px;
}

/* Fullscreen styling */
.fullscreen {
    background-color: black;
}

.fullscreen .video-container {
    background-color: black;
}

.fullscreen .player-controls {
    margin-bottom: 40px;
    width: 80%;
    max-width: 1200px;
}

/* Volume slider - ultra compact */
.volume-slider {
    min-height: 2px;
    transition: all 150ms ease;
}

.volume-slider trough {
    background: rgba(255, 255, 255, 0.05);
    border-radius: 1px;
    min-height: 2px;
}

.volume-slider highlight {
    background: rgba(255, 255, 255, 0.7);
    border-radius: 1px;
    min-height: 2px;
}

.volume-slider slider {
    min-width: 8px;
    min-height: 8px;
    background: rgba(255, 255, 255, 0.9);
    border-radius: 50%;
    margin: -3px 0;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
    transition: all 120ms ease;
}

.volume-slider:hover slider {
    min-width: 10px;
    min-height: 10px;
    margin: -4px 0;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);
}

/* Volume button */
volumebutton {
    opacity: 0.9;
}

volumebutton:hover {
    opacity: 1;
}

volumebutton button {
    background: transparent;
    border: none;
}

volumebutton scale {
    min-width: 100px;
}

/* OSD overlay wrapper for smooth transitions */
.osd-overlay {
    transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
}

.osd-overlay.controls-visible {
    transform: translateY(0);
    opacity: 1;
    transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);
}

.osd-overlay.controls-hidden {
    transform: translateY(8px);
    opacity: 0;
    transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);
    pointer-events: none;
}

/* Smooth fade animations for fullscreen mode */
@keyframes fadeInControls {
    from {
        opacity: 0;
        transform: translateY(12px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeOutControls {
    from {
        opacity: 1;
        transform: translateY(0);
    }
    to {
        opacity: 0;
        transform: translateY(8px);
    }
}

/* Apply fade animations in fullscreen */
.fullscreen .osd-overlay.controls-visible {
    animation: fadeInControls 250ms ease-out;
}

.fullscreen .osd-overlay.controls-hidden {
    animation: fadeOutControls 200ms ease-in;
}

/* Player controls container animations */
.player-controls.fade-in {
    animation: fadeInControls 200ms ease-out;
}

.player-controls.fade-out {
    animation: fadeOutControls 150ms ease-in;
}

/* Top controls positioning - compact */
.player-controls-top {
    padding: 8px;
}

/* Back button and close button - minimalistic round */
.player-controls-top button,
.osd-top-bar button {
    border-radius: 50% !important;
    width: 32px !important;
    height: 32px !important;
    min-width: 32px !important;
    min-height: 32px !important;
    max-width: 32px !important;
    max-height: 32px !important;
    padding: 0 !important;
    margin: 4px;
    background: rgba(20, 20, 22, 0.8);
    border: 1px solid rgba(255, 255, 255, 0.06);
    color: rgba(255, 255, 255, 0.8);
    transition: all 150ms ease;
}

.player-controls-top button:hover,
.osd-top-bar button:hover {
    background: rgba(30, 30, 32, 0.9);
    border-color: rgba(255, 255, 255, 0.1);
    color: rgba(255, 255, 255, 0.95);
    transform: scale(1.05);
}

.player-controls-top button image,
.osd-top-bar button image {
    margin: 0;
    padding: 0;
}

/* Ensure icons are visible and crisp */
.osd button image,
.player-controls button image,
.player-controls menubutton image {
    color: rgba(255, 255, 255, 0.85);
    opacity: 1;
}

.osd button:hover image,
.player-controls button:hover image,
.player-controls menubutton:hover image {
    color: rgba(255, 255, 255, 0.95);
    opacity: 1;
}

/* Remove default button backgrounds in OSD context */
.osd button.flat {
    background: transparent;
    border: none;
    box-shadow: none;
}

/* Menu buttons styling - compact */
.player-controls menubutton {
    min-width: 32px;
    min-height: 32px;
    padding: 4px;
    margin: 0 1px;
    border-radius: 6px;
    transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1);
}

.player-controls menubutton button {
    background: transparent;
    border: none;
    box-shadow: none;
    color: rgba(255, 255, 255, 0.75);
    min-width: 32px;
    min-height: 32px;
    padding: 4px;
    border-radius: 6px;
}

.player-controls menubutton:hover button {
    background: rgba(255, 255, 255, 0.06);
    color: rgba(255, 255, 255, 0.9);
}

.player-controls menubutton popover {
    background: rgba(24, 24, 26, 0.95);
    border-radius: 10px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4);
}

/* Separator styling */
.player-controls separator {
    background: rgba(255, 255, 255, 0.1);
    min-width: 1px;
}

/* Loading overlay */
.loading-overlay {
    background: rgba(0, 0, 0, 0.85);
    border-radius: 12px;
    padding: 40px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.5);
}

.loading-overlay spinner {
    color: white;
    min-width: 48px;
    min-height: 48px;
}

/* Error overlay */
.error-overlay {
    background: rgba(0, 0, 0, 0.9);
    border-radius: 12px;
    padding: 40px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.5);
    max-width: 500px;
}

/* Auto-play overlay */
.auto-play-overlay {
    background-color: rgba(0, 0, 0, 0.9);
    border-radius: 10px;
    padding: 30px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4);
}

/* Picture-in-picture container */
.pip-container {
    border: 2px solid rgba(255, 255, 255, 0.2);
    border-radius: 8px;
    overflow: hidden;
    background-color: black;
    min-width: 320px;
    min-height: 180px;
}

/* Force all circular buttons to maintain aspect ratio */
button.circular,
.circular,
.player-controls .circular {
    aspect-ratio: 1 / 1 !important;
    -gtk-icon-size: 16px;
}

/* Specific override for GTK button internals */
button.circular > *,
.circular > * {
    min-width: inherit;
    min-height: inherit;
    max-width: inherit;
    max-height: inherit;
}
