/* Map fallback and approximate-area notice: all screen sizes. */
.bsv-map-fallback {
  padding:22px; text-align:center; line-height:1.6; background:#f1f8fc;
  color:#24485e; font-size:13px;
}
.bsv-map-fallback strong {font-size:17px;color:#245779;}
.bsv-map-fallback span {max-width:360px;}
.bsv-map-fallback a {display:inline-flex;align-items:center;justify-content:center;
  min-height:44px;margin-top:10px;padding:9px 16px;border-radius:9px;
  background:#245779;color:#fff!important;font-size:12px;font-weight:700;text-decoration:none!important;
}
.mari-map-approx-label {position:absolute;top:12px;left:12px;z-index:4;
  width:min(320px,calc(100% - 24px));padding:10px 12px;
  background:rgba(255,255,255,.94);border:1px solid #d0e3ec;border-radius:10px;
  color:#21475f;font:600 11px/1.4 Montserrat,Arial,sans-serif;
  box-shadow:0 6px 16px rgba(36,87,121,.12);
  pointer-events:none;
}
/* Villa Marianna — readable, true full-screen mobile calendars.
 * This stylesheet loads LAST on Availability and Contact so legacy v40/v47
 * rules cannot return low-contrast dates or conceal the date summary. */
@media (max-width: 1024px), (pointer: coarse) {
  body.bsv-stay-calendar-open > .bsv-stay-calendar,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar {
    box-sizing:border-box !important;
    background:#fff !important;
    padding:0 12px 0 !important;
    -webkit-overflow-scrolling:touch !important;
    scroll-behavior:auto !important;
    overscroll-behavior:contain !important;
    color:#173e55 !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-calendar-head,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-calendar-head {
    box-sizing:border-box !important;
    margin:0 -12px !important;
    padding:calc(12px + env(safe-area-inset-top)) 13px 12px !important;
    min-height:73px !important;
    background:#245779 !important;
    border-bottom:0 !important;
    box-shadow:0 3px 14px rgba(26,67,96,.14) !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-calendar-head strong,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-calendar-head strong {
    color:#fff !important;
    font-family:Montserrat,Arial,sans-serif !important;
    font-weight:700 !important;
    font-size:clamp(15px,4.15vw,19px) !important;
    line-height:1.3 !important;
    letter-spacing:-.015em !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-calendar-clear-mobile,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-calendar-clear-mobile {
    color:#fff !important;
    border:1px solid rgba(255,255,255,.36) !important;
    border-radius:10px !important;
    background:rgba(255,255,255,.11) !important;
    padding:0 10px !important;
    min-width:46px !important;
    min-height:42px !important;
    font-size:11px !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-calendar-close,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-calendar-close {
    min-width:44px !important;
    width:44px !important;
    height:44px !important;
    flex:0 0 44px !important;
    border:1px solid rgba(255,255,255,.42) !important;
    background:rgba(255,255,255,.14) !important;
    color:#fff !important;
    font-size:28px !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-calendar-message,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-calendar-message {
    padding:12px 3px 5px !important;
    font-size:12px !important;
    line-height:1.45 !important;
    font-weight:600 !important;
    color:#435f70 !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .mari-mobile-calendar-legend,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .mari-mobile-calendar-legend {
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:6px 12px;
    padding:10px 11px;
    margin:8px 0 10px;
    background:#f5f9fc;
    border:1px solid #dbe8f0;
    border-radius:11px;
    font:600 11px/1.35 Montserrat,Arial,sans-serif;
    color:#244c62;
  }
  .mari-mobile-calendar-legend span {display:flex;align-items:center;gap:7px;min-width:0;}
  .mari-mobile-calendar-legend i {display:inline-block;flex:0 0 13px;width:13px;height:13px;border-radius:4px;border:1px solid #bdd1dd;background:#fff;}
  .mari-mobile-calendar-legend .is-unavailable {background:#e5eaf0;border-color:#c8d1da;}
  .mari-mobile-calendar-legend .is-selected {background:#245779;border-color:#245779;}
  .mari-mobile-calendar-legend .is-restricted {background:#fff6df;border-color:#cd9035;position:relative;}
  .mari-mobile-calendar-legend .is-restricted:after{content:'';position:absolute;bottom:2px;left:4px;width:4px;height:4px;border-radius:50%;background:#a16600;}
  body.bsv-stay-calendar-open > .bsv-stay-calendar .mari-date-tip-instruction {
    text-align:left !important;
    padding:0 3px !important;
    margin:5px 0 !important;
    color:#49687b !important;
    font-size:11px !important;
    line-height:1.35 !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-months,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-months {
    padding:6px 0 110px !important;
    display:block !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-month,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-month {
    padding:5px 0 12px !important;
    margin:0 0 19px !important;
    border-bottom:1px solid #dce9f1 !important;
    scroll-margin-top:calc(88px + env(safe-area-inset-top)) !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-month h3,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-month h3 {
    font-family:Montserrat,Arial,sans-serif !important;
    font-size:18px !important;
    font-weight:800 !important;
    letter-spacing:-.02em !important;
    color:#173e55 !important;
    padding:5px 2px 13px !important;
    margin:0 !important;
    text-align:left !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-calendar-week,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-calendar-week {
    display:grid !important;
    grid-template-columns:repeat(7,minmax(0,1fr));
    gap:4px !important;
    margin:0 0 6px !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-calendar-week span,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-calendar-week span {
    font-size:11px !important;
    font-weight:800 !important;
    letter-spacing:0 !important;
    color:#47657a !important;
    padding:7px 0 !important;
    text-transform:none !important;
    background:#f3f8fb !important;
    border-radius:7px !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-calendar-days,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-calendar-days {
    display:grid !important;
    grid-template-columns:repeat(7,minmax(0,1fr)) !important;
    gap:4px !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-day,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-day {
    box-sizing:border-box !important;
    width:100% !important;
    height:auto !important;
    min-height:45px !important;
    aspect-ratio:auto !important;
    border-radius:9px !important;
    font-family:Montserrat,Arial,sans-serif !important;
    font-size:15px !important;
    font-weight:700 !important;
    line-height:1.2 !important;
    padding:0 !important;
    overflow:hidden !important;
    -webkit-tap-highlight-color:transparent;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-day.available,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-day.available {
    border:1px solid #d7e4ed !important;
    background:#fff !important;
    color:#123d56 !important;
    text-decoration:none !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-day.unavailable,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-day.unavailable {
    border:1px solid #e0e5eb !important;
    background:#eff2f5 !important;
    color:#7f8a94 !important;
    text-decoration:none !important;
    opacity:1 !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-day.selected-range,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-day.selected-range {
    border:1px solid #b0d6e9 !important;
    background:#dbecf5 !important;
    color:#245779 !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-day.selected-start,
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-day.selected-end,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-day.selected-start,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-day.selected-end {
    border:2px solid #245779 !important;
    background:#245779 !important;
    color:#fff !important;
    box-shadow:0 2px 8px rgba(36,87,121,.13) !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-day.restricted:not(.selected-start):not(.selected-end):after,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-day.restricted:not(.selected-start):not(.selected-end):after {
    background:#ae7419 !important;
    width:6px !important;
    height:6px !important;
    bottom:2px !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-day .mari-cal-day-help {
    background:#fff9e9 !important;
    border-color:#d9b869 !important;
    color:#755016 !important;
    width:12px !important;
    height:12px !important;
    font-size:9px !important;
    bottom:0 !important;
    right:0 !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-day:focus-visible,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-day:focus-visible,
  body.bsv-stay-calendar-open > .bsv-stay-calendar button:focus-visible,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar button:focus-visible {
    outline:3px solid #78bad7 !important;
    outline-offset:2px !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-calendar-foot,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-calendar-foot {
    position:fixed !important;
    left:0 !important;
    right:0 !important;
    display:flex !important;
    flex-flow:row nowrap !important;
    align-items:center !important;
    justify-content:space-between !important;
    gap:8px !important;
    bottom:0 !important;
    z-index:60 !important;
    width:100vw !important;
    box-sizing:border-box !important;
    margin:0 !important;
    padding:11px 12px calc(11px + env(safe-area-inset-bottom)) !important;
    background:#fff !important;
    border-top:1px solid #d0e2ec !important;
    box-shadow:0 -5px 18px rgba(36,87,121,.08) !important;
    min-height:76px !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-calendar-foot > div:first-child,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-calendar-foot > div:first-child {
    flex:1 1 auto !important;
    min-width:0 !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-calendar-foot strong,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-calendar-foot strong {
    font-family:Montserrat,Arial,sans-serif !important;
    font-size:11px !important;
    font-weight:700 !important;
    color:#17425a !important;
    line-height:1.4 !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-calendar-foot span {
    font-size:10px !important;
    color:#587185 !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-foot-actions,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-foot-actions {
    display:flex !important;
    flex:0 0 auto !important;
    width:auto !important;
    gap:0 !important;
  }
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-foot-actions [data-stay-clear],
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-foot-actions [data-contact-stay-clear] {display:none !important;}
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-foot-actions .primary,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-foot-actions .primary {
    flex:0 0 auto !important;
    padding:0 16px !important;
    min-width:72px !important;
    min-height:44px !important;
    border-radius:10px !important;
    font-size:12px !important;
    font-weight:800 !important;
    color:#fff !important;
    background:#245779 !important;
    border:1px solid #245779 !important;
  }
  .mari-calendar-tooltip.in-stay-picker { bottom:calc(86px + env(safe-area-inset-bottom)) !important; }
}
@media(max-width:360px) {
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-stay-day,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-stay-day {min-height:43px !important;font-size:14px !important;}
  body.bsv-stay-calendar-open > .bsv-stay-calendar .bsv-calendar-days,
  body.bsv-contact-calendar-open > .bsv-contact-stay-calendar .bsv-calendar-days {gap:3px !important;}
}
@media(prefers-reduced-motion:reduce){.bsv-stay-calendar *{scroll-behavior:auto!important;}}
