/* Destination Hub Collage 3.4 — corrected root styling and interface QA.
 * Depends on collage-33.css AND body classes v31/v32/v33.
 * All pricing, availability and booking events remain owned by the existing engine. */

/* Never expose the accessibility skip-link except on keyboard focus. */
body.dh-collage-v34 .dh-skip-link:not(:focus),
body.dh-collage-v34 .screen-reader-text:not(:focus) {
 position:absolute!important;width:1px!important;height:1px!important;padding:0!important;
 margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;
 clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important;
}
body.dh-collage-v34 :is(.live-search-grid,.live-field,.dh-v8-guest-select,.location-hotel-card,.location-hotel-price,.rate-card,.rate-price,.dh-studio-results-content,.dh-filter-fields){min-width:0!important}
body.dh-collage-v34 :is(.btn,.btn-primary,.live-search-submit,.rate-book-btn,.location-view-btn,.dh-show-room-rates,#mobileFiltersToggle,#mobileSortToggle){font-family:inherit!important;text-decoration:none!important}

/* The visually hidden 'coming soon' label was reappearing in the tab at
   small widths because the former screen-reader class was not clipped. */
body.dh-collage-v34 .search-mode-btn .dh-ref-sr-only {position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important}
body.dh-collage-v34.dh-studio-home .search-mode-btn {position:relative!important;min-width:0!important;flex:1 1 auto!important;overflow:hidden!important;text-overflow:ellipsis!important}
body.dh-collage-v34.dh-studio-home .search-mode-toggle {max-width:100%!important}

/* Only the single explicit plus symbol appears beside More options. The
   earlier pseudo icon made '+ +' and the disclosure lost a consistent hitbox. */
body.dh-collage-v34.dh-studio-home .dh-collage-advanced>summary::before,
body.dh-collage-v34.dh-studio-home .dh-collage-advanced>summary::after {content:none!important;display:none!important}
body.dh-collage-v34.dh-studio-home .dh-collage-advanced>summary{display:flex!important;justify-content:space-between!important;align-items:center!important;gap:8px!important;max-width:100%!important;min-width:0!important;cursor:pointer!important;}
body.dh-collage-v34.dh-studio-home .dh-collage-advanced>summary>span{display:inline-flex!important;align-items:center!important;justify-content:center!important;flex:0 0 20px!important;height:20px!important;margin-left:auto!important;font-size:18px!important;line-height:1!important}
body.dh-collage-v34.dh-studio-home .dh-collage-advanced[open]>summary>span{transform:rotate(45deg)}
body.dh-collage-v34.dh-studio-home .dh-collage-advanced .dh-search-advanced-fields{box-sizing:border-box!important;max-width:100%!important}

/* Results: source JS produces .location-card-carousel inside .location-hotel-media.
   Set the size of BOTH elements; a full-width card alone does not stretch image. */
body.dh-collage-v34 .location-hotel-list{width:100%!important;max-width:100%!important;min-width:0!important;}
body.dh-collage-v34 .location-hotel-card:not(.attraction-result-card){min-width:0!important;max-width:100%!important}
body.dh-collage-v34 .location-hotel-media{min-width:0!important;overflow:hidden!important}
body.dh-collage-v34 .location-hotel-media .location-card-carousel{overflow:hidden!important}
body.dh-collage-v34 .location-hotel-media .location-card-carousel img,
body.dh-collage-v34 .location-hotel-media>img {object-fit:cover!important;object-position:center!important}
body.dh-collage-v34 .location-hotel-price{min-width:0!important}
body.dh-collage-v34 .location-price-summary{min-width:0!important;overflow-wrap:anywhere!important}

/* Filter controls: no secondary inset border around the summary or duplicated
   outlines from multiple generations of CSS. Keep the original form IDs. */
body.dh-collage-v34 #locationAdvancedFilters .dh-filter-fields > :is(label,.dh-multi-filter-field){box-sizing:border-box!important;min-width:0!important;padding:0!important;border:0!important;box-shadow:none!important}
body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter{border:0!important;box-shadow:none!important;margin:0!important;padding:0!important;min-width:0!important}
body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter>summary{box-sizing:border-box!important;min-width:0!important;width:100%!important;max-width:100%!important;box-shadow:none!important;outline-offset:2px!important}
body.dh-collage-v34 #locationAdvancedFilters :is(select,.location-multi-filter>summary){font-family:inherit!important;line-height:1.3!important;color:#24475c!important}
body.dh-collage-v34 #locationAdvancedFilters .dh-multi-filter-field .dh-filter-control-title{font-weight:750!important;line-height:1.4!important;margin:0 0 6px!important;color:#466879!important}
body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter-panel>label{gap:10px!important;padding:7px 1px!important;min-height:32px!important;cursor:pointer!important}
body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter-panel input[type=checkbox]{accent-color:#00849b!important}

/* Separate heading and help text into proper lines throughout hotel/attraction
   availability; some older styles left the two pieces inline. */
body.dh-collage-v34.dhcs-hotel-page .dh-ref-availability-anchor,
body.dh-collage-v34.dhcs-hotel-page .availability-head{min-width:0!important}
body.dh-collage-v34.dhcs-hotel-page .dh-ref-availability-anchor h2 {display:block!important;clear:both!important;margin:0 0 8px!important;line-height:1.23!important}
body.dh-collage-v34.dhcs-hotel-page .dh-ref-availability-anchor p {display:block!important;clear:both!important;margin:0!important;line-height:1.5!important;max-width:70ch!important}
body.dh-collage-v34.dhcs-hotel-page .availability-head h2{display:block!important;margin:6px 0 8px!important;line-height:1.3!important}
body.dh-collage-v34.dhcs-hotel-page .availability-head p{display:block!important;margin:0!important;line-height:1.5!important}
body.dh-collage-v34.dhcs-hotel-page .room-group{min-width:0!important}
body.dh-collage-v34.dhcs-hotel-page .room-group .group-head{min-width:0!important}
body.dh-collage-v34.dhcs-hotel-page .room-group .group-head h3{overflow-wrap:anywhere!important;line-height:1.3!important}
body.dh-collage-v34.dhcs-hotel-page .room-group-gallery{min-width:0!important;overflow:hidden!important}
body.dh-collage-v34.dhcs-hotel-page .room-media-strip{max-width:100%!important;overflow-x:auto!important}
body.dh-collage-v34.dhcs-hotel-page .rate-card{min-width:0!important}
body.dh-collage-v34.dhcs-hotel-page .rate-price{min-width:0!important}
body.dh-collage-v34.dhcs-hotel-page .dh-show-room-rates{display:flex!important;gap:7px!important;justify-content:center!important;align-items:center!important;margin:12px auto 17px!important;white-space:normal!important;border-radius:9px!important;font-family:inherit!important;font-size:13px!important;font-weight:750!important;max-width:100%!important;min-height:42px!important;padding:10px 14px!important;background:#fff!important;color:#007d95!important;border:1px solid #c9dfe8!important;box-shadow:none!important}

@media(max-width:760px){
 body.dh-collage-v34.dh-studio-home .search-mode-toggle{width:100%!important;display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:4px!important;}
 body.dh-collage-v34.dh-studio-home .search-mode-btn{min-width:0!important;max-width:100%!important;font-size:11px!important;white-space:nowrap!important;padding:8px 2px!important}
 body.dh-collage-v34.dh-studio-home .dh-v8-guest-select{padding:0!important;margin:0!important;box-shadow:none!important;border:none!important}
 body.dh-collage-v34.dh-studio-home .dh-v8-guest-select>summary{min-width:0!important;max-width:100%!important;box-shadow:none!important;white-space:nowrap!important;overflow:hidden!important}
 body.dh-collage-v34.dh-studio-home .dh-v8-guest-fields{max-width:100%!important;box-sizing:border-box!important}
 body.dh-collage-v34.dh-studio-home .dh-collage-date-field{position:relative!important;min-width:0!important}
 body.dh-collage-v34.dh-studio-home .dh-collage-date-field label{position:static!important;display:block!important;height:auto!important;line-height:1.3!important;font-size:11px!important;padding:0!important;margin:0 0 5px!important;transform:none!important;}
 body.dh-collage-v34.dh-studio-home .dh-collage-date-field input[type=date]{position:static!important;display:block!important;width:100%!important;min-width:0!important;max-width:100%!important;height:48px!important;min-height:48px!important;line-height:normal!important;padding:0 8px!important;font-size:12px!important;}
 body.dh-collage-v34.dh-studio-home .dh-collage-advanced{width:100%!important;min-width:0!important;max-width:100%!important;position:relative!important;z-index:40!important}
 body.dh-collage-v34.dh-studio-home .dh-collage-advanced>summary{width:100%!important;min-height:35px!important;padding:8px 10px!important}
 body.dh-collage-v34.dh-studio-home .dh-collage-advanced>.dh-search-advanced-fields{position:static!important;max-width:100%!important;width:100%!important;grid-template-columns:minmax(0,1fr)!important}
 body.dh-collage-v34 .dh-studio-results-grid{display:block!important;width:100%!important;min-width:0!important;max-width:100%!important}
 body.dh-collage-v34 .location-hotel-card:not(.attraction-result-card){display:flex!important;flex-direction:column!important;width:100%!important;max-width:100%!important;min-width:0!important;height:auto!important;}
 body.dh-collage-v34 .location-hotel-card:not(.attraction-result-card)>.location-hotel-media{display:block!important;position:relative!important;width:100%!important;min-width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;aspect-ratio:16/9!important;flex:0 0 auto!important;margin:0!important;padding:0!important;}
 body.dh-collage-v34 .location-hotel-card:not(.attraction-result-card)>.location-hotel-media>.location-card-carousel{display:block!important;position:absolute!important;inset:0!important;width:100%!important;max-width:100%!important;height:100%!important;min-height:100%!important;max-height:100%!important;aspect-ratio:auto!important;margin:0!important;padding:0!important}
 body.dh-collage-v34 .location-hotel-card:not(.attraction-result-card)>.location-hotel-media :is(img,.location-hotel-carousel-image){display:block!important;position:absolute!important;inset:0!important;width:100%!important;max-width:100%!important;height:100%!important;min-width:100%!important;min-height:100%!important;object-fit:cover!important;aspect-ratio:auto!important}
 body.dh-collage-v34 .location-hotel-card:not(.attraction-result-card)>.location-hotel-copy{display:flex!important;flex-direction:column!important;gap:7px!important;grid-column:auto!important;grid-row:auto!important;width:100%!important;min-width:0!important;max-width:100%!important;padding:15px!important;margin:0!important}
 body.dh-collage-v34 .location-hotel-card:not(.attraction-result-card)>.location-hotel-price{display:flex!important;flex-direction:row!important;justify-content:space-between!important;align-items:flex-end!important;gap:12px!important;grid-column:auto!important;grid-row:auto!important;width:100%!important;max-width:100%!important;min-width:0!important;min-height:73px!important;padding:12px 15px!important;border-left:0!important;border-top:1px solid #dfe9ef!important;margin:0!important;text-align:left!important}
 body.dh-collage-v34 .location-hotel-price .location-card-actions{flex:0 0 auto!important;min-width:0!important;width:auto!important;margin-left:auto!important}
 body.dh-collage-v34 .location-hotel-price .location-card-actions button{font-size:12px!important;min-height:42px!important;max-width:145px!important;padding:8px 10px!important}
 body.dh-collage-v34 .location-hotel-price .location-price-summary{flex:1 1 auto!important;min-width:0!important}
 body.dh-collage-v34 #locationAdvancedFilters.is-mobile-open,
 body.dh-collage-v34.dh-filters-visible #locationAdvancedFilters,
 body.dh-collage-v34 #locationAdvancedFilters.dh-filter-sheet-open{display:block!important;position:fixed!important;left:0!important;right:0!important;bottom:0!important;top:auto!important;inset:auto 0 0!important;width:100%!important;max-width:100vw!important;height:auto!important;max-height:min(84dvh,790px)!important;padding:17px 19px calc(20px + env(safe-area-inset-bottom))!important;overflow-y:auto!important;overflow-x:hidden!important;background:#fff!important;border:0!important;border-radius:21px 21px 0 0!important;box-shadow:0 -12px 45px rgba(5,38,53,.24)!important;z-index:100500!important}
 body.dh-collage-v34 #locationAdvancedFilters .dh-filter-sheet-head{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;border-bottom:1px solid #e5eef2!important;padding:4px 0 14px!important;margin:0 0 15px!important}
 body.dh-collage-v34 #locationAdvancedFilters .dh-filter-sheet-head strong{font-size:21px!important;line-height:1.25!important}
 body.dh-collage-v34 #locationAdvancedFilters #locationFiltersClose{width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;border-radius:50%!important;background:#eff8fa!important;border:0!important;color:#174154!important}
 body.dh-collage-v34 #locationAdvancedFilters .dh-filter-fields{display:flex!important;flex-direction:column!important;gap:15px!important;padding:0!important;margin:0!important;max-width:100%!important;min-width:0!important}
 body.dh-collage-v34 #locationAdvancedFilters .dh-filter-fields > :is(label,.dh-multi-filter-field){margin:0!important;padding:0!important;max-width:100%!important}
 body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter>summary{display:flex!important;align-items:center!important;justify-content:space-between!important;min-height:44px!important;padding:10px 13px!important;background:#fff!important;border:1px solid #dce9ef!important;border-radius:10px!important;box-shadow:none!important}
 body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter-panel{display:none!important;max-width:100%!important;padding:9px 3px 2px!important;margin:0!important;border:0!important;box-shadow:none!important}
 body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter[open]>.location-multi-filter-panel{display:grid!important;grid-template-columns:1fr!important;gap:2px!important}
 body.dh-collage-v34 #locationAdvancedFilters :is(.location-filter-wrap select,.location-sort-wrap select){display:block!important;width:100%!important;min-width:0!important;height:44px!important;min-height:44px!important;border:1px solid #dce9ef!important;border-radius:10px!important;padding:8px 13px!important;font-size:13px!important;background:white!important}
 body.dh-collage-v34 #locationAdvancedFilters .dh-mobile-filter-done{position:sticky!important;bottom:-1px!important;min-height:48px!important;margin:22px 0 0!important;width:100%!important;border-radius:10px!important;font-size:14px!important;z-index:3!important}
 body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter .location-multi-filter-head{display:none!important}
 body.dh-collage-v34 #locationAdvancedFilters .dh-filter-control-title{color:#56717f!important;font-size:12px!important;margin:0 0 6px!important}
 body.dh-collage-v34.dhcs-hotel-page .dh-ref-availability-anchor{display:block!important;width:calc(100% - 28px)!important;margin:14px auto 9px!important;padding:0!important}
 body.dh-collage-v34.dhcs-hotel-page .dh-ref-availability-anchor h2{font-size:22px!important;margin:0 0 7px!important}
 body.dh-collage-v34.dhcs-hotel-page .dh-ref-availability-anchor p{font-size:13px!important;line-height:1.5!important}
 body.dh-collage-v34.dhcs-hotel-page .availability-card{max-width:100%!important;min-width:0!important;padding:15px!important}
 body.dh-collage-v34.dhcs-hotel-page .rate-grid{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:10px!important;padding:10px!important}
 body.dh-collage-v34.dhcs-hotel-page .rate-card{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:12px!important;padding:14px!important;overflow:hidden!important}
 body.dh-collage-v34.dhcs-hotel-page .rate-price{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(110px,auto)!important;grid-template-rows:auto auto!important;align-items:center!important;column-gap:10px!important;row-gap:4px!important;width:100%!important;min-width:0!important;max-width:100%!important;border-top:1px solid #e2ecf1!important;padding:11px 0 0!important;margin:0!important}
 body.dh-collage-v34.dhcs-hotel-page .rate-price>span{grid-column:1!important;grid-row:1!important;min-width:0!important;justify-self:start!important;font-size:10px!important}
 body.dh-collage-v34.dhcs-hotel-page .rate-price>strong{grid-column:1!important;grid-row:2!important;min-width:0!important;max-width:100%!important;justify-self:start!important;font-size:clamp(18px,5vw,24px)!important;white-space:nowrap!important}
 body.dh-collage-v34.dhcs-hotel-page .rate-price>.rate-book-btn{grid-column:2!important;grid-row:1/3!important;justify-self:end!important;align-self:center!important;min-width:112px!important;max-width:140px!important;white-space:normal!important;word-break:normal!important;margin:0!important;font-size:12px!important}
 body.dh-collage-v34.dhcs-hotel-page .dh-show-room-rates{width:auto!important;min-width:165px!important;min-height:43px!important;font-size:12px!important;padding:10px 14px!important;}
}
@media(max-width:374px){body.dh-collage-v34.dhcs-hotel-page .rate-price{grid-template-columns:minmax(0,1fr)!important;grid-template-rows:auto auto auto!important}body.dh-collage-v34.dhcs-hotel-page .rate-price>.rate-book-btn{grid-column:1!important;grid-row:3!important;justify-self:stretch!important;max-width:none!important;width:100%!important}}
/* Critical card price fix: old global .location-card-actions width:100% takes
   all the space in the mobile horizontal price bar and makes numbers vertical. */
@media(max-width:760px){
 body.dh-collage-v34 .location-hotel-card:not(.attraction-result-card)>.location-hotel-price{
  display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;
  grid-template-rows:auto!important;align-items:center!important;justify-content:stretch!important;
  column-gap:12px!important;row-gap:0!important;
 }
 body.dh-collage-v34 .location-hotel-card:not(.attraction-result-card)>.location-hotel-price>.location-price-summary{
  grid-column:1!important;grid-row:1!important;display:flex!important;flex-direction:column!important;
  flex:initial!important;width:auto!important;max-width:none!important;min-width:0!important;
  overflow-wrap:normal!important;word-break:normal!important;white-space:normal!important;
 }
 body.dh-collage-v34 .location-hotel-card:not(.attraction-result-card)>.location-hotel-price>.location-price-summary .from-label{
  display:block!important;line-height:1.35!important;font-size:10px!important;
  overflow-wrap:normal!important;word-break:normal!important;white-space:normal!important;
 }
 body.dh-collage-v34 .location-hotel-card:not(.attraction-result-card)>.location-hotel-price>.location-price-summary strong{
  display:block!important;white-space:nowrap!important;overflow-wrap:normal!important;
  font-size:clamp(20px,6vw,26px)!important;line-height:1.15!important;margin-top:6px!important;
 }
 body.dh-collage-v34 .location-hotel-card:not(.attraction-result-card)>.location-hotel-price>.location-card-actions{
  grid-column:2!important;grid-row:1!important;display:block!important;
  flex:initial!important;width:auto!important;max-width:145px!important;min-width:0!important;
  margin:0!important;justify-self:end!important;align-self:center!important;
 }
 body.dh-collage-v34 .location-hotel-card:not(.attraction-result-card)>.location-hotel-price>.location-card-actions>.btn{
  display:inline-flex!important;width:auto!important;max-width:145px!important;min-width:111px!important;
  align-items:center!important;justify-content:center!important;white-space:normal!important;
  font-size:12px!important;line-height:1.25!important;
 }
}
/* The engine portals its mobile filter sheet into <body>. These selectors
   intentionally outrank the legacy right-drawer `html body.v31` rules. */
@media(max-width:760px){
 html body.dh-collage-v34.dh-filters-visible #locationAdvancedFilters,
 html body.dh-collage-v34 #locationAdvancedFilters.is-mobile-open,
 html body.dh-collage-v34 #locationAdvancedFilters.dh-filter-sheet-open{
  display:block!important;position:fixed!important;inset:auto 0 0 0!important;
  top:auto!important;right:0!important;bottom:0!important;left:0!important;
  width:100vw!important;max-width:100vw!important;min-width:0!important;
  height:auto!important;max-height:min(84dvh,790px)!important;
  overflow-x:hidden!important;overflow-y:auto!important;
  padding:18px 17px calc(24px + env(safe-area-inset-bottom))!important;
  margin:0!important;border:0!important;border-radius:22px 22px 0 0!important;
  background:#fff!important;box-shadow:0 -14px 42px rgba(5,38,53,.28)!important;
  transform:none!important;z-index:100500!important;
 }
 html body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter>summary .dh-visually-hidden{
  position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;
  clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;
 }
 html body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter>summary strong{
  margin:0 auto 0 0!important;line-height:1.35!important;text-align:left!important;
 }
 html body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter>summary:after{
  display:block!important;position:static!important;content:'⌄'!important;
  margin-left:8px!important;font-size:18px!important;color:#456477!important;
 }
}
/* Desktop filter choices must stay visible even after the engine's result
   layout moves the filter tool outside #liveResults. */
@media(min-width:761px){
 html body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter{display:block!important}
 html body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter>summary{display:none!important}
 html body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter[open]>.location-multi-filter-panel{
  display:grid!important;position:static!important;visibility:visible!important;
  opacity:1!important;max-height:none!important;overflow:visible!important;
  grid-template-columns:1fr!important;padding:0!important;margin:0!important;border:0!important;
 }
 html body.dh-collage-v34 #locationAdvancedFilters .location-multi-filter-panel>label{display:flex!important;align-items:center!important;gap:8px!important;min-height:29px!important}
}
