/* V158 Grid and Card Height Stabilization.
 * This terminal layer intentionally follows V157 typography. It removes
 * accidental equal-height behaviour while preserving explicitly opted-in
 * equal-height groups via [data-ia-equal-height]. */

:root{
  --ia-layout-gap-xs:10px;
  --ia-layout-gap-sm:14px;
  --ia-layout-gap-md:18px;
  --ia-layout-gap-lg:24px;
  --ia-layout-gap-xl:32px;
  --ia-card-media-ratio:16/10;
  --ia-card-media-ratio-compact:4/3;
}

/* Every canonical layout participant may shrink without widening its column. */
.ia-layout-v158 :where([data-ia-layout-grid],
  .cards-grid,.popular-grid,.latest-grid,.regions-grid,.archive-grid,.province-grid,
  .district-related-grid,.district-feature-grid,.district-quick-grid,.district-info-grid,
  .ia-card-data__grid,.ia-attraction-grid,.ia-link-card-grid,.ia-topic-card-grid,
  .home-links-grid,.engage-grid,.stats-grid,.numbers-grid){
  align-items:start;
  grid-auto-rows:auto;
  min-width:0;
  min-block-size:0;
}

.ia-layout-v158 :where([data-ia-layout-grid],
  .cards-grid,.popular-grid,.latest-grid,.regions-grid,.archive-grid,.province-grid,
  .district-related-grid,.district-feature-grid,.district-quick-grid,.district-info-grid,
  .ia-card-data__grid,.ia-attraction-grid,.ia-link-card-grid,.ia-topic-card-grid,
  .home-links-grid,.engage-grid,.stats-grid,.numbers-grid) > *{
  min-width:0;
  min-block-size:0;
  block-size:auto;
  align-self:start;
}

/* Equal height remains an explicit opt-in, never a side-effect of a grid row. */
.ia-layout-v158 [data-ia-equal-height]{align-items:stretch}
.ia-layout-v158 [data-ia-equal-height] > *{align-self:stretch;height:100%}

/* Canonical cards use natural content height. Legacy fixed/min heights are
 * neutralized only on known card components, not on maps, heroes or charts. */
.ia-layout-v158 :where([data-ia-layout-card],
  .feature-card,.region-card,.ia-district-card,.ia-province-card,.archive-card,
  .district-quick-card,.district-summary-card,.district-feature-card,.district-related-card,
  .district-info-card,.ia-data-card,.ia-attraction-card,.ia-link-card,.ia-topic-card,
  .home-link-card,.engage-card){
  box-sizing:border-box;
  min-width:0;
  max-width:100%;
  min-height:0;
  height:auto;
  max-height:none;
  align-self:start;
}

/* A card's internal flex/grid children must not create phantom height. */
.ia-layout-v158 :where([data-ia-layout-card],
  .feature-card,.region-card,.ia-district-card,.ia-province-card,.archive-card,
  .district-quick-card,.district-summary-card,.district-feature-card,.district-related-card,
  .district-info-card,.ia-data-card,.ia-attraction-card,.ia-link-card,.ia-topic-card,
  .home-link-card,.engage-card) > *{
  min-width:0;
  min-block-size:0;
}

/* Remove forced bottom-pushing blank space on natural-height cards. */
.ia-layout-v158 :where(.feature-card,.region-card,.ia-district-card,.ia-province-card,.archive-card,
  .district-related-card,.home-link-card,.engage-card)
  :where(.feature-card__button,.ia-district-card__footer,.ia-district-card__cta,
  .ia-province-card__cta,.archive-card-action,.region-card>em:last-child){
  margin-top:var(--ia-layout-gap-sm);
}

/* Canonical media uses one predictable ratio. Placeholder and real images
 * occupy the same box, preventing short/long cards from image-source drift. */
.ia-layout-v158 :where(.ia-district-card__media,.ia-province-card__media,.archive-card-image){
  position:relative;
  width:100%;
  min-height:0;
  height:auto;
  aspect-ratio:var(--ia-card-media-ratio);
  overflow:hidden;
}
.ia-layout-v158 :where(.ia-district-card__media,.ia-province-card__media,.archive-card-image)
  :where(img,.ia-card-media__image,.ia-district-card__placeholder,.ia-province-card__placeholder-label,.archive-card-image__placeholder){
  width:100%;
  height:100%;
  max-height:none;
  object-fit:cover;
}

/* Body/footer blocks remain in normal document flow. */
.ia-layout-v158 :where(.ia-district-card__body,.ia-province-card__body,.archive-card-body,
  .district-related-card__body,.popular-content,.latest-content){
  position:relative;
  min-width:0;
  min-height:0;
  height:auto;
}
.ia-layout-v158 :where(.ia-district-card__footer,.ia-action-row,.random-district-actions,
  .archive-discovery-chips,.hero-actions-home){
  flex-wrap:wrap;
  min-width:0;
}

/* Structured district data must not stretch every card to the tallest sibling. */
.ia-layout-v158 :where(.ia-card-data__grid,.ia-attraction-grid,.ia-link-card-grid){align-items:start}
.ia-layout-v158 :where(.ia-data-card,.ia-attraction-card,.ia-link-card){align-self:start;min-height:0}
.ia-layout-v158 .ia-data-card--wide{grid-column:1/-1;width:100%}
.ia-layout-v158 .ia-source-summary{align-items:start}
.ia-layout-v158 .ia-source-summary>div{min-height:0;height:auto}

/* Province, region and topic sections should not inherit 100% height from an
 * adjacent long table or content panel. */
.ia-layout-v158 :where(.ia-province-section,.ia-region-section,.ia-topic-section,
  .district-feature-section,.district-related-block,.ia-card-data__section){
  min-height:0;
  height:auto;
}

/* Empty nodes never reserve a row or padding block. */
.ia-layout-v158 :where([data-ia-layout-card],.ia-card,.ia-data-card,.district-feature-card)
  > :where(p,div,span):empty:not([aria-hidden="true"]){display:none}

/* Mobile: natural one-column flow and compact media without fixed card height. */
@media(max-width:640px){
  .ia-layout-v158 :where(.cards-grid,.popular-grid,.latest-grid,.regions-grid,.archive-grid,.province-grid,
    .district-related-grid,.district-feature-grid,.district-quick-grid,.district-info-grid,
    .ia-card-data__grid,.ia-card-data__grid--stats,.ia-attraction-grid,.ia-link-card-grid,
    .ia-topic-card-grid,.home-links-grid,.engage-grid,.stats-grid,.numbers-grid){
    grid-template-columns:minmax(0,1fr);
    grid-auto-rows:auto;
  }
  .ia-layout-v158 :where(.ia-district-card__media,.ia-province-card__media,.archive-card-image){
    aspect-ratio:var(--ia-card-media-ratio-compact);
  }
}

/* Reduced motion users still receive the same stable geometry. */
@media(prefers-reduced-motion:reduce){
  .ia-layout-v158 :where([data-ia-layout-card],.feature-card,.region-card,.ia-district-card,
    .ia-province-card,.archive-card,.ia-link-card){transition:none}
}
