/* ═══ 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: center;
  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: 1.05fr 1.2fr 1.2fr 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-left: 0; }
.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) and (max-width: 1440px) {
  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; } }
