/* ============================================================
   Hostaway WP – Frontend Styles
============================================================ */
:root {
  --hawp-primary:      #2563eb;
  --hawp-primary-dk:   #1d4ed8;
  --hawp-primary-lt:   #eff6ff;
  --hawp-text:         #111827;
  --hawp-muted:        #6b7280;
  --hawp-border:       #e5e7eb;
  --hawp-bg:           #f9fafb;
  --hawp-white:        #ffffff;
  --hawp-radius:       0.5rem;
  --hawp-radius-lg:    0.75rem;
  --hawp-shadow:       0 1px 3px rgba(0,0,0,.1);
  --hawp-shadow-md:    0 4px 6px -1px rgba(0,0,0,.1);
  --hawp-shadow-lg:    0 10px 15px -3px rgba(0,0,0,.1);
  --hawp-font:         -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
}

/* Utilities */
.hawp-hidden { display:none !important; }

/* ── Buttons ─────────────────────────────────────────────── */
.hawp-btn {
  display:inline-flex; align-items:center; gap:.4rem;
  padding:0 1.1rem; height:2.6rem; border-radius:var(--hawp-radius);
  font-size:.9rem; font-weight:600; cursor:pointer; border:none;
  transition:background .15s,transform .1s; font-family:var(--hawp-font);
  white-space:nowrap; text-decoration:none;
}
.hawp-btn:active { transform:scale(.98); }
.hawp-btn--primary { background:var(--hawp-primary); color:#fff; }
.hawp-btn--primary:hover { background:var(--hawp-primary-dk); }
.hawp-btn--outline { background:transparent; color:var(--hawp-text); border:1px solid var(--hawp-border); }
.hawp-btn--outline:hover { background:var(--hawp-bg); }
.hawp-btn--full { width:100%; justify-content:center; }
.hawp-btn--sm { height:2rem; padding:0 .75rem; font-size:.82rem; }
.hawp-link-btn { background:none; border:none; color:var(--hawp-primary); cursor:pointer;
  font-size:.9rem; padding:0; font-family:var(--hawp-font); text-decoration:underline; }

/* ── Search bar ──────────────────────────────────────────── */
.hawp-search-bar {
  background:var(--hawp-white); border:1px solid var(--hawp-border);
  border-radius:var(--hawp-radius-lg); padding:1.25rem 1.5rem;
  margin-bottom:2rem; box-shadow:var(--hawp-shadow-md);
}
.hawp-search-fields {
  display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:.75rem; margin-bottom:.75rem;
}
@media(max-width:768px){ .hawp-search-fields{ grid-template-columns:1fr 1fr; } }
@media(max-width:480px){ .hawp-search-fields{ grid-template-columns:1fr; } }

.hawp-field { display:flex; flex-direction:column; gap:.35rem; }
.hawp-field label { font-size:.72rem; font-weight:600; text-transform:uppercase;
  letter-spacing:.05em; color:var(--hawp-muted); }
.hawp-field input, .hawp-field select {
  height:2.6rem; padding:0 .75rem; border:1px solid var(--hawp-border);
  border-radius:var(--hawp-radius); font-size:.95rem; color:var(--hawp-text);
  background:var(--hawp-white); width:100%; box-sizing:border-box; transition:border-color .15s;
}
.hawp-field input:focus, .hawp-field select:focus {
  outline:none; border-color:var(--hawp-primary); box-shadow:0 0 0 3px rgba(37,99,235,.12);
}
.hawp-input-prefix {
  display:flex; align-items:center; border:1px solid var(--hawp-border);
  border-radius:var(--hawp-radius); overflow:hidden; height:2.6rem;
}
.hawp-input-prefix span {
  padding:0 .6rem; background:var(--hawp-bg); border-right:1px solid var(--hawp-border);
  color:var(--hawp-muted); font-size:.9rem; height:100%; display:flex; align-items:center;
}
.hawp-input-prefix input { border:none; border-radius:0; height:100%; flex:1; }
.hawp-input-prefix input:focus { box-shadow:none; }

.hawp-search-actions { display:flex; gap:.5rem; align-items:center; }
.hawp-advanced-filters { border-top:1px solid var(--hawp-border); margin-top:1rem; padding-top:1rem; }
.hawp-filter-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:.75rem; }
@media(max-width:600px){ .hawp-filter-grid{ grid-template-columns:1fr 1fr; } }

/* ── Results header ──────────────────────────────────────── */
.hawp-results-header {
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom:1rem; font-size:.9rem; color:var(--hawp-muted);
}
.hawp-results-actions { display:flex; align-items:center; gap:.75rem; }

/* ── Loading / error ─────────────────────────────────────── */
.hawp-loading { text-align:center; padding:3rem 1rem; color:var(--hawp-muted); }
.hawp-spinner {
  width:2.5rem; height:2.5rem; border:3px solid var(--hawp-border);
  border-top-color:var(--hawp-primary); border-radius:50%;
  animation:hawp-spin .7s linear infinite; margin:0 auto 1rem;
}
@keyframes hawp-spin { to { transform:rotate(360deg); } }
.hawp-error-box {
  background:#fef2f2; border:1px solid #fecaca; color:#991b1b;
  padding:.85rem 1rem; border-radius:var(--hawp-radius); margin:1rem 0;
}

/* ── Grid ────────────────────────────────────────────────── */
.hawp-grid { display:grid; gap:1.5rem; }
.hawp-grid--1cols { grid-template-columns:1fr; }
.hawp-grid--2cols { grid-template-columns:repeat(2,1fr); }
.hawp-grid--3cols { grid-template-columns:repeat(3,1fr); }
.hawp-grid--4cols { grid-template-columns:repeat(4,1fr); }
@media(max-width:900px){ .hawp-grid--3cols,.hawp-grid--4cols{ grid-template-columns:repeat(2,1fr); } }
/* Mobile: ALWAYS a single column. The catch-all .hawp-grid selector +
   !important guard against theme CSS overriding the variant classes,
   and the 640px breakpoint covers large phones (2cols at 560px was
   leaving two cramped cards side-by-side on many devices). */
@media(max-width:640px){
  .hawp-grid,
  .hawp-grid--1cols,
  .hawp-grid--2cols,
  .hawp-grid--3cols,
  .hawp-grid--4cols { grid-template-columns:1fr !important; }
}

/* ── Property card ───────────────────────────────────────── */
.hawp-card {
  background:var(--hawp-white); border-radius:var(--hawp-radius-lg);
  overflow:hidden; box-shadow:var(--hawp-shadow); transition:box-shadow .2s,transform .2s;
  cursor:pointer; text-decoration:none; color:inherit; display:block;
}
.hawp-card:hover { box-shadow:var(--hawp-shadow-lg); transform:translateY(-2px); }
.hawp-card__img-wrap { position:relative; padding-top:65%; background:var(--hawp-bg); overflow:hidden; }
.hawp-card__img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .3s; }
.hawp-card:hover .hawp-card__img { transform:scale(1.04); }
.hawp-card__img--placeholder {
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  color:var(--hawp-muted); font-size:.8rem; background:var(--hawp-bg);
}
.hawp-card__badge {
  position:absolute; top:.6rem; left:.6rem; background:var(--hawp-primary); color:#fff;
  font-size:.7rem; font-weight:700; padding:.2rem .5rem; border-radius:999px; letter-spacing:.03em;
}
.hawp-card__body { padding:1rem; }
.hawp-card__location { font-size:.78rem; color:var(--hawp-muted); margin-bottom:.3rem; display:flex; align-items:center; gap:.25rem; }
.hawp-card__title { font-size:1rem; font-weight:700; color:var(--hawp-text); margin:0 0 .5rem; line-height:1.35;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.hawp-card__details { display:flex; gap:.75rem; font-size:.8rem; color:var(--hawp-muted); margin-bottom:.75rem; flex-wrap:wrap; }
.hawp-card__footer { display:flex; align-items:center; justify-content:space-between; padding-top:.75rem; border-top:1px solid var(--hawp-border); }
.hawp-card__price { font-size:1.05rem; font-weight:700; color:var(--hawp-text); }
.hawp-card__price-label { font-size:.78rem; font-weight:400; color:var(--hawp-muted); }
.hawp-card__rating { font-size:.82rem; color:var(--hawp-muted); }
.hawp-no-results { text-align:center; padding:3rem 1rem; color:var(--hawp-muted); grid-column:1/-1; }

/* ── Pagination ──────────────────────────────────────────── */
.hawp-pagination { display:flex; justify-content:center; gap:.4rem; margin-top:2rem; flex-wrap:wrap; }
.hawp-page-btn {
  min-width:2.2rem; height:2.2rem; padding:0 .5rem;
  display:flex; align-items:center; justify-content:center;
  border:1px solid var(--hawp-border); border-radius:var(--hawp-radius);
  background:var(--hawp-white); cursor:pointer; font-size:.9rem;
  color:var(--hawp-text); transition:background .15s; font-family:var(--hawp-font);
}
.hawp-page-btn:hover { background:var(--hawp-bg); }
.hawp-page-btn.is-active { background:var(--hawp-primary); border-color:var(--hawp-primary); color:#fff; font-weight:700; }
.hawp-page-btn:disabled { opacity:.4; cursor:not-allowed; }
.hawp-page-ellipsis { padding:0 .3rem; line-height:2.2rem; color:var(--hawp-muted); }

/* ── Maps ────────────────────────────────────────────────── */
.hawp-listings-map {
  width:100%; height:420px; border-radius:var(--hawp-radius-lg);
  overflow:hidden; margin-bottom:1.5rem; border:1px solid var(--hawp-border);
}
.hawp-single-map {
  width:100%; height:320px; border-radius:var(--hawp-radius-lg);
  overflow:hidden; border:1px solid var(--hawp-border);
}

/* ── Single page ─────────────────────────────────────────── */
.hawp-single { max-width:1100px; margin:0 auto; padding:1.5rem 1rem 4rem; font-family:var(--hawp-font); }

.hawp-breadcrumb { display:flex; align-items:center; gap:.4rem; font-size:.85rem; color:var(--hawp-muted); margin-bottom:1.25rem; }
.hawp-breadcrumb a { color:var(--hawp-primary); text-decoration:none; }
.hawp-breadcrumb a:hover { text-decoration:underline; }

/* Gallery */
.hawp-gallery { margin-bottom:2rem; }
.hawp-gallery__main { position:relative; border-radius:var(--hawp-radius-lg); overflow:hidden; background:var(--hawp-bg); }
.hawp-gallery__main img { width:100%; max-height:520px; object-fit:cover; display:block; }
.hawp-gallery__nav {
  position:absolute; top:50%; transform:translateY(-50%); background:rgba(255,255,255,.9);
  border:none; width:2.5rem; height:2.5rem; border-radius:50%; cursor:pointer;
  font-size:1.4rem; display:flex; align-items:center; justify-content:center;
  box-shadow:var(--hawp-shadow-md); transition:background .15s;
}
.hawp-gallery__nav:hover { background:#fff; }
.hawp-gallery__nav--prev { left:1rem; }
.hawp-gallery__nav--next { right:1rem; }
.hawp-gallery__count {
  position:absolute; bottom:.75rem; right:.75rem; background:rgba(0,0,0,.55);
  color:#fff; font-size:.8rem; padding:.2rem .6rem; border-radius:999px;
}
.hawp-gallery__thumbs { display:flex; gap:.4rem; margin-top:.4rem; overflow-x:auto; padding-bottom:.25rem; }
.hawp-gallery__thumb { width:80px; height:60px; object-fit:cover; border-radius:.35rem;
  cursor:pointer; opacity:.65; flex-shrink:0; transition:opacity .15s; border:2px solid transparent; }
.hawp-gallery__thumb.is-active, .hawp-gallery__thumb:hover { opacity:1; border-color:var(--hawp-primary); }

/* Layout */
.hawp-single__layout { display:grid; grid-template-columns:1fr 420px; gap:2.5rem; align-items:start; }
@media(max-width:900px){ .hawp-single__layout{ grid-template-columns:1fr; } }

.hawp-single__title { font-size:1.8rem; font-weight:800; color:var(--hawp-text); margin:0 0 .6rem; line-height:1.25; }
.hawp-single__meta { display:flex; flex-wrap:wrap; gap:.75rem; margin-bottom:1.25rem; }
.hawp-meta-item { display:inline-flex; align-items:center; gap:.3rem; font-size:.88rem; color:var(--hawp-muted); }
.hawp-meta-item--rating { color:#b45309; }
.hawp-meta-item--instant { color:var(--hawp-primary); }

.hawp-single__stats {
  display:flex; flex-wrap:wrap; gap:1.25rem; padding:1rem 0;
  border-top:1px solid var(--hawp-border); border-bottom:1px solid var(--hawp-border); margin-bottom:1.5rem;
}
.hawp-stat { display:flex; align-items:center; gap:.5rem; font-size:.9rem; color:var(--hawp-text); }
.hawp-stat svg { color:var(--hawp-muted); flex-shrink:0; }

.hawp-single__section { margin-bottom:1.75rem; }
.hawp-single__section h2 { font-size:1.15rem; font-weight:700; color:var(--hawp-text); margin:0 0 .75rem; }

/* Description */
.hawp-description--collapsed .hawp-description__text { max-height:120px; overflow:hidden; position:relative; }
.hawp-description--collapsed .hawp-description__text::after {
  content:''; position:absolute; bottom:0; left:0; right:0; height:3rem;
  background:linear-gradient(to bottom,transparent,white);
}
.hawp-description__text { font-size:.95rem; line-height:1.7; color:var(--hawp-text); }
#hawp-read-more { margin-top:.5rem; }

/* Amenities */
.hawp-amenities-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:.6rem; }
@media(max-width:640px){ .hawp-amenities-grid{ grid-template-columns:repeat(2,1fr); } }
.hawp-amenity-item { display:flex; align-items:center; gap:.5rem; font-size:.88rem; padding:.4rem 0; }
.hawp-amenity-more { font-size:.82rem; color:var(--hawp-muted); padding:.4rem 0; grid-column:1/-1; }

/* Rules / times */
.hawp-rules { font-size:.9rem; line-height:1.7; color:var(--hawp-text); background:var(--hawp-bg); border-radius:var(--hawp-radius); padding:.85rem 1rem; }
.hawp-checktimes { display:flex; gap:2rem; font-size:.9rem; flex-wrap:wrap; }

/* ── Booking card ─────────────────────────────────────────── */
.hawp-booking-card {
  background:var(--hawp-white); border:1px solid var(--hawp-border);
  border-radius:var(--hawp-radius-lg); padding:1.5rem;
  box-shadow:var(--hawp-shadow-lg); position:sticky; top:1.5rem;
}
.hawp-booking-card__price {
  display: flex; align-items: baseline; gap: .3rem;
  padding: 1.25rem 1.5rem 1rem;
  margin: 0;
  border-bottom: 1px solid var(--hawp-border);
}
.hawp-price-amount { font-size:1.75rem; font-weight:800; color:var(--hawp-text); }
.hawp-price-label { font-size:.9rem; color:var(--hawp-muted); }

.hawp-booking-dates { display:grid; grid-template-columns:1fr 1fr; gap:.5rem; margin-bottom:.75rem; }
.hawp-booking-field { display:flex; flex-direction:column; gap:.3rem; margin-bottom:.75rem; }
.hawp-booking-field label { font-size:.72rem; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:var(--hawp-muted); }
.hawp-booking-field input, .hawp-booking-field select {
  height:2.6rem; padding:0 .75rem; border:1px solid var(--hawp-border);
  border-radius:var(--hawp-radius); font-size:.95rem; color:var(--hawp-text);
  background:var(--hawp-white); width:100%; box-sizing:border-box;
}
.hawp-booking-field input:focus, .hawp-booking-field select:focus {
  outline:none; border-color:var(--hawp-primary); box-shadow:0 0 0 3px rgba(37,99,235,.12);
}

/* Price breakdown */
.hawp-price-breakdown { background:var(--hawp-bg); border-radius:var(--hawp-radius); padding:.85rem 1rem; margin-bottom:.75rem; font-size:.88rem; }
.hawp-price-row { display:flex; justify-content:space-between; padding:.2rem 0; color:var(--hawp-text); }
.hawp-price-row--total { border-top:1px solid var(--hawp-border); margin-top:.4rem; padding-top:.4rem; font-weight:700; font-size:.95rem; }

.hawp-booking-note {
  text-align: center; font-size: .78rem; color: var(--hawp-muted);
  margin: 0; padding: 1rem 1.5rem 1.25rem;
  line-height: 1.5; border-top: 1px solid var(--hawp-border);
}
.hawp-booking-note strong { color: var(--hawp-text); }

/* Step header */
.hawp-step-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:1rem; padding-bottom:.75rem; border-bottom:1px solid var(--hawp-border); }
.hawp-req { color:#dc2626; font-size:.8rem; }

/* Stripe */
.hawp-payment-section { margin-bottom:.75rem; }
.hawp-payment-section label { display:block; font-size:.72rem; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:var(--hawp-muted); margin-bottom:.35rem; }
.hawp-stripe-element { padding:.7rem .75rem; border:1px solid var(--hawp-border); border-radius:var(--hawp-radius); background:var(--hawp-white); min-height:2.6rem; }
.hawp-stripe-element.StripeElement--focus { border-color:var(--hawp-primary); box-shadow:0 0 0 3px rgba(37,99,235,.12); }
.hawp-stripe-error { color:#dc2626; font-size:.82rem; margin-top:.35rem; }
.hawp-stripe-badges { font-size:.78rem; color:var(--hawp-muted); text-align:center; margin-top:.35rem; }

/* Booking summary */
.hawp-booking-summary { background:var(--hawp-bg); border-radius:var(--hawp-radius); padding:.75rem 1rem; margin-bottom:.75rem; font-size:.88rem; }
.hawp-summary-row { display:flex; justify-content:space-between; padding:.15rem 0; color:var(--hawp-muted); }
.hawp-summary-row--total { border-top:1px solid var(--hawp-border); margin-top:.35rem; padding-top:.35rem; color:var(--hawp-text); font-weight:700; }

/* Confirmation */
.hawp-confirmation { text-align:center; padding:1rem 0; }
.hawp-confirmation__icon { font-size:2.5rem; margin-bottom:.5rem; }
.hawp-confirmation h3 { font-size:1.1rem; font-weight:700; color:var(--hawp-text); margin:0 0 .5rem; }
.hawp-confirmation p { font-size:.88rem; color:var(--hawp-muted); margin:0 0 .35rem; }



/* ── Check-in / Check-out ────────────────────────────────── */
.hawp-checktimes {
  display: flex;
  gap: 1.5rem;
  flex-wrap: wrap;
}
.hawp-checktime-item {
  display: flex;
  align-items: flex-start;
  gap: .65rem;
  background: var(--hawp-bg);
  border: 1px solid var(--hawp-border);
  border-radius: var(--hawp-radius);
  padding: .75rem 1rem;
  min-width: 140px;
  flex: 1;
}
.hawp-checktime-icon { font-size: 1.4rem; line-height: 1; margin-top: .1rem; }
.hawp-checktime-item strong { display: block; font-size: .78rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em; color: var(--hawp-muted); margin-bottom: .2rem; }

/* ── Cancellation ────────────────────────────────────────── */
.hawp-cancellation {
  display: flex;
  align-items: center;
  gap: .65rem;
  background: var(--hawp-bg);
  border: 1px solid var(--hawp-border);
  border-radius: var(--hawp-radius);
  padding: .75rem 1rem;
  font-size: .95rem;
}
.hawp-cancellation-icon { font-size: 1.2rem; }

/* ── Booking disabled state ──────────────────────────────── */
.hawp-booking-disabled {
  text-align: center;
  padding: 1rem 0;
  color: var(--hawp-muted);
  font-size: .9rem;
}

/* ══════════════════════════════════════════════════════════════
   HOSTAWAY CALENDAR WIDGET — CONTAINER STYLING
   
   The Hostaway widget renders its own complete DOM/styles.
   We cannot style its internals. We style only the container
   so the widget gets enough room to render correctly.
   
   KEY RULES:
   - Sidebar is 420px wide — enough for a single-month calendar
   - NO overflow:hidden on the card (clips widget's nav arrows)
   - NO negative margins or calc() width overrides
   - Widget fills 100% of whatever space it's given
══════════════════════════════════════════════════════════════ */

.hawp-cal-widget-wrap {
  width: 100%;
  margin: 0;
  padding: 0;
}

.hawp-calendar-widget-wrap {
  width: 100% !important;
  min-height: 80px;
  display: block;
  box-sizing: border-box;
}

/* Force widget's internal root div to respect container width */
.hawp-calendar-widget-wrap > div {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

/* Loading placeholder text while JS mounts the widget */
.hawp-calendar-widget-wrap:empty::after {
  content: 'Loading availability…';
  display: block;
  padding: 2rem 1rem;
  text-align: center;
  font-size: .85rem;
  color: #9ca3af;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

/* Hostaway search bar widget */
.hawp-hostaway-search-widget { width: 100%; }

.hawp-booking-step { padding: 0 1.5rem 1.25rem; }

/* ══════════════════════════════════════════════════════════════
   HOSTAWAY CALENDAR — MINIMAL CONTAINER FIXES (v1.7.3)
   
   IMPORTANT: earlier versions applied aggressive resets here —
   float:none, letter-spacing:normal, and a blanket removal of every
   ::before/::after pseudo-element inside the widget. That killed the
   widget's OWN visual indicators for booked/unavailable dates (a very
   common implementation for a strikethrough mark is a ::before/::after
   pseudo-element), which is why booked dates appeared to "hide" or
   change color after picking a check-in date — the widget re-renders
   its date-state styling at that point, and our overrides fought it.
   
   Hostaway's widget is a self-contained, professionally styled bundle.
   We only protect against genuine THEME leakage (box-sizing, and a
   loading placeholder) — nothing that reaches into the widget's own
   date-cell styling or pseudo-elements.
══════════════════════════════════════════════════════════════ */

#hostaway-calendar-widget,
#hostaway-calendar-widget *,
.hawp-calendar-widget-wrap,
.hawp-calendar-widget-wrap * {
  box-sizing: border-box;
}


/* Custom cancellation multi-line display */
.hawp-cancellation--custom { align-items: flex-start; }
.hawp-cancellation__lines div {
  padding: .15rem 0;
  font-size: .95rem;
  color: var(--hawp-text);
}

/* ══════════════════════════════════════════════════════════════
   CALENDAR POPUP (v1.3.1) — Hostaway.com pattern
   Compact "Select Dates" trigger in the sidebar; the full
   two-month widget opens in a centered overlay with backdrop.
══════════════════════════════════════════════════════════════ */

/* Trigger area inside the booking card */
.hawp-cal-trigger-wrap { padding: 1.1rem 1.5rem .25rem; }
.hawp-cal-trigger-label {
  font-size: .85rem; color: var(--hawp-muted);
  margin: 0 0 .7rem; line-height: 1.45;
}
.hawp-cal-trigger {
  display: flex; align-items: center; gap: .6rem;
  width: 100%; height: 3rem; padding: 0 1rem;
  margin-bottom: .6rem;
  background: var(--hawp-white);
  border: 1px solid var(--hawp-border);
  border-radius: 999px;
  font-size: .95rem; color: var(--hawp-muted);
  font-family: var(--hawp-font);
  cursor: pointer; text-align: left;
  transition: border-color .15s, box-shadow .15s;
}
.hawp-cal-trigger:hover,
.hawp-cal-trigger:focus-visible {
  border-color: var(--hawp-primary);
  box-shadow: 0 0 0 3px rgba(37,99,235,.10);
  outline: none;
}
.hawp-cal-trigger__icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 2rem; height: 2rem; border-radius: 50%;
  background: var(--hawp-primary-lt); color: var(--hawp-primary);
  flex-shrink: 0;
}

/* ── Popup overlay ─────────────────────────────────────────── */
.hawp-cal-popup {
  position: fixed; inset: 0; z-index: 999999;
  display: flex; align-items: center; justify-content: center;
  padding: 1.25rem;
}
/* Hidden state keeps real layout (visibility, not display:none) so the
   Hostaway widget can measure itself correctly while the popup is closed. */
.hawp-cal-popup[hidden] {
  display: flex !important;
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
}

.hawp-cal-popup__backdrop {
  position: absolute; inset: 0;
  background: rgba(17,24,39,.55);
  backdrop-filter: blur(2px);
}

.hawp-cal-popup__panel {
  position: relative;
  background: #fff;
  border-radius: 1.25rem;
  box-shadow: 0 24px 60px -12px rgba(0,0,0,.35);
  padding: 2rem 1.75rem 1.5rem;
  /* Wide enough for the two-month Hostaway layout */
  width: min(920px, calc(100vw - 2.5rem));
  max-height: calc(100vh - 3rem);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  animation: hawp-pop-in .18s ease-out;
}
@keyframes hawp-pop-in {
  from { opacity: 0; transform: translateY(10px) scale(.98); }
  to   { opacity: 1; transform: translateY(0)    scale(1); }
}

.hawp-cal-popup__close {
  position: absolute; top: .7rem; right: .7rem;
  width: 2.3rem; height: 2.3rem; border-radius: 50%;
  border: none; background: var(--hawp-bg); color: var(--hawp-text);
  font-size: 1.4rem; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background .15s;
  z-index: 2;
}
.hawp-cal-popup__close:hover { background: var(--hawp-border); }

/* Widget inside the popup gets full panel width */
.hawp-cal-popup__panel #hostaway-calendar-widget,
.hawp-cal-popup__panel .hawp-calendar-widget-wrap {
  width: 100% !important;
}

/* Lock body scroll while popup is open */
body.hawp-cal-popup-open { overflow: hidden; }

/* Mobile: popup becomes a full-screen sheet, one month fits fine */
@media (max-width: 640px) {
  .hawp-cal-popup { padding: 0; align-items: flex-end; }
  .hawp-cal-popup__panel {
    width: 100vw; max-height: 92vh;
    border-radius: 1.25rem 1.25rem 0 0;
    padding: 2.25rem 1rem 1.25rem;
  }
}

/* ══════════════════════════════════════════════════════════════
   v1.4.0 — CARD STYLE VARIANTS
══════════════════════════════════════════════════════════════ */

/* Minimal: flat, border only */
.hawp-cards--minimal .hawp-card { box-shadow: none; border: 1px solid var(--hawp-border); }
.hawp-cards--minimal .hawp-card:hover { box-shadow: var(--hawp-shadow-md); transform: none; border-color: var(--hawp-primary); }

/* Overlay: title & price over the image */
.hawp-cards--overlay .hawp-card__img-wrap { padding-top: 92%; }
.hawp-cards--overlay .hawp-card__img-wrap::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,.72) 0%, rgba(0,0,0,.15) 45%, transparent 65%);
  pointer-events: none;
}
.hawp-cards--overlay .hawp-card__body {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 1rem; z-index: 1;
}
.hawp-cards--overlay .hawp-card { position: relative; }
.hawp-cards--overlay .hawp-card__title,
.hawp-cards--overlay .hawp-card__price,
.hawp-cards--overlay .hawp-card__location,
.hawp-cards--overlay .hawp-card__rating { color: #fff; }
.hawp-cards--overlay .hawp-card__price-label,
.hawp-cards--overlay .hawp-card__details { color: rgba(255,255,255,.85); }
.hawp-cards--overlay .hawp-card__footer { border-top-color: rgba(255,255,255,.25); }

/* ══════════════════════════════════════════════════════════════
   MOSAIC GALLERY (Airbnb style)
══════════════════════════════════════════════════════════════ */
.hawp-mosaic {
  position: relative;
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  grid-template-rows: repeat(2, 210px);
  gap: .5rem;
  border-radius: var(--hawp-radius-lg);
  overflow: hidden;
  margin-bottom: 2rem;
}
.hawp-mosaic__item {
  padding: 0; border: none; cursor: pointer; overflow: hidden; background: var(--hawp-bg);
}
.hawp-mosaic__item img {
  width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .25s;
}
.hawp-mosaic__item:hover img { transform: scale(1.04); }
.hawp-mosaic__item--0 { grid-row: 1 / 3; grid-column: 1; }
.hawp-mosaic--few { grid-template-columns: 2fr 1fr; }
.hawp-mosaic__all {
  position: absolute; right: .85rem; bottom: .85rem;
  background: rgba(255,255,255,.95); border: 1px solid var(--hawp-border);
  border-radius: var(--hawp-radius); padding: .5rem .9rem;
  font-size: .85rem; font-weight: 600; cursor: pointer;
  font-family: var(--hawp-font); box-shadow: var(--hawp-shadow-md);
}
.hawp-mosaic__all:hover { background: #fff; }
@media (max-width: 700px) {
  .hawp-mosaic { grid-template-columns: 1fr 1fr; grid-template-rows: 180px 120px; }
  .hawp-mosaic__item--0 { grid-row: 1; grid-column: 1 / 3; }
  .hawp-mosaic__item--3, .hawp-mosaic__item--4 { display: none; }
}

/* ══════════════════════════════════════════════════════════════
   LIGHTBOX
══════════════════════════════════════════════════════════════ */
.hawp-lightbox {
  position: fixed; inset: 0; z-index: 9999999;
  background: rgba(10,12,16,.94);
  display: flex; align-items: center; justify-content: center;
}
.hawp-lightbox[hidden] { display: none; }
body.hawp-lb-open { overflow: hidden; }

.hawp-lightbox__stage { margin: 0; max-width: min(1100px, 88vw); text-align: center; }
.hawp-lightbox__stage img {
  max-width: 100%; max-height: 82vh; border-radius: .5rem; display: block; margin: 0 auto;
}
.hawp-lightbox__stage figcaption { color: rgba(255,255,255,.75); font-size: .85rem; margin-top: .6rem; }

.hawp-lightbox__close,
.hawp-lightbox__nav {
  position: absolute; background: rgba(255,255,255,.12); color: #fff;
  border: none; border-radius: 50%; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background .15s;
}
.hawp-lightbox__close:hover,
.hawp-lightbox__nav:hover { background: rgba(255,255,255,.28); }
.hawp-lightbox__close { top: 1rem; right: 1rem; width: 2.6rem; height: 2.6rem; font-size: 1.6rem; }
.hawp-lightbox__nav { top: 50%; transform: translateY(-50%); width: 3rem; height: 3rem; font-size: 2rem; }
.hawp-lightbox__nav--prev { left: 1rem; }
.hawp-lightbox__nav--next { right: 1rem; }
.hawp-lightbox__count {
  position: absolute; bottom: 1rem; left: 50%; transform: translateX(-50%);
  color: rgba(255,255,255,.8); font-size: .85rem; font-family: var(--hawp-font);
}

/* ══════════════════════════════════════════════════════════════
   PAYMENT TABS + PAYPAL
══════════════════════════════════════════════════════════════ */
.hawp-pay-tabs {
  display: flex; gap: .4rem; margin-bottom: .75rem;
  background: var(--hawp-bg); border-radius: var(--hawp-radius); padding: .3rem;
}
.hawp-pay-tab {
  flex: 1; height: 2.3rem; border: none; border-radius: calc(var(--hawp-radius) - 2px);
  background: transparent; font-size: .88rem; font-weight: 600; cursor: pointer;
  color: var(--hawp-muted); font-family: var(--hawp-font); transition: background .15s, color .15s;
}
.hawp-pay-tab.is-active { background: #fff; color: var(--hawp-text); box-shadow: var(--hawp-shadow); }
#hawp-paypal-buttons { min-height: 45px; }

/* ══════════════════════════════════════════════════════════════
   OPENSTREETMAP (Leaflet) price pins
══════════════════════════════════════════════════════════════ */
.hawp-osm-pin span {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 64px; height: 30px; padding: 0 .7rem;
  background: var(--hawp-primary); color: #fff;
  border-radius: 999px; font-size: 12px; font-weight: 700;
  font-family: var(--hawp-font); box-shadow: 0 2px 6px rgba(0,0,0,.3);
  white-space: nowrap;
}
.leaflet-container { font-family: var(--hawp-font); z-index: 1; }
.leaflet-popup-content a { color: var(--hawp-primary); text-decoration: none; }

/* ══════════════════════════════════════════════════════════════
   GUEST REVIEWS (from Hostaway)
══════════════════════════════════════════════════════════════ */
.hawp-reviews { display: flex; flex-direction: column; gap: 1rem; }
.hawp-review {
  background: var(--hawp-bg); border: 1px solid var(--hawp-border);
  border-radius: var(--hawp-radius-lg); padding: 1rem 1.15rem;
}
.hawp-review__head { display: flex; align-items: center; gap: .75rem; margin-bottom: .6rem; }
.hawp-review__avatar {
  width: 2.4rem; height: 2.4rem; border-radius: 50%;
  background: var(--hawp-primary); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 1rem; flex-shrink: 0;
}
.hawp-review__name { font-weight: 700; font-size: .92rem; color: var(--hawp-text); }
.hawp-review__meta { display: flex; gap: .6rem; font-size: .8rem; color: var(--hawp-muted); }
.hawp-review__stars { color: #b45309; font-weight: 600; }
.hawp-review__text { margin: 0; font-size: .92rem; line-height: 1.65; color: var(--hawp-text); }

/* ══════════════════════════════════════════════════════════════
   HOSTAWAY CALENDAR — KEEP UNAVAILABLE DATES VISIBLE (v1.8.1)

   Symptom this fixes: booked/unavailable day numbers rendered
   completely invisible instead of greyed-and-struck-through, and
   the invisible set changing as the widget re-evaluates bookable
   dates after a check-in is picked.

   A number can be "rendered but invisible" in four ways: white or
   transparent text, zero opacity, or visibility:hidden. The rules
   below neutralise all four for day cells the widget has marked
   unavailable, and restore the intended grey + strikethrough.

   We deliberately do NOT touch `display`, `content`, `float` or
   `letter-spacing` here — an earlier version reset those globally
   inside the widget and broke its own date-state styling. These
   selectors are scoped to unavailable/disabled cells only, so the
   widget's normal rendering is left completely alone.
══════════════════════════════════════════════════════════════ */

.hawp-calendar-widget-wrap [class*="disabled"],
.hawp-calendar-widget-wrap [class*="Disabled"],
.hawp-calendar-widget-wrap [class*="unavailable"],
.hawp-calendar-widget-wrap [class*="Unavailable"],
.hawp-calendar-widget-wrap [class*="notAvailable"],
.hawp-calendar-widget-wrap [class*="not-available"],
.hawp-calendar-widget-wrap [class*="blocked"],
.hawp-calendar-widget-wrap [class*="Blocked"],
.hawp-calendar-widget-wrap [class*="booked"],
.hawp-calendar-widget-wrap [class*="Booked"],
.hawp-calendar-widget-wrap [class*="reserved"],
.hawp-calendar-widget-wrap [aria-disabled="true"],
.hawp-calendar-widget-wrap [disabled],
.hawp-calendar-widget-wrap button:disabled,
/* and the inner element that usually holds the number */
.hawp-calendar-widget-wrap [class*="disabled"] *,
.hawp-calendar-widget-wrap [class*="unavailable"] *,
.hawp-calendar-widget-wrap [class*="blocked"] *,
.hawp-calendar-widget-wrap [class*="booked"] *,
.hawp-calendar-widget-wrap [aria-disabled="true"] *,
.hawp-calendar-widget-wrap button:disabled * {
  color: #9ca3af !important;            /* readable grey            */
  -webkit-text-fill-color: #9ca3af !important; /* defeats text-fill tricks */
  opacity: 1 !important;                /* defeats opacity:0        */
  visibility: visible !important;       /* defeats visibility:hidden */
  text-decoration: line-through !important; /* the intended styling  */
}

/* Empty leading/trailing grid cells carry no number, so the rules
   above are visually inert for them — nothing to reveal. */

/* Some builds wrap struck-through dates in <del>/<s>; a few themes
   hide or restyle these tags globally. Keep them visible and grey. */
.hawp-calendar-widget-wrap del,
.hawp-calendar-widget-wrap s,
.hawp-calendar-widget-wrap strike {
  display: inline !important;
  visibility: visible !important;
  opacity: 1 !important;
  color: #9ca3af !important;
  -webkit-text-fill-color: #9ca3af !important;
  text-decoration: line-through !important;
}
