/* Kozy Haven shared visual-consistency layer.
 * Intentionally loaded after page-specific CSS so every plugin surface shares
 * the same layout rhythm without coupling booking logic to brochure styling.
 */
:root{
  --kh-ui-shell:1180px;
  --kh-ui-ink:#25231f;
  --kh-ui-muted:#6d685f;
  --kh-ui-paper:#fbfaf7;
  --kh-ui-surface:#ffffff;
  --kh-ui-soft:#f3f0e9;
  --kh-ui-line:#e5e0d8;
  --kh-ui-accent:#2f3b31;
  --kh-ui-accent-strong:#202a22;
  --kh-ui-radius-sm:12px;
  --kh-ui-radius-md:18px;
  --kh-ui-radius-lg:24px;
  --kh-ui-shadow-sm:0 5px 18px rgba(39,35,29,.055);
  --kh-ui-shadow-md:0 16px 42px rgba(39,35,29,.10);
  --kh-ui-section:78px;
}

/* Shared horizontal rhythm. */
.kh-home{--kh-home-shell:var(--kh-ui-shell)}
.kh-site{--kh-site-shell:var(--kh-ui-shell)}
.kh-home-shell,.kh-site-shell{width:min(var(--kh-ui-shell),calc(100% - 32px));margin-left:auto;margin-right:auto}
.kh-booking{max-width:var(--kh-ui-shell)}
.kh-cabin-page{max-width:var(--kh-ui-shell)}

/* Consistent typography rhythm while retaining the current font choices. */
.kh-home h1,.kh-home h2,.kh-home h3,
.kh-site h1,.kh-site h2,.kh-site h3,
.kh-cabin h1,.kh-cabin h2,.kh-cabin h3,
.kh-checkout h1,.kh-checkout h2,.kh-checkout h3{letter-spacing:-.022em}
.kh-home p,.kh-site p,.kh-cabin p,.kh-checkout p{line-height:1.62}

/* Shared cards/surfaces. */
.kh-home-cabin-card,
.kh-home-feature,
.kh-home-area-grid article,
.kh-home-review,
.kh-site-property-card,
.kh-site-destination-card,
.kh-site-local-card,
.kh-site-values article,
.kh-site-contact-card,
.kh-attraction-card,
.kh-itinerary-card,
.kh-policy-item,
.kh-cabin-booking,
.kh-checkout__section,
.kh-checkout__summary{
  border-color:var(--kh-ui-line);
  border-radius:var(--kh-ui-radius-md);
  box-shadow:var(--kh-ui-shadow-sm);
}

/* Property imagery should feel like one system everywhere. */
.kh-home-cabin-card__image,
.kh-site-property-card__image,
.kh-result__image{background:#e9ebe6}
.kh-home-cabin-card__image img,
.kh-site-property-card__image img,
.kh-result__image img{transition:transform .3s ease}
@media(hover:hover){
  .kh-home-cabin-card:hover .kh-home-cabin-card__image img,
  .kh-site-property-card:hover .kh-site-property-card__image img,
  .kh-result:hover .kh-result__image img{transform:scale(1.025)}
}

/* One CTA language. */
.kh-site-button,
.kh-home-button,
.kh-home-header__book,
.kh-site-header__book,
.kh-booking__submit,
.kh-result__cta,
.kh-cabin-booking__button,
.kh-cabin-quote__checkout,
.kh-checkout__continue,
.kh-checkout__complete,
.kh-checkout__primary-link{
  font-weight:750;
  border-radius:999px;
  min-height:48px;
}
.kh-booking__submit,
.kh-cabin-booking__button,
.kh-cabin-quote__checkout,
.kh-checkout__continue,
.kh-checkout__complete{
  background:var(--kh-ui-accent);
  border-color:var(--kh-ui-accent);
}
@media(hover:hover){
  .kh-booking__submit:hover,
  .kh-cabin-booking__button:hover,
  .kh-cabin-quote__checkout:hover,
  .kh-checkout__continue:hover,
  .kh-checkout__complete:hover{background:var(--kh-ui-accent-strong);border-color:var(--kh-ui-accent-strong)}
}

/* Link treatments used as secondary actions. */
.kh-home-text-link,
.kh-site-text-link,
.kh-site-property-card__body>a,
.kh-home-cabin-card__cta{
  text-underline-offset:4px;
  text-decoration-thickness:1px;
}
@media(hover:hover){
  .kh-home-text-link:hover,
  .kh-site-text-link:hover,
  .kh-site-property-card__body>a:hover,
  .kh-home-cabin-card__cta:hover{text-decoration:underline}
}

/* Keep section spacing predictable across brochure/home content. */
.kh-home-section,.kh-site-section{padding-top:var(--kh-ui-section);padding-bottom:var(--kh-ui-section)}
.kh-home-section__heading,.kh-site-section__heading{margin-bottom:32px}
.kh-home-section__heading>div,.kh-site-section__heading>div{max-width:780px}

/* Headers share proportions even though home begins transparent. */
.kh-home-header__inner,.kh-site-header__inner{min-height:76px;height:76px}
.kh-home-header__book,.kh-site-header__book{padding-left:18px;padding-right:18px}

/* Search widget: visually related to the site cards, without changing behavior. */
.kh-booking__form{border-color:var(--kh-ui-line);box-shadow:0 12px 34px rgba(35,43,37,.10)}
.kh-booking__field{background:var(--kh-ui-surface)}
.kh-booking__field-label{letter-spacing:.09em}
.kh-results{margin-top:28px}
.kh-result{border-radius:var(--kh-ui-radius-md);border-color:var(--kh-ui-line);box-shadow:var(--kh-ui-shadow-sm);overflow:hidden}
.kh-results-empty{border-radius:var(--kh-ui-radius-md);border-color:var(--kh-ui-line);background:var(--kh-ui-surface)}

/* Cabin details use the same vertical and surface rhythm as the brochure site. */
.kh-site--cabin .kh-cabin-page{padding-top:24px;padding-bottom:80px}
.kh-cabin-gallery-shell{margin-bottom:28px}
.kh-cabin-heading{margin-bottom:30px}
.kh-cabin-heading h1{margin-bottom:10px}
.kh-cabin-layout{gap:48px}
.kh-cabin-booking{border-color:var(--kh-ui-line);box-shadow:var(--kh-ui-shadow-md)}
.kh-cabin__amenities li{border-color:var(--kh-ui-line)}

/* Checkout is intentionally wider but should use the same materials and typography. */
.kh-checkout{color:var(--kh-ui-ink)}
.kh-checkout__section,.kh-checkout__summary{background:var(--kh-ui-surface);border-color:var(--kh-ui-line)}
.kh-checkout__summary{box-shadow:var(--kh-ui-shadow-md)}
.kh-checkout input{border-radius:var(--kh-ui-radius-sm)}
.kh-confirmation__card{border-radius:var(--kh-ui-radius-lg);box-shadow:var(--kh-ui-shadow-md)}

/* Footer height/rhythm is matched across both shells. */
.kh-home-footer,.kh-site-footer{padding-top:48px;padding-bottom:48px}
.kh-home-footer nav,.kh-site-footer nav{row-gap:8px}

/* Mobile-first rhythm. */
@media(max-width:700px){
  :root{--kh-ui-section:54px}
  .kh-home-shell,.kh-site-shell{width:min(100% - 24px,var(--kh-ui-shell))}
  .kh-home-header__inner,.kh-site-header__inner{height:68px;min-height:68px}
  .kh-home-section__heading,.kh-site-section__heading{margin-bottom:24px}
  .kh-home-cabin-card,.kh-site-property-card,.kh-result,.kh-cabin-booking,.kh-checkout__section,.kh-checkout__summary{border-radius:16px}
  .kh-site--cabin .kh-cabin-page{padding-top:14px;padding-bottom:58px}
  .kh-cabin-gallery-shell{margin-bottom:22px}
  .kh-cabin-layout{gap:22px}
}

@media(prefers-reduced-motion:reduce){
  .kh-home-cabin-card__image img,.kh-site-property-card__image img,.kh-result__image img{transition:none!important}
}

/* v1.0.3 — one property-card system across Home, Cabins and live search. */
.kh-home-cabin-card,
.kh-site-property-card,
.kh-result{
  display:flex;
  flex-direction:column;
  min-width:0;
  overflow:hidden;
  background:var(--kh-ui-surface,#fff);
  border:1px solid var(--kh-ui-line,#e3ddd2);
  border-radius:18px;
  box-shadow:var(--kh-ui-shadow-sm,0 6px 18px rgba(25,35,29,.06));
}
.kh-home-cabin-card__image,
.kh-site-property-card__image,
.kh-result__image-wrap{
  position:relative;
  display:block;
  width:100%;
  aspect-ratio:4/3;
  margin:0;
  overflow:hidden;
  border-radius:0!important;
  background:#e9ebe6;
}
.kh-home-cabin-card__image img,
.kh-site-property-card__image img,
.kh-result__image{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}
.kh-home-cabin-card__body,
.kh-site-property-card__body,
.kh-result__body{
  display:flex;
  flex:1 1 auto;
  flex-direction:column;
  padding:18px 18px 20px;
}
.kh-home-cabin-card__body h3,
.kh-site-property-card h3,
.kh-result__title{
  margin:0 0 8px;
  font-family:var(--kh-font-heading,Georgia,"Times New Roman",serif);
  font-size:clamp(19px,1.65vw,22px);
  line-height:1.22;
  letter-spacing:-.018em;
}
.kh-home-cabin-card__body h3 a,
.kh-site-property-card h3 a{
  color:inherit;
  text-decoration:none;
}
.kh-home-cabin-card__body p,
.kh-site-property-card__body p,
.kh-result__meta{
  margin:0 0 14px;
  color:var(--kh-ui-muted,#6d685f);
  font-size:14px;
  line-height:1.45;
}
.kh-home-cabin-card__cta,
.kh-site-property-card__body>a{
  margin-top:auto;
  padding-top:4px;
  font-size:14px;
  font-weight:750;
  text-decoration:none;
}
.kh-result__footer{
  margin-top:auto;
}
.kh-result__cta{
  margin-top:16px;
}
@media(max-width:700px){
  .kh-home-cabin-card__body,
  .kh-site-property-card__body,
  .kh-result__body{padding:16px 16px 18px}
}
