/* ===== Ember Royale Home Page Styles ===== */

.home-page {
  display: block;
  width: 100%;
  min-width: 0;
  background-color: var(--surface-base);
}

/* ===== Hero Section ===== */
.hero-section {
  position: relative;
  width: 100%;
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background-color: var(--surface-base);
}

.hero-media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

.hero-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  border-radius: 0;
  display: block;
  max-width: none;
  will-change: transform;
}

.hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(11, 12, 16, 0.55) 0%,
    rgba(11, 12, 16, 0.45) 40%,
    rgba(11, 12, 16, 0.78) 100%
  );
}

.hero-content {
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 720px;
  margin-inline: auto;
  padding-inline: var(--container-padding-mobile);
  padding-block: var(--space-4xl) var(--space-3xl);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-lg);
  text-align: center;
}

.hero-label {
  color: var(--color-gold-bright);
  margin-block-end: 0;
}

.hero-title {
  font-family: var(--font-heading);
  font-size: var(--text-display-size);
  line-height: var(--text-display-line-height);
  letter-spacing: var(--text-display-letter-spacing);
  font-weight: 500;
  color: var(--color-champagne-white);
  margin-block-end: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  text-wrap: balance;
}

.hero-title-line {
  display: block;
}

.hero-title-sub {
  font-size: clamp(1.75rem, 4vw, 3rem);
  letter-spacing: 0.18em;
  line-height: 1.1;
  color: var(--color-warm-marble);
  text-transform: uppercase;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--space-md);
  width: 100%;
  max-width: 520px;
  margin-block-start: var(--space-md);
}

.hero-cta {
  min-width: 200px;
  flex: 1 1 auto;
  max-width: 240px;
}

.hero-cta-secondary {
  background-color: transparent;
  color: var(--color-champagne-white);
}

/* Ken Burns animation */
@keyframes kenburns {
  from {
    transform: scale(1);
  }
  to {
    transform: scale(1.1);
  }
}

.hero-image.kenburns {
  animation: kenburns 20s ease-out both;
}

/* ===== Marquee Section ===== */
.marquee-section {
  width: 100%;
  overflow: hidden;
  background-color: var(--surface-base);
  border-block: var(--border-dark);
  padding-block: var(--space-lg);
}

.marquee-track {
  display: flex;
  flex-wrap: nowrap;
  width: max-content;
  min-width: 100%;
  animation: marquee 32s linear infinite;
}

.marquee-group {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: var(--space-lg);
  padding-inline-end: var(--space-lg);
  flex-shrink: 0;
  min-width: max-content;
}

.marquee-item {
  font-family: var(--font-body);
  font-size: var(--text-small-size);
  line-height: var(--text-small-line-height);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--color-champagne-white);
  white-space: nowrap;
}

.marquee-diamond {
  width: 6px;
  height: 6px;
  background-color: var(--color-aged-gold);
  transform: rotate(45deg);
  flex-shrink: 0;
}

@keyframes marquee {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-50%);
  }
}

.marquee-section:hover .marquee-track {
  animation-play-state: paused;
}

/* ===== Resort Overview Section ===== */
.resort-overview-section {
  padding-block: var(--space-5xl) var(--space-6xl);
  background-color: var(--surface-base);
}

.resort-overview-container {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-3xl);
  align-items: center;
}

.resort-overview-text {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-md);
  min-width: 0;
}

.resort-overview-label {
  margin-block-end: 0;
}

.resort-overview-title {
  margin-block-end: 0;
  max-width: 720px;
  text-wrap: balance;
}

.resort-overview-copy {
  max-width: 720px;
  margin-block-end: 0;
  color: var(--color-champagne-white);
}

.resort-overview-images {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-lg);
  min-width: 0;
}

.resort-overview-figure {
  margin-block-end: 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.resort-overview-image {
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: var(--radius-md);
  border: var(--border-dark);
  display: block;
}

/* ===== Key Figures Section ===== */
.key-figures-section {
  padding-block: var(--space-5xl) var(--space-6xl);
  background-color: var(--surface-base);
  border-top: var(--border-dark);
}

.key-figures-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2xl);
  text-align: center;
}

.key-figures-label {
  margin-block-end: 0;
}

.key-figures-title {
  margin-block-end: 0;
  max-width: 720px;
  text-wrap: balance;
}

.key-figures-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-xl);
  width: 100%;
  min-width: 0;
}

.key-figure-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: var(--space-xs);
  min-width: 0;
  padding: var(--space-lg);
  border: var(--border-dark);
  border-radius: var(--radius-md);
  background-color: var(--surface-elevated);
  transition: border-color var(--transition-hover), background-color var(--transition-hover);
}

.key-figure-card:hover {
  border-color: var(--color-aged-gold);
  background-color: var(--surface-accent);
}

.key-figure-number {
  font-family: var(--font-heading);
  font-size: clamp(2.5rem, 5vw, 4rem);
  line-height: 1;
  letter-spacing: -0.01em;
  color: var(--color-gold-bright);
  font-weight: 500;
}

.key-figure-name {
  font-size: var(--text-label-size);
  line-height: var(--text-label-line-height);
  letter-spacing: var(--text-label-letter-spacing);
  text-transform: uppercase;
  color: var(--color-champagne-white);
  font-weight: 500;
}

.key-figure-description {
  font-size: var(--text-small-size);
  line-height: var(--text-small-line-height);
  letter-spacing: var(--text-small-letter-spacing);
  color: var(--color-marble-muted);
  margin-block-end: 0;
  max-width: 300px;
}

/* ===== Destination Cards Section ===== */
.destination-cards-section {
  padding-block: var(--space-5xl) var(--space-6xl);
  background-color: var(--surface-base);
  border-top: var(--border-dark);
}

.destination-cards-container {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2xl);
}

.destination-cards-label {
  margin-block-end: 0;
}

.destination-cards-title {
  margin-block-end: 0;
  max-width: 720px;
  text-wrap: balance;
}

.destination-cards-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-xl);
  width: 100%;
  min-width: 0;
}

.destination-card {
  min-width: 0;
  display: flex;
  flex-direction: column;
  background-color: var(--surface-elevated);
  border: var(--border-dark);
  border-radius: var(--radius-md);
  overflow: hidden;
  transition: transform var(--transition-slow), border-color var(--transition-hover), box-shadow var(--transition-slow);
}

.destination-card:hover {
  transform: translateY(-4px);
  border-color: var(--color-aged-gold);
  box-shadow: 0 0 20px rgba(198, 161, 91, 0.3);
}

.destination-card-link {
  display: flex;
  flex-direction: column;
  flex: 1;
  color: inherit;
  text-decoration: none;
  min-width: 0;
}

.destination-card-link:hover {
  color: inherit;
}

.destination-card-media {
  margin-block-end: 0;
  width: 100%;
  min-width: 0;
  overflow: hidden;
  border-radius: 0;
}

.destination-card-image {
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  border-radius: 0;
  display: block;
  transition: transform var(--transition-slow);
}

.destination-card:hover .destination-card-image {
  transform: scale(1.04);
}

.destination-card-body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-sm);
  padding: var(--space-lg);
  flex: 1;
  min-width: 0;
}

.destination-card-title {
  font-size: var(--text-h3-size);
  line-height: var(--text-h3-line-height);
  letter-spacing: var(--text-h3-letter-spacing);
  color: var(--color-champagne-white);
  margin-block-end: 0;
}

.destination-card-copy {
  font-size: var(--text-small-size);
  line-height: var(--text-small-line-height);
  letter-spacing: var(--text-small-letter-spacing);
  color: var(--color-marble-muted);
  margin-block-end: 0;
  max-width: 300px;
}

.destination-card-cta {
  margin-block-start: auto;
  font-size: var(--text-label-size);
  line-height: var(--text-label-line-height);
  letter-spacing: var(--text-label-letter-spacing);
  text-transform: uppercase;
  color: var(--color-aged-gold);
  font-weight: 500;
  transition: color var(--transition-hover);
}

.destination-card:hover .destination-card-cta {
  color: var(--color-gold-bright);
}

/* ===== Reservation Panel Section ===== */
.reservation-panel-section {
  position: relative;
  width: 100%;
  min-height: 520px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background-color: var(--surface-base);
}

.reservation-panel-media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

.reservation-panel-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  border-radius: 0;
  display: block;
  max-width: none;
}

.reservation-panel-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(11, 12, 16, 0.7) 0%,
    rgba(11, 12, 16, 0.55) 50%,
    rgba(11, 12, 16, 0.82) 100%
  );
}

.reservation-panel-content {
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 600px;
  margin-inline: auto;
  padding-inline: var(--container-padding-mobile);
  padding-block: var(--space-5xl);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-md);
  text-align: center;
}

.reservation-panel-label {
  color: var(--color-gold-bright);
  margin-block-end: 0;
}

.reservation-panel-title {
  color: var(--color-champagne-white);
  margin-block-end: 0;
  text-wrap: balance;
}

.reservation-panel-copy {
  color: var(--color-warm-marble);
  margin-block-end: 0;
  max-width: 520px;
}

.reservation-panel-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--space-md);
  width: 100%;
  max-width: 480px;
  margin-block-start: var(--space-md);
}

.reservation-panel-cta {
  min-width: 180px;
  flex: 1 1 auto;
  max-width: 220px;
}

.reservation-panel-cta-secondary {
  background-color: transparent;
  color: var(--color-champagne-white);
}

/* ===== Responsive: Tablet ===== */
@media (min-width: 768px) {
  .hero-content {
    padding-inline: var(--container-padding-desktop);
  }

  .resort-overview-container {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: var(--space-4xl);
  }

  .resort-overview-images {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: var(--space-lg);
  }

  .key-figures-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .destination-cards-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .reservation-panel-content {
    padding-inline: var(--container-padding-desktop);
  }
}

/* ===== Responsive: Desktop ===== */
@media (min-width: 1024px) {
  .key-figures-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .destination-cards-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* ===== Responsive: Mobile ===== */
@media (max-width: 767px) {
  .hero-section {
    min-height: 100vh;
    min-height: 100svh;
  }

  .hero-content {
    padding-block: var(--space-4xl) var(--space-3xl);
    gap: var(--space-md);
  }

  .hero-title {
    font-size: clamp(3rem, 14vw, 4.5rem);
  }

  .hero-title-sub {
    font-size: clamp(1.25rem, 6vw, 2rem);
    letter-spacing: 0.14em;
  }

  .hero-actions {
    flex-direction: column;
    align-items: stretch;
    gap: var(--space-sm);
  }

  .hero-cta {
    width: 100%;
    max-width: none;
    min-width: 0;
  }

  .marquee-track {
    animation-duration: 40s;
  }

  .resort-overview-section {
    padding-block: var(--space-4xl) var(--space-5xl);
  }

  .resort-overview-container {
    gap: var(--space-2xl);
  }

  .resort-overview-images {
    gap: var(--space-lg);
  }

  .key-figures-section {
    padding-block: var(--space-4xl) var(--space-5xl);
  }

  .key-figures-grid {
    grid-template-columns: 1fr;
    gap: var(--space-lg);
  }

  .key-figure-card {
    padding: var(--space-lg);
  }

  .destination-cards-section {
    padding-block: var(--space-4xl) var(--space-5xl);
  }

  .destination-cards-grid {
    grid-template-columns: 1fr;
    gap: var(--space-lg);
  }

  .reservation-panel-section {
    min-height: 560px;
  }

  .reservation-panel-content {
    padding-block: var(--space-4xl);
  }

  .reservation-panel-actions {
    flex-direction: column;
    align-items: stretch;
    gap: var(--space-sm);
  }

  .reservation-panel-cta {
    width: 100%;
    max-width: none;
    min-width: 0;
  }
}

/* ===== Reduced Motion ===== */
@media (prefers-reduced-motion: reduce) {
  .hero-image.kenburns,
  .marquee-track {
    animation: none;
  }

  .destination-card,
  .destination-card-image {
    transition: none;
  }

  .destination-card:hover {
    transform: none;
    box-shadow: none;
  }

  .destination-card:hover .destination-card-image {
    transform: none;
  }

  .hero-content,
  .resort-overview-text,
  .key-figure-card,
  .destination-card,
  .reservation-panel-content {
    transition: none;
  }
}
