/**
 * CLS stability — reserve space for ads/images/fonts that shift layout in field CrUX.
 * Load early (with critical CSS) so first paint already has reserved slots.
 */

/* ── Topbar: fixed chrome height so logo/fonts cannot grow the header ── */
.bravo_wrap .bravo_topbar {
  min-height: 80px;
  box-sizing: border-box;
}
@media (max-width: 768px) {
  .bravo_wrap .bravo_topbar {
    min-height: 60px;
  }
}

.bravo_wrap .bravo_topbar .content .topbar-left .bravo-logo {
  display: inline-block;
  min-height: 50px;
  min-width: 120px;
}
@media (max-width: 768px) {
  .bravo_wrap .bravo_topbar .content .topbar-left .bravo-logo {
    min-height: 40px;
  }
}

/* Logo: keep intrinsic ratio; never let width:auto expand vertical chrome */
.bravo_wrap .bravo_topbar .content .topbar-left .bravo-logo img {
  display: block;
  height: 50px !important;
  width: auto !important;
  max-height: 50px !important;
  max-width: 250px !important;
  aspect-ratio: 5 / 1;
}
@media (max-width: 768px) {
  .bravo_wrap .bravo_topbar .content .topbar-left .bravo-logo img {
    height: 40px !important;
    max-height: 40px !important;
    max-width: 200px !important;
  }
}

/* ── AdSense: reserve space before creatives paint (field CLS ~0.2 when 120→280) ── */
.ik-adsense {
  display: block;
  width: 100%;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  text-align: center;
  overflow: hidden;
  contain: layout style;
  box-sizing: border-box;
}

.ik-adsense ins.adsbygoogle {
  display: block !important;
  width: 100%;
  box-sizing: border-box;
}

/* Header leaderboard: typical 728×90 / responsive ~90–100px tall */
.ik-adsense--header,
.ik-adsense--display_auto.ik-adsense--header {
  min-height: 100px;
  max-height: 120px;
}
.ik-adsense--header ins.adsbygoogle {
  min-height: 90px !important;
  max-height: 120px;
}

/* Mid-page / multipurpose responsive units often land ~250–280px */
.ik-adsense--display_auto:not(.ik-adsense--header),
.ik-adsense--multipurpose,
.ik-adsense--home-mid {
  min-height: 250px;
}
.ik-adsense--display_auto:not(.ik-adsense--header) ins.adsbygoogle,
.ik-adsense--multipurpose ins.adsbygoogle,
.ik-adsense--home-mid ins.adsbygoogle {
  min-height: 250px !important;
}

/* In-feed fluid cards */
.ik-adsense--infeed_fluid {
  min-height: 120px;
}
.ik-adsense--infeed_fluid ins.adsbygoogle {
  min-height: 100px !important;
}

/* Legacy / raw adsbygoogle not wrapped by partial — still reserve a floor */
ins.adsbygoogle {
  min-height: 90px;
  box-sizing: border-box;
}

/* Sticky Auto-ads / anchor often inject near body; keep from expanding document flow */
ins.adsbygoogle[data-anchor-status],
ins.adsbygoogle.adsbygoogle-noablate {
  max-height: 100px;
  overflow: hidden;
}

/* ── Search / listing banners (CrUX: bravo_search_tour) ── */
.bravo_wrap .bravo_search_tour .bravo_banner {
  min-height: 180px;
  contain: layout paint;
}
@media (max-width: 766px) {
  .bravo_wrap .bravo_search_tour .bravo_banner {
    min-height: 140px;
  }
}

.iko-tender-hero {
  contain: layout paint;
}

.iko-tender-hero__overlay {
  contain: strict;
}

/* Homepage hero: avoid vh-driven reflow when chrome/ad height settles */
.hero-section {
  min-height: 420px;
  contain: layout paint;
}
@media (max-width: 991px) {
  .hero-section {
    min-height: 360px;
  }
}
@media (max-width: 575px) {
  .hero-section {
    min-height: 280px;
  }
}

/* ── Testimonial avatars (unsized-images insight) ── */
.bravo_wrap .page-template-content .bravo-testimonial .item .author img {
  width: 70px;
  height: 70px;
  object-fit: cover;
  flex-shrink: 0;
  aspect-ratio: 1 / 1;
}

/* ── Footer social icons from CMS HTML (travelhotel demo PNGs) ── */
.bravo_wrap .bravo_footer .contact .sub a img,
.bravo_wrap .bravo_footer .contact .sub img {
  width: 24px;
  height: 24px;
  object-fit: contain;
  display: inline-block;
  vertical-align: middle;
}

/* ── Company / detail shells (CrUX: box_general.padding-0, bravo_detail_tour) ── */
.bravo_wrap .bravo_detail_tour {
  contain: layout;
}

.bravo_wrap .bravo_search_tour {
  contain: layout;
}
