/*
 * Charte graphique OccazVerif — direction « La Cote » (design system Broadsheet).
 * Fond papier, encre quasi noire, deux accents quadri (cyan / magenta), une seule
 * famille serif. Les variables historiques --ra-* sont conservées (utilisées par
 * des pages admin/légales hors périmètre de cette refonte) mais repointées vers
 * la nouvelle palette, pour que tout le site en hérite sans réécrire chaque
 * gabarit.
 */

@import url('https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,wght@0,400;0,600;1,400&display=swap');

:root {
    color-scheme: light;

    /* ===== Tokens de référence Broadsheet ===== */
    --color-bg: #f3f2f2;
    --color-surface: #eae9e9;
    --color-text: #201e1d;
    --color-divider: color-mix(in srgb, #201e1d 16%, transparent);

    --color-accent: #0088b0;
    --color-accent-100: #e9f8ff;
    --color-accent-200: #cbeeff;
    --color-accent-300: #99e0ff;
    --color-accent-400: #62c5ee;
    --color-accent-500: #38a6cf;
    --color-accent-600: #1186ac;
    --color-accent-700: #006786;
    --color-accent-800: #004961;
    --color-accent-900: #0a303e;

    --color-accent-2: #d6006c;
    --color-accent-2-100: #fff1f4;
    --color-accent-2-200: #ffdee6;
    --color-accent-2-300: #ffc0d0;
    --color-accent-2-400: #ff90b1;
    --color-accent-2-500: #ff458e;
    --color-accent-2-600: #d82071;
    --color-accent-2-700: #aa0b56;
    --color-accent-2-800: #790e3d;
    --color-accent-2-900: #4b1528;

    --color-neutral-100: #f8f4f4;
    --color-neutral-200: #eae7e7;
    --color-neutral-300: #d7d3d3;
    --color-neutral-400: #bab6b6;
    --color-neutral-500: #9b9797;
    --color-neutral-600: #7d7979;
    --color-neutral-700: #605d5d;
    --color-neutral-800: #444141;
    --color-neutral-900: #2d2b2b;

    --color-process-yellow: #edbb00;

    --font-heading: "Source Serif 4", Georgia, serif;
    --font-heading-weight: 600;
    --font-body: "Source Serif 4", Georgia, serif;

    --space-1: 5px;
    --space-2: 10px;
    --space-3: 15px;
    --space-4: 20px;
    --space-6: 30px;
    --space-8: 40px;
    --gutter-site: 56px;

    /* ===== Variables historiques du site, repointées vers les tokens ci-dessus ===== */
    --ra-primary: var(--color-accent);
    --ra-primary-dark: var(--color-accent-700);
    --ra-primary-light: var(--color-accent-100);
    --ra-accent: var(--color-accent-2-600);
    --ra-accent-dark: var(--color-accent-2-700);

    --ra-bg: var(--color-bg);
    --ra-surface: var(--color-surface);
    --ra-border: var(--color-neutral-300);
    --ra-text: var(--color-text);
    --ra-text-muted: var(--color-neutral-700);

    /* Scores du moteur Prix (App\Enum\PriceLabel) */
    --ra-score-excellente: #1f7a4d;
    --ra-score-bonne: var(--color-accent-700);
    --ra-score-correcte: var(--color-neutral-700);
    --ra-score-cher: #a3591a;
    --ra-score-trop-cher: var(--color-accent-2-700);

    /* Échelle — quasi carrée, sans ombre */
    --ra-radius-sm: 2px;
    --ra-radius-md: 2px;
    --ra-radius-lg: 4px;
    --ra-shadow-card: none;
    --ra-shadow-lift: none;
    --ra-max-width: 1120px;
}

* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    overflow-x: hidden;
}

body {
    margin: 0;
    background: var(--ra-bg);
    color: var(--ra-text);
    font-family: var(--font-body);
    font-size: 15px;
    line-height: 1.55;
    overflow-x: hidden;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    line-height: 1.15;
    letter-spacing: -0.015em;
    margin: 0 0 var(--space-2);
}

img {
    max-width: 100%;
    display: block;
}

a {
    color: var(--ra-primary);
    text-underline-offset: 3px;
}

a:hover {
    color: var(--ra-primary-dark);
}

:focus-visible {
    outline: 2px solid var(--ra-primary);
    outline-offset: 2px;
}

.container {
    width: 100%;
    max-width: var(--ra-max-width);
    margin: 0 auto;
    padding: 0 var(--gutter-site);
}

/* ---------- Logo « B5 » ---------- */

.brand {
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    letter-spacing: -0.02em;
}

.brand-v {
    color: var(--color-accent-2-600);
}

.on-dark .brand-v {
    color: var(--color-accent-2-400);
}

/* ---------- Écart au marché — la donnée centrale ---------- */

.gap-good {
    color: var(--color-accent-700);
}

.gap-flat {
    color: var(--color-neutral-700);
}

.gap-bad {
    color: var(--color-accent-2-700);
}

/* ---------- En-tête ---------- */

.site-header {
    position: sticky;
    top: 0;
    z-index: 20;
    background: rgba(243, 242, 242, 0.92);
    backdrop-filter: blur(8px);
    border-bottom: 1px solid var(--color-divider);
}

.site-header__inner {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 24px;
}

/* ---------- Bouton menu mobile (masqué en desktop, voir @media 720px) ---------- */

.site-nav-toggle {
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    width: 40px;
    height: 40px;
    padding: 0;
    border: 1px solid var(--ra-border);
    border-radius: var(--ra-radius-sm);
    background: var(--ra-surface);
    cursor: pointer;
    flex-shrink: 0;
}

.site-nav-toggle__bar {
    display: block;
    width: 18px;
    height: 2px;
    background: var(--ra-text);
    border-radius: 2px;
    transition: transform 0.15s ease, opacity 0.15s ease;
}

.site-nav-toggle--active .site-nav-toggle__bar:nth-child(1) {
    transform: translateY(6px) rotate(45deg);
}

.site-nav-toggle--active .site-nav-toggle__bar:nth-child(2) {
    opacity: 0;
}

.site-nav-toggle--active .site-nav-toggle__bar:nth-child(3) {
    transform: translateY(-6px) rotate(-45deg);
}

.site-logo {
    display: inline-flex;
    align-items: center;
    font-size: 1.4rem;
    text-decoration: none;
    color: var(--ra-text);
}

.site-logo:hover {
    color: var(--ra-text);
}

.site-nav {
    display: flex;
    align-items: center;
    gap: 28px;
}

.site-nav a {
    text-decoration: none;
    font-weight: 600;
    font-size: 0.92rem;
    color: var(--ra-text-muted);
    transition: color 0.15s ease;
}

.site-nav a:hover {
    color: var(--ra-primary);
}

/* ---------- Boutons ---------- */

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 13px 24px;
    border-radius: var(--ra-radius-sm);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 0.98rem;
    text-decoration: none;
    border: 2px solid transparent;
    cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.btn:active {
    transform: translateY(1px);
}

.btn-accent {
    background: var(--ra-accent);
    color: #fff;
}

.btn-accent:hover {
    background: var(--ra-accent-dark);
}

.btn-outline {
    background: transparent;
    border-color: var(--color-neutral-400);
    color: var(--ra-text);
}

.btn-outline:hover {
    border-color: var(--ra-primary);
    color: var(--ra-primary);
}

.btn-ghost-light {
    background: transparent;
    border-color: color-mix(in srgb, currentColor 35%, transparent);
    color: #fff;
}

.btn-ghost-light:hover {
    background: rgba(255, 255, 255, 0.12);
}

/* ---------- Hero ---------- */

.hero {
    background: var(--ra-bg);
    color: var(--ra-text);
    padding: var(--space-8) 0 var(--space-6);
    position: relative;
}

.hero__inner {
    position: relative;
    max-width: 640px;
}

.hero__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--ra-primary-dark);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    margin-bottom: var(--space-3);
}

.hero h1 {
    font-size: clamp(2.1rem, 4.5vw, 3.4rem);
    line-height: 1.08;
    letter-spacing: -0.02em;
    margin: 0 0 var(--space-3);
}

.hero h1 span {
    color: var(--color-accent-2-600);
}

.hero p {
    font-family: var(--font-body);
    font-style: italic;
    font-size: 1.15rem;
    color: var(--ra-text-muted);
    margin: 0 0 var(--space-6);
    max-width: 560px;
}

.hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}

/* ---------- Barre de stats ---------- */

.stats-bar {
    position: relative;
    margin-top: var(--space-8);
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    border-top: 1px solid var(--color-divider);
    border-bottom: 1px solid var(--color-divider);
    max-width: var(--ra-max-width);
}

.stats-bar__item {
    padding: var(--space-4) var(--space-4) var(--space-4) 0;
    border-left: 1px solid var(--color-divider);
    padding-left: var(--space-4);
}

.stats-bar__item:first-child {
    border-left: none;
    padding-left: 0;
}

.stats-bar__value {
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    font-size: 1.9rem;
    letter-spacing: -0.02em;
    color: var(--ra-primary-dark);
}

.stats-bar__label {
    font-size: 0.85rem;
    color: var(--ra-text-muted);
    margin-top: 2px;
}

/* ---------- Sections génériques ---------- */

.section {
    padding: 88px 0;
}

.section--tight {
    padding: 64px 0;
}

.section-heading {
    max-width: 620px;
    margin: 0 0 48px;
}

.section-heading__kicker {
    color: var(--ra-primary-dark);
    font-weight: 700;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-bottom: 10px;
}

.section-heading h2 {
    font-size: clamp(1.6rem, 3vw, 2.2rem);
    letter-spacing: -0.02em;
    margin: 0 0 12px;
}

.section-heading p {
    color: var(--ra-text-muted);
    font-size: 1.05rem;
    margin: 0;
}

/* ---------- Cartes ---------- */

.card {
    background: var(--ra-surface);
    border: 1px solid var(--color-divider);
    border-radius: var(--ra-radius-lg);
    padding: 28px;
}

.grid-3 {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 24px;
}

.step-card__number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 10px;
    background: var(--ra-primary-light);
    color: var(--ra-primary);
    font-weight: 800;
    margin-bottom: 18px;
}

.step-card h3 {
    margin: 0 0 8px;
    font-size: 1.1rem;
    letter-spacing: -0.01em;
}

.step-card p {
    margin: 0;
    color: var(--ra-text-muted);
    font-size: 0.96rem;
}

/* ---------- Badges de score (moteur Prix) ---------- */

.badge-price {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 0.85rem;
    font-weight: 700;
    color: #fff;
}

.badge-price::before {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: currentColor;
    box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.35);
}

.badge-price--excellente-affaire { background: var(--ra-score-excellente); }
.badge-price--bonne-affaire { background: var(--ra-score-bonne); }
.badge-price--prix-correct { background: var(--ra-score-correcte); }
.badge-price--cher { background: var(--ra-score-cher); }
.badge-price--trop-cher { background: var(--ra-score-trop-cher); }

.score-showcase {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

/* ---------- Sources ---------- */

.sources-strip {
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: var(--ra-radius-lg);
    padding: 32px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 14px;
    justify-content: space-between;
}

.sources-strip__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.tag {
    background: var(--ra-primary-light);
    color: var(--ra-primary-dark);
    font-weight: 700;
    font-size: 0.85rem;
    padding: 7px 14px;
    border-radius: 999px;
}

/* ---------- CTA bas de page ---------- */

.cta-band {
    background: var(--color-surface);
    color: var(--ra-text);
    border-top: 1px solid var(--color-divider);
    border-bottom: 1px solid var(--color-divider);
    border-radius: 0;
    padding: var(--space-8) var(--gutter-site);
    text-align: center;
}

.cta-band h2 {
    margin: 0 0 12px;
    font-size: clamp(1.5rem, 3vw, 2rem);
    letter-spacing: -0.02em;
}

.cta-band p {
    color: var(--ra-text-muted);
    margin: 0 0 28px;
}

/* ---------- Pied de page ---------- */

.site-footer {
    border-top: 1px solid var(--ra-border);
    padding: 40px 0;
    margin-top: 40px;
}

.site-footer__inner {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    color: var(--ra-text-muted);
    font-size: 0.88rem;
}

.site-footer strong {
    color: var(--ra-text);
}

.site-footer__legal {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 16px;
}

.site-footer__legal a {
    color: var(--ra-text-muted);
    text-decoration: none;
}

.site-footer__legal a:hover {
    text-decoration: underline;
    color: var(--ra-primary-dark);
}

.site-footer__bottom {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 20px;
    width: 100%;
    justify-content: space-between;
    font-size: 0.9rem;
}

.site-footer__credit a {
    color: var(--ra-accent);
    font-weight: 600;
    text-decoration: none;
}

.site-footer__credit a:hover {
    text-decoration: underline;
}

/* Lien admin caché en bas de la page À propos : visible seulement si on le cherche. */
.admin-access {
    margin: 40px 0 0;
    text-align: right;
    font-size: 0.72rem;
}

.admin-access a {
    color: var(--color-neutral-400);
    text-decoration: none;
}

.admin-access a:hover {
    color: var(--ra-text-muted);
    text-decoration: underline;
}

/* ---------- Formulaire de filtres (page recherche) ---------- */

.filters-form {
    margin-top: 8px;
    padding: var(--space-4) 0;
    border-top: 1px solid var(--color-divider);
    border-bottom: 1px solid var(--color-divider);
    margin-bottom: var(--space-6);
}

.filters-form__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 18px;
}

.field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.field label {
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--ra-text-muted);
}

.field input,
.field select {
    padding: 11px 14px;
    border: 1px solid var(--color-neutral-400);
    border-radius: 8px;
    font-size: 0.95rem;
    font-family: inherit;
    background: #ffffff;
    color: var(--ra-text);
    box-shadow: inset 0 1px 2px color-mix(in srgb, #201e1d 6%, transparent);
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.field input:hover,
.field select:hover {
    border-color: var(--color-neutral-500);
}

.field input:focus,
.field select:focus {
    outline: none;
    border-color: var(--ra-primary);
    box-shadow: 0 0 0 3px var(--ra-primary-light);
}

.field select {
    cursor: pointer;
}

/* ---------- Curseurs (sliders) de plage pour prix / annee / kilometrage ---------- */

.filters-form__sliders {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 22px 28px;
    margin-top: 22px;
    padding-top: 20px;
    border-top: 1px solid var(--color-divider);
}

.field--range {
    gap: 10px;
}

.range-slider__values {
    display: flex;
    align-items: baseline;
    gap: 7px;
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--ra-primary-dark);
    font-family: var(--font-heading);
}

.range-slider__values--single {
    justify-content: flex-start;
}

.range-slider__sep {
    color: var(--ra-text-muted);
    font-weight: 400;
}

.range-slider {
    position: relative;
    height: 28px;
    display: flex;
    align-items: center;
}

.range-slider__track {
    position: absolute;
    left: 0;
    right: 0;
    height: 6px;
    border-radius: 999px;
    background: var(--color-neutral-300);
}

.range-slider__fill {
    position: absolute;
    height: 6px;
    border-radius: 999px;
    background: var(--ra-primary);
    left: 0;
    width: 100%;
}

.field input.range-slider__input,
.field input.range-slider__input:focus,
.field input.range-slider__input:hover {
    position: absolute;
    left: 0;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 100%;
    height: 20px;
    margin: 0;
    padding: 0;
    -webkit-appearance: none;
    appearance: none;
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
    pointer-events: none;
    outline: none;
}



.range-slider__input::-webkit-slider-runnable-track {
    -webkit-appearance: none;
    height: 6px;
    background: transparent;
}

.range-slider__input::-moz-range-track {
    height: 6px;
    background: transparent;
    border: none;
}

.range-slider__input::-webkit-slider-thumb {
    -webkit-appearance: none;
    pointer-events: auto;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #ffffff;
    border: 2px solid var(--ra-primary);
    box-shadow: 0 1px 3px color-mix(in srgb, #201e1d 25%, transparent);
    cursor: pointer;
    margin-top: -7px;
    transition: transform 0.1s ease, box-shadow 0.1s ease;
}

.range-slider__input::-moz-range-thumb {
    pointer-events: auto;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #ffffff;
    border: 2px solid var(--ra-primary);
    box-shadow: 0 1px 3px color-mix(in srgb, #201e1d 25%, transparent);
    cursor: pointer;
}

.range-slider__input:hover::-webkit-slider-thumb,
.range-slider__input:focus-visible::-webkit-slider-thumb {
    transform: scale(1.12);
    box-shadow: 0 0 0 4px var(--ra-primary-light);
}

.range-slider__input:focus-visible::-moz-range-thumb {
    box-shadow: 0 0 0 4px var(--ra-primary-light);
}

.range-slider__input--inactive::-webkit-slider-thumb {
    background: var(--color-neutral-200);
    border-color: var(--color-neutral-400);
}

.range-slider__input--inactive::-moz-range-thumb {
    background: var(--color-neutral-200);
    border-color: var(--color-neutral-400);
}

.field--sources {
    margin-top: 18px;
}

.checkbox-group {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.checkbox-group__item {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 8px 14px;
    border: 1px solid var(--color-neutral-400);
    border-radius: 999px;
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--ra-text);
    cursor: pointer;
    background: #ffffff;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}

.checkbox-group__item:hover {
    border-color: var(--ra-primary);
}

.checkbox-group__item:has(input:checked) {
    border-color: var(--ra-primary);
    background: var(--ra-primary-light);
    color: var(--ra-primary-dark);
}

.checkbox-group__item input {
    accent-color: var(--ra-primary);
}

.filters-form__actions {
    display: flex;
    gap: 12px;
    margin-top: 22px;
}

/* ---------- Grille d'annonces ---------- */

.listing-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 22px;
}

.listing-card {
    padding: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.listing-card__link {
    text-decoration: none;
    color: inherit;
    display: flex;
    flex-direction: column;
    flex: 1;
}

.listing-card__photo {
    position: relative;
    aspect-ratio: 4 / 3;
    background: var(--ra-primary-light);
    overflow: hidden;
}

.listing-card__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.listing-card__photo-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    font-size: 2.6rem;
}

.listing-card__badge {
    position: absolute;
    top: 12px;
    left: 12px;
}

.listing-card__body {
    padding: 18px 20px 20px;
}

.listing-card__title {
    margin: 0 0 8px;
    font-size: 1.02rem;
    line-height: 1.3;
    letter-spacing: -0.01em;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.listing-card__meta {
    color: var(--ra-text-muted);
    font-size: 0.86rem;
    margin-bottom: 14px;
}

.listing-card__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.listing-card__price {
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--ra-primary-dark);
}

/* ---------- Pagination ---------- */

.pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    margin-top: 40px;
}

.pagination__status {
    color: var(--ra-text-muted);
    font-weight: 600;
    font-size: 0.9rem;
}

/* ---------- État vide ---------- */

.empty-state {
    text-align: center;
    padding: 56px 32px;
}

.empty-state__icon {
    font-size: 2.4rem;
    display: block;
    margin-bottom: 16px;
}

.empty-state h3 {
    margin: 0 0 8px;
}

.empty-state p {
    color: var(--ra-text-muted);
    margin: 0;
}

/* ---------- Page détail d'une annonce ---------- */

.back-link {
    display: inline-block;
    text-decoration: none;
    color: var(--ra-text-muted);
    font-weight: 600;
    font-size: 0.9rem;
    margin-bottom: 24px;
}

.back-link:hover {
    color: var(--ra-primary);
}

.detail-header {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 28px;
}

.detail-title {
    font-size: clamp(1.5rem, 3vw, 2.1rem);
    letter-spacing: -0.02em;
    margin: 0 0 8px;
}

.detail-subtitle {
    color: var(--ra-text-muted);
    font-size: 1rem;
}

.detail-price-block {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 8px;
}

.detail-price {
    font-size: 1.9rem;
    font-weight: 800;
    color: var(--ra-primary-dark);
    letter-spacing: -0.02em;
}

.detail-gallery {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
    margin-bottom: 40px;
}

.detail-gallery img {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: var(--ra-radius-md);
    border: 1px solid var(--ra-border);
}

.detail-gallery--empty {
    background: var(--ra-primary-light);
    border-radius: var(--ra-radius-md);
    padding: 48px;
    text-align: center;
    color: var(--ra-primary-dark);
}

.detail-gallery--empty span {
    font-size: 2.4rem;
    display: block;
    margin-bottom: 10px;
}

.detail-gallery--empty p {
    margin: 0;
}

.detail-grid {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(240px, 1fr);
    gap: 24px;
    align-items: start;
}

.detail-section {
    margin-bottom: 24px;
}

.detail-section h2 {
    margin: 0 0 14px;
    font-size: 1.15rem;
    letter-spacing: -0.01em;
}

.detail-subheading {
    margin: 22px 0 12px;
    font-size: 0.95rem;
    color: var(--ra-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.text-muted {
    color: var(--ra-text-muted);
    margin: 0;
}

.summary-box {
    background: var(--ra-bg);
    border: 1px solid var(--ra-border);
    border-radius: var(--ra-radius-sm);
    padding: 16px 18px;
    margin: 0;
    line-height: 1.6;
}

.alert-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.alert-item {
    border-radius: var(--ra-radius-sm);
    padding: 12px 14px;
    font-size: 0.92rem;
    line-height: 1.5;
    border: 1px solid transparent;
}

.alert-item__tag {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    padding: 2px 8px;
    border-radius: 999px;
    margin-right: 8px;
    vertical-align: middle;
}

.alert-item--info {
    background: #eef2f6;
    border-color: #dbe3ea;
    color: #40505f;
}

.alert-item--info .alert-item__tag {
    background: #7a8a99;
    color: #fff;
}

.alert-item--warning {
    background: #fdf3e7;
    border-color: #f6dfbd;
    color: #7a4c12;
}

.alert-item--warning .alert-item__tag {
    background: var(--ra-score-cher);
    color: #fff;
}

.alert-item--danger {
    background: #fbeaea;
    border-color: #f2c9c9;
    color: #7a1f1f;
}

.alert-item--danger .alert-item__tag {
    background: var(--ra-score-trop-cher);
    color: #fff;
}

.detail-facts {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 8px 16px;
    margin: 0 0 20px;
    font-size: 0.92rem;
}

.detail-facts dt {
    color: var(--ra-text-muted);
    font-weight: 600;
}

.detail-facts dd {
    margin: 0;
}

.detail-cta {
    width: 100%;
}

/* ---------- Comparateur ---------- */

.compare-toggle {
    display: block;
    width: 100%;
    padding: 12px;
    border: none;
    border-top: 1px solid var(--ra-border);
    background: var(--ra-surface);
    color: var(--ra-text-muted);
    font-weight: 700;
    font-size: 0.88rem;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}

.compare-toggle:hover {
    background: var(--ra-primary-light);
    color: var(--ra-primary-dark);
}

.compare-toggle--active {
    background: var(--ra-primary);
    color: #fff;
    border-top-color: var(--ra-primary);
}

.compare-toggle--active:hover {
    background: var(--ra-primary-dark);
}

.detail-price-block .compare-toggle {
    width: auto;
    border: 1px solid var(--ra-border);
    border-radius: var(--ra-radius-sm);
    background: var(--ra-surface);
}

.detail-price-block .compare-toggle--active {
    background: var(--ra-primary);
    border-color: var(--ra-primary);
}

.compare-bar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 30;
    background: var(--ra-text);
    color: #fff;
    box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.18);
}

.compare-bar__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 16px 24px;
}

.compare-bar__info {
    font-size: 0.92rem;
    color: rgba(255, 255, 255, 0.9);
}

.compare-bar__list {
    display: block;
    color: rgba(255, 255, 255, 0.6);
    font-size: 0.82rem;
    margin-top: 2px;
}

.compare-bar__message {
    margin: 0;
    font-size: 0.85rem;
    color: #ffd8cd;
}

.compare-bar__actions {
    display: flex;
    gap: 10px;
}

.compare-bar .btn-accent:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    box-shadow: none;
}

/* ---------- Tableau de comparaison ---------- */

.compare-table-wrap {
    overflow-x: auto;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: var(--ra-radius-lg);
    box-shadow: var(--ra-shadow-card);
    padding: 8px;
}

.compare-table {
    width: 100%;
    border-collapse: collapse;
}

.compare-table th,
.compare-table td {
    padding: 14px 18px;
    text-align: left;
    border-bottom: 1px solid var(--ra-border);
    vertical-align: middle;
    white-space: nowrap;
}

.compare-table tbody tr:last-child th,
.compare-table tbody tr:last-child td {
    border-bottom: none;
}

.compare-table__row-label {
    color: var(--ra-text-muted);
    font-weight: 700;
    font-size: 0.88rem;
    position: sticky;
    left: 0;
    background: var(--ra-surface);
}

.compare-table__head {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
    min-width: 180px;
    white-space: normal;
}

.compare-table__head img {
    width: 100%;
    max-width: 220px;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: var(--ra-radius-sm);
}

.compare-table__head-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    max-width: 220px;
    aspect-ratio: 4 / 3;
    background: var(--ra-primary-light);
    border-radius: var(--ra-radius-sm);
    font-size: 2rem;
}

.compare-table__head-title {
    font-weight: 700;
    color: var(--ra-text);
    text-decoration: none;
}

.compare-table__head-title:hover {
    color: var(--ra-primary);
}

.compare-table__price {
    font-weight: 800;
    color: var(--ra-primary-dark);
}

/* ---------- Direction « La Cote » — nouveaux composants ---------- */

/* Traitement photo « demi-teinte » (trame de points), pour les visuels d'interface.
   Markup attendu : <div class="halftone"><img ...></div> */
.halftone {
    position: relative;
    overflow: hidden;
    background: var(--color-neutral-200);
}

.halftone img {
    filter: grayscale(1) contrast(1.08);
}

.halftone::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image: radial-gradient(circle, rgba(32, 30, 29, 0.4) 1px, transparent 1px);
    background-size: 4px 4px;
    mix-blend-mode: multiply;
    pointer-events: none;
}

/* « Le relevé du jour » — annonce vedette avec photo, page d'accueil */
.featured-listing {
    display: flex;
    gap: var(--space-6);
    align-items: stretch;
    text-decoration: none;
    color: inherit;
    margin-bottom: var(--space-8);
    padding-bottom: var(--space-6);
    border-bottom: 1px solid var(--color-divider);
}

.featured-listing__photo {
    width: 280px;
    flex-shrink: 0;
    aspect-ratio: 4 / 3;
}

.featured-listing__photo-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.featured-listing__body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.featured-listing__title {
    margin: 4px 0 8px;
    font-size: 1.3rem;
}

.featured-listing__meta {
    color: var(--ra-text-muted);
    font-size: 0.95rem;
    margin-bottom: var(--space-3);
}

/* Carrousel « dernières bonnes affaires » — page d'accueil. Défilement
   horizontal natif (scroll-snap), pas de librairie JS. */
.carousel {
    display: flex;
    gap: var(--space-4);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    padding-bottom: var(--space-2);
    margin: 0 calc(var(--space-4) * -1);
    padding-left: var(--space-4);
    padding-right: var(--space-4);
    -webkit-overflow-scrolling: touch;
}

.carousel__card {
    flex: 0 0 auto;
    width: 240px;
    scroll-snap-align: start;
    text-decoration: none;
    color: inherit;
    display: block;
}

.carousel__photo {
    width: 100%;
    aspect-ratio: 4 / 3;
    margin-bottom: var(--space-2);
}

.carousel__photo-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.carousel__title {
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    font-size: 1rem;
    margin-bottom: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.carousel__meta {
    color: var(--ra-text-muted);
    font-size: 0.9rem;
    margin-bottom: 4px;
}

.carousel__gap {
    font-family: var(--font-heading);
    font-weight: 600;
    font-size: 0.95rem;
}

@media (max-width: 720px) {
    .carousel__card {
        width: 200px;
    }
}

/* Nombre en « quadri mal calé » — la pièce centrale de la direction.
   Markup attendu :
   <span class="cmyk-num">
     <span class="plate plate-c">-8%</span>
     <span class="plate plate-m">-8%</span>
     <span class="plate plate-y">-8%</span>
     -8%
   </span> */
.cmyk-num {
    position: relative;
    display: inline-block;
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    line-height: 1;
    color: var(--color-text);
}

.cmyk-num .plate {
    position: absolute;
    inset: 0;
    mix-blend-mode: multiply;
    pointer-events: none;
}

.cmyk-num .plate-c {
    color: var(--color-accent);
    transform: translate(-2px, 0);
}

.cmyk-num .plate-m {
    color: var(--color-accent-2);
    transform: translate(2px, 1px);
}

.cmyk-num .plate-y {
    color: var(--color-process-yellow);
    transform: translate(0, -1.5px);
}

/* Tableau de données générique (résultats de recherche, comparables) */
.table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.92rem;
}

.table th,
.table td {
    text-align: left;
    padding: var(--space-3);
    border-bottom: 1px solid var(--color-divider);
    vertical-align: middle;
}

.table th {
    font-weight: 600;
    color: var(--ra-text-muted);
    text-transform: uppercase;
    font-size: 0.72rem;
    letter-spacing: 0.04em;
}

.table tbody tr:hover {
    background: var(--color-surface);
}

.table-row-current {
    background: var(--color-accent-100);
}

.table a {
    text-decoration: none;
    color: var(--ra-text);
    font-weight: 600;
}

.table a:hover {
    color: var(--ra-primary);
}

.table__thumb {
    width: 84px;
    height: 60px;
    object-fit: cover;
    border-radius: var(--ra-radius-sm);
}

/* Barre de filtres horizontale (champs natifs, pas de cadre) */
.filter-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-4);
    padding: var(--space-3) 0;
    border-top: 1px solid var(--color-divider);
    border-bottom: 1px solid var(--color-divider);
    margin-bottom: var(--space-6);
}

.filter-bar select,
.filter-bar input {
    border: none;
    border-bottom: 1px solid var(--color-neutral-400);
    background: transparent;
    font-family: var(--font-body);
    font-size: 0.92rem;
    color: var(--ra-text);
    padding: var(--space-1) 2px;
}

.filter-bar select:focus,
.filter-bar input:focus {
    outline: none;
    border-bottom-color: var(--ra-primary);
}

.filter-bar__submit {
    margin-left: auto;
}

/* Questions numérotées (page « Bonne affaire ») */
.question-block {
    display: flex;
    gap: var(--space-4);
    padding: var(--space-6) 0;
    border-bottom: 1px solid var(--color-divider);
}

.question-block:first-child {
    padding-top: 0;
}

.question-block__num {
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    font-size: 1.5rem;
    color: var(--color-neutral-400);
    min-width: 2.2em;
    flex-shrink: 0;
}

.question-block__body {
    flex: 1;
    min-width: 0;
}

.question-block h3 {
    margin: 0 0 var(--space-3);
    font-size: 1.1rem;
}

/* Puces à cocher (énergie, marques à exclure) */
.chip-group {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
}

.chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    border: 1px solid var(--color-neutral-400);
    border-radius: 999px;
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--ra-text);
    cursor: pointer;
    background: var(--color-bg);
    transition: border-color 0.12s ease, color 0.12s ease, background 0.12s ease;
}

.chip:has(input:checked) {
    border-color: var(--color-accent-600);
    color: var(--color-accent-700);
    background: var(--color-accent-100);
}

.chip input {
    accent-color: var(--color-accent-600);
}

.chip--exclude:has(input:checked) {
    border-color: var(--color-accent-2-600);
    color: var(--color-accent-2-700);
    background: var(--color-accent-2-100);
}

.chip--exclude input {
    accent-color: var(--color-accent-2-600);
}

/* Saisie du budget en gros chiffres */
.budget-input {
    display: flex;
    align-items: baseline;
    gap: var(--space-2);
    border-bottom: 2px solid var(--color-neutral-400);
    padding-bottom: var(--space-2);
    max-width: 320px;
}

.budget-input:focus-within {
    border-bottom-color: var(--ra-primary);
}

.budget-input input {
    border: none;
    background: transparent;
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    font-size: 2.4rem;
    color: var(--ra-text);
    width: 100%;
    padding: 0;
}

.budget-input input:focus {
    outline: none;
}

.budget-input__unit {
    font-size: 1.1rem;
    color: var(--ra-text-muted);
}

.budget-shortcuts {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    margin-top: var(--space-3);
}

.budget-shortcuts button {
    border: 1px solid var(--color-neutral-400);
    background: transparent;
    border-radius: 999px;
    padding: 6px 14px;
    font-size: 0.85rem;
    font-family: var(--font-body);
    color: var(--ra-text-muted);
    cursor: pointer;
}

.budget-shortcuts button:hover {
    border-color: var(--ra-primary);
    color: var(--ra-primary);
}

/* Résumé sticky (résultats « Bonne affaire ») */
.summary-sidebar {
    position: sticky;
    top: 100px;
    background: var(--color-surface);
    border-radius: var(--ra-radius-md);
    padding: var(--space-4);
}

.summary-sidebar h4 {
    margin: 0 0 var(--space-3);
    font-size: 0.95rem;
}

.summary-sidebar__count {
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    font-size: 2rem;
    color: var(--ra-primary-dark);
}

.summary-sidebar__list {
    list-style: none;
    margin: var(--space-3) 0 0;
    padding: 0;
    font-size: 0.85rem;
    color: var(--ra-text-muted);
    display: flex;
    flex-direction: column;
    gap: 6px;
}

/* ---------- Responsive ---------- */

@media (max-width: 720px) {
    .site-nav-toggle {
        display: flex;
    }

    /*
     * Sous 720px, la nav horizontale n'a plus la place de tenir à côté du
     * logo (c'est ce qui provoquait l'ancien bug d'affichage : les liens se
     * repliaient lettre par lettre). On la transforme en panneau déroulant,
     * ouvert/fermé par le bouton hamburger (voir mobile_nav_controller.js).
     */
    .site-nav {
        display: none;
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        background: var(--ra-surface);
        border-bottom: 1px solid var(--ra-border);
        box-shadow: var(--ra-shadow-card);
        padding: 8px 0;
    }

    .site-nav--open {
        display: flex;
    }

    .site-nav a {
        padding: 14px 24px;
        font-size: 0.95rem;
    }

    .hero {
        padding: 64px 0 72px;
    }

    .section {
        padding: 56px 0;
    }

    .cta-band {
        padding: 36px 24px;
    }

    .detail-grid {
        grid-template-columns: 1fr;
    }

    .detail-header {
        flex-direction: column;
    }

    .detail-price-block {
        align-items: flex-start;
    }

    .compare-bar__inner {
        flex-direction: column;
        align-items: stretch;
        text-align: center;
    }

    .compare-bar__list {
        display: none;
    }

    .compare-bar__actions {
        justify-content: center;
    }

    .container {
        padding: 0 20px;
    }

    .question-block {
        gap: var(--space-3);
    }

    .summary-sidebar {
        position: static;
    }

    .table {
        font-size: 0.85rem;
    }

    .table__thumb {
        width: 56px;
        height: 40px;
    }

    .featured-listing {
        flex-direction: column;
    }

    .featured-listing__photo {
        width: 100%;
    }
}

/* ---------- Admin / réseaux sociaux ---------- */

.btn-danger {
    background: transparent;
    border-color: var(--ra-score-trop-cher);
    color: var(--ra-score-trop-cher);
}

.btn-danger:hover {
    background: var(--ra-score-trop-cher);
    color: #fff;
}

.flash-list {
    list-style: none;
    margin: 0 0 24px;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.flash {
    border-radius: var(--ra-radius-sm);
    padding: 12px 16px;
    font-size: 0.92rem;
    font-weight: 600;
    border: 1px solid transparent;
}

.flash--success {
    background: #e9f7ee;
    border-color: #bfe6cc;
    color: #1e6b3b;
}

.flash--error {
    background: #fbeaea;
    border-color: #f2c9c9;
    color: #7a1f1f;
}

/* Ligne d'infos (utilisée par admin/collection.html.twig) */
.social-draft__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    font-size: 0.85rem;
    color: var(--ra-text-muted);
}

/* --- Page admin des posts sociaux (/admin/social) --- */

.sp-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 24px;
    flex-wrap: wrap;
    margin-bottom: 28px;
}

.sp-header__title {
    margin: 4px 0 8px;
    font-size: 2rem;
}

.sp-header__lead {
    margin: 0;
    max-width: 620px;
    color: var(--ra-text-muted);
}

.sp-header__side {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 12px;
}

.sp-header__side form { margin: 0; }

.sp-btn--generate {
    width: auto;
    background: var(--color-text);
    color: #fff;
    padding: 12px 22px;
}

.sp-btn--generate:hover { background: #000; color: #fff; }

@media (max-width: 860px) {
    .sp-header__side { align-items: stretch; width: 100%; }
    .sp-btn--generate { width: 100%; }
}

.sp-stats {
    display: flex;
    gap: 12px;
}

.sp-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 120px;
    padding: 14px 18px;
    background: #fff;
    border: 1px solid var(--ra-border);
    border-radius: 12px;
}

.sp-stat__value {
    font-size: 1.9rem;
    font-weight: 700;
    line-height: 1.1;
}

.sp-stat__label {
    font-size: 0.8rem;
    color: var(--ra-text-muted);
}

.sp-stat--accent {
    border-color: var(--ra-accent);
    background: #fdf0f5;
}

.sp-stat--accent .sp-stat__value {
    color: var(--ra-accent);
}

.sp-flash {
    margin-bottom: 18px;
    padding: 14px 18px;
    border-radius: 10px;
    font-weight: 600;
    border: 1px solid transparent;
}

.sp-flash--success { background: #e9f7ee; border-color: #bfe6cc; color: #1e6b3b; }
.sp-flash--error { background: #fbeaea; border-color: #f2c9c9; color: #7a1f1f; }

.sp-card {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
    gap: 28px;
    padding: 26px;
    margin-bottom: 22px;
    background: #fff;
    border: 1px solid var(--ra-border);
    border-radius: 16px;
    box-shadow: 0 6px 24px rgba(32, 30, 29, 0.06);
}

/* Aperçu façon "post" de réseau social */
.sp-post {
    border: 1px solid #e6e3e3;
    border-radius: 14px;
    padding: 16px;
    background: #fff;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
}

.sp-post__head {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
}

.sp-post__avatar {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: var(--color-text);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-family: var(--font-heading);
    flex-shrink: 0;
}

.sp-post__avatar span { color: #ff5c9d; }

.sp-post__who {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
    flex: 1;
}

.sp-post__who span {
    font-size: 0.85rem;
    color: #6b7378;
}

.sp-post__text {
    margin: 0 0 12px;
    white-space: pre-wrap;
    font-size: 0.97rem;
    line-height: 1.5;
    color: #0f1419;
}

.sp-linkcard {
    display: block;
    border: 1px solid #e6e3e3;
    border-radius: 12px;
    overflow: hidden;
    text-decoration: none;
    color: inherit;
}

.sp-linkcard__img {
    display: block;
    width: 100%;
    max-height: 240px;
    object-fit: cover;
}

.sp-linkcard__body {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 10px 14px;
    background: #f7f9f9;
}

.sp-linkcard__domain {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #6b7378;
}

.sp-linkcard__title {
    font-weight: 600;
    color: #0f1419;
}

.sp-card__hint {
    margin: 8px 2px 0;
    font-size: 0.8rem;
    color: var(--ra-text-muted);
}

/* Colonne infos + actions */
.sp-card__side {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.sp-card__badges {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}

.sp-platform {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 700;
    font-size: 0.9rem;
    flex-shrink: 0;
}

.sp-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 12px;
    border-radius: 999px;
    color: #fff;
    font-size: 0.8rem;
    font-weight: 700;
    white-space: nowrap;
}

.sp-platform--x, .sp-chip--x { background: #000; }
.sp-platform--facebook, .sp-chip--facebook { background: #1877f2; }
.sp-platform--instagram, .sp-chip--instagram { background: linear-gradient(45deg, #f09433, #dc2743 50%, #bc1888); }
.sp-platform--pinterest, .sp-chip--pinterest { background: #e60023; }

.sp-facts {
    margin: 0;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--ra-border);
    border-radius: 12px;
    overflow: hidden;
}

.sp-facts > div {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 11px 14px;
    border-bottom: 1px solid var(--ra-border);
}

.sp-facts > div:last-child { border-bottom: none; }

.sp-facts dt {
    color: var(--ra-text-muted);
    font-size: 0.88rem;
}

.sp-facts dd {
    margin: 0;
    font-weight: 600;
    text-align: right;
}

.sp-deal {
    display: inline-block;
    margin-left: 6px;
    padding: 2px 8px;
    border-radius: 999px;
    background: #fde7f0;
    color: var(--ra-accent-dark);
    font-size: 0.8rem;
}

.sp-warning {
    padding: 12px 14px;
    border-radius: 10px;
    background: #fbeaea;
    border: 1px solid #f2c9c9;
    color: #7a1f1f;
    font-size: 0.9rem;
    line-height: 1.45;
}

.sp-warning strong {
    display: block;
    margin-bottom: 2px;
}

.sp-actions {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: auto;
}

.sp-actions form { margin: 0; }

.sp-btn {
    width: 100%;
    border-radius: 10px;
    padding: 14px 20px;
    font-size: 1rem;
}

.sp-btn--publish {
    background: var(--ra-accent);
    color: #fff;
    box-shadow: 0 4px 14px rgba(216, 32, 113, 0.28);
}

.sp-btn--publish:hover {
    background: var(--ra-accent-dark);
}

.sp-btn--publish:disabled {
    background: #d6d1d1;
    box-shadow: none;
    cursor: not-allowed;
}

.sp-btn--reject {
    background: #fff;
    border-color: #e3c2c2;
    color: #9b2c2c;
}

.sp-btn--reject:hover {
    background: #fbeaea;
    border-color: #9b2c2c;
}

.sp-step {
    display: flex;
    gap: 12px;
    align-items: flex-start;
}

.sp-step__num {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--color-text);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    font-weight: 700;
    flex-shrink: 0;
    margin-top: 12px;
}

.sp-step__body {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-width: 0;
}

.sp-step__hint {
    margin: 0;
    font-size: 0.82rem;
    color: var(--ra-text-muted);
    line-height: 1.4;
}

.sp-btn--share {
    color: #fff;
    background: var(--color-text);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);
}

.sp-btn--share.sp-btn--x { background: #000; }
.sp-btn--share.sp-btn--facebook { background: #1877f2; box-shadow: 0 4px 14px rgba(24, 119, 242, 0.3); }
.sp-btn--share.sp-btn--instagram { background: linear-gradient(45deg, #f09433, #dc2743 50%, #bc1888); }
.sp-btn--share.sp-btn--pinterest { background: #e60023; }
.sp-btn--share:hover { filter: brightness(1.12); color: #fff; }

.sp-btn--share:disabled {
    background: #d6d1d1;
    box-shadow: none;
    cursor: not-allowed;
}

.sp-btn--copy {
    background: #fff;
    border-color: var(--ra-border);
    color: var(--color-text);
    padding: 10px 20px;
    font-size: 0.92rem;
}

.sp-btn--copy:hover { border-color: var(--color-text); }

.sp-btn--copy.is-copied {
    background: #e9f7ee;
    border-color: #9fd6b1;
    color: #1e6b3b;
}

.sp-mark {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.sp-input {
    width: 100%;
    padding: 11px 14px;
    border: 1px solid var(--ra-border);
    border-radius: 10px;
    font: inherit;
    font-size: 0.9rem;
    background: #fff;
}

.sp-input:focus {
    outline: none;
    border-color: var(--ra-accent);
    box-shadow: 0 0 0 3px rgba(216, 32, 113, 0.12);
}

.sp-actions__secondary {
    display: flex;
    gap: 10px;
    padding-top: 6px;
    border-top: 1px dashed var(--ra-border);
}

.sp-actions__secondary form { flex: 1; }

.sp-actions__secondary .sp-btn {
    padding: 10px 16px;
    font-size: 0.9rem;
}

.sp-btn--api {
    background: #fff;
    border-color: var(--ra-border);
    color: var(--ra-text-muted);
}

.sp-retry {
    display: block;
    margin: 6px 0 0;
}

.sp-retry__btn {
    background: none;
    border: none;
    padding: 0;
    color: var(--color-accent);
    font: inherit;
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
}

.sp-retry__btn:hover { text-decoration: underline; }

.sp-link {
    text-align: center;
    font-size: 0.9rem;
    color: var(--color-accent);
    text-decoration: none;
    font-weight: 600;
}

.sp-link:hover { text-decoration: underline; }

.sp-empty {
    text-align: center;
    padding: 48px 24px;
    background: #fff;
    border: 1px dashed var(--color-neutral-400);
    border-radius: 16px;
}

.sp-empty__icon { font-size: 2.4rem; }
.sp-empty h3 { margin: 10px 0 6px; }
.sp-empty p { margin: 0 0 12px; color: var(--ra-text-muted); }

.sp-empty code {
    display: inline-block;
    padding: 8px 14px;
    border-radius: 8px;
    background: var(--color-text);
    color: #fff;
    font-size: 0.85rem;
}

.sp-section-title {
    margin: 44px 0 14px;
}

.sp-history {
    background: #fff;
    border: 1px solid var(--ra-border);
    border-radius: 14px;
    overflow-x: auto;
}

.sp-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.sp-table th,
.sp-table td {
    text-align: left;
    padding: 13px 16px;
    border-bottom: 1px solid var(--ra-border);
    vertical-align: middle;
}

.sp-table tbody tr:last-child td { border-bottom: none; }
.sp-table tbody tr:hover { background: #faf9f9; }

.sp-table th {
    background: #faf9f9;
    color: var(--ra-text-muted);
    font-weight: 700;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.sp-table__content { min-width: 260px; color: #3d3836; }
.sp-table__date { white-space: nowrap; color: var(--ra-text-muted); }
.sp-table__detail { min-width: 220px; }
.sp-error { color: #9b2c2c; font-size: 0.85rem; }

@media (max-width: 860px) {
    .sp-card {
        grid-template-columns: 1fr;
        padding: 18px;
    }

    .sp-stats { width: 100%; }
    .sp-stat { flex: 1; }
}

.badge-status {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 12px;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 700;
}

.badge-status--draft { background: #eef2f6; color: #40505f; }
.badge-status--posted { background: #e9f7ee; color: #1e6b3b; }
.badge-status--rejected { background: #eef2f6; color: #7a8a99; }
.badge-status--failed { background: #fbeaea; color: #7a1f1f; }
.badge-status--running { background: #eaf2fb; color: #1c4e80; }
.badge-status--completed { background: #e9f7ee; color: #1e6b3b; }
.badge-status--stopped { background: #fdf3e3; color: #8a5a10; }

/* ---------- Formulaires admin (compte, etc.) ---------- */

.form-group {
    margin-bottom: 16px;
}

.form-group label {
    display: block;
    margin-bottom: 6px;
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--ra-text);
}

.form-group input,
.form-group select,
.form-group textarea {
    width: 100%;
    padding: 11px 14px;
    border: 1px solid var(--color-neutral-400);
    border-radius: 8px;
    font-size: 1rem;
    font-family: inherit;
    background: #ffffff;
    color: var(--ra-text);
    box-shadow: inset 0 1px 2px color-mix(in srgb, #201e1d 6%, transparent);
    box-sizing: border-box;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.form-group textarea {
    resize: vertical;
}

.form-group input:hover,
.form-group select:hover,
.form-group textarea:hover {
    border-color: var(--color-neutral-500);
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
    outline: none;
    border-color: var(--ra-primary);
    box-shadow: 0 0 0 3px var(--ra-primary-light);
}

/* ---------- Pages de connexion admin (login, 2FA) ---------- */

.auth-page {
    display: flex;
    justify-content: center;
    padding: 64px 20px;
}

.auth-card {
    width: 100%;
    max-width: 380px;
}

.auth-card h1 {
    font-size: 1.3rem;
    margin: 0 0 18px;
}

.auth-card .form-group {
    margin-bottom: 18px;
}

.auth-card .btn {
    width: 100%;
    margin-top: 6px;
}

.auth-checkbox {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 400;
    font-size: 0.9rem;
    margin-bottom: 18px;
}

.auth-checkbox input {
    width: auto;
}

.auth-card .flash--error {
    margin-bottom: 18px;
}

.auth-cancel {
    text-align: center;
    margin-top: 18px;
    font-size: 0.85rem;
}

.auth-cancel a {
    color: var(--ra-text-muted);
}

.form-group input:focus {
    outline: none;
    border-color: var(--ra-primary);
}

/* ---------- Tableau de bord admin ---------- */

.admin-dashboard-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 16px;
}

.admin-dashboard-card {
    display: block;
    text-decoration: none;
    color: inherit;
    transition: box-shadow 0.15s ease, transform 0.15s ease;
}

.admin-dashboard-card:hover {
    box-shadow: var(--ra-shadow-lift);
    transform: translateY(-2px);
}

.admin-dashboard-card h3 {
    margin: 0 0 8px;
    color: var(--ra-primary);
}

.admin-dashboard-card p {
    margin: 0;
    color: var(--ra-text-muted);
    font-size: 0.92rem;
}

.social-history-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.social-history-table th,
.social-history-table td {
    text-align: left;
    padding: 10px 12px;
    border-bottom: 1px solid var(--ra-border);
    vertical-align: top;
}

.social-history-table th {
    color: var(--ra-text-muted);
    font-weight: 700;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* ---------- Pages légales (mentions, CGU, confidentialité, à propos...) ---------- */

.legal-page {
    max-width: 760px;
}

.legal-page__card h3 {
    font-size: 1.1rem;
    margin: 28px 0 10px;
}

.legal-page__card h3:first-child {
    margin-top: 0;
}

.legal-page__card p {
    color: var(--ra-text);
    margin: 0 0 4px;
}

.legal-page__list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.legal-page__list li {
    padding: 6px 0;
    border-bottom: 1px solid var(--ra-border);
}

.legal-page__list li:last-child {
    border-bottom: none;
}

.legal-page__crosslinks {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 18px;
    margin-top: 24px;
    font-size: 0.85rem;
}

.legal-page__crosslinks a {
    color: var(--ra-text-muted);
    text-decoration: underline;
}

.legal-page__crosslinks a[aria-current="page"] {
    color: var(--ra-primary-dark);
    font-weight: 700;
    text-decoration: none;
}


/* ======================================================================
   Hero slider — grand carrousel photo en haut de l'accueil (vitrine des
   meilleures affaires, pleine largeur). Même source de données que
   .carousel plus bas dans la page, mais traitement "immersif" : photo en
   plein cadre + overlay dégradé, pour donner tout de suite envie de
   regarder plutôt qu'un bloc de texte.
   ====================================================================== */
.hero-slider {
    position: relative;
    width: 100vw;
    margin-left: calc(50% - 50vw);
    height: min(62vh, 560px);
    min-height: 320px;
    overflow: hidden;
    background: var(--color-neutral-900);
}

.hero-slider__track {
    display: flex;
    height: 100%;
    transition: transform 0.45s cubic-bezier(0.22, 0.61, 0.36, 1);
    touch-action: pan-y;
    cursor: grab;
}

.hero-slider__track:active {
    cursor: grabbing;
}

.hero-slider__slide {
    flex: 0 0 100%;
    min-width: 100%;
    height: 100%;
    position: relative;
    display: block;
    text-decoration: none;
    color: #fff;
}

.hero-slider__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    -webkit-user-drag: none;
    user-select: none;
}

.hero-slider__overlay {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: var(--space-8) var(--gutter-site) var(--space-6);
    background: linear-gradient(0deg, rgba(10, 9, 9, 0.82) 0%, rgba(10, 9, 9, 0.35) 55%, rgba(10, 9, 9, 0) 100%);
}

.hero-slider__title {
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    font-size: clamp(1.2rem, 2.6vw, 1.7rem);
    margin-bottom: 4px;
    max-width: 640px;
}

.hero-slider__meta {
    font-size: 1rem;
    opacity: 0.92;
    display: flex;
    align-items: center;
    gap: 10px;
}

.hero-slider__gap {
    font-family: var(--font-heading);
    font-weight: 700;
    padding: 2px 10px;
    border-radius: var(--ra-radius-sm);
    background: rgba(255, 255, 255, 0.14);
}

.hero-slider__arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: none;
    background: rgba(10, 9, 9, 0.4);
    color: #fff;
    font-size: 1.6rem;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background 0.15s ease;
}

.hero-slider__arrow:hover {
    background: rgba(10, 9, 9, 0.65);
}

.hero-slider__arrow--prev {
    left: var(--space-4);
}

.hero-slider__arrow--next {
    right: var(--space-4);
}

.hero-slider__dots {
    position: absolute;
    left: 0;
    right: 0;
    bottom: var(--space-3);
    display: flex;
    justify-content: center;
    gap: 8px;
}

.hero-slider__dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    border: none;
    padding: 0;
    background: rgba(255, 255, 255, 0.5);
    cursor: pointer;
    transition: background 0.15s ease, transform 0.15s ease;
}

.hero-slider__dot--active {
    background: #fff;
    transform: scale(1.3);
}

@media (max-width: 720px) {
    .hero-slider {
        height: 46vh;
        min-height: 260px;
    }

    .hero-slider__arrow {
        width: 36px;
        height: 36px;
        font-size: 1.3rem;
    }

    .hero-slider__title {
        font-size: 1.05rem;
    }

    .hero-slider__meta {
        font-size: 0.9rem;
    }
}

/* ======================================================================
   Bouton "Partager" — page annonce (voir share_controller.js). Même
   gabarit visuel que .detail-price-block .compare-toggle, pour rester
   cohérent à côté de lui, sans hériter de son état "actif".
   ====================================================================== */
.share-button {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 12px 14px;
    border: 1px solid var(--ra-border);
    border-radius: var(--ra-radius-sm);
    background: var(--ra-surface);
    color: var(--ra-text-muted);
    font-weight: 700;
    font-size: 0.88rem;
    font-family: var(--font-body);
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.share-button:hover {
    background: var(--ra-primary-light);
    color: var(--ra-primary-dark);
    border-color: var(--ra-primary);
}


/* ---------- Pop-up "Vous êtes professionnel ?" (lead-gen API Pro) ---------- */

/* Bouton admin "📣 Préparer un post" sur la page d'une annonce */
.admin-post-form { margin: 0; display: inline-flex; }

.admin-post-button {
    border-color: var(--ra-accent);
    color: var(--ra-accent);
    background: #fff;
}

.admin-post-button:hover {
    background: #fdf0f5;
    color: var(--ra-accent-dark);
    border-color: var(--ra-accent-dark);
}

.pro-lead-popup {
    position: fixed;
    right: 20px;
    /* 90px de dégagement : la bannière cookies (bottom:0, z-index:100) et la
       barre de comparaison (bottom:0, z-index:30) sont toutes deux plaquées
       en bas sur toute la largeur — la pop-up doit flotter au-dessus, jamais
       superposée à l'une des deux. */
    bottom: 90px;
    z-index: 90;
    max-width: 340px;
    width: calc(100% - 40px);
    transform: translateY(24px);
    opacity: 0;
    pointer-events: none;
    transition: transform 0.25s ease, opacity 0.25s ease;
}

.pro-lead-popup--visible {
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
}

.pro-lead-popup__card {
    position: relative;
    background: #ffffff;
    border: 1px solid var(--color-neutral-400);
    border-radius: var(--ra-radius-lg);
    box-shadow: 0 8px 28px color-mix(in srgb, #201e1d 18%, transparent);
    padding: 22px 20px;
}

.pro-lead-popup__close {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 28px;
    height: 28px;
    border: none;
    background: transparent;
    font-size: 1.3rem;
    line-height: 1;
    color: var(--ra-text-muted);
    cursor: pointer;
}

.pro-lead-popup__close:hover {
    color: var(--ra-text);
}

.pro-lead-popup__kicker {
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--ra-primary);
    margin: 0 0 6px;
}

.pro-lead-popup__card h3 {
    margin: 0 0 8px;
    font-size: 1.1rem;
    padding-right: 20px;
}

.pro-lead-popup__card p {
    margin: 0 0 14px;
    font-size: 0.9rem;
    color: var(--ra-text-muted);
}

.pro-lead-popup__card .form-group {
    margin-bottom: 12px;
}

.pro-lead-popup__card .btn {
    width: 100%;
}

.pro-lead-popup__honeypot {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    opacity: 0;
}

.pro-lead-popup__error {
    color: #7a1f1f;
    font-size: 0.85rem;
    margin: -4px 0 12px;
}

@media (max-width: 480px) {
    .pro-lead-popup {
        right: 10px;
        bottom: 90px;
        left: 10px;
        max-width: none;
        width: auto;
    }
}

/* ---------- Flèche "remonter en haut" ---------- */

.back-to-top {
    position: fixed;
    right: 20px;
    /* même dégagement que la pop-up pro (90px) : la bannière cookies et la
       barre de comparaison sont toutes deux plaquées en bas sur toute la
       largeur, la flèche doit flotter au-dessus. */
    bottom: 90px;
    z-index: 90;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: none;
    background: var(--ra-accent);
    color: #fff;
    font-size: 1.2rem;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);
    opacity: 0;
    transform: translateY(12px);
    pointer-events: none;
    transition: opacity 0.2s ease, transform 0.2s ease, background 0.2s ease;
}

.back-to-top--visible {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.back-to-top:hover {
    background: var(--ra-accent-dark);
}

/* La pop-up pro et la flèche partagent le même coin (bas-droite) — quand la
   pop-up est affichée, la flèche remonte au-dessus pour ne jamais se
   superposer à sa carte. */
.pro-lead-popup--visible ~ .back-to-top {
    bottom: 300px;
}

@media (max-width: 480px) {
    .back-to-top {
        right: 14px;
        bottom: 90px;
        width: 40px;
        height: 40px;
    }
}

/* ======================================================================
   Pages "Prix du marché" (/prix-occasion/...) — voir MarketPriceController
   ====================================================================== */
.mp-breadcrumb {
    font-size: 0.85rem;
    color: var(--ra-text-muted);
    margin-bottom: var(--space-4);
}

.mp-breadcrumb a {
    color: var(--ra-text-muted);
}

.mp-breadcrumb span[aria-current] {
    color: var(--ra-text);
}

.mp-heading h1 {
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    font-size: clamp(1.7rem, 4vw, 2.5rem);
    line-height: 1.15;
    margin: var(--space-2) 0 var(--space-3);
}

.mp-intro {
    max-width: 760px;
    font-size: 1.05rem;
}

.mp-stats {
    margin-top: var(--space-6);
}

.mp-stats__range {
    font-size: 1.45rem;
}

.mp-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-3);
    margin-top: var(--space-6);
}

.mp-table-wrap {
    overflow-x: auto;
}

.mp-table td a {
    font-weight: 600;
}

.mp-bar-cell {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    min-width: 160px;
}

.mp-bar {
    display: inline-block;
    height: 8px;
    min-width: 4px;
    max-width: 140px;
    flex: 0 1 auto;
    background: var(--ra-primary);
    border-radius: 999px;
}

.mp-two-cols {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: var(--space-6);
}

.mp-h2-small {
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    font-size: 1.3rem;
    margin: var(--space-6) 0 var(--space-3);
}

.mp-verdict .mp-h2-small {
    margin-top: 0;
}

.mp-verdict ul {
    padding-left: 1.2em;
    margin: 0 0 var(--space-3);
}

.mp-verdict li {
    margin-bottom: var(--space-2);
}

.mp-faq__item {
    border-bottom: 1px solid var(--color-divider);
    padding: var(--space-3) 0;
}

.mp-faq__item summary {
    cursor: pointer;
    font-weight: 600;
}

.mp-faq__item p {
    margin: var(--space-2) 0 0;
}

.mp-links {
    list-style: none;
    padding: 0;
    margin: 0 0 var(--space-4);
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
    gap: var(--space-2) var(--space-4);
}

.mp-brands {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: var(--space-4);
}

.mp-brand .mp-h2-small {
    margin-top: 0;
}

.mp-brand__list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.mp-brand__list li {
    display: flex;
    flex-direction: column;
    padding: var(--space-2) 0;
    border-bottom: 1px solid var(--color-divider);
}

.mp-brand__list li:last-child {
    border-bottom: none;
}

.mp-brand__list .text-muted {
    font-size: 0.85rem;
}

.mp-method {
    font-size: 0.85rem;
    margin-top: var(--space-6);
    max-width: 760px;
}

.mp-photo-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    font-size: 2rem;
    background: var(--ra-surface);
}

.detail-market-link {
    display: inline-block;
    margin-top: var(--space-3);
    font-weight: 600;
}

.mp-table strong {
    white-space: nowrap;
}

/* Photo à côté de l'intro (pages modèle / année) */
.mp-hero {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
    gap: var(--space-8);
    align-items: center;
}

.mp-hero .section-heading {
    margin-bottom: 0;
}

.mp-hero__photo {
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: var(--ra-radius-lg);
    background: var(--ra-surface);
}

.mp-hero__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* Cartes modèle (page /prix-occasion) */
.mp-brand-nav {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    margin: var(--space-4) 0 var(--space-6);
}

.mp-brand-nav a {
    padding: 6px 14px;
    border: 1px solid var(--ra-border);
    border-radius: 999px;
    text-decoration: none;
    color: var(--ra-text);
    font-size: 0.9rem;
    background: var(--ra-bg);
}

.mp-brand-nav a:hover {
    border-color: var(--ra-primary);
    color: var(--ra-primary-dark);
}

.mp-brand-section {
    margin-bottom: var(--space-8);
    scroll-margin-top: 90px;
}

.mp-model-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
    gap: var(--space-4);
}

.mp-model-card {
    display: flex;
    flex-direction: column;
    text-decoration: none;
    color: var(--ra-text);
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: var(--ra-radius-lg);
    overflow: hidden;
    transition: border-color 0.15s ease, transform 0.15s ease;
}

.mp-model-card:hover {
    border-color: var(--ra-primary);
    transform: translateY(-2px);
}

.mp-model-card__photo {
    aspect-ratio: 16 / 10;
    background: var(--ra-bg);
    overflow: hidden;
}

.mp-model-card__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.mp-model-card__body {
    padding: var(--space-3) var(--space-3) var(--space-4);
}

.mp-model-card__title {
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    font-size: 1.15rem;
}

.mp-model-card__price {
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    font-size: 1.5rem;
    color: var(--ra-primary-dark);
    margin-top: var(--space-1);
}

.mp-model-card__meta {
    font-size: 0.85rem;
    color: var(--ra-text-muted);
}

.mp-model-grid--compact {
    margin-bottom: var(--space-4);
}

@media (max-width: 860px) {
    .mp-hero {
        grid-template-columns: 1fr;
        gap: var(--space-4);
    }

    .mp-hero__photo {
        order: -1;
        aspect-ratio: 16 / 9;
    }
}

@media (max-width: 720px) {
    .mp-hide-sm,
    .mp-bar {
        display: none;
    }

    .mp-bar-cell {
        min-width: 0;
    }

    .mp-stats .stats-bar__value {
        font-size: 1.35rem;
    }

    .mp-stats .mp-stats__range {
        font-size: 1.05rem;
    }
}

/* Fiche d'une annonce vendue / retirée (code 410) — voir listing/removed.html.twig */
.removed-listing__badge {
    display: inline-block;
    background: var(--ra-accent);
    color: #fff;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 4px 10px;
    border-radius: 999px;
    margin-bottom: var(--space-3);
}

/* ==========================================================================
   Guides (/guides) — contenu éditorial
   ========================================================================== */
.guide-index-heading h1,
.guide__header h1 {
    font-family: var(--font-heading);
    font-size: clamp(1.7rem, 3.4vw, 2.4rem);
    line-height: 1.15;
    margin: 6px 0 12px;
}

.guide-category {
    font-size: 1.25rem;
    margin: var(--space-8) 0 var(--space-3);
}

.guide-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: var(--space-4);
}

.guide-card {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 22px;
    color: var(--ra-text);
    text-decoration: none;
    position: relative;
    transition: border-color 0.15s ease, transform 0.15s ease;
}

.guide-card:hover {
    border-color: var(--ra-primary);
    transform: translateY(-2px);
}

.guide-card__title {
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 1.08rem;
    line-height: 1.3;
}

.guide-card__desc {
    color: var(--ra-text-muted);
    font-size: 0.92rem;
    line-height: 1.45;
    flex: 1;
}

.guide-card__meta {
    font-size: 0.8rem;
    color: var(--ra-primary-dark);
    font-weight: 600;
}

.guide-draft-tag {
    align-self: flex-start;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 2px 8px;
    background: var(--color-accent-2-100);
    color: var(--ra-accent-dark);
}

.guide-draft-banner {
    background: var(--color-accent-2-100);
    border-left: 4px solid var(--ra-accent);
    padding: 12px 16px;
    margin: var(--space-4) 0;
    font-size: 0.92rem;
}

.guide__header {
    max-width: 760px;
    margin: var(--space-4) 0 var(--space-6);
}

.guide__lead {
    font-size: 1.12rem;
    line-height: 1.55;
    color: var(--ra-text);
    margin: 0 0 10px;
}

.guide__meta {
    font-size: 0.85rem;
    color: var(--ra-text-muted);
    margin: 0;
}

.guide__layout {
    display: grid;
    grid-template-columns: 240px minmax(0, 760px);
    gap: var(--space-8);
    align-items: start;
}

.guide__layout > .guide__content:only-child {
    grid-column: 1 / -1;
    max-width: 760px;
}

.guide__toc {
    position: sticky;
    top: 20px;
    padding: 20px;
    font-size: 0.88rem;
}

.guide__toc ol {
    margin: 10px 0 0;
    padding-left: 18px;
}

.guide__toc li {
    margin-bottom: 8px;
    line-height: 1.35;
}

.guide__toc a {
    color: var(--ra-text);
}

.guide__content {
    font-size: 1.04rem;
    line-height: 1.7;
}

.guide__content h2 {
    font-family: var(--font-heading);
    font-size: 1.45rem;
    margin: var(--space-8) 0 var(--space-3);
    scroll-margin-top: 20px;
}

.guide__content h2:first-child {
    margin-top: 0;
}

.guide__content h3 {
    font-size: 1.12rem;
    margin: var(--space-6) 0 var(--space-2);
}

.guide__content p {
    margin: 0 0 var(--space-3);
}

.guide__content ul,
.guide__content ol {
    margin: 0 0 var(--space-4);
    padding-left: 22px;
}

.guide__content li {
    margin-bottom: 8px;
}

.guide__content a:not(.btn) {
    color: var(--ra-primary-dark);
    text-decoration: underline;
}

.guide-callout {
    display: flex;
    gap: 12px;
    padding: 14px 18px;
    margin: var(--space-4) 0;
    background: var(--ra-primary-light);
    border-left: 4px solid var(--ra-primary);
}

.guide-callout--warning {
    background: var(--color-accent-2-100);
    border-left-color: var(--ra-accent);
}

.guide-callout p {
    margin: 0;
}

.guide-callout__icon {
    font-size: 1.2rem;
    line-height: 1.5;
}

.guide-cta {
    margin-top: var(--space-8);
}

.guide-cta p {
    margin: 8px 0 16px;
    color: var(--ra-text-muted);
}

.guide-cta__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.guide-related {
    margin-top: var(--space-8);
}

.guide-related h2 {
    font-size: 1.3rem;
    margin-bottom: var(--space-3);
}

/* Bloc "Avant d'acheter" sur la fiche annonce */
.detail-guides ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.detail-guides li {
    padding: 8px 0;
    border-bottom: 1px solid var(--ra-border);
    font-size: 0.92rem;
}

.detail-guides li:last-child {
    border-bottom: none;
}

.detail-guides a {
    color: var(--ra-text);
}

@media (max-width: 860px) {
    .guide__layout {
        grid-template-columns: minmax(0, 1fr);
        gap: var(--space-4);
    }

    .guide__toc {
        position: static;
    }
}

/* Bloc "Notre analyse" de la fiche annonce (ListingAnalysisWriter) */
.detail-analysis {
    border-left: 4px solid var(--ra-primary);
}

.detail-analysis p {
    margin: 0 0 12px;
    line-height: 1.6;
}

.detail-analysis p:last-child {
    margin-bottom: 0;
}

.detail-analysis a:not(.btn) {
    color: var(--ra-primary-dark);
    text-decoration: underline;
}

/* Texte de présentation de l'accueil (sous "Comment ça marche") */
.home-mission {
    max-width: 860px;
    margin: var(--space-8) auto 0;
}

.home-mission h3 {
    font-family: var(--font-heading);
    font-size: 1.3rem;
    margin: 0 0 var(--space-3);
}

.home-mission p {
    line-height: 1.7;
    margin: 0 0 var(--space-3);
}

.home-mission p:last-child {
    margin-bottom: 0;
}

.home-mission a {
    color: var(--ra-primary-dark);
    text-decoration: underline;
}
