/* ============================================================
   Tuiles catalogue — race.php
   Design F1 : précis, technique, mobile-first
   Thème clair / sombre via [data-theme="light"]
   ============================================================ */

/* ---- Variables locales ---- */

.catalogue-tiles-grid,
.play-catalogue-tiles-grid {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

/* ================================================================
   TUILE DE BASE
   ================================================================ */

.catalogue-tile {
    --tile-h:          4.75rem;
    --tile-r:          0.75rem;
    --tile-photo-w:    4.5rem;
    --tile-accent:     var(--catalogue-tile-accent, #e8002d);
    --tile-accent-dim: color-mix(in srgb, var(--tile-accent) 18%, transparent);
    --tile-border:     color-mix(in srgb, var(--color-text, #fff) 10%, transparent);
    --tile-value-w:    4.5rem;
    --tile-value-pad:  0.45rem;
    --tile-value-fs:   1.3rem;
    --tile-value-unit-fs: 0.65rem;

    position: relative;
    display: flex;
    align-items: stretch;
    min-height: var(--tile-h);
    border: 2.5px solid var(--tile-border);
    border-radius: var(--tile-r);
    overflow: hidden;
    background: var(--bg-card);
    user-select: none;
    transition: border-color 0.12s ease, box-shadow 0.12s ease, opacity 0.15s ease;

    /* Trait de couleur gauche — signature F1 */
    &::before {
        content: '';
        position: absolute;
        left: 0;
        top: 0;
        bottom: 0;
        width: 3px;
        background: var(--tile-accent);
        opacity: 0;
        transition: opacity 0.12s ease;
        z-index: 2;
    }
}

/* ---- Sélectionnable ---- */

.catalogue-tile--selectable {
    cursor: pointer;
}

.catalogue-tile--selectable:hover {
    border-color: color-mix(in srgb, var(--tile-accent) 45%, transparent);
    box-shadow: 0 2px 12px color-mix(in srgb, var(--tile-accent) 10%, transparent);
}

.catalogue-tile--selectable:hover::before {
    opacity: 0.5;
}

.catalogue-tile--selectable:focus-visible {
    outline: 2px solid var(--tile-accent);
    outline-offset: 2px;
}

/* ---- État sélectionné ---- */

.catalogue-tile--selected {
    border-color: var(--tile-accent);
    background: color-mix(in srgb, var(--tile-accent) 6%, var(--surface-muted));
    box-shadow: 0 0 0 1px var(--tile-accent);
}

.catalogue-tile--selected::before {
    opacity: 1;
}

/* ---- Hors budget ---- */

.catalogue-tile--over-budget {
    opacity: 0.45;
    filter: grayscale(0.8);
    cursor: not-allowed;
}

.catalogue-tile--over-budget:hover {
    border-color: var(--tile-border);
    box-shadow: none;
}

.catalogue-tile--over-budget:hover::before {
    opacity: 0;
}

.catalogue-tile__block-overlay {
    display: none;
    position: absolute;
    inset: 0;
    box-sizing: border-box;
    padding: 0.5rem 0.85rem;
    background: color-mix(in srgb, #000 84%, transparent);
    border-radius: inherit;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    z-index: 10;
    pointer-events: none;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
}

.catalogue-tile--over-budget[data-missing] .catalogue-tile__block-overlay {
    display: flex;
}

.catalogue-tile__block-message {
    color: #fff;
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.3;
    text-align: center;
    letter-spacing: 0.01em;
    white-space: normal;
}

.catalogue-tile--over-budget[data-missing] .catalogue-tile__name-row > .catalogue-tile__info-btn:not(.catalogue-tile__info-btn--overlay) {
    visibility: hidden;
    pointer-events: none;
}

.catalogue-tile__block-overlay .catalogue-tile__info-btn--overlay {
    pointer-events: auto;
    flex-shrink: 0;
}

/* ---- Affichage lecture seule (résultats, compare, …) ---- */

.catalogue-tile--display {
    cursor: default;
    pointer-events: none;
}

.catalogue-tile--display .catalogue-tile__info-btn {
    pointer-events: auto;
    cursor: pointer;
}

.catalogue-tile--display::before {
    opacity: 0.35;
}

/* ---- Bouton info ---- */

.catalogue-tile__info-btn.card-btn-effect {
    position: static;
    flex: 0 0 auto;
    align-self: center;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    min-width: 1.25rem;
    background: var(--tile-accent);
    border: none;
    color: #fff;
    margin: 0;
    padding: 0;
    font-size: 0.65rem;
    font-weight: 900;
    font-style: italic;
    font-family: var(--font-title);
    line-height: 1;
    border-radius: 50%;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: transform 0.1s ease, opacity 0.1s ease;
}

.catalogue-tile__info-btn.card-btn-effect:hover {
    opacity: 0.85;
    transform: scale(1.1);
}

/* ================================================================
   PHOTO
   ================================================================ */

.catalogue-tile__photo {
    flex: 0 0 auto;
    align-self: stretch;
    width: var(--tile-photo-w);
    display: flex;
    align-items: flex-end;
    justify-content: center;
    overflow: hidden;
    position: relative;

    /* Fondu latéral vers le fond de la tuile */
    &::after {
        content: '';
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        width: 1.5rem;
        background: linear-gradient(to right, transparent, var(--surface-muted));
        pointer-events: none;
        transition: background 0.12s ease;
    }
}

.catalogue-tile--selected .catalogue-tile__photo::after {
    background: linear-gradient(to right, transparent,
        color-mix(in srgb, var(--tile-accent) 6%, var(--surface-muted)));
}

.catalogue-tile__photo img {
    display: block;
    width: 100%;
    height: calc(var(--tile-h) + 0.5rem);
    object-fit: cover;
    object-position: top center;
}

/* ================================================================
   CONTENU PRINCIPAL
   ================================================================ */

.catalogue-tile__main {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
    padding: 0 0.35rem 0 0;
}

/* Numéro de dossard */
.catalogue-tile__number {
    flex: 0 0 auto;
    align-self: center;
    font-size: 1.85rem;
    font-weight: 900;
    line-height: 1;
    letter-spacing: -0.04em;
    color: var(--tile-accent);
    font-variant-numeric: tabular-nums;
    opacity: 0.9;
    min-width: 2.4rem;
    text-align: center;
}

/* Infos textuelles */
.catalogue-tile__info {
    flex: 1 1 auto;
    align-self: center;
    min-width: 0;
    margin-left: 0.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    padding: 0.5rem 0;
}

.catalogue-tile__name-row {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    min-width: 0;
}

/* Drapeau */
.catalogue-tile__flag {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    line-height: 0;
}

.catalogue-tile__flag .country-flag-img {
    width: 1.2rem;
    height: auto;
    border-radius: 2px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.25);
}

/* Nom */
.catalogue-tile__name {
    min-width: 0;
    font-size: 0.92rem;
    line-height: 1.2;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.catalogue-tile__firstname {
    font-weight: 400;
    opacity: 0.85;
}

.catalogue-tile__lastname {
    font-weight: 900;
    font-family: var(--font-title);
    letter-spacing: 0.01em;
    text-transform: uppercase;
}

.catalogue-tile__team {
    font-size: 0.72rem;
    line-height: 1.2;
    color: var(--text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    opacity: 0.8;
}

/* Description de l'effet */
.catalogue-tile__effect {
    margin: 0.2rem 0 0;
    font-size: 0.85rem;
    line-height: 1.35;
    color: var(--text-muted);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    opacity: 0.75;
}

.catalogue-tile--has-effect {
    --tile-h: 5.65rem;
}

.catalogue-tile--has-effect .catalogue-tile__effect {
    -webkit-line-clamp: 3;
}

/* ================================================================
   VALEUR (colonne droite)
   ================================================================ */

.catalogue-tile__value {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-width: var(--tile-value-w);
    max-width: calc(var(--tile-value-w) + 0.5rem);
    width: auto;
    flex-basis: var(--tile-value-w);
    align-self: stretch;
    padding: 0 var(--tile-value-pad);
    background: color-mix(in srgb, var(--tile-accent) 8%, var(--surface-muted));
    border-left: 1.5px solid color-mix(in srgb, var(--tile-accent) 15%, transparent);
    transition: background 0.12s ease;
}

.catalogue-tile--selected .catalogue-tile__value {
    background: color-mix(in srgb, var(--tile-accent) 14%, var(--surface-muted));
}

.catalogue-tile__value-amount {
    font-family: var(--font-title);
    font-size: var(--tile-value-fs);
    font-weight: 900;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    color: var(--text);
    letter-spacing: -0.02em;
}

.catalogue-tile__value-unit {
    font-size: var(--tile-value-unit-fs);
    font-weight: 700;
    line-height: 1;
    margin-top: 0.1rem;
    color: var(--text-muted);
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.catalogue-tile--cost-adjusted .catalogue-tile__value {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.1rem 0.15rem;
    min-width: calc(var(--tile-value-w) + 0.75rem);
    max-width: none;
}

.catalogue-tile--cost-adjusted .catalogue-tile__value-unit {
    margin-top: 0;
    flex: 0 0 100%;
    text-align: center;
}

.catalogue-tile__value-from {
    font-family: var(--font-title);
    font-size: calc(var(--tile-value-fs) * 0.72);
    font-weight: 700;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    color: var(--text-muted);
    text-decoration: line-through;
    opacity: 0.65;
}

.catalogue-tile__value-arrow {
    font-size: calc(var(--tile-value-fs) * 0.62);
    font-weight: 700;
    line-height: 1;
    color: var(--text-muted);
    opacity: 0.8;
}

.catalogue-tile__value--down .catalogue-tile__value-amount {
    color: var(--color-success);
}

.catalogue-tile__value--up .catalogue-tile__value-amount {
    color: #ffa502;
}

/* Points intégrés (deck parfait, etc.) — à gauche de la valeur M */
.catalogue-tile--with-points {
    --tile-pts-w: 2.65rem;
}

.catalogue-tile__aside {
    flex: 0 0 auto;
    display: flex;
    align-self: stretch;
}

.catalogue-tile__pts {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-width: var(--tile-pts-w);
    padding: 0 1rem;
    border-right: 1px solid color-mix(in srgb, var(--tile-accent) 10%, transparent);
}

.catalogue-tile__pts-amount {
    font-family: var(--font-title);
    font-size: calc(var(--tile-value-fs) * 0.92);
    font-weight: 900;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.02em;
}

.catalogue-tile__pts-unit {
    font-size: calc(var(--tile-value-unit-fs) * 0.95);
    font-weight: 700;
    line-height: 1;
    margin-top: 0.08rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.catalogue-tile__pts--pos .catalogue-tile__pts-amount,
.catalogue-tile__pts--pos .catalogue-tile__pts-unit {
    color: #22c55e;
}

.catalogue-tile__pts--neg .catalogue-tile__pts-amount,
.catalogue-tile__pts--neg .catalogue-tile__pts-unit {
    color: #ef4444;
}

.catalogue-tile__pts--zero .catalogue-tile__pts-amount,
.catalogue-tile__pts--zero .catalogue-tile__pts-unit {
    color: #fbbf24;
}

.catalogue-tile--with-points .catalogue-tile__value {
    border-left: none;
}

/* Thème clair — renforcer les contrastes */
html[data-theme="light"] .catalogue-tile {
    background: #fff;
    border-color: rgba(0, 0, 0, 0.09);
}

html[data-theme="light"] .catalogue-tile--selected {
    background: color-mix(in srgb, var(--tile-accent) 5%, #fff);
    border-color: var(--tile-accent);
}

html[data-theme="light"] .catalogue-tile__photo::after {
    background: linear-gradient(to right, transparent, #fff);
}

html[data-theme="light"] .catalogue-tile--selected .catalogue-tile__photo::after {
    background: linear-gradient(to right, transparent,
        color-mix(in srgb, var(--tile-accent) 5%, #fff));
}

html[data-theme="light"] .catalogue-tile__value {
    background: color-mix(in srgb, var(--tile-accent) 6%, #f5f5f5);
    border-left-color: color-mix(in srgb, var(--tile-accent) 12%, transparent);
}

html[data-theme="light"] .catalogue-tile--selected .catalogue-tile__value {
    background: color-mix(in srgb, var(--tile-accent) 10%, #f5f5f5);
}

/* ================================================================
   RESPONSIVE — encart valeur & tuile
   ================================================================ */

@media (max-width: 480px) {
    .catalogue-tile {
        --tile-h:            4.2rem;
        --tile-photo-w:      3.25rem;
        --tile-value-w:      3.75rem;
        --tile-value-pad:    0.35rem;
        --tile-value-fs:     1.2rem;
        --tile-value-unit-fs: 0.62rem;
    }

    .catalogue-tile__number {
        font-size: 1.5rem;
        min-width: 2rem;
    }

    .catalogue-tile__name {
        font-size: 0.84rem;
    }

    .catalogue-tile__team {
        font-size: 0.67rem;
    }
}

@media (min-width: 768px) {
    .catalogue-tile {
        --tile-value-w:      4.75rem;
        --tile-value-pad:    0.5rem;
        --tile-value-fs:     1.35rem;
        --tile-value-unit-fs: 0.67rem;
    }
}

@media (min-width: 1024px) {
    .catalogue-tile {
        --tile-value-w:      5rem;
        --tile-value-pad:    0.55rem;
        --tile-value-fs:     1.4rem;
        --tile-value-unit-fs: 0.68rem;
    }
}

/* ================================================================
   VARIANTE MANAGER
   ================================================================ */

.catalogue-tile--manager {
    --tile-h: 6.5rem;
}

.catalogue-tile__photo--manager {
    width: var(--tile-photo-w);
    align-items: center;
}

.catalogue-tile__photo--manager img {
    height: calc(var(--tile-h) - 0.35rem);
    object-position: center top;
}

.catalogue-tile--manager .catalogue-tile__info {
    align-self: stretch;
    justify-content: center;
    padding: 0.5rem 0;
    gap: 0.2rem;
}

.catalogue-tile--manager .catalogue-tile__name-row {
    align-items: baseline;
    gap: 0.4rem;
}

.catalogue-tile--manager .catalogue-tile__firstname {
    font-family: inherit;
    font-weight: 400;
    text-transform: none;
    opacity: 0.85;
}

.catalogue-tile--manager .catalogue-tile__lastname {
    font-family: var(--font-title);
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.01em;
}

.catalogue-tile__effect--manager {
    -webkit-line-clamp: 4;
    font-size: 0.85rem;
    line-height: 1.4;
    color: var(--text-muted);
    opacity: 0.85;
}

@media (max-width: 480px) {
    .catalogue-tile--manager {
        --tile-h: 5.75rem;
    }

    .catalogue-tile__photo--manager {
        width: 3.75rem;
    }

    .catalogue-tile__effect--manager {
        -webkit-line-clamp: 3;
        font-size: 0.63rem;
    }
}

/* ================================================================
   VARIANTES JOKER & BONUS (icônes SVG)
   ================================================================ */

.catalogue-tile--joker,
.catalogue-tile--bonus {
    --tile-h: 6.25rem;
}

.catalogue-tile__icon-wrap {
    flex: 0 0 auto;
    align-self: center;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 4rem;
    height: var(--tile-h);
    padding: 0.4rem 0.25rem 0.4rem 0.5rem;
}

.catalogue-tile__icon {
    display: block;
    width: 100%;
    margin-left: 0.5rem;
    height: calc(var(--tile-h) - 1rem);
    object-fit: contain;
    object-position: center;
}

.catalogue-tile--joker .catalogue-tile__info,
.catalogue-tile--bonus .catalogue-tile__info {
    align-self: stretch;
    justify-content: center;
    padding: 0.5rem 0;
    gap: 0.2rem;
}

.catalogue-tile--joker .catalogue-tile__name-row,
.catalogue-tile--bonus .catalogue-tile__name-row {
    align-items: center;
    gap: 0.4rem;
}

.catalogue-tile__name-single {
    font-family: var(--font-title);
    font-weight: 900;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.catalogue-tile__effect--joker,
.catalogue-tile__effect--bonus {
    -webkit-line-clamp: 4;
    font-size: 0.85rem;
    line-height: 1.4;
    color: var(--text-muted);
    opacity: 0.85;
}

@media (max-width: 480px) {
    .catalogue-tile--joker,
    .catalogue-tile--bonus {
        --tile-h: 5.75rem;
    }

    .catalogue-tile__icon-wrap {
        width: 3.5rem;
    }

    .catalogue-tile__effect--joker,
    .catalogue-tile__effect--bonus {
        -webkit-line-clamp: 3;
        font-size: 0.63rem;
    }
}

/* ================================================================
   VUE COMPACTE (race.php toggle, dashboard deck, …)
   Une seule ligne : effet masqué, détail via bouton « i » si présent
   ================================================================ */

.play-catalogue-view--compact .play-catalogue-tiles-grid {
    gap: 0.28rem;
}

.play-catalogue-view--compact .catalogue-tile {
    --tile-h:         3.25rem;
    --tile-photo-w:   2.65rem;
    --tile-value-w:   3.35rem;
    --tile-value-pad: 0.3rem;
    --tile-value-fs:  1.1rem;
    --tile-value-unit-fs: 0.58rem;
}

.play-catalogue-view--compact .catalogue-tile--manager,
.play-catalogue-view--compact .catalogue-tile--joker,
.play-catalogue-view--compact .catalogue-tile--bonus,
.play-catalogue-view--compact .catalogue-tile--has-effect {
    --tile-h: 3.25rem;
}

.play-catalogue-view--compact .catalogue-tile__effect,
.play-catalogue-view--compact .catalogue-tile__team {
    display: none;
}

.play-catalogue-view--compact .catalogue-tile__main {
    gap: 0.35rem;
    padding-right: 0.15rem;
}

.play-catalogue-view--compact .catalogue-tile__photo img {
    height: var(--tile-h);
}

.play-catalogue-view--compact .catalogue-tile__photo--manager img {
    height: calc(var(--tile-h) - 0.35rem);
    object-position: center 12%;
}

.play-catalogue-view--compact .catalogue-tile__photo--manager {
    align-items: center;
}

.play-catalogue-view--compact .catalogue-tile__icon-wrap {
    width: 2.65rem;
    height: var(--tile-h);
    padding: 0.28rem 0.15rem 0.28rem 0.35rem;
}

.play-catalogue-view--compact .catalogue-tile__icon {
    height: calc(var(--tile-h) - 0.5rem);
    margin-left: 0.25rem;
}

.play-catalogue-view--compact .catalogue-tile__number {
    font-size: 1.25rem;
    min-width: 1.65rem;
}

.play-catalogue-view--compact .catalogue-tile__info,
.play-catalogue-view--compact .catalogue-tile--manager .catalogue-tile__info,
.play-catalogue-view--compact .catalogue-tile--joker .catalogue-tile__info,
.play-catalogue-view--compact .catalogue-tile--bonus .catalogue-tile__info {
    align-self: center;
    justify-content: center;
    padding: 0;
    gap: 0;
    margin-left: 0.35rem;
}

.play-catalogue-view--compact .catalogue-tile__name-row,
.play-catalogue-view--compact .catalogue-tile--manager .catalogue-tile__name-row,
.play-catalogue-view--compact .catalogue-tile--joker .catalogue-tile__name-row,
.play-catalogue-view--compact .catalogue-tile--bonus .catalogue-tile__name-row {
    align-items: center;
    gap: 0.35rem;
}

.play-catalogue-view--compact .catalogue-tile__name {
    font-size: 0.8rem;
}

.play-catalogue-view--compact .catalogue-tile__info-btn.card-btn-effect {
    width: 1.1rem;
    height: 1.1rem;
    min-width: 1.1rem;
    font-size: 0.58rem;
}

.detail-deck.play-catalogue-view--compact .catalogue-tile__value {
    min-width: var(--tile-value-w);
    max-width: calc(var(--tile-value-w) + 0.5rem);
    flex-basis: var(--tile-value-w);
    padding: 0 var(--tile-value-pad);
}

.detail-deck.play-catalogue-view--compact .catalogue-tile__value-amount {
    font-size: var(--tile-value-fs);
}

.detail-deck.play-catalogue-view--compact .catalogue-tile__value-unit {
    font-size: var(--tile-value-unit-fs);
}

.detail-deck.play-catalogue-view--compact .catalogue-tile--with-points {
    --tile-pts-w: 2.35rem;
}

.detail-deck.play-catalogue-view--compact .catalogue-tile__pts-amount {
    font-size: calc(var(--tile-value-fs) * 0.88);
}

@media (max-width: 480px) {
    .play-catalogue-view--compact .catalogue-tile {
        --tile-photo-w: 2.15rem;
    }

    .play-catalogue-view--compact .catalogue-tile__photo--manager {
        width: var(--tile-photo-w);
    }

    .play-catalogue-view--compact .catalogue-tile__photo img {
        height: calc(var(--tile-h) - 0.45rem);
    }

    .play-catalogue-view--compact .catalogue-tile__photo--manager img {
        width: 100%;
        height: calc(var(--tile-h) - 0.55rem);
        object-fit: cover;
        object-position: center 8%;
    }

    .play-catalogue-view--compact .catalogue-tile__photo::after {
        width: 0.65rem;
    }

    .play-catalogue-view--compact .catalogue-tile__icon-wrap {
        width: 2.15rem;
    }
}

@media (min-width: 768px) {
    .play-catalogue-view--compact .catalogue-tile,
    .detail-deck.play-catalogue-view--compact .catalogue-tile {
        --tile-h:         3.4rem;
        --tile-photo-w:   2.85rem;
        --tile-value-w:   3.5rem;
        --tile-value-fs:  1.15rem;
    }

    .play-catalogue-view--compact .catalogue-tile--manager,
    .play-catalogue-view--compact .catalogue-tile--joker,
    .play-catalogue-view--compact .catalogue-tile--bonus,
    .play-catalogue-view--compact .catalogue-tile--has-effect,
    .detail-deck.play-catalogue-view--compact .catalogue-tile--manager,
    .detail-deck.play-catalogue-view--compact .catalogue-tile--joker,
    .detail-deck.play-catalogue-view--compact .catalogue-tile--bonus,
    .detail-deck.play-catalogue-view--compact .catalogue-tile--has-effect {
        --tile-h: 3.4rem;
    }

    .play-catalogue-view--compact .catalogue-tile__icon-wrap {
        width: 2.85rem;
    }

    .play-catalogue-view--compact .catalogue-tile__name {
        font-size: 0.84rem;
    }

    /* race.php — 2 tuiles par ligne en vue compacte (≥ tablette) */
    .page-play .play-catalogue-view--compact .play-catalogue-tiles-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.32rem 0.5rem;
    }

    .page-play .play-catalogue-view--compact .play-catalogue-tiles-grid > .catalogue-tile {
        min-width: 0;
        --tile-photo-w: 2.35rem;
        --tile-value-w: 2.95rem;
        --tile-value-pad: 0.25rem;
        --tile-value-fs: 1.05rem;
        --tile-value-unit-fs: 0.56rem;
    }

    .page-play .play-catalogue-view--compact .catalogue-tile__icon-wrap {
        width: 2.35rem;
    }

    .page-play .play-catalogue-view--compact .catalogue-tile__name {
        font-size: 0.78rem;
    }

    /* detail-deck compact (deck parfait, dashboard, …) — 2 tuiles par ligne */
    .detail-deck.play-catalogue-view--compact {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.32rem 0.5rem;
    }

    .detail-deck.play-catalogue-view--compact > .detail-deck-slot,
    .detail-deck.play-catalogue-view--compact > .catalogue-tile {
        min-width: 0;
    }

    .detail-deck.play-catalogue-view--compact .catalogue-tile {
        --tile-photo-w: 2.35rem;
        --tile-value-w: 2.95rem;
        --tile-value-pad: 0.25rem;
        --tile-value-fs: 1.05rem;
        --tile-value-unit-fs: 0.56rem;
    }

    .detail-deck.play-catalogue-view--compact .catalogue-tile__icon-wrap {
        width: 2.35rem;
    }

    .detail-deck.play-catalogue-view--compact .catalogue-tile__name {
        font-size: 0.78rem;
    }

    .detail-deck.play-catalogue-view--compact .catalogue-tile--with-points {
        --tile-pts-w: 2.1rem;
    }
}

@media (min-width: 1024px) {
    .play-catalogue-view--compact .catalogue-tile {
        --tile-value-w: 3.65rem;
        --tile-value-fs: 1.2rem;
    }

    .page-play .play-catalogue-view--compact .play-catalogue-tiles-grid > .catalogue-tile {
        --tile-photo-w: 2.5rem;
        --tile-value-w: 3.1rem;
        --tile-value-fs: 1.08rem;
    }

    .page-play .play-catalogue-view--compact .catalogue-tile__icon-wrap {
        width: 2.5rem;
    }

    .page-play .play-catalogue-view--compact .catalogue-tile__name {
        font-size: 0.8rem;
    }

    .detail-deck.play-catalogue-view--compact .catalogue-tile {
        --tile-photo-w: 2.5rem;
        --tile-value-w: 3.1rem;
        --tile-value-fs: 1.08rem;
    }

    .detail-deck.play-catalogue-view--compact .catalogue-tile__icon-wrap {
        width: 2.5rem;
    }

    .detail-deck.play-catalogue-view--compact .catalogue-tile__name {
        font-size: 0.8rem;
    }
}

/* ================================================================
   ANIMATION D'ENTRÉE (stagger sur les tuiles)
   ================================================================ */

@media (prefers-reduced-motion: no-preference) {
    .catalogue-tiles-grid .catalogue-tile,
    .play-catalogue-tiles-grid .catalogue-tile {
        animation: tile-in 0.22s ease both;
    }

    .catalogue-tiles-grid .catalogue-tile:nth-child(1),
    .play-catalogue-tiles-grid .catalogue-tile:nth-child(1)  { animation-delay: 0ms; }
    .catalogue-tiles-grid .catalogue-tile:nth-child(2),
    .play-catalogue-tiles-grid .catalogue-tile:nth-child(2)  { animation-delay: 28ms; }
    .catalogue-tiles-grid .catalogue-tile:nth-child(3),
    .play-catalogue-tiles-grid .catalogue-tile:nth-child(3)  { animation-delay: 56ms; }
    .catalogue-tiles-grid .catalogue-tile:nth-child(4),
    .play-catalogue-tiles-grid .catalogue-tile:nth-child(4)  { animation-delay: 84ms; }
    .catalogue-tiles-grid .catalogue-tile:nth-child(5),
    .play-catalogue-tiles-grid .catalogue-tile:nth-child(5)  { animation-delay: 112ms; }
    .catalogue-tiles-grid .catalogue-tile:nth-child(n+6),
    .play-catalogue-tiles-grid .catalogue-tile:nth-child(n+6) { animation-delay: 140ms; }

    @keyframes tile-in {
        from { opacity: 0; transform: translateY(6px); }
        to   { opacity: 1; transform: translateY(0); }
    }
}