.inventory-message{grid-column:1/-1;padding:2.5rem 1rem;text-align:center;color:#173f53;font:inherit;min-width:0;max-width:100%}
/* Placeholder cards shown while the homes load, so the grid keeps its shape
   and the page does not jump when they arrive. */
.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.home-card.is-skeleton{pointer-events:none;box-shadow:none}
.home-card.is-skeleton .home-copy{display:flex;flex-direction:column;gap:11px;padding:15px 13px 19px}
.skeleton-block,.skeleton-line{position:relative;overflow:hidden;background:#ece7de;border-radius:4px}
.home-card.is-skeleton .home-image{aspect-ratio:1.5}
.skeleton-line{height:12px}
/* Two title lines because real names wrap, then the facts, rate and note:
   the grid then keeps very close to its finished height. */
.skeleton-title{width:88%;height:16px}
.skeleton-title-short{width:54%}
.skeleton-facts{width:62%}
.skeleton-rate{width:42%;height:15px;margin-top:6px}
.skeleton-note{width:70%;height:10px}
/* A single sweep rather than a pulse: it reads as progress, not as a fault. */
.skeleton-block:after,.skeleton-line:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,#fbf8f2b3,transparent);animation:skeleton-sweep 1.4s ease-in-out infinite}
@keyframes skeleton-sweep{100%{transform:translateX(100%)}}
@media(prefers-reduced-motion:reduce){.skeleton-block:after,.skeleton-line:after{animation:none}}
/* The search bar's Destination and Guests fields, and the filter row, are
   all built from the catalogue, so they stand empty until it arrives.
   These hold their place and are replaced when the real controls render. */
/* A fixed width, not a percentage: the field is a flex row and the empty
   wrapper has no width of its own to take a percentage of. */
.field-skeleton{display:block;width:124px;max-width:100%;height:15px;margin:5px 0;border-radius:4px;background:#e7e2d9;position:relative;overflow:hidden}
.property-filter-bar.is-skeleton{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center}
.filter-chip-skeleton{display:block;width:62%;max-width:104px;height:13px;margin:0 22px;border-radius:4px;background:#e7e2d9;position:relative;overflow:hidden}
.property-filter-bar.is-skeleton>.filter-chip-skeleton{border-right:1px solid #dce6e2;padding-right:22px;min-height:24px}
.field-skeleton:after,.filter-chip-skeleton:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,#fbf8f2b3,transparent);animation:skeleton-sweep 1.4s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.field-skeleton:after,.filter-chip-skeleton:after{animation:none}}
/* Phone cards set a much larger title, so the placeholder lines grow with
   it — otherwise the grid still jumps when the real cards arrive. */
@media(max-width:600px){
  .home-card.is-skeleton .home-copy{gap:10px;padding-top:16px}
  .skeleton-title{height:29px}
  .skeleton-rate{height:17px}
}.inventory-message p{margin:0 0 1rem}.inventory-message button{font:inherit;border:1px solid #173f53;border-radius:999px;background:var(--cta-green);color:#fffdf8;padding:.7rem 1.35rem;cursor:pointer;border-color:var(--cta-green)}.inventory-message button:focus-visible{outline:3px solid #a8c6d4;outline-offset:3px}[aria-busy=true]{cursor:progress}.photo-dots{max-width:80%;overflow:hidden}.property-description-more,.about-property>p{white-space:pre-line}.property-primary:disabled{opacity:.55;cursor:wait}.home-price-note{font-size:11px;line-height:1.5;color:#637b86}.stay-photo img{object-fit:cover}.property-amenity .i{flex-shrink:0}#booking-price-context[role=status]{min-height:2.5em}.inventory-availability-status{grid-column:1/-1;color:#173f53;padding:1rem 0}.inventory-availability-status button{font:inherit;color:inherit;background:none;border:0;border-bottom:1px solid;cursor:pointer}

.home-rate>strong+span{margin-left:.35em}

/* Shared property-card styling across browsing and home selectors. */
.home-copy .home-card-link,
.property-related-card h3,
.feature-home h3,
.map-popup h3,
.home-choice .ttl,
.rv-home .rv-home-ttl,
.home-card .hc-title,
.tile-card .tile-title{font-weight:700}

.property-card-rating{display:inline-flex;align-items:center;gap:4px;vertical-align:baseline;white-space:nowrap;font-size:.78rem;line-height:1.4;font-weight:500;letter-spacing:0;color:#526b75}
.card-rating-stars{display:inline-flex;gap:1px;align-items:center}
.card-rating-slot{position:relative;display:inline-block;width:14px;height:14px;flex:none}
.property-card-rating .card-rating-star{position:absolute;inset:0;width:100%;height:100%;fill:#dce0d9;stroke:none}
.property-card-rating .card-rating-star--filled{fill:#eab52d}
.card-price-surface{display:flex;align-items:baseline;flex-wrap:wrap;gap:3px 5px;width:fit-content;max-width:100%;padding:8px 12px;border:1px solid rgba(70,128,99,.08);border-radius:9px;background:rgba(99,161,123,.09);white-space:normal}
.home-rate.card-price-surface>strong+span{margin-left:0}
.home-price-note{margin-top:6px}
.property-related-card .card-price-surface{margin-top:10px}
.map-popup .card-price-surface{margin:8px 0 2px;font-weight:600}

/* A quiet, outlined pill for the collection CTA, with no directional icon. */
.section-heading .stays-cta,
.property-section-heading .stays-cta{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:12px 27px;border:1px solid #b5cabc;border-radius:999px;background:transparent;color:var(--cta-dark);box-shadow:none;font-size:.84rem;font-weight:600;line-height:1.4;letter-spacing:.01em;text-decoration:none;white-space:nowrap;border-color:var(--cta-dark)}
.section-heading .stays-cta:hover,
.property-section-heading .stays-cta:hover{background:var(--cta-dark);border-color:var(--cta-dark);color:#fffdf8;box-shadow:none;}
.stays-cta:focus-visible{outline:2px solid #285747;outline-offset:4px}

@media(max-width:600px){
  .card-price-surface{padding:7px 10px}
  .property-card-rating{font-size:.74rem}
  .card-rating-slot{width:13px;height:13px}
}

/* A five-percent glimpse of the next photo invites a right-to-left swipe. */
.card-photo-gallery{position:absolute;inset:0;--photo-peek:5%;--photo-gap:8px;touch-action:pan-y pinch-zoom;user-select:none;-webkit-user-select:none}
.card-photo-viewport{position:absolute;inset:0;overflow:hidden;background:#fffdf8}
.card-photo-track{position:absolute;top:0;bottom:0;left:0;width:calc(100% - var(--photo-peek) - var(--photo-gap));transform:translate3d(0,0,0);transition:transform .28s cubic-bezier(.22,.68,.2,1)}
.card-photo-track>img{position:absolute;top:0;width:100%;max-width:none;height:100%;object-fit:cover;pointer-events:none;-webkit-user-drag:none}
.card-photo-previous{left:calc(-100% - var(--photo-gap))}
.card-photo-current{left:0}
.card-photo-next{left:calc(100% + var(--photo-gap))}
.card-photo-peek{position:absolute;inset:0 0 0 auto;z-index:2;width:max(44px,var(--photo-peek));padding:0;border:0;border-radius:0;background:transparent;color:inherit;cursor:pointer}
.card-photo-peek:focus-visible{outline:2px solid #fff;outline-offset:-4px;box-shadow:inset 0 0 0 5px #244f41}
.card-photo-gallery:focus-visible{outline:2px solid #244f41;outline-offset:-3px;z-index:1}
.card-photo-count{position:absolute;left:10px;bottom:10px;z-index:2;pointer-events:none;padding:3px 8px;border-radius:999px;background:#fffdf8e6;color:#264951;font-size:10px;font-weight:600;line-height:1.5;letter-spacing:.04em}
.card-gallery-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.card-photo-gallery:not(.is-single){cursor:grab}
.card-photo-gallery.is-dragging{cursor:grabbing}
.card-photo-gallery.is-dragging .card-photo-track,.card-photo-gallery.is-resetting .card-photo-track{transition:none}
.card-photo-gallery.is-single .card-photo-track{left:0;width:100%}
.stay-photo .save-home{z-index:4}
@media(prefers-reduced-motion:reduce){.card-photo-track{transition:none}}
