/* Moscow collection and responsive safeguards - 14 October 2026.
   Kept separate so existing site and homepage styling remain intact. */

/* Five destinations and five travel months must wrap rather than collide. */
.packages-intro-copy .intro-city {
  max-width: 980px;
  margin-inline: auto;
  font-size: clamp(1.05rem, 2.35vw, 2rem);
  line-height: 1.85;
  letter-spacing: .14em;
  text-indent: 0;
  overflow-wrap: normal;
  text-wrap: balance;
}
.packages-intro-copy .intro-validity {
  max-width: 760px;
  margin-inline: auto;
  line-height: 1.9;
  text-wrap: balance;
}
/* The current globe script has no legacy intro-ready class. Keep the overview
   visible even if the optional animation library fails to load. */
.packages-intro-stage:not(.is-intro-ready) .intro-brand,
.packages-intro-stage:not(.is-intro-ready) .intro-city,
.packages-intro-stage:not(.is-intro-ready) .intro-validity,
.packages-intro-stage:not(.is-intro-ready) .intro-line {
  opacity: 1;
  transform: none;
}

/* Keyboard-accessible city selection also works when WebGL/CDNs are unavailable. */
.vv-destination-shortcuts {
  position: relative;
  z-index: 4;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .6rem;
  padding: .7rem 1rem 1.8rem;
}
.vv-destination-shortcuts button {
  min-height: 44px;
  padding: .6rem 1.05rem;
  border: 1px solid rgba(212,175,55,.32);
  border-radius: 999px;
  background: #101010;
  color: #e3cc86;
  font: 600 .78rem/1.3 Montserrat, Arial, sans-serif;
  cursor: pointer;
}
.vv-destination-shortcuts button:hover,
.vv-destination-shortcuts button[aria-pressed="true"] {
  background: #d4af37;
  color: #101010;
  border-color: #d4af37;
}
.vv-destination-shortcuts button:focus-visible,
.vv-book-view:focus-visible,
.vv-book-enquire:focus-visible,
.vv-details-enquire:focus-visible {
  outline: 2px solid #f1d77f;
  outline-offset: 3px;
}
/* Fallback is a schematic globe. Separate the hit areas as well as the labels. */
.vv-fallback-pin {
  min-width: 64px;
  min-height: 44px;
  align-content: center;
  transform: translate(-50%, -50%);
}
.vv-fallback-pin-moscow { left: 60%; top: 16%; }
.vv-fallback-pin-istanbul { left: 30%; top: 33%; }
.vv-fallback-pin-doha { left: 42%; top: 58%; }
.vv-fallback-pin-dubai { left: 72%; top: 43%; }
.vv-fallback-pin-bali { left: 72%; top: 76%; }

/* Keep every original 4:5 poster intact. Badges and controls have their own
   rows instead of being positioned on top of offer text or hotel photographs. */
.vv-pageflip-host {
  --vv-page-header: 36px;
  --vv-page-footer: 124px;
  --vv-page-height: calc(var(--vv-page-width) * 1.25 + var(--vv-page-header) + var(--vv-page-footer));
}
.vv-book-face {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: var(--vv-page-header) minmax(0, 1fr) var(--vv-page-footer);
}
.vv-book-page-topline {
  position: static;
  grid-row: 1;
  padding: 0 .65rem;
  gap: .35rem;
  background: #151411;
}
.vv-book-page-image,
.vv-book-summary-cover {
  grid-column: 1;
  grid-row: 2;
  min-width: 0;
  min-height: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.vv-book-page-crease {
  top: var(--vv-page-header);
  bottom: var(--vv-page-footer);
  opacity: .35;
}
.vv-book-page-caption {
  position: static;
  grid-row: 3;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-content: space-between;
  align-items: stretch;
  gap: .4rem;
  padding: .55rem .65rem .6rem;
  background: #10100f;
}
.vv-book-package-copy {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: .3rem .4rem;
}
.vv-book-package-copy span {
  min-width: 0;
  line-height: 1.3;
}
.vv-book-package-copy strong {
  white-space: nowrap;
  font-size: clamp(1rem, 1.6vw, 1.25rem);
}
.vv-book-package-copy strong em {
  font: 500 .55rem/1 Montserrat, Arial, sans-serif;
  color: #bcb4a4;
}
.vv-book-package-copy small {
  grid-column: 1 / -1;
  max-width: 100%;
  min-width: 0;
  white-space: normal;
  overflow: visible;
  overflow-wrap: break-word;
  font-size: .65rem;
  line-height: 1.45;
  color: #cbc6bc;
}
.vv-book-page-actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: .4rem;
  width: 100%;
}
.vv-book-view,
.vv-book-enquire {
  min-width: 0;
  min-height: 40px;
  padding: .45rem .3rem;
  font-size: .65rem;
}
.vv-book-blank-inner { grid-row: 1 / -1; }

/* The economy covers use the supplied city scenery, not a substitute hotel. */
.vv-book-summary-cover {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  display: grid;
  align-content: end;
  background: #26221f;
}
.vv-summary-city-photo {
  position: absolute;
  inset: 0 0 auto;
  width: 100%;
  height: 58%;
  object-fit: cover;
  object-position: 50% 45%;
  z-index: -2;
}
.vv-book-summary-cover::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, #26221f 0%, #26221f 31%, rgba(38,34,31,.20) 67%, rgba(38,34,31,.08));
  z-index: -1;
}
.vv-summary-cover-copy {
  padding: 8% 8% 12%;
  color: #e9d9c6;
  text-align: center;
}
.vv-summary-cover-copy span {
  display: block;
  font: 600 clamp(.42rem, .9vw, .7rem)/1.4 Montserrat, Arial, sans-serif;
  letter-spacing: .19em;
}
.vv-summary-cover-copy strong {
  display: block;
  margin: .17em 0 .2em;
  font: 500 calc(var(--vv-page-width) * .145)/1.1 "Playfair Display", Georgia, serif;
}
.vv-summary-cover-copy p {
  margin: 0;
  font: 600 clamp(.55rem, 1.1vw, .9rem)/1.5 Montserrat, Arial, sans-serif;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.vv-summary-cover-copy small {
  display: block;
  margin-top: .6em;
  font: 400 clamp(.5rem, 1vw, .75rem)/1.5 Montserrat, Arial, sans-serif;
  color: #bcab95;
}

/* Readable offer details, independent of how small a two-page spread becomes. */
.vv-package-details {
  box-sizing: border-box;
  width: min(680px, calc(100vw - 24px));
  max-width: none;
  max-height: calc(100vh - 24px);
  max-height: calc(100dvh - 24px);
  margin: auto;
  padding: 0;
  overflow: auto;
  overscroll-behavior: contain;
  border: 1px solid rgba(212,175,55,.4);
  border-radius: 18px;
  background: #141310;
  color: #f2ede3;
  box-shadow: 0 24px 100px rgba(0,0,0,.65);
}
.vv-package-details::backdrop { background: rgba(0,0,0,.85); }
.vv-details-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding: .6rem 1rem;
  border-bottom: 1px solid #373022;
  background: #141310;
}
.vv-details-toolbar > span {
  font: 600 .62rem/1.5 Montserrat, Arial, sans-serif;
  color: #d7bc71;
  letter-spacing: .12em;
}
#package-details-close {
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  border: 1px solid #665637;
  border-radius: 50%;
  background: #242119;
  color: #f3e9d4;
  font-size: 1.65rem;
  line-height: 1;
  cursor: pointer;
}
#package-details-close:focus-visible { outline: 2px solid #f1d77f; outline-offset: 2px; }
.vv-details-content { padding: clamp(1.1rem, 4vw, 2.2rem); overflow-wrap: break-word; }
.vv-details-edition {
  margin: 0 0 .45rem;
  color: #d8b951;
  font: 700 .72rem/1.5 Montserrat, Arial, sans-serif;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.vv-details-content h2 {
  margin: 0;
  color: #f4ede0;
  font: 500 clamp(2.5rem, 8vw, 4rem)/1.1 "Playfair Display", Georgia, serif;
}
.vv-details-hotel { margin: .9rem 0 1.4rem; color: #d6ccba; font-size: 1rem; line-height: 1.65; }
.vv-details-price { margin: 0; }
.vv-details-price > span { color: #c9b996; font-size: .85rem; }
.vv-details-price > strong { font: 600 clamp(2rem, 7vw, 2.8rem)/1.2 "Playfair Display", Georgia, serif; }
.vv-details-price-note { margin: .3rem 0 1.4rem; color: #c9b996; font-size: .84rem; }
.vv-details-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  margin: 0 0 1.4rem;
  padding: 1rem 0;
  border-block: 1px solid #49402e;
}
.vv-details-facts dt { margin-bottom: .4rem; color: #ab9e86; font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; }
.vv-details-facts dd { margin: 0; font-size: .9rem; line-height: 1.5; }
.vv-details-content h3 { margin: 0 0 .7rem; font: 600 1rem/1.5 Montserrat, Arial, sans-serif; }
.vv-details-includes { margin: 0 0 1.3rem; padding-left: 1.2rem; color: #ded5c5; line-height: 1.9; font-size: .95rem; }
.vv-details-includes li::marker { color: #d4af37; }
.vv-details-terms { margin: 0 0 1.3rem; color: #ada492; font-size: .78rem; line-height: 1.75; }
.vv-details-enquire {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 48px;
  width: 100%;
  box-sizing: border-box;
  padding: .7rem 1rem;
  border: 1px solid #d4af37;
  border-radius: 999px;
  background: #d4af37;
  color: #14120c;
  font: 700 .85rem/1.5 Montserrat, Arial, sans-serif;
  text-align: center;
  text-decoration: none;
}
.vv-details-artwork { display: block; width: 100%; height: auto; margin-top: 1.5rem; border-radius: 10px; }

@media (max-width: 760px) {
  .vv-pageflip-host {
    --vv-page-header: 30px;
    --vv-page-footer: 104px;
    /* The host itself has insets: using the full viewport width would crop
       the left page of an open spread on a narrow phone. */
    --vv-page-width: min(280px, 43vw, calc((100vw - 72px) / 2));
  }
  .vv-book-page-caption { gap: .4rem; padding: .5rem .4rem; }
  .vv-book-package-copy { grid-template-columns: minmax(0, 1fr); gap: .25rem; }
  .vv-book-package-copy span { font-size: .48rem; }
  .vv-book-package-copy strong { font-size: .9rem; }
  .vv-book-package-copy strong em { font-size: .5rem; }
  .vv-book-package-copy small { display: none; }
  .vv-book-page-topline { padding-inline: .35rem; }
  .vv-book-tier-badge { font-size: .42rem; letter-spacing: .07em; padding: .32rem .36rem; }
  .vv-book-page-number { min-width: 1.3rem; width: 1.3rem; height: 1.3rem; }
  .vv-book-page-actions { gap: .3rem; }
  .vv-book-view, .vv-book-enquire { min-height: 44px; font-size: .51rem; padding: .4rem .15rem; }
  .vv-details-facts { grid-template-columns: minmax(0, 1fr); gap: .85rem; }
}
@media (max-width: 430px) {
  .vv-pageflip-host { --vv-page-width: min(188px, calc((100vw - 72px) / 2)); }
  .packages-intro-copy .intro-city { max-width: 19rem; font-size: 1.1rem; }
  .vv-book-controls { flex-wrap: wrap; }
}

/* Avoid the fixed navigation masking a newly selected collection heading. */
#weekly-packages { scroll-margin-top: 110px; }
/* The flipbook already has return/reset controls; this floating overlay would
   cover mobile hints and buttons at some scroll positions. */
.packages-globe-page .back-to-top { display: none; }
.vv-package-details[open] {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  overflow: hidden;
}
.vv-details-content { min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
