.prestiscene-booking {
  --ps-primary: #810304;
  --ps-accent: #f1ca60;
  --ps-border: #e0b3b3;
  --ps-text: #1f1f1f;
  --ps-muted: #666;
  font-family: inherit;
  color: var(--ps-text);
}

.prestiscene-booking * {
  box-sizing: border-box;
}

.prestiscene-booking__shell {
  max-width: 980px;
  margin: 0 auto;
}

.prestiscene-booking__progress {
  margin-bottom: 1.25rem;
}

.prestiscene-booking__progress-label {
  display: block;
  font-size: 0.95rem;
  font-weight: 600;
  margin-bottom: 0.35rem;
}

.prestiscene-booking__progress-bar {
  height: 8px;
  background: #f3f3f3;
  border-radius: 999px;
  overflow: hidden;
}

.prestiscene-booking__progress-bar span {
  display: block;
  height: 100%;
  background: var(--ps-accent);
  border-radius: inherit;
  transition: width 0.25s ease;
}

.prestiscene-booking__header h2 {
  margin: 0 0 0.35rem;
  font-size: clamp(1.5rem, 3vw, 2rem);
  line-height: 1.2;
}

.prestiscene-booking__header h3 {
  margin: 0 0 1rem;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ps-primary);
}

.prestiscene-booking__subtitle {
  margin: -0.5rem 0 1rem;
  color: var(--ps-muted);
}

.prestiscene-booking__notice,
.prestiscene-booking__error,
.prestiscene-booking__loading {
  padding: 0.85rem 1rem;
  border-radius: 8px;
  margin: 0.75rem 0;
}

.prestiscene-booking__notice {
  background: #fafafa;
  color: var(--ps-muted);
}

.prestiscene-booking__error {
  background: #fdecec;
  color: #b42318;
}

.prestiscene-booking__loading {
  text-align: center;
  color: var(--ps-muted);
}

/* Calendrier (reprise visuelle site LPF) */
.prestiscene-booking .calendar-container {
  width: 100%;
  max-width: 100%;
  margin-bottom: 1rem;
}

.prestiscene-booking .calendar-header {
  background: var(--ps-primary);
  position: relative;
  padding: 16px 20px;
  border-radius: 20px 20px 0 0;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(2rem, 10vw, 6rem);
}

.prestiscene-booking .calendar-header__title {
  margin: 0;
  font-size: 1.1rem;
  font-weight: 600;
  text-transform: capitalize;
  color: #fff;
}

.prestiscene-booking .calendar-header__nav {
  border: 0;
  background: transparent;
  color: #fff;
  cursor: pointer;
  padding: 0.25rem;
  line-height: 0;
}

.prestiscene-booking .calendar-header__nav--next svg {
  transform: none;
}

.prestiscene-booking .calendar-header__nav:not(.calendar-header__nav--next) svg {
  transform: rotate(180deg);
}

.prestiscene-booking .ps-calendar {
  overflow: hidden;
  width: 100%;
  font-size: 12px;
  background: #fff;
  border-collapse: collapse;
}

.prestiscene-booking .ps-calendar thead > tr,
.prestiscene-booking .ps-calendar tbody > tr {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(7, 1fr);
}

.prestiscene-booking .ps-calendar th {
  text-transform: uppercase;
  border-right: 1px solid var(--ps-border);
  border-bottom: 1px solid var(--ps-border);
  text-align: center;
  padding: 18px 0;
  font-size: 0.72rem;
  font-weight: 600;
}

.prestiscene-booking .ps-calendar td {
  background: #fff;
  text-align: center;
  padding: 0 12px 20px;
  border-right: 1px solid var(--ps-border);
  border-bottom: 1px solid var(--ps-border);
  min-height: 110px;
  vertical-align: top;
}

.prestiscene-booking .ps-calendar td.empty {
  background: #eee;
}

.prestiscene-booking .ps-calendar__day-number {
  display: inline-block;
  margin-top: 8px;
  font-weight: 600;
}

.prestiscene-booking .events-container {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
  margin-top: 16px;
}

.prestiscene-booking .events-container > .event {
  display: grid;
  grid-template-columns: 54px 1fr;
  gap: 8px;
  padding: 8px;
  align-items: center;
  text-align: left;
  cursor: pointer;
  color: #000;
  border: 0;
  background: transparent;
  width: 100%;
  font: inherit;
}

.prestiscene-booking .events-container > .event.disabled,
.prestiscene-booking .events-container > .event.is-disabled {
  cursor: default;
}

.prestiscene-booking .event:not(.disabled):hover {
  background: #eee;
  border-radius: 4px;
}

.prestiscene-booking .event.disabled > span:last-child,
.prestiscene-booking .event.is-disabled > span:last-child {
  color: #c9c9c9;
}

.prestiscene-booking .hour {
  background: var(--ps-primary);
  color: #fff;
  padding: 2px 8px;
  border-radius: 5px;
  text-align: center;
  font-weight: 600;
}

.prestiscene-booking .hour.disabled {
  background: #c9c9c9;
}

.prestiscene-booking .hour.event {
  background: var(--ps-accent);
  color: #1f1f1f;
}

/* Formules (inspiré Cabaret Élégance) */
.prestiscene-booking__selection-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  align-items: baseline;
  margin-bottom: 1rem;
  padding: 0.85rem 1rem;
  background: #fafafa;
  border: 1px solid #ececec;
  border-radius: 10px;
}

.prestiscene-booking__category-title {
  margin: 1rem 0 0.5rem;
  font-size: 0.95rem;
}

.prestiscene-booking__formula-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1rem;
  margin-bottom: 1rem;
}

.prestiscene-booking__formula-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 1rem 1rem 1rem 2.75rem;
  border: 2px solid #e8e8e8;
  border-radius: 14px;
  background: #fff;
  cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.prestiscene-booking__formula-card:hover {
  border-color: var(--ps-accent);
}

.prestiscene-booking__formula-card.is-selected {
  border-color: var(--ps-primary);
  box-shadow: 0 0 0 1px var(--ps-primary);
}

.prestiscene-booking__formula-card input {
  position: absolute;
  left: 1rem;
  top: 1.15rem;
}

.prestiscene-booking__formula-name {
  font-weight: 700;
  line-height: 1.3;
}

.prestiscene-booking__formula-price {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--ps-primary);
}

.prestiscene-booking__formula-desc {
  font-size: 0.85rem;
  color: var(--ps-muted);
}

.prestiscene-booking__options {
  display: none;
  margin: 0 0 1rem;
  padding: 1rem;
  border: 1px dashed #ddd;
  border-radius: 10px;
}

.prestiscene-booking__form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.prestiscene-booking__field {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.prestiscene-booking__field label {
  font-size: 0.875rem;
  font-weight: 600;
}

.prestiscene-booking__field input,
.prestiscene-booking__field select,
.prestiscene-booking__field textarea {
  width: 100%;
  padding: 0.7rem 0.8rem;
  border: 1px solid #ddd;
  border-radius: 8px;
  font: inherit;
}

.prestiscene-booking__field--full {
  grid-column: 1 / -1;
}

.prestiscene-booking__field--places {
  max-width: 220px;
}

.prestiscene-booking__checkbox {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  margin: 0.75rem 0;
}

.prestiscene-booking__actions {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin-top: 1.5rem;
}

.prestiscene-booking__button {
  border: 0;
  border-radius: 999px;
  padding: 0.8rem 1.4rem;
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}

.prestiscene-booking__button--primary {
  background: var(--ps-primary);
  color: #fff;
}

.prestiscene-booking__button--primary:hover {
  filter: brightness(0.92);
}

.prestiscene-booking__button--secondary {
  background: #fff;
  border: 1px solid #ddd;
  color: var(--ps-text);
}

.prestiscene-booking__summary {
  border: 1px solid #ececec;
  border-radius: 12px;
  padding: 1rem;
  background: #fafafa;
}

.prestiscene-booking__summary-row {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.35rem 0;
  border-bottom: 1px solid #ececec;
}

.prestiscene-booking__summary-row:last-child {
  border-bottom: 0;
}

@media (max-width: 768px) {
  .prestiscene-booking__form-grid {
    grid-template-columns: 1fr;
  }

  .prestiscene-booking .ps-calendar th {
    font-size: 0.62rem;
    padding: 12px 0;
  }

  .prestiscene-booking .ps-calendar td {
    padding: 0 4px 12px;
    min-height: 88px;
  }

  .prestiscene-booking .events-container > .event {
    grid-template-columns: 44px 1fr;
    padding: 4px;
    font-size: 0.72rem;
  }
}

/* Ajustements LPF : calendrier stable même avec des titres longs */
.prestiscene-booking .ps-calendar thead > tr,
.prestiscene-booking .ps-calendar tbody > tr {
  grid-template-columns: repeat(7, minmax(0, 1fr));
}

.prestiscene-booking .ps-calendar th,
.prestiscene-booking .ps-calendar td {
  min-width: 0;
  overflow: hidden;
}

.prestiscene-booking .events-container > .event {
  grid-template-columns: 48px minmax(0, 1fr);
  min-width: 0;
}

.prestiscene-booking .events-container > .event span:last-child {
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: normal;
  line-height: 1.2;
}

/* Étape formules avec récapitulatif latéral */
.prestiscene-booking__with-summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  gap: 1.25rem;
  align-items: start;
}

.prestiscene-booking__main-panel {
  min-width: 0;
}

.prestiscene-booking__side-summary {
  position: sticky;
  top: 1rem;
  border: 1px solid #ececec;
  border-radius: 14px;
  background: #fafafa;
  padding: 1rem;
}

.prestiscene-booking__side-summary h4 {
  margin: 0 0 0.75rem;
  color: var(--ps-primary);
}

.prestiscene-booking__summary-event {
  margin: 0 0 1rem;
  color: var(--ps-muted);
  font-size: 0.9rem;
}

.prestiscene-booking__summary-total {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin-top: 0.75rem;
  padding-top: 0.75rem;
  border-top: 2px solid var(--ps-primary);
  font-weight: 800;
}

.prestiscene-booking__qty-inline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-top: 0.5rem;
  font-size: 0.875rem;
  font-weight: 600;
}

.prestiscene-booking__qty-inline input {
  width: 86px;
  padding: 0.55rem 0.65rem;
  border: 1px solid #ddd;
  border-radius: 8px;
  font: inherit;
}

.prestiscene-booking__option-check {
  display: flex;
  align-items: flex-start;
  gap: 0.65rem;
  padding: var(--ps-option-row-spacing, 0.4rem) 0;
  border-bottom: 1px solid #ececec;
}

.prestiscene-booking__option-check:last-child {
  border-bottom: 0;
}

.prestiscene-booking__option-check span {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.prestiscene-booking__option-check em {
  color: var(--ps-muted);
  font-style: normal;
  font-size: 0.85rem;
}

@media (max-width: 900px) {
  .prestiscene-booking__with-summary {
    grid-template-columns: 1fr;
  }

  .prestiscene-booking__side-summary {
    position: static;
  }
}

@media (max-width: 768px) {
  .prestiscene-booking .events-container > .event {
    grid-template-columns: 1fr;
    text-align: center;
  }

  .prestiscene-booking .hour {
    display: inline-block;
  }
}


/* v1.2.0 — correctifs LPF : calendrier compact + cache-busting */
.prestiscene-booking .ps-calendar {
  table-layout: fixed;
}
.prestiscene-booking .ps-calendar thead > tr,
.prestiscene-booking .ps-calendar tbody > tr {
  grid-template-columns: repeat(7, minmax(0, 1fr)) !important;
}
.prestiscene-booking .ps-calendar th,
.prestiscene-booking .ps-calendar td {
  min-width: 0 !important;
  max-width: 100%;
  overflow: hidden;
}
.prestiscene-booking .events-container > .event {
  grid-template-columns: 44px minmax(0, 1fr) !important;
  gap: 6px;
  padding: 6px 4px;
  min-width: 0;
}
.prestiscene-booking .events-container > .event span:last-child {
  overflow-wrap: anywhere;
  word-break: break-word;
  hyphens: auto;
  font-size: 0.82rem;
}
.prestiscene-booking .hour:empty {
  display: none;
}

/* v1.3.0 — LPF : calendrier lisible + cartes formules propres */
.prestiscene-booking .calendar-container {
  overflow-x: auto;
}
.prestiscene-booking .ps-calendar {
  min-width: 980px;
}
.prestiscene-booking .events-container > .event {
  grid-template-columns: 1fr !important;
  justify-items: center;
  text-align: center;
  gap: 4px;
}
.prestiscene-booking .events-container > .event span:last-child {
  display: block;
  width: 100%;
  font-size: 0.72rem;
  line-height: 1.12;
  overflow: visible;
  white-space: normal;
}
.prestiscene-booking .hour {
  display: inline-block;
  font-size: 0.72rem;
  padding: 2px 6px;
}
.prestiscene-booking__formula-card {
  padding: 1rem !important;
}
.prestiscene-booking__formula-card input {
  position: static !important;
}
.prestiscene-booking__formula-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 0.75rem;
}
.prestiscene-booking__formula-name {
  min-width: 0;
}
.prestiscene-booking__formula-price {
  flex: 0 0 auto;
  text-align: right;
}
.prestiscene-booking__qty-inline {
  padding-top: 0.65rem;
  border-top: 1px solid #f0f0f0;
}
.prestiscene-booking__qty-inline input {
  flex: 0 0 auto;
}
@media (max-width: 768px) {
  .prestiscene-booking .ps-calendar {
    min-width: 760px;
  }
}

/* v1.8.0 — LPF : choix spectacle avant calendrier */
.prestiscene-booking__spectacle-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 1rem;
  margin: 1rem 0;
}
.prestiscene-booking__spectacle-card {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  text-align: left;
  border: 2px solid #e8e8e8;
  border-radius: 14px;
  background: #fff;
  padding: 1rem;
  font: inherit;
  cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}
.prestiscene-booking__spectacle-card:hover {
  border-color: var(--ps-primary);
  box-shadow: 0 6px 20px rgba(0,0,0,0.08);
  transform: translateY(-1px);
}
.prestiscene-booking__spectacle-card strong {
  color: var(--ps-primary);
  font-size: 1.05rem;
  line-height: 1.25;
}
.prestiscene-booking__spectacle-card span {
  color: var(--ps-muted);
  font-size: 0.9rem;
}

.prestiscene-booking__spectacle-card.is-selected {
  outline: 2px solid currentColor;
  transform: translateY(-1px);
}

.prestiscene-booking__single-date {
  margin-top: 24px;
  padding: 20px;
  border: 1px solid rgba(0,0,0,.12);
  border-radius: 14px;
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: center;
}

@media (max-width: 640px) {
  .prestiscene-booking__single-date {
    display: block;
  }
}

/* V13 : cartes spectacle inspirées de la page publique Prestiscène */
.prestiscene-booking__spectacle-card {
  overflow: hidden;
  padding: 0;
}

.prestiscene-booking__spectacle-image {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  background-size: cover;
  background-position: center;
  background-color: #f4f4f4;
}

.prestiscene-booking__spectacle-content {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 1rem;
}

.prestiscene-booking__spectacle-card > strong,
.prestiscene-booking__spectacle-card > span:not(.prestiscene-booking__spectacle-image):not(.prestiscene-booking__spectacle-content) {
  padding-left: 1rem;
  padding-right: 1rem;
}

/* V14 : dates en liste si 5 dates ou moins */
.prestiscene-booking__date-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 0.75rem;
  margin: 1.25rem 0;
}

.prestiscene-booking__date-choice {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.4rem;
  width: 100%;
  padding: 1rem;
  border: 1px solid rgba(0,0,0,.12);
  border-radius: 14px;
  background: #fff;
  text-align: left;
  font: inherit;
  cursor: pointer;
  transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}

.prestiscene-booking__date-choice:hover:not(.is-disabled) {
  border-color: var(--ps-primary);
  box-shadow: 0 6px 20px rgba(0,0,0,0.08);
  transform: translateY(-1px);
}

.prestiscene-booking__date-choice-main {
  color: var(--ps-primary);
  font-weight: 700;
  line-height: 1.25;
}

.prestiscene-booking__date-choice-status {
  color: var(--ps-muted);
  font-size: 0.9rem;
}

.prestiscene-booking__date-choice.is-disabled {
  opacity: .55;
  cursor: not-allowed;
}

/* V15 : cartes spectacle plus lisibles, sans fond rouge */
.prestiscene-booking__spectacle-grid {
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}
.prestiscene-booking__spectacle-card,
.prestiscene-booking__spectacle-card.is-selected {
  background: #fff !important;
  color: var(--ps-text) !important;
  border: 1px solid #e7e7e7;
  box-shadow: 0 8px 22px rgba(0,0,0,0.06);
  outline: none;
}
.prestiscene-booking__spectacle-card:hover,
.prestiscene-booking__spectacle-card.is-selected {
  border-color: var(--ps-accent);
  box-shadow: 0 10px 28px rgba(0,0,0,0.10);
}
.prestiscene-booking__spectacle-image {
  aspect-ratio: 4 / 3;
  background-color: #f5f5f5;
}
.prestiscene-booking__spectacle-content {
  background: #fff;
}
.prestiscene-booking__spectacle-card strong,
.prestiscene-booking__spectacle-content strong {
  color: var(--ps-primary) !important;
  font-size: 1.15rem;
  line-height: 1.25;
}
.prestiscene-booking__spectacle-card span,
.prestiscene-booking__spectacle-content span {
  color: var(--ps-muted) !important;
}
.prestiscene-booking__spectacle-card.is-selected::after {
  content: "Sélectionné";
  display: inline-flex;
  align-self: flex-start;
  margin: 0 1rem 1rem;
  padding: 0.25rem 0.6rem;
  border-radius: 999px;
  background: var(--ps-accent);
  color: #1f1f1f;
  font-size: 0.78rem;
  font-weight: 700;
}


/* V16 : cartes/dates sans fond rouge imposé par le thème */
.prestiscene-booking__date-choice,
.prestiscene-booking__date-choice:hover,
.prestiscene-booking__date-choice:focus,
.prestiscene-booking__date-choice:active {
  background: #fff !important;
  color: var(--ps-text) !important;
  outline: none;
}
.prestiscene-booking__date-choice .prestiscene-booking__date-choice-main {
  color: var(--ps-text) !important;
}
.prestiscene-booking__date-choice:hover:not(.is-disabled),
.prestiscene-booking__date-choice:focus:not(.is-disabled) {
  border-color: var(--ps-accent) !important;
}
.prestiscene-booking__spectacle-card,
.prestiscene-booking__spectacle-card:hover,
.prestiscene-booking__spectacle-card:focus,
.prestiscene-booking__spectacle-card:active,
.prestiscene-booking__spectacle-card.is-selected {
  background: #fff !important;
  color: var(--ps-text) !important;
}
.prestiscene-booking__spectacle-image:empty::before {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background: #f5f5f5;
}


/* V19 : visuels en <img> + suppression totale des fonds rouges dates/cartes */
.prestiscene-booking__spectacle-card,
.prestiscene-booking__spectacle-card:hover,
.prestiscene-booking__spectacle-card:focus,
.prestiscene-booking__spectacle-card:active,
.prestiscene-booking__spectacle-card.is-selected,
.prestiscene-booking__date-choice,
.prestiscene-booking__date-choice:hover,
.prestiscene-booking__date-choice:focus,
.prestiscene-booking__date-choice:active {
  background-color: #fff !important;
  background-image: none !important;
}
.prestiscene-booking__spectacle-image {
  position: relative;
  overflow: hidden;
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  background: #f6f6f6 !important;
}
.prestiscene-booking__spectacle-image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.prestiscene-booking__spectacle-image.is-empty::after {
  content: "Affiche à venir";
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #777;
  font-size: .9rem;
}
.prestiscene-booking__date-choice-main,
.prestiscene-booking__date-choice-status {
  background: transparent !important;
}


/* V21 - carrousel spectacles + images lisibles */
.prestiscene-booking__spectacle-carousel {
  position: relative;
  display: flex;
  align-items: stretch;
  gap: .75rem;
  margin: 1.25rem 0 1.5rem;
}
.prestiscene-booking__spectacle-track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: calc((100% - 3rem) / 4);
  gap: 1rem;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  padding: .25rem .15rem .8rem;
  scrollbar-width: thin;
  flex: 1 1 auto;
}
.prestiscene-booking__spectacle-track .prestiscene-booking__spectacle-card {
  width: 100%;
  min-width: 0;
  scroll-snap-align: start;
}
.prestiscene-booking__carousel-arrow {
  flex: 0 0 2.4rem;
  align-self: center;
  width: 2.4rem;
  height: 2.4rem;
  border-radius: 999px;
  border: 1px solid #e5e5e5;
  background: #fff !important;
  color: #222 !important;
  font-size: 1.8rem;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(0,0,0,.08);
}
.prestiscene-booking__carousel-arrow:hover,
.prestiscene-booking__carousel-arrow:focus {
  background: #f7f7f7 !important;
  color: #111 !important;
}
.prestiscene-booking__spectacle-image {
  min-height: 170px;
}
.prestiscene-booking__spectacle-image img {
  background: #f6f6f6;
}
@media (max-width: 980px) {
  .prestiscene-booking__spectacle-track {
    grid-auto-columns: calc((100% - 1rem) / 2);
  }
}
@media (max-width: 560px) {
  .prestiscene-booking__spectacle-carousel {
    gap: .35rem;
  }
  .prestiscene-booking__spectacle-track {
    grid-auto-columns: 82%;
  }
  .prestiscene-booking__carousel-arrow {
    flex-basis: 2rem;
    width: 2rem;
    height: 2rem;
  }
}

/* V32 — affiches complètes, dates en liste, options avancées */
.prestiscene-booking__spectacle-image {
  aspect-ratio: 1414 / 2000 !important;
  min-height: 0 !important;
  background: #fff !important;
  border-bottom: 1px solid rgba(0,0,0,.06);
}
.prestiscene-booking__spectacle-image img {
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
  background: #fff !important;
}
.prestiscene-booking__date-list {
  display: flex !important;
  flex-direction: column !important;
  gap: .75rem !important;
  margin: 1.25rem 0 !important;
}
.prestiscene-booking__date-choice {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center !important;
  gap: 1rem !important;
}
.prestiscene-booking__date-choice-main {
  font-size: 1rem;
}
.prestiscene-booking__option-check--quantity {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 84px;
  align-items: center;
  gap: 0.75rem;
}
.prestiscene-booking__option-check--quantity .prestiscene-booking__option-fields {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}
.prestiscene-booking__option-check--quantity .prestiscene-booking__option-fields > span:first-child {
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .03em;
  opacity: .6;
  font-weight: 600;
}
.prestiscene-booking__option-check--quantity input {
  width: 100%;
  max-width: 68px;
  padding: .45rem .3rem;
  border: 1px solid rgba(0,0,0,.14);
  border-radius: 8px;
  text-align: center;
  font-weight: 700;
  font-size: 1rem;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.prestiscene-booking__option-check--quantity input:focus {
  outline: none;
  border-color: var(--ps-primary, #810304);
  box-shadow: 0 0 0 3px rgba(129,3,4,.12);
}
.prestiscene-booking__option-check--text {
  display: grid !important;
  grid-template-columns: 1fr;
}
.prestiscene-booking__option-check--text textarea {
  width: 100%;
  padding: .75rem .9rem;
  border: 1px solid rgba(0,0,0,.16);
  border-radius: 10px;
  resize: vertical;
  font: inherit;
}
@media (max-width: 640px) {
  .prestiscene-booking__date-choice,
  .prestiscene-booking__option-check--quantity {
    grid-template-columns: 1fr;
  }
}

/* V33 — options pilotées par Prestiscène */
.prestiscene-booking__option-check.is-disabled {
  opacity: .55;
  cursor: not-allowed;
}
.prestiscene-booking__option-check.is-disabled input {
  cursor: not-allowed;
}

/* V4.0 - champs d'option pilotés par Prestiscène */
.prestiscene-booking__option-fields{
  display:flex;
  flex-direction:column;
  gap:6px;
  margin-top:10px;
  width:100%;
  font-size:.9rem;
  color:#5f4a4a;
}
.prestiscene-booking__option-fields input[type="number"],
.prestiscene-booking__option-fields textarea{
  width:100%;
  border:1px solid var(--ps-border,#e4d7d7);
  border-radius:12px;
  padding:10px 12px;
  background:#fff;
  color:#251b1b;
}
.prestiscene-booking__option-check--quantity-text{
  align-items:flex-start;
}

/* V4.5 — catégories produits + info-bulles options */
.prestiscene-booking__product-category {
  margin: 0 0 1rem;
  padding: .85rem 1rem;
  border: 1px solid var(--ps-border, #e4d7d7);
  border-radius: 14px;
  background: #fff;
}
.prestiscene-booking__product-category-title {
  margin: 0 0 .35rem;
  font-size: .95rem;
  color: var(--ps-primary);
}
.prestiscene-booking__product-category-note {
  margin: 0 0 .5rem;
  font-size: .85rem;
  color: var(--ps-muted, #7b6a6a);
}
.prestiscene-booking__info-tooltip {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  margin-left: .35rem;
  border-radius: 50%;
  background: var(--ps-primary);
  color: #fff;
  font-size: .75rem;
  font-weight: 700;
  line-height: 1;
  cursor: help;
  vertical-align: middle;
}
.prestiscene-booking__option-check strong {
  display: inline-flex;
  align-items: center;
  gap: .2rem;
}

/* V4.6 — précommandes visuelles */
.prestiscene-booking__product-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:14px;
}
.prestiscene-booking__product-grid.is-drinks-grid{
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.prestiscene-booking__product-card{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:10px;
  padding:12px;
  border:1px solid var(--ps-border,#e4d7d7);
  border-radius:16px;
  background:#fff;
  cursor:pointer;
  transition:box-shadow .2s ease, transform .2s ease, border-color .2s ease;
  min-height:100%;
}
.prestiscene-booking__product-card:hover{
  transform:translateY(-1px);
  box-shadow:0 10px 26px rgba(0,0,0,.08);
}
.prestiscene-booking__product-card.is-selected{
  border-color:var(--ps-primary,#810304);
  box-shadow:0 0 0 2px rgba(129,3,4,.12);
}
.prestiscene-booking__product-card.is-disabled{
  opacity:.55;
  cursor:not-allowed;
}
.prestiscene-booking__product-card > input{
  position:absolute;
  top:12px;
  left:12px;
  z-index:2;
}
.prestiscene-booking__product-image{
  display:flex;
  align-items:center;
  justify-content:center;
  width:150px;
  height:150px;
  max-width:100%;
  overflow:hidden;
  border-radius:12px;
  background:#f8f3f3;
  margin:0 auto;
}
.prestiscene-booking__product-image img{
  width:150px;
  height:150px;
  object-fit:contain;
  display:block;
}
.prestiscene-booking__product-image.is-empty::before{
  content:'Précommande';
  color:var(--ps-muted,#7b6a6a);
  font-size:.85rem;
}
.prestiscene-booking__product-body{
  display:flex;
  flex-direction:column;
  gap:5px;
}
.prestiscene-booking__product-body strong{
  color:#251b1b;
  font-size:.95rem;
  line-height:1.25;
}
.prestiscene-booking__product-body em{
  font-style:normal;
  font-weight:700;
  color:var(--ps-primary,#810304);
}
.prestiscene-booking__product-body small{
  color:var(--ps-muted,#7b6a6a);
  line-height:1.35;
}

.prestiscene-booking__product-qty{
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:4px;
  color:var(--ps-muted,#7b6a6a);
  font-size:.85rem;
}
.prestiscene-booking__product-qty input{
  width:72px;
  border:1px solid var(--ps-border,#e4d7d7);
  border-radius:10px;
  padding:6px 8px;
}
.prestiscene-booking__product-card.is-auto{
  border-style:dashed;
}

@media (max-width: 980px){
  .prestiscene-booking__product-grid.is-drinks-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width: 560px){
  .prestiscene-booking__product-grid,
  .prestiscene-booking__product-grid.is-drinks-grid{grid-template-columns:1fr;}
}

/* V5.0 — options groupées + précommandes côte à côte */
.prestiscene-booking__option-group{
  margin:0 0 1rem;
  padding:.9rem 1rem;
  border:1px solid var(--ps-border,#e4d7d7);
  border-radius:16px;
  background:#fff;
}
.prestiscene-booking__option-group-title{
  margin:0 0 .6rem;
  font-size:.95rem;
  color:var(--ps-primary,#810304);
}
.prestiscene-booking__product-list{
  display:flex;
  flex-wrap:wrap;
  gap:1rem;
  align-items:stretch;
}
.prestiscene-booking__product-category{
  width:100%;
}
.prestiscene-booking__product-category.is-side-category{
  flex:1 1 calc(50% - .5rem);
  min-width:280px;
}
.prestiscene-booking__product-category.is-drinks{
  flex-basis:100%;
}
@media (max-width:760px){
  .prestiscene-booking__product-category.is-side-category{flex-basis:100%;}
}

/* V5.6 representation metadata */
.prestiscene-booking__representation-meta{
  display:block;
  margin-top:.35rem;
  font-size:.9rem;
  opacity:.82;
}

.prestiscene-booking__spectacle-image img{object-fit:contain !important;}

/* Onglets de catégories d'options. Le conteneur extérieur reste en bloc
   (nav + panneaux empilés) ; l'agencement des options DANS chaque panneau
   (grille/carrousel/libre, colonnes, espacement) est désormais géré par le
   système de loop générique (.prestiscene-booking__loop--option) et donc
   entièrement pilotable depuis les contrôles Elementor du widget. */
.prestiscene-booking__options [data-options-list]{
  display:block;
}
.prestiscene-booking__option-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
  margin:0 0 1rem;
}
.prestiscene-booking__option-tab{
  border:1px solid var(--ps-border,#e4d7d7);
  background:#fff;
  color:var(--ps-text,#2b1d1d);
  border-radius:999px;
  padding:.65rem 1rem;
  font-weight:700;
  cursor:pointer;
  transition:background .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.prestiscene-booking__option-tab:hover,
.prestiscene-booking__option-tab.is-active{
  border-color:var(--ps-primary,#810304);
  background:var(--ps-primary,#810304);
  color:#fff;
  box-shadow:0 8px 20px rgba(129,3,4,.16);
}
.prestiscene-booking__option-tab-panels{
  display:block;
}
.prestiscene-booking__option-group[hidden]{
  display:none !important;
}
.prestiscene-booking__option-group.is-active{
  display:block;
}
.prestiscene-booking__option-group-title{
  font-size:1.05rem;
}

/* Elementor bridge */
.prestiscene-elementor-booking{
  width:100%;
  margin-left:auto;
  margin-right:auto;
}
.elementor-widget-prestiscene_booking_tunnel .prestiscene-booking{
  margin:0;
}


/* Elementor design bridge -------------------------------------------------- */
.prestiscene-booking {
  --ps-shell-width: 100%;
  --ps-shell-bg: transparent;
  --ps-shell-padding: 0;
  --ps-shell-radius: 0;
  --ps-surface: #fff;
  --ps-surface-alt: #fafafa;
  --ps-card-bg: var(--ps-surface);
  --ps-card-border: var(--ps-border);
  --ps-card-selected-border: var(--ps-primary);
  --ps-card-radius: 14px;
  --ps-field-bg: #fff;
  --ps-field-border: rgba(0, 0, 0, 0.16);
  --ps-field-radius: 10px;
  --ps-button-primary-bg: var(--ps-primary);
  --ps-button-primary-text: #fff;
  --ps-button-secondary-bg: #fff;
  --ps-button-secondary-text: var(--ps-primary);
  --ps-button-radius: 999px;
}

.prestiscene-booking__shell {
  max-width: var(--ps-shell-width, 100%);
  background: var(--ps-shell-bg, transparent);
  padding: var(--ps-shell-padding, 0);
  border-radius: var(--ps-shell-radius, 0);
}

.prestiscene-booking__header h2,
.prestiscene-booking__header h3,
.prestiscene-booking__category-title,
.prestiscene-booking__progress-label {
  letter-spacing: 0;
}

.prestiscene-booking__notice,
.prestiscene-booking__loading,
.prestiscene-booking .ps-calendar,
.prestiscene-booking .ps-calendar td,
.prestiscene-booking__selection-meta,
.prestiscene-booking__side-summary,
.prestiscene-booking__summary,
.prestiscene-booking__product-category {
  background: var(--ps-surface, #fff);
}

.prestiscene-booking__notice,
.prestiscene-booking__subtitle,
.prestiscene-booking__summary-event,
.prestiscene-booking__product-category-note,
.prestiscene-booking__product-body small,
.prestiscene-booking__option-fields {
  color: var(--ps-muted, #666);
}

.prestiscene-booking__formula-card,
.prestiscene-booking__spectacle-card,
.prestiscene-booking__option-check,
.prestiscene-booking__product-card,
.prestiscene-booking__product-category,
.prestiscene-booking__side-summary,
.prestiscene-booking__summary,
.prestiscene-booking__date-choice {
  background: var(--ps-card-bg, #fff);
  border-color: var(--ps-card-border, var(--ps-border));
  border-radius: var(--ps-card-radius, 14px);
}

.prestiscene-booking__formula-card.is-selected,
.prestiscene-booking__spectacle-card.is-selected,
.prestiscene-booking__product-card.is-selected,
.prestiscene-booking__date-choice:not(.is-disabled):hover {
  border-color: var(--ps-card-selected-border, var(--ps-primary));
}

.prestiscene-booking__field input,
.prestiscene-booking__field textarea,
.prestiscene-booking__qty-inline input,
.prestiscene-booking__option-check--quantity input,
.prestiscene-booking__option-check--text textarea,
.prestiscene-booking__option-fields input[type="number"],
.prestiscene-booking__option-fields textarea,
.prestiscene-booking__product-qty input {
  background: var(--ps-field-bg, #fff);
  border-color: var(--ps-field-border, rgba(0, 0, 0, 0.16));
  border-radius: var(--ps-field-radius, 10px);
  color: var(--ps-text, #1f1f1f);
}

.prestiscene-booking__button {
  border-radius: var(--ps-button-radius, 999px);
}

.prestiscene-booking__button--primary {
  background: var(--ps-button-primary-bg, var(--ps-primary));
  color: var(--ps-button-primary-text, #fff);
  border-color: var(--ps-button-primary-bg, var(--ps-primary));
}

.prestiscene-booking__button--primary:hover,
.prestiscene-booking__button--primary:focus {
  background: var(--ps-button-primary-bg, var(--ps-primary));
  color: var(--ps-button-primary-text, #fff);
  filter: brightness(0.94);
}

.prestiscene-booking__button--secondary {
  background: var(--ps-button-secondary-bg, #fff);
  color: var(--ps-button-secondary-text, var(--ps-primary));
  border-color: var(--ps-button-secondary-text, var(--ps-primary));
}

.prestiscene-booking .calendar-header {
  background: var(--ps-primary);
}

.prestiscene-booking .ps-calendar th,
.prestiscene-booking .ps-calendar td {
  border-color: var(--ps-border);
}

.prestiscene-booking .ps-calendar td.empty,
.prestiscene-booking__product-image,
.prestiscene-booking__progress-bar {
  background: var(--ps-surface-alt, #fafafa);
}


/* V6.4 - Elementor Pro style loop containers */
.prestiscene-booking__loop {
  width: 100%;
  margin: 1rem 0 1.5rem;
}

.prestiscene-booking__loop--carousel {
  display: flex;
  align-items: stretch;
  gap: .75rem;
}

.prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
  flex: 1 1 auto;
  display: grid !important;
  grid-auto-flow: column !important;
  grid-auto-columns: minmax(240px, calc((100% - 2rem) / 3)) !important;
  grid-template-columns: none !important;
  gap: 1rem;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  padding: .25rem .15rem .8rem;
  scrollbar-width: thin;
}

.prestiscene-booking__loop--spectacle.prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
  grid-auto-columns: calc((100% - 3rem) / 4) !important;
}

.prestiscene-booking__loop--grid .prestiscene-booking__loop-track {
  display: grid !important;
  grid-auto-flow: row !important;
  grid-auto-columns: initial !important;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)) !important;
  gap: 1rem;
  overflow: visible !important;
  padding: 0 !important;
  scroll-snap-type: none !important;
}

.prestiscene-booking__loop--product.prestiscene-booking__loop--grid .prestiscene-booking__loop-track,
.prestiscene-booking__loop--formula.prestiscene-booking__loop--grid .prestiscene-booking__loop-track {
  margin-bottom: 1rem;
}

.prestiscene-booking__loop-track > * {
  min-width: 0;
  scroll-snap-align: start;
}

.prestiscene-dynamic-image .prestiscene-booking__spectacle-image,
.prestiscene-dynamic-image .prestiscene-booking__product-image {
  width: 100%;
  max-width: 100%;
}

.prestiscene-dynamic-field {
  display: inline-block;
}

@media (max-width: 980px) {
  .prestiscene-booking__loop--carousel .prestiscene-booking__loop-track,
  .prestiscene-booking__loop--spectacle.prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
    grid-auto-columns: calc((100% - 1rem) / 2) !important;
  }
}

@media (max-width: 560px) {
  .prestiscene-booking__loop--carousel {
    gap: .35rem;
  }

  .prestiscene-booking__loop--carousel .prestiscene-booking__loop-track,
  .prestiscene-booking__loop--spectacle.prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
    grid-auto-columns: 82% !important;
  }
}

.prestiscene-booking__loop--grid.prestiscene-booking__spectacle-carousel {
  display: block;
}


/* V6.4.8 - Elementor Loop fidelity and controllable columns */
.prestiscene-booking {
  --ps-loop-gap: 16px;
  --ps-loop-spectacle-columns: 4;
  --ps-loop-formula-columns: 3;
  --ps-loop-product-columns: 4;
  --ps-loop-option-columns: 2;
}

.prestiscene-booking__loop--grid .prestiscene-booking__loop-track {
  gap: var(--ps-loop-gap, 16px) !important;
}

.prestiscene-booking__loop--spectacle.prestiscene-booking__loop--grid .prestiscene-booking__loop-track {
  grid-template-columns: repeat(var(--ps-cols-desktop, var(--ps-loop-spectacle-columns, 4)), minmax(0, 1fr)) !important;
}

.prestiscene-booking__loop--formula.prestiscene-booking__loop--grid .prestiscene-booking__loop-track {
  grid-template-columns: repeat(var(--ps-cols-desktop, var(--ps-loop-formula-columns, 3)), minmax(0, 1fr)) !important;
}

.prestiscene-booking__loop--product.prestiscene-booking__loop--grid .prestiscene-booking__loop-track {
  grid-template-columns: repeat(var(--ps-cols-desktop, var(--ps-loop-product-columns, 4)), minmax(0, 1fr)) !important;
}

.prestiscene-booking__loop--option.prestiscene-booking__loop--grid .prestiscene-booking__loop-track {
  grid-template-columns: repeat(var(--ps-cols-desktop, var(--ps-loop-option-columns, 2)), minmax(0, 1fr)) !important;
}

.prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
  gap: var(--ps-loop-gap, 16px) !important;
}

.prestiscene-booking__loop--spectacle.prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
  grid-auto-columns: calc((100% - (var(--ps-loop-gap, 16px) * (var(--ps-loop-spectacle-columns, 4) - 1))) / var(--ps-loop-spectacle-columns, 4)) !important;
}

.prestiscene-booking__loop--formula.prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
  grid-auto-columns: calc((100% - (var(--ps-loop-gap, 16px) * (var(--ps-loop-formula-columns, 3) - 1))) / var(--ps-loop-formula-columns, 3)) !important;
}

.prestiscene-booking__loop--product.prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
  grid-auto-columns: calc((100% - (var(--ps-loop-gap, 16px) * (var(--ps-loop-product-columns, 4) - 1))) / var(--ps-loop-product-columns, 4)) !important;
}

.prestiscene-booking__loop--option.prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
  grid-auto-columns: calc((100% - (var(--ps-loop-gap, 16px) * (var(--ps-loop-option-columns, 2) - 1))) / var(--ps-loop-option-columns, 2)) !important;
}

@media (max-width: 980px) {
  .prestiscene-booking { --ps-loop-spectacle-columns: 2; --ps-loop-formula-columns: 2; --ps-loop-product-columns: 2; --ps-loop-option-columns: 2; }
}

@media (max-width: 560px) {
  .prestiscene-booking { --ps-loop-spectacle-columns: 1; --ps-loop-formula-columns: 1; --ps-loop-product-columns: 1; --ps-loop-option-columns: 1; }
}

/* V6.4.9 - Dynamic formatted Prestiscène descriptions */
.prestiscene-dynamic-description {
  width: 100%;
}

.prestiscene-dynamic-description p {
  margin: 0 0 .75em;
}

.prestiscene-dynamic-description p:last-child {
  margin-bottom: 0;
}

.prestiscene-dynamic-separator {
  display: block;
  width: 40px;
  max-width: 100%;
  margin: .9em auto;
  border: 0;
  border-top: 1px solid currentColor;
  opacity: .45;
}


/* V6.5.0 - Mode Libre : le modèle Elementor pilote la largeur et la mise en page */
.prestiscene-booking__loop--free {
  width: 100%;
  display: block !important;
}

.prestiscene-booking__loop--free .prestiscene-booking__loop-track {
  display: block !important;
  grid-template-columns: none !important;
  grid-auto-columns: initial !important;
  gap: 0 !important;
  overflow: visible !important;
  padding: 0 !important;
  scroll-snap-type: none !important;
}

.prestiscene-booking__loop--free .prestiscene-booking__loop-track > [data-prestiscene-loop-item] {
  display: block !important;
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  margin: 0 0 var(--ps-loop-gap, 16px) 0 !important;
}

/* Évite que les anciennes cartes Prestiscène imposent une largeur interne aux modèles Elementor. */
.prestiscene-booking__loop-track [data-prestiscene-loop-item] .elementor-widget__width-inherit,
.prestiscene-booking__loop-track [data-prestiscene-loop-item] .elementor-widget__width-auto,
.prestiscene-booking__loop-track [data-prestiscene-loop-item] .elementor-widget__width-initial {
  max-width: 100%;
}


/* V6.5.1 - Correction mode libre réellement actif + neutralisation wrappers uniquement en mode libre */
.prestiscene-booking__loop--free.prestiscene-booking__loop,
.prestiscene-booking__loop--free .prestiscene-booking__loop-track,
.prestiscene-booking__loop--free .prestiscene-booking__formula-grid,
.prestiscene-booking__loop--free .prestiscene-booking__product-grid {
  display: block !important;
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.prestiscene-booking__loop--free .prestiscene-booking__loop-track > * {
  width: 100% !important;
  max-width: none !important;
  flex: 0 0 100% !important;
  grid-column: 1 / -1 !important;
}

/* V7.0.0 - Data Loop Elementor : le plugin ne crée plus de cartes, seulement une grille + les modèles Elementor. */
.prestiscene-booking__loop-item {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  overflow: visible !important;
  color: inherit;
}

.prestiscene-booking__loop-item > .elementor,
.prestiscene-booking__loop-item > .elementor > .e-con,
.prestiscene-booking__loop-item > .elementor > .elementor-section-wrap,
.prestiscene-booking__loop-item [data-elementor-type="container"] {
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
}

.prestiscene-booking__loop-item .elementor-widget-container {
  max-width: none !important;
}

.prestiscene-booking__loop-item input,
.prestiscene-booking__loop-item textarea,
.prestiscene-booking__loop-item select {
  position: static !important;
  left: auto !important;
  top: auto !important;
}

.prestiscene-dynamic-separator {
  display: block;
  text-align: center;
  line-height: 1.2;
  margin: .65em 0;
  border: 0;
  opacity: .7;
}


/* V7.1.0 - Elementor Data Loop hard reset
   The plugin keeps the outer grid only. Any Elementor template rendered inside a
   Prestiscène loop must control its own card spacing, width, borders and inner
   layout. These rules neutralize both the new neutral loop item and any legacy
   formula/template wrappers still present in cached markup. */
.prestiscene-booking__loop-track > [data-prestiscene-loop-item],
.prestiscene-booking__loop-track > .prestiscene-booking__loop-item,
.prestiscene-booking__loop-track > .prestiscene-booking__formula-card,
.prestiscene-booking__loop-track > .prestiscene-booking__template-card,
.ps-elementor-data-item {
  box-sizing: border-box !important;
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  outline: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  overflow: visible !important;
  gap: 0 !important;
}

.prestiscene-booking__loop-track > [data-prestiscene-loop-item] > .elementor,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] > .elementor > .e-con,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] > .elementor > .elementor-section-wrap,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] [data-elementor-type="container"],
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con-inner,
.ps-elementor-data-item > .elementor,
.ps-elementor-data-item [data-elementor-type="container"] {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* Prevent legacy card rules from absolutely positioning quantity inputs when
   they are inside an Elementor model. */
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] input,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] textarea,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] select {
  position: static !important;
  left: auto !important;
  top: auto !important;
}


/* V7.2.0 - Desktop Elementor template width fix
   Some Elementor containers keep desktop-only boxed variables when rendered
   inside a Prestiscène loop item. The loop must keep only the grid; all inner
   template elements are stretched to the grid cell so the model controls the
   visible spacing. */
@media (min-width: 981px) {
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] > .elementor,
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] [data-elementor-type],
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-section-wrap,
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-section,
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-container,
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-column,
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-widget-wrap,
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-widget,
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-widget-container,
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con,
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con-inner {
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    flex-basis: auto !important;
    align-self: stretch !important;
  }

  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con,
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con.e-parent,
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con-full {
    --width: 100% !important;
    --max-width: 100% !important;
    --content-width: 100% !important;
    --container-widget-width: 100% !important;
    --container-widget-flex-grow: 1 !important;
    --container-default-padding-left: 0px !important;
    --container-default-padding-right: 0px !important;
  }

  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-widget__width-inherit,
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-widget__width-auto,
  .prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-widget__width-initial {
    width: 100% !important;
    max-width: 100% !important;
  }
}


/* V8.0.0 - Elementor Data Loop Grid
   The old formula/product grid classes are no longer allowed to define the inner
   template width. The plugin only owns the outer grid; every rendered Elementor
   template keeps 100% of its grid cell and all spacing stays in Elementor. */
.prestiscene-booking__loop-track,
.prestiscene-booking__formula-grid.prestiscene-booking__loop-track,
.prestiscene-booking__product-grid.prestiscene-booking__loop-track {
  box-sizing: border-box !important;
  display: grid !important;
  grid-auto-flow: row !important;
  grid-auto-columns: initial !important;
  overflow: visible !important;
  padding: 0 !important;
  margin: 0 !important;
  scroll-snap-type: none !important;
  gap: var(--ps-loop-gap, 16px) !important;
}

.prestiscene-booking__loop--spectacle .prestiscene-booking__loop-track {
  grid-template-columns: repeat(var(--ps-cols-desktop, var(--ps-loop-spectacle-columns, 4)), minmax(0, 1fr)) !important;
}

.prestiscene-booking__loop--formula .prestiscene-booking__loop-track,
.prestiscene-booking__formula-grid.prestiscene-booking__loop-track {
  grid-template-columns: repeat(var(--ps-cols-desktop, var(--ps-loop-formula-columns, 3)), minmax(0, 1fr)) !important;
}

.prestiscene-booking__loop--product .prestiscene-booking__loop-track,
.prestiscene-booking__product-grid.prestiscene-booking__loop-track {
  grid-template-columns: repeat(var(--ps-cols-desktop, var(--ps-loop-product-columns, 4)), minmax(0, 1fr)) !important;
}

.prestiscene-booking__loop--product-drink .prestiscene-booking__loop-track,
.prestiscene-booking__loop--product-drink .prestiscene-booking__product-grid.is-drinks-grid {
  grid-template-columns: repeat(var(--ps-cols-desktop, var(--ps-loop-product-drink-columns, 4)), minmax(0, 1fr)) !important;
}

.prestiscene-booking__loop--option .prestiscene-booking__loop-track {
  grid-template-columns: repeat(var(--ps-cols-desktop, var(--ps-loop-option-columns, 2)), minmax(0, 1fr)) !important;
}

.prestiscene-booking__loop-track > [data-prestiscene-loop-item],
.prestiscene-booking__loop-track > .prestiscene-booking__loop-item,
.prestiscene-booking__loop-track > .prestiscene-booking__formula-card,
.prestiscene-booking__loop-track > .prestiscene-booking__product-card,
.prestiscene-booking__loop-track > .prestiscene-booking__template-card,
.ps-elementor-data-item {
  box-sizing: border-box !important;
  display: block !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  outline: 0 !important;
  overflow: visible !important;
  flex: none !important;
  scroll-snap-align: none !important;
}

.ps-elementor-data-item > .elementor,
.ps-elementor-data-item [data-elementor-type],
.ps-elementor-data-item .elementor-section-wrap,
.ps-elementor-data-item .elementor-section,
.ps-elementor-data-item .elementor-container,
.ps-elementor-data-item .elementor-column,
.ps-elementor-data-item .elementor-widget-wrap,
.ps-elementor-data-item .elementor-widget,
.ps-elementor-data-item .elementor-widget-container,
.ps-elementor-data-item .elementor-price-table,
.ps-elementor-data-item .e-con,
.ps-elementor-data-item .e-con-inner {
  box-sizing: border-box !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.ps-elementor-data-item .e-con,
.ps-elementor-data-item .e-con.e-parent,
.ps-elementor-data-item .e-con-full {
  --width: 100% !important;
  --max-width: 100% !important;
  --content-width: 100% !important;
  --container-widget-width: 100% !important;
  --container-widget-flex-grow: 1 !important;
}

/* V8.3.0 - Neutralise uniquement le padding PAR DEFAUT du site (réglage global
   Elementor "Padding des conteneurs" dans Réglages du site > Mise en page).
   Ce padding (souvent 64px) est pensé pour des sections pleine largeur ; dans
   une cellule de grille étroite il mange une grande partie de la largeur
   disponible des deux côtés, ce qui se traduit visuellement par une marge
   énorme, symétrique, autour de la carte. On ne touche pas à --padding-left/
   right : un padding explicitement défini par l'utilisateur sur ce conteneur
   précis dans Elementor reste donc intact. */
.ps-elementor-data-item .e-con {
  --container-default-padding-left: 0px !important;
  --container-default-padding-right: 0px !important;
}

.ps-elementor-data-item .elementor-price-table__header,
.ps-elementor-data-item .elementor-price-table__price,
.ps-elementor-data-item .elementor-price-table__features-list,
.ps-elementor-data-item .elementor-price-table__footer {
  width: 100% !important;
  max-width: none !important;
}

@media (max-width: 980px) {
  .prestiscene-booking { --ps-loop-spectacle-columns: 2; --ps-loop-formula-columns: 2; --ps-loop-product-columns: 2; --ps-loop-option-columns: 2; }
}

@media (max-width: 560px) {
  .prestiscene-booking { --ps-loop-spectacle-columns: 1; --ps-loop-formula-columns: 1; --ps-loop-product-columns: 1; --ps-loop-option-columns: 1; }
}

/* V8.1.0 - Correctif largeur desktop Elementor
   On garde la grille Prestiscène, mais chaque cellule et le modèle Elementor
   rendu à l'intérieur prennent toute la largeur disponible. */
.prestiscene-booking__loop--formula .prestiscene-booking__loop-track,
.prestiscene-booking__formula-grid.prestiscene-booking__loop-track {
  justify-items: stretch !important;
  align-items: stretch !important;
}

.prestiscene-booking__loop--formula .prestiscene-booking__loop-track > [data-prestiscene-loop-item],
.prestiscene-booking__loop--formula .prestiscene-booking__loop-track > .ps-elementor-data-item,
.prestiscene-booking__loop--formula .prestiscene-booking__loop-track > .prestiscene-booking__loop-item,
.prestiscene-booking__formula-grid.prestiscene-booking__loop-track > [data-prestiscene-loop-item],
.prestiscene-booking__formula-grid.prestiscene-booking__loop-track > .ps-elementor-data-item,
.prestiscene-booking__formula-grid.prestiscene-booking__loop-track > .prestiscene-booking__loop-item {
  justify-self: stretch !important;
  align-self: stretch !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
}

.prestiscene-booking__loop--formula [data-prestiscene-loop-item] > .elementor,
.prestiscene-booking__loop--formula [data-prestiscene-loop-item] [data-elementor-type="container"],
.prestiscene-booking__loop--formula [data-prestiscene-loop-item] .e-con,
.prestiscene-booking__loop--formula [data-prestiscene-loop-item] .e-con-inner,
.prestiscene-booking__loop--formula [data-prestiscene-loop-item] .elementor-widget,
.prestiscene-booking__loop--formula [data-prestiscene-loop-item] .elementor-widget-container,
.prestiscene-booking__loop--formula [data-prestiscene-loop-item] .elementor-price-table {
  box-sizing: border-box !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
}

.prestiscene-booking__loop--formula [data-prestiscene-loop-item] .e-con,
.prestiscene-booking__loop--formula [data-prestiscene-loop-item] .e-con.e-parent,
.prestiscene-booking__loop--formula [data-prestiscene-loop-item] .e-con-full {
  --width: 100% !important;
  --max-width: 100% !important;
  --content-width: 100% !important;
  --container-widget-width: 100% !important;
  --container-widget-flex-grow: 1 !important;
  --container-default-padding-left: 0px !important;
  --container-default-padding-right: 0px !important;
}


/* V9.0.0 - Design piloté par Elementor
   Le plugin ne force plus la présentation interne des modèles. Ces variables
   sont réglables depuis le widget Elementor. */
.prestiscene-booking {
  --ps-dynamic-separator-margin: 8px;
  --ps-qty-direction: column;
  --ps-qty-gap: 8px;
  --ps-qty-input-width: 86px;
}
.prestiscene-dynamic-description p {
  margin: 0;
}
.prestiscene-dynamic-separator {
  display: block;
  text-align: center;
  line-height: 1;
  margin: var(--ps-dynamic-separator-margin, 8px) 0 !important;
  opacity: .75;
}
.prestiscene-booking__qty-inline {
  display: flex !important;
  flex-direction: var(--ps-qty-direction, column) !important;
  align-items: center !important;
  justify-content: center !important;
  gap: var(--ps-qty-gap, 8px) !important;
  width: 100%;
}
.prestiscene-booking__qty-inline input {
  width: var(--ps-qty-input-width, 86px) !important;
  max-width: 100%;
}
.ps-elementor-data-item .e-con {
  --container-default-padding-left: 0px !important;
  --container-default-padding-right: 0px !important;
}

/* V9.1 - Elementor-first controls */
.prestiscene-booking {
  --ps-dynamic-separator-align: center;
}
.prestiscene-booking .prestiscene-dynamic-separator,
.prestiscene-dynamic-separator {
  text-align: var(--ps-dynamic-separator-align, center) !important;
  width: 100% !important;
  border-top: 0 !important;
}
.prestiscene-booking__formula-category-template,
.prestiscene-booking__category-title {
  box-sizing: border-box;
}
.prestiscene-booking__qty-inline > span:empty {
  display:none !important;
}


/* V10.0.0 - Mode Elementor-first
   Le plugin conserve uniquement l'ossature fonctionnelle (grille, états,
   calendrier). Les cartes, marges, paddings, bordures, typographies et champs
   sont à définir dans les modèles Elementor. */
.prestiscene-booking__loop-track > [data-prestiscene-loop-item],
.prestiscene-booking__loop-track > .prestiscene-booking__loop-item,
.prestiscene-booking__loop-track > .ps-elementor-data-item,
.prestiscene-booking__loop-heading,
.prestiscene-booking__formula-category-template,
.prestiscene-booking__template-card {
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  outline: 0 !important;
}

/* Les contrôles injectés dans les modèles ne doivent plus imposer de mise en page. */
.prestiscene-booking__template-control,
.prestiscene-booking__template-control--quantity_input,
.prestiscene-booking__qty-inline {
  display: contents !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.prestiscene-booking__quantity-input,
.prestiscene-booking__qty-inline input,
.prestiscene-booking input[data-formule-qty] {
  margin: 0 !important;
  border-top: 0 !important;
  box-shadow: none;
}

/* Le séparateur *** reste un vrai élément stylable par Elementor/CSS personnalisé. */
.prestiscene-dynamic-separator {
  display: block;
  margin: var(--ps-dynamic-separator-margin, 8px) 0 !important;
  text-align: var(--ps-dynamic-separator-align, center) !important;
}

/* Les containers Elementor injectés restent pleine largeur, sans padding par défaut global. */
.prestiscene-booking__loop-track .ps-elementor-data-item .e-con,
.prestiscene-booking__loop-track .ps-elementor-data-item .e-con.e-parent,
.prestiscene-booking__loop-track .ps-elementor-data-item .e-con-full {
  --container-default-padding-left: 0px !important;
  --container-default-padding-right: 0px !important;
}

/* v11.0.0 - Native Elementor quantity widget: keep only behavior, let Elementor style it. */
.prestiscene-elementor-quantity{display:flex;box-sizing:border-box;width:100%;}
.prestiscene-elementor-quantity--column{flex-direction:column;}
.prestiscene-elementor-quantity--row{flex-direction:row;align-items:center;}
.prestiscene-elementor-quantity__field{display:inline-flex;box-sizing:border-box;max-width:100%;}
.prestiscene-elementor-quantity input[type="number"].prestiscene-booking__quantity-input{box-sizing:border-box;max-width:100%;}


/* V12 Elementor-native widgets: neutral base only. All appearance should be
   styled from Elementor widget controls/templates. */
.prestiscene-native-text,
.prestiscene-native-image,
.prestiscene-native-checkbox,
.prestiscene-native-radio,
.prestiscene-native-button,
.prestiscene-native-summary,
.prestiscene-elementor-quantity {
  box-sizing: border-box;
}
.prestiscene-native-image img {
  display: block;
  max-width: 100%;
  height: auto;
}
.prestiscene-native-checkbox input,
.prestiscene-native-radio input,
.prestiscene-elementor-quantity input[type="number"] {
  box-sizing: border-box;
}

/* V15 - Elementor Builder controls */
.prestiscene-booking__loop--formula .prestiscene-booking__loop-track{
  align-items: var(--ps-formula-align-items, start);
}
.prestiscene-booking__loop--formula .prestiscene-booking__loop-item,
.prestiscene-booking__loop--formula .prestiscene-booking__loop-item > .elementor,
.prestiscene-booking__loop--formula .prestiscene-booking__loop-item .elementor-widget,
.prestiscene-booking__loop--formula .prestiscene-booking__loop-item .elementor-widget-container{
  height: var(--ps-formula-card-height, auto);
}
.prestiscene-booking__formula-tabs{width:100%;}
.prestiscene-booking__formula-tab-nav{display:flex;gap:var(--ps-loop-gap,16px);flex-wrap:wrap;margin-bottom:var(--ps-loop-gap,16px);}
.prestiscene-booking__formula-tab-button{cursor:pointer;border:1px solid var(--ps-border,#ddd);background:#fff;color:inherit;padding:.75rem 1rem;border-radius:999px;font:inherit;}
.prestiscene-booking__formula-tab-button.is-active{background:var(--ps-primary,#810304);color:#fff;border-color:var(--ps-primary,#810304);}
.prestiscene-booking__formula-tab-panel{display:none;}
.prestiscene-booking__formula-tab-panel.is-active{display:block;}
/* Décalage visuel du niveau 2 (catégorie tarifaire), pour bien montrer
   qu'il s'agit d'un second niveau de choix imbriqué dans le premier
   (type Repas-Spectacle/Spectacle seul). Le décalage ne s'applique QU'à
   la barre d'onglets elle-même, jamais au contenu des panneaux (grille de
   formules en pleine largeur) : appliqué au conteneur entier, il décalait
   aussi les cartes de formules, qui débordaient alors du conteneur.
*/
.prestiscene-booking__formula-tabs--nested > .prestiscene-booking__formula-tab-nav{
  margin-left:1.4rem;
  padding-left:1rem;
  border-left:2px solid var(--ps-border,#e4d7d7);
}
.prestiscene-booking__formula-tabs--nested > .prestiscene-booking__formula-tab-nav:before{
  content:"↳";
  display:inline-flex;
  align-items:center;
  margin-right:.4rem;
  color:var(--ps-muted,#8a7d7d);
  font-size:1.1rem;
}
.prestiscene-booking__formula-tabs--nested .prestiscene-booking__formula-tab-button{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:.15rem;
  padding:.55rem .85rem;
  font-size:.92rem;
  text-align:left;
  border-radius:14px;
}
.prestiscene-booking__formula-tabs--nested .prestiscene-booking__formula-tab-button strong{
  font-size:.95rem;
}
.prestiscene-booking__formula-tabs--nested .prestiscene-booking__formula-tab-button .prestiscene-booking__formula-category-description,
.prestiscene-booking__formula-tabs--nested .prestiscene-booking__formula-tab-button .prestiscene-booking__formula-category-price{
  display:block;
  font-size:.78rem;
  font-weight:400;
  opacity:.8;
  white-space:normal;
}
.prestiscene-booking__with-summary--bottom{display:block;}
.prestiscene-booking__with-summary--bottom .prestiscene-booking__side-summary{margin-top:var(--ps-loop-gap,16px);position:static;width:100%;}
.prestiscene-booking__with-summary--none{display:block;}
.prestiscene-dynamic-separator{display:block;text-align:var(--ps-dynamic-separator-align,center);margin-top:var(--ps-dynamic-separator-margin-before,var(--ps-dynamic-separator-margin,8px));margin-bottom:var(--ps-dynamic-separator-margin-after,var(--ps-dynamic-separator-margin,8px));}
.prestiscene-dynamic-break{display:block;height:calc(var(--ps-dynamic-separator-margin-before,var(--ps-dynamic-separator-margin,8px)) + var(--ps-dynamic-separator-margin-after,var(--ps-dynamic-separator-margin,8px)));}
.prestiscene-booking__step-template{margin-bottom:var(--ps-loop-gap,16px);}

/* V17 - Elementor Query Loop foundation. Keep this intentionally minimal:
   Elementor templates control item design; the plugin only controls the outer grid. */
.prestiscene-query-loop__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  width: 100%;
}
.prestiscene-query-loop__item {
  min-width: 0;
  width: 100%;
}
.prestiscene-query-loop__item > .elementor,
.prestiscene-query-loop__item .elementor,
.prestiscene-query-loop__item .e-con,
.prestiscene-query-loop__item .elementor-widget {
  width: 100%;
  max-width: none;
}
@media (max-width: 1024px) {
  .prestiscene-query-loop__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .prestiscene-query-loop__grid { grid-template-columns: 1fr; }
}

/* V18 - Query context + tabs. Minimal functional CSS only; Elementor controls layout/design. */
.prestiscene-query-loop__grid,
.prestiscene-query-tabs__panel-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  width: 100%;
  min-width: 0;
}
.prestiscene-query-loop__item,
.prestiscene-query-tabs__item {
  width: 100%;
  min-width: 0;
  max-width: none;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.prestiscene-query-loop__item > .elementor,
.prestiscene-query-tabs__item > .elementor,
.prestiscene-query-loop__item .elementor,
.prestiscene-query-tabs__item .elementor,
.prestiscene-query-loop__item .e-con,
.prestiscene-query-tabs__item .e-con {
  width: 100%;
  max-width: none;
  min-width: 0;
}
.prestiscene-query-tabs__nav {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 20px;
}
.prestiscene-query-tabs__tab {
  cursor: pointer;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  padding: 0;
}
.prestiscene-query-tabs__panel { display: none; }
.prestiscene-query-tabs__panel.is-active { display: block; }
@media (max-width: 1024px) {
  .prestiscene-query-loop__grid,
  .prestiscene-query-tabs__panel-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .prestiscene-query-loop__grid,
  .prestiscene-query-tabs__panel-grid { grid-template-columns: 1fr; }
}


/* V18.1.0 - Respect du layout interne Elementor dans les modèles répétés
   Les anciennes sécurités de largeur forçaient tous les widgets internes à 100%,
   ce qui annulait les containers en ligne d'Elementor. On ne contraint plus que
   la cellule de boucle ; à l'intérieur, les widgets reprennent leurs variables
   Elementor (ligne/colonne, largeur, grow, basis...). */
.prestiscene-query-loop__item > .elementor,
.prestiscene-query-tabs__item > .elementor,
.ps-elementor-data-item > .elementor,
.prestiscene-query-loop__item [data-elementor-type],
.prestiscene-query-tabs__item [data-elementor-type],
.ps-elementor-data-item [data-elementor-type] {
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
}

.prestiscene-query-loop__item .e-con > .elementor-element,
.prestiscene-query-tabs__item .e-con > .elementor-element,
.ps-elementor-data-item .e-con > .elementor-element,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con > .elementor-element {
  width: var(--container-widget-width, auto) !important;
  max-width: var(--container-widget-width, none) !important;
  flex-grow: var(--container-widget-flex-grow, 0) !important;
  flex-shrink: var(--container-widget-flex-shrink, 1) !important;
  flex-basis: var(--flex-basis, auto) !important;
  align-self: var(--align-self, initial) !important;
}

.prestiscene-query-loop__item .e-con > .elementor-widget__width-inherit,
.prestiscene-query-tabs__item .e-con > .elementor-widget__width-inherit,
.ps-elementor-data-item .e-con > .elementor-widget__width-inherit,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con > .elementor-widget__width-inherit {
  width: var(--container-widget-width, 100%) !important;
  max-width: 100% !important;
}

.prestiscene-query-loop__item .e-con > .elementor-widget__width-auto,
.prestiscene-query-tabs__item .e-con > .elementor-widget__width-auto,
.ps-elementor-data-item .e-con > .elementor-widget__width-auto,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con > .elementor-widget__width-auto {
  width: auto !important;
  max-width: 100% !important;
}

/* Ne pas forcer la direction interne : Elementor garde --flex-direction */
.prestiscene-query-loop__item .e-con,
.prestiscene-query-tabs__item .e-con,
.ps-elementor-data-item .e-con,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con {
  flex-direction: var(--flex-direction) !important;
  justify-content: var(--justify-content) !important;
  align-items: var(--align-items) !important;
  gap: var(--gap, var(--row-gap) var(--column-gap)) !important;
}


/* V18.1.2 - Elementor inner layout freedom
   Earlier compatibility resets forced all nested Elementor containers/widgets to
   width:100% and align-self:stretch. That prevented Elementor row/inline layouts
   inside a Prestiscène card. Keep only the outer loop item full width; inner
   Elementor elements return to their own Elementor-defined sizing. */
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] > .elementor,
.ps-elementor-data-item > .elementor {
  box-sizing: border-box !important;
  display: block !important;
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-section,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-container,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-column,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-widget-wrap,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-widget,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-widget-container,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con-inner,
.ps-elementor-data-item .elementor-section,
.ps-elementor-data-item .elementor-container,
.ps-elementor-data-item .elementor-column,
.ps-elementor-data-item .elementor-widget-wrap,
.ps-elementor-data-item .elementor-widget,
.ps-elementor-data-item .elementor-widget-container,
.ps-elementor-data-item .e-con,
.ps-elementor-data-item .e-con-inner {
  width: revert !important;
  max-width: revert !important;
  min-width: 0 !important;
  flex-basis: revert !important;
  align-self: revert !important;
}

.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con.e-parent,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .e-con-full,
.ps-elementor-data-item .e-con,
.ps-elementor-data-item .e-con.e-parent,
.ps-elementor-data-item .e-con-full {
  --width: revert !important;
  --max-width: revert !important;
  --content-width: revert !important;
  --container-widget-width: revert !important;
  --container-widget-flex-grow: revert !important;
  --container-default-padding-left: 0px !important;
  --container-default-padding-right: 0px !important;
}

.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-widget__width-inherit,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-widget__width-auto,
.prestiscene-booking__loop-track > [data-prestiscene-loop-item] .elementor-widget__width-initial,
.ps-elementor-data-item .elementor-widget__width-inherit,
.ps-elementor-data-item .elementor-widget__width-auto,
.ps-elementor-data-item .elementor-widget__width-initial {
  width: var(--container-widget-width, auto) !important;
  max-width: 100% !important;
}

/* v18.2.1 - Blocs panier Elementor paramétrables */
.prestiscene-booking__block-title { margin: 0 0 10px; }
.prestiscene-booking__block-text { margin: 0 0 18px; }
.prestiscene-booking__block-text > :last-child { margin-bottom: 0; }

.prestiscene-booking__loop--grid .prestiscene-booking__loop-track,
.prestiscene-booking__loop--tabs .prestiscene-booking__loop-track,
.prestiscene-booking__loop--accordion .prestiscene-booking__loop-track {
  display: grid !important;
  grid-template-columns: repeat(var(--ps-cols-desktop, 3), minmax(0, 1fr)) !important;
  gap: 18px !important;
}
.prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
  display: grid !important;
  grid-auto-flow: column !important;
  grid-auto-columns: calc((100% - (var(--ps-cols-desktop, 3) - 1) * 18px) / var(--ps-cols-desktop, 3)) !important;
  grid-template-columns: none !important;
  gap: 18px !important;
}
@media (max-width: 1024px) {
  .prestiscene-booking__loop--grid .prestiscene-booking__loop-track,
  .prestiscene-booking__loop--tabs .prestiscene-booking__loop-track,
  .prestiscene-booking__loop--accordion .prestiscene-booking__loop-track {
    grid-template-columns: repeat(var(--ps-cols-tablet, 2), minmax(0, 1fr)) !important;
  }
  .prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
    grid-auto-columns: calc((100% - (var(--ps-cols-tablet, 2) - 1) * 18px) / var(--ps-cols-tablet, 2)) !important;
  }
}
@media (max-width: 767px) {
  .prestiscene-booking__loop--grid .prestiscene-booking__loop-track,
  .prestiscene-booking__loop--tabs .prestiscene-booking__loop-track,
  .prestiscene-booking__loop--accordion .prestiscene-booking__loop-track {
    grid-template-columns: repeat(var(--ps-cols-mobile, 1), minmax(0, 1fr)) !important;
  }
  .prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
    grid-auto-columns: calc((100% - (var(--ps-cols-mobile, 1) - 1) * 18px) / var(--ps-cols-mobile, 1)) !important;
  }
}

.prestiscene-booking__option-accordion,
.prestiscene-booking__formula-accordion { display: flex; flex-direction: column; gap: 12px; }
.prestiscene-booking__option-accordion-title,
.prestiscene-booking__formula-accordion-title {
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 16px 18px; border: 1px solid var(--ps-border, #ddd); border-radius: 14px; background: #fff; cursor: pointer;
  font-weight: 700; text-align: left;
}
.prestiscene-booking__option-accordion-panel,
.prestiscene-booking__formula-tab-panel { padding-top: 14px; }
.prestiscene-booking__accordion-plus { font-size: 22px; line-height: 1; }

.prestiscene-booking__calendar-compact {
  width: 100%;
  max-width: 380px;
  margin: 0 auto;
}
.prestiscene-booking__calendar-compact .datepicker-inline,
.prestiscene-booking__calendar-compact .datepicker-days,
.prestiscene-booking__calendar-compact .table-condensed {
  width: 100%;
}
.prestiscene-booking__calendar-compact table.table-condensed {
  display: table !important;
  width: 100% !important;
  table-layout: fixed !important;
  border-collapse: separate !important;
  border-spacing: 8px !important;
  background: transparent;
  border: 0;
}
.prestiscene-booking__calendar-compact thead{display: table-header-group !important;}
.prestiscene-booking__calendar-compact tbody{display: table-row-group !important;}
.prestiscene-booking__calendar-compact tfoot{display: table-footer-group !important;}
.prestiscene-booking__calendar-compact tr{display: table-row !important;}
.prestiscene-booking__calendar-compact th,
.prestiscene-booking__calendar-compact td {
  display: table-cell !important;
  width: auto !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
  border: 0 !important;
  text-align: center;
  vertical-align: middle;
  padding: 0 !important;
}
.prestiscene-booking__calendar-compact .prev,
.prestiscene-booking__calendar-compact .next {
  cursor: pointer;
  font-size: 22px;
  line-height: 1;
  color: var(--ps-text, #222);
}
.prestiscene-booking__calendar-compact .datepicker-switch {
  font-weight: 700;
  text-transform: lowercase;
  letter-spacing: .01em;
  padding: 0 0 8px !important;
}
.prestiscene-booking__calendar-compact .dow {
  font-size: 12px;
  font-weight: 700;
  color: var(--ps-muted, #777);
  padding-bottom: 4px !important;
  text-transform: lowercase;
}
.prestiscene-booking__calendar-compact .day {
  width: 38px;
  height: 38px;
  border-radius: 999px;
  background: var(--ps-calendar-normal, #b51f2a) !important;
  color: #fff;
  font-weight: 700;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.prestiscene-booking__calendar-compact .day:hover,
.prestiscene-booking__calendar-compact .day:focus {
  background: var(--ps-calendar-hover, var(--ps-calendar-normal, #b51f2a)) !important;
  transform: translateY(-1px);
  box-shadow: 0 8px 18px rgba(0,0,0,.14);
  outline: none;
}
.prestiscene-booking__calendar-compact .day.disabled,
.prestiscene-booking__calendar-compact .day.is-disabled {
  background: var(--ps-calendar-inactive, #ededed) !important;
  color: #9b9b9b !important;
  cursor: default;
  box-shadow: none;
  transform: none;
  font-weight: 600;
}
.prestiscene-booking__calendar-compact .day.old,
.prestiscene-booking__calendar-compact .day.new {
  opacity: .85;
}
.prestiscene-booking__calendar-compact .day.active {
  background: var(--ps-calendar-active, var(--ps-calendar-normal, #b51f2a)) !important;
  box-shadow: 0 0 0 3px rgba(181,31,42,.22);
  outline: 2px solid #fff;
}
@media (max-width: 480px) {
  .prestiscene-booking__calendar-compact { max-width: 100%; }
  .prestiscene-booking__calendar-compact .table-condensed { border-spacing: 5px !important; }
  .prestiscene-booking__calendar-compact .day { width: 34px; height: 34px; font-size: 13px; }
}

/* V18.2.8 — restauration liste dates v18.1 + états stylables Elementor */
.prestiscene-booking__date-list {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)) !important;
  gap: 0.75rem !important;
  margin: 1.25rem 0 !important;
}
.prestiscene-booking__date-choice {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 0.4rem !important;
  width: 100% !important;
  padding: 1rem !important;
  border: 1px solid rgba(0,0,0,.12);
  border-radius: 14px;
  background: #fff;
  text-align: left;
  font: inherit;
  cursor: pointer;
  transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease, background-color .2s ease, color .2s ease;
}
.prestiscene-booking__date-choice:hover:not(.is-disabled) {
  border-color: var(--ps-primary);
  box-shadow: 0 6px 20px rgba(0,0,0,0.08);
  transform: translateY(-1px);
}
.prestiscene-booking__date-choice-main {
  color: var(--ps-primary);
  font-weight: 700;
  line-height: 1.25;
}
.prestiscene-booking__date-choice-status {
  color: var(--ps-muted);
  font-size: 0.9rem;
}
.prestiscene-booking__date-choice.is-selected,
.prestiscene-booking .events-container > .event.is-selected {
  border-color: var(--ps-primary);
  box-shadow: 0 0 0 2px rgba(129,3,4,.15);
}


/* v18.2.9 - colonnes Elementor réellement prises en compte */
@media (max-width: 1024px) {
  .prestiscene-booking__loop .prestiscene-booking__loop-track {
    grid-template-columns: repeat(var(--ps-cols-tablet, 2), minmax(0, 1fr)) !important;
  }
  .prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
    grid-template-columns: none !important;
    grid-auto-columns: calc((100% - (var(--ps-cols-tablet, 2) - 1) * 18px) / var(--ps-cols-tablet, 2)) !important;
  }
}
@media (max-width: 767px) {
  .prestiscene-booking__loop .prestiscene-booking__loop-track {
    grid-template-columns: repeat(var(--ps-cols-mobile, 1), minmax(0, 1fr)) !important;
  }
  .prestiscene-booking__loop--carousel .prestiscene-booking__loop-track {
    grid-template-columns: none !important;
    grid-auto-columns: calc((100% - (var(--ps-cols-mobile, 1) - 1) * 18px) / var(--ps-cols-mobile, 1)) !important;
  }
}

/* v18.2.9 - variables de style calendrier pilotées par Elementor */
.prestiscene-booking__calendar-compact .datepicker-switch,
.prestiscene-booking__calendar-compact .prev,
.prestiscene-booking__calendar-compact .next { color: var(--ps-calendar-title-color, var(--ps-text, #222)) !important; }
.prestiscene-booking__calendar-compact .day:not(.disabled):not(.is-disabled):not(.active) { color: var(--ps-calendar-day-color, #fff) !important; }
.prestiscene-booking__calendar-compact .day:not(.disabled):not(.is-disabled):hover { color: var(--ps-calendar-hover-color, var(--ps-calendar-day-color, #fff)) !important; }
.prestiscene-booking__calendar-compact .day.active { color: var(--ps-calendar-active-color, var(--ps-calendar-day-color, #fff)) !important; }
.prestiscene-booking__calendar-compact .day.disabled,
.prestiscene-booking__calendar-compact .day.is-disabled { color: var(--ps-calendar-inactive-color, #9b9b9b) !important; }

/* v19.0.0 - Navigation par étapes pour widgets séparés */
.prestiscene-booking[data-prestiscene-flow-locked="1"] .prestiscene-booking__shell {
  opacity: .72;
}
.prestiscene-booking__notice--locked {
  border-style: dashed;
}

/* Prestiscène V19.1 - navigation avancée / progression */
.prestiscene-booking[data-prestiscene-flow-page-hidden="1"]{display:none!important;}
.prestiscene-booking[data-prestiscene-flow-transition="fade"]{animation:prestisceneFlowFade .22s ease both;}
.prestiscene-booking[data-prestiscene-flow-transition="slide"]{animation:prestisceneFlowSlide .26s ease both;}
.prestiscene-booking[data-prestiscene-flow-transition="zoom"]{animation:prestisceneFlowZoom .22s ease both;}
@keyframes prestisceneFlowFade{from{opacity:.25}to{opacity:1}}
@keyframes prestisceneFlowSlide{from{opacity:.25;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes prestisceneFlowZoom{from{opacity:.25;transform:scale(.98)}to{opacity:1;transform:scale(1)}}
.prestiscene-booking-progress{--ps-progress-active:#b92323;--ps-progress-active-bg:rgba(185,35,35,.10);--ps-progress-active-border:#b92323;--ps-progress-done:#2f8f46;--ps-progress-done-bg:rgba(47,143,70,.10);--ps-progress-done-border:#2f8f46;--ps-progress-inactive:#8f8f8f;--ps-progress-inactive-bg:transparent;--ps-progress-inactive-border:#cfcfcf;--ps-progress-bar-bg:rgba(0,0,0,.1);--ps-progress-bar-active:var(--ps-progress-active);--ps-progress-bar-height:6px;--ps-progress-step-radius:10px;margin:0 0 24px;}
.prestiscene-booking-progress__bar{height:var(--ps-progress-bar-height);background:var(--ps-progress-bar-bg);border-radius:999px;overflow:hidden;margin-bottom:14px;}
.prestiscene-booking-progress__bar span{display:block;height:100%;background:var(--ps-progress-bar-active);border-radius:999px;transition:width .25s ease;}
.prestiscene-booking-progress__steps{display:flex;gap:10px;align-items:stretch;justify-content:space-between;}
.prestiscene-booking-progress__step{appearance:none;border:1px solid var(--ps-progress-inactive-border);background:var(--ps-progress-inactive-bg);color:var(--ps-progress-inactive);display:flex;gap:8px;align-items:center;justify-content:center;flex:1;cursor:pointer;text-align:center;padding:8px 6px;border-radius:var(--ps-progress-step-radius);transition:background .2s ease,color .2s ease,border-color .2s ease,transform .2s ease;}
.prestiscene-booking-progress__step.is-active{color:var(--ps-progress-active);font-weight:700;background:var(--ps-progress-active-bg);border-color:var(--ps-progress-active-border);}
.prestiscene-booking-progress__step.is-done{color:var(--ps-progress-done);background:var(--ps-progress-done-bg);border-color:var(--ps-progress-done-border);}
.prestiscene-booking-progress__step.is-locked{cursor:not-allowed;opacity:.55;}
.prestiscene-booking-progress__num{min-width:28px;height:28px;border-radius:999px;border:1px solid currentColor;display:inline-flex;align-items:center;justify-content:center;font-size:.9em;background:transparent;}
.prestiscene-booking-progress__inner--vertical .prestiscene-booking-progress__steps,.prestiscene-booking-progress__inner--timeline .prestiscene-booking-progress__steps{display:block;}
.prestiscene-booking-progress__inner--vertical .prestiscene-booking-progress__step,.prestiscene-booking-progress__inner--timeline .prestiscene-booking-progress__step{justify-content:flex-start;width:100%;margin:4px 0;}
.prestiscene-booking-progress__inner--pills .prestiscene-booking-progress__step{border:1px solid currentColor;border-radius:999px;}
@media(max-width:767px){.prestiscene-booking-progress__steps{gap:4px}.prestiscene-booking-progress__label{display:none}.prestiscene-booking-progress__step{padding:5px}.prestiscene-booking-progress__num{min-width:26px;height:26px}}

/* V19.1.3 - Navigation fluide par boutons dans les widgets séparés */
.prestiscene-booking__flow-actions {
  display: flex;
  gap: 12px;
  justify-content: space-between;
  align-items: center;
  margin-top: 24px;
  flex-wrap: wrap;
}
.prestiscene-booking__flow-actions .prestiscene-booking__button {
  cursor: pointer;
}
.prestiscene-booking__flow-actions .prestiscene-booking__button[disabled] {
  opacity: .45;
  cursor: not-allowed;
}
.prestiscene-booking__notice--flow {
  margin-top: 16px;
}
@media (max-width: 767px) {
  .prestiscene-booking__flow-actions {
    flex-direction: column-reverse;
    align-items: stretch;
  }
  .prestiscene-booking__flow-actions .prestiscene-booking__button {
    width: 100%;
  }
}

/* V19.1.5 - Récapitulatif toujours visible / sticky */
.prestiscene-booking[data-prestiscene-summary-always-visible="1"]{
  display:block!important;
}
@media (min-width:1025px){
  .prestiscene-booking[data-prestiscene-summary-sticky-desktop="1"] .prestiscene-booking__shell{
    position:sticky;
    top:var(--ps-summary-sticky-offset,24px);
    z-index:5;
  }
}
@media (min-width:768px) and (max-width:1024px){
  .prestiscene-booking[data-prestiscene-summary-sticky-tablet="1"] .prestiscene-booking__shell{
    position:sticky;
    top:var(--ps-summary-sticky-offset,24px);
    z-index:5;
  }
}
@media (max-width:767px){
  .prestiscene-booking[data-prestiscene-summary-hide-mobile="1"]{
    display:none!important;
  }
}

/* V20 Sprint 3 - Infos-bulles configurables */
.prestiscene-booking__tooltip-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  margin-left: .35rem;
  vertical-align: middle;
  z-index: var(--ps-tooltip-z-index, 99999);
}
.prestiscene-booking__info-tooltip {
  width: 1.45em;
  height: 1.45em;
  min-width: 1.45em;
  min-height: 1.45em;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid currentColor;
  border-radius: 999px;
  background: #fff;
  color: var(--prestiscene-primary, #8b1e3f);
  font-size: .82em;
  line-height: 1;
  cursor: pointer;
  padding: 0;
}
.prestiscene-booking__tooltip-popover {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 10px);
  transform: translateX(-50%) translateY(4px);
  width: max-content;
  max-width: min(280px, 78vw);
  padding: .75rem .9rem;
  border-radius: 10px;
  background: #222;
  color: #fff;
  box-shadow: 0 12px 30px rgba(0,0,0,.22);
  opacity: 0;
  pointer-events: none;
  visibility: hidden;
  transition: opacity .18s ease, transform .18s ease, visibility .18s ease;
  font-size: .9rem;
  line-height: 1.35;
  text-align: left;
  white-space: normal;
  z-index: var(--ps-tooltip-z-index, 99999);
}
.prestiscene-booking__tooltip-popover:after {
  content: "";
  position: absolute;
  left: 50%;
  top: 100%;
  transform: translateX(-50%);
  border: 7px solid transparent;
  border-top-color: #222;
}
.prestiscene-booking__tooltip-wrap:hover .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap:focus-within .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap.is-open .prestiscene-booking__tooltip-popover {
  opacity: 1;
  pointer-events: auto;
  visibility: visible;
  transform: translateX(-50%) translateY(0);
}
.prestiscene-booking__tooltip-popover p { margin: 0 0 .45em; }
.prestiscene-booking__tooltip-popover p:last-child { margin-bottom: 0; }
.prestiscene-booking__loop-item .prestiscene-booking__tooltip-wrap { cursor: default; }

/* V20 Sprint 3 - Widget navigation autonome */
.prestiscene-booking-navigation__inner {
  display: flex;
  gap: 1rem;
  align-items: center;
  flex-wrap: wrap;
}
.prestiscene-booking-navigation__inner--left { justify-content: flex-start; }
.prestiscene-booking-navigation__inner--center { justify-content: center; }
.prestiscene-booking-navigation__inner--right { justify-content: flex-end; }
.prestiscene-booking-navigation__inner--space-between { justify-content: space-between; }
.prestiscene-booking-navigation button[disabled] { opacity: .45; cursor: not-allowed; }

/* V20 Sprint 3.1 - Infos-bulles personnalisables */
.prestiscene-booking__tooltip-popover {
  border: 1px solid transparent;
}
.prestiscene-booking__tooltip-title {
  display: block;
  font-weight: 700;
  margin-bottom: .25rem;
}
.prestiscene-booking__tooltip-date {
  display: block;
  opacity: .86;
  margin-bottom: .35rem;
}
.prestiscene-booking__tooltip-description {
  margin: .35rem 0 0;
}
.prestiscene-booking__tooltip-wrap--bottom .prestiscene-booking__tooltip-popover {
  top: calc(100% + 10px);
  bottom: auto;
  transform: translateX(-50%) translateY(-4px);
}
.prestiscene-booking__tooltip-wrap--bottom .prestiscene-booking__tooltip-popover:after {
  top: auto;
  bottom: 100%;
  border-top-color: transparent !important;
  border-bottom-color: inherit;
}
.prestiscene-booking__tooltip-wrap--left .prestiscene-booking__tooltip-popover {
  left: auto;
  right: calc(100% + 10px);
  bottom: 50%;
  transform: translateY(50%) translateX(4px);
}
.prestiscene-booking__tooltip-wrap--left .prestiscene-booking__tooltip-popover:after {
  left: 100%;
  top: 50%;
  transform: translateY(-50%);
  border-top-color: transparent !important;
  border-left-color: inherit;
}
.prestiscene-booking__tooltip-wrap--right .prestiscene-booking__tooltip-popover {
  left: calc(100% + 10px);
  bottom: 50%;
  transform: translateY(50%) translateX(-4px);
}
.prestiscene-booking__tooltip-wrap--right .prestiscene-booking__tooltip-popover:after {
  left: auto;
  right: 100%;
  top: 50%;
  transform: translateY(-50%);
  border-top-color: transparent !important;
  border-right-color: inherit;
}
.prestiscene-booking__tooltip-wrap--overlay {
  position: static;
}
.prestiscene-booking__loop-item,
.prestiscene-query-loop__item {
  position: relative;
}
.prestiscene-booking__tooltip-wrap--overlay .prestiscene-booking__info-tooltip {
  position: absolute;
  right: .75rem;
  top: .75rem;
  z-index: calc(var(--ps-tooltip-z-index, 99999) - 1);
}
.prestiscene-booking__tooltip-wrap--overlay .prestiscene-booking__tooltip-popover {
  left: .75rem;
  right: .75rem;
  top: auto;
  bottom: .75rem;
  width: auto;
  max-width: none;
  transform: translateY(8px);
}
.prestiscene-booking__tooltip-wrap--overlay .prestiscene-booking__tooltip-popover:after {
  display: none;
}
.prestiscene-booking__tooltip-wrap--bottom:hover .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap--bottom:focus-within .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap--bottom.is-open .prestiscene-booking__tooltip-popover {
  transform: translateX(-50%) translateY(0);
}
.prestiscene-booking__tooltip-wrap--left:hover .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap--left:focus-within .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap--left.is-open .prestiscene-booking__tooltip-popover {
  transform: translateY(50%) translateX(0);
}
.prestiscene-booking__tooltip-wrap--right:hover .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap--right:focus-within .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap--right.is-open .prestiscene-booking__tooltip-popover {
  transform: translateY(50%) translateX(0);
}
.prestiscene-booking__tooltip-wrap--overlay:hover .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap--overlay:focus-within .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap--overlay.is-open .prestiscene-booking__tooltip-popover {
  transform: translateY(0);
}

/* V20 Sprint 3.2 - Tooltip engine réutilisable : déclenchement sur toute la tuile */
.prestiscene-booking__loop-item,
.prestiscene-query-loop__item {
  overflow: visible;
}
.prestiscene-booking__tooltip-wrap--trigger-card {
  position: static;
  margin-left: 0;
}
.prestiscene-booking__tooltip-wrap--trigger-card .prestiscene-booking__info-tooltip {
  position: absolute;
  inset: 0;
  width: auto;
  height: auto;
  min-width: 0;
  min-height: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: transparent;
  font-size: 0;
  opacity: 0;
  z-index: 4;
}
.prestiscene-booking__tooltip-wrap--trigger-card .prestiscene-booking__tooltip-popover {
  z-index: var(--ps-tooltip-z-index, 99999);
}
.prestiscene-booking__loop-item:hover .prestiscene-booking__tooltip-wrap--trigger-card .prestiscene-booking__tooltip-popover,
.prestiscene-query-loop__item:hover .prestiscene-booking__tooltip-wrap--trigger-card .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap--trigger-card:focus-within .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap--trigger-card.is-open .prestiscene-booking__tooltip-popover {
  opacity: 1;
  pointer-events: auto;
  visibility: visible;
}
.prestiscene-booking__loop-item:hover .prestiscene-booking__tooltip-wrap--trigger-card.prestiscene-booking__tooltip-wrap--top .prestiscene-booking__tooltip-popover,
.prestiscene-query-loop__item:hover .prestiscene-booking__tooltip-wrap--trigger-card.prestiscene-booking__tooltip-wrap--top .prestiscene-booking__tooltip-popover {
  transform: translateX(-50%) translateY(0);
}
.prestiscene-booking__loop-item:hover .prestiscene-booking__tooltip-wrap--trigger-card.prestiscene-booking__tooltip-wrap--bottom .prestiscene-booking__tooltip-popover,
.prestiscene-query-loop__item:hover .prestiscene-booking__tooltip-wrap--trigger-card.prestiscene-booking__tooltip-wrap--bottom .prestiscene-booking__tooltip-popover {
  transform: translateX(-50%) translateY(0);
}
.prestiscene-booking__tooltip-wrap--trigger-card.prestiscene-booking__tooltip-wrap--overlay .prestiscene-booking__tooltip-popover {
  left: .75rem;
  right: .75rem;
  bottom: .75rem;
  width: auto;
  max-width: none;
}


/* V20.0.6 - Position personnalisable de l'icône d'info-bulle */
.prestiscene-booking__loop-item,
.prestiscene-query-loop__item {
  position: relative;
  overflow: visible;
}
.prestiscene-booking__tooltip-wrap:not(.prestiscene-booking__tooltip-wrap--trigger-card):not(.prestiscene-booking__tooltip-wrap--icon-inline) {
  position: absolute;
  margin-left: 0;
  z-index: var(--ps-tooltip-z-index, 99999);
  --ps-tooltip-icon-offset-x: 0px;
  --ps-tooltip-icon-offset-y: 0px;
}
.prestiscene-booking__tooltip-wrap--icon-inline {
  position: relative;
}
.prestiscene-booking__tooltip-wrap--icon-top-left {
  top: calc(.75rem + var(--ps-tooltip-icon-offset-y, 0px));
  left: calc(.75rem + var(--ps-tooltip-icon-offset-x, 0px));
}
.prestiscene-booking__tooltip-wrap--icon-top-center {
  top: calc(.75rem + var(--ps-tooltip-icon-offset-y, 0px));
  left: calc(50% + var(--ps-tooltip-icon-offset-x, 0px));
  transform: translateX(-50%);
}
.prestiscene-booking__tooltip-wrap--icon-top-right {
  top: calc(.75rem + var(--ps-tooltip-icon-offset-y, 0px));
  right: calc(.75rem - var(--ps-tooltip-icon-offset-x, 0px));
}
.prestiscene-booking__tooltip-wrap--icon-middle-left {
  top: calc(50% + var(--ps-tooltip-icon-offset-y, 0px));
  left: calc(.75rem + var(--ps-tooltip-icon-offset-x, 0px));
  transform: translateY(-50%);
}
.prestiscene-booking__tooltip-wrap--icon-middle-center {
  top: calc(50% + var(--ps-tooltip-icon-offset-y, 0px));
  left: calc(50% + var(--ps-tooltip-icon-offset-x, 0px));
  transform: translate(-50%, -50%);
}
.prestiscene-booking__tooltip-wrap--icon-middle-right {
  top: calc(50% + var(--ps-tooltip-icon-offset-y, 0px));
  right: calc(.75rem - var(--ps-tooltip-icon-offset-x, 0px));
  transform: translateY(-50%);
}
.prestiscene-booking__tooltip-wrap--icon-bottom-left {
  bottom: calc(.75rem - var(--ps-tooltip-icon-offset-y, 0px));
  left: calc(.75rem + var(--ps-tooltip-icon-offset-x, 0px));
}
.prestiscene-booking__tooltip-wrap--icon-bottom-center {
  bottom: calc(.75rem - var(--ps-tooltip-icon-offset-y, 0px));
  left: calc(50% + var(--ps-tooltip-icon-offset-x, 0px));
  transform: translateX(-50%);
}
.prestiscene-booking__tooltip-wrap--icon-bottom-right {
  bottom: calc(.75rem - var(--ps-tooltip-icon-offset-y, 0px));
  right: calc(.75rem - var(--ps-tooltip-icon-offset-x, 0px));
}
.prestiscene-booking__tooltip-wrap--trigger-card.prestiscene-booking__tooltip-wrap--icon-inline,
.prestiscene-booking__tooltip-wrap--trigger-card[class*="prestiscene-booking__tooltip-wrap--icon-"] {
  position: static;
}


/* V20.0.9 - Infos-bulles : z-index élevé et largeur pilotable */
.prestiscene-booking__tooltip-wrap,
.prestiscene-booking__tooltip-popover {
  z-index: var(--ps-tooltip-z-index, 99999);
}
.prestiscene-booking__tooltip-wrap .prestiscene-booking__info-tooltip {
  z-index: calc(var(--ps-tooltip-z-index, 99999) - 1);
}
.prestiscene-booking__tooltip-popover {
  width: var(--ps-tooltip-width, max-content);
}
.prestiscene-booking__tooltip-wrap--overlay .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap--trigger-card.prestiscene-booking__tooltip-wrap--overlay .prestiscene-booking__tooltip-popover {
  width: var(--ps-tooltip-width, auto);
}

/* V20.1.0 — liste des dates : modèle Elementor + colonnes paramétrables */
.prestiscene-booking__date-list {
  grid-template-columns: repeat(var(--ps-date-list-columns, 1), minmax(0, 1fr)) !important;
}
.prestiscene-booking__loop-item--date {
  width: 100%;
  cursor: pointer;
}
.prestiscene-booking__loop-item--date.is-disabled {
  cursor: not-allowed;
  opacity: .55;
}
@media (max-width: 1024px) {
  .prestiscene-booking__date-list {
    grid-template-columns: repeat(var(--ps-date-list-columns-tablet, var(--ps-date-list-columns, 1)), minmax(0, 1fr)) !important;
  }
}
@media (max-width: 767px) {
  .prestiscene-booking__date-list {
    grid-template-columns: repeat(var(--ps-date-list-columns-mobile, 1), minmax(0, 1fr)) !important;
  }
}

/* V20.1.1 — restauration apparence liste dates initiale avec côté grisé pour complet/indisponible */
.prestiscene-booking__date-list {
  align-items: stretch;
}
.prestiscene-booking__date-choice {
  position: relative !important;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) auto !important;
  align-items: stretch !important;
  gap: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  min-height: 74px;
  background: var(--ps-date-list-bg, #fff) !important;
}
.prestiscene-booking__date-choice-main {
  display: flex !important;
  align-items: center !important;
  padding: 1rem 1.1rem !important;
  color: var(--ps-calendar-day-color, var(--ps-primary)) !important;
}
.prestiscene-booking__date-choice-status {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 118px !important;
  padding: 0.85rem 1rem !important;
  background: var(--ps-date-status-bg, #f3f3f3) !important;
  color: var(--ps-date-status-color, #555) !important;
  font-weight: 700 !important;
  text-align: center !important;
  border-left: 1px solid rgba(0,0,0,.08) !important;
}
.prestiscene-booking__date-choice:not(.is-disabled):hover .prestiscene-booking__date-choice-status,
.prestiscene-booking__date-choice.is-selected .prestiscene-booking__date-choice-status {
  background: var(--ps-calendar-hover, var(--ps-primary)) !important;
  color: var(--ps-calendar-hover-color, #fff) !important;
}
.prestiscene-booking__date-choice.is-selected .prestiscene-booking__date-choice-status {
  background: var(--ps-calendar-active, var(--ps-primary)) !important;
  color: var(--ps-calendar-active-color, #fff) !important;
}
.prestiscene-booking__date-choice.is-disabled,
.prestiscene-booking__loop-item--date.is-disabled {
  opacity: 1 !important;
  background: var(--ps-calendar-inactive, #f5f5f5) !important;
  color: var(--ps-calendar-inactive-color, #777) !important;
}
.prestiscene-booking__date-choice.is-disabled .prestiscene-booking__date-choice-main {
  color: var(--ps-calendar-inactive-color, #777) !important;
}
.prestiscene-booking__date-choice.is-disabled .prestiscene-booking__date-choice-status,
.prestiscene-booking__date-choice.is-complete .prestiscene-booking__date-choice-status {
  background: var(--ps-date-complete-side-bg, #dedede) !important;
  color: var(--ps-date-complete-side-color, #555) !important;
}
/* Si un modèle Elementor est utilisé pour la date, on garde aussi l'état complet visuellement clair */
.prestiscene-booking__loop-item--date.is-disabled {
  position: relative;
  overflow: hidden;
  filter: grayscale(.15);
}
.prestiscene-booking__loop-item--date.is-disabled::after {
  content: attr(data-date-status);
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  min-width: 110px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem;
  background: var(--ps-date-complete-side-bg, #dedede);
  color: var(--ps-date-complete-side-color, #555);
  font-weight: 700;
  text-align: center;
  z-index: 3;
}
@media (max-width: 767px) {
  .prestiscene-booking__date-choice {
    grid-template-columns: 1fr !important;
  }
  .prestiscene-booking__date-choice-status {
    min-width: 0 !important;
    border-left: 0 !important;
    border-top: 1px solid rgba(0,0,0,.08) !important;
  }
  .prestiscene-booking__loop-item--date.is-disabled::after {
    position: static;
    min-width: 0;
  }
}

/* V20.1.5 — correction sûre Elementor : largeur/z-index infobulle sans :has() */
.prestiscene-booking__tooltip-wrap,
.prestiscene-booking__tooltip-popover {
  z-index: var(--ps-tooltip-z-index, 99999);
}
.prestiscene-booking__tooltip-popover {
  width: var(--ps-tooltip-width, max-content);
  max-width: min(420px, calc(100vw - 32px));
}
.prestiscene-booking__tooltip-wrap--overlay .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap--trigger-card.prestiscene-booking__tooltip-wrap--overlay .prestiscene-booking__tooltip-popover {
  width: var(--ps-tooltip-width, auto);
  left: .75rem;
  right: .75rem;
  max-width: none;
}
.elementor-editor-active .prestiscene-booking__tooltip-popover,
.elementor-editor-preview .prestiscene-booking__tooltip-popover {
  pointer-events: none;
}

/* V20.1.6 — correction largeur infobulle sans impact éditeur Elementor
   Le précédent défaut en max-content réduisait la bulle à la largeur du mot le plus long.
   On impose une vraie largeur lisible par défaut, tout en conservant les réglages Elementor.
*/
.prestiscene-booking__tooltip-popover {
  box-sizing: border-box !important;
  width: var(--ps-tooltip-width, 320px) !important;
  min-width: min(220px, calc(100vw - 32px)) !important;
  max-width: min(var(--ps-tooltip-max-width, 420px), calc(100vw - 32px)) !important;
  white-space: normal !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
  text-wrap: pretty;
}
.prestiscene-booking__tooltip-popover * {
  max-width: 100%;
  white-space: normal !important;
  word-break: normal !important;
  overflow-wrap: normal !important;
}
.prestiscene-booking__tooltip-wrap--overlay .prestiscene-booking__tooltip-popover,
.prestiscene-booking__tooltip-wrap--trigger-card.prestiscene-booking__tooltip-wrap--overlay .prestiscene-booking__tooltip-popover {
  left: .75rem !important;
  right: .75rem !important;
  width: var(--ps-tooltip-width, auto) !important;
  min-width: 0 !important;
  max-width: none !important;
}

/* V20.1 - Conteneurs d'étapes Elementor */
.prestiscene-booking-step {
  position: relative;
  width: 100%;
  box-sizing: border-box;
}
.prestiscene-booking-step[data-prestiscene-step-hidden="1"] {
  display: none !important;
}
.prestiscene-booking-step[data-prestiscene-step-state="future"] {
  opacity: 1;
}
.prestiscene-booking-step[data-prestiscene-step-state="active"] {
  opacity: 1;
}
.prestiscene-booking-step[data-prestiscene-step-state="done"] {
  opacity: 1;
}


/* V20.2.0 - Colonnes spécifiques forfaits boissons */
@media (max-width: 1024px) {
  .prestiscene-booking__loop--product-drink .prestiscene-booking__loop-track,
  .prestiscene-booking__loop--product-drink .prestiscene-booking__product-grid.is-drinks-grid {
    grid-template-columns: repeat(var(--ps-cols-tablet, 2), minmax(0, 1fr)) !important;
  }
}
@media (max-width: 767px) {
  .prestiscene-booking__loop--product-drink .prestiscene-booking__loop-track,
  .prestiscene-booking__loop--product-drink .prestiscene-booking__product-grid.is-drinks-grid {
    grid-template-columns: repeat(var(--ps-cols-mobile, 1), minmax(0, 1fr)) !important;
  }
}
.prestiscene-booking__loop--product-drink .prestiscene-booking__tooltip-popover {
  white-space: normal;
  min-width: 220px;
}

/* V20.2.2 — Widgets Elementor Prestiscène Info & Popup */
.prestiscene-info{width:100%;}
.prestiscene-info__summary{display:flex;align-items:center;gap:.55rem;cursor:pointer;list-style:none;user-select:none;width:100%;}
.prestiscene-info__summary::-webkit-details-marker{display:none;}
.prestiscene-info__icon{display:inline-flex;line-height:1;transition:transform .2s ease;}
.prestiscene-info[open] .prestiscene-info__icon{transform:rotate(45deg);}
.prestiscene-info__content{width:100%;box-sizing:border-box;margin-top:.75rem;overflow-wrap:anywhere;}

.prestiscene-popup-widget{display:inline-flex;max-width:100%;}
.prestiscene-popup__trigger{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;cursor:pointer;}
.prestiscene-popup__trigger-icon{display:inline-flex;line-height:1;}
/* Déclencheurs à libellé texte ("Voir le détail") : n'avaient aucun style
   par défaut (uniquement la mise en page ci-dessus), donc invisibles comme
   simple texte cliquable. On leur donne l'apparence d'un petit bouton
   discret, personnalisable ensuite via Elementor. */
.prestiscene-popup__trigger--formula-option,
.prestiscene-popup__trigger--drink{
  border:1px solid var(--ps-border,#e4d7d7);
  background:#fff;
  color:var(--ps-primary,#810304);
  border-radius:999px;
  padding:.35em .9em;
  font-size:.82em;
  font-weight:600;
  line-height:1.2;
  white-space:nowrap;
  transition:background .15s ease,color .15s ease,border-color .15s ease;
}
.prestiscene-popup__trigger--formula-option:hover,
.prestiscene-popup__trigger--drink:hover{
  background:var(--ps-primary,#810304);
  border-color:var(--ps-primary,#810304);
  color:#fff;
}
.prestiscene-popup[hidden]{display:none!important;}
.prestiscene-popup{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(0,0,0,.58);box-sizing:border-box;}
.prestiscene-popup__dialog{position:relative;max-height:calc(100vh - 32px);overflow:auto;box-sizing:border-box;background:#fff;color:#222;padding:28px;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.3);}
.prestiscene-popup__close{position:absolute;top:8px;right:10px;z-index:2;width:38px;height:38px;border:0;background:transparent;color:inherit;font-size:30px;line-height:1;cursor:pointer;}
.prestiscene-popup__title{margin:0 44px 1rem 0;}
.prestiscene-popup__content{width:100%;box-sizing:border-box;overflow-wrap:anywhere;}
body.prestiscene-popup-open{overflow:hidden;}
@media (max-width:767px){
  .prestiscene-popup{align-items:flex-end;padding:0;}
  .prestiscene-popup__dialog{width:100%!important;max-width:100%!important;max-height:88vh;border-radius:16px 16px 0 0;padding:24px 20px calc(24px + env(safe-area-inset-bottom));}
}

/* V20.2.3 — Info/Popup stability inside clickable Elementor cards. */
.prestiscene-info__icon,
.prestiscene-popup__trigger-icon{
  flex:0 0 auto;
  width:1em;
  height:1em;
  min-width:1em;
  display:inline-flex!important;
  align-items:center;
  justify-content:center;
  color:currentColor;
}
.prestiscene-info__icon svg,
.prestiscene-popup__trigger-icon svg{
  display:block!important;
  width:1em!important;
  height:1em!important;
  fill:currentColor!important;
}
.prestiscene-info-icon-fallback{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:1.15em;
  height:1.15em;
  border:1px solid currentColor;
  border-radius:50%;
  font-size:.82em;
  font-weight:700;
  line-height:1;
}
.prestiscene-popup-portal{
  position:fixed!important;
  inset:0!important;
  z-index:2147483646!important;
  isolation:isolate!important;
  pointer-events:none!important;
}
.prestiscene-popup-portal > .prestiscene-popup{
  z-index:2147483647!important;
  pointer-events:auto!important;
}
.prestiscene-popup-portal .prestiscene-popup__dialog,
.prestiscene-popup-portal .prestiscene-popup__close{
  pointer-events:auto!important;
}
.prestiscene-popup__close{
  z-index:10!important;
  touch-action:manipulation;
}
.prestiscene-info__content .prestiscene-dynamic-break,
.prestiscene-popup__content .prestiscene-dynamic-break{
  display:block;
  min-height:.75em;
}

/* V20.2.4 — Popup trigger icon full Elementor styling. */
.prestiscene-popup__trigger-icon{
  box-sizing:border-box;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  transition:color .2s ease,background-color .2s ease,border-color .2s ease,transform .2s ease;
}
.prestiscene-popup__trigger-icon .prestiscene-info-icon-fallback{
  width:1em;
  height:1em;
  min-width:0;
  border:0;
  border-radius:0;
  font-size:1em;
}

/* V20.2.5 — Déclencheur Popup complet et sans bordure résiduelle. */
.elementor-widget-prestiscene_popup{
  position:relative;
}
.prestiscene-popup-widget{
  position:relative;
  display:inline-flex;
  max-width:100%;
}
.prestiscene-popup__trigger{
  -webkit-appearance:none!important;
  appearance:none!important;
  border:0!important;
  outline:0;
  box-shadow:none;
  text-decoration:none;
  line-height:1.2;
  max-width:100%;
  box-sizing:border-box;
}
.prestiscene-popup__trigger:focus-visible{
  outline:2px solid currentColor;
  outline-offset:3px;
}
.prestiscene-popup__trigger-icon{
  border-style:solid;
  border-width:0;
  border-color:transparent;
  box-shadow:none;
  overflow:visible;
}
.prestiscene-popup__trigger-icon--no-border{
  border:0!important;
  border-color:transparent!important;
  box-shadow:none!important;
}
.prestiscene-popup__trigger-icon svg,
.prestiscene-popup__trigger-icon svg *{
  color:inherit;
}
.prestiscene-popup__custom-icon{
  display:block;
  width:1em!important;
  height:1em!important;
  max-width:none!important;
  object-fit:contain;
  border:0!important;
  box-shadow:none!important;
}
.prestiscene-popup__icon-text,
.prestiscene-popup__icon-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:100%;
  height:100%;
  line-height:1;
  font:inherit;
}
.prestiscene-popup__trigger-icon--global{
  width:var(--ps-icon-box,32px)!important;
  min-width:var(--ps-icon-box,32px)!important;
  height:var(--ps-icon-box,32px)!important;
  font-size:var(--ps-icon-size,16px)!important;
  color:var(--ps-icon-color,#810304)!important;
  background-color:var(--ps-icon-bg,#fff)!important;
  border-style:var(--ps-icon-border-style,none)!important;
  border-width:var(--ps-icon-border-width,0)!important;
  border-color:var(--ps-icon-border-color,transparent)!important;
  border-radius:var(--ps-icon-radius,50%)!important;
}
.prestiscene-popup__trigger:hover .prestiscene-popup__trigger-icon--global{
  color:var(--ps-icon-hover-color,#fff)!important;
  background-color:var(--ps-icon-hover-bg,#810304)!important;
  border-color:var(--ps-icon-hover-border,#810304)!important;
}
.prestiscene-popup__trigger[aria-expanded="true"] .prestiscene-popup__trigger-icon--global{
  color:var(--ps-icon-active-color,#fff)!important;
  background-color:var(--ps-icon-active-bg,#810304)!important;
  border-color:var(--ps-icon-active-border,#810304)!important;
}
.prestiscene-popup__trigger-icon--animation-rotate:hover,
.prestiscene-popup__trigger:hover .prestiscene-popup__trigger-icon--animation-rotate{
  transform:rotate(90deg);
}
.prestiscene-popup__trigger-icon--animation-zoom:hover,
.prestiscene-popup__trigger:hover .prestiscene-popup__trigger-icon--animation-zoom{
  transform:scale(1.14);
}
.prestiscene-popup__trigger-icon--animation-opacity:hover,
.prestiscene-popup__trigger:hover .prestiscene-popup__trigger-icon--animation-opacity{
  opacity:.62;
}
.prestiscene-popup-position-top_left,
.prestiscene-popup-position-top_right,
.prestiscene-popup-position-bottom_left,
.prestiscene-popup-position-bottom_right,
.prestiscene-popup-position-custom{
  position:absolute;
  z-index:20;
}
.prestiscene-popup-position-top_left{top:0;left:0;}
.prestiscene-popup-position-top_right{top:0;right:0;}
.prestiscene-popup-position-bottom_left{bottom:0;left:0;}
.prestiscene-popup-position-bottom_right{bottom:0;right:0;}
.prestiscene-popup-position-custom{left:var(--prestiscene-popup-x,0);top:var(--prestiscene-popup-y,0);}


/* V20.2.6 — Popup responsive alignment/width and icon positioning. */
.prestiscene-popup-widget{
  position:var(--ps-popup-desktop-position,relative)!important;
  top:var(--ps-popup-desktop-top,auto)!important;
  right:var(--ps-popup-desktop-right,auto)!important;
  bottom:var(--ps-popup-desktop-bottom,auto)!important;
  left:var(--ps-popup-desktop-left,auto)!important;
}
.prestiscene-popup .prestiscene-popup__dialog,
.prestiscene-popup-portal .prestiscene-popup__dialog{
  width:var(--ps-popup-width-desktop,680px)!important;
  max-width:calc(100vw - 32px)!important;
}
.prestiscene-popup .prestiscene-popup__title,
.prestiscene-popup-portal .prestiscene-popup__title{
  text-align:var(--ps-popup-title-align-desktop,left)!important;
}
.prestiscene-popup .prestiscene-popup__content,
.prestiscene-popup-portal .prestiscene-popup__content{
  text-align:var(--ps-popup-content-align-desktop,left)!important;
}
@media (max-width:1024px){
  .prestiscene-popup-widget{
    position:var(--ps-popup-tablet-position,var(--ps-popup-desktop-position,relative))!important;
    top:var(--ps-popup-tablet-top,var(--ps-popup-desktop-top,auto))!important;
    right:var(--ps-popup-tablet-right,var(--ps-popup-desktop-right,auto))!important;
    bottom:var(--ps-popup-tablet-bottom,var(--ps-popup-desktop-bottom,auto))!important;
    left:var(--ps-popup-tablet-left,var(--ps-popup-desktop-left,auto))!important;
  }
  .prestiscene-popup .prestiscene-popup__dialog,
  .prestiscene-popup-portal .prestiscene-popup__dialog{width:var(--ps-popup-width-tablet,var(--ps-popup-width-desktop,86vw))!important;max-width:calc(100vw - 24px)!important;}
  .prestiscene-popup .prestiscene-popup__title,.prestiscene-popup-portal .prestiscene-popup__title{text-align:var(--ps-popup-title-align-tablet,var(--ps-popup-title-align-desktop,left))!important;}
  .prestiscene-popup .prestiscene-popup__content,.prestiscene-popup-portal .prestiscene-popup__content{text-align:var(--ps-popup-content-align-tablet,var(--ps-popup-content-align-desktop,left))!important;}
}
@media (max-width:767px){
  .prestiscene-popup-widget{
    position:var(--ps-popup-mobile-position,var(--ps-popup-tablet-position,relative))!important;
    top:var(--ps-popup-mobile-top,var(--ps-popup-tablet-top,auto))!important;
    right:var(--ps-popup-mobile-right,var(--ps-popup-tablet-right,auto))!important;
    bottom:var(--ps-popup-mobile-bottom,var(--ps-popup-tablet-bottom,auto))!important;
    left:var(--ps-popup-mobile-left,var(--ps-popup-tablet-left,auto))!important;
  }
  .prestiscene-popup{align-items:center!important;padding:12px!important;}
  .prestiscene-popup .prestiscene-popup__dialog,
  .prestiscene-popup-portal .prestiscene-popup__dialog{
    width:var(--ps-popup-width-mobile,var(--ps-popup-width-tablet,96vw))!important;
    max-width:calc(100vw - 24px)!important;
    max-height:calc(100vh - 24px)!important;
    border-radius:16px!important;
  }
  .prestiscene-popup .prestiscene-popup__title,.prestiscene-popup-portal .prestiscene-popup__title{text-align:var(--ps-popup-title-align-mobile,var(--ps-popup-title-align-tablet,left))!important;}
  .prestiscene-popup .prestiscene-popup__content,.prestiscene-popup-portal .prestiscene-popup__content{text-align:var(--ps-popup-content-align-mobile,var(--ps-popup-content-align-tablet,left))!important;}
}

/* Spectacle grid/carousel: use the three configured responsive variables even when Elementor injects legacy widths. */
.prestiscene-booking__loop--spectacle.prestiscene-booking__loop--grid .prestiscene-booking__loop-track{
  grid-template-columns:repeat(var(--ps-cols-desktop,3),minmax(0,1fr))!important;
}
.prestiscene-booking__loop--spectacle.prestiscene-booking__loop--carousel .prestiscene-booking__loop-track{
  grid-auto-columns:calc((100% - (var(--ps-cols-desktop,3) - 1) * 18px) / var(--ps-cols-desktop,3))!important;
}
@media (max-width:1024px){
  .prestiscene-booking__loop--spectacle.prestiscene-booking__loop--grid .prestiscene-booking__loop-track{grid-template-columns:repeat(var(--ps-cols-tablet,2),minmax(0,1fr))!important;}
  .prestiscene-booking__loop--spectacle.prestiscene-booking__loop--carousel .prestiscene-booking__loop-track{grid-auto-columns:calc((100% - (var(--ps-cols-tablet,2) - 1) * 18px) / var(--ps-cols-tablet,2))!important;}
}
@media (max-width:767px){
  .prestiscene-booking__loop--spectacle.prestiscene-booking__loop--grid .prestiscene-booking__loop-track{grid-template-columns:repeat(var(--ps-cols-mobile,1),minmax(0,1fr))!important;}
  .prestiscene-booking__loop--spectacle.prestiscene-booking__loop--carousel .prestiscene-booking__loop-track{grid-auto-columns:calc((100% - (var(--ps-cols-mobile,1) - 1) * 18px) / var(--ps-cols-mobile,1))!important;}
}

.prestiscene-popup-widget--drink{display:inline-flex;margin-top:.5rem;}
.prestiscene-popup__trigger--drink{font:inherit;text-decoration:underline;background:transparent;border:0;padding:0;color:inherit;}

/* V20.2.7 - Modèle Elementor dédié aux forfaits boissons.
   Le modèle pilote uniquement le visuel ; les contrôles natifs conservent la logique métier. */
.prestiscene-booking__loop-item--product-drink {
  position: relative;
  min-width: 0;
  width: 100%;
}
.prestiscene-booking__loop-item--product-drink [data-prestiscene-native-control="product_input"],
.prestiscene-booking__loop-item--product-drink [data-prestiscene-native-control="quantity_input"] {
  max-width: 100%;
}
.prestiscene-booking__loop-item--product-drink .prestiscene-booking__product-qty {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
}

/* Prestiscène - Champ dynamique */
.prestiscene-dynamic-field {
  display: block;
  width: 100%;
}
.prestiscene-dynamic-field[data-prestiscene-hide-empty="1"]:empty {
  display: none !important;
}
.prestiscene-dynamic-field--formatted .prestiscene-dynamic-separator {
  display: block;
}

/* V21.2 - apparence par catégorie d'options */
.prestiscene-booking__option-group-list--list{display:flex!important;flex-direction:column!important;grid-template-columns:none!important}.prestiscene-booking__option-group-list--grid{display:grid!important}


/* V21.3.0 — adaptations poisson/végétarien intégrées aux formules */
.prestiscene-booking__formula-adaptations { margin-top: 14px; padding: 12px; border: 1px solid rgba(0,0,0,.12); border-radius: 8px; }
.prestiscene-booking__formula-adaptations-title { font-weight: 600; margin-bottom: 8px; }
.prestiscene-booking__formula-adaptation { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 7px; }
.prestiscene-booking__formula-adaptation input { width: 76px; min-width: 76px; }


/* V21.3.1 — affichage conditionnel et popup des adaptations de formule */
.prestiscene-booking__formula-adaptations[hidden]{display:none!important;}
.prestiscene-booking__formula-adaptation-row{display:block;}
.prestiscene-booking__formula-adaptation > span{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;}
.prestiscene-popup-widget--formula-option{display:inline-flex;}
.prestiscene-popup__trigger--formula-option{font:inherit;font-size:.86em;text-decoration:underline;background:transparent;border:0;padding:0;color:inherit;cursor:pointer;}


/* V21.3.3 — présentation native des options sans séparateur inférieur.
   Les options peuvent être injectées directement dans loop-track, sans conteneur option-group-list. */
.prestiscene-booking__option-group-list .prestiscene-booking__option-check,
.prestiscene-booking__loop-track[data-prestiscene-layout="tabs"] > .prestiscene-booking__option-check {
  border-bottom: none !important;
  border-bottom-width: 0 !important;
  border-bottom-style: none !important;
  border-bottom-color: transparent !important;
}



/* V21.3.4 — options natives sans bordure, quel que soit le mode d’affichage. */
.prestiscene-booking__option-check,
.prestiscene-booking__option-group-list > .prestiscene-booking__option-check,
.prestiscene-booking__loop-track > .prestiscene-booking__option-check,
.prestiscene-booking__loop-track[data-prestiscene-layout] > .prestiscene-booking__option-check,
.prestiscene-booking__loop--option .prestiscene-booking__option-check,
.prestiscene-booking__accordion-panel .prestiscene-booking__option-check,
.prestiscene-booking__tabs-panel .prestiscene-booking__option-check {
  border-bottom: 0 !important;
  border-bottom-width: 0 !important;
  border-bottom-style: none !important;
  border-bottom-color: transparent !important;
}

/* Adaptations de formule : apparence cohérente avec les champs Nombre natifs. */
.prestiscene-booking__formula-adaptations {
  display:flex;
  flex-direction:column;
  gap:var(--ps-formula-adaptation-gap,10px);
}
.prestiscene-booking__formula-adaptations-title { margin-bottom:0; }
.prestiscene-booking__formula-adaptation-row { display:block; min-width:0; }
.prestiscene-booking__formula-adaptation {
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:16px;
  margin:0;
  min-width:0;
}
.prestiscene-booking__formula-adaptation-name {
  display:flex;
  align-items:center;
  gap:.55rem;
  flex-wrap:wrap;
  min-width:0;
  padding-bottom:10px;
}
.prestiscene-booking__formula-adaptation-fields {
  flex:0 0 96px;
  width:96px;
  min-width:96px;
  margin-top:0;
}
.prestiscene-booking__formula-adaptation-fields input[type="number"] {
  width:100% !important;
  min-width:0 !important;
  box-sizing:border-box;
  padding:10px 12px;
  background:var(--ps-field-bg,#fff);
  border:1px solid var(--ps-field-border,rgba(0,0,0,.16));
  border-radius:var(--ps-field-radius,10px);
  color:var(--ps-text,#1f1f1f);
}
.prestiscene-popup__content--formatted p:first-child{margin-top:0;}
.prestiscene-popup__content--formatted p:last-child{margin-bottom:0;}
.prestiscene-popup__content--formatted ul,
.prestiscene-popup__content--formatted ol{padding-left:1.35em;margin:.75em 0;}
.prestiscene-popup__content--formatted a{text-decoration:underline;}
@media(max-width:767px){
  .prestiscene-booking__formula-adaptation{align-items:stretch;flex-direction:column;gap:6px;}
  .prestiscene-booking__formula-adaptation-name{padding-bottom:0;}
  .prestiscene-booking__formula-adaptation-fields{width:100%;min-width:0;flex-basis:auto;}
}


/* V21.3.5.1 — correctifs stables uniquement : récapitulatif, menu enfant et clic image forfait boisson. */
.prestiscene-booking__summary-row span:first-child{white-space:normal}
.prestiscene-booking__loop-item--formula.is-disabled,
.prestiscene-booking__formula-card.is-disabled{
  opacity:.48;
  filter:grayscale(1);
  pointer-events:none;
  cursor:not-allowed;
}


/* V21.3.10 — hauteur égale des cartes Formules avec modèles Elementor. */
.prestiscene-booking__loop--formula [data-prestiscene-loop-item].prestiscene-formula-equal-height,
.prestiscene-booking__loop--formula .prestiscene-booking__formula-card.prestiscene-formula-equal-height {
  display:flex;
  flex-direction:column;
  box-sizing:border-box;
}
.prestiscene-booking__loop--formula [data-prestiscene-loop-item].prestiscene-formula-equal-height > .elementor,
.prestiscene-booking__loop--formula [data-prestiscene-loop-item].prestiscene-formula-equal-height > .elementor-section-wrap,
.prestiscene-booking__loop--formula [data-prestiscene-loop-item].prestiscene-formula-equal-height > .e-con,
.prestiscene-booking__loop--formula [data-prestiscene-loop-item].prestiscene-formula-equal-height > .elementor-element,
.prestiscene-booking__loop--formula [data-prestiscene-loop-item].prestiscene-formula-equal-height > :first-child:not(.prestiscene-booking__formula-adaptations) {
  flex:1 1 auto;
  width:100%;
  min-height:0;
}
.prestiscene-booking__loop--formula [data-prestiscene-loop-item].prestiscene-formula-equal-height > .elementor > .elementor-element,
.prestiscene-booking__loop--formula [data-prestiscene-loop-item].prestiscene-formula-equal-height > .elementor > .e-con,
.prestiscene-booking__loop--formula [data-prestiscene-loop-item].prestiscene-formula-equal-height > .elementor-section-wrap > .elementor-element {
  height:100%;
}


/* V21.3.11 — égalisation du conteneur visuel réel des modèles Elementor. */
.prestiscene-booking__loop--formula .prestiscene-formula-equal-height-track {
  align-items: stretch;
}
.prestiscene-booking__loop--formula .prestiscene-formula-equal-height {
  align-self: stretch;
}
.prestiscene-booking__loop--formula .prestiscene-formula-equal-height__visual {
  box-sizing: border-box;
}
.prestiscene-booking__loop--formula .elementor.prestiscene-formula-equal-height__visual {
  display: flex;
  flex-direction: column;
  width: 100%;
}
.prestiscene-booking__loop--formula .elementor.prestiscene-formula-equal-height__visual > .e-con,
.prestiscene-booking__loop--formula .elementor.prestiscene-formula-equal-height__visual > .elementor-element,
.prestiscene-booking__loop--formula .elementor.prestiscene-formula-equal-height__visual > .elementor-section-wrap,
.prestiscene-booking__loop--formula .elementor.prestiscene-formula-equal-height__visual > .elementor-section-wrap > .elementor-element {
  flex: 1 1 auto;
  height: 100%;
  min-height: 100%;
}


/* V21.4.0 - Widgets Coordonnées et Paiement */
.prestiscene-booking__form-grid--configurable{display:flex!important;flex-wrap:wrap;gap:16px;align-items:flex-start}
.prestiscene-booking__customer-field{box-sizing:border-box;display:flex;flex-direction:column;gap:6px;margin:0}
.prestiscene-booking__customer-field--w-25{flex:0 0 calc(25% - 12px)}
.prestiscene-booking__customer-field--w-33{flex:0 0 calc(33.333% - 11px)}
.prestiscene-booking__customer-field--w-50{flex:0 0 calc(50% - 8px)}
.prestiscene-booking__customer-field--w-66{flex:0 0 calc(66.666% - 6px)}
.prestiscene-booking__customer-field--w-75{flex:0 0 calc(75% - 4px)}
.prestiscene-booking__customer-field--w-100{flex:0 0 100%}
.prestiscene-booking__customer-field input,.prestiscene-booking__customer-field textarea{width:100%;box-sizing:border-box}
.prestiscene-booking__customer-field.prestiscene-booking__checkbox{flex-direction:row;align-items:flex-start}
.prestiscene-booking__customer-field.prestiscene-booking__checkbox input{width:auto;margin-top:.25em}
.prestiscene-booking__field-help{display:block;opacity:.75;font-size:.85em}
.prestiscene-booking__payment-total{display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:1.2em;margin:0 0 20px}
@media(max-width:767px){.prestiscene-booking__customer-field{flex-basis:100%!important}}

/* V21.6 — paiement en iframe plein écran (alternative à la redirection
   classique et à une popup, qui peut être bloquée par le navigateur). */
body.prestiscene-payment-overlay-open{overflow:hidden;}
.prestiscene-payment-overlay{
  position:fixed;
  inset:0;
  z-index:2147483000;
  background:rgba(20,12,12,.55);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:16px;
}
.prestiscene-payment-overlay__panel{
  background:#fff;
  width:min(720px,100%);
  height:min(88vh,900px);
  border-radius:14px;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  box-shadow:0 20px 60px rgba(0,0,0,.35);
}
.prestiscene-payment-overlay__bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 16px;
  border-bottom:1px solid #e4d7d7;
  font-size:.95rem;
}
.prestiscene-payment-overlay__title{font-weight:700;}
.prestiscene-payment-overlay__bar-actions{
  display:flex;
  align-items:center;
  gap:14px;
}
.prestiscene-payment-overlay__close{
  flex:none;
  width:32px;
  height:32px;
  border-radius:50%;
  border:1px solid #e4d7d7;
  background:#fff;
  font-size:1.3rem;
  line-height:1;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  color:inherit;
}
.prestiscene-payment-overlay__close:hover{
  background:#f5eaea;
}
.prestiscene-payment-overlay__fallback-link{
  font-size:.85rem;
  text-decoration:underline;
  white-space:nowrap;
}
.prestiscene-payment-overlay__iframe{
  flex:1 1 auto;
  width:100%;
  border:0;
  background:#fff;
}
.prestiscene-payment-overlay__notice{
  margin:0;
  padding:10px 16px;
  font-size:.85rem;
  background:#fff7e6;
  border-top:1px solid #f0dca0;
}
@media (max-width:600px){
  .prestiscene-payment-overlay{padding:0;}
  .prestiscene-payment-overlay__panel{width:100%;height:100%;border-radius:0;}
}

/* V21.7 — filet de sécurité : le lien CGV (et tout lien similaire) doit
   toujours rester lisible même sans réglage explicite de couleur dans
   Elementor (certains thèmes définissent un lien global blanc qui devenait
   invisible sur fond clair). Le contrôle "Couleur du lien" du widget
   Coordonnées (et Paiement) reste prioritaire dès qu'il est configuré. */
.prestiscene-booking__checkbox a{
  color: var(--ps-primary,#810304);
}

/* V21.8 — fusion Coordonnées + Paiement : actions (précédent/payer) */
.prestiscene-booking__payment-actions{
  display:flex;
  align-items:center;
  gap:14px;
  margin-top:18px;
}
.prestiscene-booking__payment-actions--align-left{justify-content:flex-start;}
.prestiscene-booking__payment-actions--align-center{justify-content:center;}
.prestiscene-booking__payment-actions--align-right{justify-content:flex-end;}
.prestiscene-booking__payment-actions--align-justify{justify-content:space-between;}

/* V21.17 — sélection de formule en 2 étapes (catégories configurables) */
.prestiscene-booking__formula-category-picker{
  margin:0 0 1.2rem;
}
.prestiscene-booking__formula-category-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:14px;
}
.prestiscene-booking__formula-category-card,
.prestiscene-booking__formula-category-card:hover,
.prestiscene-booking__formula-category-card:focus,
.prestiscene-booking__formula-category-card:active{
  display:flex;
  flex-direction:column;
  gap:.4rem;
  text-align:left;
  padding:1.1rem 1.2rem;
  border:1px solid var(--ps-border,#e4d7d7);
  border-radius:14px;
  background:var(--ps-formula-category-bg,#fff) !important;
  color:var(--ps-formula-category-color,var(--ps-text,#1f1f1f)) !important;
  cursor:pointer;
  outline:none;
  transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease,background .18s ease,color .18s ease;
}
.prestiscene-booking__formula-category-card:hover{
  border-color:var(--ps-primary,#810304);
  box-shadow:0 10px 24px rgba(129,3,4,.12);
  transform:translateY(-2px);
  background:var(--ps-formula-category-bg-hover,var(--ps-formula-category-bg,#fff)) !important;
  color:var(--ps-formula-category-color-hover,var(--ps-formula-category-color,var(--ps-text,#1f1f1f))) !important;
}
.prestiscene-booking__formula-category-card strong{
  color:inherit !important;
  font-size:1.05rem;
}
.prestiscene-booking__formula-category-card span{
  color:inherit !important;
  opacity:.8;
  font-size:.92rem;
}

/* Mode onglets (alternative aux cartes), pour les catégories Repas-Spectacle/
   Spectacle seul comme pour les catégories tarifaires 1/2/3. */
.prestiscene-booking__formula-category-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:.6rem;
  margin:0 0 1.2rem;
}
.prestiscene-booking__formula-category-tabs .prestiscene-booking__formula-category-card,
.prestiscene-booking__formula-category-tabs .prestiscene-booking__formula-category-card:hover{
  flex-direction:row;
  align-items:baseline;
  gap:.5rem;
  padding:.65rem 1.1rem;
  border-radius:999px;
  transform:none;
  box-shadow:none;
}
.prestiscene-booking__formula-category-tabs .prestiscene-booking__formula-category-card strong{
  font-size:.95rem;
}
.prestiscene-booking__formula-category-tabs .prestiscene-booking__formula-category-card span{
  font-size:.82rem;
}

.prestiscene-booking__formula-category-active-title{
  margin:.6rem 0 .8rem;
}
.prestiscene-booking__button--link,
.prestiscene-booking__button--link:hover,
.prestiscene-booking__button--link:focus,
.prestiscene-booking__button--link:active{
  display:block;
  width:fit-content;
  background:none !important;
  border:0 !important;
  padding:0;
  margin:0 0 .5rem;
  color:var(--ps-back-button-color,var(--ps-primary,#810304)) !important;
  font-size:var(--ps-back-button-font-size,inherit);
  font-weight:var(--ps-back-button-font-weight,inherit);
  text-transform:var(--ps-back-button-text-transform,none);
  text-decoration:underline;
  cursor:pointer;
  font-family:inherit;
}
.prestiscene-booking__button--link:hover{
  color:var(--ps-back-button-color-hover,var(--ps-back-button-color,var(--ps-primary,#810304))) !important;
  text-decoration:var(--ps-back-button-decoration-hover,underline);
}

/* V21.22 — encadré "Informations du bon cadeau" (destinataire + message) */
.prestiscene-booking__gift-info-box{
  display:flex;
  flex-direction:column;
  gap:.9rem;
  width:100%;
  margin:0 0 1.4rem;
  padding:1.1rem 1.2rem;
  border:1px solid var(--ps-border,#e4d7d7);
  border-radius:14px;
  background:#fdfaf5;
}
.prestiscene-booking__gift-info-title{
  margin:0;
  color:var(--ps-primary,#810304);
  font-size:1.05rem;
}
.prestiscene-booking__gift-info-box .prestiscene-booking__field{
  width:100%;
}
.prestiscene-booking__gift-info-box .prestiscene-booking__field input,
.prestiscene-booking__gift-info-box .prestiscene-booking__field textarea{
  width:100%;
  box-sizing:border-box;
}

/* V21.30.1 — application intelligente d'un bon cadeau */
.prestiscene-booking__gift-redeem-actions{display:flex;gap:12px;align-items:center;margin-top:12px;flex-wrap:wrap}
.prestiscene-booking__notice--success{border-left:4px solid #2e7d32;background:#eef8ef}
.prestiscene-booking__notice--error{border-left:4px solid #b3261e;background:#fff1f0}

/* V21.30.4 — parcours bon cadeau */
.prestiscene-booking__gift-preset-summary{padding:16px 18px;margin:0 0 18px;border:1px solid var(--ps-border,#e4d7d7);border-radius:12px;background:#fdfaf5}
.prestiscene-booking__gift-preset-summary h4{margin:0 0 10px;color:var(--ps-primary,#810304)}
.prestiscene-booking__gift-preset-summary p{margin:.35rem 0}
.prestiscene-booking__gift-preset-summary ul{margin:.35rem 0 .6rem 1.2rem}
[data-prestiscene-entry-hidden="1"]{display:none!important}

/* V21.30.7 — bloc actions bon cadeau compact */
.prestiscene-booking__gift-redeem-actions--compact {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.prestiscene-booking__gift-redeem-actions--compact .prestiscene-booking__button {
  width: auto !important;
  min-width: 0 !important;
  padding: 9px 14px !important;
  font-size: 13px !important;
}
.prestiscene-booking__gift-date-selected { font-size: 15px; }
.prestiscene-booking__gift-redeem-actions--compact [data-gift-confirm-date] {
  padding: 13px 20px !important;
  font-size: 15px !important;
  font-weight: 800 !important;
  box-shadow: 0 5px 14px rgba(129,3,4,.24);
}

/* V22.0.1 - Choix du parcours */
.prestiscene-flow-choice__heading{text-align:center;margin:0 0 24px}
.prestiscene-flow-choice__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.prestiscene-flow-choice__card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:28px;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:12px;min-width:0}
.prestiscene-flow-choice__card p{margin:0;flex:1}
.prestiscene-flow-choice__card h3{margin:0}
.prestiscene-flow-choice__icon{font-size:38px;line-height:1}
@media(max-width:1024px){.prestiscene-flow-choice__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767px){.prestiscene-flow-choice__grid{grid-template-columns:1fr}.prestiscene-flow-choice__card{padding:20px}}

/* V22.0.2 - Choix du parcours personnalisable */
.prestiscene-flow-choice__card--native{transition:background-color .2s ease,border-color .2s ease,transform .2s ease,box-shadow .2s ease}
.prestiscene-flow-choice__icon{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;line-height:1}
.prestiscene-flow-choice__icon svg{display:block}
.prestiscene-flow-choice__title,.prestiscene-flow-choice__text{margin-top:0}
.prestiscene-flow-choice__button{cursor:pointer}
.prestiscene-flow-choice__card--template{position:relative;min-width:0;cursor:pointer}
.prestiscene-flow-choice__card--template:focus-visible{outline:2px solid currentColor;outline-offset:3px}


/* V22.1.0 - Écran HOME : seuls les CTA sont visibles avant le choix. */
html.prestiscene-flow-home .prestiscene-flow-classic,
html.prestiscene-flow-home [data-prestiscene-flow-container="classic"],
html.prestiscene-flow-home .prestiscene-flow-gift-redeem,
html.prestiscene-flow-home [data-prestiscene-flow-container="gift_redeem"],
html.prestiscene-flow-home .prestiscene-flow-gift-purchase,
html.prestiscene-flow-home [data-prestiscene-flow-container="gift_purchase"] {
  display: none !important;
}
[data-prestiscene-deferred="1"] { visibility: hidden; }
.elementor-editor-active [data-prestiscene-deferred="1"] { visibility: visible; }

/* V22.1.1 - Navigation « Retour au choix ». */
.prestiscene-flow-choice__home,
.prestiscene-flow-choice__back-wrap {
  animation: prestisceneFlowChoiceFade .24s ease both;
}
.prestiscene-flow-choice__back-wrap {
  display: flex;
  width: 100%;
  justify-content: flex-start;
  margin-bottom: 20px;
}
.prestiscene-flow-choice__back-wrap[hidden],
.prestiscene-flow-choice__home[hidden] {
  display: none !important;
}
.prestiscene-flow-choice__back {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  background: transparent;
  color: inherit;
  border: 1px solid currentColor;
  border-radius: 6px;
  padding: 9px 14px;
  line-height: 1.2;
  transition: color .2s ease, background-color .2s ease, border-color .2s ease, transform .2s ease;
}
.prestiscene-flow-choice__back:hover { transform: translateX(-2px); }
.prestiscene-flow-choice__back-icon { display: inline-flex; align-items: center; justify-content: center; line-height: 1; }
.prestiscene-flow-choice__back-icon svg { display: block; width: 1em; height: 1em; fill: currentColor; }
@keyframes prestisceneFlowChoiceFade {
  from { opacity: 0; transform: translateY(5px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .prestiscene-flow-choice__home,
  .prestiscene-flow-choice__back-wrap,
  .prestiscene-flow-choice__back { animation: none; transition: none; }
}


/* V22.2.0 - Bandeau dynamique du parcours. */
.prestiscene-flow-choice__back-wrap {
  position: relative;
  box-sizing: border-box;
  min-height: 104px;
  align-items: center;
  justify-content: center;
  padding: 24px 32px;
}
.prestiscene-flow-choice__back {
  position: absolute;
  left: 24px;
  top: 50%;
  z-index: 2;
  transform: translateY(-50%);
}
.prestiscene-flow-choice__back:hover { transform: translateY(-50%) translateX(-2px); }
.prestiscene-flow-choice__header-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  min-width: 0;
  text-align: center;
  pointer-events: none;
}
.prestiscene-flow-choice__header-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 32px;
  line-height: 1;
}
.prestiscene-flow-choice__header-icon svg { display:block; width:1em; height:1em; fill:currentColor; }
.prestiscene-flow-choice__header-copy { min-width:0; max-width:100%; }
.prestiscene-flow-choice__header-title { margin:0; line-height:1.2; }
.prestiscene-flow-choice__header-subtitle { margin:4px 0 0; line-height:1.45; }
.prestiscene-flow-choice__header-icon[hidden],
.prestiscene-flow-choice__header-subtitle[hidden] { display:none !important; }
.prestiscene-flow-choice__back-wrap > template { display:none !important; }
@media (max-width: 767px) {
  .prestiscene-flow-choice__back-wrap { padding:72px 18px 22px; min-height:140px; }
  .prestiscene-flow-choice__back { left:18px; top:18px; transform:none; }
  .prestiscene-flow-choice__back:hover { transform:translateX(-2px); }
}

/* V22.3.0 — Code promo : validation en direct */
.prestiscene-booking__summary-row--gift,
.prestiscene-booking__summary-row--promo{color:#1a7f37;font-weight:600;}
.prestiscene-booking__notice--promo{border-left:4px solid #1a7f37;background:#f0fbf4;}


/* V22.4.0 — Navigation intelligente entre les étapes */
.prestiscene-booking__flow-focus {
  animation: prestiscene-flow-focus-pulse 1.15s ease-out;
}
@keyframes prestiscene-flow-focus-pulse {
  0% { box-shadow: 0 0 0 0 rgba(175, 24, 45, .34); }
  45% { box-shadow: 0 0 0 7px rgba(175, 24, 45, .14); }
  100% { box-shadow: 0 0 0 0 rgba(175, 24, 45, 0); }
}
@media (prefers-reduced-motion: reduce) {
  .prestiscene-booking__flow-focus { animation: none; }
}


/* V22.4.1 — sélection spectacle visible + navigation mobile étape 1 → 2 */
.prestiscene-booking [data-spectacle-id].is-selected,
.prestiscene-booking .prestiscene-booking__spectacle-card.is-selected,
.prestiscene-booking .prestiscene-booking__loop-item--spectacle.is-selected,
.prestiscene-booking [data-prestiscene-loop-item][data-spectacle-id].is-selected {
  position: relative;
  border: 3px solid #d00000 !important;
  outline: 2px solid rgba(208, 0, 0, .18) !important;
  outline-offset: 2px;
  box-shadow: 0 0 0 3px rgba(208, 0, 0, .10), 0 10px 28px rgba(0,0,0,.12) !important;
}
.prestiscene-booking [data-spectacle-id].is-selected::before,
.prestiscene-booking .prestiscene-booking__loop-item--spectacle.is-selected::before {
  content: "✓";
  position: absolute;
  z-index: 20;
  top: 10px;
  right: 10px;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 999px;
  background: #d00000;
  color: #fff;
  font-weight: 800;
  line-height: 1;
  pointer-events: none;
}
@media (max-width: 767px) {
  .prestiscene-booking [data-spectacle-id].is-selected,
  .prestiscene-booking .prestiscene-booking__spectacle-card.is-selected,
  .prestiscene-booking .prestiscene-booking__loop-item--spectacle.is-selected {
    border-width: 3px !important;
  }
}


/* V22.3.1 — Mise en valeur du champ Code promo */
.prestiscene-booking__customer-field--promo,
.prestiscene-booking__field--promo {
  position: relative;
  box-sizing: border-box;
  background: #fff8e6;
  border: 1px solid #d6a928;
  border-radius: 8px;
  padding: 16px;
  margin-top: 8px;
  margin-bottom: 8px;
}
.prestiscene-booking__customer-field--promo > span,
.prestiscene-booking__field--promo > label {
  display: block;
  margin-bottom: 7px;
  color: #8e1515;
  font-weight: 700;
}
.prestiscene-booking__customer-field--promo .prestiscene-booking__field-help {
  display: block;
  margin-top: 7px;
  line-height: 1.4;
}
.prestiscene-booking__customer-field--promo input,
.prestiscene-booking__field--promo input {
  width: 100%;
  background: #fff;
}
\n\n/* V22.4.4 — Formulaire direct « Infos du bon cadeau » */\n.prestiscene-booking__gift-info-form{width:100%;}\n.prestiscene-booking__gift-info-intro{margin:0 0 16px;}\n.prestiscene-booking__gift-info-form .prestiscene-booking__field{min-width:0;}\n.prestiscene-booking__gift-info-form input{width:100%;box-sizing:border-box;}\n.prestiscene-booking__gift-info-form .prestiscene-booking__gift-redeem-actions{margin-top:16px;}\n
/* V22.6.0 — Widget "Option en avant" */
.prestiscene-booking__featured-option{
  display:flex;
  gap:16px;
  align-items:center;
  border:1px solid var(--ps-border,#e4d7d7);
  border-radius:12px;
  padding:16px;
  background:linear-gradient(135deg, rgba(129,3,4,.04), rgba(129,3,4,.01));
}
.prestiscene-booking__featured-option-image{
  flex:0 0 96px;
  width:96px;
  height:96px;
  border-radius:10px;
  overflow:hidden;
}
.prestiscene-booking__featured-option-image img{width:100%;height:100%;object-fit:cover;display:block;}
.prestiscene-booking__featured-option-body{flex:1;min-width:0;}
.prestiscene-booking__featured-option-headline{font-weight:700;font-size:1.05em;margin:0 0 4px;color:var(--ps-heading-color,#810304);}
.prestiscene-booking__featured-option-description{margin:0 0 10px;opacity:.85;font-size:.92em;}
@media (max-width:560px){
  .prestiscene-booking__featured-option{flex-direction:column;align-items:flex-start;}
  .prestiscene-booking__featured-option-image{width:100%;height:140px;flex-basis:auto;}
}
