/* ==========================================================================
   Interactive maps: hotels (warm OSM map or satellite imagery, label chips with leader lines)
   and ziyarat (dark, tour mode). Prestige pass 2026-10-11: square shapes, ink and gold.
   ========================================================================== */

.map-attrib { position: absolute; right: 8px; bottom: 6px; z-index: 4; margin: 0; font-size: 10.5px; color: #5E574D; background: var(--ivory); padding: 1px 6px; }
.map-attrib a { color: inherit; }
.map-attrib--dark { color: rgba(246, 241, 231, .65); background: rgba(14, 13, 11, .7); }

.icon-btn { display: inline-grid; place-items: center; width: 44px; height: 44px; border-radius: 0; border: 1px solid var(--line-strong); color: var(--text); background: transparent; text-decoration: none; transition: background-color .2s, color .2s, border-color .2s; flex: none; }
.icon-btn .icon { width: 19px; height: 19px; }
.icon-btn:hover { background: var(--ink); color: var(--on-dark); border-color: var(--ink); }
.icon-btn--wa { background: var(--ink); color: var(--gold-soft); border-color: var(--ink); }
.icon-btn--wa:hover { background: var(--gold); border-color: var(--gold); color: var(--ink); }
.icon-btn--light { background: transparent; color: var(--on-dark); border-color: rgba(246, 241, 231, .4); }
.icon-btn--light:hover { background: var(--on-dark); color: var(--ink); }

/* ---------- Hotels map ---------- */
.hmap { display: grid; gap: 20px; grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 1024px) { .hmap:not(.hmap--compact) { grid-template-columns: minmax(0, 1fr) 360px; } }
.hmap__stage { position: relative; overflow: hidden; background: #F5F2EE; box-shadow: inset 0 0 0 1px var(--line); isolation: isolate; }
.hmap__canvas { position: absolute; }
.hmap__base { width: 100%; height: 100%; max-width: none; }
.hmap__sat { position: absolute; inset: 0; z-index: 1; display: none; background: #2B2A26; }
.hmap__sat img { position: absolute; max-width: none; transform: scale(1.006); transform-origin: 0 0; user-select: none; }
.hmap.is-sat .hmap__sat { display: block; }
.hmap.is-sat .hmap__stage { background: #2B2A26; }
.hmap__centre { position: absolute; transform: translate(-50%, -50%); z-index: 2; display: flex; flex-direction: column; align-items: center; gap: 4px; pointer-events: none; }
.hmap__centre-dot { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--ink); color: var(--gold-soft); box-shadow: 0 0 0 6px rgba(28, 25, 21, .14), 0 0 0 14px rgba(28, 25, 21, .07); }
.hmap__centre-dot .icon { width: 22px; height: 22px; }
.hmap__centre-label { position: absolute; top: 46px; white-space: nowrap; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; font-weight: 500; color: var(--text); background: rgba(250, 247, 241, .94); padding: 3px 9px; }
.hmap.is-sat .hmap__centre-dot { box-shadow: 0 0 0 6px rgba(214, 191, 146, .35), 0 0 0 14px rgba(214, 191, 146, .14); }

/* Map / Satellite switch */
.hmap__modes { position: absolute; left: 12px; top: 12px; z-index: 6; display: flex; background: rgba(250, 247, 241, .95); box-shadow: 0 6px 18px -10px rgba(14, 13, 11, .5); }
.hmap__modes button { min-height: 38px; padding: 0 14px; font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; font-weight: 500; color: var(--text); }
.hmap__modes button[aria-pressed="true"] { background: var(--ink); color: var(--on-dark); }
.hmap__modes button:not([aria-pressed="true"]):hover { color: var(--gold-ink); }
@media (min-width: 900px) { .hmap:not(.hmap--compact) .hmap__modes { left: 50%; transform: translateX(-50%); } }

.pin { position: absolute; z-index: 3; transform: translate(-50%, -50%); padding: 6px; border-radius: 50%; }
.pin__dot { display: grid; place-items: center; min-width: 26px; height: 26px; padding: 0 4px; border-radius: 999px; background: var(--ink); color: var(--on-dark); font-size: 12px; font-weight: 500; border: 1.5px solid var(--gold-soft); box-shadow: 0 4px 10px rgba(14, 13, 11, .35); transition: transform .2s var(--ease), background-color .2s, color .2s; }
.pin:hover .pin__dot, .pin:focus-visible .pin__dot, .pin.is-hover .pin__dot { transform: scale(1.15); background: var(--gold); color: var(--ink); }
.pin.is-active { z-index: 5; }
.pin.is-active .pin__dot { background: var(--gold); color: var(--ink); transform: scale(1.3); box-shadow: 0 0 0 6px rgba(179, 146, 96, .35), 0 6px 16px rgba(14, 13, 11, .4); }

.hmap__labels { position: absolute; inset: 0; z-index: 4; pointer-events: none; }
.hmap__lines { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.hmap__lines path { fill: none; stroke: var(--ink); stroke-width: 1; opacity: .5; }
.hmap.is-sat .hmap__lines path { stroke: var(--gold-soft); opacity: .75; }
.hmap__lines path.is-active { stroke: var(--gold); stroke-width: 1.8; opacity: 1; }
.chip-label {
  position: absolute; left: 0; top: 0; display: inline-flex; align-items: center; gap: 6px; max-width: 220px;
  padding: 4px 10px 4px 8px; border-radius: 0; background: rgba(22, 20, 15, .92); color: var(--on-dark); font-size: 12px; font-weight: 400; line-height: 1.3;
  white-space: nowrap; box-shadow: 0 6px 14px -6px rgba(14, 13, 11, .55); pointer-events: auto; cursor: pointer; opacity: 0;
  border-left: 2px solid var(--gold); transition: background-color .2s, opacity .3s, color .2s;
}
.chip-label span { overflow: hidden; text-overflow: ellipsis; }
.chip-label .icon { display: none; }
.chip-label.is-placed { opacity: 1; }
.chip-label:hover, .chip-label.is-hover { background: var(--ink-2); color: var(--gold-soft); }
.chip-label.is-active { background: var(--gold); color: var(--ink); }
@media (max-width: 899px) { .hmap__labels { display: none; } }

.hmap__panel { position: relative; min-height: 200px; }
.hmap__hint { display: flex; gap: 14px; align-items: flex-start; padding: 22px; background: var(--sand); color: var(--muted); font-size: .95rem; }
.hmap__hint .icon { width: 22px; height: 22px; color: var(--gold-ink); flex: none; margin-top: 2px; }
.hmap--compact .hmap__panel { position: absolute; left: 14px; bottom: 14px; width: min(340px, calc(100% - 28px)); z-index: 6; min-height: 0; }
.hmap--compact { position: relative; }
.hmap--compact .hmap__hint { display: none; }
.hmap--compact .hcard { box-shadow: var(--shadow-lg); }
.hmap--compact .hcard__media { display: none; }
@media (max-width: 899px) { .hmap--compact .hmap__panel { position: static; width: auto; margin-top: 14px; } .hmap--compact .hmap__hint { display: flex; } }

.hcard { position: relative; background: #fff; border: 1px solid var(--line); overflow: hidden; animation: dh-pop .3s var(--ease); }
@keyframes dh-pop { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.hcard__media { aspect-ratio: 16 / 10; overflow: hidden; background: var(--sand); }
.hcard__media img { width: 100%; height: 100%; object-fit: cover; }
.hcard__body { padding: 20px 22px 22px; display: grid; gap: 10px; }
.hcard__num { position: absolute; top: 0; left: 0; display: grid; place-items: center; min-width: 36px; height: 36px; padding: 0 8px; background: var(--ink); color: var(--gold-soft); font-family: var(--f-display); font-size: 1.15rem; }
.hcard:not(:has(.hcard__media)) .hcard__num { position: static; justify-self: start; }
.hcard__title { font-family: var(--f-display); font-size: 1.6rem; font-weight: 500; line-height: 1.1; padding-right: 30px; }
.hcard__facts { display: grid; gap: 8px; font-size: .9rem; color: var(--muted); }
.hcard__facts li { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 10px; align-items: start; }
.hcard__facts .icon { width: 16px; height: 16px; color: var(--gold-ink); margin-top: 3px; }
.hcard__actions { display: flex; gap: 8px; align-items: center; margin-top: 6px; }
.hcard__actions .btn { flex: 1; }
.hcard__sat { display: inline-flex; align-items: center; gap: .6em; justify-self: start; margin-top: 4px; font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; font-weight: 500; color: var(--text); text-decoration: none; border-bottom: 1px solid var(--gold); padding-bottom: .35em; }
.hcard__sat .icon { width: 1.1em; height: 1.1em; }
.hcard__sat:hover { color: var(--gold-ink); }
.hcard__close { position: absolute; top: 8px; right: 8px; z-index: 2; width: 36px; height: 36px; display: grid; place-items: center; background: rgba(250, 247, 241, .94); color: var(--text); }
.hcard__close .icon { width: 18px; height: 18px; }

/* Hotel list under the map */
.hlist { list-style: none; margin: 48px 0 0; padding: 0; display: grid; gap: 0 32px; grid-template-columns: minmax(0, 1fr); border-top: 1px solid var(--line); }
@media (min-width: 900px) { .hlist { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.hlist__item { display: grid; grid-template-columns: auto 80px minmax(0, 1fr) auto; gap: 16px; align-items: center; padding: 16px 0; border-bottom: 1px solid var(--line); transition: background-color .2s; scroll-margin-top: calc(var(--header-h) + 20px); }
.hlist__item.is-active { background: var(--ivory); }
.hlist__num { font-family: var(--f-display); font-size: 1.25rem; color: var(--gold-ink); min-width: 26px; text-align: center; }
.hlist__media { width: 80px; height: 60px; overflow: hidden; background: var(--sand); }
.hlist__media img { width: 100%; height: 100%; object-fit: cover; }
.hlist__media .ph .icon { width: 24px; }
.hlist__title { font-family: var(--f-display); font-size: 1.3rem; font-weight: 500; line-height: 1.15; display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: center; }
.hlist__title .stars .icon { width: .7em; height: .7em; }
.hlist__meta { font-size: .85rem; color: var(--muted); line-height: 1.45; margin-top: 2px; }
.hlist__addr { display: none; }
.hlist__actions { display: flex; gap: 6px; }
.hlist__actions .icon-btn { width: 40px; height: 40px; }
@media (max-width: 559px) {
  .hlist__item { grid-template-columns: auto minmax(0, 1fr); }
  .hlist__media { display: none; }
  .hlist__actions { grid-column: 1 / -1; justify-content: flex-end; }
}

/* ---------- Ziyarat map ---------- */
.zmap { display: grid; gap: 0; grid-template-columns: minmax(0, 1fr); overflow: hidden; background: var(--black); color: var(--on-dark); }
@media (min-width: 1024px) { .zmap { grid-template-columns: minmax(0, 1fr) 380px; } }
.zmap__stage { position: relative; aspect-ratio: 1.5; min-height: 360px; overflow: hidden; background: #29231D; }
@media (max-width: 639px) { .zmap__stage { aspect-ratio: auto; height: 62vh; min-height: 380px; } }
.zmap__viewport { position: absolute; inset: 0; transform-origin: 0 0; transition: transform .9s cubic-bezier(.3, .7, .2, 1); --s: 1; }
.zmap__canvas { position: absolute; }
.zmap__base { width: 100%; height: 100%; max-width: none; }
.zmap__stage::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(120% 90% at 50% 50%, transparent 55%, rgba(14, 13, 11, .55)); z-index: 1; }
.zmap__centre { position: absolute; z-index: 2; transform: translate(-50%, -50%) scale(calc(1 / var(--s))); display: flex; align-items: center; gap: 6px; color: var(--gold-soft); font-size: 12px; font-weight: 500; pointer-events: none; }
.zmap__centre .icon { width: 26px; height: 26px; padding: 4px; border-radius: 50%; background: var(--ink); box-shadow: 0 0 0 5px rgba(214, 191, 146, .2); }
.zmap__centre span { color: var(--on-dark); text-shadow: 0 1px 4px rgba(0, 0, 0, .6); white-space: nowrap; }
.zpin { position: absolute; z-index: 3; transform: translate(-50%, -50%) scale(calc(1 / var(--s))); display: flex; align-items: center; padding: 4px; border-radius: 999px; color: var(--on-dark); }
.zpin__dot { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--ink); color: var(--gold-soft); border: 1.5px solid var(--gold-soft); box-shadow: 0 0 0 0 rgba(214, 191, 146, .6); transition: transform .25s var(--ease), background-color .2s, color .2s; }
.zpin__dot .icon { width: 19px; height: 19px; }
.zpin__name { position: absolute; left: calc(100% + 2px); top: 50%; transform: translateY(-50%); display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; padding: 4px 10px 4px 4px; background: rgba(14, 13, 11, .86); font-size: 12.5px; font-weight: 400; opacity: 0; pointer-events: none; transition: opacity .2s; }
.zpin__n { display: grid; place-items: center; width: 20px; height: 20px; background: var(--gold); color: var(--ink); font-size: 11px; font-weight: 500; }
.zpin:hover .zpin__name, .zpin:focus-visible .zpin__name, .zpin.is-active .zpin__name { opacity: 1; }
.zpin:hover .zpin__dot, .zpin:focus-visible .zpin__dot { transform: scale(1.12); background: var(--gold); color: var(--ink); }
.zpin.is-active { z-index: 6; }
.zpin.is-active .zpin__dot { background: var(--gold); color: var(--ink); transform: scale(1.18); animation: dh-ping 1.8s infinite; }
@keyframes dh-ping { 0% { box-shadow: 0 0 0 0 rgba(214, 191, 146, .6); } 100% { box-shadow: 0 0 0 18px rgba(214, 191, 146, 0); } }
@media (prefers-reduced-motion: reduce) { .zpin.is-active .zpin__dot { animation: none; } .zmap__viewport { transition: none; } }
.zmap__controls { position: absolute; left: 14px; bottom: 14px; z-index: 5; display: flex; gap: 6px; }
.zmap__ctl { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-width: 44px; height: 44px; padding: 0 12px; background: rgba(250, 247, 241, .94); color: var(--text); font-weight: 500; font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; }
.zmap__ctl:hover { background: #fff; }
.zmap__ctl .icon { width: 19px; height: 19px; }
.zmap__ctl--wide { padding: 0 18px; background: var(--gold); color: var(--ink); }

.zmap__panel { position: relative; padding: 28px; background: var(--ink); display: flex; flex-direction: column; gap: 14px; max-height: 760px; overflow-y: auto; }
@media (min-width: 1024px) { .zmap__panel { max-height: none; } }
.zmap__count { font-weight: 500; text-transform: uppercase; letter-spacing: var(--track); font-size: .7rem; color: var(--gold-soft); margin-bottom: 10px; }
.zlist { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.zlist__btn { width: 100%; display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 11px 4px; text-align: left; color: var(--on-dark); border-bottom: 1px solid var(--on-dark-line); }
.zlist__btn:hover, .zlist__btn:focus-visible { color: var(--gold-soft); }
.zlist__n { font-family: var(--f-display); font-style: italic; font-size: 1.05rem; color: var(--gold-soft); }
.zlist__t { font-weight: 400; }
.zlist__d { font-size: .78rem; color: var(--on-dark-muted); }
.zcard-panel { display: grid; gap: 10px; animation: dh-pop .35s var(--ease); }
.zcard-panel__media { --ar: .95; max-width: 300px; outline: 1px solid rgba(214, 191, 146, .55); outline-offset: 6px; margin: 6px 0 8px 6px; }
.zcard-panel__step { font-weight: 500; text-transform: uppercase; letter-spacing: var(--track); font-size: .68rem; color: var(--gold-soft); }
.zcard-panel__ar { font-size: 1.6rem; line-height: 1.5; color: var(--gold-soft); text-align: left; direction: rtl; }
.zcard-panel__title { font-family: var(--f-display); font-weight: 500; font-size: 1.9rem; line-height: 1.08; }
.zcard-panel__dist { display: inline-flex; gap: 8px; align-items: center; font-size: .86rem; color: var(--on-dark-muted); }
.zcard-panel__dist .icon { width: 17px; height: 17px; color: var(--gold-soft); }
.zcard-panel__text { color: var(--on-dark-muted); }
.zcard-panel__actions { display: flex; gap: 10px; align-items: center; margin-top: 6px; }
.zpanel-back { display: inline-flex; align-items: center; gap: 6px; color: var(--gold-soft); font-weight: 500; font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; margin-bottom: 4px; }
.zpanel-back .icon { width: 17px; height: 17px; }
