/* Shared geometry for the full-width room grids on location and package
   details, where the editorial content and booking panel have ended. */
.loc-spaces-fullwidth{ margin-top: clamp(42px, 5vw, 72px); }
.loc-spaces-fullwidth > h2{
  font-size: clamp(1.4rem, 2.1vw, 2rem);
  line-height: 1.25;
  letter-spacing: -0.028em;
  margin: 0 0 20px;
  /* no rule of its own: the section above already ends in one
     (.loc-detail-grid + .wrap, huna-art.css) — two lines stacked 48px apart */
  padding-top: 0;
  border-top: 0;
  text-align: start;
}
html[dir="rtl"] .loc-spaces-fullwidth > h2{ line-height: 1.45; letter-spacing: 0; }
/* ---- the one definition of a room grid (round 56) ----------------------
   A row of rooms begins under its heading, on the side the page reads from,
   and the cards share the line in equal columns. auto-fill keeps the empty
   columns, so one room is one column wide at the start of the row — never
   centred, never stretched across the page. Location pages, package pages
   and the related-rooms block all use this; nothing else sets it. */
.sc-grid,
.loc-spaces-fullwidth .sc-grid,
.pkgd-related-rooms .sc-grid{
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
  justify-content: start;
  justify-items: stretch;
  align-items: stretch;
  gap: clamp(16px, 2vw, 24px);
}
.sc-grid > .sc,
.sc-grid > .sc:last-child:nth-child(odd){
  grid-column: auto;
  justify-self: stretch;
  width: 100%;
  max-width: none;
}
.sc{
  width: 100%;
  min-width: 0;
  aspect-ratio: 4 / 5 !important;
  border-radius: 16px;
  text-align: start;
  direction: inherit;
}
.sc > .sc__body{
  display: grid;
  justify-items: start;
  align-items: start;
  min-width: 0;
  width: 100%;
  padding: 18px 18px 0 !important;
  text-align: start;
}
.sc__type,
.sc__name,
.sc__blurb,
.sc__facts,
.sc__price{
  max-width: 100%;
  text-align: start;
}
.sc__name,
.sc__blurb,
.sc__price{ overflow-wrap: anywhere; }
.sc__type,
.sc__name,
.sc__blurb,
.sc__facts,
.sc__price,
.sc__fact{
  justify-self: start;
  text-align: start;
  unicode-bidi: plaintext;
}
.sc__price,
.sc__price > span{ direction: inherit; }
.sc__facts{ gap: 5px 12px; }
.sc__fact{ white-space: normal; }
.sc__price{ flex-wrap: wrap; row-gap: 2px; }
.sc > .sc__foot{
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
  width: 100%;
  text-align: start;
}
.sc > .sc__foot .cta-btn{ max-width: 100%; align-self: flex-start; }
.loc-detail-body > .loc-spaces-fullwidth + .wrap,
.loc-detail-body > .pkgd-related-rooms + .wrap{
  margin-top: clamp(56px, 6vw, 96px);
  padding-top: clamp(32px, 3.4vw, 48px);
  border-top: 1px solid var(--ha-line);
}

/* The package catalogue: the same rule. A filter that leaves one package
   leaves one column-wide card at the start of the row. */
#pkgs-grid.pk-grid{
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
  justify-content: start;
  align-items: stretch;
  gap: clamp(16px, 2vw, 24px);
}
#pkgs-grid.pk-grid > .pkg-card,
#pkgs-grid.pk-grid > .pkg-card:last-child:nth-child(odd){
  grid-column: auto;
  width: 100%;
  max-width: none;
  justify-self: stretch;
}

/* Bilingual card content should follow the active page direction as a unit.
   Keep LTR values such as counts and prices isolated when Arabic is active. */
html[dir="rtl"] .sc__facts,
html[dir="rtl"] .sc__price{ direction: rtl; }
html[dir="rtl"] .sc__fact{ unicode-bidi: isolate; }
