/* =========================================================================
   IXORA — Responsive layer
   Breakpoints: 1280 · 1180 (nav) · 1024 · 768 · 480 · 390 · 360
   Mobile layouts are composed intentionally, not just scaled down.
   ========================================================================= */

@media (max-width: 1280px) {
  .primary-nav ul { gap: 1.1rem; }
  .primary-nav a { letter-spacing: .16em; }
  .header-ctas { gap: 1rem; }
  .booking-strip__panel { grid-template-columns: 1fr 1fr .78fr .78fr .78fr 1.1fr auto; }
  .booking-strip__field { padding-inline: 1.1rem; }
  .booking-strip__field .field-error { left: 1.1rem; }
}

/* Collapse primary navigation into the full-screen menu */
@media (max-width: 1180px) {
  .primary-nav, .header-event-link { display: none; }
  .menu-toggle { display: block; }
  .header-ctas { margin-left: auto; }
  .footer-top { grid-template-columns: 1fr 1fr; }
  .booking-strip__panel { grid-template-columns: repeat(3, 1fr); }
  .booking-strip__field { border-bottom: 1px solid var(--line-light); min-height: 84px; }
  .booking-strip__field:nth-child(3n) { border-right: 0; }
  .booking-strip__submit { grid-column: 1 / -1; min-height: 64px; }
}

@media (max-width: 1024px) {
  :root { --header-h: 84px; }
  .brand img { height: 56px; }
  .is-scrolled .brand img { height: 46px; }
  .section-head { grid-template-columns: 1fr; gap: 1.5rem; }
  .section-head .lead { justify-self: start; }
  .split { grid-template-columns: 1fr 1fr; gap: 3rem; }
  .split__media .media--offset { right: -1rem; bottom: -2rem; }
  .room-card { grid-template-columns: 1fr 1fr; gap: 2.5rem; }
  .card-grid--4 { grid-template-columns: repeat(2, 1fr); }
  .event-showcase { grid-template-columns: 1fr 1fr; }
  .event-stage { min-height: 480px; }
  .experience__title { grid-column: 1 / -1; }
  .experience__intro { grid-column: 1 / 10; }
  .experience__img-a { grid-column: 1 / 6; }
  .experience__list { grid-column: 7 / 13; }
  .experience__img-b { grid-column: 2 / 6; }
  .form-layout, .detail-layout { grid-template-columns: 1fr; }
  .detail-aside { position: static; }
  .legal-layout { grid-template-columns: 1fr; }
  .toc { position: static; display: flex; flex-wrap: wrap; gap: .3rem 1.2rem; border-left: 0; border-bottom: 1px solid var(--line-light); padding-bottom: 1rem; }
  .toc a { padding: .3rem 0; border: 0; }
  .location { grid-template-columns: 1fr; }
  .location__map { min-height: 380px; }
  .pending-grid { grid-template-columns: 1fr 1fr; }
  .contact-cards { grid-template-columns: 1fr 1fr; }
  .contact-cards > :last-child:nth-child(odd) { grid-column: 1 / -1; }
  .amenity-grid { grid-template-columns: repeat(2, 1fr); }
  .editorial-row__media, .editorial-row:nth-child(even) .editorial-row__media { grid-column: 1 / 8; order: 0; }
  .editorial-row__body, .editorial-row:nth-child(even) .editorial-row__body { grid-column: 8 / 13; }
}

@media (max-width: 900px) {
  .hero__controls { bottom: auto; top: calc(var(--header-h) + 1rem); right: var(--gutter); }
  .hero__dots { display: none; }
}

@media (max-width: 768px) {
  body { font-size: 1rem; }
  :root { --header-h: 76px; --section: clamp(4.5rem, 14vw, 6rem); }
  .brand img { height: 50px; }
  .is-scrolled .brand img { height: 42px; }
  .is-scrolled .header-inner { height: 68px; }
  .header-ctas .btn { padding-inline: 1rem; min-height: 44px; font-size: .68rem; letter-spacing: .16em; }

  .hero { align-items: flex-end; }
  .hero__content { padding-bottom: 8.5rem; }
  .hero__title { max-width: none; }
  .hero::after { background: linear-gradient(0deg, rgba(15, 13, 14, .92) 0%, rgba(15, 13, 14, .55) 50%, rgba(15, 13, 14, .35) 100%); }
  .hero__note { bottom: 5.6rem; }
  .hero__scroll { display: none; }

  .booking-strip { margin-top: -4rem; }
  .booking-strip__panel { grid-template-columns: 1fr 1fr; }
  .booking-strip__field:nth-child(3n) { border-right: 1px solid var(--line-light); }
  .booking-strip__field:nth-child(2n) { border-right: 0; }
  .booking-strip__field--purpose { border-right: 0 !important; }

  .split, .split--reverse { grid-template-columns: 1fr; gap: 4rem; }
  .split--reverse > :first-child { order: 0; }
  .split__media { margin-right: 1.5rem; }
  .split__media .media { aspect-ratio: 4 / 4.6; }
  .split__media .media--offset { right: -1.5rem; bottom: -2.5rem; width: 44%; border-width: 6px; }

  .pillars { grid-template-columns: 1fr; }
  .pillar, .pillar + .pillar { padding: 2.2rem 0 1.2rem; border-right: 0; border-bottom: 1px solid var(--line-dark); }
  .pillar:last-child { border-bottom: 0; }

  .room-card, .room-card:nth-child(even) { grid-template-columns: 1fr; gap: 1.8rem; }
  .room-card:nth-child(even) .room-card__media { order: 0; }
  .room-card__num, .room-card:nth-child(even) .room-card__num { left: auto; right: .8rem; top: .5rem; font-size: 3rem; color: var(--gold-brand); }

  /* Event showcase becomes stacked image cards */
  .event-showcase { grid-template-columns: 1fr; }
  .event-stage { display: none; }
  .event-tab__mobile-media { display: block !important; aspect-ratio: 16 / 10; margin: 0 0 1.2rem; }
  .event-tab__panel p, .event-tab__panel .link-arrow { margin-left: 0; }

  .experience { grid-template-columns: 1fr; gap: 0; }
  .experience > * { grid-column: 1 / -1 !important; }
  .experience__img-a { margin-top: 2rem; margin-right: 18%; }
  .experience__list { margin-top: 1.5rem; }
  .experience__img-b { margin: 1.5rem 0 0 30%; border-width: 0; }
  .experience > * { grid-row: auto !important; }

  .card-grid, .card-grid--2 { grid-template-columns: 1fr; gap: 3rem; }
  .card-grid--4 { grid-template-columns: 1fr 1fr; gap: 1.5rem; }
  .e-card .media { aspect-ratio: 4 / 3.4; }
  .steps { grid-template-columns: 1fr; }

  .editorial-row, .editorial-row:nth-child(even) { grid-template-columns: 1fr; gap: 1.6rem; }
  .editorial-row > *, .editorial-row:nth-child(even) > * { grid-column: 1 / -1 !important; order: 0 !important; }

  .masonry { columns: 2; column-gap: .75rem; }
  .masonry__item { margin-bottom: .75rem; }
  .gallery-link .overlay { opacity: 1; padding: .8rem; background: linear-gradient(0deg, rgba(15, 13, 14, .7), transparent 50%); }
  .overlay__title { font-size: 1rem; }
  .filters { justify-content: flex-start; flex-wrap: nowrap; overflow-x: auto; margin-inline: calc(var(--gutter) * -1); padding: 0 var(--gutter) .5rem; scrollbar-width: none; }
  .filters::-webkit-scrollbar { display: none; }
  .filter-btn { flex: none; }

  .form { grid-template-columns: 1fr; }
  .form-card { margin-inline: calc(var(--gutter) * -1); box-shadow: none; }
  .pending-grid, .pending-grid--2 { grid-template-columns: 1fr; }
  .contact-cards { grid-template-columns: 1fr; }
  .amenity-grid { grid-template-columns: 1fr 1fr; }
  .room-gallery__thumbs { grid-template-columns: repeat(5, 1fr); gap: .5rem; }
  .offer { grid-template-columns: 1fr; gap: .8rem; }
  .offer__num { font-size: 1.8rem; }
  .footer-top { grid-template-columns: 1fr; gap: 2.5rem; }
  .footer-cta { grid-template-columns: 1fr; }
  .lightbox__stage { padding: 0 .5rem; }
  .lightbox__prev, .lightbox__next { top: auto; bottom: -3.6rem; transform: none; }
  .lightbox__caption { padding-inline: 4.5rem; }
  .spec-list { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 480px) {
  :root { --gutter: 1.15rem; }
  .header-ctas .btn .long { display: none; }
  .hero__location { font-size: .62rem; letter-spacing: .24em; }
  .hero__sub { font-size: 1.3rem; }
  .hero .btn-row .btn { flex: 1 1 100%; }
  .booking-strip__panel { grid-template-columns: 1fr 1fr; }
  .booking-strip__field { padding: .9rem 1rem; min-height: 78px; }
  .booking-strip__field input, .booking-strip__field select { font-size: 1.02rem; }
  .booking-strip__field .field-error { left: 1rem; }
  .stepper button { width: 30px; height: 30px; }
  .btn { padding-inline: 1.4rem; letter-spacing: .18em; }
  .card-grid--4 { grid-template-columns: 1fr; }
  .amenity-grid { grid-template-columns: 1fr; }
  .masonry { columns: 1; }
  .spec-list { grid-template-columns: 1fr; }
  .dialog dl { grid-template-columns: 1fr; gap: .1rem; }
  .dialog dd { margin-bottom: .6rem; }
  .contact-lines li { flex-direction: column; gap: .2rem; }
  .contact-lines .k { flex: none; }
  .split__index { font-size: 4.5rem; }
  .room-gallery__thumbs { grid-template-columns: repeat(4, 1fr); }
  .room-gallery__thumbs li:nth-child(n+5) { display: none; }
}

@media (max-width: 390px) {
  .header-inner { gap: 1rem; }
  .header-ctas .btn { padding-inline: .8rem; font-size: .64rem; letter-spacing: .12em; }
  .hero__title { font-size: 2.9rem; }
  .booking-strip__field label { font-size: .6rem; letter-spacing: .16em; }
}

@media (max-width: 360px) {
  .brand img { height: 44px; }
  .menu-toggle { width: 44px; }
  .hero__title { font-size: 2.65rem; }
  .booking-strip__panel { grid-template-columns: 1fr; }
  .booking-strip__field { border-right: 0 !important; }
}

/* Touch devices: no custom cursor, show overlays */
@media (hover: none) {
  .cursor, .cursor-ring { display: none !important; }
  .gallery-link .overlay { opacity: 1; }
}

@media print {
  .site-header, .mobile-menu, .loader, .cursor, .cursor-ring, .hero__controls, .site-footer::before { display: none !important; }
  .js [data-reveal] { opacity: 1 !important; transform: none !important; clip-path: none !important; }
}
