/* Jacobs extras on Grand UI — skip link, concierge, reduced motion, focus */
.skip-link {
  position: absolute;
  left: -9999px;
  z-index: 100;
}
.skip-link:focus {
  left: 1rem;
  top: 1rem;
  padding: .75rem 1.25rem;
  background: #fff;
  color: #1f1810;
  outline: 2px solid #9a7638;
  outline-offset: 3px;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 2px solid #9a7638;
  outline-offset: 3px;
}

.lang-switch a {
  min-width: 2.4rem;
  text-align: center;
  letter-spacing: .08em;
}
.lang-switch a + a { border-left: 1px solid rgba(255,255,255,.25); }
.lang-switch a.active { background: #fff; color: #2a2219; }

#navbar .nav-link {
  position: relative;
  transition: color .28s cubic-bezier(.16, 1, .3, 1);
}
#navbar .nav-link::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: -7px;
  width: 100%;
  height: 1px;
  background: #d4b376;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .35s cubic-bezier(.16, 1, .3, 1);
}
#navbar .nav-link:hover,
#navbar .nav-link:focus-visible {
  color: #d4b376;
}
#navbar .nav-link:hover::after,
#navbar .nav-link:focus-visible::after,
#navbar .nav-link.active::after,
#navbar .nav-dropdown.open .nav-link::after {
  width: 100%;
  left: 0;
  transform: scaleX(1);
}
#navbar.nav-solid .nav-link::after { background: #9a7638; }
#navbar.nav-solid .nav-link:hover,
#navbar.nav-solid .nav-link:focus-visible { color: #9a7638 !important; }

#navbar .nav-dropdown { position: static; }
#navbar .mega-wrap {
  position: absolute;
  left: 0;
  right: 0;
  width: 100%;
  top: 100%;
}

#navbar.nav-ready nav[aria-label="Main"] > .nav-link,
#navbar.nav-ready nav[aria-label="Main"] > .nav-dropdown > .nav-link {
  animation: navArrive .55s cubic-bezier(.16, 1, .3, 1) both;
}
#navbar.nav-ready nav[aria-label="Main"] > .nav-link:nth-child(1) { animation-delay: 0ms; }
#navbar.nav-ready nav[aria-label="Main"] > .nav-link:nth-child(2) { animation-delay: 50ms; }
#navbar.nav-ready nav[aria-label="Main"] > .nav-dropdown > .nav-link { animation-delay: 100ms; }
#navbar.nav-ready nav[aria-label="Main"] > .nav-link:nth-child(4) { animation-delay: 150ms; }
#navbar.nav-ready nav[aria-label="Main"] > .nav-link:nth-child(5) { animation-delay: 200ms; }
#navbar.nav-ready nav[aria-label="Main"] > .nav-link:nth-child(6) { animation-delay: 250ms; }
@keyframes navArrive {
  from { opacity: 0; transform: translateY(-6px); }
  to { opacity: 1; transform: none; }
}

.shot-facade {
  display: block;
  width: 100%;
  height: 38.75rem;
  object-fit: cover;
  object-position: center 72%;
}
@media (max-width: 767px) {
  .shot-facade {
    height: 15rem;
    object-position: center 80%;
  }
}

.map-embed iframe,
.map-embed-wide iframe {
  width: 100%;
  height: 440px;
  border: 0;
  filter: sepia(.15) contrast(1.05);
}

.act-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  justify-content: center;
  margin-top: 1.5rem;
}

/* Concierge catalog */
.concierge-page { padding-block: 5rem; }
.concierge-intro { max-width: 40em; margin: 0 auto 4rem; text-align: center; }
.concierge-intro h2 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.75rem, 4vw, 3rem);
  color: #2a2219;
  line-height: 1.2;
  margin-bottom: 1.5rem;
}
.concierge-intro p { color: #5c5146; font-size: 1.05rem; line-height: 1.8; margin-bottom: 1rem; }
.concierge-jump {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .4rem 1.5rem;
  margin: 0 auto 4rem;
  max-width: 72em;
}
.concierge-jump a {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  color: #5c5146;
  font-size: .875rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  font-family: 'Oswald', sans-serif;
  border-bottom: 1px solid transparent;
}
.concierge-jump a span { font-family: 'Playfair Display', serif; color: #9a7638; letter-spacing: 0; text-transform: none; }
.concierge-jump a:hover,
.concierge-jump a:focus-visible { color: #1f1810; border-bottom-color: #d4b376; }
.concierge-group + .concierge-group { margin-top: 4.5rem; }
.concierge-group-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.6rem;
  color: #2a2219;
  margin-bottom: 2rem;
  padding-bottom: .75rem;
  border-bottom: 1px solid rgba(154,118,56,.35);
}
.concierge-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; }
.concierge-card {
  display: grid;
  background: #fff;
  border: 1px solid rgba(154,118,56,.22);
  overflow: hidden;
  scroll-margin-top: 6rem;
  transition: transform .45s cubic-bezier(.2,.8,.2,1), box-shadow .45s cubic-bezier(.2,.8,.2,1);
}
.concierge-card.is-wide { grid-column: 1 / -1; grid-template-columns: 1.12fr 1fr; min-height: 480px; }
.concierge-card:hover { box-shadow: 0 30px 80px -30px rgba(154,118,56,.35); transform: translateY(-6px); }
.concierge-media { position: relative; overflow: hidden; aspect-ratio: 4 / 3; background: #1f1810; }
.concierge-card.is-wide .concierge-media { aspect-ratio: auto; min-height: 480px; height: 100%; }
.concierge-media figure, .tour-slider { margin: 0; position: absolute; inset: 0; }
.concierge-media img, .tour-slide img { display: block; width: 100%; height: 100%; object-fit: cover; }
.tour-slider { overflow: hidden; background: #1f1810; }
.tour-slide { position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity .6s ease; }
.tour-slide.is-on { opacity: 1; visibility: visible; z-index: 1; }
.tour-slider-btn {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 2;
  width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center;
  color: #fff; background: rgba(31,24,16,.45); border: 1px solid rgba(253,251,246,.35); cursor: pointer;
}
.tour-slider-btn:hover, .tour-slider-btn:focus-visible { background: #9a7638; border-color: #9a7638; }
.tour-slider-btn.is-prev { left: 1rem; }
.tour-slider-btn.is-next { right: 1rem; }
.tour-slider-dots { position: absolute; left: 0; right: 0; bottom: 1rem; z-index: 2; display: flex; justify-content: center; gap: .35rem; }
.tour-slider-dots button {
  width: 44px; height: 44px; padding: 0; border: 0; background: transparent; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
}
.tour-slider-dots button::after { content: ""; width: 8px; height: 8px; background: rgba(253,251,246,.45); }
.tour-slider-dots button.is-on::after, .tour-slider-dots button[aria-selected="true"]::after {
  background: #d4b376; width: 22px;
}
.concierge-body { display: flex; flex-direction: column; justify-content: center; padding: 2.25rem; }
.concierge-index {
  margin: 0 0 .75rem; font-size: .72rem; letter-spacing: .35em; text-transform: uppercase;
  color: #9a7638; font-family: 'Oswald', sans-serif;
}
.concierge-index span { font-family: 'Playfair Display', serif; letter-spacing: 0; margin-right: .5rem; font-size: 1.15rem; }
.concierge-copy h3 { font-family: 'Playfair Display', serif; font-size: clamp(1.35rem, 2.4vw, 2rem); margin-bottom: 1rem; color: #2a2219; }
.concierge-copy p { color: #5c5146; font-size: 1rem; line-height: 1.8; margin-bottom: 1rem; }
.concierge-note { font-size: .95rem; color: #7a6e62; border-left: 2px solid #9a7638; padding-left: .85rem; }
.concierge-include-label {
  margin: .75rem 0 .4rem; font-size: .7rem; letter-spacing: .2em; text-transform: uppercase;
  color: #9a7638; font-family: 'Oswald', sans-serif;
}
.concierge-include, .concierge-checklist ul { list-style: none; margin: 0 0 1.25rem; padding: 0; }
.concierge-include li, .concierge-checklist li {
  position: relative; padding: .25rem 0 .25rem 1.15rem; color: #5c5146; line-height: 1.55;
}
.concierge-include li::before, .concierge-checklist li::before {
  content: ""; position: absolute; left: 0; top: .85em; width: 8px; height: 1px; background: #9a7638;
}
.btn-cave {
  align-self: flex-start; margin-top: .5rem; background: #1f1810; color: #fff;
  padding: .85rem 1.4rem; font-family: 'Oswald', sans-serif; font-size: .72rem;
  letter-spacing: .28em; text-transform: uppercase; display: inline-flex; align-items: center; gap: .5rem;
}
.btn-cave:hover, .btn-cave:focus-visible { background: #9a7638; }
.concierge-mixed-main { cursor: pointer; height: 100%; }
.concierge-portraits { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; margin: 0 0 1.25rem; }
.concierge-portrait { display: block; width: 100%; padding: 0; border: 0; background: none; cursor: pointer; }
.concierge-portrait img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.concierge-portrait:focus-visible { outline: 2px solid #9a7638; outline-offset: 3px; }
.concierge-checklist {
  margin-top: 3.5rem; padding: 2rem; background: #fff;
  border: 1px solid rgba(154,118,56,.22); border-left: 3px solid #9a7638;
}
.concierge-checklist h3 { font-family: 'Playfair Display', serif; font-size: 1.5rem; margin-bottom: .75rem; color: #2a2219; }
.concierge-checklist p { color: #5c5146; line-height: 1.8; margin-bottom: 1rem; }
.concierge-close { max-width: 40em; margin: 5rem auto 0; text-align: center; }
.concierge-close h2 { font-family: 'Playfair Display', serif; font-size: clamp(1.6rem, 4vw, 2.4rem); color: #2a2219; margin-bottom: 1.25rem; }
.concierge-close p { color: #5c5146; line-height: 1.8; margin-bottom: 1rem; }

@media (max-width: 900px) {
  .concierge-jump { flex-wrap: nowrap; justify-content: flex-start; overflow-x: auto; padding-inline-end: 1.25rem; }
  .concierge-jump a { flex: 0 0 auto; white-space: nowrap; }
}
@media (max-width: 768px) {
  .concierge-grid, .concierge-card, .concierge-card.is-wide { grid-template-columns: 1fr; }
  .concierge-grid { gap: 2rem; }
  .concierge-card.is-wide { min-height: 0; }
  .concierge-card.is-wide .concierge-media { min-height: 0; height: auto; aspect-ratio: 4 / 3; position: relative; }
  .concierge-body { padding: 1.35rem; }
  .concierge-card:hover { transform: none; box-shadow: none; }
}

@media (min-width: 1280px) {
  .xl\:flex { display: flex; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .hero-slide, .hero-slide.active, .page-hero > img, .room-img, .exp-img { animation: none !important; transition: none !important; }
  .tour-slide { transition: none; }
  #navbar.nav-ready nav[aria-label="Main"] > .nav-link,
  #navbar.nav-ready nav[aria-label="Main"] > .nav-dropdown > .nav-link { animation: none; }
  #navbar .nav-link::after { transition: none; }
}
