/* Visite 1.3 — MyLocalExplore-inspired public UI */
:root {
  --v-bg: #f6f2ea;
  --v-surface: #fffcf7;
  --v-paper: #ebe4d8;
  --v-text: #1a1714;
  --v-muted: #7a7368;
  --v-primary: #1e3a5f;
  --v-primary-fg: #f7f4ee;
  --v-accent: #c4a574;
  --v-accent-soft: rgba(196, 165, 116, 0.18);
  --v-promo: #c45c26;
  --v-sep: #e2dacd;
  --v-radius: 18px;
  --v-radius-sm: 12px;
  --v-shadow: 0 8px 24px rgba(26, 23, 20, 0.07);
  --v-font-serif: "Iowan Old Style", Palatino, "Book Antiqua", Georgia, serif;
  --v-font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
  --v-safe-t: env(safe-area-inset-top, 0px);
  --v-safe-b: env(safe-area-inset-bottom, 0px);
  --v-tab-h: 64px;
}
@media (prefers-color-scheme: dark) {
  :root {
    --v-bg: #12100e;
    --v-surface: #1c1916;
    --v-paper: #2a2622;
    --v-text: #f3efe8;
    --v-muted: #a39b8e;
    --v-primary: #8ab4e8;
    --v-primary-fg: #0f1a28;
    --v-accent: #d4b896;
    --v-accent-soft: rgba(212, 184, 150, 0.15);
    --v-promo: #e8905a;
    --v-sep: #3a342e;
    --v-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
  }
}

* { box-sizing: border-box; }
html, body {
  margin: 0; min-height: 100%;
  background: var(--v-bg); color: var(--v-text);
  font-family: var(--v-font); -webkit-font-smoothing: antialiased;
}
button, input, select { font: inherit; color: inherit; }
a { color: var(--v-primary); text-decoration: none; }
[hidden] { display: none !important; }
img { max-width: 100%; display: block; }

/* —— App shell —— */
.visite-app, .visite-app-page, .visite-tour-page, .visite-partner-page {
  font-family: var(--v-font); color: var(--v-text);
}
.visite-app {
  max-width: 480px; margin: 0 auto; min-height: 100dvh;
  display: flex; flex-direction: column;
  padding-bottom: calc(var(--v-tab-h) + var(--v-safe-b));
  position: relative;
}
.visite-app-mount { flex: 1; }
.visite-loading {
  text-align: center; padding: 48px 16px; color: var(--v-muted);
}

.visite-app-header {
  position: sticky; top: 0; z-index: 40;
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(10px + var(--v-safe-t)) 16px 12px;
  background: color-mix(in srgb, var(--v-bg) 88%, transparent);
  backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--v-sep);
}
.visite-brand b {
  display: block; font-family: var(--v-font-serif); font-size: 1.15rem;
  font-weight: 600; letter-spacing: -0.02em; color: var(--v-primary);
}
.visite-brand small {
  display: block; font-size: 0.72rem; color: var(--v-muted);
  letter-spacing: 0.04em; text-transform: uppercase; margin-top: 1px;
}
.visite-lang-wrap { position: relative; z-index: 70; flex: 0 0 auto; }
.visite-lang-btn {
  border: 0; background: var(--v-surface); border-radius: 999px;
  padding: .42rem .72rem .42rem .62rem; font-size: .8rem; font-weight: 650;
  display: inline-flex; align-items: center; gap: .38rem;
  color: var(--v-text); box-shadow: 0 1px 3px rgba(17,31,46,.06); cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.visite-lang-pill {
  background: #fff; border: 1px solid var(--v-sep);
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
}
.visite-lang-btn:active { transform: scale(.97); }
.visite-lang-flag { font-size: 1.1rem; line-height: 1; display: inline-block; }
.visite-lang-short { min-width: 1.5rem; text-align: left; }
.visite-lang-caret { font-size: .65rem; opacity: .55; margin-left: .05rem; }
.visite-lang-menu {
  position: absolute; right: 0; top: calc(100% + 6px); margin: 0; padding: .4rem 0;
  list-style: none; min-width: 11.5rem; background: var(--v-surface);
  border-radius: 16px; box-shadow: 0 16px 40px rgba(17,31,46,.14);
  border: 1px solid var(--v-sep); max-height: min(70dvh, 22rem); overflow: auto;
  overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
}
html[dir="rtl"] .visite-lang-menu { right: auto; left: 0; }
.visite-lang-menu[hidden] { display: none !important; }
.visite-lang-menu li {
  display: flex; align-items: center; gap: .55rem; padding: .65rem .9rem;
  cursor: pointer; font-size: .9rem; font-weight: 550; white-space: nowrap;
  -webkit-tap-highlight-color: transparent;
}
.visite-lang-menu li:hover, .visite-lang-menu li.is-on { background: #e8f0fa; }
.visite-lang-menu .visite-lang-flag { font-size: 1.1rem; }
.visite-lang-name { flex: 1; }

/* Views */
.visite-view { display: none; animation: visite-in 0.28s ease; }
.visite-view.is-on { display: block; }
@keyframes visite-in {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: none; }
}

/* Tab bar */
.visite-tabbar {
  position: fixed; left: 50%; bottom: 0; transform: translateX(-50%);
  width: 100%; max-width: 480px; z-index: 50;
  display: grid; grid-template-columns: repeat(4, 1fr);
  height: calc(var(--v-tab-h) + var(--v-safe-b));
  padding-bottom: var(--v-safe-b);
  background: color-mix(in srgb, var(--v-surface) 92%, transparent);
  backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
  border-top: 1px solid var(--v-sep);
  box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.04);
}
.visite-tabbar button {
  border: 0; background: transparent;
  display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: 3px; cursor: pointer;
  color: var(--v-muted); font-size: 10px; font-weight: 600;
  padding: 8px 4px 6px;
}
.visite-tabbar button svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.visite-tabbar button.is-on { color: var(--v-primary); }
.visite-tabbar button.is-on svg { stroke-width: 2.1; }

/* Shell / common */
.visite-shell {
  max-width: 480px; margin: 0 auto;
  padding: 14px 16px 28px;
}
.visite-kicker {
  font-size: 0.68rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--v-muted); font-weight: 650; margin: 0 0 6px;
}
.visite-shell h1, .visite-hero-overlay h1 {
  margin: 0; font-family: var(--v-font-serif); font-weight: 600;
  letter-spacing: -0.02em; font-size: 1.85rem; line-height: 1.15;
}
.visite-section-title {
  font-family: var(--v-font-serif); font-size: 1.2rem;
  margin: 22px 0 12px;
  display: flex; align-items: baseline; justify-content: space-between; gap: 8px;
}
.visite-section-title a, .visite-section-title button {
  font-family: var(--v-font); font-size: 0.82rem; font-weight: 650;
  border: 0; background: none; color: var(--v-primary); cursor: pointer; padding: 0;
}
.visite-muted { color: var(--v-muted); font-size: 0.9rem; line-height: 1.45; }
.visite-meta { color: var(--v-muted); font-size: 0.82rem; }

/* Top nav (tour / partner pages) */
.visite-topnav {
  position: sticky; top: 0; z-index: 30;
  display: flex; justify-content: space-between; align-items: center;
  padding: calc(10px + var(--v-safe-t)) 16px 12px;
  background: color-mix(in srgb, var(--v-bg) 88%, transparent);
  backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--v-sep);
  max-width: 480px; margin: 0 auto;
}
.visite-topnav a { color: var(--v-primary); font-weight: 600; }
.visite-topnav span { color: var(--v-muted); font-size: 0.85rem; }

/* Hero */
.visite-hero {
  position: relative; border-radius: var(--v-radius); overflow: hidden;
  margin-bottom: 16px; box-shadow: var(--v-shadow); background: var(--v-paper);
  min-height: 180px;
}
.visite-hero-img { height: 240px; background: var(--v-paper); }
.visite-hero-img img { width: 100%; height: 100%; object-fit: cover; object-position: center center; display:block; }
.visite-hero-placeholder { background: linear-gradient(135deg, var(--v-paper), var(--v-sep)); height: 180px; }
.visite-hero-overlay {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  justify-content: flex-end; padding: 18px 16px 16px;
  background: linear-gradient(to top, rgba(15, 12, 8, 0.78) 0%, rgba(15, 12, 8, 0.2) 55%, transparent 100%);
  color: #f7f2ea;
}
.visite-hero-overlay .visite-kicker { color: rgba(247, 242, 234, 0.75); }
.visite-hero-overlay h1 { color: #fff; margin-bottom: 4px; }
.visite-hero-addr { font-size: 0.88rem; opacity: 0.9; }

/* Cards */
.visite-cards { display: grid; gap: 12px; }
.visite-card {
  display: grid; grid-template-columns: 108px 1fr; gap: 0;
  background: var(--v-surface); border-radius: var(--v-radius-sm);
  overflow: hidden; box-shadow: var(--v-shadow); border: 1px solid var(--v-sep);
  text-decoration: none; color: inherit; cursor: pointer;
  transition: transform 0.15s ease;
}
.visite-card:active { transform: scale(0.985); }
.visite-card img, .visite-card-placeholder {
  width: 108px; height: 100%; min-height: 108px; object-fit: cover; background: var(--v-paper);
}
.visite-card-body { padding: 12px 14px 12px 12px; display: flex; flex-direction: column; justify-content: center; min-width: 0; }
.visite-card-body strong { display: block; font-size: 0.98rem; font-weight: 650; margin-bottom: 3px; line-height: 1.25; }
.visite-card-body p { margin: 0; color: var(--v-muted); font-size: 0.8rem; line-height: 1.35; }
.visite-card-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; align-items: center; }

.visite-card-partner { grid-template-columns: 1fr; }
.visite-card-partner .visite-card-body { padding: 14px 16px; }

.visite-pill {
  display: inline-flex; align-items: center;
  font-size: 11px; font-weight: 700; border-radius: 999px;
  padding: 3px 8px; background: var(--v-accent-soft); color: var(--v-primary);
  text-transform: capitalize;
}
.visite-promo { color: var(--v-promo); font-weight: 700; font-size: 0.78rem; }

/* Buttons */
.visite-btn {
  border: 0; border-radius: 999px; background: var(--v-primary); color: var(--v-primary-fg);
  padding: 12px 18px; font-weight: 700; font-size: 0.92rem; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  box-shadow: 0 4px 14px color-mix(in srgb, var(--v-primary) 30%, transparent);
  text-decoration: none;
}
.visite-btn-ghost {
  background: var(--v-paper); color: var(--v-text); box-shadow: none; border: 1px solid var(--v-sep);
}
.visite-btn-full { width: 100%; }
.visite-btn-sm { padding: 8px 14px; font-size: 0.82rem; }
.visite-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0; }

/* Map */
.visite-map {
  height: 260px; border-radius: var(--v-radius-sm); overflow: hidden;
  margin: 12px 0 16px; background: var(--v-paper); border: 1px solid var(--v-sep);
  box-shadow: var(--v-shadow);
}
.visite-map-lg { height: 320px; }
.leaflet-container { font: inherit; background: var(--v-paper); }

/* Steps */
.visite-steps { display: grid; gap: 0; }
.visite-step {
  display: grid; grid-template-columns: 36px 1fr; gap: 12px;
  padding: 14px 0; border-top: 1px solid var(--v-sep);
}
.visite-step:first-child { border-top: 0; padding-top: 4px; }
.visite-step-num {
  width: 30px; height: 30px; border-radius: 50%;
  background: var(--v-primary); color: var(--v-primary-fg);
  display: grid; place-items: center; font-weight: 800; font-size: 13px; margin-top: 2px;
}
.visite-step-body h4 {
  margin: 0 0 4px; font-family: var(--v-font); font-size: 0.98rem; font-weight: 650;
}
.visite-step-body p { margin: 0; color: var(--v-muted); font-size: 0.85rem; line-height: 1.4; }
.visite-step-photo {
  width: 100%; height: 140px; object-fit: cover; border-radius: 12px;
  margin-top: 10px; background: var(--v-paper);
}
.visite-onpath {
  margin-top: 10px; padding: 12px 14px; border-radius: 12px;
  background: var(--v-accent-soft);
  border: 1px solid color-mix(in srgb, var(--v-accent) 35%, transparent);
}
.visite-onpath strong { display: block; font-size: 0.88rem; margin-bottom: 2px; }
.visite-link { color: var(--v-primary); font-weight: 700; font-size: 0.85rem; }

/* Chips */
.visite-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; }
.visite-chip {
  border: 1px solid var(--v-sep); background: var(--v-surface);
  border-radius: 999px; padding: 7px 14px; font-size: 0.8rem; font-weight: 650;
  cursor: pointer; color: var(--v-muted);
}
.visite-chip.is-on {
  background: var(--v-primary); color: var(--v-primary-fg); border-color: transparent;
}

/* Geo banner / welcome / stats */
.visite-geo-banner {
  display: flex; align-items: center; gap: 12px;
  background: var(--v-surface); border: 1px solid var(--v-sep);
  border-radius: var(--v-radius-sm); padding: 12px 14px; margin-bottom: 16px;
  box-shadow: var(--v-shadow);
}
.visite-geo-banner .ico {
  width: 40px; height: 40px; border-radius: 12px;
  background: var(--v-accent-soft); display: grid; place-items: center; flex-shrink: 0;
  color: var(--v-primary);
}
.visite-geo-banner p { margin: 0; font-size: 0.85rem; line-height: 1.35; flex: 1; }
.visite-welcome {
  background: var(--v-surface); border-radius: var(--v-radius); padding: 16px;
  border: 1px solid var(--v-sep); margin-bottom: 8px; box-shadow: var(--v-shadow);
}
.visite-welcome h2 {
  margin: 0; font-family: var(--v-font-serif); font-size: 1.25rem; font-weight: 600;
}
.visite-welcome p { margin: 6px 0 0; color: var(--v-muted); font-size: 0.9rem; line-height: 1.45; }
.visite-stats {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 14px 0;
}
.visite-stat {
  background: var(--v-surface); border: 1px solid var(--v-sep);
  border-radius: 12px; padding: 12px 8px; text-align: center;
}
.visite-stat b {
  display: block; font-family: var(--v-font-serif); font-size: 1.25rem; color: var(--v-primary);
}
.visite-stat span {
  font-size: 0.72rem; color: var(--v-muted); text-transform: uppercase; letter-spacing: 0.04em;
}

.visite-audio-block {
  background: var(--v-surface); border: 1px solid var(--v-sep);
  border-radius: var(--v-radius-sm); padding: 14px 16px; margin: 12px 0;
}
.visite-audio-label {
  font-size: 0.72rem; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--v-muted); margin-bottom: 6px; font-weight: 650;
}
.visite-audio-block p { margin: 0; font-size: 0.9rem; line-height: 1.45; color: var(--v-muted); }
.visite-result {
  margin-top: 10px; padding: 12px; border-radius: 12px;
  background: color-mix(in srgb, var(--v-primary) 8%, var(--v-surface));
  font-size: 0.9rem;
}
.visite-empty { color: var(--v-muted); padding: 20px; text-align: center; }

/* Custom map marker */
.visite-marker-pin {
  background: var(--v-primary); color: #fff; width: 28px; height: 28px;
  border-radius: 50% 50% 50% 0; transform: rotate(-45deg);
  display: grid; place-items: center; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
  border: 2px solid #fff;
}
.visite-marker-pin span {
  transform: rotate(45deg); font-size: 11px; font-weight: 800;
}

/* Standalone pages without tabbar */
.visite-tour-page .visite-shell,
.visite-partner-page .visite-shell {
  padding-bottom: 40px;
}


/* v1.3.7 — Balades visuelles façon MyLocalExplore */
.visite-tour-card{display:block;background:#fff;border:1px solid var(--v-sep);border-radius:22px;overflow:hidden;box-shadow:var(--v-shadow);text-decoration:none;color:inherit;transition:transform .15s ease,box-shadow .15s ease}
.visite-tour-card:active{transform:scale(.988)}
.visite-tour-cover{position:relative;min-height:205px;background-size:cover;background-position:center;display:flex;align-items:flex-end;color:#fff;background-color:#dfe7ef}
.visite-tour-cover.is-placeholder{background:linear-gradient(145deg,#dfe8ef,#b9c8d4)}
.visite-tour-cover-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,20,32,.06) 18%,rgba(8,20,32,.78) 100%)}
.visite-tour-cover-copy{position:relative;z-index:1;width:100%;padding:20px 18px 17px}
.visite-tour-badge{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;background:rgba(255,255,255,.92);color:#173f78;font-size:11px;line-height:1;font-weight:800;box-shadow:0 1px 4px rgba(0,0,0,.08)}
.visite-tour-cover-copy h3{margin:9px 0 4px;color:#fff;font-family:Georgia,'Times New Roman',serif;font-size:27px;line-height:1.05;font-weight:700;text-shadow:0 2px 8px rgba(0,0,0,.28)}
.visite-tour-cover-copy p{margin:0;color:rgba(255,255,255,.95);font-size:13px;font-weight:650;letter-spacing:.01em}
.visite-tour-card-body{padding:14px 16px 15px}
.visite-tour-desc{margin:0 0 11px;color:#324356;font-size:14px;line-height:1.45;font-weight:560}
.visite-tour-smartline{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}
.visite-tour-smart{display:inline-flex;align-items:center;padding:5px 8px;border:1px solid #dce9e1;border-radius:999px;background:#f2f7f4;color:#355247;font-size:11px;font-weight:750}
.visite-tour-open{display:flex;align-items:center;justify-content:space-between;padding-top:10px;border-top:1px solid #ece8e1;color:#173f78;font-size:13px;font-weight:800}
.visite-tour-open b{font-size:22px;line-height:1;font-weight:500;color:#8c9aaa}

/* Page détaillée : même langage visuel */
.visite-tour-page .visite-hero{border-radius:22px;box-shadow:var(--v-shadow);border:1px solid var(--v-sep);margin-bottom:14px}
.visite-tour-page .visite-hero-img{height:255px}
.visite-tour-page .visite-hero-overlay{padding:20px 18px 18px;background:linear-gradient(to top,rgba(10,20,30,.82),rgba(10,20,30,.08) 72%)}
.visite-tour-page .visite-hero-overlay .visite-kicker{display:inline-flex;align-self:flex-start;width:auto;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.92);color:#173f78;font-size:11px;font-weight:800}
.visite-tour-page .visite-hero-overlay h1{font-size:30px;line-height:1.05;text-shadow:0 2px 8px rgba(0,0,0,.28)}
.visite-tour-page .visite-hero-addr{font-weight:650;color:rgba(255,255,255,.94)}
.visite-tour-page .visite-step{background:#fff;border:1px solid var(--v-sep);border-radius:16px;padding:12px;box-shadow:0 5px 18px rgba(38,42,48,.06);margin-bottom:10px}
.visite-tour-page .visite-step-num{width:30px;height:30px;min-width:30px;border-radius:50%;background:#eef4ff;color:#173f78;display:grid;place-items:center;font-size:13px;font-weight:800}
.visite-tour-page .visite-step-photo{border-radius:13px}
@media(max-width:430px){.visite-tour-cover{min-height:190px}.visite-tour-cover-copy h3{font-size:25px}.visite-tour-card-body{padding:13px 14px 14px}.visite-tour-page .visite-hero-img{height:235px}}

/* v1.3.8 — Fiche balade calée sur MyLocalExplore */
.visite-route-card{background:#fff;border:1px solid var(--v-sep);border-radius:22px;overflow:hidden;box-shadow:var(--v-shadow);margin-bottom:14px}
.visite-route-card .visite-hero{margin:0;border:0;border-radius:0;box-shadow:none}
.visite-route-body{padding:14px 16px 16px}
.visite-route-smartline{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 11px}
.visite-route-smartline span{display:inline-flex;align-items:center;font-size:11.5px;font-weight:750;background:#f2f7f4;border:1px solid #dce9e1;border-radius:999px;padding:5px 8px;color:#355247}
.visite-route-intro{margin:0 0 8px;color:#1d3048;font-size:15px;line-height:1.48;font-weight:700}
.visite-route-desc{margin:0 0 10px;color:#6f6258;font-size:13.5px;line-height:1.48}
.visite-route-tipline{display:flex;gap:8px;align-items:flex-start;margin:10px 0;padding:10px 12px;border-radius:13px;background:#f5f8fc;color:#41536a;font-size:12.5px;line-height:1.42}
.visite-route-tipbox{margin:10px 0 12px;padding:12px 13px;border-radius:14px;background:#fff8e8;border:1px solid #f2dfaa;color:#443b28}
.visite-route-tipbox strong{display:block;font-size:12.5px;margin-bottom:4px}.visite-route-tipbox p{margin:0;font-size:12.5px;line-height:1.45}
.visite-route-stops{margin-top:4px}.visite-route-stops .visite-step{box-shadow:none;border:0;border-radius:0;background:transparent;margin:0;padding:7px 0;align-items:flex-start}
.visite-route-stops .visite-step-num{width:30px;height:30px;min-width:30px;border-radius:50%;background:#eef4ff;color:#173f78;display:grid;place-items:center;font-size:14px;font-weight:900;border:1px solid rgba(23,63,120,.08)}
.visite-route-stops .visite-step-body h4{margin:0 0 2px;font-size:14px;line-height:1.25;color:#102844;font-weight:800}.visite-route-stops .visite-step-body p{font-size:12px;line-height:1.38;color:#75685f}
.visite-stop-badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.visite-route-partner,.visite-route-offer{display:inline-flex;padding:3px 6px;border-radius:999px;font-size:10.5px;font-weight:800}.visite-route-partner{background:#edf7ee;color:#236737}.visite-route-offer{background:#fff1e6;color:#a44a12}
.visite-route-partner-open{display:inline-flex;margin-top:6px;border:0;border-radius:999px;padding:6px 9px;background:#eef5ff;color:#1d4f91;text-decoration:none;font-size:11px;font-weight:750}
.visite-route-actions{display:grid;gap:7px;margin-top:12px}.visite-route-approach{display:grid;gap:7px}.visite-itin{width:100%;min-height:42px;border:1px solid #dbe6f2;border-radius:999px;background:#edf4fb;color:#173f78;display:flex;align-items:center;justify-content:center;gap:8px;padding:9px 13px;font:inherit;font-size:12.5px;font-weight:800;cursor:pointer}.visite-itin span{font-size:15px;line-height:1}.visite-itin b{font:inherit;font-weight:800}.visite-route-smart{background:#f4f8fc}.visite-route-home-end{background:#f7faf5;border-color:#dce9d7;color:#2e6334}
.visite-route-approach-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.visite-route-approach-modes button{border:1px solid #dbe5df;background:#fff;border-radius:10px;padding:8px 5px;font-size:11px;font-weight:750;color:#31465a}
.visite-route-credit{margin-top:10px;text-align:right;color:#9a958e;font-size:10px}
.visite-tour-page .visite-map{margin-top:14px}
@media(max-width:430px){.visite-route-body{padding:13px 14px 15px}.visite-route-actions{gap:6px}.visite-itin{min-height:40px;font-size:12px}.visite-route-approach-modes button{padding:7px 3px;font-size:10.5px}}


/* v1.3.9 — persistent bottom navigation on every public screen */
.visite-tour-page, .visite-partner-page, .visite-app-page {
  padding-bottom: calc(var(--v-tab-h) + var(--v-safe-b) + 18px);
}
.visite-tabbar-links a {
  border: 0; background: transparent;
  display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: 3px; cursor: pointer;
  color: var(--v-muted); font-size: 10px; font-weight: 600;
  padding: 8px 4px 6px; min-width: 0;
}
.visite-tabbar-links a svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.visite-tabbar-links a.is-on { color: var(--v-primary); }
.visite-tabbar-links a.is-on svg { stroke-width: 2.1; }

/* Live weather + contextual advice */
.visite-weather-card {
  margin: 12px 0 14px; padding: 12px 14px;
  border: 1px solid var(--v-sep); border-radius: 16px;
  background: linear-gradient(135deg, rgba(255,255,255,.88), rgba(232,240,250,.72));
  display:flex; align-items:center; gap:12px; box-shadow:0 4px 14px rgba(26,23,20,.04);
}
.visite-weather-icon { font-size: 26px; line-height:1; flex:0 0 auto; }
.visite-weather-copy { min-width:0; flex:1; }
.visite-weather-copy strong { display:block; font-size:13px; color:var(--v-primary); margin-bottom:2px; }
.visite-weather-copy p { margin:0; font-size:12px; line-height:1.35; color:var(--v-muted); }
.visite-weather-temp { font-family:var(--v-font-serif); font-size:24px; font-weight:700; color:var(--v-primary); white-space:nowrap; }
.visite-weather-advice {
  margin: 10px 0 14px; padding: 11px 12px; border-radius: 14px;
  background:#f4f8fd; border:1px solid #dce7f4; display:flex; gap:10px; align-items:flex-start;
}
.visite-weather-advice-icon { font-size:22px; line-height:1.2; }
.visite-weather-advice strong { display:block; font-size:12.5px; color:var(--v-primary); margin-bottom:2px; }
.visite-weather-advice p { margin:0; font-size:12px; line-height:1.42; color:var(--v-muted); }
@media (prefers-color-scheme: dark) {
  .visite-weather-card { background:rgba(255,255,255,.04); }
  .visite-weather-advice { background:#182536; border-color:#2a4058; }
}

/* v1.3.11 - météo d'accueil mise en avant */
.visite-weather-home {
  display:block;
  margin:14px 0 16px;
  padding:14px;
  border-radius:20px;
  border:1px solid #d9e5f2;
  background:linear-gradient(145deg,#eef6ff 0%,#ffffff 56%,#fff8e8 100%);
  box-shadow:0 8px 24px rgba(25,52,84,.08);
}
.visite-weather-home[hidden] { display:none !important; }
.visite-weather-top { display:flex; align-items:center; gap:11px; }
.visite-weather-home .visite-weather-icon {
  width:48px; height:48px; border-radius:15px; display:flex; align-items:center; justify-content:center;
  font-size:28px; background:rgba(255,255,255,.82); box-shadow:0 3px 12px rgba(28,58,88,.08);
}
.visite-weather-head { min-width:0; flex:1; display:flex; flex-direction:column; }
.visite-weather-live { font-size:10px; text-transform:uppercase; letter-spacing:.08em; color:#6f7e8d; font-weight:700; }
.visite-weather-head strong { font-family:var(--v-font-serif); color:var(--v-primary); font-size:18px; line-height:1.05; margin-top:2px; }
.visite-weather-head #visite-city-weather-title { font-size:12px; color:var(--v-muted); margin-top:3px; }
.visite-weather-home .visite-weather-temp { font-size:31px; line-height:1; }
.visite-weather-tip {
  margin-top:12px; padding:10px 11px; border-radius:14px; display:flex; align-items:flex-start; gap:8px;
  background:rgba(255,255,255,.70); border:1px solid rgba(202,216,231,.75);
}
.visite-weather-tip > span { font-size:17px; line-height:1.2; }
.visite-weather-tip b { display:block; color:var(--v-primary); font-size:12px; margin-bottom:2px; }
.visite-weather-tip p { margin:0; color:var(--v-muted); font-size:11.5px; line-height:1.42; }
.visite-weather-cta {
  width:100%; margin-top:10px; border:0; background:transparent; color:var(--v-primary); font-weight:700;
  font-size:11.5px; padding:5px 2px 1px; display:flex; justify-content:space-between; align-items:center; cursor:pointer;
}
.visite-weather-cta span { font-size:20px; line-height:1; }
@media (max-width:380px) {
  .visite-weather-home { padding:12px; }
  .visite-weather-home .visite-weather-icon { width:43px; height:43px; }
  .visite-weather-home .visite-weather-temp { font-size:28px; }
}
@media (prefers-color-scheme: dark) {
  .visite-weather-home { background:linear-gradient(145deg,#1b2a3b,#172230); border-color:#2d4258; }
  .visite-weather-home .visite-weather-icon,.visite-weather-tip { background:rgba(255,255,255,.05); border-color:#31475d; }
}

/* —— City search + geolocation —— */
.visite-header-actions {display:flex;align-items:center;justify-content:flex-end;gap:7px;min-width:0;margin-left:8px}
.visite-city-search-btn{border:1px solid var(--v-sep);background:var(--v-surface);color:var(--v-text);border-radius:999px;min-height:38px;padding:.45rem .72rem;display:inline-flex;align-items:center;gap:.4rem;box-shadow:0 1px 3px rgba(0,0,0,.04);cursor:pointer;font-size:.79rem;font-weight:750;white-space:nowrap}
.visite-city-search-btn:active{transform:scale(.97)}
.visite-city-search-icon{font-size:1.2rem;line-height:1}
.visite-city-modal[hidden]{display:none!important}.visite-city-modal{position:fixed;inset:0;z-index:99999;display:flex;align-items:flex-end;justify-content:center}
.visite-city-backdrop{position:absolute;inset:0;background:rgba(13,26,42,.38);backdrop-filter:blur(2px)}
.visite-city-sheet{position:relative;width:min(100%,560px);max-height:min(88dvh,760px);overflow:auto;background:var(--v-bg,#f8f4ec);border-radius:26px 26px 0 0;padding:18px 18px calc(22px + env(safe-area-inset-bottom));box-shadow:0 -20px 60px rgba(13,26,42,.2)}
.visite-city-sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:14px}.visite-city-sheet-head small{display:block;font-size:.67rem;letter-spacing:.14em;color:var(--v-muted);font-weight:800}.visite-city-sheet-head h2{margin:2px 0 0;font-family:Georgia,serif;font-size:1.65rem;line-height:1.08;color:var(--v-text)}
.visite-city-close{width:38px;height:38px;border-radius:50%;border:1px solid var(--v-sep);background:var(--v-surface);color:var(--v-text);font-size:1.65rem;line-height:1;cursor:pointer}
.visite-city-searchbox{display:flex;align-items:center;gap:9px;background:var(--v-surface);border:1px solid var(--v-sep);border-radius:16px;padding:0 13px;min-height:48px;box-shadow:0 4px 16px rgba(20,36,54,.05)}.visite-city-searchbox span{font-size:1.3rem;color:var(--v-primary)}.visite-city-searchbox input{width:100%;border:0!important;outline:0!important;background:transparent!important;box-shadow:none!important;font:inherit;font-size:1rem;color:var(--v-text);padding:12px 0!important}


.visite-city-locate{width:100%;margin:10px 0 12px;border:1px solid #c9d8e7;background:#eef5fb;color:var(--v-primary);border-radius:15px;min-height:48px;font-weight:800;font-size:.92rem;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}
.visite-city-locate span:first-child{font-size:1.35rem;line-height:1}
.visite-city-locate:disabled{opacity:.62;cursor:wait}
.visite-city-geo-status{margin:0 0 12px;padding:12px 14px;border:1px solid #cdddea;background:#f7fbff;border-radius:15px;color:var(--v-primary);display:grid;grid-template-columns:auto 1fr;gap:2px 8px;align-items:center}
.visite-city-geo-status[hidden]{display:none!important}
.visite-city-geo-status>span{grid-row:1/3;font-size:1.25rem}
.visite-city-geo-status strong{font-size:.88rem}
.visite-city-geo-status small{font-size:.77rem;color:var(--v-muted)}
.visite-city-result-main em{display:inline-block;margin-top:4px;padding:3px 7px;border-radius:999px;background:#eaf3fb;color:var(--v-primary);font-size:.68rem;font-style:normal;font-weight:800}
.visite-city-result.is-nearest{border-color:#b9d1e6;background:#f7fbff;box-shadow:0 5px 18px rgba(31,75,112,.08)}

.visite-city-results{display:grid;gap:7px}.visite-city-result{display:flex;align-items:center;gap:11px;padding:11px 12px;background:var(--v-surface);border:1px solid var(--v-sep);border-radius:15px;color:var(--v-text);text-decoration:none}.visite-city-result.is-on{background:#eaf2fa;border-color:#c8d9eb}.visite-city-result-flag{font-size:1.45rem}.visite-city-result-main{display:flex;flex:1;min-width:0;flex-direction:column}.visite-city-result-main strong{font-size:.98rem}.visite-city-result-main small{color:var(--v-muted);font-size:.75rem;margin-top:1px}.visite-city-result-arrow{font-size:1.45rem;color:var(--v-muted)}.visite-city-no{padding:22px;text-align:center;color:var(--v-muted)}
.visite-modal-open{overflow:hidden}
html[dir="rtl"] .visite-city-result-arrow{transform:scaleX(-1)}
@media(min-width:700px){.visite-city-modal{align-items:center}.visite-city-sheet{border-radius:26px;max-height:82dvh}}
@media(max-width:390px){.visite-app-header{padding-left:12px;padding-right:12px}.visite-brand small{max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.visite-city-search-btn{padding:.43rem .58rem;font-size:.74rem}.visite-lang-short{display:none}.visite-lang-btn{padding:.42rem .58rem}}


/* v1.3.22 — navigation basse toujours visible, y compris sur la carte */
.visite-bottom-nav,
.visite-bottom-tabs,
.visite-app-bottom-nav {
  position: fixed !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100% !important;
  z-index: 99999 !important;
  transform: translateZ(0);
  -webkit-transform: translateZ(0);
  isolation: isolate;
}

.visite-shell,
.visite-app,
.visite-main,
.visite-page {
  padding-bottom: calc(82px + env(safe-area-inset-bottom, 0px)) !important;
}

.leaflet-container,
.leaflet-map-pane,
.leaflet-control-container,
.leaflet-pane,
.leaflet-top,
.leaflet-bottom {
  z-index: auto;
}

.leaflet-container {
  position: relative;
  z-index: 1 !important;
}

.leaflet-top,
.leaflet-bottom {
  z-index: 400 !important;
}

/* évite qu'une page Carte crée un nouveau contexte d'empilement au-dessus du menu */
.visite-map-page,
.visite-map-wrap,
#visite-map,
#visite-main-map {
  isolation: auto !important;
}

@supports (padding: max(0px)) {
  .visite-bottom-nav,
  .visite-bottom-tabs,
  .visite-app-bottom-nav {
    padding-bottom: max(8px, env(safe-area-inset-bottom)) !important;
  }
}


/* v1.3.23 — fiches partenaires premium + affiliation */
.visite-partner-card{
  overflow:hidden;background:var(--v-surface);border:1px solid var(--v-sep);
  border-radius:22px;box-shadow:var(--v-shadow);
}
.visite-partner-thumb{display:block;width:100%;height:160px;object-fit:cover;background:#e9e4da}
.visite-partner-placeholder{display:flex;align-items:center;justify-content:center;font-size:36px;color:var(--v-primary)}
.visite-partner-card-body{padding:15px 16px 16px}
.visite-partner-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}
.visite-partner-card h3{font-family:Georgia,'Times New Roman',serif;font-size:1.35rem;line-height:1.15;margin:0 0 6px;color:var(--v-text)}
.visite-partner-address,.visite-partner-desc{margin:0 0 7px;color:var(--v-muted);font-size:.82rem;line-height:1.4}
.visite-partner-desc{color:var(--v-text)}
.visite-affiliate-note{display:block;margin:7px 0 0;color:var(--v-muted);font-size:.7rem}
.visite-partner-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:13px}
.visite-partner-action{
  display:inline-flex;align-items:center;justify-content:center;min-height:38px;
  padding:8px 12px;border:1px solid var(--v-sep);border-radius:999px;
  text-decoration:none;color:var(--v-text);background:var(--v-paper);font-size:.78rem;font-weight:800
}
.visite-partner-action.is-sheet{color:var(--v-primary)}
.visite-partner-action.is-affiliate{background:var(--v-primary);border-color:var(--v-primary);color:#fff}
.visite-btn-affiliate{background:#c65c22;color:#fff}
.visite-affiliate-box{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin:14px 0;padding:12px 14px;border-radius:16px;background:#fff2e8;
  border:1px solid #f0d0ba;color:#8f451c;font-weight:800
}
.visite-affiliate-box small{font-size:.72rem;font-weight:650;opacity:.8}
.visite-partner-detail-actions{margin-top:14px}
@media (min-width:700px){
  .visite-partners-page .visite-cards,.visite-view[data-view="partners"] .visite-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
}


/* v1.3.24 — affiliation partner admin helper */
.visite-admin-affiliate-box{
  padding:14px 16px;margin:12px 0 16px;border:1px solid #d7c2ae;
  background:#fff8f1;border-radius:14px;
}
/* v1.3.27 — guide musée visuel */
.visite-tour-page.visite-museum .visite-route-actions{display:none}
.visite-museum .visite-route-stops{display:grid;gap:18px;margin-top:18px}
.visite-museum .visite-route-stops .visite-step{display:block;background:#fff;border:1px solid rgba(20,35,55,.10);border-radius:24px;overflow:hidden;padding:0;box-shadow:0 12px 34px rgba(31,42,55,.08)}
.visite-museum .visite-route-stops .visite-step-num{display:none}
.visite-museum .visite-route-stops .visite-step-body{width:100%}
.visite-museum .visite-step-photo{width:100%;height:auto;max-height:520px;object-fit:contain;background:#f2eee6;border-radius:0!important;display:block;margin:0}
.visite-museum .visite-museum-copy{padding:18px 18px 20px}
.visite-museum .visite-route-stops .visite-step-body h4{font-family:Georgia,serif;font-size:25px;line-height:1.08;color:#132d4f;margin:0 0 7px}
.visite-museum-meta{font-size:13px;font-weight:700;color:#7c7066;margin-bottom:10px}
.visite-museum-location{display:inline-flex;align-items:center;gap:5px;background:#eef4ff;color:#173f78;border-radius:999px;padding:7px 10px;font-size:12px;font-weight:800;margin:0 0 12px}
.visite-museum .visite-route-stops .visite-step-body p{font-size:15px;line-height:1.55;color:#514b46;margin:8px 0}
.visite-look-closer{background:#f7f4ed;border-radius:16px;padding:13px 15px;margin-top:13px}
.visite-look-closer strong{display:block;color:#173f78;margin-bottom:6px}.visite-look-closer ul{margin:0;padding-left:20px;color:#514b46;font-size:14px;line-height:1.45}
.visite-museum-story{border-left:3px solid #d5b77a;padding-left:12px;margin-top:14px!important}
.visite-museum-audio{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:14px;padding:12px;border:0;border-radius:15px;background:#173f78;color:#fff;font-weight:800;text-decoration:none}
.visite-museum-progress{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:#8b8076;font-weight:800;margin-bottom:6px}

/* v1.3.28 — Sélecteur de villes intelligent */
.visite-city-results{display:block}
.visite-city-group{margin-top:13px}
.visite-city-group:first-child{margin-top:4px}
.visite-city-group-title{margin:0 4px 7px;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--v-muted);font-weight:850}
.visite-city-group-list{display:grid;gap:7px}
.visite-city-show-all{width:100%;margin-top:13px;min-height:45px;border:1px solid var(--v-sep);border-radius:14px;background:var(--v-surface);color:var(--v-primary);font-weight:800;font-size:.86rem;display:flex;align-items:center;justify-content:center;gap:7px;cursor:pointer}
.visite-city-show-all span{font-size:1.25rem;line-height:1}
.visite-city-group.is-nearby .visite-city-result{border-color:#b9d1e6;background:#f7fbff;box-shadow:0 5px 18px rgba(31,75,112,.08)}
.visite-city-sheet{overscroll-behavior:contain}

/* v1.3.29 — sélecteur de villes compact */
.visite-city-geo-status.is-error{margin:-3px 4px 7px;padding:0;border:0;background:transparent;border-radius:0;display:block;color:var(--v-muted);font-size:.72rem;line-height:1.35}
.visite-city-geo-status.is-error .visite-city-geo-inline{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap}
.visite-city-geo-status.is-error button{border:0;background:transparent;padding:2px 0;color:var(--v-primary);font:inherit;font-weight:850;text-decoration:underline;text-underline-offset:2px;cursor:pointer}


/* v1.3.32 — Accueil intelligent */
.visite-smart-home{margin:18px 0 8px}
.visite-smart-chips{display:flex;gap:8px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:none}
.visite-smart-chips::-webkit-scrollbar{display:none}
.visite-smart-chip{flex:0 0 auto;border:1px solid #e6dfd5;background:#fff;border-radius:999px;padding:9px 12px;font-size:13px;font-weight:700;color:#3d3934;box-shadow:0 2px 8px rgba(0,0,0,.03)}
.visite-smart-chip.is-on{background:#1e3a5f;color:#fff;border-color:#1e3a5f}

/* 1.3.33 — Ma journée + favoris */
.visite-tour-cover{position:relative}
.visite-favorite-btn{position:absolute;right:12px;top:12px;z-index:4;width:38px;height:38px;border:0;border-radius:50%;background:rgba(255,255,255,.92);box-shadow:0 3px 12px rgba(0,0,0,.15);font-size:24px;line-height:38px;color:#26384b;padding:0;text-align:center}
.visite-favorite-btn.is-on{background:#fff7d6;color:#b77800}
.visite-day-home,.visite-favorites-home{margin:20px 0 8px}
.visite-day-intro{margin:-4px 0 10px}
.visite-day-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.visite-day-choices button{border:1px solid #ded8cf;background:#fff;border-radius:13px;padding:11px 6px;font-weight:800;color:#26384b}
.visite-day-choices button.is-on{background:#1e3a5f;color:#fff;border-color:#1e3a5f}
.visite-day-summary{display:flex;justify-content:space-between;align-items:center;background:#f5f2ed;border-radius:14px;padding:10px 12px;margin:8px 0 10px}
.visite-day-summary span{font-size:13px;color:#6d665d}
.visite-day-pause{background:#fff8e8;border:1px solid #f0dfb5;border-radius:14px;padding:11px 12px;margin-top:10px;font-size:14px}
@media(max-width:380px){.visite-day-choices{grid-template-columns:1fr}.visite-day-choices button{padding:9px}}


/* 1.3.34 — mode hors connexion léger */
.visite-offline-home{display:flex;align-items:center;gap:14px;justify-content:space-between;margin:18px 0;padding:14px 15px;background:#fff;border:1px solid rgba(16,44,72,.10);border-radius:18px;box-shadow:0 4px 16px rgba(16,44,72,.05)}
.visite-offline-copy{display:flex;flex-direction:column;gap:3px;min-width:0}.visite-offline-copy strong{font-size:14px;color:#17324d}.visite-offline-copy span{font-size:12px;line-height:1.35;color:#6c7b89}
#visite-offline-save{flex:0 0 auto;border:0;border-radius:13px;padding:10px 12px;background:#eef5ff;color:#1769aa;font-weight:700;font-size:12px;cursor:pointer}#visite-offline-save.is-saved{background:#eef9f1;color:#278548}
.visite-app.is-offline .visite-offline-home{background:#fff8e9}.visite-app.is-offline #visite-offline-save{display:none}
@media(max-width:520px){.visite-offline-home{align-items:flex-start;flex-direction:column}.visite-offline-home #visite-offline-save{width:100%}}


/* v1.3.35 — filtres partenaires plus design + fiche partenaire enrichie */
#visite-partner-filters{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:9px;margin:0 -4px 16px;padding:3px 4px 8px;scrollbar-width:none;scroll-snap-type:x proximity}
#visite-partner-filters::-webkit-scrollbar{display:none}
#visite-partner-filters .visite-partner-filter{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;min-height:46px;padding:9px 13px;border-radius:16px;background:#fff;border:1px solid #e2dbd0;box-shadow:0 4px 14px rgba(31,45,61,.05);font-size:.84rem;font-weight:800;text-transform:none;scroll-snap-align:start}
#visite-partner-filters .visite-partner-filter .visite-chip-icon{display:grid;place-items:center;width:25px;height:25px;border-radius:9px;background:#f5f1e9;font-size:14px}
#visite-partner-filters .visite-partner-filter small{display:grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:#f0ece5;color:#6e675f;font-size:.66rem;font-weight:900}
#visite-partner-filters .visite-partner-filter.is-on{background:#173f6d;color:#fff;border-color:#173f6d;box-shadow:0 8px 20px rgba(23,63,109,.18)}
#visite-partner-filters .visite-partner-filter.is-on .visite-chip-icon,#visite-partner-filters .visite-partner-filter.is-on small{background:rgba(255,255,255,.16);color:#fff}
.visite-partner-placeholder{background:linear-gradient(145deg,#eef4f8,#e8e1d5)}
.visite-partner-placeholder span{display:grid;place-items:center;width:70px;height:70px;border-radius:24px;background:rgba(255,255,255,.76);box-shadow:0 10px 30px rgba(23,45,70,.08);font-size:34px}
.visite-partner-detail-kicker{display:inline-flex;align-items:center;gap:7px;margin:2px 0 8px;padding:7px 10px;border-radius:999px;background:#eef4fb;color:#173f6d;font-size:.74rem;font-weight:850;text-transform:capitalize}
.visite-partner-detail-title{margin:0 0 8px;font-family:Georgia,'Times New Roman',serif;font-size:2rem;line-height:1.05;color:#172f50}
.visite-partner-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:14px 0}
.visite-partner-info-grid>div{padding:12px 13px;border-radius:16px;background:#fff;border:1px solid #e7e0d7;box-shadow:0 5px 18px rgba(31,45,61,.04)}
.visite-partner-info-grid small{display:block;margin-bottom:4px;color:#837b72;font-size:.66rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em}
.visite-partner-info-grid strong{display:block;color:#283848;font-size:.82rem;line-height:1.35}
@media(max-width:430px){.visite-partner-info-grid{grid-template-columns:1fr}.visite-partner-detail-title{font-size:1.78rem}}

/* v1.3.36 — partenaires lumineux, photos, réservation et pastilles premium */
.visite-view[data-view="partners"] .visite-shell{background:linear-gradient(180deg,#fffdf8 0%,#f8fbff 58%,#fffdf8 100%)}
.visite-view[data-view="partners"] .visite-muted{color:#6f746f}
#visite-partner-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:4px 0 18px;padding:0;overflow:visible}
#visite-partner-filters .visite-partner-filter{min-width:0;min-height:62px;padding:8px 7px;border-radius:18px;display:grid;grid-template-columns:34px minmax(0,1fr) 22px;align-items:center;gap:6px;background:#fff;border:1px solid #e8e1d8;box-shadow:0 8px 22px rgba(35,54,73,.07);font-size:.74rem}
#visite-partner-filters .visite-partner-filter .visite-chip-icon{width:34px;height:34px;border-radius:12px;background:linear-gradient(145deg,#f7f2e9,#eef6ff);font-size:18px}
#visite-partner-filters .visite-partner-filter small{width:22px;min-width:22px;height:22px;padding:0;font-size:.62rem}
#visite-partner-filters .visite-partner-filter.is-on{background:linear-gradient(145deg,#173f6d,#24588d);border-color:#24588d;box-shadow:0 10px 24px rgba(24,64,107,.22)}
#visite-partner-filters .visite-partner-filter.is-on .visite-chip-icon,#visite-partner-filters .visite-partner-filter.is-on small{background:rgba(255,255,255,.16);color:#fff}
@media(max-width:360px){#visite-partner-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}

.visite-partners-page .visite-cards,.visite-view[data-view="partners"] .visite-cards{display:grid;gap:12px}
.visite-partner-card-v2{display:grid;grid-template-columns:118px minmax(0,1fr);min-height:150px;background:#fff;border:1px solid #ece5dc;border-radius:22px;overflow:hidden;box-shadow:0 10px 28px rgba(33,54,76,.08)}
.visite-partner-card-v2 .visite-partner-photo-link{display:block;min-height:100%;background:#eaf1f6}
.visite-partner-card-v2 .visite-partner-thumb{width:100%;height:100%;min-height:150px;object-fit:cover;display:block}
.visite-partner-card-v2 .visite-partner-card-body{padding:13px 14px 12px;display:flex;flex-direction:column;justify-content:center}
.visite-partner-card-v2 .visite-partner-head{align-items:flex-start;margin-bottom:6px;flex-wrap:wrap}
.visite-partner-card-v2 .visite-pill{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:999px;background:#fff2df;color:#6b4a22;font-size:.68rem;font-weight:850;text-transform:none}
.visite-partner-card-v2 .visite-pill.type-cafe{background:#f3e9df;color:#68462b}.visite-partner-card-v2 .visite-pill.type-activite{background:#e7f2ff;color:#1c568d}.visite-partner-card-v2 .visite-pill.type-boutique{background:#fff0f7;color:#8d3f69}.visite-partner-card-v2 .visite-pill.type-bar{background:#eef0ff;color:#4a4f91}.visite-partner-card-v2 .visite-pill.type-office-tourisme{background:#eaf7f7;color:#2f6d70}
.visite-bookable-badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;background:#e9f8ee;color:#267445;font-size:.64rem;font-weight:850;white-space:nowrap}
.visite-partner-card-v2 h3{font-size:1.08rem;margin:0 0 4px;line-height:1.08}.visite-partner-card-v2 h3 a{text-decoration:none;color:#16355a}
.visite-partner-meta{margin:0 0 4px;color:#b06e20;font-size:.72rem;font-weight:750}
.visite-partner-card-v2 .visite-partner-desc{margin:0;color:#5f625f;font-size:.74rem;line-height:1.38}
.visite-partner-card-v2 .visite-partner-actions{margin-top:8px;gap:6px}.visite-partner-card-v2 .visite-partner-action{min-height:32px;padding:6px 10px;font-size:.68rem;border-radius:11px}.visite-partner-card-v2 .visite-partner-action.is-sheet{background:#f6f2eb;color:#173f6d}.visite-partner-card-v2 .visite-partner-action.is-affiliate{background:#173f6d;color:#fff;border-color:#173f6d}
@media(max-width:380px){.visite-partner-card-v2{grid-template-columns:104px minmax(0,1fr)}.visite-partner-card-v2 .visite-partner-thumb{min-height:155px}.visite-partner-card-v2 .visite-partner-card-body{padding:11px}.visite-partner-card-v2 .visite-partner-desc{display:none}}
@media(min-width:700px){.visite-partners-page .visite-cards,.visite-view[data-view="partners"] .visite-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}

.visite-partner-page-v2{background:#fffaf2;color:#17304d}.visite-partner-page-v2 .visite-topnav{background:#fffaf2;border-bottom:1px solid #e7ded1}
.visite-partner-detail-v2{padding-bottom:calc(92px + env(safe-area-inset-bottom,0px))}
.visite-partner-hero-v2{position:relative;height:260px;overflow:hidden;background:#dfe8ec}.visite-partner-hero-v2 img{width:100%;height:100%;object-fit:cover;display:block}.visite-partner-hero-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,30,48,.05),rgba(10,30,48,.18))}
.visite-partner-main-card{position:relative;margin:-24px 14px 0;padding:19px 18px 24px;background:#fff;border:1px solid #ece3d8;border-radius:28px;box-shadow:0 18px 42px rgba(31,54,78,.12)}
.visite-partner-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.visite-partner-title-row>div:first-child{min-width:0;flex:1}.visite-partner-badges{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.visite-bookable-badge.is-large{font-size:.68rem;padding:7px 9px}.visite-offer-badge{display:inline-flex;padding:7px 9px;border-radius:999px;background:#fff0e9;color:#b3512b;font-size:.68rem;font-weight:850;max-width:145px;text-align:center}
.visite-partner-detail-title{font-size:2rem;color:#132f53;margin-bottom:7px}.visite-partner-location{margin:0;color:#747973;font-size:.82rem;line-height:1.4}
.visite-partner-quick-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:18px 0}.visite-partner-quick{display:flex;min-height:78px;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:8px 4px;border-radius:17px;background:#fff;border:1px solid #e8e2d9;box-shadow:0 6px 18px rgba(31,54,78,.06);color:#173f6d;text-decoration:none}.visite-partner-quick span{font-size:1.25rem}.visite-partner-quick b{font-size:.7rem;line-height:1.15}.visite-partner-quick.is-book{background:linear-gradient(145deg,#173f6d,#225990);color:#fff;border-color:#1d4d7f;box-shadow:0 10px 24px rgba(24,64,107,.22)}
.visite-partner-about{margin-top:16px;padding:0 2px}.visite-partner-about h2,.visite-partner-practical h2{font-family:Georgia,'Times New Roman',serif;color:#17355b;font-size:1.2rem;margin:0 0 8px}.visite-partner-about p{margin:0;color:#545b5e;font-size:.92rem;line-height:1.55}
.visite-partner-practical{margin-top:18px;padding:15px;border-radius:19px;background:linear-gradient(145deg,#f8fbff,#fff9ef);border:1px solid #e8e2d8}.visite-practical-row{display:grid;grid-template-columns:30px 1fr;gap:9px;align-items:start;padding:10px 0;border-top:1px solid rgba(37,67,96,.09)}.visite-practical-row:first-of-type{border-top:0}.visite-practical-row>span{width:30px;height:30px;display:grid;place-items:center;border-radius:10px;background:#eaf3ff;color:#17456f;font-weight:900}.visite-practical-row small{display:block;color:#898174;font-size:.62rem;text-transform:uppercase;letter-spacing:.07em;font-weight:850;margin-bottom:2px}.visite-practical-row strong{display:block;color:#273b50;font-size:.82rem;line-height:1.4}
.visite-affiliate-disclosure{margin-top:14px;padding:10px 12px;border-radius:13px;background:#fff7e9;color:#806b4e;font-size:.68rem;line-height:1.4}
@media(max-width:430px){.visite-partner-hero-v2{height:230px}.visite-partner-main-card{margin:-20px 10px 0;padding:17px 14px 22px}.visite-partner-title-row{display:block}.visite-partner-badges{align-items:flex-start;flex-direction:row;flex-wrap:wrap;margin-top:8px}.visite-partner-detail-title{font-size:1.82rem}.visite-partner-quick-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.visite-partner-quick{min-height:68px}}


/* v1.3.37 — filtres partenaires coulissants + interface allégée */
#visite-partner-filters{display:flex !important;grid-template-columns:none !important;flex-wrap:nowrap !important;overflow-x:auto !important;overflow-y:hidden !important;gap:10px !important;margin:4px -4px 16px !important;padding:3px 4px 9px !important;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none}
#visite-partner-filters::-webkit-scrollbar{display:none}
#visite-partner-filters .visite-partner-filter{flex:0 0 auto !important;width:auto !important;min-width:max-content !important;min-height:48px !important;padding:8px 13px !important;border-radius:18px !important;display:inline-flex !important;grid-template-columns:none !important;align-items:center !important;gap:8px !important;scroll-snap-align:start;font-size:.78rem !important}
#visite-partner-filters .visite-partner-filter .visite-chip-icon{width:30px !important;height:30px !important;border-radius:11px !important;font-size:16px !important;flex:0 0 30px}
#visite-partner-filters .visite-partner-filter small{width:auto !important;min-width:22px !important;height:22px !important;padding:0 6px !important;font-size:.64rem !important}
.visite-partner-card-v2 .visite-partner-action.is-sheet b{display:none !important}
.visite-favorite-btn{display:none !important}
.visite-offline-home{display:none !important}

/* v1.3.39 — interrupteur de géolocalisation */
#visite-geo-btn{min-width:128px;display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:9px 12px!important}
.visite-geo-switch{width:42px;height:24px;border-radius:999px;background:#d7d4cc;padding:3px;display:inline-flex;align-items:center;transition:.2s}
.visite-geo-switch i{display:block;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.18);transition:.2s}
#visite-geo-btn.is-on .visite-geo-switch{background:#76a67f}
#visite-geo-btn.is-on .visite-geo-switch i{transform:translateX(18px)}
.visite-geo-label{font-size:.76rem;font-weight:800}
.visite-smart-chip.is-disabled{opacity:.42;filter:grayscale(1);cursor:not-allowed}


/* v1.3.40 — géolocalisation compacte façon iOS */
.visite-geo-banner.visite-geo-compact{min-height:72px;padding:13px 16px;gap:14px;justify-content:space-between}
.visite-geo-compact .visite-geo-copy{display:flex;flex-direction:column;gap:3px;min-width:0}
.visite-geo-compact .visite-geo-copy strong{font-size:.9rem;color:var(--v-text);line-height:1.2}
.visite-geo-compact .visite-geo-copy span{font-size:.72rem;color:var(--v-muted);line-height:1.25}
#visite-geo-btn.visite-geo-toggle{appearance:none;-webkit-appearance:none;border:0!important;background:transparent!important;box-shadow:none!important;padding:4px!important;margin:0!important;min-width:58px!important;width:58px!important;height:40px!important;display:grid!important;place-items:center!important;flex:0 0 58px;cursor:pointer}
#visite-geo-btn .visite-geo-switch{width:52px;height:30px;padding:3px;background:#d7d7d7;border-radius:999px;display:flex;align-items:center;transition:background .2s ease}
#visite-geo-btn .visite-geo-switch i{width:24px;height:24px;background:#fff;border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,.22);transform:translateX(0);transition:transform .2s ease}
#visite-geo-btn.is-on .visite-geo-switch{background:var(--v-primary)}
#visite-geo-btn.is-on .visite-geo-switch i{transform:translateX(22px)}
.visite-smart-chip.is-disabled,[data-smart="near"].is-disabled{opacity:.42;filter:grayscale(.35);cursor:default}


/* v1.3.42 — Carte visuelle par catégories */
.visite-map-shell{padding-bottom:110px}
.visite-map-intro{margin:6px 0 12px}
.visite-map-categories{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 10px;margin:0 -2px 4px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.visite-map-categories::-webkit-scrollbar{display:none}
.visite-map-cat{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;border:1px solid var(--v-sep);background:#fff;color:#24364a;border-radius:999px;padding:9px 13px;font-size:12px;font-weight:750;box-shadow:0 3px 12px rgba(25,35,45,.05)}
.visite-map-cat span{font-size:16px;line-height:1}
.visite-map-cat.is-on{background:#174a82;color:#fff;border-color:#174a82}
.visite-map-wrap{position:relative;margin-top:2px}
.visite-map-shell .visite-map-lg{height:min(58vh,520px)!important;min-height:390px;margin:0;border-radius:22px;border:1px solid #ddd7cd;box-shadow:0 8px 24px rgba(30,45,60,.10)}
.visite-map-locate{position:absolute;z-index:500;right:12px;bottom:13px;border:0;background:rgba(255,255,255,.96);color:#173f78;border-radius:999px;padding:10px 14px;font-weight:800;box-shadow:0 5px 18px rgba(20,35,50,.18);display:flex;gap:6px;align-items:center}
.visite-map-marker-wrap{background:transparent!important;border:0!important}
.visite-map-marker{width:36px;height:36px;border-radius:50% 50% 50% 6px;transform:rotate(-45deg);display:grid;place-items:center;border:3px solid #fff;box-shadow:0 3px 12px rgba(0,0,0,.28);background:#2a77ce;color:#fff}
.visite-map-marker span{transform:rotate(45deg);font-size:17px;font-weight:900;line-height:1}
.visite-map-marker-restaurant{background:#f28a13}.visite-map-marker-hebergement{background:#7438b8}.visite-map-marker-commerce{background:#e83273}.visite-map-marker-culture{background:#246bc0}.visite-map-marker-service{background:#6d7780}.visite-map-marker-transport{background:#e52b35}.visite-map-marker-parking{background:#246fe8}.visite-map-marker-nature{background:#239338}.visite-map-marker-plage{background:#18a8c8}.visite-map-marker-urgence{background:#d91f2a}.visite-map-marker-activite{background:#31a33a}
.visite-map-label{background:rgba(255,255,255,.96)!important;border:0!important;border-radius:8px!important;color:#1c2c3e!important;font-weight:800!important;font-size:11px!important;padding:5px 8px!important;box-shadow:0 2px 8px rgba(0,0,0,.14)!important}
.visite-map-label:before{display:none!important}
.leaflet-popup-content-wrapper{border-radius:18px!important;box-shadow:0 10px 30px rgba(20,35,50,.22)!important}.leaflet-popup-content{margin:10px!important}
.visite-map-popup{display:grid;grid-template-columns:80px 1fr;gap:10px;min-width:230px}.visite-map-popup-img{width:80px;height:88px;object-fit:cover;border-radius:12px}.visite-map-popup-copy{min-width:0}.visite-map-popup-copy strong{display:block;font-family:Georgia,'Times New Roman',serif;font-size:17px;line-height:1.1;color:#172f50;margin:2px 0 4px}.visite-map-popup-cat{display:block;color:#687584;font-size:11px;font-weight:750;margin-bottom:5px}.visite-map-popup-copy p{margin:0 0 6px;font-size:11px;line-height:1.35;color:#344454}.visite-map-popup-meta{font-size:11px;color:#475767;margin:3px 0}.visite-map-popup-promo{font-size:11px;color:#b4541c;font-weight:800;margin:3px 0}.visite-map-popup-btn{display:block;margin-top:7px;text-align:center;text-decoration:none;background:#174a82;color:#fff!important;border-radius:999px;padding:7px 10px;font-size:11px;font-weight:850}
.visite-map-nearby{display:flex;gap:10px;overflow-x:auto;margin:12px -2px 0;padding:2px 2px 8px;scrollbar-width:none}.visite-map-nearby::-webkit-scrollbar{display:none}.visite-map-mini-card{flex:0 0 150px;background:#fff;border:1px solid var(--v-sep);border-radius:17px;padding:8px;text-decoration:none;color:inherit;box-shadow:0 4px 14px rgba(30,45,60,.06)}.visite-map-mini-card img,.visite-map-mini-placeholder{width:100%;height:92px;border-radius:12px;object-fit:cover;background:#eef3f7;display:grid;place-items:center;font-size:28px}.visite-map-mini-card strong{display:block;font-family:Georgia,'Times New Roman',serif;color:#142f51;font-size:14px;line-height:1.12;margin:7px 2px 3px}.visite-map-mini-card span{display:block;color:#6b746f;font-size:11px;margin:0 2px 2px}
@media(max-width:430px){.visite-map-shell .visite-map-lg{min-height:430px;height:54vh!important}.visite-map-cat{padding:8px 11px}.visite-map-popup{grid-template-columns:70px 1fr}.visite-map-popup-img{width:70px;height:80px}}


/* v1.3.43 — repères cartographiques explicites */
.visite-user-marker-wrap{background:transparent!important;border:0!important;overflow:visible!important}
.visite-user-marker{position:relative;width:30px;height:30px;border-radius:50%;background:#1769c2;border:4px solid #fff;box-shadow:0 3px 13px rgba(13,64,116,.38)}
.visite-user-marker:before{content:"";position:absolute;inset:-10px;border-radius:50%;background:rgba(23,105,194,.20);z-index:-1}
.visite-user-marker span{position:absolute;left:50%;top:50%;width:8px;height:8px;border-radius:50%;background:#fff;transform:translate(-50%,-50%)}
.visite-user-marker.is-pulse:before{animation:visiteGeoPulse .8s ease-out 1}
@keyframes visiteGeoPulse{0%{transform:scale(.8);opacity:1}100%{transform:scale(2.1);opacity:0}}
.visite-user-label{position:absolute;left:38px;top:2px;white-space:nowrap;background:rgba(255,255,255,.97);color:#123f72;font-size:12px;font-weight:900;padding:6px 9px;border-radius:9px;box-shadow:0 2px 9px rgba(0,0,0,.16)}
.visite-user-popup{display:flex;flex-direction:column;gap:3px;color:#17324e}
.visite-user-popup strong{font-size:15px}.visite-user-popup span{font-size:12px;color:#6d747b}
.visite-city-map-label{background:rgba(255,255,255,.90)!important;border:0!important;box-shadow:0 2px 8px rgba(0,0,0,.15)!important;border-radius:8px!important;color:#173f78!important;font-size:14px!important;font-weight:900!important;padding:5px 9px!important}
.visite-city-map-label:before{display:none!important}
.visite-map-label{pointer-events:none!important}
