/*
 * Ferme des Vallons — « La Une de la ferme » (fdv_homeslider), v2.
 * Un visuel principal (8 mises en page : photo, split, editorial, poster, product, event, notice, diptych) + 3 tuiles
 * (5 variantes : row, card, product, ticket, accent), dans une ambiance de saison (fdv-une--hiver|printemps|ete|
 * automne|fetes : fond, accent, motifs animés, accroche). Rotation des sujets facultative (une-rotation.js).
 * Identité du site : boutons Bootstrap du thème (.btn-primary / .btn-outline-primary, variables --bs-btn-*), police
 * Inter du thème (graisses chargées : 300, 400, 600, 700), Material Icons. Contrastes vérifiés ≥ 4,5:1 (texte blanc
 * sur --accent et --deep, --deep et --accent sur --paper, --hi sur --accent).
 * Mouvement : transform / opacity (et translate, propriété individuelle) seulement ; tout est coupé si « réduire
 * les animations ».
 */
.page-content--home > .fdv-une { order: 1; }

.fdv-une {
  --accent: #a3461a; --deep: #4a2410; --bg: #f6ece1; --tint: #f0d9c4; --paper: #fffaf5; --hi: #ffe2ad;
  --green: var(--fdv-green-dark, #2d5335);
  --px: 0; --py: 0;
  position: relative;
  overflow: hidden;
  margin: 0 0 1.5rem;
  padding: 1rem 0 1.25rem;
}
/* Sans aplat de couleur (retour client du 08/10) : la section se pose sur le fond du site, motifs de saison gardés. */
.fdv-une--hiver { --accent: #2c5468; --deep: #14303d; --bg: #e9eff3; --tint: #d3e0e8; --paper: #fbfdfe; --hi: #c6ebff; }
.fdv-une--printemps { --accent: #3b7429; --deep: #1f3d15; --bg: #eef4e4; --tint: #d9e9c6; --paper: #fbfdf7; --hi: #f1f7a8; }
.fdv-une--ete { --accent: #995500; --deep: #4a2a00; --bg: #fbf1d8; --tint: #f5dfa8; --paper: #fffcf3; --hi: #fff0c4; }
.fdv-une--fetes { --accent: #8e1b2b; --deep: #3f0c14; --bg: #f7ebe6; --tint: #f1d6d0; --paper: #fffaf8; --hi: #ffd27a; }

/* Motifs de saison en fond (parallaxe inverse au survol) */
.fdv-une__deco { position: absolute; inset: 0; pointer-events: none; translate: calc(var(--px) * 12px) calc(var(--py) * 10px); transition: translate .8s cubic-bezier(.2, .7, .2, 1); }
.fdv-une__motif { position: absolute; fill: var(--accent); opacity: .13; animation: fdv-une-float 11s ease-in-out infinite alternate; }
.fdv-une__motif--1 { width: 9rem; top: -1.5rem; left: -2rem; transform: rotate(-20deg); }
.fdv-une__motif--2 { width: 4rem; bottom: 1rem; left: 38%; animation-duration: 9s; animation-delay: -3s; }
.fdv-une__motif--3 { width: 6.5rem; top: 1rem; right: -1.5rem; animation-duration: 13s; animation-delay: -6s; }
.fdv-une__motif--4 { width: 3rem; top: 45%; left: 3%; animation-duration: 8s; animation-delay: -2s; }
@keyframes fdv-une-float { from { translate: 0 0; rotate: -6deg; } to { translate: 0 -14px; rotate: 10deg; } }

.fdv-une__grid { position: relative; display: grid; gap: .875rem; }
.fdv-une__stage { position: relative; display: grid; min-width: 0; }
.fdv-une__stage > .fdv-une__hero { grid-area: 1 / 1; }
@media (min-width: 992px) {
  .fdv-une { padding: 1.5rem 0 1.75rem; }
  .fdv-une__grid { grid-template-columns: minmax(0, 1.75fr) minmax(0, 1fr); gap: 1rem; }
}

/* Visuel principal : socle commun ------------------------------------------------------------------------------ */
.fdv-une__hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-width: 0;
  border-radius: 1.25rem;
  background: var(--paper);
  color: var(--deep);
  box-shadow: 0 .75rem 2rem -1rem rgba(0, 0, 0, .35);
}
.fdv-une__hero.is-dark { background: var(--accent); color: #fff; }
@media (min-width: 992px) { .fdv-une__hero { height: 30rem; } }

.fdv-une__media { position: relative; overflow: hidden; background: var(--tint); }
.fdv-une__media picture { display: block; height: 100%; translate: calc(var(--px) * -10px) calc(var(--py) * -8px); transition: translate .6s cubic-bezier(.2, .7, .2, 1); }
.fdv-une__media img { display: block; width: 100%; height: 100%; object-fit: cover; transform: scale(1.05); animation: fdv-une-zoom 16s cubic-bezier(.2, .6, .3, 1) both; }
@keyframes fdv-une-zoom { from { transform: scale(1.16); } to { transform: scale(1.05); } }

.fdv-une__body { position: relative; z-index: 1; padding: 1.15rem 1.15rem 1.3rem; }
@media (min-width: 768px) { .fdv-une__body { padding: 1.75rem 2rem 2rem; } }

.fdv-une__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  margin: 0 0 .75rem;
  padding: .3rem .8rem .3rem .6rem;
  border-radius: 999px;
  background: var(--tint);
  color: var(--deep);
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .02em;
  animation: fdv-une-slide .6s .05s cubic-bezier(.2, .7, .2, 1) both;
}
.is-dark .fdv-une__eyebrow { background: rgba(255, 255, 255, .17); color: #fff; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.fdv-une__pulse { position: relative; flex: none; width: .55rem; height: .55rem; border-radius: 50%; background: var(--accent); }
.is-dark .fdv-une__pulse { background: var(--hi); }
.fdv-une__pulse::after { content: ""; position: absolute; inset: 0; border-radius: 50%; background: inherit; animation: fdv-une-pulse 1.8s ease-out infinite; }
@keyframes fdv-une-pulse { from { transform: scale(1); opacity: .8; } to { transform: scale(3); opacity: 0; } }

.fdv-une__title {
  position: relative;
  z-index: 0;
  margin: 0 0 .6rem;
  color: inherit;
  font-size: clamp(1.75rem, 1.15rem + 2.4vw, 3rem);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: -.02em;
  text-wrap: balance;
}
/* Entrée mot par mot (--i = rang du mot) */
.fdv-une__w { display: inline-block; animation: fdv-une-word .65s cubic-bezier(.2, .7, .2, 1) both; animation-delay: calc(.1s + var(--i, 0) * 45ms); }
@keyframes fdv-une-word { from { opacity: 0; transform: translateY(.5em) rotate(3deg); } to { opacity: 1; transform: none; } }
/* Mot-clé : couleur d'accent et trait qui se dessine dessous */
.fdv-une__kw { position: relative; font-style: normal; color: var(--accent); }
.is-dark .fdv-une__kw { color: var(--hi); }
.fdv-une__kw::after {
  content: "";
  position: absolute;
  z-index: -1;
  left: -.04em;
  right: -.04em;
  bottom: .02em;
  height: .14em;
  border-radius: .1em;
  background: currentColor;
  opacity: .45;
  transform-origin: left center;
  animation: fdv-une-mark .7s .75s cubic-bezier(.6, 0, .2, 1) both;
}
@keyframes fdv-une-mark { from { transform: scaleX(0); } to { transform: scaleX(1); } }

.fdv-une__sub { max-width: 34rem; margin: 0 0 1.1rem; font-size: clamp(1rem, .95rem + .25vw, 1.125rem); line-height: 1.45; animation: fdv-une-up .6s .35s cubic-bezier(.2, .7, .2, 1) both; }
.fdv-une__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem .9rem; animation: fdv-une-up .6s .5s cubic-bezier(.2, .7, .2, 1) both; }
@keyframes fdv-une-up { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes fdv-une-slide { from { opacity: 0; transform: translateX(-18px); } to { opacity: 1; transform: none; } }

/* Boutons : ceux du site (.btn .btn-primary / .btn-outline-primary), hauteur et graisse de l'accroche d'accueil */
.fdv-une .btn.fdv-une__cta { min-height: 3rem; padding-inline: 1.25rem; gap: .5rem; font-weight: 600; }
.fdv-une__cta .material-icons { font-size: 1.25rem; transition: transform .2s ease; }
.fdv-une__cta:hover .material-icons, .fdv-une__cta:focus-visible .material-icons { transform: translateX(3px); }
/* Variante claire du bouton principal sur fond sombre (mêmes forme, rayon, typo ; texte vert du site 8,7:1) */
.fdv-une .btn.fdv-une__btn-light {
  --bs-btn-color: var(--green);
  --bs-btn-bg: #fff;
  --bs-btn-border-color: #fff;
  --bs-btn-hover-color: var(--fdv-green-darker, #23422a);
  --bs-btn-hover-bg: var(--fdv-green-subtle, #e6efe3);
  --bs-btn-hover-border-color: var(--fdv-green-subtle, #e6efe3);
  --bs-btn-active-color: var(--fdv-green-darker, #23422a);
  --bs-btn-active-bg: #d4e3cf;
  --bs-btn-active-border-color: #d4e3cf;
  --bs-btn-focus-shadow-rgb: 255, 255, 255;
}
.fdv-une__chip { padding: .35rem .8rem; border: 1px solid currentColor; border-radius: 999px; font-size: .875rem; font-weight: 600; }
.is-dark .fdv-une__chip { border-color: rgba(255, 255, 255, .6); }

/* Pastille tournante */
.fdv-une__badge {
  position: absolute;
  z-index: 2;
  right: .75rem;
  bottom: -.25rem;
  display: grid;
  place-items: center;
  width: 6.25rem;
  aspect-ratio: 1;
  border-radius: 50%;
  background: #fff;
  color: var(--accent);
  box-shadow: 0 .4rem 1.2rem -.3rem rgba(0, 0, 0, .4);
  translate: calc(var(--px) * 8px) calc(var(--py) * 8px);
  transition: translate .6s cubic-bezier(.2, .7, .2, 1);
  animation: fdv-une-pop .7s .6s cubic-bezier(.3, 1.4, .5, 1) both;
}
.fdv-une__badge > svg { grid-area: 1 / 1; }
.fdv-une__badge-ring { width: 100%; height: 100%; fill: currentColor; font-size: 11.5px; font-weight: 700; letter-spacing: .05em; animation: fdv-une-spin 22s linear infinite; }
.fdv-une__badge-core { width: 36%; fill: currentColor; animation: fdv-une-float 6s ease-in-out infinite alternate; }
@keyframes fdv-une-spin { to { rotate: 360deg; } }
@keyframes fdv-une-pop { from { opacity: 0; transform: scale(.4) rotate(-40deg); } to { opacity: 1; transform: none; } }

/* 1. Photo plein cadre, texte en bas ---------------------------------------------------------------------------- */
.fdv-une__hero--photo { display: grid; background: var(--deep); }
.fdv-une__hero--photo > * { grid-area: 1 / 1; }
.fdv-une__media--full { height: 100%; }
.fdv-une__hero--photo .fdv-une__media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(12, 10, 8, .88) 0%, rgba(12, 10, 8, .55) 40%, rgba(12, 10, 8, .05) 74%);
}
.fdv-une__hero--photo .fdv-une__body { align-self: end; }
.fdv-une__hero--photo .fdv-une__badge { top: 1rem; bottom: auto; }
@media (max-width: 767.98px) { .fdv-une__hero--photo { aspect-ratio: 4 / 4.4; } }
@media (min-width: 768px) and (max-width: 991.98px) { .fdv-une__hero--photo { min-height: 26rem; } }
@media (min-width: 992px) { .fdv-une__hero--photo .fdv-une__body { padding: 2.25rem 2.5rem 2.5rem; } }

/* 2. Aplat de saison + photo en médaillon ----------------------------------------------------------------------- */
.fdv-une__hero--split { display: grid; grid-template-rows: auto 1fr; }
.fdv-une__hero--split::before {
  content: "";
  position: absolute;
  width: 34rem;
  aspect-ratio: 1;
  right: -14rem;
  top: -16rem;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 255, 255, .16), rgba(255, 255, 255, 0) 70%);
}
.fdv-une__hero--split .fdv-une__visual { position: relative; margin: .75rem .75rem 0; aspect-ratio: 16 / 9; }
.fdv-une__media--blob {
  height: 100%;
  border-radius: 42% 58% 46% 54% / 52% 44% 56% 48%;
  box-shadow: 0 0 0 .5rem rgba(255, 255, 255, .14);
  animation: fdv-une-blob 14s ease-in-out infinite alternate;
}
@keyframes fdv-une-blob {
  from { border-radius: 42% 58% 46% 54% / 52% 44% 56% 48%; }
  to { border-radius: 55% 45% 58% 42% / 44% 56% 44% 56%; }
}
.fdv-une__hero--split .fdv-une__badge { width: 5.25rem; right: .25rem; bottom: -.6rem; }
@media (min-width: 768px) {
  .fdv-une__hero--split { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); grid-template-rows: none; align-items: center; min-height: 26rem; }
  .fdv-une__hero--split .fdv-une__visual { order: 2; margin: 1.5rem 1.5rem 1.5rem 0; aspect-ratio: 1; }
  .fdv-une__hero--split .fdv-une__body { order: 1; padding-right: 1rem; }
  .fdv-une__hero--split .fdv-une__badge { right: -.25rem; bottom: .25rem; width: 7.25rem; }
}

/* 3. Éditorial : très grand titre + photo en arche --------------------------------------------------------------- */
.fdv-une__hero--editorial { display: grid; }
.fdv-une__hero--editorial::before {
  content: "";
  position: absolute;
  z-index: -1;
  width: 26rem;
  aspect-ratio: 1;
  right: -8rem;
  bottom: -10rem;
  border-radius: 50%;
  background: var(--tint);
  opacity: .7;
}
.fdv-une__hero--editorial .fdv-une__title { font-size: clamp(2.1rem, 1.2rem + 3.4vw, 3.75rem); line-height: .98; letter-spacing: -.035em; }
.fdv-une__hero--editorial .fdv-une__eyebrow { background: transparent; padding: 0; color: var(--accent); text-transform: uppercase; letter-spacing: .12em; font-size: .75rem; }
.fdv-une__arch { position: relative; justify-self: center; width: min(62%, 15rem); margin: 1.25rem 0 0; aspect-ratio: 4 / 5; }
.fdv-une__arch::before {
  content: "";
  position: absolute;
  inset: 0;
  border: 2px solid var(--accent);
  border-radius: 999px 999px 1rem 1rem;
  translate: .75rem -.75rem;
  opacity: .55;
  animation: fdv-une-up .8s .3s cubic-bezier(.2, .7, .2, 1) both;
}
.fdv-une__media--arch { height: 100%; border-radius: 999px 999px 1rem 1rem; animation: fdv-une-rise .9s cubic-bezier(.2, .7, .2, 1) both; }
@keyframes fdv-une-rise { from { opacity: 0; transform: translateY(40px) scale(.96); } to { opacity: 1; transform: none; } }
.fdv-une__arch-motif { position: absolute; z-index: 2; width: 3.25rem; left: -1.5rem; top: 18%; fill: var(--accent); animation: fdv-une-float 7s ease-in-out infinite alternate; translate: calc(var(--px) * 14px) calc(var(--py) * 12px); }
.fdv-une__arch .fdv-une__badge { width: 5.25rem; right: -1.75rem; bottom: 1.5rem; }
@media (min-width: 768px) {
  .fdv-une__hero--editorial { grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); align-items: center; min-height: 26rem; }
  .fdv-une__hero--editorial .fdv-une__body { padding: 2.25rem 1rem 2.25rem 2.5rem; }
  .fdv-une__arch { justify-self: end; width: 15rem; margin: 2.5rem 2.5rem 0 0; align-self: end; }
}
@media (min-width: 992px) {
  .fdv-une__arch { width: 16.5rem; margin-right: 3rem; }
}

/* 4. Affiche : cartouche posé sur la photo ---------------------------------------------------------------------- */
.fdv-une__hero--poster { display: grid; }
.fdv-une__hero--poster .fdv-une__media--full { aspect-ratio: 3 / 2; }
.fdv-une__card {
  position: relative;
  z-index: 1;
  margin: -2.75rem .75rem .75rem;
  padding: .4rem;
  border-radius: 1rem;
  background: var(--paper);
  color: var(--deep);
  text-align: center;
  box-shadow: 0 1rem 2rem -1rem rgba(0, 0, 0, .55);
  animation: fdv-une-card .8s .1s cubic-bezier(.2, .8, .2, 1) both;
}
@keyframes fdv-une-card { from { opacity: 0; transform: translateY(26px) rotate(-2deg) scale(.96); } to { opacity: 1; transform: none; } }
.fdv-une__card .fdv-une__body { padding: 1.25rem 1.1rem 1.35rem; border: 1.5px solid var(--accent); border-radius: .75rem; }
.fdv-une__card .fdv-une__eyebrow { background: transparent; padding: 0; color: var(--accent); text-transform: uppercase; letter-spacing: .14em; font-size: .75rem; }
.fdv-une__card .fdv-une__pulse { display: none; }
.fdv-une__card .fdv-une__title { font-size: clamp(1.6rem, 1.1rem + 1.6vw, 2.35rem); margin-bottom: .5rem; }
.fdv-une__card .fdv-une__sub { margin: .5rem auto .9rem; font-size: 1rem; }
.fdv-une__card .fdv-une__actions { justify-content: center; }
.fdv-une__eyebrow-leaf { flex: none; width: 1rem; height: 1rem; fill: currentColor; animation: fdv-une-pop .6s .5s cubic-bezier(.3, 1.4, .5, 1) both; }
@media (min-width: 768px) {
  .fdv-une__hero--poster { min-height: 26rem; background: var(--deep); }
  .fdv-une__hero--poster > * { grid-area: 1 / 1; }
  .fdv-une__hero--poster .fdv-une__media--full { aspect-ratio: auto; }
  .fdv-une__hero--poster .fdv-une__media--full::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to right, rgba(12, 10, 8, .35), rgba(12, 10, 8, 0) 60%); }
  .fdv-une__card { align-self: center; justify-self: start; width: min(24rem, 60%); margin: 2rem 2.25rem; }
}

/* 5. Produit en vedette ------------------------------------------------------------------------------------------- */
.fdv-une__hero--product { display: grid; }
.fdv-une__hero--product .fdv-une__body { order: 2; }
.fdv-une__pack { position: relative; order: 1; justify-self: center; width: min(58%, 14rem); margin: 1.5rem 0 .25rem; }
.fdv-une__halo { position: absolute; inset: -12%; border-radius: 50%; background: radial-gradient(circle, var(--tint) 0 58%, rgba(255, 255, 255, 0) 59%); animation: fdv-une-halo 1s cubic-bezier(.2, .7, .2, 1) both; }
@keyframes fdv-une-halo { from { opacity: 0; transform: scale(.6); } to { opacity: 1; transform: none; } }
.fdv-une__media--product {
  aspect-ratio: 1;
  border: .45rem solid #fff;
  border-radius: 1.5rem;
  box-shadow: 0 1.25rem 2rem -1.1rem rgba(0, 0, 0, .5);
  transform: rotate(-3deg);
  animation: fdv-une-drop .9s .1s cubic-bezier(.2, .9, .3, 1.15) both;
}
@keyframes fdv-une-drop { from { opacity: 0; transform: translateY(-36px) rotate(-12deg); } to { opacity: 1; transform: rotate(-3deg); } }
.fdv-une__pack .fdv-une__badge { width: 5.5rem; right: -1.25rem; bottom: -1rem; }
.fdv-une__price { display: flex; flex-wrap: wrap; align-items: baseline; gap: .15rem .6rem; margin: .25rem 0 1rem; color: var(--green); animation: fdv-une-up .6s .42s cubic-bezier(.2, .7, .2, 1) both; }
.fdv-une__price strong { font-size: 2.25rem; font-weight: 300; line-height: 1; letter-spacing: -.01em; }
.fdv-une__price-from { font-size: 1rem; }
.fdv-une__qty { color: var(--bs-secondary-color, #5c636a); font-size: .9375rem; }
.fdv-une__buy { display: contents; }
.fdv-une__note { display: flex; align-items: center; gap: .35rem; margin: .85rem 0 0; color: var(--deep); font-size: .875rem; animation: fdv-une-up .6s .6s cubic-bezier(.2, .7, .2, 1) both; }
.fdv-une__note .material-icons { font-size: 1.1rem; color: var(--accent); }
@media (min-width: 768px) {
  .fdv-une__hero--product { grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); align-items: center; min-height: 26rem; }
  .fdv-une__hero--product .fdv-une__body { order: 1; padding: 2rem 1rem 2rem 2.5rem; }
  .fdv-une__pack { order: 2; width: 78%; max-width: 18.5rem; margin: 0 2rem 0 0; }
}

/* 6. Événement / marché ------------------------------------------------------------------------------------------- */
.fdv-une__hero--event { background: var(--accent); }
.fdv-une__hero--event::before {
  content: "";
  position: absolute;
  z-index: -1;
  width: 30rem;
  aspect-ratio: 1;
  left: -12rem;
  bottom: -18rem;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 255, 255, .14), rgba(255, 255, 255, 0) 70%);
}
.fdv-une__media--event {
  position: absolute;
  top: 1rem;
  right: 1rem;
  width: 6.5rem;
  aspect-ratio: 1;
  border-radius: 50%;
  box-shadow: 0 0 0 .35rem rgba(255, 255, 255, .25);
  animation: fdv-une-pop .7s .5s cubic-bezier(.3, 1.4, .5, 1) both;
}
.fdv-une__media--event + .fdv-une__event .fdv-une__eyebrow,
.fdv-une__media--event + .fdv-une__event .fdv-une__title { margin-right: 7rem; }
.fdv-une__event { display: grid; gap: 1rem; padding: 1.15rem; }
.fdv-une__event .fdv-une__body { padding: 0; }
.fdv-une__date {
  display: inline-grid;
  justify-items: center;
  align-self: start;
  justify-self: start;
  width: 7rem;
  margin: 0;
  overflow: hidden;
  border-radius: .875rem;
  background: var(--paper);
  color: var(--deep);
  line-height: 1;
  text-align: center;
  box-shadow: 0 1rem 1.5rem -1rem rgba(0, 0, 0, .6);
  transform: rotate(-3deg);
  animation: fdv-une-cal 1s .05s cubic-bezier(.2, .9, .3, 1.2) both;
}
@keyframes fdv-une-cal { from { opacity: 0; transform: translateY(-40px) rotate(-14deg); } to { opacity: 1; transform: rotate(-3deg); } }
.fdv-une__date-wd { display: block; width: 100%; padding: .45rem 0 .4rem; background: var(--deep); color: #fff; font-size: .8125rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.fdv-une__date-d { display: block; padding: .35rem 0 .1rem; color: var(--accent); font-size: 3.5rem; font-weight: 700; letter-spacing: -.04em; }
.fdv-une__date-m { display: block; padding: 0 0 .6rem; font-size: .9375rem; font-weight: 600; }
.fdv-une__facts { display: grid; gap: .35rem; margin: 0 0 1rem; padding: 0; list-style: none; font-size: 1rem; animation: fdv-une-up .6s .35s cubic-bezier(.2, .7, .2, 1) both; }
.fdv-une__facts li { display: flex; align-items: center; gap: .5rem; }
.fdv-une__facts .material-icons { font-size: 1.2rem; color: var(--hi); }
.fdv-une__count { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; margin: 0 0 1.1rem; font-size: 1.375rem; font-weight: 600; animation: fdv-une-up .6s .45s cubic-bezier(.2, .7, .2, 1) both; }
.fdv-une__count.is-hot::before { content: ""; width: .6rem; height: .6rem; border-radius: 50%; background: var(--hi); animation: fdv-une-blink 1.2s ease-in-out infinite alternate; }
@keyframes fdv-une-blink { from { opacity: 1; transform: scale(1); } to { opacity: .35; transform: scale(.7); } }
/* Compteur à rouleaux (transform seul) : chaque chiffre est une colonne 0-9 décalée jusqu'à sa valeur */
.fdv-odo { display: inline-flex; padding: 0 .3em; border-radius: .4rem; background: rgba(255, 255, 255, .18); color: var(--hi); font-variant-numeric: tabular-nums; }
.fdv-odo__d { display: inline-block; height: 1.2em; overflow: hidden; line-height: 1.2em; }
.fdv-odo__s { display: block; width: 1ch; text-align: center; white-space: normal; word-spacing: 1ch; transform: translateY(calc(var(--d) * -10%)); animation: fdv-odo 1.6s .55s cubic-bezier(.15, .8, .2, 1) backwards; }
@keyframes fdv-odo { from { transform: translateY(0); } }
@media (min-width: 768px) {
  .fdv-une__hero--event { min-height: 26rem; }
  .fdv-une__event { grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 2rem; height: 100%; padding: 2rem 2.5rem; }
  .fdv-une__date { width: 9.5rem; justify-self: center; }
  .fdv-une__date-d { font-size: 5.25rem; }
  .fdv-une__media--event { top: 1.5rem; right: 1.5rem; width: 8rem; }
  .fdv-une__media--event + .fdv-une__event .fdv-une__eyebrow,
  .fdv-une__media--event + .fdv-une__event .fdv-une__title { margin-right: 8rem; }
}

/* 7. Annonce texte (sans photo) ----------------------------------------------------------------------------------- */
.fdv-une__hero--notice { display: grid; align-items: center; background: var(--deep); }
.fdv-une__notice-motif { position: absolute; z-index: -1; width: 22rem; right: -5rem; bottom: -6rem; fill: #fff; opacity: .08; animation: fdv-une-spin 60s linear infinite; translate: calc(var(--px) * -16px) calc(var(--py) * -12px); }
.fdv-une__hero--notice .fdv-une__body { max-width: 36rem; padding: 1.75rem 1.25rem; }
.fdv-une__notice-icon { display: grid; place-items: center; width: 3.5rem; height: 3.5rem; margin: 0 0 1rem; border-radius: 50%; background: rgba(255, 255, 255, .14); color: var(--hi); animation: fdv-une-pop .7s .1s cubic-bezier(.3, 1.4, .5, 1) both; }
.fdv-une__notice-icon .material-icons { font-size: 1.85rem; animation: fdv-une-wiggle 1.2s .9s ease-in-out both; }
@keyframes fdv-une-wiggle { 0%, 100% { transform: none; } 20% { transform: rotate(-14deg); } 40% { transform: rotate(10deg); } 60% { transform: rotate(-6deg); } 80% { transform: rotate(3deg); } }
.fdv-une__hero--notice .fdv-une__title { font-size: clamp(2rem, 1.2rem + 3vw, 3.5rem); }
@media (min-width: 768px) {
  .fdv-une__hero--notice { min-height: 22rem; }
  .fdv-une__hero--notice .fdv-une__body { padding: 2.5rem 3rem; }
}

/* 8. Diptyque ----------------------------------------------------------------------------------------------------- */
.fdv-une__hero--diptych { display: grid; }
.fdv-une__hero--diptych .fdv-une__body { order: 2; }
.fdv-une__pair { position: relative; order: 1; display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; padding: 1.25rem 1.25rem 0; }
.fdv-une__pair .fdv-une__media { aspect-ratio: 4 / 5; border: .35rem solid #fff; border-radius: 1rem; box-shadow: 0 1rem 1.5rem -1rem rgba(0, 0, 0, .5); }
.fdv-une__media--d1 { transform: rotate(-3deg); animation: fdv-une-in-l .9s .05s cubic-bezier(.2, .8, .2, 1) both; }
.fdv-une__media--d2 { transform: translateY(1rem) rotate(2.5deg); animation: fdv-une-in-r .9s .2s cubic-bezier(.2, .8, .2, 1) both; }
@keyframes fdv-une-in-l { from { opacity: 0; transform: translateX(-30px) rotate(-10deg); } to { opacity: 1; transform: rotate(-3deg); } }
@keyframes fdv-une-in-r { from { opacity: 0; transform: translate(30px, 2rem) rotate(9deg); } to { opacity: 1; transform: translateY(1rem) rotate(2.5deg); } }
@media (min-width: 768px) {
  .fdv-une__hero--diptych { grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); align-items: center; min-height: 26rem; }
  .fdv-une__hero--diptych .fdv-une__body { order: 1; padding: 2rem 1rem 2rem 2.5rem; }
  .fdv-une__pair { order: 2; gap: 1rem; padding: 1.5rem 1.75rem 2.5rem 0; }
}

/* Mobile : marges internes réduites, puces masquées ---------------------------------------------------------------- */
@media (max-width: 767.98px) {
  .fdv-une__eyebrow { margin-bottom: .55rem; }
  .fdv-une__sub { margin-bottom: .9rem; }
  .fdv-une__chip { display: none; }
  .fdv-une__badge { width: 5.25rem; }
  .fdv-une__motif--2, .fdv-une__motif--4 { display: none; }
}
/* Hauteur fixe sur ordinateur : titres et textes bornés (la rotation ne décale jamais la page) */
@media (min-width: 992px) {
  .fdv-une__hero .fdv-une__title { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden; padding-bottom: .08em; }
  .fdv-une__hero .fdv-une__sub { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; }
  .fdv-une__hero--split, .fdv-une__hero--editorial, .fdv-une__hero--poster, .fdv-une__hero--product, .fdv-une__hero--event, .fdv-une__hero--notice, .fdv-une__hero--diptych { min-height: 0; }
}

/* Rotation : fondu entre deux sujets, bouton pause --------------------------------------------------------------- */
.fdv-une__hero.is-entering { z-index: 1; animation: fdv-une-fade .55s ease both; }
.fdv-une__hero.is-leaving { z-index: 0; pointer-events: none; animation: fdv-une-fadeout .55s ease both; }
@keyframes fdv-une-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes fdv-une-fadeout { from { opacity: 1; } to { opacity: 0; transform: scale(.985); } }
.fdv-une__hero:focus { outline: none; }
.fdv-une__hero:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; }
.fdv-une .btn.fdv-une__ctl {
  --bs-btn-color: var(--green);
  --bs-btn-bg: rgba(255, 255, 255, .92);
  --bs-btn-border-color: transparent;
  --bs-btn-hover-color: var(--fdv-green-darker, #23422a);
  --bs-btn-hover-bg: #fff;
  --bs-btn-hover-border-color: transparent;
  --bs-btn-focus-shadow-rgb: 45, 83, 53;
  position: absolute;
  z-index: 3;
  top: .75rem;
  right: .75rem;
  width: 2.5rem;
  height: 2.5rem;
  padding: 0;
  box-shadow: 0 .25rem .75rem -.25rem rgba(0, 0, 0, .35);
}
.fdv-une__ctl[hidden] { display: none !important; }

/* Tuiles ---------------------------------------------------------------------------------------------------------- */
.fdv-une__tiles { display: grid; gap: .625rem; min-width: 0; margin: 0; padding: 0; list-style: none; }
@media (min-width: 992px) { .fdv-une__tiles { grid-template-rows: repeat(3, minmax(0, 1fr)); gap: .875rem; height: 30rem; } }
.fdv-tile { position: relative; min-width: 0; animation: fdv-une-in .6s cubic-bezier(.2, .7, .2, 1) both; transition: translate .25s ease; }
.fdv-tile:nth-child(1) { animation-delay: .25s; }
.fdv-tile:nth-child(2) { animation-delay: .37s; }
.fdv-tile:nth-child(3) { animation-delay: .49s; }
.fdv-tile.is-moved { animation: none; }
.fdv-tile:hover { translate: 0 -3px; }
@keyframes fdv-une-in { from { opacity: 0; transform: translateX(24px); } to { opacity: 1; transform: none; } }
.fdv-tile__link {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: .875rem;
  height: 100%;
  padding: .75rem .9rem .75rem .75rem;
  border: 1px solid var(--bs-border-color, #dee2e6);
  border-radius: 1rem;
  background: #fff;
  color: var(--bs-body-color, #212529);
  text-decoration: none;
  box-shadow: 0 .5rem 1.25rem -1rem rgba(0, 0, 0, .3);
  transition: box-shadow .2s ease;
}
a.fdv-tile__link:hover, a.fdv-tile__link:focus-visible, .fdv-tile:hover .fdv-tile__link { color: var(--bs-body-color, #212529); box-shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 1rem 1.75rem -1rem rgba(0, 0, 0, .4); }
.fdv-tile__link:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
.fdv-tile__thumb, .fdv-tile__date { position: relative; width: 4.5rem; aspect-ratio: 1; border-radius: .875rem; overflow: hidden; }
.fdv-tile__thumb { background: var(--tint); }
.fdv-tile__thumb picture { display: block; height: 100%; }
.fdv-tile__thumb img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.fdv-tile:hover .fdv-tile__thumb img { transform: scale(1.08); }
.fdv-tile__date, .fdv-tile__stub { display: flex; flex-direction: column; align-items: center; justify-content: center; background: var(--accent); color: #fff; line-height: 1; }
.fdv-tile__date b, .fdv-tile__stub b { margin: .1rem 0; font-size: 1.85rem; font-weight: 700; letter-spacing: -.02em; }
.fdv-tile__date small, .fdv-tile__stub small { font-size: .7rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.fdv-tile__body { display: flex; flex-direction: column; gap: .2rem; min-width: 0; }
.fdv-tile__label { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .45rem; color: var(--accent); font-size: .72rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.fdv-tile__flag { padding: .12rem .5rem; border-radius: 999px; background: var(--tint); color: var(--deep); font-size: .72rem; font-style: normal; letter-spacing: 0; text-transform: none; }
.fdv-tile__flag--hot { background: var(--accent); color: #fff; animation: fdv-une-glow 1.6s ease-in-out infinite alternate; }
@keyframes fdv-une-glow { from { transform: scale(1); } to { transform: scale(1.06); } }
.fdv-tile__title { overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; font-weight: 700; line-height: 1.25; }
.fdv-tile__text { overflow: hidden; color: var(--bs-secondary-color, #5c636a); font-size: .85rem; line-height: 1.35; white-space: nowrap; text-overflow: ellipsis; }
.fdv-tile__months { display: flex; gap: 2px; margin: .15rem 0 .05rem; }
.fdv-tile__months i { flex: 1 1 0; max-width: 1.15rem; height: 1.1rem; border-radius: 3px; background: #efefec; color: #6b6b66; font-size: .6rem; font-style: normal; font-weight: 700; line-height: 1.1rem; text-align: center; }
.fdv-tile__months i.in { background: var(--tint); color: var(--deep); }
.fdv-tile__months i.now { background: var(--accent); color: #fff; box-shadow: 0 0 0 2px #fff, 0 0 0 3.5px var(--accent); }
/* Flèche : petit bouton carré vert, comme les boutons d'action du site (ajout au panier) */
.fdv-tile__go { position: relative; z-index: 2; display: grid; place-items: center; width: 2.25rem; height: 2.25rem; border: 1px solid var(--green); border-radius: var(--bs-border-radius, .375rem); background: #fff; color: var(--green); transition: background-color .2s ease, color .2s ease; }
.fdv-tile__go .material-icons { font-size: 1.15rem; }
.fdv-tile:hover .fdv-tile__go { background: var(--green); color: #fff; }

/* Carte à grande photo */
.fdv-tile--card .fdv-tile__link { grid-template-columns: 40% minmax(0, 1fr) auto; padding: 0 .9rem 0 0; overflow: hidden; }
.fdv-tile--card .fdv-tile__thumb { width: 100%; height: 100%; min-height: 6.5rem; aspect-ratio: auto; border-radius: 0; }
.fdv-tile--card .fdv-tile__body { padding: .75rem 0; }
.fdv-tile--card .fdv-tile__title { -webkit-line-clamp: 3; }

/* Carte produit avec prix */
.fdv-tile--product .fdv-tile__link { background: linear-gradient(120deg, #fff 55%, var(--paper)); }
.fdv-tile--product .fdv-tile__thumb { width: 5rem; border: 3px solid #fff; box-shadow: 0 .4rem .8rem -.4rem rgba(0, 0, 0, .45); transform: rotate(-3deg); }
.fdv-tile__price { display: flex; flex-wrap: wrap; align-items: baseline; gap: .1rem .45rem; color: var(--green); font-size: .85rem; }
.fdv-tile__price strong { font-size: 1.15rem; font-weight: 600; }
.fdv-tile__price span { color: var(--bs-secondary-color, #5c636a); }

/* Billet de marché (encoches et pointillés) */
.fdv-tile--ticket .fdv-tile__link { grid-template-columns: 5.25rem minmax(0, 1fr) auto; padding: 0 .9rem 0 0; gap: 0; }
.fdv-tile__stub { position: relative; align-self: stretch; min-height: 6.5rem; border-radius: 1rem 0 0 1rem; }
.fdv-tile__stub::before, .fdv-tile__stub::after { content: ""; position: absolute; right: -.55rem; width: 1.1rem; height: 1.1rem; border-radius: 50%; background: var(--bs-body-bg, #fff); }
.fdv-tile__stub::before { top: -.55rem; }
.fdv-tile__stub::after { bottom: -.55rem; }
.fdv-tile--ticket .fdv-tile__body { align-self: stretch; justify-content: center; margin-right: .75rem; padding: .7rem 0 .7rem .9rem; border-left: 2px dashed var(--tint); }

/* Carte colorée d'accent (sans photo) */
.fdv-tile--accent .fdv-tile__link { background: var(--accent); color: #fff; }
.fdv-tile--accent a.fdv-tile__link:hover, .fdv-tile--accent a.fdv-tile__link:focus-visible, .fdv-tile--accent:hover .fdv-tile__link { color: #fff; }
.fdv-tile--accent .fdv-tile__label, .fdv-tile--accent .fdv-tile__text { color: #fff; }
.fdv-tile--accent .fdv-tile__flag { background: rgba(255, 255, 255, .2); color: #fff; }
.fdv-tile__icon { display: grid; place-items: center; align-content: center; width: 3.5rem; aspect-ratio: 1; border-radius: 50%; background: rgba(255, 255, 255, .16); color: #fff; line-height: 1; }
.fdv-tile__icon b { font-size: 1.35rem; }
.fdv-tile__icon small { font-size: .65rem; text-transform: uppercase; }
.fdv-tile--accent .fdv-tile__go { background: rgba(255, 255, 255, .2); color: #fff; }
.fdv-tile--accent:hover .fdv-tile__go { background: #fff; color: var(--accent); }

/* Ordinateur : tuiles de hauteur fixe (3 × 1/3 du visuel principal) ; la photo (ou la date) occupe toute la hauteur à
   gauche, le texte est centré verticalement : plus de vide en haut et en bas des tuiles. */
@media (min-width: 992px) {
  .fdv-tile--row .fdv-tile__link, .fdv-tile--product .fdv-tile__link { grid-template-columns: 34% minmax(0, 1fr) auto; padding: 0 .9rem 0 0; overflow: hidden; }
  .fdv-tile--row .fdv-tile__thumb, .fdv-tile--product .fdv-tile__thumb, .fdv-tile--row .fdv-tile__date {
    width: 100%; height: 100%; aspect-ratio: auto; border: 0; border-radius: 0; box-shadow: none; transform: none;
  }
  .fdv-tile--product .fdv-tile__link { background: #fff; }
  .fdv-tile__body { gap: .3rem; }
  .fdv-tile--card .fdv-tile__link { grid-template-columns: 34% minmax(0, 1fr) auto; }
}

@media (max-width: 575.98px) {
  .fdv-tile__thumb, .fdv-tile__date { width: 4rem; }
  .fdv-tile--product .fdv-tile__thumb { width: 4.25rem; }
  .fdv-tile__go { display: none; }
  .fdv-tile__link { grid-template-columns: auto minmax(0, 1fr); }
  .fdv-tile--card .fdv-tile__link { grid-template-columns: 36% minmax(0, 1fr); }
  .fdv-tile--ticket .fdv-tile__link { grid-template-columns: 4.75rem minmax(0, 1fr); padding-right: 0; }
}

/* Rotation : tuile cliquable (« Afficher en Une »), barre de progression sur le sujet suivant */
.fdv-tile__pick { position: absolute; z-index: 1; inset: 0; padding: 0; border: 0; border-radius: 1rem; background: transparent; cursor: pointer; }
.fdv-tile__pick:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
.fdv-tile__pick[hidden] { display: none; }
.fdv-tile__progress { position: absolute; z-index: 2; left: 1rem; right: 1rem; bottom: .35rem; display: none; height: 3px; overflow: hidden; border-radius: 3px; background: var(--tint); pointer-events: none; }
.fdv-tile__progress::after { content: ""; position: absolute; inset: 0; background: var(--accent); transform: scaleX(0); transform-origin: left center; }
.fdv-une.is-rotating .fdv-tile.is-next .fdv-tile__progress { display: block; }
.fdv-une.is-rotating .fdv-tile.is-next .fdv-tile__progress::after { animation: fdv-une-progress var(--fdv-rot, 7s) linear forwards; }
.fdv-une.is-paused .fdv-tile.is-next .fdv-tile__progress::after { animation-play-state: paused; }
.fdv-tile--accent .fdv-tile__progress { background: rgba(255, 255, 255, .3); }
.fdv-tile--accent .fdv-tile__progress::after { background: #fff; }
@keyframes fdv-une-progress { from { transform: scaleX(0); } to { transform: scaleX(1); } }

@media (prefers-reduced-motion: reduce) {
  .fdv-une *, .fdv-une *::before, .fdv-une *::after { animation: none !important; transition: none !important; }
  .fdv-une__deco, .fdv-une__media picture, .fdv-une__badge, .fdv-une__arch-motif, .fdv-une__notice-motif { translate: none !important; }
}

/* Bandeau d'aperçu (hors cache, visible du seul navigateur en aperçu) */
.fdv-hs-preview {
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  z-index: 1045;
  padding: .5rem .875rem;
  border-radius: .5rem;
  background: #1d1d1b;
  color: #fff;
  font-size: .875rem;
  box-shadow: 0 2px 10px rgba(0, 0, 0, .3);
}
.fdv-hs-preview a { color: #fff; text-decoration: underline; }
.fdv-une__nw { display: inline-block; white-space: nowrap; }
.fdv-une.is-rotating .fdv-une__media--event { right: 4rem; }
