/* Disco-Train — DJ Mixes
   Zelfde kleurenpalet als de andere Disco-Train plugins (bewust
   gedupliceerd i.p.v. een gedeeld bestand, zodat deze plugin los blijft
   van de rest — zelfde reden als in discotrain-fotogalleries.css). */
:root {
    --discotrain-accent: #ff007f;
    --discotrain-accent-hover: #e6006f;
    --discotrain-dark: #0d0d0d;
    --discotrain-dark-alt: #1a1a1a;
    --discotrain-text: #ffffff;
    --discotrain-text-muted: #a3a3a3;
    --discotrain-border: rgba(255, 255, 255, 0.08);
    --discotrain-radius: 16px;
}

.discotrain-djmixes-icon {
    display: inline-block;
    vertical-align: middle;
    flex-shrink: 0;
}

.discotrain-djmixes-empty {
    color: var(--discotrain-text-muted);
}

/* Gedeelde badge-stijl (stijl-taxonomie) — zelfde look als
   discotrain-artiesten-badge, voor visuele consistentie tussen artiesten en
   mixen op eenzelfde site. */
.discotrain-djmixes-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 8px;
}

.discotrain-djmixes-badge {
    background: rgba(255, 0, 127, 0.12);
    color: var(--discotrain-accent);
    border: 1px solid rgba(255, 0, 127, 0.35);
    border-radius: 999px;
    padding: 3px 12px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.discotrain-djmixes-artist {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: var(--discotrain-text-muted) !important;
    margin-top: 4px;
}

/* Eén artiest = eigen profielfoto + naam, zie discotrain_djmixes_get_artiesten_html().
   Meerdere gekoppelde artiesten staan als losse items ", "-gescheiden naast
   elkaar (dezelfde flex-rij als voorheen, nu alleen met een eigen avatar
   per naam i.p.v. één gedeeld icoon vooraan). */
.discotrain-djmixes-artist-item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.discotrain-djmixes-artist-avatar {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
    vertical-align: middle;
}

.discotrain-djmixes-artist a {
    position: relative;
    z-index: 2;
    color: var(--discotrain-text-muted) !important;
    text-decoration: underline;
}

.discotrain-djmixes-artist a:hover {
    color: var(--discotrain-accent) !important;
}

/* Shared card look — grid/list items. */
.discotrain-djmixes-card {
    background: var(--discotrain-dark-alt);
    border: 1px solid var(--discotrain-border);
    border-radius: var(--discotrain-radius);
    padding: 24px;
    margin-bottom: 20px;
    color: var(--discotrain-text);
}

.discotrain-djmixes-card h2 {
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--discotrain-text) !important;
    margin: 0 0 16px;
    font-size: 20px;
}

/* Grid overzicht ([discotrain_mixes_grid] shortcode + archive) */
.discotrain-djmixes-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 20px;
}

/* Scoped to .discotrain-djmixes-grid (not just ".discotrain-djmixes-card")
   because the grid card and the single-page "Beluisteren" player card share
   the same base class — without this scoping, this override's padding:0
   was winning (later in the file, same specificity) and stripped the
   player-card's padding too, leaving its content flush against the edges.
   .discotrain-djmixes-card is a <div>, not an <a> — the whole-card click
   target is the stretched .discotrain-djmixes-card-link overlay below.
   Reason: nesting the artist <a> (from discotrain_djmixes_get_artiesten_html())
   inside a card-wide <a> is invalid HTML, and browsers "fix" it by
   auto-closing/reparenting anchors, which broke the card layout entirely
   (title + artist ended up outside the image anchor). See
   [[feedback-theme-css-specificity]] for the general "don't assume markup
   survived the browser's parser" lesson this reinforces. */
.discotrain-djmixes-grid > .discotrain-djmixes-card {
    position: relative;
    display: block;
    text-decoration: none;
    padding: 0;
    overflow: hidden;
    transition: border-color 0.15s ease;
}

.discotrain-djmixes-grid > .discotrain-djmixes-card:hover {
    border-color: var(--discotrain-accent);
}

.discotrain-djmixes-card-link {
    position: absolute;
    inset: 0;
    z-index: 1;
}

.discotrain-djmixes-card-image,
.discotrain-djmixes-card-image-placeholder {
    background: var(--discotrain-dark);
    aspect-ratio: 4 / 3;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
}

.discotrain-djmixes-card-image-placeholder {
    color: var(--discotrain-text-muted);
}

.discotrain-djmixes-card-image-placeholder svg {
    width: 40px;
    height: 40px;
}

/* !important nodig: Betheme's globale img:not([src*='.svg']){height:auto}
   heeft dezelfde specificiteit als deze regel en wint anders de
   cascade-tie, waardoor de cover op zijn eigen beeldverhouding blijft staan
   i.p.v. de kaart te vullen — zie [[feedback-theme-css-specificity]]. */
.discotrain-djmixes-card-image img {
    width: 100% !important;
    height: 100% !important;
    aspect-ratio: auto;
    object-fit: cover;
    display: block;
}

.discotrain-djmixes-play-badge {
    position: absolute;
    right: 10px;
    bottom: 10px;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.6);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(2px);
}

.discotrain-djmixes-play-badge svg {
    width: 16px;
    height: 16px;
}

.discotrain-djmixes-play-badge-small {
    width: 28px;
    height: 28px;
    right: 8px;
    bottom: 8px;
}

.discotrain-djmixes-play-badge-small svg {
    width: 14px;
    height: 14px;
}

.discotrain-djmixes-card-body {
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.discotrain-djmixes-card-title {
    margin: 0;
    font-size: 17px;
    font-weight: 700;
    line-height: 1.35;
    letter-spacing: -0.01em;
    color: var(--discotrain-text) !important;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
}

/* Lijst overzicht ([discotrain_mixes_list] shortcode) */
.discotrain-djmixes-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

/* Same div + stretched-link pattern as .discotrain-djmixes-card — see the
   comment there for why this can't be a real <a> wrapping the artist link. */
.discotrain-djmixes-list-row {
    position: relative;
    display: flex;
    align-items: center;
    gap: 18px;
    background: var(--discotrain-dark-alt);
    border: 1px solid var(--discotrain-border);
    border-radius: var(--discotrain-radius);
    padding: 14px;
    text-decoration: none;
    transition: border-color 0.15s ease;
}

.discotrain-djmixes-list-row:hover {
    border-color: var(--discotrain-accent);
}

.discotrain-djmixes-list-thumb {
    position: relative;
    width: 96px;
    height: 96px;
    flex-shrink: 0;
    border-radius: 12px;
    overflow: hidden;
}

.discotrain-djmixes-list-thumb .discotrain-djmixes-card-image-placeholder {
    width: 100%;
    height: 100%;
    aspect-ratio: auto;
}

.discotrain-djmixes-list-thumb img {
    width: 100% !important;
    height: 100% !important;
    aspect-ratio: auto;
    object-fit: cover;
    display: block;
}

.discotrain-djmixes-list-body {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.discotrain-djmixes-list-title {
    color: var(--discotrain-text) !important;
    font-weight: 700;
    font-size: 20px;
    line-height: 1.3;
}

/* Archiefpagina (/mixes/) — page-width matches the theme's own
   .section_wrapper/.container (1220px, see homepage / [[feedback-discotrain-page-width]]). */
.discotrain-djmixes-archive {
    width: 100%;
    max-width: 1220px;
    margin: 0 auto;
    padding: 24px 20px 60px;
    box-sizing: border-box;
}

.discotrain-djmixes-archive-title {
    margin: 0 0 24px;
    font-size: 32px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--discotrain-text) !important;
}

/* Small accent underline below the start of the title (not full-width) —
   same pattern as the Artiesten and Albums archive titles, for a consistent
   look across all Disco-Train overview pages. */
.discotrain-djmixes-archive-title::after {
    content: '';
    display: block;
    width: 56px;
    height: 4px;
    margin-top: 10px;
    background: var(--discotrain-accent);
    border-radius: 2px;
}

/* Single mix pagina — zelfde 1220px page-width conventie. */
.discotrain-djmixes-single {
    width: 100%;
    max-width: 1220px;
    margin: 0 auto;
    padding: 24px 20px 60px;
    box-sizing: border-box;
}

.discotrain-djmixes-back-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--discotrain-text-muted) !important;
    text-decoration: none;
    margin-bottom: 20px;
    font-size: 14px;
}

.discotrain-djmixes-back-link:hover {
    color: var(--discotrain-accent) !important;
}

.discotrain-djmixes-header {
    display: flex;
    gap: 32px;
    align-items: flex-start;
    margin-bottom: 24px;
    flex-wrap: wrap;
}

.discotrain-djmixes-header-image {
    width: 320px;
    max-width: 100%;
    flex-shrink: 0;
    border-radius: var(--discotrain-radius);
    overflow: hidden;
    aspect-ratio: 1 / 1;
}

.discotrain-djmixes-header-image img {
    width: 100% !important;
    height: 100% !important;
    aspect-ratio: auto;
    display: block;
    object-fit: cover;
}

.discotrain-djmixes-header-body {
    flex: 1;
    min-width: 240px;
}

.discotrain-djmixes-title {
    margin: 0 0 8px;
    font-size: 32px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--discotrain-text) !important;
}

.discotrain-djmixes-header-artist {
    margin-bottom: 4px;
}

/* Lineup-kaartjes (grote ronde foto boven de naam) op de single-mixpagina —
   zie discotrain_djmixes_get_artiesten_cards_html(). Zelfde visuele stijl
   als .discotrain-artiesten-lineup-card (discotrain-artiesten.css),
   bewust met een eigen class-naam gedupliceerd i.p.v. gedeeld bestand. */
.discotrain-djmixes-artist-cards {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    margin: 10px 0 18px;
}

.discotrain-djmixes-artist-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 8px;
    text-decoration: none;
    color: var(--discotrain-text) !important;
}

.discotrain-djmixes-artist-card-image {
    width: 90px;
    height: 90px;
    border-radius: 50%;
    overflow: hidden;
    border: 2px solid transparent;
    background: var(--discotrain-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--discotrain-text-muted);
    transition: border-color 0.15s ease;
}

.discotrain-djmixes-artist-card:hover .discotrain-djmixes-artist-card-image {
    border-color: var(--discotrain-accent);
}

/* !important: zelfde Betheme img:not([src*='.svg']){height:auto}-
   specificiteit-gotcha als elders in dit project (zie discotrain-
   artiesten.css / discotrain-fotogalleries.css). */
.discotrain-djmixes-artist-card-image img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover;
    display: block;
}

.discotrain-djmixes-artist-card-image svg {
    width: 36px;
    height: 36px;
}

.discotrain-djmixes-artist-card-name {
    font-size: 13px;
    font-weight: 600;
}

.discotrain-djmixes-description {
    color: var(--discotrain-text-muted);
    line-height: 1.6;
    margin-top: 16px;
}

/* De speler zelf — elke bron krijgt zijn eigen embed-hoogte (zie
   discotrain-djmixes-player.php), alleen YouTube heeft de klassieke
   responsive 16:9-wrapper nodig omdat een losse iframe zijn eigen
   intrinsieke maat niet met CSS alleen betrouwbaar aanpast. */
.discotrain-djmixes-player iframe {
    display: block;
    border: 0;
    border-radius: calc(var(--discotrain-radius) - 4px);
}

.discotrain-djmixes-youtube-ratio {
    position: relative;
    width: 100%;
    padding-top: 56.25%; /* 16:9 */
    border-radius: calc(var(--discotrain-radius) - 4px);
    overflow: hidden;
}

.discotrain-djmixes-youtube-ratio iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.discotrain-djmixes-audio {
    width: 100%;
}
