/* ======================================
   Ayn Booking — Single Logement Layout
   (Galerie + 2 colonnes + mobile bar)
   ====================================== */

/* Wrapper global */
.ayn-booking-single-logement{
  max-width: 1180px;
  width: 100%;
  margin: 0 auto var(--ayn-space-16);
  padding: 0 var(--ayn-space-4) var(--ayn-space-16);
  box-sizing: border-box;
  overflow-x: hidden; /* ✅ empêche tout débordement horizontal interne */
}

/* Tous les médias internes deviennent fluides */
.ayn-booking-single-logement img,
.ayn-booking-single-logement iframe{
  max-width: 100%;
  height: auto;
}

/* Cas particulier Leaflet / carte */
.ayn-booking-single-logement .leaflet-container{
  width: 100% !important;
}

/* Les tableaux (calendrier) ne forcent plus la largeur */
.ayn-booking-single-logement table{
  width: 100%;
  max-width: 100%;
  border-collapse: collapse;
}

/* Galerie en haut */
.ayn-booking-gallery{
  margin: var(--ayn-space-6) 0 var(--ayn-space-6);
}

/* Header logement */
.ayn-booking-header-section{
  margin-bottom: var(--ayn-space-6);
}

.ayn-booking-header-top{
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--ayn-space-4);
  margin-bottom: var(--ayn-space-2);
}

.ayn-booking-title{
  font-size: clamp(26px, 3.2vw, 34px);
  font-weight: 700;
  line-height: 1.2;
  margin: 0;
}

.ayn-booking-rating{
  white-space: nowrap;
}

.ayn-booking-badges{
  display: flex;
  flex-wrap: wrap;
  gap: var(--ayn-space-2);
}

/* GRID CONTENU + SIDEBAR */
.ayn-booking-content-grid{
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(260px, 1fr);
  gap: var(--ayn-space-8);
  align-items: flex-start;
}

/* Colonne main */
.ayn-booking-main{
  display: flex;
  flex-direction: column;
  gap: var(--ayn-space-6);
}

/* Sections "cartes" */
.ayn-booking-section{
  background: var(--ayn-surface-1);
  border-radius: var(--ayn-radius-md);
  border: 1px solid var(--ayn-border);
  padding: var(--ayn-space-5) var(--ayn-space-6);
  box-sizing: border-box;
}


.ayn-booking-section--description{
  line-height: 1.6;
}

.ayn-section-title{
  font-size: 18px;
  font-weight: 700;
  margin: 0 0 var(--ayn-space-3);
}

/* Colonne sidebar */
.ayn-booking-sidebar{
  position: relative;
}

.ayn-booking-booking-box{
  position: sticky;
  top: 110px;
  background: transparent;
  border-radius: 0;
  border: 0;
  padding: var(--ayn-space-5) var(--ayn-space-5) var(--ayn-space-4);
  box-shadow: none;
  box-sizing: border-box;
}

/* Barre mobile sticky (compact) */
.ayn-booking-mobile-bar{
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: var(--ayn-z-sticky);
  background: var(--ayn-surface-1);
  box-shadow: 0 -4px 12px rgba(15, 23, 42, 0.08);
  padding: var(--ayn-space-3) var(--ayn-space-4);
  padding-bottom: calc(var(--ayn-space-3) + env(safe-area-inset-bottom, 0px));
  box-sizing: border-box;
  display: none; /* affichée seulement sur mobile */
  align-items: center;
  justify-content: space-between;
}

.ayn-booking-mobile-bar .ayn-booking-submit{
  background: var(--ayn-primary);
  color: var(--ayn-surface-1);
  height: var(--ayn-control-h-lg);
  border-radius: var(--ayn-radius-sm);
  font-family: var(--ayn-font-sans);
  font-weight: var(--ayn-weight-semibold);
  font-size: var(--ayn-text-lg);
  cursor: pointer;
  border: none;
  transition: background var(--ayn-duration-2) var(--ayn-ease),
              transform var(--ayn-duration-1) var(--ayn-ease);
}

/* ======================================
   Responsive Layout
   ====================================== */

@media (max-width: 1024px){
  .ayn-booking-single-logement{
    margin-bottom: 40px;
  }

  .ayn-booking-content-grid{
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .ayn-booking-booking-box{
    position: static;
    top: auto;
    box-shadow: none;
  }
}

@media (max-width: 768px){
  .ayn-booking-single-logement{
    padding: 0 12px 80px;
  }

  .ayn-booking-header-top{
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
  }

  .ayn-booking-content-grid{
    gap: 18px;
  }

  /* Sidebar devient carte simple + barre mobile activée */
  .ayn-booking-booking-box{
    box-shadow: none;
  }

  .ayn-booking-mobile-bar{
    display: flex;
  }
}

/* ======================================
   Ayn Booking — Booking Box Premium
   Responsive + Flatpickr
   ====================================== */

.ayn-booking-box{
  font-family: inherit;
  color: var(--ayn-text);
}

/* Sidebar : carte premium auto-portante */
.ayn-booking-box--sidebar{
  background:var(--ayn-surface-1, #ffffff);
  border:1px solid var(--ayn-border, #e2e8f0);
  border-radius:var(--ayn-radius-lg);
  padding:var(--ayn-space-6) var(--ayn-space-6) var(--ayn-space-6);
  box-shadow:var(--ayn-shadow-lg);
}

/* Theme-source variant: no inner padding by default.
   Template-specific CSS can re-apply spacing where needed. */
.ayn-booking-box.ayn-booking-box--sidebar.ayn-booking-button-source--theme{
  padding: 0;
}

.ayn-booking-form{
  display: flex;
  flex-direction: column;
  gap: var(--ayn-space-4);
}

/* Head price (base) */
.ayn-booking-price-head{
  padding-bottom: var(--ayn-space-3);
  border-bottom: 1px solid var(--ayn-border-subtle);
}

.ayn-price-line{
  display: flex;
  align-items: baseline;
  gap: var(--ayn-space-2);
  font-size: 16px;
  line-height: 1.2;
}
.ayn-price-label { color: var(--ayn-text); }
.ayn-price-value{
  font-family: var(--ayn-font-heading, 'Bricolage Grotesque', sans-serif);
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -0.03em;
  color: var(--ayn-text);
}
.ayn-price-suffix{
  font-size: 13px;
  color: var(--ayn-text-muted);
}
.ayn-price-sub{
  margin-top: var(--ayn-space-1);
  font-size: 12px;
  color: var(--ayn-text-muted);
  min-height: var(--ayn-space-4);
}

/* ==========================================================
   Variantes de style pour la booking box
   ========================================================== */

/* Accent : bandeau prix coloré (utilisé par hero-sidebar-booking-right) */
.ayn-booking-box-style--accent .ayn-booking-price-head{
  background: transparent;
  color: inherit;
  padding: 0 0 var(--ayn-space-3);
  border-bottom: 1px solid var(--ayn-border-subtle);
}

.ayn-booking-box-style--accent .ayn-price-label,
.ayn-booking-box-style--accent .ayn-price-suffix{
  opacity: 1;
}

.ayn-booking-box-style--accent .ayn-price-value{
  font-size:22px;
}

.ayn-booking-box-style--accent .ayn-booking-form{
  padding-top:var(--ayn-space-3);
}

/* Flat : version sans relief si besoin ailleurs */
.ayn-booking-box-style--flat{
  box-shadow:none;
  border-radius:0;
}

.ayn-booking-box-style--light{
  color: var(--ayn-text);
}

.ayn-booking-box-style--dark{
  color: var(--ayn-surface-1);
}

.ayn-booking-box-style--dark .ayn-field label,
.ayn-booking-box-style--dark .ayn-booking-summary,
.ayn-booking-box-style--dark .ayn-booking-summary .ayn-summary-line,
.ayn-booking-box-style--dark .ayn-price-label,
.ayn-booking-box-style--dark .ayn-price-suffix,
.ayn-booking-box-style--dark .ayn-price-sub,
.ayn-booking-box-style--dark .ayn-booking-services h4,
.ayn-booking-box-style--dark .ayn-service-label,
.ayn-booking-box-style--dark .ayn-service-price,
.ayn-booking-box-style--dark .ayn-service-unit{
  color: inherit;
}

.ayn-booking-box-style--dark .ayn-booking-price-head,
.ayn-booking-box-style--dark .ayn-booking-summary,
.ayn-booking-box-style--dark .ayn-booking-services{
  border-color: rgba(255,255,255,0.16);
}

.ayn-booking-box-style--dark .ayn-booking-summary .ayn-summary-line strong{
  color: inherit;
}

/* CTA inherits visual styling from theme (.button/.alt). */
/* Grid fields */
.ayn-booking-row{
  display:grid;
  grid-template-columns:1fr;
  gap:var(--ayn-space-3);
}
.ayn-booking-row--dates{
  grid-template-columns:1fr 1fr;
}

/* Field */
.ayn-field label{
  display:block;
  font-weight:600;
  font-size:12px;
  margin-bottom:var(--ayn-space-2);
  color:var(--ayn-text);
  letter-spacing:0.2px;
}
.ayn-field input{
  width:100%;
  padding:var(--ayn-space-3) var(--ayn-space-4);
  border:1px solid var(--ayn-border);
  border-radius:var(--ayn-radius-lg);
  font-size:15px;
  background:var(--ayn-surface-1);
  color:var(--ayn-text);
  transition:border-color var(--ayn-duration-2) var(--ayn-ease), box-shadow var(--ayn-duration-2) var(--ayn-ease);

  /* Focus visible géré par la règle :focus-visible ci-dessous */
  box-shadow:none;
  appearance:none;
  -webkit-appearance:none;
}
.ayn-field input:focus{
  border-color:var(--ayn-primary);
  box-shadow:0 0 0 2px var(--ayn-focus);
}
.ayn-field input:focus-visible{
  outline:2px solid var(--ayn-primary);
  outline-offset:2px;
}

/* ============================================================
   Guest Picker — Premium Redesign
   Bulletproof contre les overrides WooCommerce / thème
   ============================================================ */

.ayn-guest-picker{
  position:relative;
}

/* Trigger -------------------------------------------------- */
.ayn-guest-trigger,
.ayn-booking-box .ayn-guest-trigger{
  width:100% !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:10px !important;
  padding:12px 16px !important;
  border:1.5px solid var(--ayn-border, #e2e8f0) !important;
  border-radius:var(--ayn-radius-md) !important;
  background:var(--ayn-surface-1, #ffffff) !important;
  color:var(--ayn-text, #0f172a) !important;
  font-size:15px !important;
  font-weight:500 !important;
  font-family:inherit !important;
  line-height:1.4 !important;
  cursor:pointer !important;
  text-shadow:none !important;
  box-shadow:none !important;
  margin:0 !important;
  transition:border-color 160ms ease, box-shadow 160ms ease !important;
}
.ayn-booking-box .ayn-guest-trigger:hover{
  border-color:var(--ayn-slate-400, #94a3b8) !important;
  background:var(--ayn-surface-1, #ffffff) !important;
  box-shadow:0 0 0 3px rgba(0,0,0,0.04) !important;
}
.ayn-booking-box .ayn-guest-trigger[aria-expanded="true"]{
  border-color:var(--ayn-primary, #2563eb) !important;
  box-shadow:0 0 0 3px var(--ayn-focus, rgba(37,99,235,0.15)) !important;
}

.ayn-guest-trigger__icon{
  display:flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  color:var(--ayn-text-muted, #64748b);
  transition:transform 220ms cubic-bezier(0.16,1,0.3,1);
  pointer-events:none;
}
.ayn-guest-trigger[aria-expanded="true"] .ayn-guest-trigger__icon{
  transform:rotate(180deg);
}

/* Panel ---------------------------------------------------- */
.ayn-guest-panel{
  position:absolute;
  top:calc(100% + 8px);
  left:0;
  right:0;
  min-width:280px;
  background:var(--ayn-surface-1) !important;
  border:1px solid rgba(0,0,0,0.09);
  border-radius:20px;
  padding:20px;
  z-index:200;
  overflow:hidden;
  box-shadow:var(--ayn-shadow-xl);
  animation:ayn-guest-panel-in 180ms cubic-bezier(0.16,1,0.3,1);
}

.ayn-booking-box [data-ayn-guest-panel]{
  border-radius:20px;
  padding:20px;
}
@keyframes ayn-guest-panel-in{
  from{ opacity:0; transform:translateY(-8px) scale(0.98); }
  to  { opacity:1; transform:translateY(0)    scale(1);    }
}

/* Panel header */
.ayn-guest-panel__head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--ayn-space-3);
  padding:var(--ayn-space-4) var(--ayn-space-5) var(--ayn-space-3);
  border-bottom:1px solid rgba(0,0,0,0.06);
}
.ayn-guest-panel__title{
  font-weight:700;
  font-size:14px;
  color:var(--ayn-text, #0f172a);
}
.ayn-guest-panel__close,
.ayn-booking-box .ayn-guest-panel__close{
  border:0 !important;
  background:transparent !important;
  color:var(--ayn-text-muted, #64748b) !important;
  font-size:13px !important;
  font-weight:500 !important;
  cursor:pointer !important;
  padding:var(--ayn-space-1) var(--ayn-space-2) !important;
  border-radius:var(--ayn-radius-sm) !important;
  text-decoration:underline !important;
  text-underline-offset:2px !important;
  box-shadow:none !important;
  text-shadow:none !important;
  font-family:inherit !important;
  transition:color 120ms, background 120ms !important;
}
.ayn-booking-box .ayn-guest-panel__close:hover{
  color:var(--ayn-text, #0f172a) !important;
  background:rgba(0,0,0,0.04) !important;
}

/* Guest rows */
.ayn-guest-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--ayn-space-3);
  padding:var(--ayn-space-4) var(--ayn-space-5);
  border-bottom:1px solid rgba(0,0,0,0.05);
}
.ayn-guest-row:last-of-type{
  border-bottom:0;
}
.ayn-guest-row.is-disabled{
  opacity:0.45;
  pointer-events:none;
}
.ayn-guest-row__title{
  font-weight:600;
  font-size:15px;
  color:var(--ayn-text, #0f172a);
}
.ayn-guest-row__desc{
  font-size:12px;
  color:var(--ayn-text-muted, #64748b);
  margin-top:2px;
}

/* Stepper — cercles épurés (inspiré Airbnb) */
.ayn-guest-stepper{
  display:flex;
  align-items:center;
  gap:var(--ayn-space-4);
  flex-shrink:0;
}
.ayn-guest-stepper__btn,
.ayn-booking-box .ayn-guest-stepper__btn{
  width:32px !important;
  height:32px !important;
  border-radius:50% !important;
  border:1.5px solid var(--ayn-border, #e2e8f0) !important;
  background:transparent !important;
  color:var(--ayn-text, #0f172a) !important;
  font-size:20px !important;
  font-weight:300 !important;
  font-family:inherit !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  cursor:pointer !important;
  padding:0 !important;
  line-height:1 !important;
  box-shadow:none !important;
  text-shadow:none !important;
  flex-shrink:0 !important;
  transition:border-color 140ms, background 140ms, transform 80ms !important;
}
.ayn-booking-box .ayn-guest-stepper__btn:not(:disabled):hover{
  border-color:var(--ayn-slate-600, #475569) !important;
  background:rgba(0,0,0,0.04) !important;
}
.ayn-booking-box .ayn-guest-stepper__btn:not(:disabled):active{
  transform:scale(0.88) !important;
}
.ayn-guest-stepper__btn:disabled,
.ayn-booking-box .ayn-guest-stepper__btn:disabled{
  opacity:0.28 !important;
  cursor:not-allowed !important;
}
.ayn-guest-stepper__count{
  min-width:22px;
  text-align:center;
  font-weight:600;
  font-size:15px;
  color:var(--ayn-text, #0f172a);
  font-variant-numeric:tabular-nums;
}

/* Notes capacité / alertes */
.ayn-guest-note{
  padding:var(--ayn-space-3) var(--ayn-space-5) var(--ayn-space-4);
  font-size:12px;
  line-height:1.55;
  color:var(--ayn-text-muted, #64748b);
  margin:0;
}
.ayn-guest-note--alert{
  color:var(--ayn-danger, #dc2626);
  font-weight:600;
}

/* Mobile : bottom sheet ------------------------------------ */
@media(max-width:640px){
  .ayn-guest-panel{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    top:auto;
    border-radius:20px;
    min-width:0;
    max-height:78vh;
    overflow-y:auto;
    padding:20px 20px calc(env(safe-area-inset-bottom, 0px) + 20px);
    box-shadow:0 -8px 40px rgba(0,0,0,0.18);
    animation:ayn-guest-sheet-in 260ms cubic-bezier(0.16,1,0.3,1);
  }
  @keyframes ayn-guest-sheet-in{
    from{ transform:translateY(100%); opacity:0; }
    to  { transform:translateY(0);    opacity:1; }
  }
  /* Handle de glissement */
  .ayn-guest-panel::before{
    content:'';
    display:block;
    width:40px;
    height:4px;
    border-radius:2px;
    background:rgba(0,0,0,0.13);
    margin:10px auto 0;
  }
  .ayn-guest-trigger,
  .ayn-booking-box .ayn-guest-trigger{
    padding:14px 16px !important;
  }
  .ayn-guest-stepper__btn,
  .ayn-booking-box .ayn-guest-stepper__btn{
    width:38px !important;
    height:38px !important;
    font-size:22px !important;
  }
}

/* Services */
.ayn-booking-services{
  border-top:1px solid var(--ayn-border-subtle);
  padding-top:var(--ayn-space-2);
}
.ayn-booking-services h4{
  margin:var(--ayn-space-2) 0 var(--ayn-space-1);
  font-size:14px;
  font-weight:700;
}
.ayn-services-modal-trigger{
  border:1px solid var(--ayn-border);
  background:var(--ayn-surface-1);
  transition:border-color var(--ayn-duration-2) var(--ayn-ease), background var(--ayn-duration-2) var(--ayn-ease);
  padding:var(--ayn-space-2) var(--ayn-space-3);
  border-radius:var(--ayn-radius-full);
  display:inline-flex;
  align-items:center;
  gap:var(--ayn-space-2);
  font-weight:600;
  border-radius:var(--ayn-radius-full);
  justify-content:center;
  color:var(--ayn-text);
  cursor:pointer;
}
.ayn-services-modal-trigger:hover{
  border-color:var(--ayn-slate-400);
}
.ayn-services-modal-trigger svg{
  width:16px;
  height:16px;
  fill:currentColor;
}
.ayn-service{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:var(--ayn-space-3) 0;
  border-top:1px dashed var(--ayn-border);
  gap:var(--ayn-space-3);
}
.ayn-service:first-of-type{ border-top:0; }

.ayn-service-left{ flex:1; min-width:0; }
.ayn-service-label{
  font-weight:600;
  font-size:14px;
  margin-bottom:2px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.ayn-service-price{
  font-size:13px;
  color:var(--ayn-text-subtle);
}
.ayn-service-unit{
  color:var(--ayn-text-muted);
  margin-left:4px;
  font-size:12px;
}

.ayn-service-right input{
  width:76px;
  padding:var(--ayn-space-2) var(--ayn-space-3);
  border:1px solid var(--ayn-border);
  border-radius:var(--ayn-radius-sm);
  font-size:14px;
  text-align:center;
  box-shadow:none;
}
.ayn-service-right input:focus{
  border-color:var(--ayn-text);
  box-shadow:0 0 0 2px var(--ayn-focus);
}
.ayn-service-right input:focus-visible{
  outline:2px solid var(--ayn-primary);
  outline-offset:2px;
}

/* Service cards (section + modal) */
.ayn-services-list{
  display:block;
}
.ayn-services-grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:var(--ayn-space-6);
}
.ayn-service-card{
  display:flex;
  flex-direction:column;
  border:0;
  border-radius:var(--ayn-radius-lg);
  background:var(--ayn-surface-1);
  overflow:visible;
  padding:var(--ayn-space-3);
  box-shadow:var(--ayn-shadow-xl);
}
.ayn-service-card__media{
  position:relative;
  width:100%;
  aspect-ratio:1 / 1;
  overflow:hidden;
  background:var(--ayn-surface-2);
  border-radius:var(--ayn-radius-md);
}
.ayn-service-card__media img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  border-radius:var(--ayn-radius-md);
}
.ayn-service-card__body{
  display:flex;
  flex-direction:column;
  gap:var(--ayn-space-4);
  padding:var(--ayn-space-4) var(--ayn-space-4) var(--ayn-space-5);
}
.ayn-service-card__title{
  font-weight:700;
  font-size:20px;
  margin:0;
  line-height:1.2;
}
.ayn-service-card__title span{
  display:-webkit-box;
  -webkit-line-clamp:1;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.ayn-service-card__footer{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--ayn-space-4);
  flex-wrap:wrap;
}
.ayn-service-card__price{
  font-size:16px;
  color:var(--ayn-booking-accent-color, #C73E1D);
  font-weight:700;
}
.ayn-service-card__unit{
  color:var(--ayn-text-muted);
  margin-left:6px;
  font-weight:500;
}
.ayn-service-card__actions{
  display:flex;
  align-items:stretch;
  gap:var(--ayn-space-4);
}
.ayn-service-card__add{
  border:0;
  background:var(--ayn-booking-accent-color, #C73E1D);
  color:var(--ayn-surface-1);
  border-radius:var(--ayn-radius-full);
  padding:var(--ayn-space-4) var(--ayn-space-6);
  font-size:15px;
  font-weight:700;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  cursor:pointer;
  flex:1;
  box-shadow:none;
}
.ayn-service-card__add svg{
  width:14px;
  height:14px;
  fill:currentColor;
}
.ayn-service-card__stepper{
  display:inline-flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--ayn-space-3);
  padding:var(--ayn-space-2) var(--ayn-space-3);
  min-width:140px;
  border:1px solid var(--ayn-border);
  border-radius:var(--ayn-radius-full);
  background:var(--ayn-surface-1);
}
.ayn-service-card__stepper-btn{
  width:34px;
  height:34px;
  border-radius:var(--ayn-radius-full);
  border:0;
  cursor:pointer;
  font-weight:700;
  font-size:16px;
  box-shadow:none;
  line-height:1;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.ayn-service-card__stepper-btn[data-ayn-service-decr]{
  background:var(--ayn-border);
  color:var(--ayn-booking-accent-color, #C73E1D);
}
.ayn-service-card__stepper-btn[data-ayn-service-incr]{
  background:var(--ayn-booking-accent-color, #C73E1D);
  color:var(--ayn-surface-1);
}
.ayn-service-card__stepper-btn:disabled{
  opacity:0.5;
  cursor:default;
}
.ayn-service-card__count{
  min-width:18px;
  text-align:center;
  font-weight:700;
  font-size:16px;
  color:var(--ayn-text);
}

.ayn-service-card.is-disabled{
  opacity:0.6;
}
.ayn-service-card__notice{
  margin:4px 0 0;
  font-size:12px;
  color:var(--ayn-danger);
}

.ayn-services-pagination{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:var(--ayn-space-2);
  margin-top:var(--ayn-space-4);
}
.ayn-services-pagination button{
  border:1px solid var(--ayn-border);
  background:var(--ayn-surface-1);
  color:var(--ayn-text);
  min-width:36px;
  height:36px;
  border-radius:var(--ayn-radius-full);
  padding:0 var(--ayn-space-3);
  font-weight:600;
  cursor:pointer;
}
.ayn-services-pagination button:hover{
  border-color:var(--ayn-slate-400);
}
.ayn-services-pagination button.is-active{
  background:var(--ayn-booking-accent-color, #C73E1D);
  border-color:var(--ayn-booking-accent-color, #C73E1D);
  color:var(--ayn-surface-1);
}
.ayn-services-pagination button:disabled{
  opacity:0.5;
  cursor:default;
}

/* Services step page */
.ayn-services-step{
  max-width:1200px;
  margin:0 auto;
  padding:var(--ayn-space-6) var(--ayn-space-4) var(--ayn-space-16);
}
.ayn-services-step__grid{
  display:grid;
  grid-template-columns:minmax(0,1.85fr) minmax(280px,1fr);
  gap:var(--ayn-space-8);
  align-items:start;
}
.ayn-services-step__main{
  display:flex;
  flex-direction:column;
  gap:var(--ayn-space-5);
}
.ayn-services-step__title{
  font-size:24px;
  font-weight:700;
  margin:0;
}
.ayn-services-step__subtitle{
  color:var(--ayn-text-muted);
  margin:0;
}
.ayn-services-step__summary{
  position:sticky;
  top:90px;
}
.ayn-services-step__card{
  border:1px solid var(--ayn-border-subtle);
  border-radius:var(--ayn-radius-lg);
  background:var(--ayn-surface-1);
  padding:var(--ayn-space-4);
  box-shadow:var(--ayn-shadow-lg);
}
.ayn-services-step__product{
  display:flex;
  gap:var(--ayn-space-3);
  align-items:center;
}
.ayn-services-step__product img{
  width:64px;
  height:64px;
  border-radius:var(--ayn-radius-md);
  object-fit:cover;
}
.ayn-services-step__product-title{
  font-weight:700;
  margin:0;
  line-height:1.3;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.ayn-services-step__meta{
  margin-top:var(--ayn-space-3);
  display:flex;
  flex-direction:column;
  gap:var(--ayn-space-2);
  font-size:14px;
  color:var(--ayn-text-subtle);
}
.ayn-services-step__totals{
  margin-top:var(--ayn-space-4);
  border-top:1px solid var(--ayn-border-subtle);
  padding-top:var(--ayn-space-3);
  display:flex;
  flex-direction:column;
  gap:var(--ayn-space-2);
}
.ayn-services-step__totals-row{
  display:flex;
  justify-content:space-between;
  font-size:14px;
}
.ayn-services-step__totals-row--grand{
  font-weight:700;
  font-size:16px;
}
.ayn-services-step__actions{
  margin-top:var(--ayn-space-4);
  display:flex;
  flex-direction:column;
  gap:var(--ayn-space-3);
}
.ayn-services-step__actions .button{
  border-radius:var(--ayn-radius-full);
  font-weight:700;
  padding:var(--ayn-space-3) var(--ayn-space-4);
  box-shadow:none;
}
.ayn-services-step__actions .button-primary{
  background:var(--ayn-booking-accent-color, #C73E1D);
  border-color:var(--ayn-booking-accent-color, #C73E1D);
  color:var(--ayn-surface-1);
}
.ayn-services-step__actions .button-secondary{
  background:var(--ayn-surface-1);
  border:1px solid var(--ayn-border);
  color:var(--ayn-text);
}

@media(max-width:768px){
  .ayn-services-step__grid{
    grid-template-columns:1fr;
  }
  .ayn-services-step__summary{
    position:static;
  }
}

@media(max-width:640px){
  .ayn-services-step__actions{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    background:var(--ayn-surface-1);
    padding:12px 16px 14px;
    margin:0;
    border-top:1px solid var(--ayn-border-subtle);
    z-index:999;
  }
  .ayn-services-step__actions .button{
    width:100%;
  }
  .ayn-services-step__actions .button-secondary{
    margin-bottom:2px;
  }
  .ayn-services-step__grid{
    padding-bottom:110px;
  }
}

/* Modal services */
body.ayn-modal-open{
  overflow:hidden;
}
.ayn-services-modal{
  position:fixed;
  inset:0;
  z-index:99999;
  display:none;
}
.ayn-services-modal.is-open{
  display:block;
}
.ayn-services-modal__overlay{
  position:absolute;
  inset:0;
  background:rgba(0,0,0,0.45);
}
.ayn-services-modal__dialog{
  position:relative;
  max-width:720px;
  margin:6vh auto;
  background:var(--ayn-surface-1);
  border-radius:var(--ayn-radius-lg);
  padding:var(--ayn-space-5) var(--ayn-space-5) var(--ayn-space-5);
  box-shadow:var(--ayn-shadow-xl);
  max-height:80vh;
  overflow:auto;
}
.ayn-services-modal__header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--ayn-space-3);
  margin-bottom:var(--ayn-space-4);
}
.ayn-services-modal__header h3{
  margin:0;
  font-size:18px;
}
.ayn-services-modal__close{
  border:1px solid var(--ayn-border);
  background:var(--ayn-surface-1);
  border-radius:var(--ayn-radius-full);
  width:32px;
  height:32px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}
.ayn-services-modal__close:hover{
  border-color:var(--ayn-slate-400);
}
.ayn-booking-box .screen-reader-text{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

@media(max-width:640px){
  .ayn-services-grid{
    grid-template-columns:1fr;
  }
  .ayn-services-modal__dialog{
    margin:4vh 12px;
  }
}

/* Summary */
.ayn-booking-summary{
  border-top:1px solid var(--ayn-border-subtle);
  padding-top:var(--ayn-space-3);
  display:flex;
  flex-direction:column;
  gap:var(--ayn-space-2);
}
.ayn-summary-line{
  display:flex;
  justify-content:space-between;
  font-size:14px;
  color:var(--ayn-text);
}
.ayn-summary-line strong{
  font-weight:600;
}
.ayn-summary-line--grand{
  font-size:16px;
  font-weight:800;
}

/* Errors */
.ayn-booking-errors{
  font-size:var(--ayn-text-sm);
  color:var(--ayn-red-700);
  min-height:var(--ayn-space-5);
  background:var(--ayn-red-50);
  border:1px solid var(--ayn-red-100);
  border-radius:var(--ayn-radius-sm);
  padding:var(--ayn-space-3) var(--ayn-space-4);
  font-weight:var(--ayn-weight-medium);
  margin-top:var(--ayn-space-3);
  display:flex;
  align-items:center;
  gap:var(--ayn-space-2);
}
.ayn-booking-errors:empty{
  display:none;
}
.ayn-booking-errors::before{
  content:"";
  flex-shrink:0;
  width:var(--ayn-space-4);
  height:var(--ayn-space-4);
  background-color:var(--ayn-red-600);
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 6a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 6zm0 9a1 1 0 100-2 1 1 0 000 2z' clip-rule='evenodd'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 6a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 6zm0 9a1 1 0 100-2 1 1 0 000 2z' clip-rule='evenodd'/%3E%3C/svg%3E");
  -webkit-mask-size:contain;
  mask-size:contain;
  -webkit-mask-repeat:no-repeat;
  mask-repeat:no-repeat;
}
.ayn-error-line{
  padding:var(--ayn-space-2) var(--ayn-space-3);
  background:var(--ayn-red-50);
  border:1px solid var(--ayn-red-100);
  border-radius:var(--ayn-radius-sm);
}

/* Submit — CTA principal */
.ayn-booking-submit{
  display:block;
  width:100%;
  max-width:100%;
  text-align:center;
  box-sizing:border-box;
  background:var(--ayn-primary);
  color:var(--ayn-surface-1);
  height:var(--ayn-control-h-lg);
  border-radius:var(--ayn-radius-sm);
  font-family:var(--ayn-font-sans);
  font-weight:var(--ayn-weight-semibold);
  font-size:var(--ayn-text-lg);
  cursor:pointer;
  border:none;
  transition:background var(--ayn-duration-2) var(--ayn-ease),
             transform var(--ayn-duration-1) var(--ayn-ease);
  position:relative;
  line-height:1;
}
.ayn-booking-submit:hover{
  background:var(--ayn-primary-hover);
}
.ayn-booking-submit:active{
  background:var(--ayn-primary-active);
  transform:scale(0.98);
}
.ayn-booking-submit:focus-visible{
  outline:2px solid var(--ayn-focus);
  outline-offset:2px;
}
.ayn-booking-submit:disabled{
  opacity:0.5;
  cursor:not-allowed;
}

/* Loading */
.ayn-booking-box.is-loading{
  opacity:.75;
  pointer-events:none;
}

/* Submit loading spinner */
.ayn-booking-submit.is-loading{
  opacity:0.7;
  pointer-events:none;
  color:transparent;
}
.ayn-booking-submit.is-loading::after{
  content:"";
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%, -50%);
  width:var(--ayn-space-5);
  height:var(--ayn-space-5);
  border:2px solid rgba(255,255,255,0.3);
  border-top-color:var(--ayn-surface-1);
  border-radius:var(--ayn-radius-full);
  animation:ayn-spin 0.6s linear infinite;
}

@keyframes ayn-spin{
  to{ transform:translate(-50%, -50%) rotate(360deg); }
}

/* Price loading skeleton shimmer */
.ayn-booking-price-loading .ayn-summary-line{
  position:relative;
  overflow:hidden;
  color:transparent;
  border-radius:var(--ayn-radius-xs);
  background:var(--ayn-surface-2);
}
.ayn-booking-price-loading .ayn-summary-line::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(
    90deg,
    transparent 0%,
    var(--ayn-surface-1) 50%,
    transparent 100%
  );
  animation:ayn-shimmer 1.5s ease infinite;
}

@keyframes ayn-shimmer{
  0%{ transform:translateX(-100%); }
  100%{ transform:translateX(100%); }
}

/* ===== MOBILE BAR MODE ===== */
.ayn-mobile-bar-compact{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:var(--ayn-space-3);
}
.ayn-mobile-bar-price{ font-size:15px; font-weight:600; }
.ayn-mobile-bar-toggle{
  display:inline-block;
  box-sizing:border-box;
}
.ayn-mobile-bar-panel{
  margin-top:var(--ayn-space-3);
  padding-top:var(--ayn-space-3);
  border-top:1px solid var(--ayn-border);
}

/* ======================================
   Flatpickr styling (match inputs)
   ====================================== */

.flatpickr-alt-input{
  width:100% !important;
  padding:var(--ayn-space-3) var(--ayn-space-4) !important;
  border:1px solid var(--ayn-border) !important;
  border-radius:var(--ayn-radius-lg) !important;
  font-size:15px !important;
  background:var(--ayn-surface-1) !important;
  color:var(--ayn-text) !important;

  box-shadow:none !important;
}
.flatpickr-alt-input:focus-visible {
  border-color: var(--ayn-primary) !important;
  box-shadow: 0 0 0 3px var(--ayn-focus) !important;
  outline: 2px solid var(--ayn-primary) !important;
  outline-offset: 2px;
}

/* ======================================================
   REDESIGN — Booking Box Premium v2
   Overrides ciblés pour un rendu moderne et soigné.
   ====================================================== */

/* ── Carte (Classique) ─────────────────────────────── */
.ayn-booking-box--sidebar {
  border: 1px solid rgba(15, 23, 42, 0.07);
  border-radius: 20px;
  padding: 24px;
  box-shadow: 0 2px 4px rgba(15, 23, 42, 0.03),
              0 8px 28px rgba(15, 23, 42, 0.07);
}

/* ── Bandeau prix ──────────────────────────────────── */
.ayn-booking-price-head {
  padding-bottom: 20px;
  margin-bottom: 2px;
  border-bottom: 1px solid rgba(15, 23, 42, 0.06);
}

.ayn-price-line {
  gap: 5px;
  line-height: 1;
}

.ayn-price-label {
  color: var(--ayn-text-muted);
  font-size: 14px;
}

.ayn-price-value {
  font-size: 32px;
  letter-spacing: -0.04em;
}

/* ── Champs dates — conteneur unifié ──────────────── */
.ayn-booking-row--dates {
  border: 1px solid var(--ayn-border, #e2e8f0);
  border-radius: 14px;
  overflow: hidden;
  gap: 0;
  transition: border-color 160ms ease, box-shadow 160ms ease;
}

.ayn-booking-row--dates:focus-within {
  border-color: var(--ayn-primary, #2563eb);
  box-shadow: 0 0 0 3px var(--ayn-focus, rgba(37, 99, 235, 0.12));
}

.ayn-booking-row--dates .ayn-field {
  padding: 11px 14px;
  min-height: 58px;
  box-sizing: border-box;
}

.ayn-booking-row--dates .ayn-field + .ayn-field {
  border-left: 1px solid var(--ayn-border, #e2e8f0);
}

.ayn-booking-row--dates .ayn-field label {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.55px;
  color: var(--ayn-text-muted, #64748b);
  margin-bottom: 4px;
}

.ayn-booking-row--dates .ayn-field input,
.ayn-booking-box .ayn-booking-row--dates .ayn-field input {
  border: 0 !important;
  border-radius: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  height: auto !important;
  line-height: 1.3 !important;
  color: var(--ayn-text, #0f172a) !important;
}

.ayn-booking-row--dates .ayn-field input:focus,
.ayn-booking-row--dates .ayn-field input:focus-visible,
.ayn-booking-box .ayn-booking-row--dates .ayn-field input:focus,
.ayn-booking-box .ayn-booking-row--dates .ayn-field input:focus-visible {
  border: 0 !important;
  outline: none !important;
  box-shadow: none !important;
}

/* Flatpickr alt-input dans le conteneur unifié */
.ayn-booking-row--dates .flatpickr-alt-input,
.ayn-booking-box .ayn-booking-row--dates .flatpickr-alt-input {
  border: 0 !important;
  border-radius: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  height: auto !important;
  line-height: 1.3 !important;
}

.ayn-booking-row--dates .flatpickr-alt-input:focus-visible {
  border: 0 !important;
  outline: none !important;
  box-shadow: none !important;
}

/* ── Voyageurs — même style conteneur ────────────── */
.ayn-booking-row:not(.ayn-booking-row--dates) .ayn-field--guests {
  border: 1px solid var(--ayn-border, #e2e8f0);
  border-radius: 14px;
  padding: 11px 14px;
  transition: border-color 160ms ease, box-shadow 160ms ease;
}

.ayn-booking-row:not(.ayn-booking-row--dates) .ayn-field--guests:focus-within {
  border-color: var(--ayn-primary, #2563eb);
  box-shadow: 0 0 0 3px var(--ayn-focus, rgba(37, 99, 235, 0.12));
}

.ayn-booking-row:not(.ayn-booking-row--dates) .ayn-field--guests > label {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.55px;
  color: var(--ayn-text-muted, #64748b);
  margin-bottom: 6px;
}

/* Guest trigger sans border (le conteneur la porte déjà) */
.ayn-booking-box .ayn-booking-row:not(.ayn-booking-row--dates) .ayn-field--guests .ayn-guest-trigger {
  border: 0 !important;
  border-radius: 0 !important;
  padding: 0 !important;
  box-shadow: none !important;
  height: auto !important;
  min-height: 0 !important;
  background: transparent !important;
}

.ayn-booking-box .ayn-booking-row:not(.ayn-booking-row--dates) .ayn-field--guests .ayn-guest-trigger:hover {
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.ayn-booking-box .ayn-booking-row:not(.ayn-booking-row--dates) .ayn-field--guests .ayn-guest-trigger[aria-expanded="true"] {
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
}

/* ── Récap ─────────────────────────────────────────── */
.ayn-booking-summary {
  border-top: 1px solid rgba(15, 23, 42, 0.06);
  gap: 6px;
}

.ayn-summary-line {
  align-items: center;
  color: var(--ayn-text-muted, #64748b);
}

.ayn-summary-line strong {
  color: var(--ayn-text, #0f172a);
}

.ayn-summary-line--grand {
  font-size: 15px;
  font-weight: 700;
  color: var(--ayn-text, #0f172a);
  border-top: 1px solid rgba(15, 23, 42, 0.06);
  padding-top: 12px;
  margin-top: 4px;
}

.ayn-summary-line--grand span {
  color: var(--ayn-text, #0f172a);
}

.ayn-summary-line--grand strong {
  font-size: 17px;
  font-weight: 800;
  color: var(--ayn-text, #0f172a);
}

/* ── Bouton Réserver ─────────────────────────────── */
.ayn-booking-submit {
  min-height: 52px;
  height: auto;
  border-radius: 14px;
  font-weight: 700;
  font-size: 16px;
  letter-spacing: 0.1px;
  transition: background 200ms ease,
              transform 100ms ease,
              box-shadow 200ms ease;
}

.ayn-booking-submit:not(:disabled):hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.16);
}

.ayn-booking-submit:not(:disabled):active {
  transform: scale(0.98);
  box-shadow: none;
}

/* Disabled dates Airbnb-like */
.flatpickr-day.disabled,
.flatpickr-day.flatpickr-disabled{
  background:var(--ayn-danger-soft) !important;
  color:var(--ayn-danger) !important;
  text-decoration:line-through;
  cursor:not-allowed !important;
}

/* Selected range premium */
.flatpickr-day.selected,
.flatpickr-day.startRange,
.flatpickr-day.endRange{
  border-color:var(--ayn-text) !important;
}
.flatpickr-day.inRange{
  background:var(--ayn-surface-2) !important;
}

/* Responsive pour les champs */
@media (max-width: 640px){
  .ayn-booking-row--dates{ grid-template-columns:1fr; }
  .ayn-field input,
  .flatpickr-alt-input{ font-size:16px !important; } /* anti zoom iOS */
}


/* ======================================
   CRO Enhancement: Sticky Booking Box
   Trust Badges & Breakdown transparent
   ====================================== */

/* Sticky sidebar for desktop */
@media (min-width: 1024px) {
  .ayn-booking-sidebar .ayn-booking-box {
    position: sticky;
    top: 100px;
    z-index: 50;
  }
}

/* Premium box styling */
.ayn-booking-box--premium {
  background: var(--ayn-surface-1);
  border: 1px solid var(--ayn-border-subtle);
  border-radius: var(--ayn-radius-lg);
  padding: var(--ayn-space-5);
  box-shadow: var(--ayn-shadow-lg);
  transition: box-shadow 0.25s ease;
}

.ayn-booking-box--premium:hover {
  box-shadow: var(--ayn-shadow-xl);
}

/* Header moderne */
.ayn-booking-box__header {
  padding-bottom: var(--ayn-space-4);
  border-bottom: 1px solid var(--ayn-border-subtle);
  margin-bottom: var(--ayn-space-4);
}

.ayn-booking-box__title {
  font-size: 20px;
  font-weight: 700;
  color: var(--ayn-text);
  line-height: 1.3;
}

.ayn-booking-box__subtitle {
  font-size: 13px;
  color: var(--ayn-text-muted);
  margin-top: var(--ayn-space-1);
}

/* Pricing breakdown transparent */
.ayn-pricing-card {
  background: transparent;
  padding: 0;
}

.ayn-pricing-breakdown {
  display: flex;
  flex-direction: column;
  gap: var(--ayn-space-3);
  margin-bottom: var(--ayn-space-3);
}

.ayn-pricing-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: 14px;
  color: var(--ayn-slate-700);
  gap: var(--ayn-space-3);
}

.ayn-pricing-row span:first-child {
  flex: 1;
  min-width: 0;
}

.ayn-pricing-row--nights span:first-child {
  color: var(--ayn-text-muted);
}

.ayn-pricing-row--services span:first-child,
.ayn-pricing-row--fees span:first-child {
  color: var(--ayn-text-muted);
}

.ayn-pricing-divider {
  height: 1px;
  background: var(--ayn-border-subtle);
  margin: var(--ayn-space-2) 0;
}

.ayn-pricing-row--total {
  font-size: 16px;
  font-weight: 700;
  color: var(--ayn-text);
  padding-top: var(--ayn-space-2);
}

.ayn-pricing-row--total strong {
  font-size: 18px;
  color: var(--ayn-booking-accent-color, #111);
}

.ayn-pricing-status {
  font-size: 13px;
  color: var(--ayn-success);
  margin-top: var(--ayn-space-2);
  min-height: 18px;
}

.ayn-pricing-errors {
  font-size: 13px;
  color: var(--ayn-danger);
  margin-top: var(--ayn-space-1);
  min-height: 18px;
}

/* CTA section */
.ayn-booking-section--cta {
  display: flex;
  flex-direction: column;
  gap: var(--ayn-space-3);
}

.ayn-booking-submit:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Legal micro-copy */
.ayn-booking-legal {
  text-align: center;
  font-size: 12px;
  color: var(--ayn-text-muted);
  padding: 0 var(--ayn-space-2);
}

/* Trust Badges CRO */
.ayn-trust-badges {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--ayn-space-4);
  padding-top: var(--ayn-space-3);
  border-top: 1px solid var(--ayn-border-subtle);
  margin-top: var(--ayn-space-1);
}

.ayn-trust-badge {
  display: flex;
  align-items: center;
  gap: var(--ayn-space-2);
  font-size: 11px;
  color: var(--ayn-text-muted);
  white-space: nowrap;
}

.ayn-trust-badge__icon {
  width: 14px;
  height: 14px;
  color: var(--ayn-success);
  flex-shrink: 0;
}

/* Mobile optimizations */
@media (max-width: 768px) {
  .ayn-booking-box--premium {
    padding: var(--ayn-space-4);
    border-radius: var(--ayn-radius-lg);
  }

  .ayn-booking-box__title {
    font-size: 18px;
  }

  .ayn-trust-badges {
    gap: var(--ayn-space-3);
  }

  .ayn-trust-badge {
    font-size: 10px;
  }
}

/* Animation subtile au scroll */
@keyframes ayn-booking-box-appear {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.ayn-booking-box--premium.is-visible {
  animation: ayn-booking-box-appear 0.3s ease-out;
}

/* =====================================================
   Flatpickr: nightly prices on calendar days
   ===================================================== */
.flatpickr-day.has-price {
  position: relative;
  padding-bottom: var(--ayn-space-4);
}
.ayn-day-price {
  position: absolute;
  bottom: 1px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 9px;
  line-height: 1;
  color: var(--ayn-text-muted);
  white-space: nowrap;
  pointer-events: none;
}
.flatpickr-day.selected .ayn-day-price,
.flatpickr-day.startRange .ayn-day-price,
.flatpickr-day.endRange .ayn-day-price,
.flatpickr-day.inRange .ayn-day-price {
  color: rgba(255,255,255,0.8);
}
.flatpickr-day.flatpickr-disabled .ayn-day-price {
  display: none;
}

/* Multi-month responsive adjustments */
.flatpickr-calendar.multiMonth {
  font-size: 13px;
}
@media (max-width: 768px) {
  .flatpickr-calendar.multiMonth .flatpickr-months {
    flex-direction: column;
  }
  .flatpickr-calendar.multiMonth .flatpickr-month {
    width: 100%;
  }
}

/* ======================================================
   FIXES — Guest panel & date inputs (v2)
   ====================================================== */

/* ── Guest panel : fond solide garanti ─────────────── */
/* Le panel est position:absolute — le parent ne doit PAS
   avoir overflow:hidden. En complément on force le fond. */
.ayn-booking-box .ayn-guest-panel,
.ayn-booking-box [data-ayn-guest-panel] {
  background-color: #ffffff !important;
  background: #ffffff !important;
  isolation: isolate;
  z-index: 1000 !important;
}

/* Assurer que le conteneur .ayn-field--guests ne crée pas
   de contexte d'empilement qui bloquerait le panel */
.ayn-booking-row:not(.ayn-booking-row--dates) .ayn-field--guests {
  isolation: auto;
  z-index: auto;
}

/* ── Flatpickr alt-input dans conteneur unifié ──────── */
/* Sélecteurs haute spécificité pour écraser le !important
   global de .flatpickr-alt-input */
.ayn-booking-box .ayn-booking-row--dates .ayn-field .flatpickr-alt-input,
.ayn-booking-box .ayn-booking-row--dates .flatpickr-alt-input {
  border: 0 !important;
  border-radius: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  height: auto !important;
  min-height: 0 !important;
  line-height: 1.3 !important;
  width: 100% !important;
  color: var(--ayn-text, #0f172a) !important;
  outline: none !important;
}

.ayn-booking-box .ayn-booking-row--dates .flatpickr-alt-input:focus,
.ayn-booking-box .ayn-booking-row--dates .flatpickr-alt-input:focus-visible {
  border: 0 !important;
  outline: none !important;
  box-shadow: none !important;
}

/* ── Responsive : 1 colonne — retirer le border-left ─── */
@media (max-width: 640px) {
  .ayn-booking-row--dates {
    grid-template-columns: 1fr;
  }
  .ayn-booking-row--dates .ayn-field + .ayn-field {
    border-left: 0;
    border-top: 1px solid var(--ayn-border, #e2e8f0);
  }
}

/* ── Flatpickr calendrier — styles de base robustes ─── */
.flatpickr-calendar {
  background: #ffffff !important;
  border: 1px solid rgba(15, 23, 42, 0.09) !important;
  border-radius: 16px !important;
  box-shadow: 0 8px 32px rgba(15, 23, 42, 0.12),
              0 2px 8px rgba(15, 23, 42, 0.06) !important;
  font-family: inherit !important;
  overflow: hidden;
}

/* Requested spacing for the opened range multi-month popup. */
.flatpickr-calendar.rangeMode.animate.multiMonth.arrowLeft.open.arrowTop.rightMost,
.flatpickr-calendar.rangeMode.multiMonth{
  padding: 10px !important;
}

.flatpickr-calendar::before,
.flatpickr-calendar::after {
  display: none !important;
}

.flatpickr-months {
  background: #f8fafc;
  border-bottom: 1px solid rgba(15, 23, 42, 0.06);
  padding: 6px 0;
}

.flatpickr-month {
  color: var(--ayn-text, #0f172a) !important;
  fill: var(--ayn-text, #0f172a) !important;
}

.flatpickr-current-month {
  font-size: 14px !important;
  font-weight: 700 !important;
  color: var(--ayn-text, #0f172a) !important;
  padding-top: 4px !important;
}

.flatpickr-weekday {
  font-size: 11px !important;
  font-weight: 700 !important;
  color: var(--ayn-text-muted, #64748b) !important;
  text-transform: uppercase;
}

.flatpickr-day {
  border-radius: 8px !important;
  font-size: 13px !important;
  color: var(--ayn-text, #0f172a) !important;
  border: 0 !important;
}

.flatpickr-day:hover:not(.flatpickr-disabled):not(.selected):not(.startRange):not(.endRange) {
  background: var(--ayn-surface-2, #f1f5f9) !important;
  border: 0 !important;
}

.flatpickr-day.today:not(.selected) {
  border: 1.5px solid rgba(15, 23, 42, 0.2) !important;
}

.flatpickr-day.selected,
.flatpickr-day.startRange,
.flatpickr-day.endRange {
  background: var(--ayn-text, #0f172a) !important;
  border-color: var(--ayn-text, #0f172a) !important;
  color: #ffffff !important;
  border-radius: 8px !important;
}

.flatpickr-day.inRange {
  background: rgba(15, 23, 42, 0.06) !important;
  border: 0 !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}

.flatpickr-day.startRange {
  border-radius: 8px 0 0 8px !important;
}

.flatpickr-day.endRange {
  border-radius: 0 8px 8px 0 !important;
}

.flatpickr-day.startRange.endRange {
  border-radius: 8px !important;
}

/* Prev/next month arrows */
.flatpickr-prev-month,
.flatpickr-next-month {
  color: var(--ayn-text-muted, #64748b) !important;
  fill: var(--ayn-text-muted, #64748b) !important;
  padding: 8px 12px !important;
}

.flatpickr-prev-month:hover,
.flatpickr-next-month:hover {
  color: var(--ayn-text, #0f172a) !important;
  fill: var(--ayn-text, #0f172a) !important;
  background: transparent !important;
}
