
/* === BLOC CSS 1 === */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,500;0,700;1,500&family=Inter:wght@300;400;500;600&display=swap');

:root {
  --navy: #0f1f3d;
  --navy2: #1a2f55;
  --gold: #c9a227;
  --gold-light: #f0d687;
  --cream: #faf8f3;
  --white: #ffffff;
  --text: #2c3e50;
  --muted: #7f8c8d;
  --border: rgba(0,0,0,0.08);
  --section-bg: #f5f3ee;
  --red: #e53e3e;
  --green: #38a169;
}

* { box-sizing: border-box; margin: 0; padding: 0; -webkit-tap-highlight-color: transparent; }
html { scroll-behavior: smooth; }
body {
  font-family: 'Inter', -apple-system, sans-serif;
  background: var(--cream);
  color: var(--text);
  font-size: 15px;
  line-height: 1.62;
  max-width: 480px;
  margin: 0 auto;
  min-height: 100vh;
}

/* ====== NAV ====== */
.top-nav {
  position: sticky; top: 0; z-index: 100;
  background: var(--navy);
  padding: 0 16px; height: 56px;
  display: flex; align-items: center; justify-content: space-between;
  box-shadow: 0 1px 0 rgba(201,162,39,0.2), 0 4px 24px rgba(0,0,0,0.4);
}
.nav-logo {
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.nav-logo-name {
  font-family: 'Playfair Display', serif;
  font-size: 17px;
  font-weight: 700;
  color: white;
  letter-spacing: 0.3px;
  line-height: 1;
}
.nav-logo-name em {
  font-style: italic;
  color: var(--gold-light);
}
.nav-logo-sub {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: 'Inter', sans-serif;
  font-size: 8.5px;
  font-weight: 500;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: rgba(255,255,255,0.7);
  line-height: 1;
  margin-top: 5px;
  overflow: hidden;
}
.nav-logo-sub::before {
  content: '';
  display: block;
  width: 14px; height: 1px;
  background: var(--gold);
  opacity: 0.6;
  flex-shrink: 0;
}
.nav-logo-sub-text {
  overflow: hidden;
  white-space: nowrap;
  width: 0;
  animation: typewriter 1.4s steps(22, end) 0.8s forwards;
}
@keyframes typewriter {
  from { width: 0; }
  to   { width: 160px; }
}
.menu-btn {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  color: rgba(255,255,255,0.8);
  font-size: 16px;
  cursor: pointer;
  padding: 7px 10px;
  border-radius: 8px;
  letter-spacing: 2px;
  transition: background 0.2s;
}
.menu-btn:active { background: rgba(255,255,255,0.12); }

/* ====== DRAWER ====== */
.nav-drawer {
  position: fixed; top: 0; right: -100%; width: 80%; max-width: 320px; height: 100vh;
  background: var(--navy); z-index: 200;
  transition: right 0.3s cubic-bezier(0.4,0,0.2,1);
  padding: 24px 0; overflow-y: auto;
  box-shadow: -4px 0 40px rgba(0,0,0,0.4);
}
.nav-drawer.open { right: 0; }
.nav-overlay {
  position: fixed; inset: 0; background: rgba(0,0,0,0.5);
  z-index: 150; opacity: 0; pointer-events: none; transition: opacity 0.3s;
}
.nav-overlay.open { opacity: 1; pointer-events: all; }
.drawer-header { padding: 0 20px 20px; border-bottom: 1px solid rgba(255,255,255,0.1); margin-bottom: 8px; }
.drawer-header h3 { font-family: 'Playfair Display', serif; color: rgba(255,255,255,0.92); font-size: 18px; margin-bottom: 4px; font-style: italic; }
.drawer-header p { color: rgba(255,255,255,0.4); font-size: 12px; }
.close-btn {
  position: absolute; top: 16px; right: 16px;
  background: rgba(255,255,255,0.1); border: none; color: white;
  width: 32px; height: 32px; border-radius: 50%; cursor: pointer; font-size: 18px;
  display: flex; align-items: center; justify-content: center;
}
.nav-item {
  display: flex; align-items: center; gap: 12px;
  padding: 13px 20px; color: rgba(255,255,255,0.75); text-decoration: none;
  font-size: 14px; font-weight: 500; transition: background 0.15s, color 0.15s;
}
.nav-item:hover, .nav-item:active { background: rgba(255,255,255,0.07); color: var(--gold-light); }
.nav-emoji { font-size: 18px; width: 28px; text-align: center; }

/* ====== HERO ====== */
.hero {
  background: linear-gradient(160deg, rgba(8,15,30,0.55) 0%, rgba(8,15,30,0.2) 45%, rgba(8,15,30,0.88) 100%), url('../img/hero-bg.jpg') center/cover no-repeat;
  padding: 68px 28px 72px;
  position: relative; overflow: hidden;
  text-align: center;
}
.hero::before {
  content: '';
  position: absolute; inset: 0;
  background: rgba(8,15,30,0.62);
  pointer-events: none;
}
.hero::after {
  content: '';
  position: absolute; bottom: 0; left: 0; right: 0; height: 44px;
  background: linear-gradient(to bottom right, transparent 49%, var(--cream) 50%);
  z-index: 1;
}
.hero > * { position: relative; z-index: 2; }
.hero-stars {
  display: flex; gap: 8px; margin-bottom: 22px;
  justify-content: center;
}
.hero-stars span { color: rgba(201,162,39,0.5); font-size: 10px; }
.hero h1 {
  font-family: 'Playfair Display', serif;
  font-size: 46px; font-weight: 700; color: white;
  line-height: 1.05; margin-bottom: 16px;
  text-shadow: 0 2px 20px rgba(0,0,0,0.4);
}
.hero h1 em {
  font-style: italic;
  display: block;
  color: #ddd6cc;
  letter-spacing: -0.5px;
  animation: breathe 6s ease-in-out infinite;
}

.hero-guest{display:block;font-family:'Playfair Display',Georgia,serif;font-style:italic;color:#c9a227;letter-spacing:-.5px;animation:breathe 6s ease-in-out infinite;}
@keyframes breathe {
  0%, 100% { opacity: 0.75; }
  50%       { opacity: 1; }
}
.hero-sub {
  color: rgba(255,255,255,0.75);
  font-size: 9.5px; letter-spacing: 4.5px;
  text-transform: uppercase; font-weight: 500;
  margin-bottom: 32px;
}
.hero-divider {
  width: 36px; height: 1.5px;
  background: linear-gradient(90deg, transparent, rgba(201,162,39,0.8), transparent);
  margin: 0 auto 28px;
  opacity: 0;
  animation: fadeUp 0.5s ease forwards 0.9s;
}
.hero-contact {
  display: flex; flex-direction: column; gap: 10px;
  align-items: center;
}
.hero-contact a {
  display: inline-flex; align-items: center; gap: 8px;
  color: rgba(255,255,255,0.82); font-size: 12.5px; text-decoration: none;
  transition: color 0.2s, opacity 0.2s;
  letter-spacing: 0.3px;
}
.hero-contact a:active { opacity: 0.7; }

/* ====== QUICK GRID ====== */
.quick-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px;
  padding: 16px 12px; background: white; border-bottom: 1px solid var(--border);
}
.quick-item {
  display: flex; flex-direction: column; align-items: center; gap: 5px;
  padding: 11px 4px; border-radius: 14px; text-decoration: none; color: var(--navy);
  font-size: 10.5px; font-weight: 500; text-align: center; background: var(--section-bg);
  transition: transform 0.15s;
  transition: transform 0.12s, background 0.12s;
}
.quick-item:active { transform: scale(0.94); background: rgba(0,0,0,0.06) !important; }
.quick-item:active { transform: scale(0.94); }
.qi-emoji { font-size: 22px; line-height: 1; }

/* ====== WIFI CARD ====== */
.wifi-card {
  background: linear-gradient(135deg, #0f2d4a, #1a4a6b);
  margin: 0; padding: 20px;
  border-radius: 16px;
}
.wifi-card h3 { font-family: 'Playfair Display', serif; color: var(--gold-light); font-size: 18px; margin-bottom: 4px; }
.wifi-card p { color: rgba(255,255,255,0.65); font-size: 13px; margin-bottom: 16px; }
.wifi-boxes {
  display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 16px;
}
.wifi-box {
  background: rgba(255,255,255,0.1); border-radius: 12px; padding: 14px 16px;
  text-align: center;
}
.wifi-box-label { font-size: 9px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--gold); margin-bottom: 6px; }
.wifi-box-val { font-size: 17px; font-weight: 600; color: white; font-family: 'Playfair Display', serif; font-style: italic; word-break: break-all; }
.wifi-qr-row { display: flex; gap: 12px; align-items: center; }
.wifi-qr-wrap {
  background: white; border-radius: 12px; padding: 10px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.wifi-qr-wrap canvas, .wifi-qr-wrap img { display: block !important; }
.wifi-qr-info { color: rgba(255,255,255,0.7); font-size: 12.5px; line-height: 1.6; }
.wifi-qr-info strong { color: white; display: block; margin-bottom: 4px; font-size: 13px; }
.wifi-free-badge {
  display: inline-block; background: var(--gold); color: var(--navy);
  font-size: 11px; font-weight: 700; padding: 3px 10px; border-radius: 20px;
  margin-bottom: 12px;
}
.wifi-price-row { display: flex; justify-content: space-between; padding: 8px 0; border-top: 1px solid rgba(255,255,255,0.1); }
.wifi-price-row span { font-size: 13px; color: rgba(255,255,255,0.7); }
.wifi-price-row strong { font-size: 13px; color: white; }

/* ====== SECTION ====== */
.section { margin: 0 0 3px; }
.section-head {
  display: flex; align-items: center; gap: 12px;
  padding: 16px 20px 14px; background: white;
  border-top: 1px solid var(--border);
  cursor: pointer; user-select: none; -webkit-user-select: none;
  transition: background 0.18s;
}
.section-head:active { background: #f4f2ed; }
.section-head.open { background: #f5f3ee; border-left: 3px solid rgba(201,162,39,0.4); }
.section-head:not(.open):hover { background: #faf8f3; }
.section-head:first-child { border-top: none; }
.section-head h2 { flex: 1; font-family: 'Playfair Display', serif; font-size: 17.5px; font-weight: 700; color: var(--navy); }
.s-emoji { font-size: 20px; opacity: 0.85; }
.chevron { color: rgba(0,0,0,0.2); font-size: 16px; transition: transform 0.25s, color 0.2s; }
.section-head.open .chevron { transform: rotate(180deg); color: var(--gold); }
.section-body { background: white; display: none; padding-bottom: 12px; }
.section-body.open { display: block; }

/* ====== RULE CARD ====== */
.rule-card { display: flex; gap: 14px; padding: 16px 20px; border-bottom: 1px solid var(--border); align-items: flex-start; transition: background 0.15s; }
.rule-card:last-child { border-bottom: none; }
.rule-card:active { background: #f9f8f4; }
.rule-emoji { font-size: 28px; flex-shrink: 0; line-height: 1.2; }
.rule-card h3 { font-size: 14px; font-weight: 600; color: var(--navy); margin-bottom: 4px; }
.rule-card p, .rule-card li { font-size: 13.5px; color: var(--text); opacity: 0.85; }
.rule-card ul { padding-left: 16px; margin-top: 4px; }
.rule-card li { margin-bottom: 3px; }

/* ====== ALERT ====== */
.alert { margin: 0 16px 14px; padding: 14px 16px; border-radius: 12px; font-size: 13px; font-weight: 500; box-shadow: 0 1px 6px rgba(0,0,0,0.06); }
.alert-navy { background: var(--navy); color: white; }
.alert-gold { background: #fef9e7; border: 1px solid var(--gold); color: #7d5a00; }
.alert-red { background: #fff5f5; border: 1px solid #fc8181; color: #c53030; }
.alert-green { background: #f0fff4; border: 1px solid #68d391; color: #276749; }
.alert strong { display: block; margin-bottom: 4px; font-size: 14px; }

/* ====== PRICE TABLE ====== */
.price-table { margin: 0 16px 14px; border-radius: 12px; overflow: hidden; border: 1px solid var(--border); }
.price-row { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; border-bottom: 1px solid var(--border); }
.price-row:last-child { border-bottom: none; }
.price-row:nth-child(even) { background: var(--section-bg); }
.price-label { font-size: 13.5px; color: var(--text); }
.price-val { font-size: 15px; font-weight: 700; color: var(--navy); font-family: 'Playfair Display', serif; }

/* ====== CONTACT ====== */
.contact-group-label { padding: 14px 20px 4px; font-size: 11px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--gold); }
.contact-item { display: flex; align-items: center; gap: 14px; padding: 14px 20px; border-bottom: 1px solid var(--border); text-decoration: none; color: var(--text); transition: background 0.15s; }
.contact-item:last-of-type { border-bottom: none; }
.contact-item:active { background: var(--section-bg); }
.contact-emoji { font-size: 22px; flex-shrink: 0; }
.contact-info { flex: 1; }
.contact-info strong { display: block; font-size: 13.5px; color: var(--navy); font-weight: 600; }
.contact-info span { font-size: 12px; color: var(--muted); }
.call-badge { background: var(--navy); color: white; font-size: 11px; font-weight: 600; padding: 4px 10px; border-radius: 20px; flex-shrink: 0; }
.map-badge { background: #1a7f5a; }

/* ====== URGENCY ====== */
.urgency-strip { background: var(--navy); padding: 16px 16px; }
.urgency-strip h3 { color: var(--gold-light); font-size: 12px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; margin-bottom: 10px; }
.urgency-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.urgency-btn { display: flex; flex-direction: column; align-items: center; gap: 3px; background: rgba(255,255,255,0.1); border-radius: 12px; padding: 12px 8px; text-decoration: none; color: white; transition: background 0.15s; }
.urgency-btn:active { background: rgba(255,255,255,0.2); }
.u-num { font-size: 26px; font-weight: 700; font-family: 'Playfair Display', serif; color: var(--gold-light); }
.u-label { font-size: 11px; opacity: 0.7; text-align: center; }
.urgency-reception { display: flex; align-items: center; gap: 10px; margin-top: 10px; background: rgba(201,162,39,0.2); padding: 12px 14px; border-radius: 10px; color: var(--gold-light); text-decoration: none; font-weight: 600; font-size: 14px; }

/* ====== AMENITY ====== */
.amenity-card { display: flex; gap: 14px; padding: 14px 20px; border-bottom: 1px solid var(--border); align-items: flex-start; transition: background 0.15s; }
.amenity-card:last-child { border-bottom: none; }
.amenity-card:active { background: #f9f8f4; }
.amenity-emoji { font-size: 24px; flex-shrink: 0; line-height: 1.3; }
.amenity-card h3 { font-size: 14px; font-weight: 600; color: var(--navy); margin-bottom: 3px; }
.amenity-card p { font-size: 13px; color: var(--muted); }
.hours-badge { display: inline-flex; align-items: center; gap: 4px; background: var(--section-bg); border-radius: 20px; padding: 2px 10px; font-size: 12px; font-weight: 600; color: var(--navy); margin-top: 6px; }

/* ====== CHECKLIST ====== */
.checklist-item { display: flex; align-items: flex-start; gap: 12px; padding: 12px 20px; border-bottom: 1px solid var(--border); }
.checklist-item:last-child { border-bottom: none; }
.check-emoji { font-size: 20px; flex-shrink: 0; line-height: 1.4; }
.checklist-item p { font-size: 13.5px; color: var(--text); }
.checklist-item p strong { color: var(--navy); font-weight: 600; }

/* ====== ENVIRO ====== */
.enviro-tip { display: flex; gap: 12px; padding: 14px 20px; border-bottom: 1px solid var(--border); align-items: flex-start; }
.enviro-tip:last-child { border-bottom: none; }
.enviro-emoji { font-size: 22px; flex-shrink: 0; }
.enviro-tip p { font-size: 13.5px; color: var(--text); }
.enviro-tip p strong { color: var(--navy); display: block; margin-bottom: 3px; font-size: 14px; }

/* ====== RESTO ====== */
.resto-group { padding: 12px 20px 0; }
.resto-group-label { font-size: 11px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--gold); margin-bottom: 8px; }
.resto-item { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--border); }
.resto-item:last-child { border-bottom: none; }
.resto-name { font-size: 14px; font-weight: 500; color: var(--navy); }
.resto-info { font-size: 12px; color: var(--muted); margin-top:1px; }
.resto-tel { display:none; }
.resto-actions { display:flex; gap:6px; flex-shrink:0; }
.resto-btn { display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:10px; text-decoration:none; font-size:16px; }
.resto-btn-tel { background:rgba(15,31,61,0.08); }
.resto-btn-map { background:rgba(15,31,61,0.07); }
.resto-item { display:flex; justify-content:space-between; align-items:center; padding:11px 0; border-bottom:1px solid var(--border); gap:8px; }
.resto-item:last-child { border-bottom:none; }
.coup-de-coeur .resto-name, .coup-coeur-mega .resto-name {
  color: var(--gold);
  font-family:'Playfair Display',serif;
  font-style:italic;
  animation: breathe 5s ease-in-out infinite;
}
.heart-anim {
  display:inline-block;
  font-size:11px;
  animation: heartbeat 1.4s ease-in-out infinite;
  font-style:normal;
}
@keyframes heartbeat {
  0%, 100% { opacity:0.5; transform:scale(1); }
  50% { opacity:1; transform:scale(1.3); }
}
.resto-note { font-size:11px; color:var(--muted); font-style:italic; margin-top:3px; }

/* ====== ACTIVITIES ====== */
.activity-card { display: flex; gap: 14px; padding: 14px 20px; border-bottom: 1px solid var(--border); align-items: flex-start; text-decoration: none; color: inherit; transition: background 0.15s; }
.activity-card:last-child { border-bottom: none; }
.activity-card:active { background: var(--section-bg); }
.activity-emoji { font-size: 24px; flex-shrink: 0; }
.activity-card h3 { font-size: 14px; font-weight: 600; color: var(--navy); margin-bottom: 2px; }
.activity-card p { font-size: 12.5px; color: var(--muted); }

/* ====== EXPLORE ====== */


/* ====== MARCHÉ ====== */
.marche-grid { display: flex; flex-direction: column; gap: 0; padding: 0 16px 16px; }
.marche-row { display: grid; grid-template-columns: 72px 1fr auto; gap: 10px; align-items: center; padding: 12px 14px; border-radius: 10px; margin-bottom: 6px; background: white; box-shadow: 0 1px 4px rgba(0,0,0,0.06); border-left: 3px solid #c9a227; }
.marche-row.nuit { border-left-color: #3b4fa0; background: linear-gradient(135deg, #f0f2ff 0%, #fff 100%); }
.marche-day-pill { font-size: 13px; font-weight: 700; color: #0f1f3d; white-space: nowrap; }
.marche-row.nuit .marche-day-pill { color: #3b4fa0; }
.marche-lieu { font-size: 13.5px; font-weight: 600; color: #1a1a2e; }
.marche-lieu small { display: flex; align-items: center; gap: 4px; font-size: 11.5px; color: var(--muted); font-weight: 400; margin-top: 2px; }
.marche-hours { font-size: 12px; font-weight: 600; color: #555; text-align: right; white-space: nowrap; }
.marche-row.nuit .marche-hours { color: #3b4fa0; }
.marche-badge-nuit { background: #3b4fa0; color: white; font-size: 10px; padding: 1px 6px; border-radius: 10px; font-weight: 600; }

/* ====== SECTION INTRO ====== */
.section-intro { padding: 10px 20px 4px; font-size: 13px; color: var(--muted); font-style: italic; }

/* ====== CORSE INFO ====== */
.corse-box {
  margin: 14px 16px; padding: 18px;
  background: linear-gradient(135deg, #0f2d1a, #1a4a2d);
  border-radius: 14px; color: white;
}
.corse-box h3 { font-family: 'Playfair Display', serif; font-size: 16px; color: var(--gold-light); margin-bottom: 8px; }
.corse-box p { font-size: 13.5px; color: rgba(255,255,255,0.75); line-height: 1.6; }

/* ====== ANIMATIONS ====== */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes slideDown {
  from { opacity: 0; transform: translateY(-8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes staggerIn {
  from { opacity: 0; transform: translateY(12px) scale(0.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* Hero — animations d'entrée */
@keyframes heroStars {
  from { opacity: 0; transform: scale(0.7); }
  to   { opacity: 1; transform: scale(1); }
}
@keyframes heroTitle {
  from { opacity: 0; transform: translateY(20px); filter: blur(4px); }
  to   { opacity: 1; transform: translateY(0); filter: blur(0); }
}
@keyframes heroSub {
  from { opacity: 0; letter-spacing: 8px; }
  to   { opacity: 1; letter-spacing: 4px; }
}
@keyframes heroDivider {
  from { opacity: 0; width: 0; }
  to   { opacity: 1; width: 24px; }
}
@keyframes heroContact {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes shimmer {
  0%   { background-position: -200% center; }
  100% { background-position: 200% center; }
}
.hero-stars   { animation: heroStars 0.7s cubic-bezier(0.34,1.56,0.64,1) 0.2s both; }
.hero h1      { animation: heroTitle 0.8s ease 0.5s both; }
.hero h1 em   {
  animation: heroTitle 0.8s ease 0.5s both;
}
.hero-sub     { animation: heroSub 0.9s ease 0.85s both; }
.hero-divider { animation: heroDivider 0.6s ease 1.1s both; }
.hero-contact { animation: heroContact 0.7s ease 1.3s both; }

/* Quick grid */
.quick-item:nth-child(1) { animation: staggerIn 0.5s ease forwards 0.45s; opacity: 0; }
.quick-item:nth-child(2) { animation: staggerIn 0.5s ease forwards 0.52s; opacity: 0; }
.quick-item:nth-child(3) { animation: staggerIn 0.5s ease forwards 0.59s; opacity: 0; }
.quick-item:nth-child(4) { animation: staggerIn 0.5s ease forwards 0.66s; opacity: 0; }

/* Section body open — slide premium */
.section-body.open {
  animation: sectionOpen 0.32s cubic-bezier(0.22,1,0.36,1) forwards;
}

@keyframes curtain {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Chevron élastique */
.chevron { color: rgba(0,0,0,0.2); font-size: 16px; transition: transform 0.45s cubic-bezier(0.34,1.56,0.64,1), color 0.2s; }
.section-head.open .chevron { transform: rotate(180deg); color: var(--gold); }

/* Tap feedback numéros tel — ripple */
.contact-item, .activity-card, .urgency-btn, .resto-tel {
  position: relative; overflow: hidden;
}
.contact-item::after, .activity-card::after {
  content: '';
  position: absolute; inset: 0;
  background: rgba(15,31,61,0.06);
  opacity: 0; border-radius: inherit;
  transition: opacity 0.3s;
}
.contact-item:active::after, .activity-card:active::after { opacity: 1; transition: opacity 0s; }

/* Cards scroll reveal — Intersection Observer */
.card-reveal {
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.5s ease, transform 0.5s ease;
}
.card-reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Back to top — bounce */
@keyframes bounceIn {
  0%   { opacity: 0; transform: scale(0.6); }
  70%  { transform: scale(1.15); }
  100% { opacity: 1; transform: scale(1); }
}
.back-top.visible { animation: bounceIn 0.4s cubic-bezier(0.34,1.56,0.64,1) forwards; }

/* ====== ANIMATION SAFETY ====== */
/* Si prefers-reduced-motion, tout visible immédiatement */
@media (prefers-reduced-motion: reduce) {
  .hero-stars, .hero h1, .hero-sub, .hero-contact,
  .quick-item, .wifi-card, .section {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}


/* ====== PHOTO BANNERS ====== */
.photo-banner {
  width: 100%;
  height: 180px;
  object-fit: cover;
  display: block;
}
.photo-banner-wrap {
  overflow: hidden;
  margin-bottom: 0;
}
.photo-caption {
  font-size: 11px;
  color: var(--muted);
  padding: 6px 16px;
  text-align: right;
  font-style: italic;
  background: var(--section-bg);
}
/* ====== BACK TO TOP ====== */
.back-top {
  position: fixed;
  bottom: 24px; right: 20px;
  width: 44px; height: 44px;
  background: var(--navy);
  color: white;
  border: none; border-radius: 50%;
  font-size: 20px;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(0,0,0,0.25);
  display: flex; align-items: center; justify-content: center;
  opacity: 0; pointer-events: none;
  transition: opacity 0.3s, transform 0.2s;
  z-index: 90;
}
.back-top.visible { opacity: 1; pointer-events: all; }
.back-top:active { transform: scale(0.92); }

/* ====== PLAN ====== */
.plan-wrap {
  margin: 14px 16px;
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid var(--border);
  background: var(--section-bg);
}
.plan-wrap img {
  width: 100%;
  display: block;
  cursor: zoom-in;
  transition: transform 0.3s;
}
.plan-wrap.zoomed img {
  cursor: zoom-out;
  transform: scale(1.8);
  transform-origin: center center;
}
.plan-hint {
  padding: 10px 14px;
  font-size: 12px;
  color: var(--muted);
  text-align: center;
  border-top: 1px solid var(--border);
}

/* ====== FOOTER ====== */
.site-footer { background: var(--navy); color: rgba(255,255,255,0.45); text-align: center; padding: 32px 20px; font-size: 12px; line-height: 2; }
.site-footer a { color: var(--gold-light); text-decoration: none; }
.site-footer strong { color: rgba(255,255,255,0.8); }
.footer-logo { font-family: 'Playfair Display', serif; font-size: 22px; color: white; margin-bottom: 4px; }

.heart-pulse {
  display:inline-block;
  font-size:11px;
  font-style:normal;
  filter: sepia(1) saturate(8) hue-rotate(300deg) brightness(1.1);
  animation: heartbeat 1.6s ease-in-out infinite;
}
@keyframes heartbeat {
  0%,100% { opacity:0.5; transform:scale(0.85); }
  50% { opacity:1; transform:scale(1.3); }
}

/* ====== EXPLORER CARDS ====== */
.explore-group-label { font-size:10px; font-weight:700; letter-spacing:2px; text-transform:uppercase; color:var(--gold); padding:16px 20px 8px; }
.explore-card { background:white; margin:0 0 2px; overflow:hidden; }
.explore-img { width:100%; height:180px; background-size:cover; background-position:center; }
.explore-body { padding:14px 20px 16px; }
.explore-header { display:flex; align-items:flex-start; gap:10px; margin-bottom:8px; }
.explore-emoji { font-size:22px; flex-shrink:0; margin-top:1px; }
.explore-title { font-family:'Playfair Display',serif; font-size:16px; font-weight:700; color:var(--navy); margin-bottom:2px; }
.explore-dist { font-size:11px; color:var(--muted); letter-spacing:0.5px; }
.explore-tag { margin-left:auto; flex-shrink:0; font-size:10px; font-weight:700; letter-spacing:1px; text-transform:uppercase; color:var(--gold); background:rgba(201,162,39,0.1); padding:3px 8px; border-radius:20px; white-space:nowrap; }
.explore-desc { font-size:13px; color:var(--text); opacity:0.85; line-height:1.6; }


/* ====== INVENTAIRE ====== */
.inv-step { display:none; }
.inv-step.active { display:block; }
.inv-progress { display:flex; gap:6px; margin:12px 16px 0; }
.inv-prog-dot { height:3px; border-radius:2px; flex:1; background:rgba(15,31,61,0.1); transition:background 0.3s; }
.inv-prog-dot.active { background:var(--gold); }
.inv-prog-dot.done { background:rgba(201,162,39,0.4); }
.inv-field { padding:12px 16px; border-bottom:1px solid rgba(15,31,61,0.07); }
.inv-field label { display:block; font-size:10px; font-weight:700; letter-spacing:1.5px; text-transform:uppercase; color:var(--muted,#8a8fa8); margin-bottom:5px; }
.inv-field input { width:100%; border:none; outline:none; font-size:15px; font-weight:500; color:var(--navy); font-family:inherit; background:transparent; }
.inv-field input::placeholder { color:#bbb; font-weight:400; }
.inv-field-static { font-size:15px; font-weight:600; color:var(--navy); display:flex; align-items:center; gap:8px; }
.inv-field-static-ok { width:18px;height:18px;background:rgba(34,197,94,0.15);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:9px;color:#16a34a;flex-shrink:0; }
.inv-cat-title { background:var(--navy); color:rgba(255,255,255,0.85); padding:9px 16px; font-size:10px; font-weight:700; letter-spacing:2px; text-transform:uppercase; display:flex; align-items:center; gap:7px; }
.inv-cat-title span { font-size:14px; }
.inv-item-row { display:flex; align-items:center; padding:11px 16px; border-bottom:1px solid rgba(15,31,61,0.06); gap:10px; transition:background 0.15s; }
.inv-item-row.flagged { background:rgba(239,68,68,0.04); }
.inv-checkbox { width:20px;height:20px;border:2px solid rgba(15,31,61,0.15);border-radius:5px;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all 0.15s;background:white; }
.inv-checkbox.checked { background:var(--danger,#ef4444);border-color:var(--danger,#ef4444);color:white;font-size:10px;font-weight:700; }
.inv-item-info { flex:1; }
.inv-item-name { font-size:13.5px;font-weight:500;color:var(--navy); }
.inv-item-price { font-size:11px;color:var(--muted,#8a8fa8);margin-top:1px; }
.inv-item-qty { font-size:11px;font-weight:600;color:var(--muted,#8a8fa8);background:var(--cream,#faf8f3);padding:2px 7px;border-radius:5px;flex-shrink:0; }
.inv-remark-row { display:none;padding:6px 16px 10px 46px;background:rgba(239,68,68,0.03);border-bottom:1px solid rgba(15,31,61,0.06); }
.inv-remark-row.show { display:block; }
.inv-remark-row input { width:100%;border:1px solid rgba(239,68,68,0.25);border-radius:7px;padding:7px 10px;font-family:inherit;font-size:12.5px;color:var(--navy);outline:none;background:white; }
.inv-flag-banner { display:none;margin:8px 16px;background:rgba(239,68,68,0.08);border:1px solid rgba(239,68,68,0.2);border-radius:10px;padding:8px 12px;font-size:12px;color:#b91c1c;font-weight:600; }
.inv-flag-banner.show { display:block; }
.edl-grid { padding:4px 0; }
.edl-room-row { padding:13px 16px;border-bottom:1px solid rgba(15,31,61,0.07); }
.edl-room-label { font-size:13.5px;font-weight:600;color:var(--navy);margin-bottom:9px;display:flex;align-items:center;gap:7px; }
.edl-btns { display:flex;gap:6px; }
.edl-btn { flex:1;border:2px solid rgba(15,31,61,0.1);border-radius:10px;padding:9px 2px;cursor:pointer;background:white;text-align:center;font-size:19px;display:flex;flex-direction:column;align-items:center;gap:2px;transition:all 0.15s; }
.edl-btn .edl-lbl { font-size:8px;font-weight:700;letter-spacing:0.5px;color:var(--muted,#8a8fa8);text-transform:uppercase; }
.edl-btn.sel-great { border-color:#22c55e;background:rgba(34,197,94,0.07); }
.edl-btn.sel-good { border-color:#84cc16;background:rgba(132,204,22,0.07); }
.edl-btn.sel-ok { border-color:#f59e0b;background:rgba(245,158,11,0.07); }
.edl-btn.sel-bad { border-color:#ef4444;background:rgba(239,68,68,0.07); }
.edl-remark { display:none;margin-top:8px; }
.edl-remark.show { display:block; }
.edl-remark textarea { width:100%;border:1px solid rgba(245,158,11,0.35);border-radius:8px;padding:8px 10px;font-family:inherit;font-size:12.5px;color:var(--navy);outline:none;resize:none;height:60px; }
.sig-area { padding:14px 16px; }
.sig-lbl { font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted,#8a8fa8);margin-bottom:8px; }
.sig-wrap { border:2px dashed rgba(15,31,61,0.15);border-radius:12px;overflow:hidden;background:white;position:relative; }
.sig-wrap.has-sig { border-style:solid;border-color:var(--navy); }
.sig-canvas { display:block;width:100%;height:140px;touch-action:none;cursor:crosshair; }
.sig-hint { position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;pointer-events:none;transition:opacity 0.2s; }
.sig-hint.hide { opacity:0; }
.sig-hint-icon { font-size:24px;opacity:0.25; }
.sig-hint-txt { font-size:11px;color:var(--muted,#8a8fa8); }
.sig-clear-btn { text-align:right;font-size:11px;color:var(--muted,#8a8fa8);cursor:pointer;text-decoration:underline;margin-top:5px;display:none; }
.sig-clear-btn.show { display:block; }
.inv-legal { margin:10px 16px 0;padding:10px 12px;background:rgba(15,31,61,0.04);border-radius:8px;font-size:11px;color:var(--muted,#8a8fa8);line-height:1.6; }
.inv-legal strong { color:var(--navy); }
.inv-nav { padding:14px 16px;display:flex;gap:8px; }
.inv-btn-back { width:46px;height:48px;border:2px solid rgba(15,31,61,0.1);border-radius:12px;background:white;cursor:pointer;font-size:16px;color:var(--navy);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all 0.15s; }
.inv-btn-back:active { transform:scale(0.95); }
.inv-btn-next { flex:1;height:48px;background:var(--navy);color:white;border:none;border-radius:12px;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;transition:all 0.15s;letter-spacing:0.2px; }
.inv-btn-next.gold { background:linear-gradient(135deg,var(--gold) 0%,#e8c44a 100%);color:var(--navy); }
.inv-btn-next:active { transform:scale(0.98); }
.inv-success { display:none;padding:32px 20px;text-align:center; }
.inv-success.show { display:block;animation:fadeUp 0.4s ease; }
.inv-success-icon { width:70px;height:70px;background:linear-gradient(135deg,#22c55e,#16a34a);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:30px;margin:0 auto 18px;box-shadow:0 6px 24px rgba(34,197,94,0.3); }
.inv-success-title { font-family:'Playfair Display',serif;font-size:22px;font-weight:700;color:var(--navy);margin-bottom:8px; }
.inv-success-sub { font-size:13px;color:var(--muted,#8a8fa8);line-height:1.6;margin-bottom:20px; }
.inv-success-card { background:var(--cream,#faf8f3);border-radius:12px;padding:14px;text-align:left;margin-bottom:12px; }
.inv-success-row { display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid rgba(15,31,61,0.07);font-size:12.5px; }
.inv-success-row:last-child { border:none; }
.inv-success-row span:first-child { color:var(--muted,#8a8fa8); }
.inv-success-row span:last-child { font-weight:600;color:var(--navy); }


/* ====== CARTE LOGEMENT DYNAMIQUE ====== */
.lodge-card {
  margin: 0 14px 12px;
  background: white;
  border-radius: 16px;
  box-shadow: 0 2px 12px rgba(0,0,0,0.08);
  overflow: hidden;
  border: 1px solid var(--border);
}
.lodge-card-header {
  background: linear-gradient(135deg, #0f1f3d 0%, #1a3460 100%);
  padding: 18px 20px 14px;
  position: relative;
}
.lodge-card-eyebrow {
  font-size: 9px;
  letter-spacing: 3.5px;
  text-transform: uppercase;
  color: rgba(201,162,39,0.95);
  font-weight: 700;
  margin-bottom: 6px;
}
.lodge-card-title {
  font-family: 'Playfair Display', serif;
  font-size: 23px;
  font-weight: 700;
  color: white;
  line-height: 1.15;
  margin-bottom: 5px;
}
.lodge-card-num {
  font-size: 12px;
  color: rgba(255,255,255,0.5);
  letter-spacing: 1px;
}
.lodge-card-badge-pmr {
  display: inline-block;
  margin-bottom: 10px;
  background: rgba(201,162,39,0.15);
  border: 1px solid rgba(201,162,39,0.5);
  color: #9a7810;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 2px;
  padding: 4px 10px;
  border-radius: 20px;
  text-transform: uppercase;
}
.lodge-card-desc {
  padding: 14px 20px 10px;
  font-size: 13.5px;
  color: var(--text);
  line-height: 1.55;
  border-bottom: 1px solid var(--border);
}
.lodge-card-specs {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  padding: 12px 8px;
}
.lodge-spec-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  padding: 10px 4px;
  border-right: 1px solid var(--border);
}
.lodge-spec-item:last-child { border-right: none; }
.lodge-spec-icon { font-size: 22px; line-height: 1; }
.lodge-spec-value {
  font-size: 20px;
  font-weight: 800;
  color: var(--navy);
  line-height: 1;
  letter-spacing: -0.5px;
}
.lodge-spec-label {
  font-size: 9px;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.6px;
  text-align: center;
  line-height: 1.2;
  font-weight: 500;
}
.lodge-card-pmr-note {
  margin: 0 16px 16px;
  padding: 12px 14px;
  background: rgba(201,162,39,0.07);
  border-left: 3px solid rgba(201,162,39,0.7);
  border-radius: 0 10px 10px 0;
  font-size: 12.5px;
  color: var(--text);
  line-height: 1.55;
}
/* Cache la carte si pas de lodge param et logement par défaut */
.lodge-card { display: block; }


/* ====== UPGRADES PREMIUM ====== */

/* Scroll reveal — sections */
.section-reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.45s ease, transform 0.45s ease;
}
.section-reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Rule + amenity h3 — hiérarchie renforcée */
.rule-card h3, .amenity-card h3 {
  font-size: 15px;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 5px;
  letter-spacing: -0.1px;
}

/* Texte corps cartes — légèrement plus lisible */
.rule-card p, .amenity-card p {
  font-size: 13.5px;
  line-height: 1.58;
  color: #3d4f60;
}

/* Section intro — plus subtil */
.section-intro {
  font-size: 13.5px;
  color: #5a6a7a;
  padding: 12px 20px 8px;
  line-height: 1.55;
}

/* Hours badge — plus premium */
.hours-badge {
  display: inline-block;
  background: rgba(201,162,39,0.1);
  border: 1px solid rgba(201,162,39,0.3);
  color: #8a6e1a;
  font-size: 11px;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 20px;
  letter-spacing: 0.3px;
}

/* Séparateur section — doré subtil */
.section:not(:last-child)::after {
  content: '';
  display: block;
  height: 1px;
  background: linear-gradient(90deg, transparent 10%, rgba(201,162,39,0.15) 50%, transparent 90%);
  margin: 0 24px;
}

/* Quick grid — fond légèrement plus chaud */
.quick-grid {
  background: #fdfcf9;
}

/* Chevron section — transition */
.chevron {
  transition: transform 0.28s cubic-bezier(0.4,0,0.2,1);
  color: var(--muted);
  font-size: 18px;
  line-height: 1;
}
.section-head.open .chevron {
  transform: rotate(180deg);
  color: var(--gold);
}

/* Nav top — border-bottom subtile */
.top-nav {
  border-bottom: 1px solid rgba(255,255,255,0.06);
}

/* Links téléphone — tap area */
a[href^="tel"] {
  -webkit-tap-highlight-color: rgba(201,162,39,0.15);
}

/* Urgency buttons — feedback */
.urgency-btn {
  transition: transform 0.1s, box-shadow 0.1s;
}
.urgency-btn:active {
  transform: scale(0.95);
}

/* Price table rows */
.price-row {
  transition: background 0.12s;
}
.price-row:active {
  background: rgba(201,162,39,0.06);
}

/* CTA BAR bottom — espace pour CTA flottante */
body {
  padding-bottom: 90px;
}

/* ====== CTA FIXED BAR ====== */
.cta-bar {
  position: fixed;
  bottom: 12px; left: 50%;
  transform: translateX(-50%);
  width: calc(100% - 28px); max-width: 452px;
  z-index: 150;
  background: rgba(13,26,52,0.92);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 18px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.28), 0 2px 8px rgba(0,0,0,0.16);
  display: flex;
  align-items: stretch;
  height: 60px;
  padding-bottom: env(safe-area-inset-bottom, 0px);
  overflow: hidden;
}
.cta-btn {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  text-decoration: none;
  color: rgba(255,255,255,0.75);
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.6px;
  text-transform: uppercase;
  transition: background 0.18s, color 0.18s, transform 0.12s;
  border-right: 1px solid rgba(255,255,255,0.08);
  cursor: pointer;
  background: none;
  border-top: none;
  border-bottom: none;
  border-left: none;
  font-family: inherit;
}
.cta-btn:last-child { border-right: none; }
.cta-btn:active { background: rgba(255,255,255,0.1); color: white; transform: scale(0.95); }
.cta-btn:hover { color: rgba(255,255,255,0.95); }
.cta-btn-icon { font-size: 21px; line-height: 1; }
.cta-btn.cta-call { color: #c9a227; }
.cta-btn.cta-call:active { color: #e0b830; background: rgba(201,162,39,0.12); }
.cta-btn.cta-email { color: rgba(255,255,255,0.78); }
.cta-btn.cta-map { color: rgba(255,255,255,0.78); }


/* ====== UPGRADES PREMIUM v2 ====== */

/* Section body — animation d'ouverture */
.section-body.open {
  animation: sectionOpen 0.32s cubic-bezier(0.22,1,0.36,1) forwards;
}
@keyframes sectionOpen {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Chevron animé */
.section-head .chevron {
  transition: transform 0.28s cubic-bezier(0.4,0,0.2,1), color 0.2s;
}
.section-head.open .chevron {
  transform: rotate(180deg);
  color: var(--gold);
}

/* Lodge card — animation légère à l'entrée */
.lodge-card {
  animation: fadeUp 0.55s cubic-bezier(0.22,1,0.36,1) 0.2s both;
  box-shadow: 0 4px 20px rgba(0,0,0,0.09), 0 1px 4px rgba(0,0,0,0.05);
}

/* Lodge card specs — valeur plus impactante */
.lodge-spec-value {
  font-size: 22px !important;
  font-weight: 800 !important;
  letter-spacing: -0.8px !important;
}

/* Lodge card — description plus douce */
.lodge-card-desc {
  color: #4a5a6a;
  font-size: 13.5px;
  line-height: 1.6;
}

/* Sections séparateur doré subtil */
.section + .section {
  border-top: 1px solid rgba(201,162,39,0.08);
}

/* Quick item — fond légèrement amélioré */
.quick-grid { background: #fdfcf9; }

/* Alert — ombre légère */
.alert { box-shadow: 0 1px 6px rgba(0,0,0,0.06); }

/* Hours badge premium */
.hours-badge {
  background: rgba(201,162,39,0.1);
  border: 1px solid rgba(201,162,39,0.25);
  color: #7a5c10;
  font-size: 11px;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 20px;
  display: inline-block;
  letter-spacing: 0.2px;
}

/* Urgency buttons — feedback tap */
.urgency-btn { transition: transform 0.1s, opacity 0.1s; }
.urgency-btn:active { transform: scale(0.96); opacity: 0.85; }

/* Price row — fond au tap */
.price-row { transition: background 0.12s; }
.price-row:active { background: rgba(201,162,39,0.05); }

/* Section head open — indicateur gauche doré */
.section-head.open {
  box-shadow: inset 3px 0 0 rgba(201,162,39,0.5);
}


/* ====== SECTION PLAN DU DOMAINE ====== */
.plan-container {
  position: relative;
  margin: 0;
  background: #f0f2f0;
  overflow: hidden;
}
.plan-wrapper {
  position: relative;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  cursor: grab;
  max-height: 70vh;
  min-height: 260px;
}
.plan-wrapper:active { cursor: grabbing; }
.plan-wrapper img {
  display: block;
  width: 100%;
  min-width: 600px;
  height: auto;
  user-select: none;
  -webkit-user-drag: none;
  transition: transform 0.2s ease;
}
.plan-hotspot {
  position: absolute;
  transform: translate(-50%, -50%);
  cursor: pointer;
  z-index: 10;
}
.plan-hotspot-dot {
  width: 36px; height: 36px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px; line-height: 1;
  box-shadow: 0 2px 8px rgba(0,0,0,0.25);
  transition: transform 0.15s, box-shadow 0.15s;
  position: relative;
}
.plan-hotspot-dot::after {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: 50%;
  border: 2px solid currentColor;
  opacity: 0.35;
  animation: planPulse 2s ease-in-out infinite;
}
@keyframes planPulse {
  0%, 100% { transform: scale(1); opacity: 0.35; }
  50% { transform: scale(1.3); opacity: 0; }
}
.plan-hotspot:active .plan-hotspot-dot {
  transform: scale(0.88);
  box-shadow: 0 1px 4px rgba(0,0,0,0.2);
}

/* Couleurs par type */
.plan-hs-blue  .plan-hotspot-dot { background: #2563eb; color: white; }
.plan-hs-green .plan-hotspot-dot { background: #16a34a; color: white; }
.plan-hs-orange .plan-hotspot-dot { background: #ea580c; color: white; }
.plan-hs-gold  .plan-hotspot-dot { background: #c9a227; color: white; }
.plan-hs-navy  .plan-hotspot-dot { background: #0f1f3d; color: white; }
.plan-hs-red   .plan-hotspot-dot { background: #dc2626; color: white; }

/* Tooltip */
.plan-tooltip {
  position: fixed;
  z-index: 999;
  background: rgba(15,31,61,0.97);
  color: white;
  border-radius: 14px;
  padding: 14px 16px;
  min-width: 180px;
  max-width: 240px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.3);
  pointer-events: none;
  opacity: 0;
  transform: translateY(6px) scale(0.96);
  transition: opacity 0.18s, transform 0.18s;
  backdrop-filter: blur(8px);
}
.plan-tooltip.visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}
.plan-tooltip-title {
  font-size: 13px;
  font-weight: 700;
  margin-bottom: 4px;
  color: #c9a227;
  letter-spacing: 0.3px;
}
.plan-tooltip-desc {
  font-size: 12px;
  color: rgba(255,255,255,0.8);
  line-height: 1.45;
}

/* Barre de contrôle */
.plan-controls {
  display: flex;
  gap: 8px;
  padding: 10px 16px;
  background: white;
  border-top: 1px solid var(--border);
  align-items: center;
}
.plan-btn {
  flex: 1;
  padding: 8px 12px;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--cream);
  color: var(--navy);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.3px;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
  font-family: inherit;
  text-align: center;
}
.plan-btn.active {
  background: var(--navy);
  color: white;
  border-color: var(--navy);
}
.plan-btn:active { opacity: 0.75; }

/* Légende */
.plan-legend {
  display: none;
  padding: 12px 16px;
  background: #fdfcf9;
  border-top: 1px solid var(--border);
  gap: 10px;
  flex-wrap: wrap;
}
.plan-legend.visible { display: flex; }
.plan-legend-item {
  display: flex; align-items: center; gap: 6px;
  font-size: 11px; color: var(--text);
}
.plan-legend-dot {
  width: 12px; height: 12px;
  border-radius: 50%;
  flex-shrink: 0;
}

/* Indicateur zoom */
.plan-zoom-hint {
  position: absolute;
  bottom: 8px; right: 8px;
  background: rgba(15,31,61,0.7);
  color: white;
  font-size: 10px;
  padding: 4px 8px;
  border-radius: 6px;
  pointer-events: none;
  opacity: 0.8;
  z-index: 5;
}


/* ====== PLAN INTERACTIF PRO ====== */
#planYouCard { display: flex; }
.pin {
  position: absolute;
  transform: translate(-50%, -50%);
  width: 26px; height: 26px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  z-index: 10;
  -webkit-tap-highlight-color: transparent;
}
.pin::before {
  content: '';
  width: 14px; height: 14px;
  border-radius: 50%;
  background: currentColor;
  box-shadow: 0 0 0 2px white, 0 2px 6px rgba(0,0,0,0.35);
  transition: transform 0.15s, box-shadow 0.15s;
}
.pin::after {
  content: '';
  position: absolute;
  width: 14px; height: 14px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.35;
  animation: pinPulse 2.4s ease-in-out infinite;
}
@keyframes pinPulse {
  0%, 100% { transform: scale(1); opacity: 0.35; }
  50% { transform: scale(2.2); opacity: 0; }
}
.pin:active::before { transform: scale(0.85); }
.pin-blue   { color: #1a6fa0; }
.pin-orange { color: #c85c0a; }
.pin-teal   { color: #0e7a6e; }
.pin-navy   { color: #0f1f3d; }
.pin-green  { color: #1a7a3c; }
.pin-gold   { color: #b08018; }
.pin-red    { color: #b83232; }
.pin-purple { color: #7c3aed; }

@keyframes unitGlow {
  0%, 100% { box-shadow: 0 0 0 3px white, 0 0 0 5px var(--gold), 0 0 20px rgba(201,162,39,0.7); }
  50% { box-shadow: 0 0 0 3px white, 0 0 0 5px var(--gold), 0 0 32px rgba(201,162,39,0.9); }
}

@keyframes hintFadeOut {
  0%, 60% { opacity: 0.85; }
  100% { opacity: 0; }
}

body.plan-open { overflow: hidden; }
#planSheet.open #planSheetBody { transform: translateY(0) !important; }
/* En mode plein écran du plan, la sheet reste compacte */
body.plan-open #planSheetBody {
  max-height: 60vh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
body.plan-open #planSheet {
  z-index: 10001;
}

/* ====== PLAN FULLSCREEN V2 — pinch-zoom pro ====== */
@keyframes fsHintFade {
  0% { opacity: 0; transform: translateX(-50%) translateY(8px); }
  15% { opacity: 1; transform: translateX(-50%) translateY(0); }
  80% { opacity: 1; }
  100% { opacity: 0; transform: translateX(-50%) translateY(8px); }
}
@keyframes fsUnitDot {
  0%, 100% { box-shadow: 0 0 10px rgba(201,162,39,0.8); }
  50% { box-shadow: 0 0 18px rgba(201,162,39,1); }
}
#planPz { cursor: grab; }
#planPz.grabbing { cursor: grabbing; }
#planPz.grabbing #planPzInner { transition: none; }
#planPzInner { transition: transform 0.25s cubic-bezier(0.22,1,0.36,1); }
#planPzInner.no-transition { transition: none; }

/* Pins dans fullscreen = plus gros et plus tactiles */
#planFullscreen .pin { width: 40px; height: 40px; }
#planFullscreen .pin::before { width: 16px; height: 16px; }
#planFullscreen .pin::after { width: 16px; height: 16px; }

/* ====== PINS V2 — SVG goutte Google Maps style ====== */
#planFullscreen .pin {
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  position: absolute;
  transform: translate(-50%, -100%);
  pointer-events: auto;
  cursor: pointer;
  z-index: 10;
}
#planFullscreen .pin::before,
#planFullscreen .pin::after { display: none; }

#planFullscreen .pin-svg {
  width: 16px; height: 20px;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.4));
  transition: transform 0.15s;
}
#planFullscreen .pin:active .pin-svg { transform: scale(0.85); }

/* Pulse subtil sur le pin */
#planFullscreen .pin-pulse {
  position: absolute;
  bottom: 2px;
  left: 50%;
  transform: translateX(-50%);
  width: 10px; height: 10px;
  border-radius: 50%;
  opacity: 0.3;
  animation: planPinPulse 2.5s ease-in-out infinite;
}
@keyframes planPinPulse {
  0%, 100% { transform: translateX(-50%) scale(1); opacity: 0.3; }
  50% { transform: translateX(-50%) scale(2.2); opacity: 0; }
}

/* Couleurs pin SVG */
#planFullscreen .pin-blue   .pin-svg path { fill: #1a6fa0; }
#planFullscreen .pin-blue   .pin-pulse   { background: #1a6fa0; }
#planFullscreen .pin-orange .pin-svg path { fill: #c85c0a; }
#planFullscreen .pin-orange .pin-pulse   { background: #c85c0a; }
#planFullscreen .pin-teal   .pin-svg path { fill: #0e7a6e; }
#planFullscreen .pin-teal   .pin-pulse   { background: #0e7a6e; }
#planFullscreen .pin-navy   .pin-svg path { fill: #0f1f3d; }
#planFullscreen .pin-navy   .pin-pulse   { background: #0f1f3d; }
#planFullscreen .pin-green  .pin-svg path { fill: #1a7a3c; }
#planFullscreen .pin-green  .pin-pulse   { background: #1a7a3c; }
#planFullscreen .pin-gold   .pin-svg path { fill: #b08018; }
#planFullscreen .pin-gold   .pin-pulse   { background: #b08018; }
#planFullscreen .pin-red    .pin-svg path { fill: #b83232; }
#planFullscreen .pin-red    .pin-pulse   { background: #b83232; }
#planFullscreen .pin-purple .pin-svg path { fill: #7c3aed; }
#planFullscreen .pin-purple .pin-pulse   { background: #7c3aed; }

/* ====== ROTATION LANDSCAPE ====== */
#planRotateHint {
  display: none;
  position: fixed; inset: 0;
  z-index: 10001;
  background: rgba(10,21,38,0.98);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  align-items: center;
  justify-content: center;
  padding: 40px 24px;
  text-align: center;
}
#planRotateHint.visible { display: flex; }
#planRotateHint .rotate-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  max-width: 280px;
}
#planRotateHint svg { animation: rotatePhone 2s ease-in-out infinite; }
@keyframes rotatePhone {
  0%, 30%   { transform: rotate(0deg); }
  60%, 100% { transform: rotate(-90deg); }
}

@keyframes unitPulseBig {
  0%, 100% { transform: translateX(-50%) scale(1); opacity: 0.35; }
  50% { transform: translateX(-50%) scale(3); opacity: 0; }
}

/* Phone links - style cliquable évident */
a[href^="tel:"] {
  cursor: pointer;
  position: relative;
  transition: all 0.2s ease;
}
a[href^="tel:"]:active {
  opacity: 0.6;
  transform: scale(0.98);
}
/* Hint visuel : petite icône ↗ après les numéros non décorés */
.phone-click-hint {
  display: inline-block;
  font-size: 10px;
  opacity: 0.6;
  margin-left: 4px;
  vertical-align: middle;
}

/* === BLOC CSS 2 === */
.hero-lodge {
  position: relative;
  height: 220px;
  overflow: hidden;
  border-radius: 16px;
  margin: 16px 14px 12px;
  box-shadow: 0 2px 12px rgba(0,0,0,0.08);
  opacity: 0;
  animation: heroFadeIn 1.2s ease-out 0.2s forwards;
}
.hero-lodge-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transform: scale(1.08);
  animation: heroZoom 8s ease-out forwards;
}
.hero-lodge-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(15,31,61,0) 0%, rgba(15,31,61,0.1) 35%, rgba(15,31,61,0.65) 100%);
}
.hero-lodge-content {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 24px 24px 20px;
  text-align: left;
  opacity: 0;
  animation: heroTextFadeIn 1s ease-out 0.8s forwards;
}
.hero-lodge-eyebrow {
  font-size: 10px;
  letter-spacing: 4px;
  color: rgba(255,255,255,0.85);
  text-transform: uppercase;
  font-weight: 500;
  margin-bottom: 10px;
  text-shadow: 0 1px 8px rgba(0,0,0,0.6);
}
.hero-lodge-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 26px;
  font-weight: 700;
  color: white;
  line-height: 1.15;
  letter-spacing: -0.3px;
  text-shadow: 0 2px 16px rgba(0,0,0,0.55), 0 1px 3px rgba(0,0,0,0.4);
}
.hero-lodge-num {
  display: inline-block;
  margin-top: 12px;
  padding: 5px 14px;
  background: rgba(15,31,61,0.35);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(201,162,39,0.5);
  border-radius: 20px;
  font-size: 11px;
  letter-spacing: 2.5px;
  color: rgba(201,162,39,1);
  font-weight: 600;
  text-shadow: 0 1px 4px rgba(0,0,0,0.3);
}
@keyframes heroFadeIn {
  to { opacity: 1; }
}
@keyframes heroZoom {
  to { transform: scale(1); }
}
@keyframes heroTextFadeIn {
  to { opacity: 1; }
}
@media (max-width: 480px) {
  .hero-lodge-title { font-size: 22px; }
  /* 4 drapeaux : resserrer pour ne pas chevaucher le menu */
  .lang-switch { gap: 1px; margin-right: 2px; }
  .lang-switch button { font-size: 16px !important; padding: 1px !important; }
}
