
.o-cal{
  --o-cal-borne: var(--o-encre,#231F20);
  --o-cal-borne-texte: var(--o-fond,#F6F3EC);
  --o-cal-plage: color-mix(in srgb, var(--o-accent,#DCCFBE) 34%, var(--o-fond,#fff));
  --o-cal-apercu: color-mix(in srgb, var(--o-accent,#DCCFBE) 17%, var(--o-fond,#fff));
  --o-cal-cellule: 46px;
  position:relative;
  background:var(--o-fond,#fff);
  color:var(--o-encre,#231F20);
  font-family:var(--o-sans,system-ui,sans-serif);
  border:1px solid var(--o-filet,rgba(0,0,0,.12));
  padding:22px 22px 0;
}

.o-cal__tete{display:none}
.o-cal__tete-titre{
  margin:0;font-family:var(--o-serif,Georgia,serif);font-size:19px;font-weight:400;letter-spacing:.01em;
}
.o-cal__fermer{
  background:none;border:0;padding:6px 2px;cursor:pointer;color:var(--o-gris,#666);
  font-family:var(--o-sans,sans-serif);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;
}
.o-cal__fermer:hover{color:var(--o-encre,#111)}

.o-cal__barre{
  display:flex;align-items:center;justify-content:space-between;
  margin:0 0 6px;position:relative;z-index:3;
}
.o-cal__nav{
  width:36px;height:36px;display:flex;align-items:center;justify-content:center;
  background:transparent;border:1px solid var(--o-filet,rgba(0,0,0,.12));
  color:var(--o-encre,#111);cursor:pointer;padding:0;border-radius:var(--o-rayon,0);
  transition:border-color .2s var(--o-ease,ease),background .2s var(--o-ease,ease);
}
.o-cal__nav svg{width:16px;height:16px;display:block}
.o-cal__nav:hover:not(:disabled){border-color:var(--o-filet-fort,#bbb);background:var(--o-surface,#f2f2f2)}
.o-cal__nav:disabled{opacity:.28;cursor:default}
.o-cal__nav:focus-visible{outline:2px solid var(--o-encre,#111);outline-offset:2px}

.o-cal__piste{display:grid;grid-template-columns:1fr 1fr;gap:0 40px}
.o-cal__piste.est-empilee{grid-template-columns:1fr;gap:8px}
@media (max-width:899px){ .o-cal__piste{grid-template-columns:1fr} }

.o-cal__mois{min-width:0}
.o-cal__mois-titre{
  margin:0 0 12px;text-align:center;font-weight:400;
  font-family:var(--o-serif,Georgia,serif);font-size:17px;letter-spacing:.02em;
  color:var(--o-encre,#111);background:var(--o-fond,#fff);padding:6px 0;
}

.o-cal__grille{width:100%;border-collapse:collapse;table-layout:fixed}
.o-cal__entete{padding:0 0 10px;font-weight:400}
.o-cal__entete abbr{
  text-decoration:none;border:0;cursor:help;
  font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--o-gris,#777);
}

.o-cal__vide{height:var(--o-cal-cellule);padding:1px 0}
.o-cal__jour{
  height:var(--o-cal-cellule);padding:1px 0;text-align:center;vertical-align:middle;
  cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent;
}
.o-cal__pastille{
  display:flex;align-items:center;justify-content:center;position:relative;
  width:100%;height:calc(var(--o-cal-cellule) - 4px);
  font-size:14px;font-variant-numeric:tabular-nums;line-height:1;
  border-radius:var(--o-rayon,0);
  transition:background .18s var(--o-ease,ease),color .18s var(--o-ease,ease),
             box-shadow .18s var(--o-ease,ease);
}

.o-cal__jour.est-dispo .o-cal__pastille{color:var(--o-encre,#111)}
.o-cal__jour.est-dispo:hover .o-cal__pastille{
  box-shadow:inset 0 0 0 1px var(--o-filet-fort,#bbb);
}
.o-cal__jour.est-passe,
.o-cal__jour.est-ferme,
.o-cal__jour.est-reserve{cursor:not-allowed}
.o-cal__jour.est-passe .o-cal__pastille{color:var(--o-gris,#777);opacity:.35}
.o-cal__jour.est-ferme .o-cal__pastille{
  color:var(--o-avenir,#9a9a92);
  background:color-mix(in srgb, var(--o-surface,#eee) 55%, var(--o-fond,#fff));
}
.o-cal__jour.est-reserve .o-cal__pastille{
  color:var(--o-gris,#777);opacity:.5;text-decoration:line-through;
  text-decoration-thickness:1px;
}

.o-cal__jour.est-aujourdhui .o-cal__pastille::after{
  content:"";position:absolute;left:50%;bottom:7px;width:3px;height:3px;
  transform:translateX(-50%);border-radius:50%;background:currentColor;
}

.o-cal__jour.est-court .o-cal__pastille,
.o-cal__jour.est-bloque .o-cal__pastille{color:var(--o-gris,#777);opacity:.32}
.o-cal__jour.est-court,
.o-cal__jour.est-bloque{cursor:not-allowed}
.o-cal__jour.est-hors-arrivee .o-cal__pastille{color:var(--o-gris,#777);opacity:.55}
.o-cal__jour.est-hors-arrivee{cursor:not-allowed}

.o-cal__jour.est-sortie{cursor:pointer}
.o-cal__jour.est-sortie .o-cal__pastille{
  color:var(--o-encre,#111);opacity:1;text-decoration:none;
}
.o-cal__jour.est-sortie:hover .o-cal__pastille{
  box-shadow:inset 0 0 0 1px var(--o-filet-fort,#bbb);
}

.o-cal__jour.est-plage{background:var(--o-cal-plage)}
.o-cal__jour.est-plage .o-cal__pastille{color:var(--o-encre,#111);opacity:1}
.o-cal__jour.est-arrivee.est-liee,
.o-cal__jour.est-depart{background:var(--o-cal-plage)}
.o-cal__jour.est-arrivee .o-cal__pastille,
.o-cal__jour.est-depart .o-cal__pastille{
  background:var(--o-cal-borne);color:var(--o-cal-borne-texte);opacity:1;
  text-decoration:none;font-weight:500;
}
.o-cal__jour.est-arrivee:hover .o-cal__pastille,
.o-cal__jour.est-depart:hover .o-cal__pastille{box-shadow:none}

.o-cal__jour.est-apercu{background:var(--o-cal-apercu)}
.o-cal__jour.est-apercu .o-cal__pastille{opacity:1;color:var(--o-encre,#111)}
.o-cal__jour.est-apercu-fin .o-cal__pastille{
  box-shadow:inset 0 0 0 1px var(--o-cal-borne);
}
.o-cal__jour.est-apercu.est-court .o-cal__pastille,
.o-cal__jour.est-apercu.est-bloque .o-cal__pastille{opacity:.4}

.o-cal__jour.est-apercu-refuse .o-cal__pastille{
  box-shadow:inset 0 0 0 1px var(--o-erreur,#8D4F3C);opacity:.6;
}

.o-cal__jour:focus-visible .o-cal__pastille{
  box-shadow:inset 0 0 0 2px var(--o-encre,#111);
}
.o-cal__jour:focus-visible{outline:none}

.o-cal__note{
  margin:12px 0 0;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--o-gris,#777);
}
.o-cal__note[hidden]{display:none}

.o-cal__pied{
  display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  margin-top:18px;padding:16px 0;border-top:1px solid var(--o-filet,rgba(0,0,0,.12));
}

.o-cal__pied.est-nu{border-top:0;padding:0;margin-top:2px}
.o-cal.est-mobile .o-cal__pied.est-nu{border-top:1px solid var(--o-filet,rgba(0,0,0,.12));
  padding:14px 20px calc(14px + env(safe-area-inset-bottom,0px));margin:0}
.o-cal__bilan{min-width:0;flex:1 1 260px}
.o-cal__recap{
  margin:0;font-family:var(--o-serif,Georgia,serif);font-size:16px;line-height:1.4;
  color:var(--o-encre,#111);
}
.o-cal__recap:empty{display:none}
.o-cal__message{
  margin:4px 0 0;font-size:12.5px;line-height:1.5;color:var(--o-gris,#777);
}
.o-cal__message:empty{display:none}
.o-cal__message.est-erreur{color:var(--o-erreur,#8D4F3C)}

.o-cal__boutons{display:flex;align-items:center;gap:12px}
.o-cal__effacer{
  background:none;border:0;padding:6px 0;cursor:pointer;color:var(--o-gris,#777);
  font-family:var(--o-sans,sans-serif);font-size:10.5px;letter-spacing:.16em;
  text-transform:uppercase;text-decoration:underline;text-underline-offset:4px;
}
.o-cal__effacer:hover{color:var(--o-encre,#111)}
.o-cal__effacer:focus-visible,.o-cal__confirmer:focus-visible,
.o-cal__fermer:focus-visible,.o-cal__declencheur:focus-visible{
  outline:2px solid var(--o-encre,#111);outline-offset:3px;
}
.o-cal__effacer[hidden]{display:none}
.o-cal__confirmer{
  display:none;background:var(--o-cal-borne);color:var(--o-cal-borne-texte);
  border:0;padding:14px 26px;cursor:pointer;border-radius:var(--o-rayon,0);
  font-family:var(--o-sans,sans-serif);font-size:11px;letter-spacing:.18em;text-transform:uppercase;
}

.o-cal__annonce{
  position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0;
}

@keyframes o-cal-glisse-g{from{transform:translateX(3.5%);opacity:.25}to{transform:none;opacity:1}}
@keyframes o-cal-glisse-d{from{transform:translateX(-3.5%);opacity:.25}to{transform:none;opacity:1}}
.o-cal__piste.est-glisse-g{animation:o-cal-glisse-g 260ms var(--o-ease,cubic-bezier(.22,.61,.36,1))}
.o-cal__piste.est-glisse-d{animation:o-cal-glisse-d 260ms var(--o-ease,cubic-bezier(.22,.61,.36,1))}

.o-cal__declencheur{
  display:block;width:100%;text-align:left;cursor:pointer;
  background:var(--o-fond,#fff);color:var(--o-encre,#111);
  border:1px solid var(--o-filet,rgba(0,0,0,.12));padding:13px 16px;
  font-family:var(--o-sans,sans-serif);border-radius:var(--o-rayon,0);
}
.o-cal__declencheur-l{
  display:block;font-size:9px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--o-gris,#777);margin-bottom:3px;
}
.o-cal__declencheur-v{display:block;font-size:14px;line-height:1.35}

.o-cal__voile{
  position:fixed;inset:0;z-index:9998;display:none;
  background:color-mix(in srgb, var(--o-encre,#231F20) 42%, transparent);
}
.o-cal__voile.est-ouvert{display:block}

.o-cal.est-mobile{
  position:fixed;inset:0;z-index:9999;display:none;flex-direction:column;
  padding:0;border:0;box-shadow:var(--o-ombre,0 -20px 60px -40px rgba(0,0,0,.5));
  
  overflow-x:clip;
}
.o-cal.est-mobile.est-ouvert{display:flex}
.o-cal.est-mobile .o-cal__tete{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:16px 20px;border-bottom:1px solid var(--o-filet,rgba(0,0,0,.12));flex:0 0 auto;
}
.o-cal.est-mobile .o-cal__defile{
  flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:clip;
  -webkit-overflow-scrolling:touch;padding:0 16px 18px;
}
.o-cal.est-mobile .o-cal__barre{display:none}
.o-cal.est-mobile .o-cal__mois-titre{
  position:sticky;top:0;z-index:2;text-align:left;margin:0 0 8px;
  padding:14px 0 10px;border-bottom:1px solid var(--o-filet,rgba(0,0,0,.12));
}
.o-cal.est-mobile .o-cal__mois{padding-bottom:14px}
.o-cal.est-mobile .o-cal__pied{
  flex:0 0 auto;margin:0;padding:14px 20px calc(14px + env(safe-area-inset-bottom,0px));
  border-top:1px solid var(--o-filet,rgba(0,0,0,.12));background:var(--o-fond,#fff);
  align-items:center;
}
.o-cal.est-mobile .o-cal__confirmer{display:block}
.o-cal.est-mobile .o-cal__note{padding-bottom:10px}

@media (prefers-reduced-motion:reduce){
  .o-cal *,.o-cal{animation:none!important;transition:none!important}
}

@media(max-width:900px){
  .o-cal__declencheur-l,
  .o-cal__entete abbr{font-size:10.2px}
}
