/* Integration only. Prototype spacing, typography and component rules remain in source CSS. */
.header.property .utility-nav { display:flex; align-items:center; gap:8px; }
.header.property .dream-language { position:relative; flex:none; }
.header.property .dream-language-toggle,
.header.property .utility-nav > .phone {
 display:flex!important; align-items:center!important; justify-content:center!important;
 width:40px; min-width:40px; height:40px!important; margin:0!important; padding:4px!important;
 color:inherit; border:0; background:none; cursor:pointer;
}
.header.property .dream-language-toggle svg,
.header.property .dream-phone-symbol { display:block; width:32px; height:32px; fill:none; stroke:currentColor; stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round; }
.header.property .utility-nav .dream-lucide-icon { width:28px;height:28px;stroke-width:1.6;flex:none; }
.header.property .dream-language-menu { position:absolute; top:calc(100% + 8px); right:0; z-index:30; min-width:68px; margin:0; padding:0; list-style:none; background:#fff; color:#333; border-radius:5px; box-shadow:0 6px 22px #0003; overflow:hidden; }
.header.property .dream-language-menu[hidden] { display:none!important; }
.header.property .dream-language-menu li { margin:0; padding:0; }
.header.property .dream-language-menu > li > :is(a,span) { display:flex; align-items:center; gap:10px; padding:11px 14px; color:inherit; font-size:14px; line-height:1.3; font-weight:600; text-decoration:none; text-align:left; white-space:nowrap; }
.header.property .dream-language-flag { display:inline-flex; align-items:center; justify-content:center; width:22px; flex:0 0 22px; padding:0; font-size:18px; line-height:1; }
.header.property .dream-language-menu :is(a:hover,a:focus-visible,[aria-current="true"]) { background:#303030; color:white; }
.header.property .dream-language-menu [aria-disabled="true"]:not([aria-current]) { color:#999; }
body:not(.sticky):not(.nav-open):not(.mobile-nav-open):not(.dream-no-hero) .header.property :is(.dream-language-toggle,.utility-nav > .phone) { color:#fff!important; }
body:is(.sticky,.nav-open,.dream-no-hero) .header.property :is(.dream-language-toggle,.utility-nav > .phone) { color:#394034!important; }
/* The legacy global header rule must not position editorial headings. */
html:has(body:is(.dream-home,.dream-page)) { height:auto; min-height:100%; overflow-x:clip; }
body:is(.dream-home,.dream-page) { height:auto; min-height:100vh; overflow:visible; }
main header:not(.header) { position:static; inset:auto; width:auto; z-index:auto; }
:root { --dream-admin-offset:0px; }
body.admin-bar { --dream-admin-offset:32px; }
.dp-hero, .hero.showcase.dream-video-hero, .hero.showcase.dream-youtube-hero {
 height:calc(100vh - var(--dream-admin-offset));
 height:calc(100svh - var(--dream-admin-offset));
 min-height:0; max-height:none;
}
.dream-video-hero > .slide,
.dream-video-hero .video.background {
 position:absolute; inset:0; width:100%; height:100%; min-height:0; max-height:none;
}
.dream-video-hero .video.background video { display:block; }
.dream-youtube-hero { --dream-youtube-overscan:1.2; position:relative; overflow:hidden; }
.dream-youtube-hero .dream-youtube-fallback,
.dream-youtube-hero .dream-youtube-player { position:absolute; inset:0; width:100%; height:100%; overflow:hidden; }
.dream-youtube-hero .dream-youtube-fallback { z-index:1; opacity:1; transition:opacity .45s ease; background:#142015; }
.dream-youtube-hero .dream-youtube-fallback__image { display:block; width:100%; height:100%; object-fit:cover; object-position:center center; }
.dream-youtube-hero .dream-youtube-player { z-index:2; opacity:0; transition:opacity .45s ease; pointer-events:none; }
.dream-youtube-hero.dream-youtube-hero--no-fallback .dream-youtube-player { opacity:1; }
.dream-youtube-hero.is-playing .dream-youtube-player { opacity:1; }
.dream-youtube-hero.is-playing .dream-youtube-fallback { opacity:0; }
.dream-youtube-hero .dream-youtube-player iframe { position:absolute; top:50%; left:50%; display:block; width:100%; height:100%; max-width:none; border:0; transform:translate(-50%,-50%); pointer-events:none; }
.dream-no-hero main { padding-top:var(--dream-header-height,150px); }
@media(max-width:782px){body.admin-bar{--dream-admin-offset:46px;}}
html.hide-transition { opacity: 1; }
.dream-honeypot { position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important; }
.dream-home :is(a,button,input,select,textarea,[tabindex]):focus-visible { outline:2px solid #2c6faa!important;outline-offset:3px; }
.header .notification[hidden],.header .phone-menu[hidden] { display:none!important; }
.header .notifications [data-dream-notify] { border:0;background-color:transparent; }
.header .notification { width:100%; }
body:is(.dream-home,.dream-page) .header.property .utility-nav { right:40px!important; }
.header .mobile-logo a { display:block; }
/* Shared mobile header: align the visible marks, not unequal wrapper boxes. */
@media (max-width:1440px) {
 .header.property .navigation { min-height:76px;box-sizing:border-box;padding-top:16px!important;padding-bottom:16px!important; }
 .header.property .navigation > .nav-toggle {
  display:flex;align-items:center;justify-content:center;width:40px;height:44px;
  margin:0!important;padding:0;flex:0 0 40px;
 }
 .header.property .nav-toggle .menu-icon { position:relative;width:40px;height:24px; }
 .header.property .nav-toggle .bar { position:absolute;left:0;top:2px;width:40px;height:2px;margin:0!important; }
 .header.property .nav-toggle .bar:nth-child(2) { top:11px; }
 .header.property .nav-toggle .bar:last-child { top:20px; }
 .header.property .nav-toggle .menu-label { position:absolute;top:calc(50% + 17px);left:50%;transform:translateX(-50%);margin:0!important;white-space:nowrap; }
 .mobile-nav-open .header.property .nav-toggle .bar { top:11px; }
 .mobile-nav-open .header.property .nav-toggle .menu-label { font-size:0;line-height:10px; }
 .mobile-nav-open .header.property .nav-toggle .menu-label::after { content:attr(data-close-label);font-size:8px;line-height:10px; }
 .header.property .mobile-logo { top:50%!important;max-width:calc(100vw - 220px); }
 .header.property .mobile-logo figure {
  display:flex!important;align-items:center;justify-content:center;height:100%!important;margin:0;
 }
 .header.property .navigation > .utility-nav { top:50%!important;transform:translateY(-50%)!important; }
 .mobile-nav-open .header.property :is(.dream-language-toggle,.utility-nav > .phone) { color:#394034!important; }

 /* All submenu variants use the same inset and row rhythm as the root menu. */
 .mobile-nav-open .header.property nav > ul > li > a,
 .mobile-nav-open .header.property nav > ul > li.dropdown .toggle + div.show .mega-menu ul li > a {
  display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;
  min-height:56px;padding:8px 24px;line-height:20px;text-align:left;text-transform:uppercase;
 }
 .mobile-nav-open .header.property nav > ul > li.dropdown .mega-menu { padding:0!important; }
 .mobile-nav-open .header.property .mega-menu .columns {
  display:block!important;width:100%!important;max-width:none!important;padding:16px 0!important;margin:0!important;
 }
 .mobile-nav-open .header.property .mega-menu .columns > li { width:100%!important;max-width:none!important;margin:0!important;padding:0!important; }
 .mobile-nav-open .header.property nav > ul > li.dropdown .toggle + div.show .mega-menu a .title {
  padding:0;min-height:0;margin:0;width:100%;line-height:20px;text-align:left;text-transform:uppercase;
 }
 .mobile-nav-open .header.property .mega-menu .title br { display:none; }
}
.swiper .card { flex-shrink:0; }
.swiper .swiper-wrapper { align-items:stretch; }
.dream-home .dream-life-overlay { cursor:pointer; }
.admin-bar .header.property { top:32px; }
.dream-home .phone-menu[hidden] { display:none!important; }
.header .notifications .notification[hidden] { display:none!important; }
.dream-home .js-video-toggle-btn { cursor:pointer; }
.dream-room-dialog{padding:24px;border:0;max-width:95vw;background:#192119;color:white;}
.dream-room-dialog::backdrop{background:#142016ee;}
.dream-room-dialog img{max-width:85vw;max-height:85vh;object-fit:contain;}
.dream-room-dialog button{position:absolute;top:0;right:0;background:#192119;color:white;font-size:28px;min-width:44px;min-height:44px;border:0;}
.dream-room-notice{background:#fff;color:#394034;padding:8px;font-size:14px;}
.dp-card--text .dp-card__overlay{position:static;padding:24px;color:var(--dp-ink);background:none;}
.dp-card--text .dp-card__title{color:var(--dp-ink)!important;}
@media(max-width:782px){.admin-bar .header.property{top:46px;}}
@media(max-width:768px){body:is(.dream-home,.dream-page) .header.property .utility-nav{right:15px!important;}}
/* Source carousel controls exceed the viewport at tablet landscape widths. */
@media(min-width:769px) and (max-width:1280px){
 .dream-home .carousel.field-guide.single [class*="swiper-next-"]{left:auto!important;right:24px!important;}
 .dream-home .carousel.field-guide.single [class*="swiper-prev-"]{left:calc(60% + 24px)!important;}
 .dream-home .carousel.field-guide.single .swiper-pagination{left:calc(60% + 72px)!important;right:72px!important;width:auto!important;}
}

/* Keep homepage storytelling slides aligned when editors enter longer copy. */
.dream-home .dream-storytelling .card.default > .wrapper > .content > .body > p {
 display:-webkit-box;
 overflow:hidden;
 -webkit-box-orient:vertical;
 -webkit-line-clamp:5;
 line-clamp:5;
}

/* VI controls inherit the source Brown family instead of the UA button font. */
html[lang="vi"] .dp-form__actions > button,
html[lang="vi"] .js-video-toggle-btn { font-family:inherit; }
/* The narrower tablet text column needs room for complete localized sentences. */
@media (min-width:769px) and (max-width:1280px) {
 .dream-home .dream-storytelling .card.default > .wrapper > .content > .body > p {
  display:block;
  overflow:visible;
  -webkit-line-clamp:unset;
  line-clamp:unset;
 }
}

@media(prefers-reduced-motion:reduce){
 html{scroll-behavior:auto!important;}
 *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important;}
}
@media print{.header,.footer,.dp-share,.dp-hero__extras{display:none!important;}}

/* Contact embeds Google Maps inside the existing responsive map panel. */
.dream-location-map-frame { display:block; width:100%; height:100%; border:0; }
.dream-location-map-frame:focus-visible { outline:3px solid #006039; outline-offset:-3px; }

/* Keep Google's iframe within the visible map column, beside the address. */
@media (min-width: 769px) {
  .dp-map-section .mapbox__inner:has(.dream-location-map-frame) { display:flex; }
  .dp-map-section .mapbox__inner:has(.dream-location-map-frame) .mapbox__content {
    position:relative; inset:auto; flex:0 0 auto; height:auto; min-height:650px;
  }
  .dp-map-section .mapbox__inner:has(.dream-location-map-frame) .mapbox__map-wrapper {
    position:relative; flex:1 1 0; min-width:0; width:auto;
  }
  .dp-map-section .mapbox__inner:has(.dream-location-map-frame) .mapbox__map { width:100%; }
}


/* Pointer clicks do not show keyboard focus rings. */
:root body:is(.dream-page, .dream-home) :is(a, button, [role="button"], [tabindex]):focus:not(:focus-visible) {
  outline:none !important;
  box-shadow:none !important;
}

/* Match footer social glyphs: Facebook & Zalo */
.footer .social a[href*="facebook"]::before,
.footer .social a.social-facebook::before {
  background-image:url('../images/7fa77060ffa431.svg') !important;
  background-position:center !important;
  background-repeat:no-repeat !important;
}
.footer .social a[href*="zalo"]::before,
.footer .social a.social-zalo::before {
  background-image:url('../icons/zalo.svg') !important;
  background-position:center !important;
  background-repeat:no-repeat !important;
  background-size:72% 72% !important;
}

/* Article / detail page social share buttons: Facebook & Zalo matching footer */
.dp-share__link img {
  width: 22px !important;
  height: 22px !important;
  max-width: 30px !important;
  max-height: 30px !important;
  display: block !important;
  object-fit: contain !important;
  pointer-events: none;
}
.dp-share__link svg {
  width: 18px !important;
  height: 18px !important;
  display: block !important;
}
.dp-share__link--zalo img {
  width:72% !important;
  height:72% !important;
  max-width:none !important;
  max-height:none !important;
}

/* Shared booking CTA follows the header's transparent / sticky colour state on desktop. */
.header.property .dream-header-booking { position:absolute;right:40px;bottom:16px; }
.header.property .dream-availability { display:flex;align-items:center;justify-content:center;min-height:54px;padding:12px 24px;border:1px solid currentColor;color:inherit;background:transparent;font-size:12px;font-weight:700;letter-spacing:2px;text-transform:uppercase;text-decoration:none;box-sizing:border-box; }
.header.property .dream-availability:hover { background:#fff!important;color:#000!important;border-color:#fff; }
body:is(.dream-home,.dream-page) .header.property.has-availability .utility-nav { right:290px!important; }
@media(max-width:1440px) {
 .header.property .dream-header-booking { position:static;padding:0 24px 12px; }
 /* Remove the whole booking row while the mobile panel covers the header. */
 .mobile-nav-open .header.property .dream-header-booking { display:none; }
 .header.property .dream-availability { min-height:42px; }
 body:is(.dream-home,.dream-page) .header.property.has-availability .utility-nav { right:40px!important; }
}
@media(max-width:768px) {
 .header.property .dream-header-booking { padding:0 15px 10px; }
 body:is(.dream-home,.dream-page) .header.property.has-availability .utility-nav { right:15px!important; }

 /* Mobile buttons: solid white background, distinct green border and text */
 .header.property .dream-availability,
 .header.property .book > .btn,
 .header.property a.btn,
 .mobile-nav-open .header.property .book a.btn {
   background:#ffffff !important;
   background-color:#ffffff !important;
   color:#005c30 !important;
   border:1px solid #005c30 !important;
   font-weight:700 !important;
   box-shadow:0 2px 8px rgba(0, 0, 0, 0.08) !important;
 }
 .header.property .dream-availability:hover,
 .header.property .dream-availability:active,
 .header.property .book > .btn:hover,
 .header.property .book > .btn:active {
   background:#f7f6f2 !important;
   background-color:#f7f6f2 !important;
   color:#005c30 !important;
   border-color:#005c30 !important;
 }
}
@media(min-width:769px) {
 body:not(.sticky):not(.nav-open):not(.dream-no-hero) .header.property .dream-availability { color:#fff; }
 body.sticky .header.property .dream-availability,
 body.nav-open .header.property .dream-availability,
 body.dream-no-hero .header.property .dream-availability { color:#005c30; }
}
@media(min-width:1441px) {
 body:is(.dream-home,.dream-page) .header.property.has-availability .utility-nav {
   right:calc(40px + var(--dream-booking-width, 210px) + 32px)!important;
   transition:none!important;
 }
}

/* Anchor split-carousel controls to the active text column at every width. */
.container-none .carousel.default.single:is(.dream-storytelling,.dream-services) > .content { position:relative; }
.container-none .carousel.default.single:is(.dream-storytelling,.dream-services) > .content > [class*="swiper-prev-"] { left:var(--controls-left,24px)!important;right:auto!important;margin-left:0!important; }
.container-none .carousel.default.single:is(.dream-storytelling,.dream-services) > .content > [class*="swiper-next-"] { left:calc(var(--controls-right,100%) - 42px)!important;right:auto!important;margin-left:0!important; }
.container-none .carousel.default.single:is(.dream-storytelling,.dream-services) > .content > .swiper-pagination { left:calc(var(--controls-left,24px) + 48px)!important;right:auto!important;width:calc(var(--controls-right,100%) - var(--controls-left,24px) - 96px)!important;margin:0!important;transform:none!important;text-align:center; }

@media(min-width:769px) {
 .dream-home .dream-storytelling .card.default > .wrapper > .content > .body { min-height:0; }
 .dream-home .dream-storytelling .card.default > .wrapper > .content > .body > p { margin-bottom:0; }
 .dream-home .dream-storytelling .card.default > .wrapper > .content > .links { margin-top:20px!important; }
 .dream-home .dream-storytelling > .content > [class*="swiper-prev-"],
 .dream-home .dream-storytelling > .content > [class*="swiper-next-"] { bottom:96px!important; }
 .dream-home .dream-storytelling > .content > .swiper-pagination { bottom:86px!important; }
 .dream-home .dream-services > .content > [class*="swiper-prev-"],
 .dream-home .dream-services > .content > [class*="swiper-next-"] { bottom:96px!important; }
 .dream-home .dream-services > .content > .swiper-pagination { bottom:86px!important; }
}

.dream-life-at-dream span.dream-life-overlay { cursor:default; }

/* Image viewers are viewport-centred, independent of page figure styles. */
.demo-lightbox.dp-lightbox { position:fixed;inset:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:64px 24px;box-sizing:border-box; }
.demo-lightbox.dp-lightbox[hidden] { display:none; }
.dp-lightbox .dp-lightbox__figure { position:static;display:flex;align-items:center;justify-content:center;flex:none;width:auto;height:auto;max-width:100%;margin:0;padding:0;transform:none; }
.dp-lightbox .demo-lightbox__image { position:static;display:block;width:auto;height:auto;max-width:100%;max-height:calc(100dvh - 128px);object-fit:contain;transform:none;margin:0; }
.dream-room-dialog[open] { position:fixed;inset:0;display:flex;align-items:center;justify-content:center;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:64px 24px;box-sizing:border-box; }
.dream-room-dialog img { display:block;width:auto;height:auto;max-width:100%;max-height:calc(100dvh - 128px);object-fit:contain;margin:0; }

/* Selectable thumbnail grid: side rail on desktop, bottom rail on mobile. */
.dp-lightbox .dp-lightbox__stage { display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-width:0;min-height:0; }
.demo-lightbox.dp-lightbox.has-thumbnails { display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:20px; }
.demo-lightbox.dp-lightbox.has-thumbnails[hidden] { display:none; }
.dp-lightbox__thumbs { align-self:stretch;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:6px;overflow-y:auto;min-height:0;padding:4px;scrollbar-width:thin; }
.demo-lightbox.dp-lightbox.is-gallery-page { background:rgba(10,12,9,.98); }
.dp-lightbox.is-gallery-page .dp-lightbox__thumbs { gap:2px;padding:2px; }
html.dp-lightbox-open,html.dp-lightbox-open body { overflow:hidden!important;overscroll-behavior:none; }
.dp-lightbox .dp-lightbox__thumb { display:block;min-width:0;aspect-ratio:1;padding:0;border:2px solid transparent;background:transparent;cursor:pointer;opacity:.65; }
.dp-lightbox .dp-lightbox__thumb[aria-pressed=true] { border-color:#fff;opacity:1; }
.dp-lightbox .dp-lightbox__thumb:hover { opacity:1; }
.dp-lightbox .dp-lightbox__thumb img { display:block;position:static;width:100%;height:100%;object-fit:cover; }
.dp-lightbox.has-thumbnails .demo-lightbox__next { right:224px; }
@media(max-width:768px) {
 .demo-lightbox.dp-lightbox.has-thumbnails { grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) 96px;gap:12px;padding:64px 16px 76px; }
 .dp-lightbox.has-thumbnails .demo-lightbox__image { max-height:calc(100dvh - 248px); }
 .dp-lightbox__thumbs { grid-template-columns:repeat(auto-fill,minmax(56px,1fr)); }
 .dp-lightbox.has-thumbnails .demo-lightbox__next { right:24px; }
}

/* WhatsApp brand glyph inherits the existing social button design. */
.footer .social a.social-whatsapp { display:inline-flex;align-items:center;justify-content:center; }
.footer .social a.social-whatsapp::before { display:none; }
.footer .social .dream-whatsapp-icon { display:block;width:22px;height:22px;color:#fff; }
.dp-share__link .dream-whatsapp-icon { width:22px!important;height:22px!important; }

/* Keep the copyright strip compact while allowing translated text to wrap. */
footer.dream-footer { margin-bottom:0; }
footer.dream-footer .copy { padding:6px 0; }
footer.dream-footer .dream-copyright { line-height:1.5;letter-spacing:.03em;padding-inline:12px; }
@media(max-width:991px) {
 footer.dream-footer--mobile-contacts .misc { padding-bottom:80px; }
}

/* Japanese amenity labels need room for full words on narrow room cards. */
@media(max-width:480px) {
 :lang(ja) .dp-room-card__amenities { column-gap:16px; }
 :lang(ja) .dp-room-card__amenities li { gap:8px; }
 :lang(ja) .dp-room-card__amenities li span { font-size:12px;letter-spacing:0; }
}

/* Mobile/tablet header: equal visual spacing around the brand and aligned icons. */
@media(max-width:1024px) {
 .header.property { --dream-header-inset:16px; }
 .mobile-nav-open .header.property { height:auto!important; }
 .header.property .navigation {
  display:flex!important;justify-content:space-between;align-items:center;
  min-height:68px;padding:12px var(--dream-header-inset)!important;gap:0;
 }
 .header.property .navigation > .nav-toggle {
  position:relative;flex:0 0 44px;
  width:44px;min-width:44px;height:44px;box-sizing:border-box;
 }
 .header.property .nav-toggle .menu-icon { position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:24px;height:18px;flex:none; }
 .header.property .nav-toggle .bar { width:24px;top:0; }
 .header.property .nav-toggle .bar:nth-child(2) { top:8px; }
 .header.property .nav-toggle .bar:last-child { top:16px; }
 .header.property .navigation > .nav-toggle .menu-label {
  position:absolute;top:calc(50% + 11px);left:50%;display:block;transform:translateX(-50%);margin:0!important;
  font-size:7px;line-height:10px;height:10px;letter-spacing:.05em;
 }
 .mobile-nav-open .header.property .nav-toggle .bar { top:8px; }
 .mobile-nav-open .header.property .navigation > .nav-toggle .menu-label { font-size:0; }
 .header.property .navigation > .mobile-logo {
  flex:0 1 auto;position:static!important;inset:auto!important;
  transform:translateX(8px)!important;width:clamp(128px,36vw,160px);max-width:100%;height:auto;
 }
 .header.property .mobile-logo figure { width:100%;height:auto!important; }
 .header.property .mobile-logo img { width:100%!important;height:auto!important;max-height:48px; }
 body:is(.dream-home,.dream-page) .header.property .navigation > .utility-nav {
  flex:0 0 92px;position:relative!important;inset:auto!important;
  transform:none!important;width:92px;gap:4px;justify-content:flex-end;
 }
 .header.property .utility-nav .phone-menu { right:0!important;left:auto;top:calc(100% + 8px); }
 .header.property :is(.dream-language-toggle,.utility-nav > .phone) { width:44px;min-width:44px;height:44px!important; }
 .header.property .utility-nav .dream-lucide-icon { width:26px;height:26px; }
 .header.property .dream-header-booking { padding:0 var(--dream-header-inset) 10px; }
 .header.property .dream-availability { min-height:44px; }
 .mobile-nav-open .header.property .navigation > nav {
  top:calc(var(--dream-admin-offset,0px) + var(--dream-header-height,68px));
  height:calc(100vh - var(--dream-admin-offset,0px) - var(--dream-header-height,68px));
  height:calc(100dvh - var(--dream-admin-offset,0px) - var(--dream-header-height,68px));
 }
}
@media(min-width:600px) and (max-width:1024px) {
 .header.property { --dream-header-inset:24px; }
 .header.property .navigation { min-height:80px;padding-top:18px!important;padding-bottom:18px!important; }
 .header.property .navigation > .mobile-logo { width:190px; }
}
