/* ════════════════════════════════════════════════════════
   LUX ROMAE · Modules Shared CSS  v1.1
   Injected via <link> in every fragment.
   Inherits CSS variables from services/index.html parent.
   v1.1 (Tappa 1 / Mossa 1): foundation tokens + .lux-grid utility.
   ════════════════════════════════════════════════════════ */

/* ── Foundation v1 · Tappa 1 (Mossa 1) — fluid responsive system ── */
/* Re-declared here (fallback) so modules loaded standalone still work. */
:root{
  /* Adaptive: clamp(MIN, 95vw, MAX) — mobile uses full viewport (no regression),
     desktop uses 95% of screen up to cap. Verified: 1920→1824, 2560→2000. */
  --container-w: clamp(1440px, 95vw, 2200px);
  --container-w-narrow: clamp(1080px, 95vw, 2000px);
  --container-w-reading: 780px;
  --container-pad: clamp(16px, 4vw, 64px);
  /* Mobile-anchored: viewport ≤520px returns exactly MIN (zero regression).
     Verified: at 320/375/520 → MIN; at 1440 → MAX. */
  --fs-display: clamp(22px, .457rem + 2.83vw, 48px);
  --fs-h1: clamp(20px, .543rem + 2.17vw, 40px);
  --fs-h2: clamp(18px, .701rem + 1.30vw, 30px);
  --fs-h3: clamp(15px, .690rem + .76vw, 22px);
  --fs-body: clamp(13px, .707rem + .33vw, 16px);
  --fs-small: clamp(11px, .617rem + .22vw, 13px);
  --fs-tiny: clamp(9px, .492rem + .22vw, 11px);
  --space-1: clamp(4px, .25rem + .1vw, 8px);
  --space-2: clamp(8px, .5rem + .15vw, 12px);
  --space-3: clamp(12px, .75rem + .25vw, 18px);
  --space-4: clamp(16px, 1rem + .4vw, 28px);
  --space-5: clamp(20px, 1.25rem + .6vw, 40px);
  --space-6: clamp(24px, 1.5rem + 1vw, 56px);
  --space-8: clamp(32px, 2rem + 1.5vw, 72px);
}

/* Reusable fluid grid utility — auto-fit, no media queries needed.
   Use as: <div class="lux-grid">…cards…</div>
   Children auto-flow: 1col mobile → 2-3col tablet → 4-6col desktop. */
.lux-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--space-3, clamp(12px, .75rem + .25vw, 18px));
}
.lux-grid--narrow { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.lux-grid--wide   { grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); }

/* Container helper — same algorithm as .main / .content */
.lux-container { width: min(100%, var(--container-w, 1440px)); margin-inline: auto; padding-inline: var(--container-pad, 16px); }
.lux-container--narrow { max-width: var(--container-w-narrow, 1080px); }
.lux-container--reading { max-width: var(--container-w-reading, 780px); }

/* ── RESET (scoped) ──────────────────────────────────── */
.lux-mod * { box-sizing: border-box; }
.lux-mod { font-family: 'DM Sans', -apple-system, sans-serif; color: #1a1a1a; }

/* ── LAYOUT ──────────────────────────────────────────── */
.lux-mod { padding: 0 0 4px; }

/* Module inner header (coloured band below topbar) */
.mod-header {
  padding: 14px 16px 12px;
  border-bottom: 1px solid rgba(0,0,0,.06);
  display: flex; align-items: center; gap: 10px;
  flex-wrap: wrap;
}
.mod-header-icon {
  width: 40px; height: 40px; border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.15rem; flex-shrink: 0;
}
.mod-header-titles { flex: 1; min-width: 0; }
.mod-header-title {
  font-size: 1rem; font-weight: 800; line-height: 1.2;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mod-header-sub { font-size: .72rem; color: #666; margin-top: 1px; }

/* Status pill in header */
.mod-status {
  font-size: .62rem; font-weight: 700; padding: 3px 9px;
  border-radius: 999px; white-space: nowrap; flex-shrink: 0;
}
.mod-status.open   { background: #dcfce7; color: #15803d; }
.mod-status.closed { background: #fee2e2; color: #b91c1c; }
.mod-status.always { background: #dbeafe; color: #1d4ed8; }
.mod-status.soon   { background: #fef9c3; color: #854d0e; }

/* ── BANNER STRIP (scrolling images) ─────────────────── */
.mod-banner {
  overflow: hidden; height: 56px; margin: 0 0 0;
  border-bottom: 1px solid rgba(0,0,0,.06);
  position: relative;
}
.mod-banner-track {
  display: flex; position: absolute; inset: 0; height: 100%;
  animation: bannerScroll 28s linear infinite;
}
.mod-banner-track img {
  height: 100%; min-width: 90px; object-fit: cover;
  margin-right: 4px; border-radius: 0;
  flex-shrink: 0;
}
@keyframes bannerScroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* ── ACCORDION ───────────────────────────────────────── */
.mod-accordion { padding: 10px 12px; display: flex; flex-direction: column; gap: 8px; }

.mod-acc-item {
  border: 1.5px solid #e8e0ca; border-radius: 12px;
  overflow: hidden; background: #fff;
  box-shadow: 0 2px 8px rgba(0,0,0,.05);
  transition: box-shadow .2s, transform .2s;
}
.mod-acc-item:hover { box-shadow: 0 4px 14px rgba(0,0,0,.09); transform: translateY(-1px); }
.mod-acc-item.open  { border-color: #d4af37; }

.mod-acc-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 14px; cursor: pointer; gap: 8px;
  background: linear-gradient(135deg, #faf9f5, #fff);
  transition: background .2s;
  user-select: none;
}
.mod-acc-head:hover { background: linear-gradient(135deg, #f5f2e9, #faf9f5); }

.mod-acc-left { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; }
.mod-acc-name {
  font-size: .88rem; font-weight: 700; color: #1a1a1a;
  line-height: 1.2; flex: 1;
}
.mod-acc-chev {
  font-size: .7rem; color: #b8860b;
  transition: transform .25s ease;
  flex-shrink: 0;
}
.mod-acc-item.open .mod-acc-chev { transform: rotate(90deg); }

.mod-acc-body {
  display: none; padding: 12px 14px 14px;
  border-top: 1px solid #f0e6c8;
  animation: accOpen .25s ease-out;
}
.mod-acc-item.open .mod-acc-body { display: block; }
@keyframes accOpen {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── DETAIL ROWS ─────────────────────────────────────── */
.mod-details { display: flex; flex-direction: column; gap: 8px; margin-bottom: 10px; }
.mod-detail {
  display: flex; gap: 10px; align-items: flex-start; font-size: .82rem;
}
.mod-detail-icon {
  width: 22px; min-width: 22px; text-align: center;
  color: #b8860b; font-size: .85rem; margin-top: 1px;
}
.mod-detail-label { font-weight: 700; color: #555; display: block; margin-bottom: 1px; font-size: .75rem; }
.mod-detail-val { color: #333; line-height: 1.4; }
.mod-detail-val a { color: #133a7c; text-decoration: none; }
.mod-detail-val a:hover { text-decoration: underline; }

/* ── PRICE GRID ──────────────────────────────────────── */
.mod-price-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
  gap: 6px; margin: 8px 0;
}
.mod-price-card {
  background: #f8f7f2; border-radius: 8px; padding: 8px 6px;
  text-align: center; border: 1px solid #e8e0ca;
}
.mod-price-val { font-size: 1rem; font-weight: 800; color: #133a7c; }
.mod-price-lbl { font-size: .65rem; color: #666; }

/* ── FEATURE BADGES ──────────────────────────────────── */
.mod-features { display: flex; flex-wrap: wrap; gap: 5px; margin: 8px 0; }
.mod-badge {
  padding: 3px 8px; border-radius: 999px; font-size: .65rem; font-weight: 700;
  background: #e3f2fd; color: #133a7c;
}

/* ── ACTION BUTTONS ──────────────────────────────────── */
.mod-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.mod-btn {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 9px 14px; border-radius: 999px; font-size: .78rem; font-weight: 700;
  text-decoration: none; color: #fff; border: none; cursor: pointer;
  transition: transform .18s, box-shadow .18s;
  white-space: nowrap;
}
.mod-btn:hover { transform: translateY(-2px); }
.mod-btn:active { transform: translateY(0); }

.mod-btn-gold  { background: linear-gradient(135deg, #d4af37, #b8860b); box-shadow: 0 4px 12px rgba(212,175,55,.28); }
.mod-btn-gold:hover  { box-shadow: 0 6px 16px rgba(212,175,55,.38); }
.mod-btn-map   { background: linear-gradient(135deg, #4285F4, #1a73e8); box-shadow: 0 4px 12px rgba(66,133,244,.28); }
.mod-btn-map:hover   { box-shadow: 0 6px 16px rgba(66,133,244,.38); }
.mod-btn-call  { background: linear-gradient(135deg, #34A853, #0f9d58); box-shadow: 0 4px 12px rgba(52,168,83,.28); }
.mod-btn-call:hover  { box-shadow: 0 6px 16px rgba(52,168,83,.38); }
.mod-btn-book  { background: linear-gradient(135deg, #ff6b35, #f7931e); box-shadow: 0 4px 12px rgba(255,107,53,.28); }
.mod-btn-book:hover  { box-shadow: 0 6px 16px rgba(255,107,53,.38); }
.mod-btn-red   { background: linear-gradient(135deg, #dc2626, #b91c1c); box-shadow: 0 4px 12px rgba(220,38,38,.3); }
.mod-btn-red:hover   { box-shadow: 0 6px 16px rgba(220,38,38,.4); }

/* ── DISTANCE BADGE ──────────────────────────────────── */
.mod-dist {
  font-size: .62rem; font-weight: 700; padding: 2px 8px; border-radius: 999px;
  background: #d4af37; color: #fff; white-space: nowrap; flex-shrink: 0;
}

/* ── INFO / TIPS BOX ─────────────────────────────────── */
.mod-tips {
  margin: 0 12px 10px; border-radius: 10px; overflow: hidden;
  border: 1.5px solid #e8e0ca;
}
.mod-tips-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 14px; cursor: pointer;
  background: #faf8f2; transition: background .2s;
  user-select: none;
}
.mod-tips-head:hover { background: #f5f0e0; }
.mod-tips-title { font-size: .85rem; font-weight: 700; color: #5b4b1a; display: flex; align-items: center; gap: 7px; }
.mod-tips-body { display: none; padding: 10px 14px 12px; border-top: 1px solid #f0e6c8; }
.mod-tips.open .mod-tips-body { display: block; animation: accOpen .25s ease-out; }
.mod-tips.open .mod-acc-chev { transform: rotate(90deg); }

.mod-tips-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
.mod-tips-list li {
  font-size: .8rem; line-height: 1.5; padding: 6px 8px;
  background: #fff; border-radius: 6px; border-left: 3px solid #d4af37;
}
.mod-tips-list li strong { color: #133a7c; }

/* ── BOTTOM NAV (inside module) ──────────────────────── */
.mod-footnav {
  display: flex; gap: 8px; flex-wrap: wrap; justify-content: center;
  padding: 12px 12px 14px; background: #faf9f5;
  border-top: 1px solid #f0e6c8;
}
.mod-footnav-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 14px; border-radius: 999px; font-size: .72rem; font-weight: 700;
  text-decoration: none; transition: transform .18s, box-shadow .18s;
  flex: 1; min-width: 110px; justify-content: center; text-align: center;
}
.mod-footnav-btn:hover { transform: translateY(-1px); }
.mod-footnav-btn--gold {
  background: linear-gradient(135deg, #d4af37, #b8860b); color: #fff;
  box-shadow: 0 3px 10px rgba(212,175,55,.25);
}
.mod-footnav-btn--dark {
  background: #0b0b0b; color: rgba(255,255,255,.8);
  border: 1.5px solid rgba(212,175,55,.2);
}
.mod-footnav-btn--dark:hover { border-color: #d4af37; color: #fff; }

/* ── TOOL / CALCULATOR ───────────────────────────────── */
.mod-tool {
  margin: 0 12px 10px; padding: 12px 14px;
  background: #f8f7f2; border-radius: 10px; border: 1.5px solid #e8e0ca;
}
.mod-tool-title { font-size: .82rem; font-weight: 700; color: #133a7c; margin-bottom: 10px; display: flex; align-items: center; gap: 6px; }
.mod-tool-row { display: grid; grid-template-columns: 1fr 1fr auto; gap: 8px; align-items: end; }
.mod-tool-field { display: flex; flex-direction: column; gap: 3px; }
.mod-tool-label { font-size: .7rem; font-weight: 600; color: #555; }
.mod-tool-input, .mod-tool-select {
  padding: 7px 10px; border: 1.5px solid #ddd; border-radius: 8px;
  font-size: .82rem; outline: none; transition: border-color .2s;
  background: #fff; width: 100%;
}
.mod-tool-input:focus, .mod-tool-select:focus { border-color: #d4af37; }
.mod-tool-calc {
  padding: 8px 12px; background: #d4af37; color: #fff;
  border: none; border-radius: 8px; font-weight: 700; font-size: .78rem;
  cursor: pointer; transition: background .18s; white-space: nowrap;
}
.mod-tool-calc:hover { background: #b8860b; }
.mod-tool-results { margin-top: 10px; display: flex; flex-direction: column; gap: 5px; }
.mod-tool-result {
  display: flex; justify-content: space-between; align-items: center;
  padding: 7px 10px; background: #fff; border-radius: 7px;
  border-left: 3px solid #d4af37; font-size: .8rem;
}
.mod-tool-result strong { color: #133a7c; }
.mod-disclaimer {
  font-size: .62rem; color: #888; margin-top: 6px; line-height: 1.4;
  padding: 5px 8px; background: rgba(212,175,55,.06);
  border-radius: 6px; border: 1px solid rgba(212,175,55,.15);
}

/* ── RESPONSIVE ──────────────────────────────────────── */
@media (max-width: 480px) {
  .mod-tool-row { grid-template-columns: 1fr; }
  .mod-actions  { flex-direction: column; }
  .mod-btn      { justify-content: center; }
  .mod-price-grid { grid-template-columns: repeat(2, 1fr); }
}
