/* ============================================================
   VoiceFlow TTS – Player v2
   Isolated, theme-proof styling for the audio player
   ============================================================ */

.vf-player-wrap {
    margin: 1.5em 0 !important;
    all: initial;
    display: block;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

.vf-player-wrap * {
    box-sizing: border-box;
}

.vf-player {
    --vfp-bg:      #ffffff;
    --vfp-border:  #e2e4f0;
    --vfp-text:    #1e1b3a;
    --vfp-sub:     #6b7280;
    --vfp-accent:  #6366f1;
    --vfp-ahover:  #4f46e5;
    --vfp-alight:  #eef2ff;
    --vfp-track:   #e5e7eb;
    --vfp-shadow:  0 2px 8px rgba(99,102,241,.08), 0 8px 24px rgba(31,27,77,.06);
    --vfp-r:       16px;

    all: revert;
    box-sizing: border-box;
    display: grid !important;
    grid-template-areas: "meta play" "ctrl play" !important;
    grid-template-columns: 1fr auto !important;
    column-gap: 18px !important;
    row-gap: 10px !important;
    align-items: center !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 20px 22px !important;
    background: var(--vfp-bg) !important;
    border: 1px solid var(--vfp-border) !important;
    border-radius: var(--vfp-r) !important;
    box-shadow: var(--vfp-shadow) !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif !important;
    font-size: 14px !important;
    line-height: normal !important;
    color: var(--vfp-text) !important;
    position: relative !important;
    overflow: hidden !important;
    direction: rtl !important;
    list-style: none !important;
}

.vf-player::before {
    content: '' !important;
    position: absolute !important;
    top: 0 !important; left: 0 !important; right: 0 !important;
    height: 4px !important;
    background: linear-gradient(90deg, var(--vfp-accent), #a78bfa) !important;
    opacity: 0 !important;
    transition: opacity .3s ease !important;
}
.vf-player.is-playing::before { opacity: 1 !important; }

/* dark theme variant */
.vf-player.vf-dark {
    --vfp-bg:#1a1830; --vfp-border:#322d57; --vfp-text:#f1f0fb;
    --vfp-sub:#a5a0c9; --vfp-accent:#a78bfa; --vfp-ahover:#c4b5fd;
    --vfp-alight:#322d57; --vfp-track:#322d57;
    --vfp-shadow:0 2px 8px rgba(0,0,0,.3), 0 8px 24px rgba(0,0,0,.2);
}

/* ── Play button ─────────────────────────────────────────── */
.vf-player .vf-play-btn {
    all: unset !important;
    grid-area: play !important;
    box-sizing: border-box !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 52px !important;
    height: 52px !important;
    min-width: 52px !important;
    border-radius: 50% !important;
    background: var(--vfp-accent) !important;
    color: #ffffff !important;
    cursor: pointer !important;
    flex-shrink: 0 !important;
    transition: background .15s ease, transform .15s ease, box-shadow .15s ease !important;
    box-shadow: 0 3px 10px rgba(99,102,241,.4) !important;
}
.vf-player .vf-play-btn:hover {
    background: var(--vfp-ahover) !important;
    transform: scale(1.06) !important;
    box-shadow: 0 5px 16px rgba(99,102,241,.5) !important;
}
.vf-player .vf-play-btn:active { transform: scale(.96) !important; }
.vf-player .vf-play-btn:focus-visible { outline: 3px solid var(--vfp-accent) !important; outline-offset: 3px !important; }

.vf-player .vf-play-btn svg {
    width: 24px !important;
    height: 24px !important;
    fill: #ffffff !important;
    stroke: none !important;
    pointer-events: none !important;
}

/* Icon visibility controlled by JS via .is-playing / .is-loading state classes */
.vf-player .vf-icon-play  { display: block !important; }
.vf-player .vf-icon-pause { display: none !important; }
.vf-player.is-playing .vf-icon-play  { display: none !important; }
.vf-player.is-playing .vf-icon-pause { display: block !important; }

@keyframes vfp-pulse {
    0%,100% { box-shadow: 0 3px 10px rgba(99,102,241,.4); }
    50%     { box-shadow: 0 3px 20px rgba(99,102,241,.65); }
}
.vf-player.is-playing .vf-play-btn { animation: vfp-pulse 2s ease-in-out infinite !important; }

/* Loading spinner inside play button */
.vf-player .vf-spinner-ring {
    display: none !important;
    width: 24px !important;
    height: 24px !important;
    border: 2.5px solid rgba(255,255,255,.35) !important;
    border-top-color: #fff !important;
    border-radius: 50% !important;
}
@keyframes vfp-spin { to { transform: rotate(360deg); } }
.vf-player.is-loading .vf-spinner-ring { display: block !important; animation: vfp-spin .7s linear infinite !important; }
.vf-player.is-loading .vf-icon-play,
.vf-player.is-loading .vf-icon-pause { display: none !important; }
.vf-player.is-loading .vf-play-btn { pointer-events: none !important; }

/* ── Meta (badge + title) ────────────────────────────────── */
.vf-player .vf-meta {
    grid-area: meta !important;
    min-width: 0 !important;
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    margin: 0 !important;
    padding: 0 !important;
}

.vf-player .vf-badge {
    all: unset !important;
    box-sizing: border-box !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 4px !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    letter-spacing: .04em !important;
    text-transform: uppercase !important;
    color: var(--vfp-accent) !important;
    background: var(--vfp-alight) !important;
    padding: 4px 9px !important;
    border-radius: 20px !important;
    flex-shrink: 0 !important;
    white-space: nowrap !important;
}
.vf-player .vf-badge svg {
    width: 12px !important; height: 12px !important;
    fill: currentColor !important; stroke: none !important;
}

.vf-player .vf-title {
    font-size: 14px !important;
    font-weight: 600 !important;
    color: var(--vfp-text) !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: right !important;
    direction: rtl !important;
    unicode-bidi: plaintext !important;
}

/* ── Controls row ────────────────────────────────────────── */
.vf-player .vf-controls {
    grid-area: ctrl !important;
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    direction: ltr !important;
}

/* ── Seek ────────────────────────────────────────────────── */
.vf-player .vf-seek-group {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    flex: 1 !important;
    min-width: 0 !important;
}

.vf-player .vf-time {
    font-size: 12px !important;
    color: var(--vfp-sub) !important;
    font-variant-numeric: tabular-nums !important;
    white-space: nowrap !important;
    min-width: 36px !important;
    margin: 0 !important;
    font-weight: 500 !important;
}
.vf-player .vf-current { text-align: right !important; }
.vf-player .vf-duration { text-align: left !important; }

.vf-player .vf-seek {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    flex: 1 !important;
    height: 5px !important;
    min-width: 60px !important;
    border-radius: 3px !important;
    background: var(--vfp-track) !important;
    background-image: linear-gradient(var(--vfp-accent), var(--vfp-accent)) !important;
    background-size: 0% 100% !important;
    background-repeat: no-repeat !important;
    outline: none !important;
    border: none !important;
    margin: 0 !important;
    padding: 0 !important;
    cursor: pointer !important;
    transition: height .15s ease !important;
}
.vf-player .vf-seek:hover,
.vf-player .vf-seek:focus { height: 7px !important; }
.vf-player .vf-seek:focus-visible { outline: 2px solid var(--vfp-accent) !important; outline-offset: 3px !important; }

.vf-player .vf-seek::-webkit-slider-thumb {
    -webkit-appearance: none !important;
    appearance: none !important;
    width: 16px !important;
    height: 16px !important;
    border-radius: 50% !important;
    background: var(--vfp-accent) !important;
    border: 2px solid #fff !important;
    cursor: pointer !important;
    box-shadow: 0 1px 5px rgba(0,0,0,.25) !important;
    transition: transform .15s ease !important;
}
.vf-player .vf-seek::-moz-range-thumb {
    width: 16px !important;
    height: 16px !important;
    border-radius: 50% !important;
    background: var(--vfp-accent) !important;
    border: 2px solid #fff !important;
    cursor: pointer !important;
    box-shadow: 0 1px 5px rgba(0,0,0,.25) !important;
}
.vf-player .vf-seek::-moz-range-track {
    background: transparent !important;
    border: none !important;
    height: 5px !important;
}
.vf-player .vf-seek:hover::-webkit-slider-thumb,
.vf-player .vf-seek:focus::-webkit-slider-thumb { transform: scale(1.2) !important; }

/* ── Secondary control buttons (mute/speed) ─────────────────── */
.vf-player .vf-ctrl-btn {
    all: unset !important;
    box-sizing: border-box !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 34px !important;
    height: 34px !important;
    border-radius: 9px !important;
    background: transparent !important;
    color: var(--vfp-sub) !important;
    cursor: pointer !important;
    transition: background .15s ease, color .15s ease !important;
    flex-shrink: 0 !important;
}
.vf-player .vf-ctrl-btn:hover { background: var(--vfp-alight) !important; color: var(--vfp-accent) !important; }
.vf-player .vf-ctrl-btn:focus-visible { outline: 2px solid var(--vfp-accent) !important; outline-offset: 2px !important; }

.vf-player .vf-ctrl-btn svg {
    width: 19px !important; height: 19px !important;
    fill: currentColor !important; stroke: none !important;
    display: block !important;
}
.vf-player .vf-mute-btn[aria-pressed="true"] { color: var(--vfp-accent) !important; background: var(--vfp-alight) !important; }
.vf-player .vf-icon-mute { display: none !important; }
.vf-player .vf-mute-btn[aria-pressed="true"] .vf-icon-vol  { display: none !important; }
.vf-player .vf-mute-btn[aria-pressed="true"] .vf-icon-mute { display: block !important; }

/* ── Speed control ───────────────────────────────────────── */
.vf-player .vf-speed-wrap { position: relative !important; }

.vf-player .vf-speed-btn {
    width: auto !important;
    padding: 0 12px !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    height: 30px !important;
    font-family: inherit !important;
}
.vf-player .vf-speed-btn[aria-expanded="true"] { background: var(--vfp-alight) !important; color: var(--vfp-accent) !important; }

.vf-player .vf-speed-menu {
    all: unset !important;
    box-sizing: border-box !important;
    position: absolute !important;
    bottom: calc(100% + 8px) !important;
    left: 50% !important;
    transform: translateX(-50%) !important;
    background: var(--vfp-bg) !important;
    border: 1px solid var(--vfp-border) !important;
    border-radius: 10px !important;
    box-shadow: 0 6px 24px rgba(31,27,77,.15) !important;
    list-style: none !important;
    margin: 0 !important;
    padding: 5px !important;
    z-index: 999 !important;
    min-width: 84px !important;
    display: block !important;
}
.vf-player .vf-speed-menu[hidden] { display: none !important; }

.vf-player .vf-speed-menu li {
    all: unset !important;
    box-sizing: border-box !important;
    display: block !important;
    padding: 8px 14px !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    cursor: pointer !important;
    border-radius: 6px !important;
    text-align: center !important;
    color: var(--vfp-sub) !important;
    transition: background .1s ease, color .1s ease !important;
}
.vf-player .vf-speed-menu li:hover { background: var(--vfp-alight) !important; color: var(--vfp-accent) !important; }
.vf-player .vf-speed-menu li[aria-selected="true"] { color: var(--vfp-accent) !important; font-weight: 700 !important; background: var(--vfp-alight) !important; }

/* ── Screen-reader only ──────────────────────────────────── */
.vf-sr-only {
    position: absolute !important;
    width: 1px !important; height: 1px !important;
    padding: 0 !important; margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0,0,0,0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 540px) {
    .vf-player {
        grid-template-areas: "meta meta" "ctrl play" !important;
        padding: 16px 18px !important;
        column-gap: 14px !important;
    }
    .vf-player .vf-speed-wrap { display: none !important; }
}
