/*
 * Cartes de contenu : le conteneur générique des offres, étapes, articles et
 * réalisations. Une seule définition, déclinée par des modificateurs.
 */

.carte {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: clamp(1.5rem, 3vw, 2.25rem);
    border: 1px solid var(--trait);
    border-radius: var(--rayon-lg);
    background-color: color-mix(in srgb, var(--fond-eleve) 62%, transparent);
    overflow: hidden;
    isolation: isolate;
    transition: border-color 0.45s var(--ease-sortie), transform 0.55s var(--ease-sortie);
}

/* Le halo suit le pointeur : deux variables CSS mises à jour au survol. */
.carte::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    opacity: 0;
    background: radial-gradient(
        22rem 22rem at var(--souris-x, 50%) var(--souris-y, 0%),
        rgb(46 163 242 / 0.14),
        transparent 70%
    );
    transition: opacity 0.5s var(--ease-sortie);
}

.carte:hover {
    border-color: var(--trait-fort);
}

.carte:hover::before {
    opacity: 1;
}

.carte__index {
    color: var(--texte-tres-doux);
}

.carte__titre {
    font-family: var(--police-titre);
    font-size: var(--t-lg);
    font-weight: 700;
    letter-spacing: -0.01em;
    line-height: 1.06;
}

.carte__texte {
    color: var(--texte-doux);
    text-wrap: pretty;
}

.carte__liste {
    display: grid;
    gap: 0.55rem;
    margin-block-start: auto;
    padding-block-start: 1rem;
    border-block-start: 1px solid var(--trait);
    font-size: var(--t-sm);
    color: var(--texte-doux);
}

.carte__liste li {
    display: grid;
    grid-template-columns: 0.9em 1fr;
    gap: 0.6rem;
    align-items: baseline;
}

/* Le marqueur reprend le motif du circuit : un carré, pas une puce ronde. */
.carte__liste li::before {
    content: "";
    inline-size: 0.34em;
    block-size: 0.34em;
    background: var(--accent);
    transform: translateY(-0.15em);
}

/* Lien qui couvre toute la carte, sans imbriquer d'ancre dans du contenu. */
.carte__lien::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
}

.carte--vedette {
    background: #fff;
    border-color: rgb(46 163 242 / 0.5);
    box-shadow: 0 0 0 4px rgb(46 163 242 / 0.08);
}

.carte--plate {
    background: transparent;
    border-color: transparent;
    border-block-start: 1px solid var(--trait);
    border-radius: 0;
    padding-inline: 0;
}

.inverse .carte {
    background-color: color-mix(in srgb, #ffffff 78%, transparent);
    border-color: rgb(15 8 65 / 0.12);
}

/* — Étiquette — */
.etiquette {
    /* Dans une grille, un inline-flex s'étire malgré tout, dans les deux sens :
       sans align-self, la pastille « Avant » devenait un rond. */
    justify-self: start;
    align-self: start;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.32rem 0.7rem;
    border: 1px solid var(--trait-fort);
    border-radius: var(--rayon-plein);
    font-family: var(--police-mono);
    font-size: var(--t-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--texte-doux);
}

.etiquette--pleine {
    background: var(--electrique);
    border-color: transparent;
    color: #fff;
}
