/* ═══ Charte The Venue Advisors — couche commune, version noire ═══════════════
   Validée le 10/09/2026 sur la maquette blanche (/app/maquette-blanche.html),
   déclinée en noir pour tous les sites : Advisory, marketplace, audit,
   Every Thursday et The Wedding Suppliers (copie dans suppliers/css/).

   Chargée en DERNIER sur chaque page : elle harmonise sans toucher à la
   structure. Trois arrondis au lieu de onze, ombres douces, boutons et
   libellés en minuscules, titres Cormorant pleins. Les !important visent
   uniquement les styles écrits en ligne dans le HTML et le JavaScript.
   Retour arrière : retirer la balise <link href="/css/charte.css">. */

:root {
  --c-fond: #0A0A0A;
  --c-fond-alt: #111110;
  --c-carte: #161513;
  --c-carte-haut: #1D1B18;
  --c-trait: rgba(237, 230, 214, 0.09);
  --c-trait-fort: rgba(237, 230, 214, 0.18);
  --c-encre: #F3EFE6;
  --c-texte: #CFC9BD;
  --c-doux: #958E81;
  --c-or: #C9A961;
  --c-or-survol: #D7BA78;
  --c-or-voile: rgba(201, 169, 97, 0.10);
  --r-s: 8px;
  --r-m: 12px;
  --r-pill: 999px;
  --c-ombre: 0 1px 2px rgba(0, 0, 0, 0.45), 0 8px 24px rgba(0, 0, 0, 0.30);
  --c-ombre-survol: 0 2px 6px rgba(0, 0, 0, 0.5), 0 20px 44px rgba(0, 0, 0, 0.55);
}

/* ─── Titres : Cormorant plein, sans espacement ─────────────────────────── */
h1, h2, h3 { font-weight: 600; letter-spacing: -0.005em; }
.hero-mini h1, .hero h1, .pillar-hero h1, .hub-hero h1, .et-title,
.detail-info h2, main.pillar-main h2, .section-title, .modal-box h3,
.dates-panel h3, .listing-info h3, .et-card-name, .cta-block h3 {
  font-weight: 600; letter-spacing: -0.005em;
}

/* ─── Boutons : arrondi 8 px, minuscules, graisse 600 ───────────────────── */
.btn, .btn-primary, .btn-secondary, .btn-gold, .btn-outline, .btn-gold-outline,
.nav-cta, .nav-signin, .submit-btn, .service-btn, .persona-btn, .venue-btn,
.cta-primary, .hero .cta, .tier-cta, .cta, .deal-cta, .subscribe-btn,
.modal-btn-primary, .et-btn, .cpi-btn, .cpi-verdict-cta, .pro-cta-btn,
.btn-add, .card > button, .card form button {
  border-radius: var(--r-s) !important;
  text-transform: none !important;
  letter-spacing: 0.01em !important;
  font-weight: 600 !important;
}
.btn, .cta-primary, .hero .cta, .tier-cta, .deal-cta, .subscribe-btn,
.modal-btn-primary, .et-btn, .cpi-btn, .cpi-verdict-cta, .pro-cta-btn, .submit-btn {
  font-size: 0.9rem !important;
}
.btn { padding: 0.85rem 1.6rem; }
.btn-sm { padding: 0.55rem 1rem !important; font-size: 0.8rem !important; }
.btn-hero { padding: 1rem 1.9rem !important; font-size: 0.95rem !important; }
.btn-primary:hover, .btn-gold:hover, .nav-cta:hover { transform: none; box-shadow: 0 6px 18px rgba(201, 169, 97, 0.22); }
.btn-secondary, .btn-outline, .btn-gold-outline {
  background: transparent !important;
  border: 1px solid var(--c-trait-fort) !important;
  color: var(--c-encre) !important;
}
.btn-secondary:hover, .btn-outline:hover, .btn-gold-outline:hover {
  background: var(--c-or-voile) !important;
  border-color: var(--c-or) !important;
  color: var(--c-encre) !important;
}
.btn-ghost { text-transform: none !important; letter-spacing: 0.01em !important; font-size: 0.9rem !important; font-weight: 500 !important; }
.btn:focus-visible, button:focus-visible, a:focus-visible { outline: 2px solid var(--c-or); outline-offset: 2px; border-radius: var(--r-s); }

/* ─── Navigation : liens en minuscules ──────────────────────────────────── */
.nav-links a, nav.pillar-nav .nav-right a:not(.nav-cta),
.site-header .marketplace-link, .et-back-link, .pro-back, .detail-back {
  text-transform: none !important;
  letter-spacing: 0.01em !important;
  font-weight: 500 !important;
}
.nav-links a { font-size: 0.9rem; }
.lang-switch, .lang-toggle button { border-radius: var(--r-pill) !important; letter-spacing: 0.08em !important; }
.mobile-menu-toggle { border-radius: var(--r-s) !important; }
#lang-btn { border-radius: var(--r-pill) !important; }

/* Boutons flottants et boutons de navigation : jamais sur deux lignes */
#help-button { text-transform: none !important; letter-spacing: 0.01em !important; }
.nav-cta, .nav-signin, #auth-nav-btn { white-space: nowrap; }
#auth-nav-btn { text-transform: none !important; letter-spacing: 0.01em !important; font-weight: 600 !important; }

/* Barre des pages d'accueil (Advisory, accueil marketplace, Suppliers) : à
   1280 px les liens passaient sur deux ou trois lignes, avant même la charte.
   On resserre les espacements et on garde chaque lien sur une ligne. */
/* Espace minimal entre le logo et les liens : sans lui, « Marketplace »
   touchait « Concept » dès que la barre était pleine. */
nav:has(> .nav-links) { gap: 1.5rem; }
nav:has(> .nav-links) > .nav-links { margin-left: auto; }

@media (min-width: 1101px) {
  nav > .logo { white-space: nowrap; }
  nav:has(> .nav-links) .nav-links a { white-space: nowrap; }
}
@media (min-width: 1101px) and (max-width: 1440px) {
  nav:has(> .nav-links) { padding-left: 3% !important; padding-right: 3% !important; }
  nav:has(> .nav-links) .nav-links { gap: 1.1rem !important; }
  nav:has(> .nav-links) .nav-links a { font-size: 0.84rem !important; }
  nav > .logo { font-size: 1.25rem !important; }
}

@media (min-width: 769px) and (max-width: 1100px) {
  nav:has(> .nav-links) { padding-left: 2.5% !important; padding-right: 2.5% !important; gap: 0.8rem; }
  nav:has(> .nav-links) .nav-links { gap: 0.8rem !important; }
  nav:has(> .nav-links) .nav-links a { font-size: 0.78rem !important; white-space: nowrap; }
  nav:has(> .nav-links) .nav-cta, nav:has(> .nav-links) .nav-signin { padding: 0.5rem 0.8rem !important; }
  nav > .logo { font-size: 1.05rem !important; white-space: nowrap; }
  nav > .logo span { display: none; }
}

/* Libellés en majuscules écrits en ligne (écran de connexion de l'inscription) */
label[style*="uppercase"] {
  text-transform: none !important;
  letter-spacing: 0.01em !important;
  font-size: 0.8rem !important;
  font-weight: 600 !important;
  color: var(--c-encre) !important;
}

/* ─── Libellés de formulaire : minuscules, graisse 600 ──────────────────── */
.form-group label, .form-label, .field label, .et-label, .form-card label {
  text-transform: none !important;
  letter-spacing: 0.01em !important;
  font-size: 0.82rem !important;
  font-weight: 600 !important;
  color: var(--c-encre) !important;
}

/* ─── Champs : arrondi 8 px ─────────────────────────────────────────────── */
.form-input, .form-select, .form-textarea, .bid-input,
.field input, .field textarea, .field select,
.et-input, .et-select, .et-textarea, .cpi-input, .modal-auth-form input,
.form-group input, .form-group select, .form-group textarea,
.filter-row select, .filter-row input, .form-card input, .form-card select, .form-card textarea,
.card input[type="password"], .chat-input-bar input {
  border-radius: var(--r-s) !important;
}

/* ─── Cartes et panneaux : arrondi 12 px ────────────────────────────────── */
.listing-card, .listing-skeleton, .et-card, .dashboard-card, .how-card,
.persona-card, .service-card, .concept-card, .type-card, .venue-card, .mfst-card,
.hub-card, .related-card, .cta-block, .modal-box, .dates-panel, .contact-panel,
.role-card, .cat-card, .date-entry, .subscription-banner, .chat-window, .auction-box,
.detail-main-photo, .photo-upload-area, .success-message, .form-wrapper, .inv-step,
.conv-list, .thread, .faq-item, .benefit, .preview-banner, .path-card, .pricing-card,
.cat-tile, .mkt-link, .deliverable-card, .sell-block, .form-wrap, .card, .form-card,
.analyse-card, .summary-box, .kpi-tile, .report-section, .travel-tile, .transport-item,
.scenario-card, .tier-card, .countdown-block, .deal-card, .modal-panel, .security-block,
.upload-zone, .date-card, .type-option, .section-card, .banner-zone, .panel, .kpi,
.et-panel, .cpi-crit-card, .cpi-form, #cpi-result, .cpi-sample-card, .cpi-press-block,
.admin-hero, .stat-card, table.admin-table, .pro-cta-card, .pro-photo-main, .detail-services,
.mini-faq details, #booking-type-secured, .booking-card-selected {
  border-radius: var(--r-m) !important;
}

/* ─── Petits éléments : arrondi 8 px ────────────────────────────────────── */
.date-slot, .owner-date-slot, .toast, .detail-thumb, .listing-badge, .et-card-tag,
.type-tag, .venue-date, .venue-date-type, .concept-icon, .benefit-icon,
.hero .price-tag, .sell-block .tag, .checkbox-row, .choice, .check, .insight-item,
.investment-item, .finsim-kpi, .countdown, .deal-savings, .deal-multi-badge, .deal-option,
.modal-summary, .pay-mode-opt, .photo-thumb, .photo-preview, .pill, .et-deadline,
.et-radio, .et-status, .et-price-preview, .et-remove-btn, .cpi-radio, .conv-item,
.inv-important, .msg-filtered-warn, .pro-thumb, .pro-video, .pro-services li, .pro-slot,
.pro-review, .draft-note, .modal-close:not(.chat-header *) {
  border-radius: var(--r-s) !important;
}
.callout { border-radius: 0 var(--r-s) var(--r-s) 0 !important; }
.modal-close { border-radius: 50% !important; }

/* ─── Pastilles : forme pilule ──────────────────────────────────────────── */
.hero-eyebrow, .hero-badge, .detail-meta-pill, .amenity-tag, .hero .badge,
.beyond .chip, .et-hero .badge, .service-badge, .tier-badge {
  border-radius: var(--r-pill) !important;
}

/* Badges posés sur les photos : minuscules, plus lisibles */
.listing-badge, .et-card-tag, .deal-multi-badge, .pro-cat-badge {
  text-transform: none !important;
  letter-spacing: 0.01em !important;
  font-size: 0.75rem !important;
  font-weight: 600 !important;
}

/* ─── Arrondis écrits en ligne dans le HTML et le JavaScript ────────────── */
[style*="border-radius:2px"], [style*="border-radius: 2px"],
[style*="border-radius:3px"], [style*="border-radius: 3px"],
[style*="border-radius:4px"], [style*="border-radius: 4px"],
[style*="border-radius:5px"], [style*="border-radius: 5px"] {
  border-radius: var(--r-s) !important;
}
[style*="border-radius:6px"], [style*="border-radius: 6px"] {
  border-radius: var(--r-m) !important;
}

/* ─── Marketplace et Suppliers : cartes de lieux ────────────────────────── */
.listings-grid { grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)) !important; gap: 1.5rem !important; }
.listing-card { border-color: var(--c-trait) !important; background: var(--c-carte) !important; }
.listing-card:hover {
  transform: translateY(-4px) !important;
  border-color: rgba(201, 169, 97, 0.35) !important;
  box-shadow: var(--c-ombre-survol) !important;
}
.listing-photo::after { display: none; }
.listing-badge { top: 0.75rem !important; left: 0.75rem !important; padding: 0.3rem 0.6rem !important; box-shadow: none !important; }
.listing-info { padding: 1rem 1.15rem 1.2rem !important; gap: 0.15rem; }
.listing-info h3 { font-size: 1.4rem !important; margin-bottom: 0.1rem !important; color: var(--c-encre); }
.listing-card:hover .listing-info h3 { color: var(--c-encre) !important; }
.listing-region, .listing-info .listing-cat {
  text-transform: none !important;
  letter-spacing: 0.01em !important;
  font-size: 0.84rem !important;
  color: var(--c-doux) !important;
  opacity: 1 !important;
  margin-bottom: 0.55rem !important;
}
.listing-faits { list-style: none; margin: 0.15rem 0 0; padding: 0; display: flex; flex-direction: column; gap: 0.5rem; }
.listing-faits li { display: flex; align-items: center; gap: 0.6rem; font-size: 0.88rem; line-height: 1.35; color: var(--c-texte); }
.listing-faits svg { width: 17px; height: 17px; flex-shrink: 0; fill: none; stroke: var(--c-doux); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.listing-faits b { color: var(--c-encre); font-weight: 600; }
.listing-faits .fait-or { color: var(--c-or); }
.listing-faits .fait-or svg { stroke: var(--c-or); }
.listing-faits .fait-doux { color: var(--c-doux); }

/* ─── Marketplace : barre de recherche et filtres en pastilles ──────────── */
.filters-bar {
  background: var(--c-fond) !important;
  border-bottom: 0 !important;
  backdrop-filter: none !important;
  padding: 2.2rem 5% 0.6rem !important;
  gap: 1.1rem !important;
}
.filter-group {
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  gap: 0.5rem !important;
  flex-wrap: wrap !important;
  justify-content: center;
}
.filter-group .filter-btn, .filters-bar > .filter-btn {
  border: 1px solid var(--c-trait-fort) !important;
  border-radius: var(--r-pill) !important;
  background: transparent !important;
  color: var(--c-texte) !important;
  padding: 0.5rem 1rem !important;
  font-size: 0.82rem !important;
  box-shadow: none !important;
}
.filter-btn {
  text-transform: none !important;
  letter-spacing: 0.01em !important;
  font-weight: 500 !important;
  transform: none !important;
}
.filter-group .filter-btn:hover { border-color: var(--c-encre) !important; color: var(--c-encre) !important; }
.filter-group .filter-btn.active, .filter-btn.active {
  background: var(--c-encre) !important;
  border-color: var(--c-encre) !important;
  color: #0A0A0A !important;
}
.barre-recherche {
  display: grid !important;
  grid-template-columns: 1.35fr 1fr 1fr auto;
  width: 100%; max-width: 880px;
  gap: 0 !important;
  background: var(--c-carte);
  border: 1px solid var(--c-trait-fort);
  border-radius: var(--r-m);
  box-shadow: var(--c-ombre);
  overflow: hidden;
}
.barre-recherche { align-items: stretch !important; }
.barre-recherche > * { height: auto !important; }
.champ-recherche {
  display: flex; flex-direction: column; justify-content: center; gap: 0.15rem;
  min-width: 0; padding: 0.7rem 1.1rem;
  border-right: 1px solid var(--c-trait);
  cursor: pointer;
}
.champ-titre { font-size: 0.72rem; font-weight: 600; color: var(--c-encre); letter-spacing: 0.01em; }
.barre-recherche select, .barre-recherche input[type="date"] {
  width: 100%; height: auto !important;
  background: transparent !important;
  border: 0 !important; border-radius: 0 !important;
  padding: 0.1rem 0 0 !important;
  font-size: 0.9rem !important; letter-spacing: normal !important;
  color: var(--c-texte) !important;
  color-scheme: dark;
  outline: none;
}
.barre-recherche select option { background: #161513; color: var(--c-encre); }
.barre-recherche .filter-btn.ok {
  border: 0 !important; border-radius: 0 !important;
  padding: 0 1.9rem !important;
  font-size: 0.92rem !important; font-weight: 600 !important;
  background: var(--c-or) !important; color: #0A0A0A !important;
}
.barre-recherche .filter-btn.ok:hover { background: var(--c-or-survol) !important; }
.filtre-effacer {
  background: none; border: 0; cursor: pointer;
  font: 500 0.8rem 'Montserrat', sans-serif; color: var(--c-doux);
  text-decoration: underline; text-underline-offset: 3px;
}
.filtre-effacer:hover { color: var(--c-encre); }

/* ─── Every Thursday sur la marketplace ─────────────────────────────────── */
.et-card { border-color: var(--c-trait) !important; }
.et-card:hover { border-color: rgba(201, 169, 97, 0.35) !important; box-shadow: var(--c-ombre-survol); }
.et-card-meta { text-transform: none !important; letter-spacing: 0.01em !important; font-size: 0.8rem !important; }
.et-foot a { text-transform: none !important; letter-spacing: 0.01em !important; font-size: 0.88rem !important; font-weight: 500; }

/* ─── Fiche lieu ─────────────────────────────────────────────────────────── */
.detail-thumb { border-radius: var(--r-s) !important; }
.detail-region { text-transform: none !important; letter-spacing: 0.01em !important; font-size: 0.95rem !important; }

@media (max-width: 768px) {
  .filters-bar { padding: 1.6rem 4% 0.4rem !important; align-items: stretch !important; }
  .filter-group { flex-wrap: nowrap !important; justify-content: flex-start; overflow-x: auto; scrollbar-width: none; max-width: 100%; }
  .filter-group::-webkit-scrollbar { display: none; }
  .filter-group .filter-btn { flex: 0 0 auto; white-space: nowrap; }
  .barre-recherche { grid-template-columns: 1fr 1fr; overflow: hidden !important; }
  .champ-recherche:first-child { grid-column: 1 / -1; border-right: 0; border-bottom: 1px solid var(--c-trait); }
  .champ-recherche:nth-child(3) { border-right: 0; }
  .barre-recherche .filter-btn.ok { grid-column: 1 / -1; padding: 0.95rem !important; }
  .filtre-effacer { align-self: center; }
  .listings-grid { grid-template-columns: 1fr !important; }
}

/* ═══ Marketplace — accueil, sélection de la semaine, dates (11/09/2026) ═══ */

/* Accueil en deux colonnes : recherche directe + lieu de la semaine */
.hero-mini.accueil {
  display: grid; grid-template-columns: 1.08fr 0.92fr; gap: 3rem; align-items: start;
  max-width: 1320px; margin: 0 auto; padding: 3.2rem 5% 3.4rem !important;
  text-align: left; background: none !important; border-bottom: 0 !important;
}
.accueil .hero-eyebrow { margin-bottom: 1.1rem; }
.accueil h1 { font-size: clamp(2.3rem, 4vw, 3.5rem) !important; line-height: 1.04 !important; margin-bottom: 1rem !important; }
.accueil .hero-lead { margin: 0 0 1.8rem !important; max-width: 560px; }
.accueil .barre-recherche { max-width: none; grid-template-columns: minmax(170px, 1.3fr) minmax(140px, 1fr) minmax(140px, 1fr) auto; }
.accueil .barre-recherche .filter-btn.ok { padding: 0 1.4rem !important; }
.accueil .champ-recherche { padding: 0.7rem 0.9rem; }
.accueil .hero-actions { justify-content: flex-start; margin-top: 0.6rem; }
.accueil .btn-ghost { padding: 0.55rem 0.8rem; margin-left: -0.8rem; border-radius: var(--r-s); }
.btn-ghost:focus:not(:focus-visible) { outline: none; }
.accueil-photo { margin-top: 2.6rem; }
.accueil .how-it-works { margin: 0; max-width: none; }
.accueil-preuves { display: flex; flex-wrap: wrap; gap: 0.4rem 1.4rem; list-style: none; margin: 1.1rem 0 0; padding: 0; font-size: 0.84rem; color: var(--c-doux); }
.accueil-preuves li::before { content: ''; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--c-or); margin-right: 0.5rem; vertical-align: 2px; }
.accueil-photo {
  position: relative; display: block; width: 100%; aspect-ratio: 5 / 4; padding: 0; border: 0; cursor: pointer;
  border-radius: 16px; overflow: hidden; background: var(--c-carte) center / cover no-repeat;
  box-shadow: var(--c-ombre); transition: box-shadow 0.35s;
}
.accueil-photo::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(10,10,10,0.55)); transition: opacity 0.35s; }
.accueil-photo:hover { box-shadow: var(--c-ombre-survol); }
.accueil-legende {
  position: absolute; left: 14px; bottom: 14px; z-index: 1;
  background: rgba(10,10,10,0.78); border: 1px solid var(--c-trait-fort); border-radius: var(--r-s);
  padding: 0.45rem 0.75rem; font: 500 0.8rem 'Montserrat', sans-serif; color: var(--c-encre);
  backdrop-filter: blur(6px);
}
.titre-chateaux { font: 600 2rem/1.1 'Cormorant Garamond', serif !important; color: var(--c-encre); margin: 0 0 0.3rem; }

/* Bandeaux propriétaires : fiche à réclamer, rappel Stripe */
.bandeau-fiche, .bandeau-accueil {
  max-width: 1320px; margin: 1.4rem auto 0; padding: 1.1rem 1.4rem;
  width: calc(100% - 10%);
  background: linear-gradient(135deg, rgba(201,169,97,0.12), rgba(201,169,97,0.03));
  border: 1px solid rgba(201,169,97,0.35); border-radius: var(--r-m);
}
.bandeau-fiche-ligne, .bandeau-stripe { display: flex; align-items: center; justify-content: space-between; gap: 1rem 1.5rem; flex-wrap: wrap; }
.bandeau-fiche-ligne + .bandeau-fiche-ligne { margin-top: 0.9rem; padding-top: 0.9rem; border-top: 1px solid var(--c-trait); }
.bandeau-fiche strong { color: var(--c-encre); font: 600 1.2rem 'Cormorant Garamond', serif; }
.bandeau-fiche p, .bandeau-stripe p { margin: 0.25rem 0 0; color: var(--c-texte); font-size: 0.9rem; line-height: 1.5; }
.bandeau-doux { color: var(--c-doux); font-size: 0.85rem; }
.bandeau-surtitre { font-size: 0.72rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--c-or); margin-bottom: 0.3rem; }
.bandeau-stripe:not(.bandeau-accueil) {
  margin-bottom: 1.5rem; padding: 1.1rem 1.4rem; border-radius: var(--r-m);
  background: linear-gradient(135deg, rgba(201,169,97,0.12), rgba(201,169,97,0.03)); border: 1px solid rgba(201,169,97,0.35);
}
.bandeau-stripe-texte { flex: 1; min-width: 260px; }
.bandeau-stripe[hidden] { display: none !important; }
.nav-nom { color: var(--c-doux); font-size: 0.82rem; max-width: 140px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nav-admin { color: var(--c-or); font-size: 0.82rem; font-weight: 600; cursor: pointer; }

/* Nos choix de la semaine : carrousel à défilement doux */
.selection-semaine { max-width: 1400px; margin: 0 auto; padding: 2.6rem 5% 0.6rem; }
.selection-tete { display: flex; align-items: flex-end; justify-content: space-between; gap: 1.5rem; margin-bottom: 1.3rem; }
.selection-surtitre { font-size: 0.72rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--c-or); margin: 0 0 0.5rem; }
.selection-tete h2 { font: 600 2rem/1.1 'Cormorant Garamond', serif; color: var(--c-encre); margin: 0; }
.selection-sous { margin: 0.4rem 0 0; color: var(--c-doux); font-size: 0.9rem; }
.selection-fleches { display: flex; gap: 0.5rem; flex-shrink: 0; }
.selection-fleches button {
  width: 42px; height: 42px; display: grid; place-items: center; cursor: pointer;
  border-radius: var(--r-pill); border: 1px solid var(--c-trait-fort); background: transparent; color: var(--c-encre);
  transition: border-color 0.25s, background 0.25s;
}
.selection-fleches button:hover { border-color: var(--c-or); background: var(--c-or-voile); }
.selection-fleches svg, .dl-chevron { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.selection-piste {
  display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - 3 * 1rem) / 4); gap: 1rem;
  overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 4px 2px 18px;
}
.selection-piste::-webkit-scrollbar { display: none; }
.choix-carte {
  scroll-snap-align: start; display: flex; flex-direction: column; text-align: left; cursor: pointer;
  padding: 0; font: inherit; color: inherit; background: var(--c-carte);
  border: 1px solid var(--c-trait); border-radius: var(--r-m); overflow: hidden;
  transition: border-color 0.3s, box-shadow 0.3s, translate 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}
.choix-carte:hover { border-color: rgba(201,169,97,0.4); box-shadow: var(--c-ombre-survol); translate: 0 -4px; }
.choix-photo { position: relative; display: block; aspect-ratio: 4 / 3; background: #1A1916 center / cover no-repeat; transition: background-size 0.6s; }
.choix-badge { position: absolute; top: 0.7rem; left: 0.7rem; background: var(--c-or); color: #0A0A0A; border-radius: var(--r-s); padding: 0.28rem 0.55rem; font-size: 0.74rem; font-weight: 600; }
.choix-corps { display: flex; flex-direction: column; gap: 0.25rem; padding: 0.9rem 1rem 1.05rem; }
.choix-nom { font: 600 1.25rem/1.15 'Cormorant Garamond', serif; color: var(--c-encre); }
.choix-region { font-size: 0.8rem; color: var(--c-doux); margin-bottom: 0.3rem; }
.choix-ligne { font-size: 0.85rem; color: var(--c-texte); }
.choix-ligne b { color: var(--c-encre); font-weight: 600; }
.choix-doux { color: var(--c-doux); }

/* Panneau des dates : liste compacte repliable */
.dates-panel h3 { color: var(--c-encre) !important; }
.dates-panel .dates-panel-sub { text-transform: none !important; letter-spacing: 0.01em !important; font-size: 0.85rem !important; opacity: 1 !important; color: var(--c-doux) !important; }
.dates-liste { display: flex; flex-direction: column; gap: 0.4rem; }
.dates-mois { margin: 0.9rem 0 0.2rem; font-size: 0.72rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--c-doux); }
.dates-mois:first-child { margin-top: 0.2rem; }
.dates-liste:not(.tout-voir) .dates-cachee { display: none; }
.date-ligne { border: 1px solid var(--c-trait); border-radius: var(--r-s); background: rgba(255,255,255,0.015); transition: border-color 0.25s, background 0.25s; }
.date-ligne:hover, .date-ligne[open] { border-color: rgba(201,169,97,0.35); background: rgba(201,169,97,0.04); }
.date-ligne summary {
  list-style: none; cursor: pointer; display: grid; grid-template-columns: 1fr auto auto 18px; align-items: center; gap: 0.7rem;
  padding: 0.75rem 0.9rem;
}
.date-ligne summary::-webkit-details-marker { display: none; }
.dl-date { font: 600 1.08rem/1.2 'Cormorant Garamond', serif; color: var(--c-encre); }
.dl-type { font-size: 0.7rem; font-weight: 600; color: var(--c-doux); border: 1px solid var(--c-trait-fort); border-radius: var(--r-pill); padding: 0.18rem 0.55rem; white-space: nowrap; }
.dl-type.dl-enchere { color: #E7B98A; border-color: rgba(231,185,138,0.35); }
.dl-prix { font: 600 1.05rem 'Montserrat', sans-serif; color: var(--c-or); white-space: nowrap; text-align: right; }
.dl-prix s { display: block; font-size: 0.72rem; font-weight: 400; color: var(--c-doux); }
.dl-chevron { color: var(--c-doux); transition: rotate 0.25s; }
.date-ligne[open] .dl-chevron { rotate: 180deg; color: var(--c-or); }
.dl-corps { padding: 0 0.9rem 0.95rem; }
.dl-acompte, .dl-info { margin: 0 0 0.75rem; font-size: 0.8rem; line-height: 1.5; color: var(--c-texte); }
.dl-info strong { color: var(--c-or); }
.dl-reserver { width: 100%; }
.dl-note { margin: 0.45rem 0 0; font-size: 0.72rem; color: var(--c-doux); text-align: center; }
.dl-offre { display: flex; gap: 0.5rem; margin-top: 0.6rem; }
.dl-offre .bid-input { flex: 1; min-width: 0; }
.dates-plus {
  width: 100%; margin-top: 0.7rem; padding: 0.7rem; cursor: pointer;
  background: transparent; border: 1px dashed var(--c-trait-fort); border-radius: var(--r-s);
  color: var(--c-encre); font: 600 0.85rem 'Montserrat', sans-serif; transition: border-color 0.25s, background 0.25s;
}
.dates-plus:hover { border-color: var(--c-or); background: var(--c-or-voile); }
.dates-vide { color: var(--c-doux); text-align: center; padding: 1.5rem 0; }

@media (max-width: 1100px) { .selection-piste { grid-auto-columns: calc((100% - 2 * 1rem) / 3); } }
@media (max-width: 900px) {
  .hero-mini.accueil { grid-template-columns: 1fr; gap: 1.6rem; padding-top: 1.6rem !important; }
  .accueil-photo { order: -1; aspect-ratio: 16 / 10; }
  .selection-piste { grid-auto-columns: 46%; }
}
@media (max-width: 560px) {
  .accueil h1 { font-size: 2.1rem !important; }
  .selection-tete { align-items: flex-start; }
  .selection-fleches { display: none; }
  .selection-piste { grid-auto-columns: 78%; margin: 0 -5%; padding-left: 5%; padding-right: 5%; scroll-padding-left: 5%; }
  .bandeau-fiche, .bandeau-accueil { width: calc(100% - 8%); }
  .date-ligne summary { grid-template-columns: 1fr auto 18px; }
  .dl-type { display: none; }
}

/* ═══ Animations — discrètes, au défilement et au survol ═══════════════════
   Apparition au défilement en CSS pur (animation-timeline: view()) : aucun
   script, rien ne se passe sur les navigateurs qui ne le gèrent pas. On anime
   `translate` et non `transform` pour ne pas écraser les effets de survol. */
@keyframes charte-apparition { from { opacity: 0; translate: 0 26px; } to { opacity: 1; translate: 0 0; } }
@keyframes charte-entree { from { opacity: 0; translate: 0 16px; } to { opacity: 1; translate: 0 0; } }

@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .service-card, .persona-card, .concept-card, .type-card, .mfst-card, .hub-card, .related-card,
    .deliverable-card, .deal-card, .how-card, .analyse-card, .tier-card, .inv-step, .benefit,
    .path-card, .pricing-card, .cat-tile, .card, .cta-block, .mini-faq, .section-title,
    main.pillar-main h2, .selection-tete, .titre-chateaux, .faq-item, .scenario-card, .kpi-tile {
      animation: charte-apparition linear both;
      animation-timeline: view();
      animation-range: entry 0% entry 42%;
    }
  }
  /* Entrée en douceur des accroches au chargement, en cascade */
  .hero-mini > *, .accueil-texte > *, .pillar-hero > *, .hub-hero > *, .hero > *:not(.hero-overlay) {
    animation: charte-entree 0.8s cubic-bezier(0.22, 1, 0.36, 1) both;
  }
  .hero-mini > :nth-child(2), .accueil-texte > :nth-child(2), .pillar-hero > :nth-child(2), .hub-hero > :nth-child(2), .hero > :nth-child(2) { animation-delay: 0.08s; }
  .hero-mini > :nth-child(3), .accueil-texte > :nth-child(3), .accueil-texte > :nth-child(4), .pillar-hero > :nth-child(3), .hub-hero > :nth-child(3), .hero > :nth-child(3) { animation-delay: 0.16s; }
  .accueil-texte > :nth-child(n+5), .hero > :nth-child(n+4) { animation-delay: 0.24s; }

  /* Survol : boutons qui se soulèvent, soulignement qui se dessine */
  .btn, .cta-primary, .deal-cta, .tier-cta, .submit-btn, .nav-cta { transition: background-color 0.25s, border-color 0.25s, box-shadow 0.25s, color 0.25s, translate 0.25s !important; }
  .btn:hover, .cta-primary:hover, .deal-cta:hover, .tier-cta:hover, .submit-btn:hover, .nav-cta:hover { translate: 0 -1px; }
  .nav-links a:not(.nav-cta):not(.nav-signin) {
    background-image: linear-gradient(currentColor, currentColor); background-repeat: no-repeat;
    background-position: 0 100%; background-size: 0 1px; transition: background-size 0.3s ease, color 0.25s;
  }
  .nav-links a:not(.nav-cta):not(.nav-signin):hover { background-size: 100% 1px; }
  .service-card, .persona-card, .hub-card, .related-card, .deliverable-card, .tier-card, .path-card, .pricing-card {
    transition: border-color 0.3s, box-shadow 0.3s, translate 0.35s cubic-bezier(0.22, 1, 0.36, 1);
  }
  .service-card:hover, .persona-card:hover, .hub-card:hover, .related-card:hover, .deliverable-card:hover, .tier-card:hover, .path-card:hover, .pricing-card:hover {
    translate: 0 -3px; box-shadow: var(--c-ombre-survol);
  }
}

/* ═══ Calendrier de visites (propriétaire et couple) ═══════════════════════ */
.modal-box.modal-calendrier { max-width: 860px !important; width: calc(100% - 2rem); }
.cal-conteneur { display: grid; grid-template-columns: minmax(280px, 1fr) minmax(260px, 1fr); gap: 1.5rem; align-items: start; text-align: left; }
.cal-chargement { color: var(--c-doux); }
.cal-tete { display: flex; align-items: center; justify-content: space-between; margin-bottom: 0.8rem; }
.cal-tete strong { font: 600 1.2rem 'Cormorant Garamond', serif; color: var(--c-encre); text-transform: capitalize; }
.cal-tete button { width: 34px; height: 34px; border-radius: var(--r-pill); border: 1px solid var(--c-trait-fort); background: transparent; color: var(--c-encre); font-size: 1.1rem; cursor: pointer; }
.cal-tete button:hover:not(:disabled) { border-color: var(--c-or); }
.cal-tete button:disabled { opacity: 0.3; cursor: default; }
.cal-grille { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.cal-entete { text-align: center; font-size: 0.68rem; font-weight: 600; color: var(--c-doux); padding-bottom: 0.3rem; text-transform: capitalize; }
.cal-jour {
  aspect-ratio: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
  border: 1px solid transparent; border-radius: var(--r-s); background: rgba(255,255,255,0.02);
  color: var(--c-texte); font: 500 0.85rem 'Montserrat', sans-serif; cursor: pointer; transition: border-color 0.2s, background 0.2s;
}
.cal-jour:hover:not(:disabled) { border-color: var(--c-trait-fort); }
.cal-jour.a-creneaux { background: var(--c-or-voile); color: var(--c-encre); }
.cal-jour.choisi { border-color: var(--c-or); background: rgba(201,169,97,0.18); color: var(--c-encre); }
.cal-jour:disabled { opacity: 0.3; cursor: default; }
.cal-points { display: flex; gap: 2px; min-height: 5px; }
.cal-point { display: inline-block; width: 5px; height: 5px; border-radius: 50%; background: var(--c-or); }
.cal-point.requested { background: #E7B98A; }
.cal-point.confirmed { background: #7BB875; }
.cal-legende { display: flex; gap: 1rem; margin-top: 0.7rem; font-size: 0.72rem; color: var(--c-doux); }
.cal-legende .cal-point { margin-right: 0.35rem; vertical-align: 1px; }
.cal-panneau { border-left: 1px solid var(--c-trait); padding-left: 1.5rem; min-height: 240px; }
.cal-aide { color: var(--c-doux) !important; font-size: 0.88rem !important; margin: 0.4rem 0 0 !important; }
.cal-jour-titre { font: 600 1.2rem 'Cormorant Garamond', serif; letter-spacing: normal !important; color: var(--c-encre); margin: 0 0 0.8rem; }
.cal-jour-titre::first-letter { text-transform: uppercase; }
.cal-ligne { display: flex; justify-content: space-between; align-items: center; gap: 0.6rem; flex-wrap: wrap; padding: 0.6rem 0.75rem; margin-bottom: 0.45rem; border: 1px solid var(--c-trait); border-radius: var(--r-s); font-size: 0.85rem; color: var(--c-texte); }
.cal-ligne.requested { border-color: rgba(231,185,138,0.45); }
.cal-ligne.confirmed { border-color: rgba(123,184,117,0.45); }
.cal-ligne strong { color: var(--c-encre); }
.cal-statut { color: var(--c-doux); }
.cal-qui { margin-top: 0.25rem; font-size: 0.78rem; color: var(--c-doux); }
.cal-qui em { display: block; margin-top: 0.2rem; font-style: italic; }
.cal-actions { display: flex; gap: 0.4rem; }
.cal-ajout { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--c-trait); }
.cal-libelle { display: block; font-size: 0.8rem; font-weight: 600; color: var(--c-encre); margin: 0.6rem 0 0.4rem; }
.cal-champs { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; }
.cal-champs #cal-repeter { grid-column: 1 / -1; }
.cal-champs .form-input, .cal-champs .form-select { width: 100%; padding: 0.55rem 0.7rem; }
.cal-valider { width: 100%; margin-top: 0.8rem; }
.cal-valider:disabled { opacity: 0.45; cursor: not-allowed; }
.cal-horaires { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.cal-horaire { display: flex; flex-direction: column; align-items: center; min-width: 74px; padding: 0.5rem 0.7rem; border: 1px solid var(--c-trait-fort); border-radius: var(--r-s); background: transparent; color: var(--c-encre); font: 600 0.95rem 'Montserrat', sans-serif; cursor: pointer; }
.cal-horaire small { font-size: 0.68rem; font-weight: 500; color: var(--c-doux); }
.cal-horaire:hover { border-color: var(--c-or); }
.cal-horaire.choisi { border-color: var(--c-or); background: var(--c-or); color: #0A0A0A; }
.cal-horaire.choisi small { color: #0A0A0A; }
#cal-message { width: 100%; }
.visite-bloc, .visites-attente { margin-top: 1rem; padding: 0.9rem 1.1rem; border: 1px solid rgba(201,169,97,0.3); border-radius: var(--r-m); background: rgba(201,169,97,0.05); }
.visite-bloc p { margin: 0.3rem 0 0.7rem; color: var(--c-texte); font-size: 0.88rem; }
.visites-attente { margin: 0; border-radius: 0; border-width: 0 0 1px; }
.visites-attente-ligne { display: flex; justify-content: space-between; align-items: center; gap: 0.8rem; padding: 0.45rem 0; color: var(--c-encre); font-size: 0.88rem; text-transform: capitalize; }
.pastille-compteur { display: inline-grid; place-items: center; min-width: 20px; height: 20px; padding: 0 6px; margin-left: 0.3rem; border-radius: var(--r-pill); background: var(--c-or); color: #0A0A0A; font-size: 0.72rem; font-weight: 700; }
@media (max-width: 720px) {
  .cal-conteneur { grid-template-columns: 1fr; }
  .cal-panneau { border-left: 0; padding-left: 0; border-top: 1px solid var(--c-trait); padding-top: 1rem; min-height: 0; }
}

/* Tableau de bord : lieu en brouillon */
.brouillon-info { display: flex; flex-direction: column; gap: 0.25rem; margin-top: 0.45rem; }
.brouillon-badge { align-self: flex-start; padding: 0.22rem 0.6rem; border-radius: var(--r-pill); border: 1px solid rgba(231,185,138,0.45); background: rgba(231,185,138,0.08); color: #E7B98A; font-size: 0.74rem; font-weight: 600; }
.brouillon-raison { font-size: 0.78rem; color: var(--c-doux); }

/* ═══ Navigation de la marketplace une fois connecté (11/09/2026) ══════════
   Un propriétaire a six liens + son nom + Déconnexion + langue : vers 1000 px
   la barre passait sur deux lignes et recouvrait le titre de l'accueil. On
   repère l'état connecté grâce à .nav-nom (ajouté par updateAuthUI) et on
   bascule sur le menu burger plus tôt, en reprenant les règles mobiles. */
/* Visiteur non connecté vers 1000 px : « Se connecter » et la langue passaient
   sous les liens. On garde une seule ligne en resserrant les espacements. */
@media (min-width: 769px) and (max-width: 1180px) {
  nav:has(.nav-burger) .nav-content { flex-wrap: nowrap !important; gap: 1rem !important; }
  nav:has(.nav-burger) .nav-content > .nav-links { gap: 1.3rem !important; }
  nav:has(.nav-burger) .nav-links a { white-space: nowrap; font-size: 0.86rem !important; }
  nav:has(.nav-burger) .logo-container svg { height: 56px; }
}
@media (min-width: 769px) and (max-width: 1180px) {
  nav:has(.nav-nom) .nav-burger { display: flex !important; flex: 0 0 auto; margin-left: auto; }
  nav:has(.nav-nom) .nav-content { flex-wrap: nowrap !important; gap: 0.8rem !important; min-width: 0; }
  nav:has(.nav-nom) .logo-container { flex: 0 1 auto; min-width: 0; }
  nav:has(.nav-nom) .nav-right { flex: 0 0 auto; gap: 0.5rem; }
  nav:has(.nav-nom) .nav-links {
    display: none !important; position: absolute; left: 0; right: 0; top: 100%;
    flex-direction: column; align-items: stretch; gap: 0 !important;
    background: rgba(10, 10, 10, 0.99); border-bottom: 1px solid rgba(201, 169, 97, 0.25);
    padding: 0.5rem 5% 1.25rem; max-height: calc(100vh - 100%); overflow-y: auto;
  }
  nav.nav-open:has(.nav-nom) .nav-links { display: flex !important; }
  nav:has(.nav-nom) .nav-links li { width: 100%; }
  nav:has(.nav-nom) .nav-links a { display: block; padding: 0.9rem 0; font-size: 0.95rem !important; border-bottom: 1px solid rgba(201, 169, 97, 0.10); background-image: none !important; }
}
@media (min-width: 1181px) {
  nav:has(.nav-nom) .nav-content { flex-wrap: nowrap !important; gap: 1rem !important; }
  nav:has(.nav-nom) .nav-links { gap: 1.1rem !important; }
  nav:has(.nav-nom) .nav-links a { font-size: 0.84rem !important; white-space: nowrap; }
  nav:has(.nav-nom) .logo-container svg { height: 56px; }
  nav:has(.nav-nom) .nav-right { gap: 0.5rem; }
}
@media (max-width: 1320px) { .nav-nom { display: none; } }
