/**
 * Dub Silence — Discographie | Frontend CSS
 * ============================================
 * Variables dynamiques injectées dans le <head> par class-dsd-assets.php :
 *   --dsd-accent        : couleur d'accent (boutons, surlignages)
 *   --dsd-bg            : fond général du bloc
 *   --dsd-card-bg       : fond des cartes album (avec opacité)
 *   --dsd-text          : couleur du texte principal
 *   --dsd-player-bg     : fond du player sticky
 *   --dsd-card-radius   : arrondi des coins
 *   --dsd-grid-cols     : nombre de colonnes de la grille
 *   --dsd-container-max : largeur max du conteneur
 *   --dsd-container-pad : padding du conteneur
 *
 * Les règles de typographie (.dsd-track-name, .dsd-lyrics-body, .dsd-album-title)
 * sont aussi injectées dynamiquement avec !important pour écraser le thème.
 *
 * LINE_H dans frontend.js (23px) DOIT correspondre à .dsd-lyrics-item { height: 23px }
 */
/* ================================================
   DUB SILENCE — DISCOGRAPHIE  v1.1
   Variables injectées par PHP depuis les options WP
   ================================================ */

/* ── Wrapper ─────────────────────────────────── */
.dsd-discographie-wrapper {
    width: 100%;
    max-width: var(--dsd-wrapper-max, 100%) !important;
    margin-left: auto !important;
    margin-right: auto !important;
    padding: var(--dsd-container-pad) !important;
    padding-bottom: calc(var(--dsd-player-height) + 40px) !important;
    background: var(--dsd-bg) !important;
    color: var(--dsd-text) !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    box-sizing: border-box;
}

/* ── Grille albums ───────────────────────────── */
.dsd-albums-grid {
    display: grid;
    grid-template-columns: repeat(var(--dsd-grid-cols), 1fr) !important;
    gap: 28px;
    max-width: var(--dsd-container-max) !important;
    margin: 0 auto;
    align-items: start; /* chaque carte garde sa propre hauteur — les voisines ne s'étirent pas */
}

/* ── Carte album ─────────────────────────────── */
.dsd-album-card {
    background: var(--dsd-card-bg) !important;
    border-radius: var(--dsd-card-radius) !important;
    overflow: hidden;
    transition: transform .25s ease, box-shadow .25s ease;
    display: flex;
    flex-direction: column;
}
.dsd-album-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 32px rgba(0,0,0,.45);
}

/* Pochette */
.dsd-album-cover {
    position: relative;
    width: 100%;
    background: #1a1a1a;
    overflow: hidden;
    flex-shrink: 0;
}
/* Pochette toujours carrée */
.dsd-album-cover {
    padding-top: 100%;
    height: auto;
}
/* Taille des cartes — scale injecté dynamiquement dans le <head> via assets.php */
.dsd-album-cover img {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform .35s ease;
}
.dsd-album-card:hover .dsd-album-cover img { transform: scale(1.06); }

.dsd-no-cover {
    position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    color: #333;
}

/* Overlay play album */
.dsd-album-overlay {
    position: absolute; inset: 0;
    background: rgba(0,0,0,.65);
    display: flex; align-items: center; justify-content: center;
    opacity: 0;
    transition: opacity .25s ease;
}
.dsd-album-card:hover .dsd-album-overlay { opacity: 1; }

.dsd-play-album {
    width: 72px; height: 72px;
    border-radius: 50%;
    background: var(--dsd-accent) !important;
    border: none; cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    color: #000;
    transition: transform .2s, background .2s;
}
.dsd-play-album:hover { transform: scale(1.12); background: #fff; }

/* Infos album */
.dsd-album-info {
    padding: 16px 18px 12px;
}
.dsd-album-title {
    margin: 0 0 6px;
    font-size: DSD_ALBUM_TITLE_FONT;
    font-weight: 700;
    color: var(--dsd-text) !important;
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.dsd-album-badge {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    background: var(--dsd-accent) !important;
    color: #000;
    padding: 2px 6px;
    border-radius: 4px;
}
.dsd-album-meta {
    display: flex; gap: 10px; align-items: center;
    font-size: 13px; color: #888;
}
.dsd-album-artist { color: var(--dsd-accent) !important; font-weight: 600; }
.dsd-album-year::before { content: '·'; margin-right: 10px; color: #555; }

/* ── Accordéon tracklist ─────────────────────── */
.dsd-tracklist-wrapper {
    flex: 1;
    border-top: 1px solid rgba(255,255,255,.07);
}

/* Bouton toggle */
.dsd-tracklist-toggle {
    width: 100%;
    display: flex; align-items: center; justify-content: space-between;
    padding: 11px 18px;
    background: transparent;
    border: none; cursor: pointer;
    color: #888;
    font-size: 13px;
    transition: color .2s, background .2s;
}
.dsd-tracklist-toggle:hover {
    background: rgba(255,255,255,.04);
    color: var(--dsd-accent) !important;
}
.dsd-tracklist-toggle-label {
    display: flex; align-items: center; gap: 7px;
}
.dsd-toggle-chevron {
    transition: transform .3s ease;
    color: inherit;
    flex-shrink: 0;
}
.dsd-tracklist-toggle.dsd-tracklist-open .dsd-toggle-chevron {
    transform: rotate(180deg);
}

/* Tracklist (accordéon) */
.dsd-tracklist {
    max-height: 0;
    overflow: hidden;
    transition: max-height .4s cubic-bezier(.4,0,.2,1);
}
.dsd-tracklist.dsd-tracklist-open {
    max-height: 2000px; /* assez grand pour tout contenu */
}

/* Piste individuelle */
.dsd-track-item {
    display: grid;
    grid-template-columns: 28px 28px 1fr auto 44px; /* auto pour le bouton paroles — s'adapte au texte */
    align-items: center;
    gap: 8px;
    padding: 9px 18px;
    border-radius: 0;
    cursor: pointer;
    transition: background .15s;
}
.dsd-track-item:hover { background: rgba(255,255,255,.05); }
.dsd-track-item.dsd-track-active { background: rgba(255,255,255,.08); }
.dsd-track-item.dsd-track-playing { background: rgba(255,235,59,.08); }
.dsd-track-item.dsd-track-no-mp3 { opacity: .45; cursor: default; }

.dsd-track-num {
    font-size: 12px; color: #555;
    text-align: center; font-variant-numeric: tabular-nums;
}
.dsd-track-item.dsd-track-playing .dsd-track-num {
    color: var(--dsd-accent) !important;
}

.dsd-track-play-btn {
    width: 28px; height: 28px;
    border-radius: 50%;
    background: transparent;
    border: 1.5px solid #444;
    cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    color: #aaa;
    padding: 0;
    transition: all .2s;
}
.dsd-track-play-btn:hover:not(:disabled) {
    border-color: var(--dsd-accent) !important;
    background: var(--dsd-accent) !important;
    color: #000;
    transform: scale(1.1);
}
.dsd-track-play-btn:disabled { opacity: .3; cursor: not-allowed; }
.dsd-track-item.dsd-track-playing .dsd-track-play-btn {
    border-color: var(--dsd-accent) !important;
    background: var(--dsd-accent) !important;
    color: #000;
}
.dsd-track-item.dsd-track-playing .play-icon { display: none !important; }
.dsd-track-item.dsd-track-playing .pause-icon { display: block !important; }

.dsd-track-name {
    font-size: DSD_TRACK_FONT; color: var(--dsd-text) !important;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    min-width: 0;
    position: relative;
}
/* Défilement au survol si le texte est tronqué */
.dsd-track-name span {
    display: inline-block;
    white-space: nowrap;
}
.dsd-track-item:hover .dsd-track-name.dsd-overflow span {
    animation: dsdMarquee 4s linear infinite;
    animation-delay: .5s;
    padding-right: 40px;
}
@keyframes dsdMarquee {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}
.dsd-track-item:hover .dsd-track-name { color: var(--dsd-accent) !important; }
.dsd-track-item.dsd-track-playing .dsd-track-name { color: var(--dsd-accent) !important; }

.dsd-lyrics-btn {
    width: auto; height: 22px; /* auto pour s'adapter au texte éventuel */
    min-width: 22px;
    background: transparent; border: none; cursor: pointer;
    color: #555; padding: 0 4px;
    display: flex; align-items: center; justify-content: center; gap: 4px;
    border-radius: 4px;
    white-space: nowrap;
    transition: color .2s, background .2s;
}
.dsd-lyrics-btn:hover { color: var(--dsd-accent) !important; background: rgba(255,235,59,.12); }
.dsd-lyrics-btn.dsd-lyrics-active { color: var(--dsd-accent) !important; background: rgba(255,235,59,.18); }
.dsd-lyrics-btn-placeholder { width: 22px; display: inline-block; }

.dsd-track-dur {
    font-size: 12px; color: #555;
    text-align: right; font-variant-numeric: tabular-nums;
}

/* Panneau paroles */
.dsd-lyrics-panel {
    display: none;
    padding: 14px 18px 18px 18px;
    background: rgba(255,235,59,.04);
    border-left: 3px solid var(--dsd-accent) !important;
    animation: dsdSlideDown .25s ease;
    position: relative;
    cursor: pointer;
}
/* Infobulle CSS pur au survol du panneau paroles */
.dsd-lyrics-panel::after {
    content: "Agrandir ↗";
    position: absolute;
    top: 10px;
    right: 14px;
    background: var(--dsd-accent);
    color: #000;
    font-size: 11px;
    font-weight: 700;
    font-family: sans-serif;
    padding: 3px 10px;
    border-radius: 20px;
    opacity: 0;
    transition: opacity .2s ease;
    pointer-events: none;
    white-space: nowrap;
}
.dsd-lyrics-panel:hover::after {
    opacity: 1;
}
.dsd-lyrics-panel.dsd-lyrics-visible { display: block; }
@keyframes dsdSlideDown {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}
.dsd-lyrics-body {
    font-size: DSD_LYRICS_FONT; line-height: 1.9;
    color: #bbb; font-family: Georgia, serif;
    max-height: 320px; overflow-y: auto;
    margin: 0; padding: 0;
}
/* Supprimer tout margin/padding parasite sur les balises enfants */
.dsd-lyrics-body br:first-child { display: none; }
.dsd-lyrics-body::-webkit-scrollbar { width: 4px; }
.dsd-lyrics-body::-webkit-scrollbar-thumb { background: var(--dsd-accent) !important; border-radius: 2px; }

/* ── Player sticky ───────────────────────────── */
.dsd-player {
    position: fixed; bottom: 0; left: 0; right: 0;
    max-width: 100% !important; /* pas affecté par la largeur du wrapper */
    background: var(--dsd-player-bg) !important;
    border-top: 2px solid var(--dsd-accent) !important;
    z-index: 9999;
    box-shadow: 0 -4px 20px rgba(0,0,0,.5);
    transition: transform .35s cubic-bezier(.4,0,.2,1);
}

/* Caché par défaut — slide hors écran vers le bas */
.dsd-player.dsd-player-hidden {
    transform: translateY(100%);
    pointer-events: none;
}

/* Replié : seule la minibar visible */
.dsd-player.dsd-player-collapsed .dsd-player-content { display: none !important; }
.dsd-player.dsd-player-collapsed .dsd-player-minibar { display: flex !important; }
/* Hauteur auto quand replié pour ne pas laisser d'espace vide */
.dsd-player.dsd-player-collapsed { height: auto !important; }

/* Déplié : contenu visible, minibar cachée */
/* display flex géré par .dsd-player-content directement */
.dsd-player:not(.dsd-player-collapsed) .dsd-player-minibar { display: none; }

/* Minibar (titre + bouton toggle) */
.dsd-player-minibar {
    display: none;
    align-items: center;
    justify-content: space-between;
    padding: 0 24px;
    height: 44px;
    gap: 16px;
    /* Fond explicite pour éviter que le contenu de la page transparaisse */
    background: var(--dsd-player-bg) !important;
    position: relative;
    z-index: 1;
}
.dsd-player-minibar-info {
    display: flex; align-items: center; gap: 12px; min-width: 0; flex: 1;
}
.dsd-player-minibar-title {
    font-size: 14px; font-weight: 600; color: var(--dsd-text) !important;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.dsd-player-minibar-artist {
    font-size: 12px; color: #888;
    white-space: nowrap; flex-shrink: 0;
}
.dsd-player-toggle-btn {
    background: transparent; border: none; color: var(--dsd-accent) !important;
    cursor: pointer; padding: 6px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    transition: background .2s;
    flex-shrink: 0;
}
.dsd-player-toggle-btn:hover { background: rgba(255,235,59,.15); }

/* Bouton replier — positionné à gauche de la pochette */
.dsd-player-close-btn {
    color: #888 !important;
    padding: 6px !important;
    /* Position absolue dans .dsd-player (qui est lui-même fixed) */
    position: absolute !important;
    right: 16px !important;
    top: 0 !important;
    bottom: 0 !important;
    height: 100% !important;
    display: flex !important;
    align-items: center !important;
    z-index: 1 !important;
    background: transparent !important;
    border: none !important;
    cursor: pointer !important;
}
.dsd-player-close-btn:hover { color: var(--dsd-accent) !important; }

.dsd-player-content {
    max-width: 100% !important;
    height: var(--dsd-player-height) !important;
    display: flex !important;
    align-items: center;
    gap: 16px;
    padding: 0 70px 0 24px;
}
/* Tailles fixes des blocs — s'adaptent à l'ordre */
.dsd-player-track-info    { flex: 0 0 320px; min-width: 0; padding-right: 32px; }

.dsd-player-lyrics        { flex: 1 1 0; min-width: 0; }
.dsd-player-controls-group{ flex: 0 0 auto; }
.dsd-player-lyrics-btn-wrap { flex: 0 0 auto; }
.dsd-player-volume        { flex: 0 0 auto; }
.dsd-player-progress      { flex: 1 1 0; min-width: 0; display: flex; align-items: center; }

/* ── Paroles défilantes dans le player ─────────── */
.dsd-player-lyrics {
    overflow: hidden;
    height: 46px;
    position: relative;
    min-width: 0;
    mask-image: linear-gradient(to bottom, transparent 0%, black 25%, black 75%, transparent 100%);
    -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 25%, black 75%, transparent 100%);
    /* Toujours dans le flux — visibility:hidden garde la place */
    transition: opacity .3s ease;
    opacity: 1;
}
/* Paroles du player cliquables */
#dsd-player-lyrics:not(.dsd-no-lyrics) {
    cursor: pointer;
    position: relative;
}
/* Infobulle "Agrandir ↗" au survol — même style que le panneau paroles */
#dsd-player-lyrics:not(.dsd-no-lyrics)::after {
    content: "Agrandir ↗";
    position: absolute;
    top: 4px;
    right: 40px; /* décalé vers la gauche */
    background: var(--dsd-accent);
    color: #000 !important;
    font-size: 11px;
    font-weight: 700;
    font-family: sans-serif;
    padding: 3px 10px;
    border-radius: 20px;
    opacity: 0;
    transition: opacity .2s ease;
    pointer-events: none;
    white-space: nowrap;
    z-index: 2;
}
#dsd-player-lyrics:not(.dsd-no-lyrics):hover::after { opacity: 1; }

/* Paroles cachées SANS LRC ni texte : retirer du flux */
.dsd-player-lyrics.dsd-lyrics-empty.dsd-no-lyrics {
    flex: 0 0 0 !important;
    width: 0 !important;
    min-width: 0 !important;
    overflow: hidden !important;
    opacity: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
}
/* Paroles avec LRC : garder l'espace même pendant les silences */
.dsd-player-lyrics.dsd-lyrics-empty:not(.dsd-no-lyrics) {
    visibility: hidden !important;
    opacity: 0 !important;
}

.dsd-player-lyrics-track {
    /* translateY animé par JS — transition durée calculée sur temps entre 2 lignes */
    will-change: transform;
}
.dsd-lyrics-item {
    font-size: 12px;
    line-height: 23px;
    height: 23px;
    color: #555;
    text-align: center;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    /* Transition uniquement sur couleur/opacité — jamais sur le déplacement en mode LRC */
    transition: color .2s ease, font-weight .2s ease, opacity .2s ease, font-size .2s ease;
    opacity: .4;
}
.dsd-lyrics-item.is-active {
    color: var(--dsd-accent) !important;
    font-weight: 700;
    opacity: 1;
    font-size: 13px;
}
.dsd-lyrics-item.is-near {
    color: #888;
    opacity: .7;
}

/* Infos piste */
.dsd-player-track-info {
    display: flex; gap: 12px; align-items: center; min-width: 0;
}
.dsd-player-album-cover {
    width: 56px; height: 56px;
    border-radius: 6px; overflow: hidden; flex-shrink: 0;
    background: #2a2a2a;
}
.dsd-player-album-cover img { width: 100%; height: 100%; object-fit: cover; }
.dsd-player-track-title {
    font-size: 14px; font-weight: 600; color: var(--dsd-text) !important;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 3px;
}
.dsd-player-track-artist { font-size: 12px; color: #888; }

/* Contrôles */
.dsd-player-controls-group {
    display: flex;
    align-items: center;
    gap: 16px;
    justify-content: center;
}
.dsd-player-controls {
    display: flex; align-items: center; justify-content: center; gap: 12px;
}

.dsd-player-btn {
    background: transparent; border: none; color: var(--dsd-text) !important;
    cursor: pointer; padding: 8px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    transition: all .2s;
}
.dsd-player-btn:hover { color: var(--dsd-accent) !important; transform: scale(1.1); }
.dsd-player-play {
    width: 44px; height: 44px;
    background: var(--dsd-accent) !important; color: #000 !important;
}
.dsd-player-play:hover { background: rgba(255,255,255,0.15) !important; color: #fff !important; transform: scale(1.12) !important; }
.dsd-player.dsd-is-playing .dsd-player-play .play-icon  { display: none !important; }
.dsd-player.dsd-is-playing .dsd-player-play .pause-icon { display: block !important; }

/* Progression */
.dsd-player-progress {
    display: flex; align-items: center; gap: 10px; min-width: 0;
}
.dsd-player-time { font-size: 11px; color: #666; min-width: 34px; text-align: center; }
.dsd-player-progress-bar {
    position: relative; flex: 1; height: 5px;
    background: #2a2a2a; border-radius: 3px; cursor: pointer;
}
.dsd-player-progress-fill {
    position: absolute; top: 0; left: 0; height: 100%;
    background: var(--dsd-accent) !important; border-radius: 3px;
    width: 0%; pointer-events: none; transition: width .1s linear;
}
.dsd-player-progress-input {
    position: absolute; inset: 0; width: 100%; opacity: 0; cursor: pointer; height: 100%;
}

/* Volume */
.dsd-player-volume { display: flex; align-items: center; gap: 8px; }
.dsd-player.dsd-is-muted .volume-on  { display: none; }
.dsd-player.dsd-is-muted .volume-off { display: block !important; }
.dsd-player-volume-input {
    width: 72px; height: 4px; -webkit-appearance: none; appearance: none;
    background: #2a2a2a; border-radius: 2px; outline: none; cursor: pointer;
}
.dsd-player-volume-input::-webkit-slider-thumb {
    -webkit-appearance: none; width: 13px; height: 13px;
    background: var(--dsd-accent) !important; border-radius: 50%; cursor: pointer;
}
.dsd-player-volume-input::-moz-range-thumb {
    width: 13px; height: 13px; background: var(--dsd-accent) !important;
    border-radius: 50%; border: none; cursor: pointer;
}

/* ── Responsive ──────────────────────────────── */
@media (max-width: 1200px) {
    .dsd-albums-grid { grid-template-columns: repeat(3, 1fr); align-items: start; }
}
@media (max-width: 1024px) {
    .dsd-albums-grid { grid-template-columns: repeat(2, 1fr); align-items: start; }
    /* Player tablette : pleine largeur */
    .dsd-player { max-width: 100% !important; left: 0 !important; right: 0 !important; }
    .dsd-player-content { gap: 10px; padding: 0 50px 0 24px; max-width: 100% !important; }
    .dsd-player-track-info { flex: 0 0 200px; }
    /* Bouton paroles tablette : icône seulement */
    .dsd-player-open-lyrics span { display: none; }
}
@media (max-width: 768px) {
    .dsd-albums-grid { grid-template-columns: 1fr !important; max-width: 420px; margin: 0 auto; align-items: start; }
    .dsd-album-card { margin-left: 0 !important; margin-right: 0 !important; }

    /* Tracklist mobile */
    .dsd-track-item { grid-template-columns: 28px 1fr auto auto !important; }
    .dsd-track-num { display: none !important; }
    .dsd-track-dur { display: none !important; }
    .dsd-track-name { font-size: 13px !important; }

    /* Player mobile — pleine largeur */
    .dsd-player { left: 0 !important; right: 0 !important; width: 100% !important; max-width: 100% !important; box-sizing: border-box; }
    .dsd-player-content { width: 100% !important; max-width: 100% !important; }
    .dsd-player-lyrics { display: none !important; }
    .dsd-player-progress { display: none !important; }
    /* Bouton paroles mobile : visible mais sans texte */
    .dsd-player-open-lyrics span { display: none; }
    .dsd-player-volume-input { display: none; }
    .dsd-player-close-btn { display: none !important; }

    .dsd-player-content {
        display: flex !important;
        flex-direction: row;
        align-items: center;
        gap: 8px;
        padding: 0 12px 0 12px !important;
        height: 70px !important;
        overflow: hidden;
        box-sizing: border-box;
    }
    /* Infos (pochette + titre) à gauche — order 1 */
    .dsd-player-track-info {
        order: 1 !important;
        flex: 1 1 0;
        min-width: 0;
        overflow: hidden;
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: 8px;
        padding-right: 0;
    }
    .dsd-player-track-info .dsd-player-album-cover { flex: 0 0 44px; width: 44px !important; height: 44px !important; }
    .dsd-player-track-info .dsd-player-text { flex: 1 1 0; min-width: 0; overflow: hidden; }
    .dsd-player-track-title { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; font-size: 13px !important; font-weight: 600 !important; display: block; }
    .dsd-player-track-artist { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; font-size: 11px !important; color: #888 !important; }
    /* Bouton paroles après les infos — order 2 */
    .dsd-player-lyrics-btn-wrap { order: 2 !important; flex: 0 0 auto; }
    .dsd-player-open-lyrics span { display: none; }
    /* Volume — order 3 */
    .dsd-player-volume { order: 3 !important; flex: 0 0 auto; gap: 0; }
    /* Contrôles à droite — order 4 */
    .dsd-player-controls-group { order: 4 !important; flex: 0 0 auto; gap: 4px; }
    .dsd-player-controls { gap: 4px; }
    /* Barre de progression fine en haut */
    .dsd-player::before { content: ''; position: absolute; top: 0; left: 0; height: 3px; background: var(--dsd-accent) !important; width: var(--dsd-mobile-progress, 0%) !important; z-index: 1; }
    .dsd-player-album-cover { width: 46px; height: 46px; }
    .dsd-player-minibar { padding: 0 16px; height: 40px; }
    .dsd-player-minibar-title { font-size: 13px; }
    .dsd-player-minibar-artist { font-size: 11px; }
}

@media (max-width: 380px) {
    .dsd-albums-grid { grid-template-columns: 1fr !important; }
    .dsd-album-card { margin-left: 0 !important; margin-right: 0 !important; }
}

/* ── Spinner lazy loading ────────────────────── */
.dsd-tracklist-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}
.dsd-loading-spinner {
    width: 24px; height: 24px;
    border: 2px solid rgba(255,255,255,.1);
    border-top-color: var(--dsd-accent) !important;
    border-radius: 50%;
    animation: dsdSpin .7s linear infinite;
}
@keyframes dsdSpin {
    to { transform: rotate(360deg); }
}

/* ── Animations entrée ───────────────────────── */
.dsd-album-card {
    opacity: 0;
    transform: translateY(16px);
    transition: opacity .4s ease, transform .4s ease, box-shadow .25s ease;
}
.dsd-album-card.dsd-visible {
    opacity: 1;
    transform: translateY(0);
}

/* ====================================================
   MODALE PAROLES PLEIN ÉCRAN
==================================================== */
.dsd-lyrics-modal {
    position: fixed;
    top: 0; bottom: 90px; left: 0; right: 0;
    z-index: 100000;
    background: rgba(0,0,0,.95);
    display: flex;
    align-items: flex-start;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity .3s ease;
}
.dsd-lyrics-modal.dsd-modal-open {
    opacity: 1;
    pointer-events: all;
}
.dsd-lyrics-modal-inner {
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 860px;
    height: 100%;
    padding: 0 32px;
    box-sizing: border-box;
}

/* En-tête */
.dsd-lyrics-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 24px 0 20px;
    border-bottom: 1px solid rgba(255,255,255,.1);
    flex-shrink: 0;
}
.dsd-lyrics-modal-meta {
    display: flex;
    flex-direction: column;
    gap: 3px;
}
.dsd-lyrics-modal-title {
    font-size: 18px;
    font-weight: 700;
    color: #fff !important;
}
.dsd-lyrics-modal-artist {
    font-size: 13px;
    color: rgba(255,255,255,.5) !important;
}
.dsd-lyrics-modal-close {
    background: rgba(255,255,255,.08);
    border: none;
    color: #fff !important;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: background .2s;
}
.dsd-lyrics-modal-close:hover { background: rgba(255,255,255,.18) !important; }

/* Corps — paroles centrées, texte aligné à gauche */
.dsd-lyrics-modal-body {
    flex: 1;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
}
.dsd-lyrics-panel {
    cursor: pointer;
}
.dsd-lyrics-panel:hover .dsd-lyrics-body {
    opacity: .8;
}
.dsd-modal-line {
    display: block;
    width: 100%;
    max-width: 820px;
    font-size: 20px;
    font-weight: 500;
    line-height: 1.8;
    color: rgba(255,255,255,.3) !important;
    text-align: left;
    transition: color .25s ease, font-size .25s ease, font-weight .25s ease;
    cursor: default;
}
.dsd-modal-line.dsd-modal-active {
    color: var(--dsd-accent) !important;
    font-size: 26px;
    font-weight: 700;
}
/* Scrollbar discrète */
.dsd-lyrics-modal-body::-webkit-scrollbar { width: 4px; }
.dsd-lyrics-modal-body::-webkit-scrollbar-track { background: transparent; }
.dsd-lyrics-modal-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,.2); border-radius: 2px; }

/* ====================================================
   SWITCH SYNC / BRUT + VUES MODALE
==================================================== */
.dsd-lyrics-switch {
    display: flex;
    align-items: center;
    gap: 6px;
}
.dsd-lyrics-switch-btn {
    background: rgba(255,255,255,.1);
    border: 1px solid rgba(255,255,255,.2);
    color: rgba(255,255,255,.7) !important;
    font-size: 12px;
    font-weight: 600;
    padding: 5px 12px;
    border-radius: 20px;
    cursor: pointer;
    transition: all .2s;
    white-space: nowrap;
}
.dsd-lyrics-switch-btn.active {
    background: var(--dsd-accent) !important;
    color: #000 !important;
    border-color: var(--dsd-accent) !important;
}
.dsd-lyrics-switch-btn:hover:not(.active) {
    background: rgba(255,255,255,.2) !important;
}

/* Vue sync — paroles animées, scrollable */
.dsd-modal-synced {
    display: none;
    flex-direction: column;
    align-items: flex-start;
    width: 100%;
    max-width: 860px;
    overflow-y: auto;
    padding: 28px 32px 80px;
    box-sizing: border-box;
}
.dsd-modal-synced.dsd-view-active {
    display: flex !important;
}

/* Vue brute — texte compact, 15px, pas d'animation, pas de scroll auto */
#dsd-lyrics-modal-raw {
    display: none;
    width: 100%;
    max-width: 860px;
    overflow-y: auto;
    padding: 28px 32px 80px;
    box-sizing: border-box;
    font-size: 15px !important;
    line-height: 2;
    color: rgba(255,255,255,.85) !important;
    white-space: pre-wrap;
    font-family: inherit;
}
#dsd-lyrics-modal-raw.dsd-view-active {
    display: block !important;
}

/* ── Scrollbars discrètes pour les vues de la modale ── */
.dsd-modal-synced::-webkit-scrollbar,
#dsd-lyrics-modal-raw::-webkit-scrollbar { width: 4px; }
.dsd-modal-synced::-webkit-scrollbar-track,
#dsd-lyrics-modal-raw::-webkit-scrollbar-track { background: transparent; }
.dsd-modal-synced::-webkit-scrollbar-thumb { background: rgba(255,255,255,.2); border-radius: 2px; }
#dsd-lyrics-modal-raw::-webkit-scrollbar-thumb { background: rgba(255,255,255,.2); border-radius: 2px; }
.dsd-modal-synced::-webkit-scrollbar-thumb:hover,
#dsd-lyrics-modal-raw::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,.4); }
