/* ============================================================
   Fiche programme v2 (docs/chantiers/fiche-programme-v2)
   ------------------------------------------------------------
   Transcription de la feuille du prototype ChatGPT validé par Sabri
   (fiche-programme-interactive/index.html). Tout est préfixé .pd2 :
   program_detail.css reste chargé (les blocs de données réutilisés
   en dépendent) et ne doit pas être écrasé hors de la v2.
   Couleurs : uniquement via tokens.css.
   ============================================================ */

.pd2 {
    --pd2-ink: var(--vefa-text, #0f172a);
    --pd2-muted: var(--vefa-text-muted, #475569);
    --pd2-line: var(--vefa-border, #e2e8f0);
    --pd2-soft: var(--vefa-bg-soft, #f8fafc);
    --pd2-white: var(--vefa-bg, #fff);
    --pd2-blue: var(--vefa-primary, #3498db);
    --pd2-blue-dark: var(--vefa-primary-darker, #1f6396);
    --pd2-orange: var(--vefa-accent, #ff4000);
    --pd2-radius: 12px;
    --pd2-serif: var(--serif-heading, Charter, "Bitstream Charter", Georgia, serif);
    color: var(--pd2-ink);
    background: var(--pd2-soft);
    font: 15px/1.55 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    padding-bottom: 48px;
}
.pd2 *, .pd2 *::before, .pd2 *::after { box-sizing: border-box; }
.pd2 button, .pd2 input, .pd2 select, .pd2 textarea { font: inherit; }
.pd2 button { cursor: pointer; border: 0; background: none; color: inherit; }
.pd2 a { color: var(--pd2-blue-dark); text-decoration: none; }
.pd2 a:hover { color: var(--pd2-blue-dark); text-decoration: underline; }
.pd2 button:focus-visible, .pd2 a:focus-visible, .pd2 input:focus-visible,
.pd2 select:focus-visible, .pd2 summary:focus-visible { outline: 3px solid var(--pd2-blue); outline-offset: 4px; }
.pd2 h1, .pd2 h2, .pd2 h3, .pd2 p { margin: 0; }
.pd2 h1, .pd2 h2 { font-family: var(--pd2-serif); letter-spacing: -.035em; color: var(--pd2-ink); }
.pd2 h1 { font-size: clamp(30px, 3.5vw, 48px); line-height: 1.13; font-weight: 600; max-width: 780px; }
.pd2 h2 { font-size: 29px; line-height: 1.25; font-weight: 600; }
.pd2 h3 { font-size: 18px; color: var(--pd2-ink); }
.pd2 .pd2-muted { color: var(--pd2-muted); }
.pd2 .pd2-small { font-size: 13px; }

.pd2-icon {
    width: 20px; height: 20px; vertical-align: middle; fill: none; stroke: currentColor;
    stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; flex: none;
}

.pd2-wrap { max-width: 1240px; margin: auto; padding: 0 32px; }

/* ---------- Boutons et liens ---------- */
.pd2 .pd2-btn {
    min-height: 44px; padding: 10px 17px; border-radius: 8px; font-size: 14px; font-weight: 600;
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    border: 1px solid var(--pd2-line); background: var(--pd2-white); color: var(--pd2-ink);
    white-space: normal; text-align: center; text-decoration: none;
}
.pd2 .pd2-btn:hover { background: var(--vefa-bg-muted, #f1f5f9); text-decoration: none; }
.pd2 .pd2-btn--primary { background: var(--vefa-accent-action, #d93600); color: var(--vefa-text-on-primary, #fff); border-color: var(--pd2-orange); }
.pd2 .pd2-btn--primary:hover,
.pd2 a.pd2-btn--primary:hover { background: var(--vefa-accent-action-hover, #b82d00); border-color: var(--vefa-accent-dark, #d93600); color: var(--vefa-text-on-primary, #fff); }
.pd2 .pd2-btn--primary.pd2-follow--on,
.pd2 a.pd2-btn--primary.pd2-follow--on:hover { background: var(--vefa-accent-surface, #fff7ed); color: var(--vefa-accent-ink, #9a3412); border-color: var(--vefa-accent-border, #fed7aa); }
.pd2 .pd2-btn--outline { color: var(--pd2-blue-dark); border-color: var(--vefa-primary-border, #b8d6ea); background: var(--pd2-white); }
.pd2 .pd2-btn--outline:hover { color: var(--pd2-blue-dark); }
.pd2 .pd2-link {
    color: var(--pd2-blue-dark); font-size: 14px; min-height: 44px; padding: 7px 0;
    display: inline-flex; align-items: center; gap: 7px; text-align: left;
}
.pd2 .pd2-link:hover { text-decoration: underline; }
.pd2 .pd2-link .pd2-icon { width: 17px; height: 17px; }

/* ---------- En-tête ---------- */
.pd2-breadcrumb { padding: 26px 0 22px; font-size: 13px; color: var(--pd2-muted); display: flex; flex-wrap: wrap; gap: 10px; }
.pd2 .pd2-breadcrumb a { color: var(--pd2-muted); }
.pd2-kicker { font-size: 13px; color: var(--pd2-muted); margin-bottom: 14px !important; }
.pd2-title-row { display: flex; justify-content: space-between; align-items: center; gap: 32px; }
.pd2-follow-intro { flex: none; width: 248px; }
.pd2-follow-intro p { font-size: 14px; line-height: 1.5; margin-bottom: 12px; }
.pd2-follow-intro .pd2-btn { width: 100%; }
.pd2-meta { display: flex; flex-wrap: wrap; gap: 12px 24px; margin: 24px 0 28px; color: var(--pd2-muted); font-size: 14px; }
.pd2-meta-item { display: flex; align-items: center; gap: 8px; }
.pd2-meta-item .pd2-icon { color: var(--pd2-blue-dark); width: 17px; height: 17px; }

/* ---------- Grille ---------- */
.pd2-grid { display: grid; grid-template-columns: minmax(0, 1fr) 284px; gap: 28px; align-items: start; }
.pd2-main { min-width: 0; }

/* ---------- Visuel ---------- */
.pd2-hero { margin: 0; }
.pd2-hero-frame { position: relative; border-radius: 10px; overflow: hidden; background: var(--pd2-line); }
.pd2-hero-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
.pd2-hero-track::-webkit-scrollbar { display: none; }
.pd2-hero-slide { flex: 0 0 100%; scroll-snap-align: start; }
.pd2-hero-slide img { display: block; width: 100%; height: 305px; object-fit: cover; }
.pd2 .pd2-expand {
    position: absolute; bottom: 14px; right: 14px; display: flex; align-items: center; gap: 7px;
    background: var(--pd2-white); padding: 7px 12px; border-radius: 7px; font-size: 12px; box-shadow: var(--vefa-shadow-md);
}
.pd2-hero-controls { position: absolute; left: 14px; bottom: 14px; display: flex; align-items: center; gap: 8px; }
.pd2 .pd2-hero-nav {
    width: 32px; height: 32px; border-radius: 50%; background: var(--vefa-surface-glass-strong, rgba(255, 255, 255, .92));
    font-size: 20px; line-height: 1; display: grid; place-items: center; box-shadow: var(--vefa-shadow-sm);
}
.pd2-hero-dots { display: flex; gap: 5px; }
.pd2 .pd2-hero-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--vefa-surface-on-primary-strong, rgba(255, 255, 255, .32)); padding: 0; }
.pd2 .pd2-hero-dot.is-active { background: var(--vefa-bg, #fff); }
.pd2-hero figcaption { font-size: 12px; color: var(--pd2-muted); margin-top: 8px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.pd2-hero .share-btn-wrapper { position: relative; }
.pd2-hero .share-native-btn { border: 0; background: none; color: var(--pd2-blue-dark); font-size: 12px; padding: 4px 0; }

/* ---------- Boîtes de dialogue ---------- */
.pd2-dialog {
    border: 1px solid var(--pd2-line); border-radius: 16px; padding: 0; max-width: 600px; width: calc(100% - 32px);
    max-height: calc(100dvh - 40px); color: var(--pd2-ink); box-shadow: var(--vefa-shadow-xl);
}
.pd2-dialog::backdrop { background: var(--vefa-overlay, rgba(15, 23, 42, .5)); }
.pd2-dialog-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 20px; }
.pd2-dialog-top h2 { font-family: var(--pd2-serif); font-size: 20px; margin: 0; }
.pd2-close { width: 40px; height: 40px; flex: none; background: var(--pd2-soft); border: 0; border-radius: 50%; font-size: 23px; cursor: pointer; }
.pd2-image-dialog { max-width: 1100px; }
.pd2-image-dialog img { width: 100%; display: block; }

/* ---------- Colonne de droite ---------- */
.pd2-aside { display: grid; gap: 20px; position: sticky; top: 76px; }
.pd2-side-panel { background: var(--pd2-white); border: 1px solid var(--pd2-line); border-radius: var(--pd2-radius); padding: 24px; }
.pd2 .pd2-side-panel h2 { font-size: 23px; margin-bottom: 17px; }
.pd2-community-icon {
    width: 52px; height: 52px; background: var(--vefa-primary-surface, #eff6ff); color: var(--pd2-blue-dark);
    border-radius: 50%; display: grid; place-items: center; margin-bottom: 16px;
}
.pd2-community-icon .pd2-icon { width: 27px; height: 27px; }
.pd2-side-panel p { font-size: 14px; }
.pd2-side-panel .pd2-link { margin-top: 4px; display: flex; }
.pd2-side-note { margin-top: 16px !important; padding-top: 14px; border-top: 1px solid var(--pd2-line); font-size: 13px !important; color: var(--pd2-muted); }
.pd2-timeline { list-style: none; padding: 0; margin: 21px 0 0; display: grid; gap: 0; }
.pd2-timeline li { position: relative; display: flex; align-items: flex-start; gap: 13px; min-height: 52px; font-size: 13px; color: var(--pd2-muted); }
.pd2-timeline li::before {
    content: ""; border: 2px solid var(--vefa-border-strong, #cbd5e1); border-radius: 50%; width: 13px; height: 13px;
    background: var(--pd2-white); flex: none; margin-top: 3px; z-index: 1;
}
.pd2-timeline li:not(:last-child)::after { content: ""; position: absolute; left: 6px; top: 17px; bottom: 0; width: 2px; background: var(--pd2-line); }
.pd2-timeline li.is-done::before { border-color: var(--pd2-blue); }
.pd2-timeline li.is-current { color: var(--pd2-ink); }
.pd2-timeline li.is-current::before { border-color: var(--pd2-blue); background: var(--pd2-blue); box-shadow: 0 0 0 4px var(--vefa-primary-tint-strong, #e0f2fe); }
.pd2-timeline li:last-child { min-height: 0; }
.pd2-timeline small { display: block; color: var(--pd2-muted); font-size: 12px; }

/* ---------- Barre d'ancres ---------- */
.pd2-section-nav {
    display: flex; border-bottom: 1px solid var(--pd2-line); margin: 27px 0; gap: 22px;
    position: sticky; top: 0; z-index: var(--vefa-z-sticky, 50); background: var(--pd2-soft);
    overflow-x: auto; scrollbar-width: none;
}
.pd2-section-nav::-webkit-scrollbar { display: none; }
.pd2 .pd2-section-nav a {
    display: inline-flex; align-items: center; padding: 12px 3px; min-height: 48px; font-size: 14px; white-space: nowrap;
    color: var(--pd2-muted); border-bottom: 2px solid transparent; margin-bottom: -1px; text-decoration: none;
}
.pd2 .pd2-section-nav a[aria-current=true] { color: var(--pd2-blue-dark); border-color: var(--pd2-blue); font-weight: 600; }

/* ---------- Rubriques ---------- */
.pd2-panel { scroll-margin-top: 64px; padding-bottom: 8px; }
.pd2-panel + .pd2-panel { margin-top: 48px; padding-top: 40px; border-top: 1px solid var(--pd2-line); }
.pd2-panel > h2 { margin-bottom: 20px; }
.pd2-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-bottom: 22px; }
.pd2-section-heading h2 { margin: 0; }
.pd2-badge { display: inline-block; vertical-align: middle; font: 600 12px/1.4 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; letter-spacing: 0; color: var(--pd2-blue-dark); background: var(--vefa-primary-tint, #eaf4fb); border-radius: 999px; padding: 3px 10px; }

/* Sous-blocs d'une rubrique (repères, outils, indicateurs) */
.pd2-sub { margin-top: 32px; padding-top: 30px; border-top: 1px solid var(--pd2-line); }
.pd2-eyebrow { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .09em; color: var(--pd2-blue-dark); margin-bottom: 8px !important; }
.pd2-intro { color: var(--pd2-muted); font-size: 14px; margin: 14px 0 22px !important; max-width: 670px; }
.pd2-facts { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--pd2-line); margin: 16px 0; }
.pd2-facts div { padding: 17px 0; border-bottom: 1px solid var(--pd2-line); }
.pd2-facts dt { font-size: 12px; color: var(--pd2-muted); font-weight: 400; }
.pd2-facts dd { margin: 3px 0 0; font-weight: 600; }
.pd2-quiet { margin-top: 24px; padding: 18px 0; border-top: 1px solid var(--pd2-line); }
.pd2-tool-links { display: grid; gap: 0; margin: 18px 0; }
.pd2 .pd2-tool-links a, .pd2 .pd2-tool-links button {
    border-bottom: 1px solid var(--pd2-line); display: grid; grid-template-columns: minmax(0, 1fr) auto; text-align: left;
    align-items: center; gap: 3px 18px; padding: 17px 0; color: var(--pd2-blue-dark); width: 100%;
}
.pd2-tool-links strong { font-size: 14px; }
.pd2-tool-links span:nth-child(2) { color: var(--pd2-muted); font-size: 12px; grid-column: 1; }
.pd2-tool-links span:last-child { grid-column: 2; grid-row: 1 / 3; }
.pd2 .pd2-tool-links a:hover { text-decoration: none; }
.pd2 .pd2-tool-links a:hover strong, .pd2 .pd2-tool-links button:hover strong { text-decoration: underline; }
.pd2-indicator-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.pd2-indicator { padding: 21px; border: 1px solid var(--pd2-line); border-radius: 10px; background: var(--pd2-white); min-width: 0; }
.pd2-indicator h3 { font-size: 16px; font-weight: 600; }
.pd2-value { font-size: 32px; line-height: 1.2; font-weight: 600; letter-spacing: -.03em; margin: 14px 0 5px !important; font-family: Georgia, serif; color: var(--pd2-ink); }
.pd2-value span { font: 13px/1.4 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; letter-spacing: 0; color: var(--pd2-muted); }
.pd2-caveat { font-size: 12px; color: var(--pd2-muted); margin: 16px 0 !important; line-height: 1.6; }
.pd2-source { font-size: 11px; line-height: 1.6; color: var(--pd2-muted); margin-top: 14px !important; }

/* Repliable (contenu présent dans le HTML, spec §2.4) */
.pd2-details { margin-top: 18px; background: var(--pd2-white); border: 1px solid var(--pd2-line); border-radius: 8px; padding: 14px 17px; }
.pd2-details > summary { cursor: pointer; font-size: 14px; font-weight: 600; min-height: 30px; list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.pd2-details > summary::-webkit-details-marker { display: none; }
.pd2-details > summary::after { content: "+"; color: var(--pd2-blue-dark); font-size: 22px; font-weight: 400; }
.pd2-details[open] > summary::after { content: "\2212"; }
.pd2-details[open] > summary { margin-bottom: 12px; }

/* État vide (communauté, lots non publiés) */
.pd2-empty { padding: 27px; background: var(--pd2-white); border: 1px solid var(--pd2-line); border-radius: 12px; }
.pd2-empty p { margin: 12px 0 !important; color: var(--pd2-muted); max-width: 510px; }

/* FAQ (accordéons) */
.pd2-faq details { border-bottom: 1px solid var(--pd2-line); padding: 18px 0; }
.pd2-faq summary { cursor: pointer; font-weight: 600; min-height: 32px; list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.pd2-faq summary::-webkit-details-marker { display: none; }
.pd2-faq summary::after { content: "+"; color: var(--pd2-blue-dark); font-size: 23px; font-weight: 400; }
.pd2-faq details[open] summary::after { content: "\2212"; }
.pd2-faq details > *:not(summary) { color: var(--pd2-muted); padding: 12px 28px 3px 0; }

/* Blocs de données de la v1 réutilisés : on retire leur carte pour les fondre dans la rubrique. */
.pd2 .program_detail_info_card { background: transparent; box-shadow: none; border: 0; padding: 0; margin: 0; border-radius: 0; }
.pd2 .program_detail_section_title { font-family: var(--pd2-serif); letter-spacing: -.035em; font-size: 24px; font-weight: 600; color: var(--pd2-ink); }

/* ---------- Bouton Suivre mobile ---------- */
.pd2-mobile-follow { display: none; }

/* ---------- Responsive (points de rupture du prototype) ---------- */
@media (min-width: 1400px) {
    .pd2-wrap { max-width: 1320px; }
    .pd2-hero-slide img { height: 330px; }
}
@media (max-width: 1050px) {
    .pd2-grid { grid-template-columns: minmax(0, 1fr) 250px; gap: 22px; }
    .pd2-title-row { gap: 20px; }
    .pd2-follow-intro { width: 222px; }
    .pd2 h1 { font-size: 38px; }
    .pd2-side-panel { padding: 20px; }
    .pd2-section-heading { align-items: flex-start; flex-direction: column; gap: 12px; }
    .pd2-section-nav { gap: 14px; }
    .pd2-meta { gap: 10px 20px; }
    .pd2-hero-slide img { height: 270px; }
    .pd2-indicator-grid { grid-template-columns: 1fr; }
}
@media (max-width: 800px) {
    .pd2-wrap { padding: 0 24px; }
    .pd2-title-row { align-items: flex-start; }
    .pd2 h1 { font-size: 34px; }
    .pd2-grid { grid-template-columns: minmax(0, 1fr); }
    .pd2-aside { grid-template-columns: 1fr 1fr; order: 2; margin-top: 24px; position: static; }
    .pd2-follow-intro { width: 200px; }
    .pd2-follow-intro p { font-size: 13px; }
    .pd2-hero-slide img { height: 290px; }
    .pd2-section-heading { flex-direction: row; align-items: center; }
    .pd2-section-heading h2 { font-size: 25px; }
    .pd2-section-heading .pd2-btn { font-size: 12px; }
}
@media (max-width: 580px) {
    .pd2 { background: var(--pd2-white); padding-bottom: 96px; }
    .pd2-section-nav { background: var(--pd2-white); }
    .pd2-wrap { padding: 0 20px; }
    .pd2-breadcrumb { padding: 20px 0 16px; font-size: 12px; }
    .pd2-title-row { display: block; }
    .pd2 .pd2-title-row h1 { font-size: 31px; max-width: 360px; }
    .pd2-follow-intro { display: none; }
    .pd2-meta { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 18px 0 23px; font-size: 12px; }
    .pd2-meta-item:first-child { grid-column: 1 / -1; }
    .pd2-meta-item { align-items: flex-start; gap: 6px; }
    .pd2-meta-item .pd2-icon { width: 16px; height: 16px; margin-top: 1px; }
    .pd2-hero-slide img { height: 205px; }
    .pd2 .pd2-expand { bottom: 10px; right: 10px; font-size: 11px; padding: 5px 8px; }
    .pd2-section-nav { gap: 0; justify-content: space-between; margin: 20px 0 23px; }
    .pd2 .pd2-section-nav a { font-size: 12px; padding: 10px 6px; min-height: 44px; }
    .pd2-section-heading { display: block; }
    .pd2-section-heading h2 { font-size: 26px; margin-bottom: 13px; }
    .pd2-section-heading .pd2-btn { font-size: 13px; }
    .pd2-aside { grid-template-columns: 1fr; gap: 18px; margin-top: 25px; }
    .pd2-side-panel { padding: 21px; }
    .pd2-facts { grid-template-columns: 1fr; }
    .pd2-empty { padding: 21px; }
    .pd2-faq summary { font-size: 14px; min-height: 44px; }
    .pd2-mobile-follow {
        display: flex; position: fixed; bottom: 0; left: 0; right: 0; background: var(--pd2-white);
        border-top: 1px solid var(--pd2-line); padding: 12px 20px calc(12px + env(safe-area-inset-bottom));
        z-index: var(--vefa-z-sticky, 50); box-shadow: var(--vefa-shadow-sm);
    }
    .pd2-mobile-follow .pd2-btn { width: 100%; min-height: 46px; }
}
@media (prefers-reduced-motion: reduce) {
    .pd2-hero-track { scroll-behavior: auto; }
}

/* « Voir plus » (program_detail_v2.js, initMore) : hauteur bornée, contenu dans le HTML. */
.pd2-more { max-height: 220px; overflow: hidden; position: relative; }
.pd2-more::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 64px; background: linear-gradient(to bottom, transparent, var(--pd2-soft)); }
.pd2-more.is-open { max-height: none; }
.pd2-more.is-open::after { display: none; }
@media (max-width: 580px) { .pd2-more::after { background: linear-gradient(to bottom, transparent, var(--pd2-white)); } }


/* ============================================================
   Rubrique Programme
   ============================================================ */
/* Fiche programme v2, rubrique Programme (Lot 2). Préfixe .pd2, couleurs via tokens.css ou --pd2-*. */

/* ---------- Description et repères ---------- */
.pd2-description { color: var(--pd2-muted); max-width: 720px; }
.pd2-description p { margin: 0; }
.pd2-description .pd2-more-toggle { margin-top: 6px; }
.pd2-description + .pd2-facts { margin-top: 24px; }
.pd2 #programme .pd2-facts > div:last-child:nth-child(odd) { grid-column: 1 / -1; }

/* Titres des sous-blocs : H2 serif de 25 px comme .indicator-section h2 du prototype */
.pd2 .pd2-sub-title,
.pd2 .pd2-sub .program_detail_section_title {
    font-family: var(--pd2-serif); font-size: 25px; line-height: 1.25; font-weight: 600;
    letter-spacing: -.035em; color: var(--pd2-ink); margin: 0;
}
.pd2 .pd2-sub .program_detail_section_title i { color: var(--pd2-blue-dark); margin-right: 8px; font-size: .8em; }

/* ---------- Photos ---------- */
.pd2-photos-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 14px; }
.pd2 .pd2-photos .program_detail_photos_grid {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-top: 0;
}
.pd2 .pd2-photos .program_detail_photo_item,
.pd2 .pd2-photos .program_detail_photo_more {
    position: relative; display: block; border-radius: 10px; overflow: hidden; aspect-ratio: 4 / 3; background: var(--pd2-line);
}
.pd2 .pd2-photos .program_detail_photo_item img,
.pd2 .pd2-photos .program_detail_photo_more img {
    display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .25s ease;
}
.pd2 .pd2-photos .program_detail_photo_item:hover img { transform: scale(1.03); }
.pd2 .pd2-photos .program_detail_more_overlay {
    position: absolute; inset: 0; z-index: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
    background: var(--vefa-overlay, rgba(15, 23, 42, .5)); color: var(--vefa-text-on-primary, #fff); font-size: 13px;
    text-decoration: none;
}
.pd2 .pd2-photos .program_detail_more_overlay:hover { text-decoration: none; }
.pd2 .pd2-photos .program_detail_more_overlay span:first-child { font-family: var(--pd2-serif); font-size: 26px; margin: 0 0 2px; }
.pd2 .pd2-photos .program_detail_photos_private {
    margin-top: 14px; padding: 12px 16px; background: var(--pd2-white); border: 1px solid var(--pd2-line);
    border-radius: 10px; color: var(--pd2-muted); font-size: 13px;
}
.pd2 .pd2-photos .program_detail_photos_private a,
.pd2 .pd2-photos .program_detail_engagement_follow_btn {
    background: none; border: 0; padding: 0; color: var(--pd2-blue-dark); font-weight: 600; font-size: 13px; text-decoration: none;
}
.pd2 .pd2-photos .program_detail_photos_private a:hover,
.pd2 .pd2-photos .program_detail_engagement_follow_btn:hover { text-decoration: underline; }
/* Mosaïque quand la galerie dépasse 4 photos : 4 photos + la tuile « Voir plus » */
@media (min-width: 581px) {
    .pd2 .pd2-photos .program_detail_photos_grid:has(.program_detail_photo_more) { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .pd2 .pd2-photos .program_detail_photos_grid:has(.program_detail_photo_more) > .program_detail_photo_item:first-child {
        grid-column: span 2; grid-row: span 2; aspect-ratio: auto; min-height: 0;
    }
}
@media (max-width: 580px) {
    .pd2 .pd2-photos .program_detail_photos_grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ---------- Caractéristiques : listes sobres, sans cartes ---------- */
.pd2 .pd2-features .program_detail_features_grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 32px; padding: 0; margin-top: 16px; }
.pd2 .pd2-features .program_detail_features_category {
    min-width: 0; padding: 14px 0 0; background: transparent; box-shadow: none; border-radius: 0;
    border-top: 1px solid var(--pd2-line); transition: none;
}
.pd2 .pd2-features .program_detail_features_category:hover { box-shadow: none; }
.pd2 .pd2-features .program_detail_category_header {
    gap: 8px; margin-bottom: 12px; padding-bottom: 0; border: 0; font-size: 13px; font-weight: 600; color: var(--pd2-ink);
}
.pd2 .pd2-features .program_detail_category_header i {
    width: auto; height: auto; background: none; border-radius: 0; font-size: 14px; color: var(--pd2-blue-dark); transform: none;
}
.pd2 .pd2-features .program_detail_features_list { display: flex; flex-wrap: wrap; gap: 8px; }
.pd2 .pd2-features .program_detail_feature_item {
    display: inline-flex; padding: 6px 12px; gap: 8px; background: var(--pd2-white); border: 1px solid var(--pd2-line);
    border-radius: 999px; font-size: 13px; color: var(--pd2-ink); transform: none; box-shadow: none;
}
.pd2 .pd2-features .program_detail_feature_item:hover { transform: none; box-shadow: none; }
.pd2 .pd2-features .program_detail_feature_text { flex: none; }
.pd2 .pd2-features .program_detail_feature_info { color: var(--pd2-blue-dark); font-size: 12px; }

/* ---------- Parcours VEFA : la carte devient une zone de la rubrique ---------- */
.pd2 .pd2-parcours .vefa-journey { margin: 18px 0 0; padding: 0; background: transparent; border: 0; box-shadow: none; border-radius: 0; }
.pd2 .pd2-parcours .vefa-journey__title { font-family: var(--pd2-serif); font-size: 20px; font-weight: 600; letter-spacing: -.03em; }
.pd2 .pd2-parcours .vefa-journey__head { margin-bottom: 16px; }
.pd2 .pd2-parcours .pd2-tool-links { margin-bottom: 0; }

/* « Se connecter pour suivre mon parcours » : lien, pas bouton plein (spec §2.2) */
.pd2 .pd2-parcours .vefa-next-action__btn--login {
    padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none; min-height: 0;
    color: var(--pd2-blue-dark); font-size: 14px; font-weight: 600; text-align: left; text-decoration: none;
}
.pd2 .pd2-parcours .vefa-next-action__btn--login:hover { background: none; color: var(--pd2-blue-dark); text-decoration: underline; }

/* ---------- Promoteur : blocs fondus, actions en liens ---------- */
.pd2 .pd2-promoteur .program_detail_developer_block { margin: 0; }
.pd2 .pd2-promoteur .program_detail_developer_name { font-family: var(--pd2-serif); font-size: 18px; font-weight: 600; color: var(--pd2-ink); }
.pd2 .pd2-promoteur .program_detail_developer_description,
.pd2 .pd2-promoteur .program_detail_developer_subtitle { color: var(--pd2-muted); }
.pd2 .pd2-promoteur .program_detail_developer_head { margin-top: 16px; }
.pd2 .pd2-promoteur .program_detail_developer_description { margin: 14px 0 0; font-size: 14px; line-height: 1.6; }
.pd2 .pd2-promoteur .program_detail_developer_subtitle { margin: 26px 0 12px; font-size: 15px; font-weight: 600; color: var(--pd2-ink); }
.pd2 .pd2-promoteur .program_detail_developer_program_card {
    border-color: var(--pd2-line); border-radius: 10px; background: var(--pd2-white); box-shadow: none; transform: none;
}
.pd2 .pd2-promoteur .program_detail_developer_program_card:hover { box-shadow: none; transform: none; border-color: var(--vefa-primary-border, #b8d6ea); }
.pd2 .pd2-promoteur .program_detail_developer_program_name { color: var(--pd2-ink); }
.pd2 .pd2-promoteur .program_detail_developer_cta { text-align: left; margin-top: 14px; }
.pd2 .pd2-promoteur .program_detail_developer_cta_link {
    padding: 0; background: none; border-radius: 0; color: var(--pd2-blue-dark); font-weight: 400; font-size: 14px;
}
.pd2 .pd2-promoteur .program_detail_developer_cta_link:hover { background: none; color: var(--pd2-blue-dark); text-decoration: underline; }
.pd2 .pd2-promoteur .program-comm-public-section { margin-top: 26px; }
.pd2 .pd2-promoteur .program-comm-public-section .pf-btn {
    padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none; color: var(--pd2-blue-dark); font-size: 14px; font-weight: 400;
}
.pd2 .pd2-promoteur .program-comm-public-section .pf-btn:hover { background: none; color: var(--pd2-blue-dark); text-decoration: underline; }
.pd2-claim { margin-top: 22px !important; font-size: 13px; color: var(--pd2-muted); }
.pd2-claim a { margin-left: 4px; text-decoration: underline; }
.pd2-promoteur > .pd2-claim:first-child { margin-top: 0 !important; }

/* ---------- DPE (agrégat communal) ---------- */
.pd2 .pd2-programme-dpe .program_detail_market { margin: 0; }
.pd2 .pd2-programme-dpe .program_detail_market_intro,
.pd2 .pd2-programme-dpe .program_detail_market_source { color: var(--pd2-muted); font-size: 13px; }
.pd2 .pd2-programme-dpe .program_detail_market_intro { margin: 14px 0 18px; max-width: 670px; font-size: 14px; }
.pd2 .pd2-programme-dpe .program_detail_market_value { font-family: Georgia, serif; font-size: 32px; font-weight: 600; letter-spacing: -.03em; color: var(--pd2-ink); }
.pd2 .pd2-programme-dpe .program_detail_market_label { color: var(--pd2-muted); font-size: 13px; }
.pd2 .pd2-programme-dpe .program_detail_market_stat { background: transparent; border: 0; box-shadow: none; padding: 0; }

/* ---------- Forum général : accordéon .pd2-details, actions en liens ---------- */
.pd2 .pd2-echanges-general .pd2-details { margin-top: 0; }
.pd2 .pd2-echanges-general .program_general_forum__item {
    background: var(--pd2-soft); border-color: var(--pd2-line); border-radius: 8px; box-shadow: none; transform: none;
}
.pd2 .pd2-echanges-general .program_general_forum__item:hover { border-color: var(--vefa-primary-border, #b8d6ea); box-shadow: none; transform: none; }
.pd2 .pd2-echanges-general .program_general_forum__item-title { color: var(--pd2-ink); font-weight: 600; }
.pd2 .pd2-echanges-general .program_general_forum__item-meta,
.pd2 .pd2-echanges-general .program_general_forum__empty { color: var(--pd2-muted); }
.pd2 .pd2-echanges-general .program_general_forum__item-meta i { color: var(--pd2-blue-dark); }
.pd2 .pd2-echanges-general .program_general_forum__footer { border-top-color: var(--pd2-line); gap: 6px 24px; }
.pd2 .pd2-echanges-general .program_general_forum__cta {
    padding: 0; background: none; border-radius: 0; color: var(--pd2-blue-dark); font-size: 14px; font-weight: 600; opacity: 1;
}
.pd2 .pd2-echanges-general .program_general_forum__cta:hover { color: var(--pd2-blue-dark); text-decoration: underline; opacity: 1; }
.pd2 .pd2-echanges-general .program_general_forum__secondary { color: var(--pd2-blue-dark); font-size: 14px; font-weight: 400; }

@media (max-width: 800px) {
    .pd2 .pd2-features .program_detail_features_grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 580px) {
    .pd2 .pd2-sub-title,
    .pd2 .pd2-sub .program_detail_section_title { font-size: 25px; }
}


/* ============================================================
   Rubrique Lots et budget
   ============================================================ */
/* Fiche programme v2, rubrique « Lots et budget » (fusionnée dans program_detail_v2.css au Lot 6).
   Transcrit de .filters / .results-bar / .lot-list / .lot / .empty / .lot-note du prototype.
   Préfixe .pd2, couleurs via tokens.css (les --pd2-* viennent de .pd2). */

.pd2 .pd2-lots [hidden], .pd2 .pd2-lots-unpublished [hidden] { display: none !important; }

/* ---------- Filtres (pastilles) ---------- */
.pd2-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 16px; }
.pd2 .pd2-filters:not(:has(button)) { display: none; }
.pd2 .pd2-filter {
    padding: 7px 14px; min-height: 40px; border: 1px solid var(--pd2-line); border-radius: 22px;
    background: var(--pd2-white); font-size: 13px; color: var(--pd2-ink);
}
.pd2 .pd2-filter:hover { background: var(--vefa-bg-muted, #f1f5f9); }
.pd2 .pd2-filter[aria-pressed=true] {
    background: var(--vefa-primary-tint, #eaf4fb); border-color: var(--pd2-blue); color: var(--pd2-blue-dark);
}
.pd2 .pd2-filter--muted { color: var(--pd2-muted); border-style: dashed; }

/* ---------- Compteur et tri ---------- */
.pd2-results-bar {
    display: flex; justify-content: space-between; align-items: center; gap: 16px;
    padding-bottom: 14px; color: var(--pd2-muted); font-size: 13px;
}
.pd2-results-bar label { display: flex; align-items: center; gap: 8px; }
.pd2-results-bar select {
    background: var(--pd2-white); border: 1px solid var(--pd2-line); border-radius: 7px;
    padding: 7px 9px; max-width: 190px; color: var(--pd2-ink);
}

/* ---------- Lignes de lots ---------- */
.pd2-lot-list { border-top: 1px solid var(--pd2-line); }
.pd2-lot { border-bottom: 1px solid var(--pd2-line); }
.pd2-lot-row {
    display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 22px;
    padding: 23px 0; cursor: pointer; list-style: none;
}
.pd2-lot-row::-webkit-details-marker { display: none; }
.pd2 .pd2-lot-title { font-size: 17px; font-weight: 600; }
.pd2-lot-main { display: block; min-width: 0; }
.pd2-lot-meta { display: flex; flex-wrap: wrap; align-items: center; color: var(--pd2-muted); font-size: 13px; margin-top: 4px; }
.pd2-lot-meta > span + span::before { content: "\00b7"; margin: 0 .45em; }
.pd2-lot-status {
    display: inline-block; font-weight: 600; font-size: 12px; line-height: 1.4;
    color: var(--pd2-muted); background: var(--vefa-bg-muted, #f1f5f9); border-radius: 999px; padding: 1px 9px;
}
.pd2-lot--available .pd2-lot-status { display: none; }
.pd2-lot-price { font-size: 18px; font-weight: 600; white-space: nowrap; text-align: right; }
.pd2-lot-price small { display: block; font-size: 12px; font-weight: 400; color: var(--pd2-muted); }
.pd2-lot-cta {
    display: inline-flex; align-items: center; gap: 7px; min-height: 44px; font-size: 14px;
    color: var(--pd2-blue-dark); white-space: nowrap;
}
.pd2-lot-row:hover .pd2-lot-cta { text-decoration: underline; }
.pd2-lot-cta .pd2-icon { width: 17px; height: 17px; transition: transform .15s ease; }
.pd2-lot[open] .pd2-lot-cta .pd2-icon { transform: rotate(90deg); }
.pd2-lot-cta-close { display: none; }
.pd2-lot[open] .pd2-lot-cta-open { display: none; }
.pd2-lot[open] .pd2-lot-cta-close { display: inline; }
.pd2-lot--sold .pd2-lot-title, .pd2-lot--reserved .pd2-lot-title, .pd2-lot--optioned .pd2-lot-title { color: var(--pd2-muted); }

/* ---------- Détail du lot ---------- */
.pd2-lot-detail { display: grid; gap: 4px; padding: 0 0 24px; }
.pd2-lot-desc { color: var(--pd2-muted); font-size: 14px; max-width: 670px; }
.pd2-lot-detail .pd2-facts { margin: 8px 0 4px; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 24px; }
.pd2-lot-outdoor { margin: 4px 0; padding-left: 18px; color: var(--pd2-muted); font-size: 14px; }
.pd2-lot-plans { display: flex; flex-wrap: wrap; gap: 10px; margin: 8px 0; }
.pd2-lot-plans img { display: block; max-width: 160px; height: auto; border: 1px solid var(--pd2-line); border-radius: 8px; background: var(--pd2-white); }
.pd2-lot-actions { display: flex; flex-wrap: wrap; gap: 0 28px; margin-top: 6px; }

/* ---------- États vides et note ---------- */
.pd2-lots-empty { text-align: center; margin: 15px 0; }
.pd2-lots-empty h3 { margin-bottom: 6px; }
.pd2-lots-empty p { margin-left: auto !important; margin-right: auto !important; }
.pd2-lots-unpublished h3 { font-size: 18px; }
.pd2-lots-unpublished .pd2-link { margin-top: 2px; }
.pd2-lots-more { text-align: center; }
.pd2-lot-note { font-size: 12px; color: var(--pd2-muted); padding: 16px 0 0; }

/* ---------- Budget, financement, fiscalité ---------- */
.pd2 .pd2-sub-title { font-size: 24px; margin-bottom: 4px; }
.pd2-lots-budget .program_detail_market_intro { margin-bottom: 18px; }
.pd2-lots-acq .program_detail_acqprice { margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; }
.pd2-lots-acq .program_detail_acqprice__source a { color: var(--pd2-blue-dark); }
.pd2-lots-budget .pd2-details .program_detail_info_card,
.pd2-lots-tax .pd2-details .program_detail_info_card { margin: 0; }

/* ---------- Responsive ---------- */
@media (max-width: 1050px) {
    .pd2-lot-detail .pd2-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 580px) {
    .pd2-results-bar { align-items: flex-start; flex-direction: column; gap: 10px; }
    .pd2-results-bar label { width: 100%; justify-content: space-between; }
    .pd2-results-bar select { max-width: 210px; min-height: 42px; }
    .pd2 .pd2-filter { min-height: 44px; }
    .pd2-lot-row { grid-template-columns: minmax(0, 1fr) auto; gap: 10px; padding: 21px 0; }
    .pd2 .pd2-lot-title { font-size: 16px; }
    .pd2-lot-meta { font-size: 12px; }
    .pd2-lot-price { font-size: 16px; }
    .pd2-lot-price small { font-size: 11px; }
    .pd2-lot-cta { grid-column: 1 / -1; justify-self: start; }
    .pd2-lot-detail .pd2-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; }
    .pd2-lot-detail .pd2-facts div { padding: 12px 0; }
}


/* ============================================================
   Rubrique Échanges et FAQ
   ============================================================ */
/* Fiche programme v2, rubriques echanges et faq (fusionné dans program_detail_v2.css au Lot 6). Préfixe .pd2, couleurs via tokens.css. */

/* ---------- Échanges ---------- */
.pd2-forum h3, .pd2-qa h3, .pd2-empty h3, .pd2-quiet h3 { font-size: 18px; font-weight: 600; margin: 0; }
.pd2-forum .pd2-forum-count { margin: 10px 0 4px; color: var(--pd2-muted); }
.pd2-forum .pd2-forum-count strong { color: var(--pd2-ink); }
.pd2-empty .pd2-community-icon { margin-bottom: 16px; }
.pd2-empty .pd2-link { margin-top: 2px; }
.pd2-qa h3 { margin-bottom: 14px; }
.pd2-qa .pd2-badge { margin-left: 8px; }
.pd2-sub-title { font-size: 22px; line-height: 1.3; }
.pd2-contrib .pd2-intro { margin-top: 10px !important; }
.pd2-contrib .pd2-tool-links { margin-bottom: 0; border-top: 1px solid var(--pd2-line); }
.pd2-photo-cta { border-top: 1px solid var(--pd2-line); margin-top: 24px; }
.pd2-contrib + .pd2-photo-cta { margin-top: 0; border-top: 0; }

/* ---------- FAQ ---------- */
.pd2-faq { border-top: 1px solid var(--pd2-line); }
.pd2-faq details > div { font-size: 14px; line-height: 1.65; }
.pd2-faq details > div p + p { margin-top: 10px; }
.pd2-faq details > div a { text-decoration: underline; }
.pd2-faq .pd2-faq-footnote { margin-top: 18px; font-size: 13px; color: var(--pd2-muted); }
.pd2-approfondir .pd2-intro { margin-bottom: 4px !important; }
.pd2-approfondir .pd2-details { margin-top: 18px; }
.pd2-approfondir .pd2-details > summary { padding: 4px 0; }
.pd2-guides .program_detail_related_articles_grid { margin-top: 16px; }
.pd2-disclaimer { padding-top: 24px; }

@media (max-width: 767.98px) {
    .pd2-sub-title { font-size: 19px; }
    .pd2-forum .pd2-link, .pd2-empty .pd2-link { min-height: 44px; }
}


/* ============================================================
   Rubrique Quartier
   ============================================================ */
/* Fiche programme v2, rubrique Quartier (fusionnée dans program_detail_v2.css au Lot 6).
   Préfixe .pd2, couleurs via tokens.css (var(--vefa-*, repli) ou --pd2-*). */

/* Adresse et carte (.address-panel du prototype) */
.pd2 .pd2-address { background: var(--pd2-white); border: 1px solid var(--pd2-line); border-radius: var(--pd2-radius); padding: 26px; margin-top: 4px; }
.pd2 .pd2-address-head { display: flex; align-items: flex-start; gap: 14px; margin-bottom: 18px; }
.pd2 .pd2-address-head .pd2-icon { width: 24px; height: 24px; margin-top: 3px; color: var(--pd2-blue-dark); }
.pd2 .pd2-address-title { font-family: var(--pd2-serif); font-size: 20px; line-height: 1.3; letter-spacing: -.02em; margin-bottom: 6px; }
.pd2 .pd2-address-head p { font-size: 14px; }
.pd2 .pd2-address .program_detail_map { height: 300px; border-radius: 10px; overflow: hidden; margin: 0 0 8px; background: var(--pd2-line); z-index: 0; }
.pd2 .pd2-address > .pd2-small { margin-top: 0; }

/* Titres de sous-blocs (H2 de la v1 conservés, au gabarit du prototype .indicator-section h2) */
.pd2 .pd2-sub-title { font-size: 25px; line-height: 1.25; margin: 0 0 8px; }

/* Bloc commune (partials/program_v2/quartier_ville.html, 2026-10-03) :
   chiffres clés, introduction bornée, quartiers en cartes, thèmes repliés. */
.pd2 .pd2-city { scroll-margin-top: 80px; }
.pd2 .pd2-city-figures {
    display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 18px 0 22px;
}
.pd2 .pd2-city-figure {
    background: var(--vefa-primary-surface, #eff6ff); border: 1px solid var(--vefa-primary-tint-strong, #e0f2fe);
    border-radius: 10px; padding: 14px 16px; display: flex; flex-direction: column; gap: 2px;
}
.pd2 .pd2-city-figure dt { order: 2; font-size: 12px; font-weight: 400; color: var(--pd2-muted); line-height: 1.35; }
.pd2 .pd2-city-figure dd {
    order: 1; margin: 0; font: 700 24px/1.15 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    letter-spacing: -.02em; color: var(--pd2-blue-dark); font-variant-numeric: tabular-nums;
}
.pd2 .pd2-city-figure dd small { font-size: 13px; font-weight: 600; letter-spacing: 0; }
.pd2 a.pd2-city-figure-link { order: 3; margin-top: 6px; font-size: 12px; font-weight: 600; color: var(--pd2-blue-dark); }
.pd2 .pd2-city-intro { max-width: 760px; margin-bottom: 8px; }
.pd2 .pd2-city-intro-text { font-size: 15px; line-height: 1.65; color: var(--pd2-muted); }
.pd2 .pd2-city-intro-text p + p { margin-top: 10px; }
.pd2 .pd2-more--short { max-height: 150px; }
.pd2 .pd2-more--short.is-open { max-height: none; }
.pd2 .pd2-city-h3 { font-size: 17px; font-weight: 600; margin: 26px 0 12px; }
.pd2 .pd2-city-hoods {
    list-style: none; padding: 0; margin: 0 0 8px; display: grid; gap: 12px;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
}
.pd2 .pd2-city-hood {
    background: var(--pd2-white); border: 1px solid var(--pd2-line); border-radius: 10px; padding: 16px 18px;
    display: flex; flex-direction: column; gap: 8px;
}
.pd2 .pd2-city-hood h4 { font-size: 15px; font-weight: 600; margin: 0; color: var(--pd2-ink); }
.pd2 .pd2-city-hood-text { font-size: 13px; line-height: 1.55; color: var(--pd2-muted); }
.pd2 .pd2-city-hood-text p { margin: 0; }
.pd2 .pd2-city-hood-profiles { display: flex; flex-wrap: wrap; gap: 6px; margin: auto 0 0 !important; padding-top: 4px; }
.pd2 .pd2-chip {
    display: inline-block; font-size: 12px; font-weight: 600; line-height: 1.4; padding: 3px 9px; border-radius: 999px;
    background: var(--vefa-accent-surface, #fff7ed); color: var(--vefa-accent-ink, #9a3412); border: 1px solid var(--vefa-accent-border, #fed7aa);
}
.pd2 .pd2-city-themes { margin-top: 18px; }
.pd2 .pd2-city-themes .pd2-avail-row > summary { display: flex; align-items: center; }
.pd2 .pd2-city-rich { color: var(--pd2-muted); line-height: 1.6; }
.pd2 .pd2-city-rich p + p { margin-top: 8px; }
.pd2 .pd2-city-links { display: flex; flex-wrap: wrap; gap: 0 24px; margin-top: 12px !important; }
@media (max-width: 580px) {
    .pd2 .pd2-city-figures { grid-template-columns: 1fr 1fr; }
    .pd2 .pd2-city-figure dd { font-size: 22px; }
    /* Cinq quartiers empilés = un écran et demi : en mobile, une rangée qui se fait défiler. */
    .pd2 .pd2-city-hoods {
        grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 82%; overflow-x: auto;
        scroll-snap-type: x mandatory; padding-bottom: 6px; margin-right: -20px; padding-right: 20px;
    }
    .pd2 .pd2-city-hood { scroll-snap-align: start; }
    /* Sans `contain: paint`, la largeur défilée des cartes (≈1 350 px) étirait la
       fenêtre mobile (innerHeight 2 472 au lieu de 812, recette du 2026-10-03) et
       sortait la barre « Suivre » de l'écran. */
    .pd2 .pd2-city-hoods { contain: paint; }
}

/* Voisinage chargé en HTMX (environnement, risques, bruit) : fondus dans la rubrique */
.pd2 .pd2-quartier-daily .neighborhood-loader,
.pd2 .pd2-quartier-daily .program_risks-loader,
.pd2 .pd2-quartier-daily .program_noise-loader { margin-top: 22px; }
.pd2 .pd2-quartier-daily .program_detail_section_title { font-size: 20px; margin-bottom: 10px; }
.pd2 .pd2-quartier-daily .program_detail_section_title i { color: var(--pd2-blue-dark); margin-right: 8px; }
.pd2 .pd2-quartier-daily .text-muted { color: var(--pd2-muted) !important; }

/* Comparaison (program_comparison_table) */
.pd2 .pd2-quartier-compare .program_detail_comparison_intro { margin: 10px 0 18px; font-size: 14px; color: var(--pd2-muted); max-width: 670px; }
.pd2 .pd2-quartier-compare .program_detail_section_title { font-size: 22px; }
.pd2 .pd2-quartier-compare .program_detail_section_title i { display: none; }
.pd2 .program_detail_comparison_wrapper { background: var(--pd2-white); border: 1px solid var(--pd2-line); border-radius: 10px; overflow-x: auto; }
.pd2 .program_detail_comparison_table { font-size: 13px; }
.pd2 .program_detail_comparison_table th,
.pd2 .program_detail_comparison_table td { border-bottom: 1px solid var(--pd2-line); }
.pd2 .program_detail_comparison_table thead th { background: var(--pd2-soft); color: var(--pd2-muted); font-size: 11px; }
.pd2 .program_detail_comparison_table tbody tr:last-child th,
.pd2 .program_detail_comparison_table tbody tr:last-child td { border-bottom: 0; }
.pd2 .program_detail_comparison_row--current { background: var(--vefa-primary-surface, #eff6ff); }
.pd2 .program_detail_comparison_row--current th { color: var(--pd2-ink); }
.pd2 .program_detail_comparison_current_badge { background: var(--vefa-primary-tint, #eaf4fb); color: var(--pd2-blue-dark); }
.pd2 .program_detail_comparison_link { color: var(--pd2-blue-dark); }
.pd2 .program_detail_comparison_footnote { margin-top: 12px; font-size: 13px; color: var(--pd2-muted); }
.pd2 .program_detail_comparison_footnote a { color: var(--pd2-blue-dark); }

/* Projets à venir, autres programmes (.comparison-row du prototype) */
.pd2 .pd2-quartier-upcoming .pd2-value { margin-top: 10px !important; }
.pd2 .pd2-comparison-row {
    display: flex; justify-content: space-between; align-items: center; gap: 15px; padding: 14px 0;
    border-top: 1px solid var(--pd2-line);
}
.pd2 .pd2-comparison-row:last-of-type { border-bottom: 1px solid var(--pd2-line); margin-bottom: 14px; }
.pd2 .pd2-comparison-row h3 { font-size: 16px; }
.pd2 .pd2-comparison-row .pd2-link { flex: none; }
.pd2 .pd2-quartier-links { display: grid; gap: 0; margin-top: 6px; }

@media (max-width: 580px) {
    .pd2 .pd2-address { padding: 21px; }
    .pd2 .pd2-address .program_detail_map { height: 250px; }
    .pd2 .pd2-sub-title { font-size: 22px; }
    .pd2 .pd2-comparison-row { align-items: flex-start; flex-direction: column; gap: 2px; }
}

/* Quartier : carte du site intégrée (même iframe que la page commune) */
.pd2-map-frame { display: block; width: 100%; height: 420px; border: 0; border-radius: 10px; margin: 16px 0 6px; background: var(--pd2-line); }
@media (max-width: 580px) { .pd2-map-frame { height: 360px; } }

/* Quartier : « Quartier, risques et bruit » en liste sobre (prototype .availability-list) */
.pd2-avail { border-top: 1px solid var(--pd2-line); margin-top: 14px; }
.pd2-avail-row { border-bottom: 1px solid var(--pd2-line); }
.pd2-avail-row > summary {
    list-style: none; cursor: pointer; padding: 15px 36px 15px 0; position: relative;
    display: grid; gap: 4px; min-height: 44px;
}
.pd2-avail-row > summary::-webkit-details-marker { display: none; }
.pd2-avail-row > summary::after {
    content: "+"; position: absolute; right: 4px; top: 50%; transform: translateY(-50%);
    color: var(--pd2-blue-dark); font-size: 22px; font-weight: 400;
}
.pd2-avail-row[open] > summary::after { content: "\2212"; }
.pd2 .pd2-avail-title {
    font: 600 15px/1.4 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; letter-spacing: 0;
    color: var(--pd2-ink); margin: 0;
}
.pd2-avail-title i { color: var(--pd2-blue-dark); width: 20px; margin-right: 6px; }
.pd2-avail-hint { font-size: 13px; color: var(--pd2-muted); padding-left: 26px; }
.pd2-avail-body { padding: 0 0 20px 26px; font-size: 14px; }
.pd2 .pd2-avail-body .program_detail_section_title { display: none; }
.pd2 .pd2-avail-body .program_detail_info_card { padding: 0; }

/* Bloc risques chargé dans la ligne : typographie ramenée à celle de la fiche */
.pd2 .pd2-avail-body .program_risks__intro { font-size: 13px; margin-bottom: 14px; }
.pd2 .pd2-avail-body .program_risks__label {
    font: 600 13px/1.4 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    text-transform: none; letter-spacing: 0; margin: 16px 0 2px; color: var(--pd2-ink);
}
.pd2 .pd2-avail-body .program_risks__label-hint { font-weight: 400; color: var(--pd2-muted); }
.pd2 .pd2-avail-body .program_risks__group-help { font-size: 12px; margin-bottom: 8px; }
.pd2 .pd2-avail-body .program_risks__badges { gap: 6px; }
.pd2 .pd2-avail-body .program_risks__badge {
    font-size: 12px; font-weight: 500; padding: 4px 10px; min-height: 0;
    background: var(--pd2-soft); border: 1px solid var(--pd2-line); border-radius: 999px; color: var(--pd2-ink);
}
.pd2 .pd2-avail-body .program_risks__indicators { gap: 10px; }
.pd2 .pd2-avail-body .program_risks__indicator { padding: 10px 12px; border-radius: 8px; }
.pd2 .pd2-avail-body .program_risks__indicator-label { font-size: 12px; }
.pd2 .pd2-avail-body .program_risks__indicator-value { font-size: 14px; }
.pd2 .pd2-avail-body .program_risks__source { font-size: 11px; line-height: 1.6; margin-top: 12px; }

/* Repères cliquables vers les lots (en-tête) */
.pd2 a.pd2-meta-link { color: var(--pd2-muted); text-decoration: none; }
.pd2 a.pd2-meta-link span { text-decoration: underline; text-decoration-color: var(--vefa-primary-border, #b8d6ea); text-underline-offset: 3px; }
.pd2 a.pd2-meta-link:hover span { color: var(--pd2-blue-dark); }

/* Lots groupés par typologie (au-delà de 8 lots disponibles) */
.pd2-lot-group { border: 1px solid var(--pd2-line); border-radius: 10px; background: var(--pd2-white); margin-bottom: 10px; }
.pd2-lot-group-row {
    list-style: none; cursor: pointer; display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap;
    padding: 16px 44px 16px 18px; position: relative; min-height: 44px;
}
.pd2-lot-group-row::-webkit-details-marker { display: none; }
.pd2-lot-group-row::after { content: "+"; position: absolute; right: 18px; top: 50%; transform: translateY(-50%); color: var(--pd2-blue-dark); font-size: 22px; }
.pd2-lot-group[open] > .pd2-lot-group-row::after { content: "\2212"; }
/* Nom du groupe au gabarit de l'étiquette de typologie des lots (2026-10-03) :
   l'orange vif sur blanc (3,5:1) ne passait pas le contraste en 15 px. */
.pd2-lot-group-name {
    min-width: 48px; height: 36px; padding: 0 10px; border-radius: 9px; display: inline-grid; place-items: center;
    background: var(--vefa-primary-tint, #eaf4fb); color: var(--pd2-blue-dark); font-weight: 700; font-size: 15px;
}
.pd2 .pd2-lot-group-row { align-items: center; flex-wrap: nowrap; gap: 12px; padding-top: 12px; padding-bottom: 12px; }
.pd2 .pd2-lot-group-from { min-width: 0; }
.pd2 .pd2-lot-group-count { flex: none; }
@media (max-width: 580px) { .pd2 .pd2-lot-group-from { font-size: 13px; } }
/* Dans un groupe, l'étiquette de chaque lot répète le nom du groupe. */
.pd2 .pd2-lot-group .pd2-lot-typo { display: none; }
.pd2 .pd2-lot-group .pd2-lot-row { grid-template-columns: minmax(0, 1fr) auto auto; }
@media (max-width: 580px) {
    .pd2 .pd2-lot-group .pd2-lot-row { grid-template-columns: minmax(0, 1fr) auto; }
    .pd2 .pd2-lot-group .pd2-lot-cta { grid-column: 1 / -1; }
}
.pd2-lot-group-from { font-size: 14px; color: var(--pd2-muted); }
.pd2-lot-group-count { margin-left: auto; font-size: 13px; color: var(--pd2-ink); font-weight: 600; }
.pd2-lot-group .pd2-lot-list { padding: 0 18px 8px; }

/* Barre mobile avec prix d'entrée */
@media (max-width: 580px) {
    .pd2-mobile-follow--lots { align-items: center; gap: 14px; }
    .pd2-mobile-follow--lots .pd2-btn { width: auto; flex: 1 1 auto; }
    .pd2 a.pd2-mobile-price { display: grid; line-height: 1.2; color: var(--pd2-ink); text-decoration: none; flex: none; }
    .pd2-mobile-price small { font-size: 11px; color: var(--pd2-muted); }
    .pd2-mobile-price strong { font-size: 16px; }
    .pd2-mobile-price span { font-size: 12px; color: var(--pd2-blue-dark); text-decoration: underline; }
}

/* Barre « Suivre » au-dessus de la navigation globale des connectés
   (mobile_bottom_nav.css : 65 px, fixée en bas sous 768 px, z-index 1030). */
@media (max-width: 580px) {
    .pd2--app-nav .pd2-mobile-follow { bottom: calc(65px + env(safe-area-inset-bottom)); padding-bottom: 12px; }
    .pd2.pd2--app-nav { padding-bottom: 96px; }
}

/* Mobile et tablette : la colonne (Vos futurs voisins, avancement) remonte juste
   après « En bref » au lieu de finir sous toutes les rubriques. `display: contents`
   fait des enfants de .pd2-main des éléments de la grille, réordonnés sans
   dupliquer le bloc (recette du 2026-10-02 : il commençait à ~14 800 px). */
@media (max-width: 800px) {
    .pd2-grid { gap: 0; }
    .pd2-main { display: contents; }
    .pd2-main > * { order: 2; min-width: 0; }
    .pd2-main > .pd2-hero, .pd2-main > .pd2-section-nav, .pd2-main > #programme { order: 1; }
    .pd2-aside { order: 1; margin: 32px 0 8px; }
    .pd2-aside + * { order: 2; }
}
@media (max-width: 580px) {
    .pd2 .pd2-side-panel h2 { font-size: 20px; margin-bottom: 12px; }
    .pd2-community-icon { width: 40px; height: 40px; margin-bottom: 10px; }
    .pd2-timeline { margin-top: 12px; }
    .pd2-timeline li { min-height: 34px; }
    .pd2-timeline li:not(.is-current) small { display: none; }
}

/* ============================================================
   Correctifs de la recette acheteur du 2026-10-03
   ============================================================ */

/* Ancres : toute cible (y compris les anciennes ancres de la v1 venues
   d'e-mails, #section-faq, #section-vefa…) s'arrête sous la barre d'ancres. */
.pd2 [id] { scroll-margin-top: 64px; }

/* Mini-carte Leaflet du bloc « Environnement » : la v2 n'a plus Leaflet (la
   carte du site est juste au-dessus), le cadre restait gris et vide. */
.pd2 .neighborhood-map { display: none; }

/* « Mon parcours VEFA » : l'en-tête de phase passe à la ligne au lieu de
   déborder de 5 px sur mobile pour un suiveur. */
.pd2 .vefa-journey__phase-head { flex-wrap: wrap; row-gap: 4px; }
.pd2 .vefa-journey__phase-name { min-width: 0; }

/* Titres des lignes Environnement / Risques / Bruit sur deux lignes */
.pd2 .pd2-avail-title { display: flex; align-items: baseline; gap: 6px; }
.pd2-avail-title i { flex: none; margin-right: 0; }

/* Cibles tactiles d'au moins 44 px */
.pd2 .pd2-hero .share-native-btn { min-height: 44px; min-width: 44px; padding: 8px 6px; display: inline-flex; align-items: center; gap: 6px; }
.pd2 .pd2-hero .share-native-btn .d-none { display: inline !important; }
.pd2 .pd2-filter { min-height: 44px; }
@media (max-width: 580px) {
    .pd2 .pd2-expand { min-height: 36px; padding: 8px 12px; }
}

/* Barre d'ancres mobile : fondu à droite pour signaler qu'elle défile */
@media (max-width: 580px) {
    .pd2-section-nav { -webkit-mask-image: linear-gradient(to right, var(--pd2-ink) 85%, transparent); mask-image: linear-gradient(to right, var(--pd2-ink) 85%, transparent); padding-right: 28px; }
}

/* Tablette : le bouton Suivre de l'en-tête reste sur une ligne */
@media (min-width: 581px) and (max-width: 1050px) {
    .pd2-follow-intro .pd2-btn { white-space: nowrap; }
    .pd2-follow-intro { width: auto; max-width: 280px; }
}
/* Réponse à « As-tu réservé un lot ? » dans la zone du bouton : elle ne doit
   jamais élargir la zone (le titre de la fiche en dépend). */
.pd2-follow-intro .follow-answer { max-width: 100%; }
.pd2-follow-intro .follow-answer__lot-row { flex-wrap: wrap; }
.pd2-follow-intro .follow-answer__lot input { min-width: 0; width: 100%; }

/* Pied de page : la barre « Suivre » (72 px) s'ajoute à la navigation globale
   des connectés. Le pied de page ne réservait que la place de cette dernière
   (site_footer.css, 89 px) et les liens légaux passaient dessous. */
@media (max-width: 580px) {
    body:has(.pd2-mobile-follow) .vc-footer { padding-bottom: calc(100px + env(safe-area-inset-bottom)); }
    body:has(.pd2--app-nav) .vc-footer { padding-bottom: calc(165px + env(safe-area-inset-bottom)); }
}

/* Message de confirmation (formulaire de contact envoyé, etc.) */
.pd2-messages { margin: 16px 0 0; display: grid; gap: 8px; }
.pd2-message { padding: 12px 16px; border-radius: 10px; font-size: 14px; background: var(--vefa-success-soft, rgba(22, 163, 74, .1)); color: var(--pd2-ink); border: 1px solid var(--vefa-success, #16a34a); }
.pd2-message--error, .pd2-message--warning { background: var(--vefa-warning-soft, rgba(245, 158, 11, .1)); border-color: var(--vefa-warning, #f59e0b); }

/* ---------- Choix sur place du bouton Suivre (partials/follow_choice.html) ----------
   « J'ai réservé un lot » prend la place du bouton Suivre (il ne s'ajoute pas :
   2 boutons pleins au plus), « Pas encore » est en contour, « Annuler » est un lien. */
.pd2 .follow-choice__panel { display: grid; width: 100%; gap: 8px; justify-items: stretch; }
.pd2 .follow-choice__panel .pd2-btn { width: 100%; }
.pd2 .follow-choice__cancel.pd2-link { justify-self: center; min-height: 36px; padding: 4px 8px; color: var(--pd2-muted); text-decoration: underline; }
.pd2 .follow-choice__cancel.pd2-link:hover { color: var(--pd2-ink); }
.pd2 .pd2-lots-unpublished .follow-choice__panel { display: flex; flex-wrap: wrap; width: auto; margin-top: 6px; }
.pd2 .pd2-lots-unpublished .follow-choice__panel .pd2-btn { width: auto; }
/* Barre mobile : les deux réponses côte à côte, « Annuler » dessous ; le prix d'entrée s'efface le temps du choix. */
.pd2-mobile-follow .follow-choice__panel { grid-template-columns: 1fr 1fr; }
.pd2-mobile-follow .follow-choice__panel .pd2-btn { min-height: 46px; padding: 8px 10px; font-size: 13px; }
.pd2-mobile-follow .follow-choice__cancel.pd2-link { grid-column: 1 / -1; }
.pd2-mobile-follow:has(.follow-choice__panel:not([hidden])) .pd2-mobile-price { display: none; }
.pd2-mobile-follow:has(.follow-choice__panel:not([hidden])) .follow-choice { display: block; flex: 1 1 auto; }
/* Question « As-tu réservé un lot ? » dans la colonne de droite : texte et liens, aucun bouton plein. */
.pd2-side-panel .follow-qualification { margin: 0 0 12px; }
.pd2-side-panel .follow-qualification__actions { gap: 0 18px; }
.pd2-side-panel .follow-qualification .pd2-link { margin-top: 0; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.pd2 .follow-answer__save {
    min-height: 44px; padding: 8px 14px; border-radius: 8px; font-weight: 600;
    border: 1px solid var(--vefa-primary-border, #b8d6ea); background: var(--pd2-white); color: var(--pd2-blue-dark);
}

/* Premier sous-bloc d'une rubrique : pas de séparateur juste sous le titre
   (fiche sans photos ni caractéristiques : « Le programme en détail » semblait
   vide, son premier bloc commençant par un trait et un grand espace). */
.pd2-panel > h2 + .pd2-sub,
.pd2-panel > h2 + div > .pd2-sub:first-child { margin-top: 0; padding-top: 0; border-top: 0; }


/* ============================================================
   Couleur et relief (2026-10-03)
   ============================================================ */
/* Retour de Sabri : « fiches v2 un peu monocouleur, un peu terne ». La règle de
   marque reste la même (le bleu structure, l'orange engage) ; la couleur arrive
   par du sens, pas par de la décoration : repère de rubrique, état du programme
   et des lots, prix, moments communautaires en orange. */

/* Repère de rubrique : pastille d'icône devant chaque H2 de rubrique. Orange pour
   les échanges (moment communautaire), bleu ailleurs. */
.pd2 .pd2-panel > h2,
.pd2 .pd2-section-heading > h2 { display: flex; align-items: flex-start; gap: 14px; }
.pd2-h-mark {
    flex: none; width: 40px; height: 40px; border-radius: 11px; display: inline-grid; place-items: center; margin-top: -2px;
    background: var(--vefa-primary-tint, #eaf4fb); color: var(--pd2-blue-dark);
}
.pd2-h-mark .pd2-icon { width: 21px; height: 21px; }
.pd2-h-mark--warm { background: var(--vefa-accent-surface, #fff7ed); color: var(--vefa-accent-dark, #d93600); }
.pd2 .pd2-section-heading > h2 .pd2-badge { margin-top: 9px; }
@media (max-width: 580px) {
    .pd2-h-mark { width: 34px; height: 34px; border-radius: 9px; }
    .pd2-h-mark .pd2-icon { width: 18px; height: 18px; }
}

/* En-tête : la phase et les lots disponibles deviennent des pastilles d'état. */
.pd2 .pd2-meta-item--phase,
.pd2 .pd2-meta-item--available {
    padding: 4px 11px 4px 9px; border-radius: 999px; font-weight: 600; font-size: 13px;
    background: var(--vefa-primary-tint, #eaf4fb); color: var(--pd2-blue-dark);
}
@media (max-width: 580px) {
    .pd2 .pd2-meta-item--phase, .pd2 .pd2-meta-item--available { justify-self: start; align-items: center; font-size: 12px; }
}
.pd2 .pd2-meta-item--phase .pd2-icon,
.pd2 .pd2-meta-item--available .pd2-icon { color: currentColor; width: 15px; height: 15px; }
.pd2 .pd2-phase--commercialisation { background: var(--vefa-accent-surface, #fff7ed); color: var(--vefa-accent-ink, #9a3412); }
.pd2 .pd2-phase--construction,
.pd2 .pd2-phase--gros-oeuvre { background: var(--vefa-warning-surface, #fffbeb); color: var(--vefa-warning-ink, #b45309); }
.pd2 .pd2-phase--livraison,
.pd2 .pd2-phase--suivi-post-livraison,
.pd2 .pd2-phase--gestion-du-programme { background: var(--vefa-success-surface, #f0fdf4); color: var(--vefa-success-ink, #15803d); }
.pd2 a.pd2-meta-item--available { background: var(--vefa-success-surface, #f0fdf4); color: var(--vefa-success-ink, #15803d); }
.pd2 a.pd2-meta-item--available span { text-decoration: none; }
.pd2 a.pd2-meta-item--available:hover span { color: var(--vefa-success-ink, #15803d); text-decoration: underline; }

/* Navigation de rubriques : trait plus épais sous la rubrique active. */
.pd2 .pd2-section-nav a[aria-current=true] { border-bottom-width: 3px; }

/* Lots : étiquette de typologie et prix en bleu de marque. */
.pd2 .pd2-lot-row { grid-template-columns: auto minmax(0, 1fr) auto auto; }
.pd2-lot-typo {
    min-width: 48px; height: 48px; padding: 0 8px; border-radius: 10px; display: inline-grid; place-items: center;
    background: var(--vefa-primary-tint, #eaf4fb); color: var(--pd2-blue-dark);
    font: 700 15px/1 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; white-space: nowrap;
}
.pd2-lot-typo--studio, .pd2-lot-typo--t1bis { font-size: 12px; }
.pd2 .pd2-lot-price { color: var(--pd2-blue-dark); }
.pd2-lot--sold .pd2-lot-typo, .pd2-lot--reserved .pd2-lot-typo, .pd2-lot--optioned .pd2-lot-typo {
    background: var(--vefa-bg-muted, #f1f5f9); color: var(--pd2-muted);
}
.pd2-lot--sold .pd2-lot-price, .pd2-lot--reserved .pd2-lot-price, .pd2-lot--optioned .pd2-lot-price { color: var(--pd2-muted); }
@media (max-width: 580px) {
    .pd2 .pd2-lot-row { grid-template-columns: auto minmax(0, 1fr) auto; }
    .pd2-lot-typo { min-width: 42px; height: 42px; font-size: 14px; }
    .pd2 .pd2-lot-cta { grid-column: 2 / -1; }
}

/* Moments communautaires en orange : carte « Tes futurs voisins » et état vide
   des échanges (le collectif à lancer). */
.pd2 .pd2-community-icon { background: var(--vefa-accent-surface, #fff7ed); color: var(--vefa-accent-dark, #d93600); }
.pd2 #echanges .pd2-empty { background: var(--vefa-accent-surface, #fff7ed); border-color: var(--vefa-accent-border, #fed7aa); }
.pd2 #echanges .pd2-empty .pd2-community-icon { background: var(--pd2-white); }

/* Avancement : étapes franchies en vert, étape en cours en bleu. */
.pd2-timeline li.is-done::before { border-color: var(--vefa-success, #16a34a); background: var(--vefa-success, #16a34a); }
.pd2-timeline li.is-done:not(:last-child)::after { background: var(--vefa-success-border, #bbf7d0); }

/* Quotidien : un repère de couleur par thème (catégorie, jamais seul porteur du sens). */
.pd2 .pd2-quartier-daily .pd2-avail-title i,
.pd2 .pd2-city-themes .pd2-avail-title i {
    width: 32px; height: 32px; border-radius: 9px; display: inline-grid; place-items: center; font-size: 14px; flex: none;
    background: var(--vefa-primary-surface, #eff6ff); color: var(--pd2-blue-dark); border: 1px solid var(--vefa-primary-border, #b8d6ea);
}
.pd2 .pd2-quartier-daily .pd2-avail-row:nth-child(1) .pd2-avail-title i { background: var(--vefa-success-surface, #f0fdf4); color: var(--vefa-success-ink, #15803d); border-color: var(--vefa-success-border, #bbf7d0); }
.pd2 .pd2-quartier-daily .pd2-avail-row:nth-child(2) .pd2-avail-title i { background: var(--vefa-warning-surface, #fffbeb); color: var(--vefa-warning-ink, #b45309); border-color: var(--vefa-warning-border, #fde68a); }
.pd2 .pd2-quartier-daily .pd2-avail-row:nth-child(3) .pd2-avail-title i { background: var(--vefa-violet-surface, #f5f3ff); color: var(--vefa-violet-ink, #6d28d9); border-color: var(--vefa-violet-border, #ddd6fe); }
.pd2 .pd2-quartier-daily .pd2-avail-title,
.pd2 .pd2-city-themes .pd2-avail-title { align-items: center; gap: 12px; }
.pd2 .pd2-quartier-daily .pd2-avail-hint { padding-left: 44px; }
.pd2 .pd2-quartier-daily .pd2-avail-body { padding-left: 44px; }
@media (max-width: 580px) {
    .pd2 .pd2-quartier-daily .pd2-avail-hint,
    .pd2 .pd2-quartier-daily .pd2-avail-body { padding-left: 0; }
}

/* Cibles tactiles en mobile (recette du 2026-10-03) : 44 px de zone de clic pour
   les liens isolés, sans changer la mise en page (zone étendue par ::after ou par
   un padding compensé). Les liens dans une phrase restent tels quels. */
@media (max-width: 580px) {
    .pd2 a.pd2-meta-item,
    .pd2 a.pd2-city-figure-link,
    .pd2 .pd2-breadcrumb a,
    .pd2 .program_general_forum__footer a,
    .pd2 .program_detail_market_link,
    .pd2 .program_detail_market_source a,
    .pd2 .program_detail_comparison_footnote a,
    .pd2 .program_detail_developer_subtitle a { position: relative; }
    .pd2 a.pd2-meta-item::after,
    .pd2 a.pd2-city-figure-link::after,
    .pd2 .pd2-breadcrumb a::after,
    .pd2 .program_general_forum__footer a::after,
    .pd2 .program_detail_market_link::after,
    .pd2 .program_detail_market_source a::after,
    .pd2 .program_detail_comparison_footnote a::after,
    .pd2 .program_detail_developer_subtitle a::after {
        content: ""; position: absolute; left: -4px; right: -4px; top: 50%; height: 44px; transform: translateY(-50%);
    }
    .pd2 .pd2-details > summary { min-height: 44px; display: flex; align-items: center; }
}

