[hidden] { display: none !important; }
:root {
  --vert:      #0f6b3f;
  --vert-clair:#1a8f56;
  --or:        #d4a017;
  --encre:     #14181a;
  --gris:      #5c6b66;
  --papier:    #f6f4ee;
  --carte:     #ffffff;
  --bord:      #e2ded2;
  --rouge:     #a4241f;
}
* { box-sizing: border-box; }
body {
  margin: 0;
  font: 16px/1.6 system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  color: var(--encre);
  background: var(--papier);
}
a { color: var(--vert); }
.enveloppe { max-width: 780px; margin: 0 auto; padding: 0 20px; }

/* ── En-tête ─────────────────────────────────────────────────────────── */
.bandeau {
  background: linear-gradient(160deg, #0b4f2f 0%, #0f6b3f 55%, #12583a 100%);
  color: #fff;
  padding: 44px 0 40px;
  text-align: center;
}
.marque {
  display: inline-block;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: 13px;
  color: var(--or);
  border: 1px solid rgba(212,160,23,.5);
  border-radius: 999px;
  padding: 5px 16px;
}
.bandeau h1 { font-size: clamp(28px, 6vw, 42px); margin: 18px 0 10px; line-height: 1.15; }
.bandeau p  { margin: 0 auto; max-width: 540px; color: #d7e8de; }

/* ── Carte d'achat ───────────────────────────────────────────────────── */
.carte {
  background: var(--carte);
  border: 1px solid var(--bord);
  border-radius: 14px;
  padding: 26px;
  margin: -28px 0 26px;
  box-shadow: 0 10px 30px rgba(20,24,26,.08);
}
.prix { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.prix strong { font-size: 40px; color: var(--vert); line-height: 1; }
.prix span { color: var(--gris); }
.edition {
  margin: 14px 0 20px; padding: 12px 14px;
  background: #f0f5f2; border-left: 3px solid var(--vert-clair); border-radius: 0 8px 8px 0;
  font-size: 15px;
}
.edition b { text-transform: capitalize; }
.bouton {
  display: block; width: 100%; border: 0; cursor: pointer;
  background: var(--vert); color: #fff;
  font-size: 18px; font-weight: 700; padding: 16px 20px; border-radius: 10px;
  text-align: center; text-decoration: none;
}
.bouton:hover:not(:disabled) { background: var(--vert-clair); }
.bouton:disabled { background: var(--gris); cursor: not-allowed; }
.bouton.secondaire { background: transparent; color: var(--vert); border: 1px solid var(--vert); }
.sous-bouton { margin: 12px 0 0; text-align: center; font-size: 13px; color: var(--gris); }

/* ── Contenu ─────────────────────────────────────────────────────────── */
h2 { font-size: 22px; margin: 32px 0 14px; }
.liste { list-style: none; padding: 0; margin: 0; }
.liste li {
  display: flex; gap: 12px; align-items: flex-start;
  padding: 11px 0; border-bottom: 1px solid var(--bord);
}
.liste li:last-child { border-bottom: 0; }
.puce { color: var(--vert-clair); font-weight: 700; }
.grille { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.bloc { background: var(--carte); border: 1px solid var(--bord); border-radius: 12px; padding: 16px; }
.bloc h3 { margin: 0 0 6px; font-size: 16px; }
.bloc p  { margin: 0; color: var(--gris); font-size: 14px; }

.avis { font-size: 14px; color: var(--gris); }
.erreur   { color: var(--rouge); font-weight: 600; }
.attente  { color: var(--gris); }
.succes   { color: var(--vert); font-weight: 600; }

/* ── Pied ────────────────────────────────────────────────────────────── */
.pied {
  margin-top: 40px; padding: 24px 0 40px;
  border-top: 1px solid var(--bord); color: var(--gris); font-size: 13px; text-align: center;
}
.jeu-responsable {
  margin: 22px 0 0; padding: 14px 16px;
  background: #fdf6e4; border: 1px solid #ecd9a4; border-radius: 10px;
  font-size: 13px; color: #6b5720;
}

/* ── Tableau admin ───────────────────────────────────────────────────── */
table { width: 100%; border-collapse: collapse; font-size: 13px; background: var(--carte); }
th, td { padding: 8px 10px; border-bottom: 1px solid var(--bord); text-align: left; }
th { background: #eef2f0; font-weight: 600; }
.etiquette { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 999px; }
.etiquette.PAYE      { background: #dff2e6; color: #0f6b3f; }
.etiquette.ATTENTE   { background: #f3f0e4; color: #7a6a30; }
.etiquette.REMBOURSE { background: #fae3e2; color: #a4241f; }

/* ══ Page de vente (body.vente) ═══════════════════════════════════════════ */
.vente { background: var(--papier); }
.heros {
  color: #fff;
  background:
    radial-gradient(1200px 500px at 85% 10%, rgba(212,160,23,.18), transparent 60%),
    linear-gradient(165deg, #062a1a 0%, #0b3d26 45%, #0f5233 100%);
  padding: 40px 0 56px;
  overflow: hidden;
}
.vente .enveloppe { max-width: 1060px; }
.heros-grille { display: grid; grid-template-columns: 1.15fr .85fr; gap: 48px; align-items: center; }
.heros h1 { font-size: clamp(30px, 4.6vw, 46px); line-height: 1.1; margin: 18px 0 12px; letter-spacing: -.01em; }
.heros .chapo { color: #cfe3d7; margin: 0 0 24px; max-width: 520px; font-size: 17px; }
.heros .carte { margin: 0; color: var(--encre); }
.heros-couverture { margin: 0; justify-self: center; }
.heros-couverture img {
  display: block; width: 100%; max-width: 360px; height: auto; border-radius: 6px;
  transform: rotate(2.5deg);
  box-shadow: 0 30px 60px rgba(0,0,0,.45), 0 0 0 1px rgba(255,255,255,.08);
}
.garanties {
  list-style: none; padding: 0; margin: 16px 0 0;
  display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 16px;
  font-size: 12.5px; color: var(--gris);
}
.garanties li::before { content: "✓ "; color: var(--vert-clair); font-weight: 700; }
.vente .bouton { box-shadow: 0 6px 16px rgba(15,107,63,.28); transition: transform .12s, background .12s; }
.vente .bouton:hover:not(:disabled) { transform: translateY(-1px); }

/* ── La course du jour ── */
.course {
  margin: -28px 0 8px; position: relative;
  background: var(--carte); border: 1px solid var(--bord); border-top: 4px solid var(--or);
  border-radius: 14px; padding: 22px 24px; box-shadow: 0 10px 30px rgba(20,24,26,.08);
}
.course-tete { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.etiquette-or {
  font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: #8a6508; background: #fbf1d4; padding: 4px 10px; border-radius: 999px;
}
.course-quand { font-size: 14px; color: var(--gris); }
.course-quand::first-letter { text-transform: uppercase; }
.course h2 { margin: 10px 0 14px; font-size: 24px; }
.faits {
  list-style: none; padding: 0; margin: 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px;
}
.faits li { background: #f3f6f4; border-radius: 10px; padding: 10px 12px; }
.faits span { display: block; font-size: 12px; color: var(--gris); text-transform: uppercase; letter-spacing: .06em; }
.faits b { font-size: 17px; }

/* ── Sections ── */
.titre-section { font-size: 26px; margin: 48px 0 18px; }
.titre-section::after { content: ""; display: block; width: 44px; height: 3px; background: var(--or); margin-top: 8px; border-radius: 2px; }
.contenu { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 14px; }
.point {
  display: flex; gap: 14px; align-items: flex-start;
  background: var(--carte); border: 1px solid var(--bord); border-radius: 12px; padding: 16px 18px;
}
.point h3 { margin: 0 0 4px; font-size: 16px; }
.point p { margin: 0; color: var(--gris); font-size: 14.5px; }
.num {
  flex: none; width: 30px; height: 30px; border-radius: 50%;
  display: inline-grid; place-items: center;
  background: var(--vert); color: #fff; font-weight: 700; font-size: 14px;
}
.bloc .num { margin-bottom: 10px; background: var(--or); color: #2b2100; }

/* ── Aperçu ── */
.apercu { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 6px; }
.page {
  all: unset; cursor: zoom-in; display: block; text-align: center;
  font-size: 13px; color: var(--gris); font-weight: 600;
}
.page img {
  display: block; width: 100%; height: auto; margin-bottom: 8px;
  border-radius: 6px; border: 1px solid var(--bord); background: #fff;
  box-shadow: 0 8px 20px rgba(20,24,26,.10); transition: transform .15s, box-shadow .15s;
}
.page:hover img, .page:focus-visible img { transform: translateY(-3px); box-shadow: 0 14px 28px rgba(20,24,26,.16); }
.page:focus-visible img { outline: 3px solid var(--or); outline-offset: 2px; }
.loupe {
  border: 0; padding: 0; background: transparent; max-width: min(92vw, 820px); max-height: 94vh;
}
.loupe::backdrop { background: rgba(6,20,13,.82); }
.loupe img { display: block; width: 100%; height: auto; max-height: 86vh; object-fit: contain; border-radius: 6px; }
.loupe p { color: #e6efe9; text-align: center; margin: 10px 0 0; font-size: 14px; }
.loupe .fermer {
  position: fixed; top: 14px; right: 18px; width: 42px; height: 42px; border-radius: 50%;
  border: 0; background: rgba(255,255,255,.15); color: #fff; font-size: 26px; cursor: pointer;
}

/* ── FAQ ── */
.faq details {
  background: var(--carte); border: 1px solid var(--bord); border-radius: 10px;
  padding: 0 18px; margin-bottom: 10px;
}
.faq summary {
  cursor: pointer; font-weight: 600; padding: 14px 0; list-style: none;
  display: flex; justify-content: space-between; gap: 12px;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; color: var(--vert); font-size: 20px; line-height: 1; }
.faq details[open] summary::after { content: "−"; }
.faq details p { margin: 0 0 14px; color: var(--gris); }

/* ── Barre d'achat collante ── */
.barre-achat {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 10;
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
  background: rgba(255,255,255,.96); backdrop-filter: blur(6px);
  border-top: 1px solid var(--bord); box-shadow: 0 -6px 20px rgba(20,24,26,.08);
}
.barre-achat[hidden] { display: none; }
.barre-achat strong { font-size: 20px; color: var(--vert); margin-right: 8px; }
.barre-achat span { display: block; font-size: 13px; color: var(--gris); }
.barre-achat .bouton { width: auto; padding: 11px 22px; font-size: 16px; }

@media (max-width: 820px) {
  .heros { padding: 28px 0 48px; }
  .heros-grille { grid-template-columns: 1fr; gap: 28px; }
  .heros-texte { text-align: center; }
  .heros .chapo { margin-left: auto; margin-right: auto; }
  .heros .carte { text-align: left; }
  .heros-couverture { order: -1; }
  .heros-couverture img { max-width: 170px; transform: rotate(0); }
  .apercu { grid-template-columns: repeat(2, 1fr); }
  .course { padding: 18px 16px; }
  .vente .enveloppe { padding: 0 16px; }
  .vente .pied { padding-bottom: 90px; }
}
@media (prefers-reduced-motion: reduce) { * { transition: none !important; } }
.vente .edition b { text-transform: none; }
