/* Shared buttons. */
.eyebrow,
.card-meta { color: var(--accent-strong); font-size: .7rem; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
.eyebrow { margin: 0 0 1.15rem; }
.card-meta { margin-bottom: .8rem; }
.card-link { margin-top: auto; padding-bottom: .17rem; border-bottom: 1px solid currentColor; font-size: .84rem; font-weight: 750; }

.about-section { display: grid; grid-template-columns: .4fr 1.1fr .8fr; gap: 2.5rem; align-items: start; padding-right: clamp(1.25rem, 5vw, 5.5rem); padding-left: clamp(1.25rem, 5vw, 5.5rem); border-top: 1px solid var(--line); background: var(--mist); }
.about-number { color: var(--accent-strong); font-size: clamp(3.5rem, 6vw, 6.5rem); line-height: .8; }
.about-section h2 { max-width: 620px; margin-bottom: 0; font-size: clamp(1.25rem, 2.15vw, 2.4rem); line-height: .98; }
.about-copy { max-width: 360px; padding-top: 2.1rem; }
.about-copy p { color: var(--muted); line-height: 1.65; }

.button {
  display: inline-flex;
  min-height: 50px;
  align-items: center;
  justify-content: center;
  gap: 1.3rem;
  padding: .85rem 1.25rem;
  border: 0;
  border-radius: 3px;
  cursor: pointer;
  font-size: .85rem;
  font-weight: 750;
  transition: transform .2s ease, box-shadow .2s ease;
}

.button:hover { transform: translateY(-2px); box-shadow: 0 9px 20px var(--shadow-color); }
.button-dark { color: var(--on-dark); background: var(--dark); }
.button-light { color: var(--accent-text); background: var(--accent-strong); }
.button-pill { border-radius: 999px; }
.price-alert-messenger-links { margin: 1.5rem 0; }
.price-alert-messenger-links > p { margin-bottom: 1rem; }
.price-alert-messenger-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: .75rem; }
.price-alert-messenger-actions .button { margin: 0; }
.price-alert-manage-page { padding: clamp(1.5rem, 5vw, 4rem) 1.25rem 4rem; }
.price-alert-manage-card { width: min(100%, 560px); margin: 0 auto; border: 1px solid var(--line); border-radius: 20px; background: var(--surface); box-shadow: 0 14px 34px var(--shadow-color); }
.price-alert-manage-content { padding: clamp(1.5rem, 5vw, 2.75rem); text-align: center; }
.price-alert-manage-content h1 { margin-bottom: 1rem; font-size: clamp(1.8rem, 5vw, 2.45rem); line-height: 1.15; }
.price-alert-manage-content .muted { color: var(--muted); line-height: 1.5; }
.price-alert-manage-actions,
.price-alert-manage-links { display: grid; justify-items: stretch; gap: .85rem; width: min(100%, 370px); margin: 1.5rem auto 0; }
.price-alert-manage-links { width: 100%; margin: 0; }
.price-alert-manage-actions .button,
.price-alert-manage-links .button { width: 100%; min-height: 52px; margin: 0; line-height: 1.3; text-align: center; white-space: normal; }
.price-alert-manage-cancel { border: 1px solid var(--line); color: var(--ink); background: var(--surface-muted); }
.price-alert-manage-return { margin: 1.75rem 0 0; }
.price-alert-manage-actions[hidden],
.price-alert-manage-links[hidden] { display: none; }
.text-link { display: inline-block; padding-bottom: .2rem; border-bottom: 1px solid transparent; font-size: .9rem; transition: border-color .2s ease; }
.text-link:hover { border-color: currentColor; }

/* Shared modal controls. Dialog dimensions remain page-specific. */
button.modal-close {
  position: absolute;
  z-index: 3;
  top: 12px;
  right: 14px;
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  min-height: 36px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 50%;
  color: var(--ink);
  background: transparent;
  cursor: pointer;
  font-size: 28px;
  line-height: 1;
}

button.modal-close:hover,
button.modal-close:focus-visible { color: var(--ink); background: var(--widget-soft); }

.modal-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: .65rem;
  margin-top: 1.25rem;
}

.modal-actions > button,
.modal-actions > a {
  flex: 0 0 auto;
  width: auto;
  max-width: 100%;
  min-height: 2.6rem;
  padding: .55rem .9rem;
  border-radius: 3px;
  cursor: pointer;
  font-weight: 700;
}

.order-messenger-actions {
  display: flex;
  flex: 0 1 auto;
  flex-wrap: wrap;
  gap: .45rem;
  margin-right: auto;
}

.order-messenger-button {
  display: inline-flex;
  min-height: 2.6rem;
  align-items: center;
  gap: .35rem;
  padding: .45rem .7rem;
  border: 1px solid var(--widget-border);
  border-radius: 999px;
  color: var(--ink);
  background: var(--widget-soft);
  font-size: .78rem;
  font-weight: 750;
  line-height: 1;
  text-decoration: none;
  transition: border-color .2s ease, background-color .2s ease, transform .2s ease;
}

.order-messenger-button img {
  display: block;
  width: 1.15rem;
  height: 1.15rem;
  object-fit: contain;
}

.order-messenger-button .contact-icon-max-night { display: none; }
.theme-night .order-messenger-button .contact-icon-max-light { display: none; }
.theme-night .order-messenger-button .contact-icon-max-night { display: block; }

.order-messenger-button:hover,
.order-messenger-button:focus-visible {
  border-color: var(--accent-strong);
  background: var(--surface);
  text-decoration: none;
  transform: translateY(-1px);
}

.order-choice-actions { display: grid; gap: .65rem; margin-top: 1.25rem; }
.order-choice-button { display: flex; width: 100%; min-height: 3rem; align-items: center; justify-content: center; gap: .5rem; padding: .7rem 1rem; border: 1px solid var(--widget-border); border-radius: 999px; color: var(--ink); background: var(--widget-soft); font: inherit; font-weight: 700; text-decoration: none; cursor: pointer; transition: border-color .2s ease, background-color .2s ease, transform .2s ease; }
.order-choice-icon { display: block; width: 1.2rem; height: 1.2rem; flex: 0 0 auto; }
.order-choice-button:hover, .order-choice-button:focus-visible, .order-choice-button.is-active { border-color: var(--accent-strong); color: var(--ink); background: var(--surface); transform: translateY(-1px); }
.order-request-details[hidden] { display: none; }
.order-request-details { display: grid; gap: .35rem; margin-top: 1.25rem; }
.order-request-details .order-request-note { margin: 0; font-size: .95rem; line-height: 1.25; }
.order-contact-fields { display: grid; gap: .1rem; }
.order-contact-fields > label { display: grid; grid-template-columns: minmax(5.5rem, 6.5rem) minmax(0, 1fr); align-items: center; gap: .65rem; margin-top: 0; }
.order-request-details .order-contact-fields > label > input { padding: .4rem .6rem; }
.order-request-details .order-contact-hint { margin: .1rem 0 0; color: var(--muted); font-size: .82rem; text-align: right; }
.order-request-details > label { margin-top: 0; }
.order-request-details > label textarea { min-height: 4.5rem; }
.order-submit-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: .75rem; margin-top: .2rem; }
.order-request-details .order-submit-row .consent-label { margin-top: 0; }
.order-request-details .consent-label[hidden] { display: none; }
.order-submit-row .modal-actions { margin-top: 0; }

@media (max-width: 620px) {
  .order-submit-row { grid-template-columns: 1fr; align-items: stretch; }
  .order-submit-row .modal-actions { justify-content: stretch; }
  .order-submit-row .modal-actions .submit { width: 100%; }
}

@media (max-width: 430px) {
  .order-messenger-actions { width: 100%; }
  .order-messenger-button { flex: 1 1 0; justify-content: center; }
  .order-actions .submit { width: 100%; }
}

/* Shared hotel gallery. */
.gallery-modal { position: fixed; z-index: 1200; inset: 0; display: grid; place-items: center; padding: 0; background: var(--overlay-color); overscroll-behavior: contain; }
.gallery-modal[hidden] { display: none; }
.gallery-dialog { position: relative; display: grid; grid-template-columns: 56px minmax(0, 1fr) 56px; grid-template-rows: minmax(0, 1fr) auto auto; align-items: center; width: 100vw; height: 100vh; height: 100dvh; max-height: none; }
.gallery-image { grid-column: 2; grid-row: 1; display: block; width: auto; height: auto; min-width: 0; min-height: 0; max-width: 100%; max-height: 100%; margin: 0 auto; justify-self: center; align-self: center; object-fit: contain; }
.gallery-image.gallery-slide-next { animation: gallery-slide-next .2s ease-out both; }
.gallery-image.gallery-slide-prev { animation: gallery-slide-prev .2s ease-out both; }
@keyframes gallery-slide-next { from { transform: translateX(4%); } }
@keyframes gallery-slide-prev { from { transform: translateX(-4%); } }
.gallery-nav { width: 42px; height: 58px; min-height: 0; margin: 0; border: 0; border-radius: 4px; color: var(--on-dark); background: color-mix(in srgb, var(--dark) 84%, transparent); cursor: pointer; font-size: 35px; }
.gallery-close.modal-close { color: var(--ink); background: var(--widget-field); }
.gallery-close.modal-close:hover,
.gallery-close.modal-close:focus-visible { background: var(--widget-soft); }
.gallery-caption { grid-column: 1 / -1; grid-row: 2; margin: 9px 0; color: var(--on-dark); text-align: center; }
.gallery-modal-thumbnails { grid-column: 1 / -1; grid-row: 3; display: flex; gap: 6px; justify-self: stretch; width: 100%; height: 108px; margin: 0; overflow-x: auto; overflow-y: hidden; padding: 0 16px 5px; scrollbar-width: thin; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; }
.gallery-modal-thumbnail { flex: 0 0 148px; width: 148px; height: 108px; padding: 0; overflow: hidden; border: 2px solid transparent; border-radius: 3px; background: transparent; cursor: pointer; scroll-snap-align: center; }
.gallery-modal-thumbnail.active { border-color: var(--on-dark); }
.gallery-modal-thumbnail img { display: block; width: 100%; height: 100%; object-fit: cover; pointer-events: none; user-select: none; }
.gallery-modal-spacer { display: none; }
.description-gallery { float: right; width: 280px; margin: 0 0 16px 22px; }
.gallery-main,
.gallery-thumb { display: block; width: 100%; min-height: 0; margin: 0; padding: 0; border: 0; background: transparent; cursor: zoom-in; }
.gallery-main img { width: 100%; height: 190px; margin: 0; object-fit: cover; }
.gallery-thumbs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-top: 6px; }
.gallery-thumb img { width: 100%; height: 66px; margin: 0; object-fit: cover; }
body.gallery-open { overflow: hidden; }

@media (prefers-reduced-motion: reduce) {
  .gallery-image.gallery-slide-next,
  .gallery-image.gallery-slide-prev { animation: none; }
}

@media (max-width: 620px) {
  .description-gallery { float: none; width: 100%; margin: 0 0 18px; }
  .description-gallery .gallery-thumbs .gallery-thumb:nth-child(n + 4) { display: none; }
  .gallery-main img { height: 220px; }
  body.gallery-open { position: fixed; right: 0; left: 0; width: 100%; touch-action: none; }
  .gallery-modal { display: block; padding: 0; touch-action: none; }
  .gallery-dialog { display: flex; width: 100%; height: 100vh; height: 100dvh; max-height: none; align-items: center; justify-content: center; }
  .gallery-image { width: auto; height: auto; max-width: 100%; max-height: 100%; margin: 0; touch-action: pan-y; }
  .gallery-nav { position: absolute; z-index: 2; top: 50%; transform: translateY(-50%); background: color-mix(in srgb, var(--dark) 42%, transparent); }
  .gallery-dialog #gallery-prev { left: 0; }
  .gallery-dialog #gallery-next { right: 0; }
  .gallery-close.modal-close { position: fixed; top: max(12px, env(safe-area-inset-top)); right: max(12px, env(safe-area-inset-right)); }
  .gallery-modal-thumbnails { position: fixed; z-index: 2; right: 0; bottom: 0; left: 0; display: flex; width: 100%; height: 108px; margin: 0; padding: 0 16px 5px; background: color-mix(in srgb, var(--dark) 72%, transparent); }
  .gallery-caption { position: fixed; z-index: 2; right: 0; bottom: 108px; left: 0; margin: 0; padding: 8px 58px; background: color-mix(in srgb, var(--dark) 55%, transparent); }
}

@media (max-width: 850px) {
  .about-section { grid-template-columns: 1fr; }
  .about-copy { padding-top: 0; }
}
.honeypot-field {
  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;
  white-space: nowrap !important;
  border: 0 !important;
}
.nowrap { white-space: nowrap; }
/* Shared request result dialog, matching the selected-tour page. */
.result-modal { position: fixed; z-index: 1110; inset: 0; display: grid; place-items: center; padding: 1rem; background: color-mix(in srgb, var(--dark) 72%, transparent); }
.result-modal[hidden] { display: none; }
.result-dialog { position: relative; width: min(100%, 28rem); padding: clamp(1.25rem, 4vw, 2rem); border: 1px solid var(--line); border-radius: 5px; color: var(--ink); background: var(--surface); box-shadow: 0 18px 50px color-mix(in srgb, var(--dark) 35%, transparent); }
.result-dialog h2 { margin: 0 2.5rem .75rem 0; font-size: 1.7rem; line-height: 1.1; }
.result-dialog p { margin: 0 0 1.25rem; color: var(--muted); line-height: 1.45; }
.result-dialog p.success { color: var(--accent-strong); }
.result-dialog p.error { color: var(--danger); }
.result-dialog p.result-technical { margin-top: -.75rem; color: var(--muted); font-size: .82rem; overflow-wrap: anywhere; }
.result-links { margin-bottom: 1.25rem; }
.result-links a { display: flex; width: 100%; box-sizing: border-box; justify-content: center; padding: .65rem .75rem; border: 1px solid var(--accent-strong); border-radius: 3px; color: var(--accent-strong); text-align: center; font-weight: 700; text-decoration: none; }
.result-links a:hover, .result-links a:focus-visible { color: var(--surface); background: var(--accent-strong); }
.result-dialog .result-unsubscribe { color: var(--danger); background: transparent; }
.result-dialog .result-unsubscribe:hover, .result-dialog .result-unsubscribe:focus-visible { color: var(--surface); background: var(--danger); }
.result-dialog button { border: 1px solid var(--accent-strong); color: var(--surface); background: var(--accent-strong); }
.result-dialog button:hover, .result-dialog button:focus-visible { background: var(--focus); }
