/* ─────────────────────────────────────────────────────────────────
   KarmaFlex Playlist — Floating Player Styles  v1.0.0
   Accent color is set dynamically via --kfpl-accent (player.js)
   ───────────────────────────────────────────────────────────────── */

:root {
    --kfpl-accent: #6c47ff;
    --kfpl-accent-hover: #5535e0;
    --kfpl-bg: #14141f;
    --kfpl-bg-elevated: #1c1c2a;
    --kfpl-text: #f4f4fa;
    --kfpl-text-muted: #9999ab;
    --kfpl-border: rgba(255,255,255,.08);
    --kfpl-radius: 14px;
    --kfpl-shadow: 0 -4px 24px rgba(0,0,0,.25), 0 -1px 0 rgba(255,255,255,.04);
}

/* ── Floating bar shell ──────────────────────────────────────────── */

.kfpl-player {
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: 999999;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    box-shadow: var(--kfpl-shadow);
    display: flex;
    flex-direction: column-reverse; /* .kfpl-bar comes first in DOM, panel renders above it visually */
}

.kfpl-bar {
    display: flex;
    align-items: center;
    gap: 14px;
    background: var(--kfpl-bg);
    color: var(--kfpl-text);
    padding: 10px 16px;
    height: 64px;
    box-sizing: border-box;
}

.kfpl-btn {
    background: transparent;
    border: none;
    color: var(--kfpl-text-muted);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 6px;
    border-radius: 50%;
    transition: color .15s, background .15s, transform .1s;
    flex-shrink: 0;
}
.kfpl-btn:hover { color: var(--kfpl-text); background: rgba(255,255,255,.06); }
.kfpl-btn:active { transform: scale(.92); }

.kfpl-btn-play {
    background: var(--kfpl-accent);
    color: #fff;
    width: 38px;
    height: 38px;
}
.kfpl-btn-play:hover { background: var(--kfpl-accent-hover); color: #fff; }

/* ── Now playing block ───────────────────────────────────────────── */

.kfpl-now-playing {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
    flex: 1 1 180px;
    max-width: 260px;
}

.kfpl-cover {
    width: 44px;
    height: 44px;
    border-radius: 8px;
    object-fit: cover;
    background: var(--kfpl-bg-elevated);
    flex-shrink: 0;
}

.kfpl-track-meta {
    display: flex;
    flex-direction: column;
    min-width: 0;
    overflow: hidden;
}
.kfpl-track-title {
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.kfpl-track-artist {
    font-size: 12px;
    color: var(--kfpl-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ── Transport controls ──────────────────────────────────────────── */

.kfpl-controls {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
}

/* ── Progress / seek ─────────────────────────────────────────────── */

.kfpl-progress-wrap {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 2 1 200px;
    min-width: 0;
}

.kfpl-time {
    font-size: 11px;
    color: var(--kfpl-text-muted);
    flex-shrink: 0;
    min-width: 32px;
    text-align: center;
    font-variant-numeric: tabular-nums;
}

.kfpl-seek,
.kfpl-volume {
    -webkit-appearance: none;
    appearance: none;
    height: 4px;
    background: rgba(255,255,255,.15);
    border-radius: 999px;
    outline: none;
    cursor: pointer;
}
.kfpl-seek { flex: 1; min-width: 60px; }
.kfpl-volume { width: 80px; }

.kfpl-seek::-webkit-slider-thumb,
.kfpl-volume::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 12px; height: 12px;
    border-radius: 50%;
    background: var(--kfpl-accent);
    cursor: pointer;
}
.kfpl-seek::-moz-range-thumb,
.kfpl-volume::-moz-range-thumb {
    width: 12px; height: 12px;
    border: none;
    border-radius: 50%;
    background: var(--kfpl-accent);
    cursor: pointer;
}

/* ── Volume ───────────────────────────────────────────────────────── */

.kfpl-volume-wrap {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

@media (max-width: 720px) {
    .kfpl-volume-wrap { display: none; }
}

@media (max-width: 560px) {
    .kfpl-progress-wrap .kfpl-time { display: none; }
    .kfpl-now-playing { max-width: 140px; }
}

/* ── Expandable playlist panel ────────────────────────────────────── */

.kfpl-playlist-panel {
    background: var(--kfpl-bg-elevated);
    border-top: 1px solid var(--kfpl-border);
    max-height: 360px;
    overflow-y: auto;
    color: var(--kfpl-text);
}

.kfpl-playlist-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 16px 10px;
    position: sticky;
    top: 0;
    background: var(--kfpl-bg-elevated);
    z-index: 1;
}
.kfpl-playlist-header h3 { margin: 0; font-size: 14px; font-weight: 700; }

.kfpl-search-input {
    background: rgba(255,255,255,.06);
    border: 1px solid var(--kfpl-border);
    border-radius: 8px;
    color: var(--kfpl-text);
    padding: 7px 12px;
    font-size: 12px;
    width: 200px;
    outline: none;
}
.kfpl-search-input::placeholder { color: var(--kfpl-text-muted); }
.kfpl-search-input:focus { border-color: var(--kfpl-accent); }

.kfpl-track-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 9px 16px;
    cursor: pointer;
    transition: background .12s;
    border-radius: 8px;
    margin: 0 8px;
}
.kfpl-track-row:hover { background: rgba(255,255,255,.05); }
.kfpl-track-row.kfpl-active {
    background: rgba(108, 71, 255, .16);
}
.kfpl-track-row.kfpl-active .kfpl-track-row-title { color: var(--kfpl-accent); }
.kfpl-track-row.kfpl-active .kfpl-track-row-position { color: var(--kfpl-accent); }

.kfpl-track-row-position {
    width: 20px;
    flex-shrink: 0;
    text-align: center;
    font-size: 12px;
    font-weight: 600;
    color: var(--kfpl-text-muted);
    font-variant-numeric: tabular-nums;
}

.kfpl-track-row-cover {
    width: 40px; height: 40px;
    border-radius: 6px;
    object-fit: cover;
    flex-shrink: 0;
    background: var(--kfpl-bg);
}

.kfpl-track-row-meta {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
    overflow: hidden;
}
.kfpl-track-row-title {
    font-size: 13px; font-weight: 600;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.kfpl-track-row-artist {
    font-size: 12px; color: var(--kfpl-text-muted);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

.kfpl-track-row-link {
    color: var(--kfpl-text-muted);
    flex-shrink: 0;
    display: inline-flex;
    padding: 6px;
    border-radius: 50%;
}
.kfpl-track-row-link:hover { color: var(--kfpl-text); background: rgba(255,255,255,.08); }

.kfpl-track-row-remove {
    background: transparent;
    border: none;
    color: var(--kfpl-text-muted);
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 6px;
    border-radius: 50%;
    cursor: pointer;
    opacity: .6;
    transition: opacity .15s, color .15s, background .15s;
}
.kfpl-track-row:hover .kfpl-track-row-remove { opacity: 1; }
.kfpl-track-row-remove:hover { color: #ff5c5c; background: rgba(255,92,92,.12); }

.kfpl-track-row-removing {
    opacity: 0;
    transform: translateX(8px);
    transition: opacity .16s, transform .16s;
    pointer-events: none;
}

.kfpl-empty-msg {
    padding: 30px 16px;
    text-align: center;
    color: var(--kfpl-text-muted);
    font-size: 13px;
    line-height: 1.6;
}

.kfpl-restore-link {
    background: none;
    border: none;
    color: var(--kfpl-accent);
    text-decoration: underline;
    cursor: pointer;
    font-size: 13px;
    padding: 0;
    display: block;
    margin: 8px auto 0;
}
.kfpl-restore-link:hover { opacity: .8; }

/* ── Floating launcher (shown when player is closed) ──────────────── */

.kfpl-launcher {
    position: fixed;
    bottom: 20px;
    right: 20px;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: var(--kfpl-accent);
    color: #fff;
    border: none;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow: 0 4px 16px rgba(0,0,0,.25);
    z-index: 999998;
    transition: transform .15s, background .15s;
}
.kfpl-launcher:hover { background: var(--kfpl-accent-hover); transform: scale(1.06); }
.kfpl-launcher:active { transform: scale(.94); }

/* ── Body padding so the fixed bar never covers footer content ───── */

body.kfpl-has-player {
    padding-bottom: 64px;
}

/* ── [kfpl_playlist] inline embed ─────────────────────────────────── */

.kfpl-embed {
    border: 1px solid rgba(0,0,0,.08);
    border-radius: var(--kfpl-radius);
    overflow: hidden;
    margin: 24px 0;
}
.kfpl-embed-header {
    padding: 16px 20px;
    border-bottom: 1px solid rgba(0,0,0,.08);
}
.kfpl-embed-title { margin: 0; font-size: 18px; font-weight: 700; }

.kfpl-embed-loading {
    padding: 30px 20px;
    text-align: center;
    color: #888;
    font-size: 13px;
}

.kfpl-embed-row {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 20px;
    border-bottom: 1px solid rgba(0,0,0,.05);
    transition: background .15s;
}
.kfpl-embed-row:hover { background: rgba(0,0,0,.025); }
.kfpl-embed-row:last-child { border-bottom: none; }

.kfpl-embed-cover {
    width: 50px; height: 50px;
    border-radius: 8px;
    object-fit: cover;
    flex-shrink: 0;
}

.kfpl-embed-meta {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}
.kfpl-embed-track-title { font-size: 14px; font-weight: 600; }
.kfpl-embed-track-artist { font-size: 13px; color: #888; }

.kfpl-embed-play-btn {
    width: 38px; height: 38px;
    border-radius: 50%;
    border: none;
    background: var(--kfpl-accent);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
    transition: background .15s, transform .1s;
}
.kfpl-embed-play-btn:hover { background: var(--kfpl-accent-hover); }
.kfpl-embed-play-btn:active { transform: scale(.92); }

/* ── Sidebar auto-injected wrapper ─────────────────────────────────
   Minimal styling only — the .kfpl-embed rules above (and the
   surrounding theme's own .widget spacing) handle the rest, since
   this wrapper is deliberately generic so it doesn't fight with
   whatever sidebar styling the active theme already applies. ── */

.kfpl-sidebar-injected {
    margin-bottom: 1.5em;
}
.kfpl-sidebar-injected .kfpl-embed {
    margin: 0;
}
