/* ==================================================
   Icecast Radio Player — Liza Studio Design System
   ================================================== */

.icecast-player {
    --lsw-ink:          #0F1218;
    --lsw-surface:      rgba(255,255,255,.045);
    --lsw-surface-2:    rgba(255,255,255,.08);
    --lsw-line:         rgba(255,255,255,.09);
    --lsw-text:         #F2F5F7;
    --lsw-text-sub:     rgba(242,245,247,.65);
    --lsw-text-faint:   rgba(242,245,247,.4);
    --lsw-accent:       #1DB954;
    --lsw-accent-2:     #1ED760;
    --lsw-on-accent:    #06130A;
    --lsw-radius:       20px;
    --lsw-radius-sm:    12px;
    --lsw-radius-pill:  999px;
    --lsw-transition:   .18s ease;

    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
    background-color: var(--lsw-ink);
    background-image: radial-gradient(120% 100% at 50% 0%, rgba(255,255,255,.06), transparent 55%);
    border: 1px solid var(--lsw-line);
    border-radius: var(--lsw-radius);
    box-shadow: 0 24px 48px -24px rgba(0,0,0,.55);
    padding: 24px;
    color: var(--lsw-text);
    position: relative;
    overflow: hidden;
    max-width: 100%;
}

/* -- Station info -- */
.icecast-player .station-info {
    text-align: center;
    margin-bottom: 20px;
}

.icecast-player .station-name {
    font-size: 19px;
    font-weight: 800;
    letter-spacing: -0.02em;
    margin: 0 0 6px;
    color: var(--lsw-text);
}

.icecast-player .station-description {
    font-size: 13px;
    color: var(--lsw-text-sub);
    margin: 0;
    line-height: 1.5;
}

/* -- Play button -- */
.icecast-player .player-controls {
    display: flex;
    justify-content: center;
    margin-bottom: 20px;
}

.icecast-player .play-button {
    -webkit-appearance: none;
    appearance: none;
    background: var(--lsw-accent);
    border: none;
    color: var(--lsw-on-accent);
    font-size: 28px;
    cursor: pointer;
    padding: 0;
    width: 2.5em;
    height: 2.5em;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background var(--lsw-transition), transform var(--lsw-transition), box-shadow var(--lsw-transition);
    box-shadow: 0 12px 28px -8px color-mix(in srgb, var(--lsw-accent) 70%, transparent);
}

.icecast-player .play-button svg {
    width: 1em;
    height: 1em;
    fill: currentColor;
    display: block;
}

.icecast-player .play-button:hover {
    background: var(--lsw-accent-2);
    transform: scale(1.05);
}

.icecast-player .play-button:active {
    transform: scale(0.97);
}

/* Icon swap driven by .is-playing on the player */
.icecast-player .icon-pause,
.icecast-player.is-playing .icon-play {
    display: none;
}

.icecast-player.is-playing .icon-pause {
    display: block;
}

/* -- Time display -- */
.icecast-player .progress-container {
    margin-bottom: 18px;
}

.icecast-player .time-display {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 11px;
    color: var(--lsw-text-faint);
    font-variant-numeric: tabular-nums;
    letter-spacing: .04em;
}

.icecast-player .current-time,
.icecast-player .duration {
    background: var(--lsw-surface);
    border: 1px solid var(--lsw-line);
    padding: 4px 10px;
    border-radius: var(--lsw-radius-pill);
}

/* The duration pill reads "LIVE" while streaming */
.icecast-player.is-playing .duration {
    color: var(--lsw-accent);
    border-color: color-mix(in srgb, var(--lsw-accent) 40%, transparent);
    font-weight: 700;
}

/* -- Additional controls -- */
.icecast-player .additional-controls {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 12px;
    margin-bottom: 18px;
    flex-wrap: wrap;
}

.icecast-player .control-button {
    -webkit-appearance: none;
    appearance: none;
    background: transparent;
    border: none;
    color: var(--lsw-text-sub);
    font-size: 18px;
    cursor: pointer;
    padding: 0;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: color var(--lsw-transition), background var(--lsw-transition), transform var(--lsw-transition);
}

.icecast-player .control-button svg {
    width: 1em;
    height: 1em;
    fill: currentColor;
    display: block;
}

.icecast-player .control-button:hover {
    color: var(--lsw-text);
    background: var(--lsw-surface);
    transform: scale(1.06);
}

.icecast-player .control-button:active {
    transform: scale(0.96);
}

/* -- Volume -- */
.icecast-player .volume-control {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--lsw-surface);
    border: 1px solid var(--lsw-line);
    padding: 7px 12px;
    border-radius: var(--lsw-radius-pill);
}

.icecast-player .volume-icon {
    display: flex;
    color: var(--lsw-text-sub);
}

.icecast-player .volume-icon svg {
    width: 15px;
    height: 15px;
    fill: currentColor;
}

.icecast-player .volume-slider {
    -webkit-appearance: none;
    appearance: none;
    width: 80px;
    height: 4px;
    border-radius: var(--lsw-radius-pill);
    background: var(--lsw-surface-2);
    outline: none;
    cursor: pointer;
}

.icecast-player .volume-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--lsw-accent);
    cursor: pointer;
}

.icecast-player .volume-slider::-moz-range-thumb {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--lsw-accent);
    cursor: pointer;
    border: none;
}

/* -- Track metadata -- */
.icecast-player .track-metadata {
    text-align: center;
    padding: 14px 16px;
    background: var(--lsw-surface);
    border: 1px solid var(--lsw-line);
    border-radius: var(--lsw-radius-sm);
}

.icecast-player .current-track {
    font-size: 14px;
    font-weight: 600;
    margin-bottom: 4px;
    color: var(--lsw-text);
}

.icecast-player .stream-status {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: var(--lsw-text-sub);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
}

.icecast-player .stream-status::before {
    content: '';
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--lsw-text-faint);
    flex-shrink: 0;
}

.icecast-player.is-playing .stream-status {
    color: var(--lsw-accent);
}

.icecast-player.is-playing .stream-status::before {
    background: var(--lsw-accent);
    animation: lsw-live-pulse 2s ease-in-out infinite;
}

@keyframes lsw-live-pulse {
    0%, 100% { opacity: 1; }
    50%      { opacity: .35; }
}

/* -- Error -- */
.icecast-error {
    background: rgba(255,61,61,.12);
    border: 1px solid rgba(255,61,61,.25);
    color: #FF6B6B;
    padding: 16px 20px;
    border-radius: 12px;
    text-align: center;
    margin: 20px 0;
    font-size: 13px;
}

.icecast-error p {
    margin: 0;
}

/* -- Premium notice -- */
.spotify-widget-premium-notice {
    text-align: center;
    padding: 28px 20px;
    background-color: #0F1218;
    background-image: radial-gradient(120% 100% at 50% 0%, rgba(255,255,255,.06), transparent 55%);
    border-radius: 20px;
    border: 1px solid rgba(255,255,255,.09);
    color: #F2F5F7;
}

.spotify-widget-premium-notice h3 {
    margin: 0 0 8px;
    color: #1DB954;
    font-size: 16px;
    font-weight: 700;
}

.spotify-widget-premium-notice p {
    margin: 0 0 16px;
    color: rgba(242,245,247,.65);
    font-size: 13px;
    line-height: 1.5;
}

.spotify-widget-premium-notice .button {
    background: #1DB954;
    color: #06130A;
    border: none;
    padding: 10px 22px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
    display: inline-block;
    transition: background .18s ease, transform .18s ease;
}

.spotify-widget-premium-notice .button:hover {
    background: #1ED760;
    color: #06130A;
    transform: scale(1.03);
}

/* -- Focus states -- */
.icecast-player .play-button:focus-visible,
.icecast-player .control-button:focus-visible,
.icecast-player .volume-slider:focus-visible {
    outline: 2px solid var(--lsw-accent);
    outline-offset: 2px;
}

/* -- Responsive -- */
@media (max-width: 480px) {
    .icecast-player {
        padding: 18px;
    }

    .icecast-player .station-name {
        font-size: 16px;
    }

    .icecast-player .play-button {
        font-size: 24px;
    }

    .icecast-player .volume-slider {
        width: 56px;
    }
}

/* -- Reduced motion -- */
@media (prefers-reduced-motion: reduce) {
    .icecast-player,
    .icecast-player * {
        transition: none !important;
        animation: none !important;
    }
}

/* -- High contrast -- */
@media (prefers-contrast: high) {
    .icecast-player {
        border: 2px solid rgba(255,255,255,.5);
    }

    .icecast-player .play-button {
        border: 2px solid #ffffff;
    }
}
