/* mod_amaple_calendrier — mini-calendrier des livraisons AMAPLe */
.amaple-cal {
  --amaple-livraison: #2e7d32;
  --amaple-evenement: #d9822b;
  --amaple-texte: inherit;
  --amaple-discret: #6b6b6b;
  --amaple-fond: #fff;
  --amaple-bord: #dcdcdc;
  --amaple-aujourdhui: #fff4c2;
  font-size: .95rem;
  line-height: 1.35;
  max-width: 22rem;
}
.amaple-cal *, .amaple-cal *::before, .amaple-cal *::after { box-sizing: border-box; }
.amaple-cal__zone { position: relative; }
.amaple-cal__zone[hidden], .amaple-cal [hidden] { display: none !important; }

/* En-tête : navigation mois / année */
.amaple-cal__entete {
  display: flex;
  align-items: center;
  gap: .25rem;
  margin-bottom: .35rem;
}
.amaple-cal__titre {
  flex: 1;
  text-align: center;
  font-weight: 600;
  text-transform: capitalize;
}
.amaple-cal__nav {
  border: 1px solid var(--amaple-bord);
  background: var(--amaple-fond);
  color: inherit;
  border-radius: .35rem;
  width: 2rem;
  height: 2rem;
  padding: 0;
  font-size: 1.15rem;
  line-height: 1;
  cursor: pointer;
}
.amaple-cal__nav:hover:not(:disabled), .amaple-cal__nav:focus-visible { border-color: var(--amaple-livraison); color: var(--amaple-livraison); }
.amaple-cal__nav:disabled { opacity: .35; cursor: default; }

/* Grille */
.amaple-cal__grille {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  margin: 0;
}
.amaple-cal__grille th {
  font-size: .75rem;
  font-weight: 600;
  color: var(--amaple-discret);
  text-align: center;
  padding: .2rem 0;
  border: 0;
  background: none;
}
.amaple-cal__grille td {
  padding: 1px;
  text-align: center;
  border: 0;
  background: none;
  vertical-align: middle;
}
.amaple-cal__jour {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  aspect-ratio: 1 / 1;
  min-height: 2rem;
  margin: 0;
  padding: 0;
  border: 1px solid transparent;
  border-radius: .4rem;
  background: none;
  color: inherit;
  font: inherit;
  font-size: .9rem;
  line-height: 1;
}
span.amaple-cal__jour { cursor: default; }
.amaple-cal__jour--passe { color: var(--amaple-discret); }
.amaple-cal__jour--aujourdhui { background: var(--amaple-aujourdhui); font-weight: 700; }

button.amaple-cal__jour { cursor: pointer; font-weight: 600; }
.amaple-cal__jour--livraison {
  background: color-mix(in srgb, var(--amaple-livraison) 14%, transparent);
  border-color: color-mix(in srgb, var(--amaple-livraison) 45%, transparent);
  color: var(--amaple-livraison);
}
.amaple-cal__jour--evenement:not(.amaple-cal__jour--livraison) {
  background: color-mix(in srgb, var(--amaple-evenement) 14%, transparent);
  border-color: color-mix(in srgb, var(--amaple-evenement) 45%, transparent);
  color: var(--amaple-evenement);
}
.amaple-cal__jour--passe.amaple-cal__jour--livraison,
.amaple-cal__jour--passe.amaple-cal__jour--evenement { opacity: .6; }
button.amaple-cal__jour:hover, button.amaple-cal__jour:focus-visible {
  outline: 2px solid var(--amaple-livraison);
  outline-offset: 0;
}
.amaple-cal__jour--evenement:not(.amaple-cal__jour--livraison):hover,
.amaple-cal__jour--evenement:not(.amaple-cal__jour--livraison):focus-visible { outline-color: var(--amaple-evenement); }
.amaple-cal__jour--choisi { box-shadow: inset 0 0 0 2px currentColor; opacity: 1 !important; }
.amaple-cal__jour--aujourdhui.amaple-cal__jour--livraison { background: var(--amaple-aujourdhui); }

.amaple-cal__pastilles { display: flex; gap: 2px; height: 5px; margin-top: 3px; }
.amaple-cal__pastille { display: block; width: 5px; height: 5px; border-radius: 50%; }
.amaple-cal__pastille--livraison { background: var(--amaple-livraison); }
.amaple-cal__pastille--evenement { background: var(--amaple-evenement); }

.amaple-cal__vide { margin: .4rem 0 0; font-size: .85rem; color: var(--amaple-discret); text-align: center; }

/* Légende */
.amaple-cal__legende { display: flex; gap: .9rem; justify-content: center; margin: .45rem 0 0; font-size: .8rem; color: var(--amaple-discret); }
.amaple-cal__leg::before {
  content: "";
  display: inline-block;
  width: .6rem;
  height: .6rem;
  border-radius: 50%;
  margin-right: .3rem;
  vertical-align: baseline;
}
.amaple-cal__leg--livraison::before { background: var(--amaple-livraison); }
.amaple-cal__leg--evenement::before { background: var(--amaple-evenement); }

/* Détail d'une journée (panneau sous la grille) et infobulle au survol */
.amaple-cal__detail, .amaple-cal__infobulle {
  background: var(--amaple-fond);
  color: #222;
  border: 1px solid var(--amaple-bord);
  border-radius: .5rem;
  padding: .6rem .75rem;
  font-size: .88rem;
}
.amaple-cal__detail { position: relative; margin-top: .6rem; padding-right: 2rem; }
.amaple-cal__infobulle {
  position: absolute;
  z-index: 50;
  width: min(18rem, 100%);
  box-shadow: 0 6px 18px rgba(0, 0, 0, .15);
  pointer-events: none;
}
.amaple-cal__fermer {
  position: absolute;
  top: .3rem;
  right: .35rem;
  width: 1.6rem;
  height: 1.6rem;
  border: 0;
  background: none;
  font-size: 1.2rem;
  line-height: 1;
  color: var(--amaple-discret);
  cursor: pointer;
  border-radius: .3rem;
}
.amaple-cal__fermer:hover, .amaple-cal__fermer:focus-visible { background: #f0f0f0; color: #000; }
.amaple-cal__detail-date { margin: 0 0 .4rem; font-weight: 700; }
.amaple-cal__detail-date::first-letter { text-transform: uppercase; }
.amaple-cal__bloc { border-left: 3px solid var(--amaple-livraison); padding-left: .5rem; margin-top: .45rem; }
.amaple-cal__bloc--evenement { border-left-color: var(--amaple-evenement); }
.amaple-cal__bloc-titre { margin: 0; font-weight: 600; }
.amaple-cal__bloc--livraison .amaple-cal__bloc-titre { color: var(--amaple-livraison); }
.amaple-cal__bloc--evenement .amaple-cal__bloc-titre { color: var(--amaple-evenement); }
.amaple-cal__infos { margin: .1rem 0 0; color: var(--amaple-discret); font-size: .83rem; }
.amaple-cal__infos span + span::before { content: " · "; }
.amaple-cal__liste { margin: .25rem 0 0; padding-left: 1rem; }
.amaple-cal__liste li { margin: .1rem 0; }
.amaple-cal__produits { display: block; font-size: .8rem; color: var(--amaple-discret); }
.amaple-cal__description { margin: .25rem 0 0; }

/* Prochaines dates (rendu serveur, visible aussi sans JavaScript) */
.amaple-cal__prochaines { margin-top: .75rem; }
.amaple-cal__prochaines-titre { margin: 0 0 .25rem; font-weight: 600; font-size: .9rem; }
.amaple-cal__prochaines ul { list-style: none; margin: 0; padding: 0; }
.amaple-cal__prochaines li { margin: 0; }
.amaple-cal__prochaine {
  display: block;
  width: 100%;
  text-align: left;
  border: 0;
  border-top: 1px solid var(--amaple-bord);
  background: none;
  color: inherit;
  font: inherit;
  padding: .35rem 0;
  cursor: pointer;
}
.amaple-cal__prochaines li:first-child .amaple-cal__prochaine { border-top: 0; }
.amaple-cal__prochaine:hover .amaple-cal__prochaine-date, .amaple-cal__prochaine:focus-visible .amaple-cal__prochaine-date { text-decoration: underline; }
.amaple-cal__prochaine-date { display: block; font-weight: 600; font-size: .88rem; }
.amaple-cal__prochaine-date::first-letter { text-transform: uppercase; }
.amaple-cal__prochaine-quoi { display: block; font-size: .82rem; color: var(--amaple-discret); }
.amaple-cal__prochaine-quoi--livraison::before { content: "●"; color: var(--amaple-livraison); margin-right: .3rem; }
.amaple-cal__prochaine-quoi--evenement::before { content: "●"; color: var(--amaple-evenement); margin-right: .3rem; }
.amaple-cal__badge {
  display: inline-block;
  margin-left: .3rem;
  padding: 0 .35rem;
  border-radius: .25rem;
  background: var(--amaple-livraison);
  color: #fff;
  font-size: .72rem;
  font-weight: 600;
  vertical-align: middle;
}

.amaple-cal__note, .amaple-cal__indisponible { font-size: .8rem; color: var(--amaple-discret); margin: .4rem 0 0; }
.amaple-cal__liens { display: flex; flex-wrap: wrap; gap: .3rem 1rem; margin: .6rem 0 0; font-size: .88rem; }
