/* V0.1.496 — diagnostic complet des doublons ; diffusion découpée conservée */
:root {
  --bg: #f5f7f6;
  --surface: #ffffff;
  --surface-2: #edf4f1;
  --text: #17201d;
  --muted: #69736f;
  --line: #dce5e1;
  --primary: #0f766e;
  --primary-strong: #0a5d57;
  --accent: #d97745;
  --sleep: #0f766e;
  --discover: #d97745;
  --all: #475569;
  --all-soft: rgba(71,85,105,.12);
  --danger: #b5483f;
  --shadow: 0 12px 35px rgba(25, 44, 37, .12);
  --radius: 20px;
  --safe-bottom: env(safe-area-inset-bottom, 0px);
}

* { box-sizing: border-box; }
html, body { height: 100%; margin: 0; }
body {
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--text);
  background: var(--bg);
  overflow: hidden;
  -webkit-tap-highlight-color: transparent;
}
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 3px solid rgba(15,118,110,.22);
  outline-offset: 2px;
}

.app-shell {
  height: 100vh;
  height: 100svh;
  height: var(--app-height, 100svh);
  max-height: var(--app-height, 100svh);
  display: grid;
  grid-template-rows: auto auto auto minmax(0, 1fr) auto;
  background: var(--bg);
}

.topbar {
  min-height: 64px;
  padding: max(10px, env(safe-area-inset-top)) 14px 8px;
  display: flex;
  align-items: center;
  gap: 8px;
  background: rgba(255,255,255,.96);
  border-bottom: 1px solid var(--line);
  z-index: 30;
}
.brand { display: flex; align-items: center; gap: 10px; min-width: 0; margin-right: auto; }
.brand-mark {
  width: 42px; height: 42px; display: grid; place-items: center;
  border-radius: 14px; background: var(--primary); color: #fff; font-size: 25px; font-weight: 800;
  box-shadow: 0 7px 16px rgba(15,118,110,.2);
}
.brand-copy { min-width: 0; display: flex; flex-direction: column; }
.brand-copy strong { font-size: 17px; line-height: 1.1; letter-spacing: -.2px; }
.brand-copy span { margin-top: 3px; font-size: 11px; color: var(--muted); }
.icon-btn {
  width: 42px; height: 42px; border: 0; border-radius: 14px;
  background: var(--surface-2); color: var(--text); font-size: 21px;
  display: grid; place-items: center;
}
.install-btn { background: rgba(15,118,110,.1); color: var(--primary); }
.refresh-btn { background: var(--surface-2); color: var(--text); }

.search-row {
  display: flex; gap: 8px; align-items: center; padding: 10px 12px 6px;
  background: var(--surface); z-index: 30; position: relative;
}
.search-stack { flex: 1; min-width: 0; position: relative; }
.search-box {
  width: 100%; min-width: 0; height: 44px; display: flex; align-items: center; gap: 8px;
  border: 1px solid var(--line); border-radius: 15px; padding: 0 12px; background: #f8faf9;
}
.search-box > span { color: var(--muted); font-size: 20px; }
.search-box input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--text); }
#searchInput::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; }

.search-clear-btn {
  position: absolute; z-index: 3; right: 7px; top: 50%; transform: translateY(-50%);
  width: 30px; height: 30px; border: 0; border-radius: 10px; padding: 0;
  display: grid; place-items: center; background: var(--surface-2); color: var(--muted);
  font-size: 20px; line-height: 1; cursor: pointer;
}
.search-clear-btn[hidden] { display: none !important; }
.search-stack.has-query .search-box { padding-right: 43px; }
.search-clear-btn:hover, .search-clear-btn:focus-visible { color: var(--text); background: #e8efec; }

/* V0.1.346 — les résultats s'ancrent sur toute la ligne de recherche,
   et non plus sur le seul champ : largeur utile complète PC / mobile. */
.global-search-results {
  position: absolute; z-index: 80; left: 12px; right: 12px; top: calc(100% + 6px);
  max-height: min(58dvh, 460px); overflow-y: auto; overscroll-behavior: contain; padding: 7px;
  border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.98);
  box-shadow: 0 14px 36px rgba(23,32,29,.16);
}
.global-search-results[hidden] { display: none !important; }
.search-section-label { padding: 7px 9px 5px; color: var(--muted); font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.search-result-btn {
  width: 100%; min-height: 48px; display: grid; grid-template-columns: 34px 1fr; gap: 8px; align-items: center;
  border: 0; border-radius: 12px; padding: 7px 9px; background: transparent; color: var(--text); text-align: left; cursor: pointer;
}
.search-result-btn:hover, .search-result-btn:focus-visible { background: #f2f6f4; }
.search-result-icon { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 10px; background: #edf3f0; font-size: 17px; }
.search-result-copy { min-width: 0; display: grid; gap: 2px; }
.search-result-copy strong, .search-result-copy small {
  min-width: 0; overflow: hidden; white-space: normal; overflow-wrap: anywhere;
  display: -webkit-box; -webkit-box-orient: vertical;
}
.search-result-copy strong { font-size: 14px; line-height: 1.25; -webkit-line-clamp: 2; }
.search-result-copy small { color: var(--muted); font-size: 11px; line-height: 1.3; -webkit-line-clamp: 2; }
.search-result-btn.world { margin-top: 4px; border-top: 1px solid var(--line); border-radius: 0 0 12px 12px; }
.search-loading { padding: 12px 9px; color: var(--muted); font-size: 13px; }


/* V0.1.346 — largeur/hauteur adaptatives de la recherche sur téléphone. */
@media (max-width: 859px) {
  .global-search-results {
    left: 8px;
    right: 8px;
    max-height: min(60dvh, 440px);
  }
}

.filter-btn {
  height: 44px; border: 1px solid var(--line); border-radius: 15px; padding: 0 13px;
  background: var(--surface); color: var(--text); font-weight: 650;
  display: inline-flex; align-items: center; justify-content: center; gap: 7px;
}
.filter-btn-icon { width: 19px; height: 19px; display: block; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linejoin: round; }


.quick-filters {
  display: flex; gap: 8px; overflow-x: auto; padding: 6px 12px 10px;
  background: var(--surface); scrollbar-width: none; z-index: 25;
}
.quick-filters::-webkit-scrollbar { display: none; }
.chip {
  flex: 0 0 auto; border: 1px solid var(--line); border-radius: 999px; padding: 8px 12px;
  background: var(--surface); color: var(--text); font-size: 13px; font-weight: 650;
}
.chip.is-active { border-color: var(--primary); background: rgba(15,118,110,.1); color: var(--primary); }

.main-layout { min-height: 0; position: relative; }
.map-wrap { position: absolute; inset: 0; overflow: hidden; background: #dfe8e4; }
.map { width: 100%; height: 100%; z-index: 1; }
.leaflet-control-attribution { font-size: 10px !important; }
.leaflet-control-zoom { border: 0 !important; box-shadow: 0 5px 18px rgba(0,0,0,.13) !important; }
.leaflet-control-zoom a { color: var(--text) !important; border: 0 !important; }
.map-unavailable {
  position: absolute; inset: 0; z-index: 3; display: grid; align-content: center; justify-items: center;
  text-align: center; gap: 6px; padding: 30px; background: linear-gradient(145deg,#e9f0ed,#dfe9e5); color: var(--text);
}
.map-unavailable span { color: var(--muted); font-size: 14px; }
.map-fab {
  position: absolute; z-index: 15; border: 0; border-radius: 17px; box-shadow: var(--shadow);
  display: grid; place-items: center;
}
.list-fab {
  position: absolute; z-index: 15; left: 12px; bottom: 18px; min-height: 42px; padding: 0 13px;
  border: 0; border-radius: 14px; background: rgba(255,255,255,.96); color: var(--text);
  box-shadow: var(--shadow); font-size: 12px; font-weight: 800;
}

.trip-map-back-btn {
  position: absolute; z-index: 26; left: 50%; top: 72px; transform: translateX(-50%);
  min-height: 42px; max-width: calc(100% - 36px); padding: 0 16px;
  border: 1px solid rgba(15,118,110,.22); border-radius: 14px;
  background: rgba(255,255,255,.98); color: var(--primary-strong);
  box-shadow: 0 8px 24px rgba(23,32,29,.18); font: inherit; font-size: 13px; font-weight: 850;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.trip-map-back-btn[hidden] { display: none !important; }
.trip-map-back-btn:active { transform: translateX(-50%) translateY(1px); }

/* V0.1.552 — Autour : état actif explicite ; V0.1.154 — changement de zone + sortie volontaire. */
.around-search-zone-controls {
  position: absolute; z-index: 26; left: 50%; top: 72px; transform: translateX(-50%);
  max-width: calc(100% - 36px); display: flex; align-items: center; gap: 7px;
}
.around-search-zone-controls[hidden] { display: none !important; }
.around-search-zone-btn,
.around-mode-status {
  min-height: 42px; min-width: 0; padding: 0 15px;
  border: 1px solid rgba(15,118,110,.24); border-radius: 14px;
  background: rgba(255,255,255,.98); color: var(--primary-strong);
  box-shadow: 0 8px 24px rgba(23,32,29,.18); font: inherit; font-size: 13px; font-weight: 850;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.around-mode-status { display:flex; align-items:center; }
.around-mode-status[hidden] { display:none !important; }
.around-search-zone-btn:active { transform: translateY(1px); }
.around-exit-mode-btn {
  flex: 0 0 42px; width: 42px; height: 42px; padding: 0;
  border: 1px solid rgba(220,38,38,.28); border-radius: 14px;
  background: rgba(254,242,242,.98); color: #dc2626;
  box-shadow: 0 8px 24px rgba(127,29,29,.14); font: inherit; font-size: 24px; font-weight: 800; line-height: 1;
}
.around-exit-mode-btn:active { transform: translateY(1px); }
.around-anchor-marker {
  position: relative; width: 30px; height: 30px; border: 3px solid #fff; border-radius: 50% 50% 50% 7px;
  background: #dc2626; box-shadow: 0 4px 14px rgba(127,29,29,.34);
  display: grid; place-items: center; box-sizing: border-box; transform: rotate(-45deg);
}
.around-anchor-marker::after {
  content: ''; position: absolute; inset: 5px; border: 2px solid rgba(255,255,255,.98); border-radius: 50%;
}
.around-anchor-marker span {
  width: 5px; height: 5px; border-radius: 50%; background: #fff; display: block; transform: rotate(45deg);
}
.around-preview-marker {
  position: relative; width: 62px; height: 62px; display: grid; place-items: center; pointer-events: none;
}
.around-preview-marker::before,
.around-preview-marker::after {
  content: ''; position: absolute; border-radius: 50%; border: 3px solid #dc2626; box-sizing: border-box;
}
.around-preview-marker::before { width: 48px; height: 48px; background: rgba(220,38,38,.08); animation: aroundPreviewPulse 1.15s ease-out infinite; }
.around-preview-marker::after { width: 22px; height: 22px; border-width: 2px; background: rgba(255,255,255,.74); }
.around-preview-marker span { width: 7px; height: 7px; border-radius: 50%; background: #dc2626; z-index: 1; }
@keyframes aroundPreviewPulse {
  0% { transform: scale(.72); opacity: .95; }
  100% { transform: scale(1.28); opacity: 0; }
}
@media (max-width: 859px) {
  .around-search-zone-controls { top: 68px; }
}
.locate-fab { right: 14px; bottom: 20px; width: 48px; height: 48px; background: var(--surface); color: var(--primary); font-size: 23px; }
 .basemap-fab { right: 14px; top: 14px; width: 46px; height: 46px; background: rgba(255,255,255,.97); color: var(--primary); }
.map-expand-fab { right: 68px; top: 14px; width: 46px; height: 46px; background: rgba(255,255,255,.97); color: var(--primary); font-size: 24px; line-height: 1; }
.map-expand-fab[aria-pressed="true"] { background: var(--primary); color: #fff; }
.basemap-icon { position: relative; width: 23px; height: 18px; display: block; }
.basemap-icon::before, .basemap-icon::after { content: ""; position: absolute; left: 2px; width: 18px; height: 12px; border: 2px solid currentColor; border-radius: 3px; transform: rotate(-8deg) skewY(-7deg); background: rgba(255,255,255,.92); }
.basemap-icon::before { top: 0; }
.basemap-icon::after { top: 5px; left: 4px; opacity: .7; z-index: -1; }
.basemap-menu { position: absolute; z-index: 30; right: 14px; top: 67px; width: 190px; padding: 6px; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.98); box-shadow: 0 10px 28px rgba(0,0,0,.18); }
.basemap-menu[hidden] { display: none !important; }
.basemap-menu button { width: 100%; border: 0; border-radius: 11px; background: transparent; padding: 9px 10px; display: grid; gap: 2px; text-align: left; color: var(--text); }
.basemap-menu button + button { margin-top: 2px; }
.basemap-menu button strong { font-size: 14px; }
.basemap-menu button span { font-size: 11px; color: var(--muted); }
.basemap-menu button.is-active { background: rgba(15,107,99,.10); color: var(--primary); }
.basemap-menu button.is-active span { color: #456f69; }

.basemap-menu button.is-unavailable, .basemap-menu button:disabled { opacity: .52; cursor: not-allowed; }
.basemap-menu button.is-unavailable strong, .basemap-menu button:disabled strong { color: var(--muted); }
.add-fab { right: 14px; bottom: 78px; width: 54px; height: 54px; background: var(--primary); color: #fff; font-size: 34px; line-height: 1; }
.offline-badge {
  position: absolute; z-index: 14; left: 50%; top: 12px; transform: translateX(-50%);
  padding: 6px 10px; border-radius: 999px; background: rgba(23,32,29,.88); color: #fff; font-size: 12px;
}

.places-panel { display: none; }

.desktop-add-btn { display: none; }

.bottom-nav {
  min-height: calc(78px + var(--safe-bottom)); padding: 7px 6px calc(7px + var(--safe-bottom));
  display: grid; grid-template-columns: repeat(5, 1fr); align-items: end;
  background: rgba(255,255,255,.97); border-top: 1px solid var(--line); z-index: 40;
}
.nav-item, .nav-add { border: 0; background: transparent; color: var(--muted); }
.nav-item, .nav-add { min-width: 0; min-height: 58px; display: grid; justify-items: center; align-content: center; gap: 4px; padding: 5px 2px; }
.nav-item span { font-size: 25px; line-height: 1; }
.nav-item small, .nav-add small { font-size: 12px; line-height: 1.05; font-weight: 750; white-space: nowrap; }
.nav-item.is-active { color: var(--primary); }
.nav-add { align-self: stretch; color: var(--primary); }
.nav-add-icon {
  width: 46px; height: 40px; margin-top: -7px; border-radius: 14px; display: grid; place-items: center;
  background: var(--primary); color: #fff; font-size: 23px; line-height: 1; box-shadow: 0 7px 18px rgba(15,118,110,.25);
}

.backdrop {
  position: fixed; inset: 0; z-index: 80; background: rgba(15, 24, 21, .42); backdrop-filter: blur(2px);
  touch-action: none;
}
/* V0.1.207 — Mes spots / Autour laisse la carte réellement manipulable derrière la feuille,
   au lieu de laisser le navigateur agrandir toute l’interface lors d’un pincement. */
body.list-sheet-open .backdrop { pointer-events: none; background: transparent; backdrop-filter: none; }
.sheet {
  position: fixed; z-index: 90; left: 0; right: 0; bottom: 0; max-height: min(90dvh, 760px);
  overflow-y: auto; padding: 8px 16px calc(18px + var(--safe-bottom));
  border-radius: 26px 26px 0 0; background: var(--surface); box-shadow: 0 -18px 50px rgba(22,39,33,.18);
  transform: translateY(105%); visibility: hidden; transition: transform .24s ease, visibility .24s;
}
.sheet.is-open { transform: translateY(0); visibility: visible; }
.sheet.is-dragging { transition: none !important; }
.sheet-handle {
  position: relative; width: 58px; height: 22px; margin: -2px auto 4px;
  touch-action: none; user-select: none; -webkit-user-select: none;
}
.sheet-handle::after {
  content: ''; position: absolute; left: 50%; top: 8px; transform: translateX(-50%);
  width: 46px; height: 5px; border-radius: 99px; background: #b9c7c3;
}
.sheet-head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.sheet-head .js-close-sheet {
  width: 44px; height: 44px; flex: 0 0 44px; border: 1px solid var(--line);
  background: #eef3f1; color: var(--text); font-size: 27px; line-height: 1; font-weight: 500;
}
.sheet-head > div { min-width: 0; margin-right: auto; }
.sheet-back-btn {
  width: 40px; height: 40px; flex: 0 0 40px; display: grid; place-items: center;
  border: 1px solid var(--line); border-radius: 12px; background: var(--surface-2); color: var(--text);
  font-size: 22px; font-weight: 850; line-height: 1;
}
.sheet-back-btn[hidden] { display: none !important; }
.sheet h2 { margin: 1px 0 0; font-size: 22px; letter-spacing: -.4px; }
.eyebrow { margin: 0; text-transform: uppercase; letter-spacing: .12em; font-size: 10px; font-weight: 800; color: var(--primary); }
.compact-sheet { max-height: 72dvh; }

.location-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 13px; }
.primary-btn, .secondary-btn, .ghost-btn {
  min-height: 46px; border-radius: 14px; padding: 10px 14px; font-weight: 750;
}
.primary-btn { border: 1px solid var(--primary); background: var(--primary); color: #fff; }
.primary-btn:hover { background: var(--primary-strong); }
.secondary-btn { border: 1px solid var(--line); background: var(--surface-2); color: var(--text); }
.ghost-btn { border: 1px solid var(--line); background: var(--surface); color: var(--text); }

.address-search-block { margin-bottom: 14px; padding: 12px; border-radius: 16px; background: #f7f9f8; border: 1px solid var(--line); }
.address-search-block > label { display: flex; justify-content: space-between; gap: 8px; margin-bottom: 8px; font-size: 12px; font-weight: 700; }
.address-search-block > label span { color: var(--muted); font-weight: 500; }
.address-search-row { display: grid; grid-template-columns: 1fr auto; gap: 7px; }
.address-search-row input, .address-search-row button { min-height: 42px; border-radius: 12px; }
.address-search-row input { min-width: 0; padding: 0 11px; border: 1px solid var(--line); background: var(--surface); }
.address-search-row button { border: 0; padding: 0 12px; background: var(--text); color: #fff; font-weight: 700; }
.address-results { margin-top: 8px; display: grid; gap: 6px; }
.address-result { width: 100%; text-align: left; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); padding: 9px 10px; color: var(--text); }
.address-result small { display: block; margin-top: 3px; color: var(--muted); }

.place-form { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.full { grid-column: 1 / -1; }
.location-status { grid-column: 1 / -1; padding: 10px 12px; border-radius: 13px; background: rgba(15,118,110,.08); color: var(--primary); font-size: 13px; font-weight: 700; }
.location-status.is-missing { background: rgba(181,72,63,.08); color: var(--danger); }
.field { display: grid; gap: 6px; min-width: 0; }
.field > span, fieldset legend { font-size: 12px; font-weight: 750; color: #47524e; }
.field input, .field select, .field textarea {
  width: 100%; min-width: 0; border: 1px solid var(--line); border-radius: 13px; background: #fff; color: var(--text); padding: 11px 12px;
}
.field textarea { resize: vertical; }
.family-choice, .services-grid { border: 0; padding: 0; margin: 0; }
.family-choice { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.family-choice legend, .services-grid legend { margin-bottom: 7px; }
.choice-card { position: relative; }
.choice-card input { position: absolute; opacity: 0; pointer-events: none; }
.choice-card span { display: grid; gap: 3px; height: 100%; border: 1px solid var(--line); border-radius: 15px; padding: 11px; background: #fff; }
.choice-card small { color: var(--muted); font-size: 11px; }
.choice-card input:checked + span { border-color: var(--primary); background: rgba(15,118,110,.08); color: var(--primary); }
.sleep-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.stay-practical-fields { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.opening-mode-field { grid-column: 1 / -1; }
.height-limit-fields { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr; gap: 12px; }
#heightLimitValueField { grid-column: 1; }
.seasonal-opening-fields { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.stay-practical-fields[hidden], .height-limit-fields[hidden], .seasonal-opening-fields[hidden], #heightLimitValueField[hidden] { display: none !important; }
.services-grid { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }
.services-grid label, .filter-grid label {
  display: flex; align-items: center; gap: 8px; min-height: 42px; padding: 8px 10px;
  border-radius: 12px; background: #f7f9f8; border: 1px solid var(--line); font-size: 12px; font-weight: 650;
}
.services-grid input, .filter-grid input { accent-color: var(--primary); width: 17px; height: 17px; }
.add-save-targets {
  display: grid;
  gap: 8px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--surface-2);
}
.add-save-targets[hidden] { display: none !important; }
.add-save-targets-head { display: grid; gap: 3px; margin-bottom: 2px; }
.add-save-targets-head strong { font-size: 13px; }
.add-save-targets-head small { color: var(--muted); font-size: 11.5px; line-height: 1.45; }
.add-save-lists { display: grid; gap: 7px; }
.add-save-choice {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 48px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--surface);
}
.add-save-choice input { width: 19px; height: 19px; flex: 0 0 auto; accent-color: var(--primary); }
.add-save-choice > span { display: grid; gap: 2px; min-width: 0; }
.add-save-choice strong { font-size: 13px; }
.add-save-choice small { color: var(--muted); font-size: 11px; }
.form-actions { display: grid; grid-template-columns: 1fr 1.4fr; gap: 8px; padding-top: 4px; }

.detail-body { display: grid; gap: 14px; }
.detail-hero { display: flex; flex-wrap: wrap; gap: 8px; }
.detail-pill { display: inline-flex; align-items: center; gap: 5px; padding: 7px 10px; border-radius: 999px; background: var(--surface-2); font-size: 12px; font-weight: 700; }
.detail-services { display: grid; grid-template-columns: repeat(2, 1fr); gap: 7px; }
.detail-service { padding: 10px; border: 1px solid var(--line); border-radius: 13px; background: #fafcfb; font-size: 12px; }
.detail-note { margin: 0; white-space: pre-wrap; padding: 13px; border-left: 3px solid var(--accent); background: #faf7f4; border-radius: 0 13px 13px 0; color: #39433f; }
.detail-actions { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 7px; }
.detail-actions button, .detail-actions a { min-height: 44px; display: grid; place-items: center; text-decoration: none; border-radius: 13px; font-size: 12px; font-weight: 750; }
.detail-actions .go { background: var(--primary); color: #fff; }
.detail-actions .edit { border: 1px solid var(--line); background: var(--surface); color: var(--text); }
.detail-actions .delete { border: 1px solid rgba(181,72,63,.2); background: rgba(181,72,63,.06); color: var(--danger); }

.filter-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 15px; }
.menu-actions { display: grid; gap: 9px; }
.menu-action {
  width: 100%; display: grid; grid-template-columns: 40px 1fr; grid-template-rows: auto auto; column-gap: 10px;
  text-align: left; border: 1px solid var(--line); border-radius: 16px; background: #fff; color: var(--text); padding: 12px;
}
.menu-action > span { grid-row: 1 / 3; width: 40px; height: 40px; display: grid; place-items: center; border-radius: 12px; background: var(--surface-2); color: var(--primary); font-size: 22px; }
.menu-svg-icon { width: 23px; height: 23px; display: block; }
.menu-svg-icon-lg { width: 25px; height: 25px; }
.menu-svg-icon-xl { width: 28px; height: 28px; }
.menu-svg-icon path, .menu-svg-icon circle, .menu-svg-icon rect, .menu-svg-icon line, .menu-svg-icon polyline { fill: none; stroke: currentColor; stroke-width: 2.15; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.menu-action b { align-self: end; font-size: 14px; }
.menu-action small { color: var(--muted); }
.file-action { cursor: pointer; }
.about-box { display: flex; align-items: center; gap: 9px; padding: 12px; color: var(--muted); font-size: 12px; }
.about-box strong { color: var(--primary); }

.place-card {
  width: 100%; display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: start;
  border: 1px solid var(--line); border-radius: 16px; background: var(--surface); padding: 11px; text-align: left; color: var(--text);
}
.place-card-icon { width: 40px; height: 40px; border-radius: 13px; display: grid; place-items: center; color: #fff; font-size: 18px; }
.place-card-icon.sleep { background: var(--sleep); }
.place-card-icon.discover { background: var(--discover); }
.place-card-copy { min-width: 0; }
.place-card-copy strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.place-card-copy small { display: block; margin-top: 3px; color: var(--muted); font-size: 11px; }
.place-card-meta { display: flex; gap: 4px; margin-top: 7px; flex-wrap: wrap; }
.mini-tag { padding: 3px 6px; border-radius: 999px; background: var(--surface-2); color: #4e5b56; font-size: 10px; }
.card-chevron { color: #9ca7a3; font-size: 18px; }

.empty-state { padding: 25px 10px; text-align: center; }
.empty-icon { font-size: 38px; }
.empty-state h2 { margin: 8px 0 5px; font-size: 18px; }
.empty-state p { margin: 0 auto 15px; max-width: 270px; color: var(--muted); font-size: 13px; line-height: 1.45; }

.count-badge { min-width: 28px; height: 28px; display: grid; place-items: center; border-radius: 99px; background: var(--surface-2); color: var(--primary); font-size: 12px; font-weight: 800; }
.panel-heading { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.panel-heading h1 { margin: 1px 0 0; font-size: 20px; }
.places-list { display: grid; gap: 8px; }

.spot-marker { background: transparent !important; border: 0 !important; }
.spot-marker > div {
  width: 36px; height: 36px; display: grid; place-items: center; border-radius: 13px 13px 13px 3px;
  transform: rotate(-45deg); border: 3px solid #fff; box-shadow: 0 5px 15px rgba(0,0,0,.22); color: #fff;
}
.spot-marker span { transform: rotate(45deg); font-size: 15px; }
.subtype-camping-symbol { width: 1.15em; height: 1.15em; display: block; }
.spot-marker .subtype-camping-symbol { width: 24px; height: 24px; }
.search-result-icon .subtype-camping-symbol { width: 21px; height: 21px; }
.spot-marker.sleep > div { background: var(--sleep); }
.spot-marker.discover > div { background: var(--discover); }
.spot-marker.favorite > div::after { content: "★"; position: absolute; transform: rotate(45deg); top: -6px; right: -5px; width: 16px; height: 16px; border-radius: 999px; background: #fff4c6; color: #8e6b00; display: grid; place-items: center; font-size: 9px; border: 1px solid #ead989; }
.user-marker { width: 18px; height: 18px; border-radius: 50%; background: #2475d0; border: 4px solid #fff; box-shadow: 0 0 0 3px rgba(36,117,208,.25); }

.toast {
  position: fixed; z-index: 120; left: 50%; bottom: calc(98px + var(--safe-bottom)); transform: translate(-50%, 20px);
  max-width: min(90vw, 420px); padding: 10px 14px; border-radius: 13px; background: rgba(23,32,29,.94); color: #fff; font-size: 13px;
  opacity: 0; pointer-events: none; transition: .22s ease;
}
.toast.is-visible { opacity: 1; transform: translate(-50%, 0); }

@media (min-width: 860px) {
  .app-shell { grid-template-columns: 350px minmax(0, 1fr); grid-template-rows: auto auto auto minmax(0, 1fr); }
  .topbar { grid-column: 1 / -1; grid-row: 1; padding-left: 18px; padding-right: 18px; }
  .search-row { grid-column: 1; grid-row: 2; padding: 12px 12px 6px; border-right: 1px solid var(--line); }
  .quick-filters {
    grid-column: 1; grid-row: 3; flex-wrap: wrap; overflow: visible; align-content: start;
    gap: 7px; padding: 6px 12px 10px; border-right: 1px solid var(--line);
  }
  .quick-filters .chip { padding: 7px 10px; font-size: 12px; }
  .mobile-filter-quick { display: none; }
  .main-layout { display: contents; }
  .places-panel {
    display: block; grid-column: 1; grid-row: 4; min-height: 0; overflow-y: auto;
    padding: 14px 12px; background: var(--bg); border-right: 1px solid var(--line);
  }
  .desktop-add-btn {
    display: block; width: 100%; min-height: 44px; margin: 0 0 12px; border: 1px solid var(--primary);
    border-radius: 13px; background: var(--primary); color: #fff; font-weight: 750;
  }
  .map-wrap { position: relative; grid-column: 2; grid-row: 2 / 5; min-height: 0; }
  .bottom-nav { display: none; }
  .locate-fab { bottom: 20px; }
  .list-fab { display: none; }
  .sheet { left: auto; right: 18px; bottom: 18px; width: min(560px, calc(100vw - 36px)); border-radius: 24px; max-height: calc(100dvh - 36px); padding-bottom: 18px; transform: translateY(calc(100% + 30px)); }
  .sheet.is-open { transform: translateY(0); }
  .detail-sheet, .compact-sheet { width: min(460px, calc(100vw - 36px)); }
  .toast { bottom: 28px; }
}

@media (max-width: 430px) {
  .brand-mark { width: 54px; height: 54px; margin-left: -2px; }
  .brand-copy strong { font-size: 18px; }
  .brand-copy span { display: none; }
  .filter-btn { width: 44px; padding: 0; }
  .filter-btn-label { display: none; }
  .filter-btn-icon { width: 21px; height: 21px; }
  .place-form { grid-template-columns: 1fr; }
  .place-form > *, .full { grid-column: 1; }
  .sleep-fields { grid-template-columns: 1fr; }
  .stay-practical-fields, .height-limit-fields, .seasonal-opening-fields { grid-template-columns: 1fr; }
  #heightLimitValueField { grid-column: 1; }
  .services-grid { grid-column: 1; }
  .family-choice { grid-template-columns: 1fr 1fr; }
  .location-actions { grid-template-columns: 1fr; }
  .detail-actions { grid-template-columns: 1fr 1fr; }
  .detail-actions .go { grid-column: 1 / -1; }
}

/* Spots en Poche V0.1.2 — moteur cartographique local */
.map-unavailable[hidden] {
  display: none !important;
}


/* Spots en Poche V0.1.5 — recherche unifiée et zoom tactile */


/* Spots en Poche V0.1.6 — lisibilité mobile et mise en page PC */
@media (max-width: 360px) {
  .nav-item small, .nav-add small { font-size: 11px; }
  .nav-item span { font-size: 23px; }
}

/* V0.1.8 — installation et mise à jour */
.install-help { display: grid; gap: 12px; padding: 2px 0 8px; }
.install-help p { margin: 0; color: var(--muted); line-height: 1.55; }
.install-steps { margin: 0; padding-left: 22px; display: grid; gap: 9px; color: var(--text); }
.install-steps li::marker { color: var(--primary); font-weight: 800; }
.install-note { padding: 11px 12px; border-radius: 14px; background: rgba(15,118,110,.08); color: var(--primary); font-size: 13px; font-weight: 650; }
.refresh-btn.is-refreshing span { display: inline-block; animation: sep-spin .8s linear infinite; }
@keyframes sep-spin { to { transform: rotate(360deg); } }

/* V0.1.8 — masquer réellement l’installation quand la PWA est déjà installée */
.icon-btn[hidden],
.menu-action[hidden] {
  display: none !important;
}

/* V0.1.9 */
.menu-action.danger-soft { border-color: rgba(180,83,9,.28); }
.menu-action.danger-soft span { color: #b45309; }
.nearby-empty { padding: 20px 10px; }

/* V0.1.551 — Autour : rayon lisible, compteur et accès aux filtres existants. */
.around-radius-bar { display:grid; gap:8px; padding:0 0 12px; }
.around-radius-bar[hidden] { display:none !important; }
.around-radius-choices { display:flex; gap:8px; overflow-x:auto; scrollbar-width:none; }
.around-radius-choices::-webkit-scrollbar { display:none; }
.around-radius-choices button,
.around-filters-btn { flex:0 0 auto; border:1px solid var(--line); background:var(--surface); color:var(--text); border-radius:999px; padding:8px 12px; font:inherit; font-size:13px; font-weight:750; }
.around-radius-choices button.is-active { background:rgba(15,118,110,.10); color:var(--primary); border-color:rgba(15,118,110,.28); }
.around-radius-actions { display:flex; align-items:center; justify-content:space-between; gap:10px; min-width:0; }
.around-results-count { min-width:0; color:var(--muted); font-size:12px; font-weight:800; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.around-filters-btn { display:inline-flex; align-items:center; gap:6px; color:var(--primary-strong); cursor:pointer; }
.around-filters-icon { width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linejoin:round; }
.around-filters-btn.has-active-filters { background:rgba(15,118,110,.10); border-color:rgba(15,118,110,.38); color:var(--primary); }
.around-filters-btn:active { transform:translateY(1px); }


/* V0.1.11 — hauteur fiable dans la PWA Android après actualisation */
html, body {
  width: 100%;
  overflow: hidden;
  overscroll-behavior: none;
}
.app-shell {
  overflow: hidden;
}
@media (max-width: 859px) {
  .bottom-nav {
    position: relative;
    flex: 0 0 auto;
  }
}

/* Spots en Poche V0.1.13 — identité visuelle validée */
:root {
  --brand-deep: #0F5A52;
  --brand-primary: #0F6B63;
  --brand-teal: #1E7C6E;
  --brand-green: #78C36E;
  --brand-soft: #E8F2E7;
  --brand-cream: #F6F5EC;
  --primary: var(--brand-primary);
  --primary-strong: var(--brand-deep);
  --sleep: var(--brand-primary);
  --discover: #d96a35;
}
.brand {
  border: 0;
  background: transparent;
  color: var(--text);
  padding: 0;
  text-align: left;
  cursor: pointer;
}
.brand-mark {
  width: 50px;
  height: 50px;
  padding: 1px;
  object-fit: contain;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  font-size: 0;
  flex: 0 0 auto;
  filter: drop-shadow(0 1px 0 rgba(255,255,255,.8)) drop-shadow(0 2px 5px rgba(15,90,82,.12));
}
.brand-copy strong { color: var(--brand-deep); }
.brand-copy strong em { color: var(--brand-green); font-style: normal; }
.brand-copy span { color: #64736d; letter-spacing: .01em; }
.brand:hover .brand-mark { transform: translateY(-1px); }
.brand-mark { transition: transform .16s ease; }
.brand-mark-dark { display:none; }

.nav-icon {
  display: block;
  width: 26px;
  height: 26px;
  background: currentColor;
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-position: center;
  -webkit-mask-size: contain;
  mask-repeat: no-repeat;
  mask-position: center;
  mask-size: contain;
}
.nav-icon-map { -webkit-mask-image: url('../icons/ui/map.svg'); mask-image: url('../icons/ui/map.svg'); }
.nav-icon-around { -webkit-mask-image: url('../icons/ui/around.svg'); mask-image: url('../icons/ui/around.svg'); }
.nav-icon-add { -webkit-mask-image: url('../icons/ui/add.svg'); mask-image: url('../icons/ui/add.svg'); width: 24px; height: 24px; }
.nav-icon-trips { -webkit-mask-image: url('../icons/ui/trips.svg'); mask-image: url('../icons/ui/trips.svg'); }
.nav-icon-more { -webkit-mask-image: url('../icons/ui/more.svg'); mask-image: url('../icons/ui/more.svg'); }
.nav-item span.nav-icon { font-size: 0; line-height: 1; }
.nav-item.is-active { color: var(--brand-primary); }
.nav-add { color: var(--brand-primary); }
.nav-add-icon {
  background: linear-gradient(145deg, var(--brand-primary), var(--brand-green));
  color: #fff;
}

@media (max-width: 360px) {
  .nav-item span.nav-icon { width: 24px; height: 24px; }
}


/* V0.1.16 — restauration du listing mobile et navigation fiable */
.list-fab, .nav-item, .nav-add, .js-close-sheet {
  touch-action: manipulation;
}
.list-fab { pointer-events: auto; }


/* V0.1.17 — passe lisibilité mobile : listes, fiches, services et données */
.list-fab {
  min-height: 46px;
  padding: 0 15px;
  font-size: 13.5px;
}

.place-card {
  gap: 12px;
  padding: 13px;
  align-items: center;
}
.place-card-icon {
  width: 50px;
  height: 50px;
  border-radius: 15px;
  font-size: 25px;
}
.place-card-copy strong {
  font-size: 16px;
  line-height: 1.25;
}
.place-card-copy small {
  margin-top: 4px;
  color: #56645f;
  font-size: 13.5px;
  line-height: 1.35;
}
.place-card-meta {
  gap: 6px;
  margin-top: 8px;
}
.mini-tag {
  padding: 5px 8px;
  font-size: 12.5px;
  line-height: 1.15;
}
.mini-tag.service-icons {
  font-size: 18px;
  line-height: 1;
  letter-spacing: 2px;
  padding: 6px 9px;
}
.card-chevron {
  font-size: 23px;
}

.detail-pill {
  padding: 9px 12px;
  font-size: 14px;
}
.detail-services {
  gap: 9px;
}
.detail-service {
  min-height: 54px;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 12px;
  font-size: 14.5px;
  line-height: 1.25;
  font-weight: 700;
}
.detail-service-icon {
  flex: 0 0 auto;
  min-width: 25px;
  font-size: 22px;
  line-height: 1;
  text-align: center;
}
.detail-note {
  font-size: 14.5px;
  line-height: 1.5;
}
.detail-actions button,
.detail-actions a {
  min-height: 48px;
  font-size: 14px;
}

.services-grid label,
.filter-grid label {
  min-height: 48px;
  padding: 10px 12px;
  font-size: 14px;
  line-height: 1.25;
}
.services-grid input,
.filter-grid input {
  width: 19px;
  height: 19px;
}

.menu-actions {
  gap: 10px;
}
.menu-action {
  grid-template-columns: 52px 1fr;
  column-gap: 12px;
  min-height: 76px;
  padding: 13px 14px;
}
.menu-action > span {
  width: 50px;
  height: 50px;
  border-radius: 14px;
  background: var(--brand-soft, var(--surface-2));
  color: var(--primary);
  font-size: 27px;
}
.menu-action b {
  font-size: 16px;
  line-height: 1.25;
}
.menu-action small {
  margin-top: 2px;
  font-size: 13px;
  line-height: 1.35;
  color: #64706c;
}

@media (max-width: 430px) {
  .sheet h2 { font-size: 23px; }
  .eyebrow { font-size: 11px; }
  .place-card { border-radius: 17px; }
  .detail-services { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .detail-service { padding: 10px; font-size: 14px; }
}

@media (max-width: 350px) {
  .place-card-icon { width: 46px; height: 46px; font-size: 23px; }
  .place-card-copy strong { font-size: 15px; }
  .place-card-copy small { font-size: 13px; }
  .detail-services { grid-template-columns: 1fr; }
}


/* V0.1.18 — contraste des services sans changer l’ergonomie */
.mini-tag.service-icons {
  background: var(--brand-deep, #0F5A52);
  color: #fff;
  border: 1px solid var(--brand-deep, #0F5A52);
  box-shadow: 0 1px 2px rgba(15, 90, 82, .12);
  font-size: 20px;
  letter-spacing: 3px;
  padding: 7px 10px;
}
.detail-service {
  background: #fff;
  border-color: #ccd9d4;
  box-shadow: 0 1px 2px rgba(22, 52, 45, .04);
}
.detail-service-icon {
  width: 38px;
  height: 38px;
  min-width: 38px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  background: var(--brand-deep, #0F5A52);
  color: #fff;
  font-size: 23px;
  line-height: 1;
}
@media (max-width: 430px) {
  .mini-tag.service-icons { font-size: 19px; }
  .detail-service-icon { width: 36px; height: 36px; min-width: 36px; font-size: 22px; }
}

/* V0.1.19 — pictogrammes services robustes et identiques sur Android/iOS/PC */
.service-svg {
  width: 1em;
  height: 1em;
  display: block;
  fill: currentColor;
  stroke: none;
}
.service-choice-icon {
  width: 29px;
  height: 29px;
  min-width: 29px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  background: var(--brand-soft, #DFF0E6);
  color: var(--brand-deep, #0F5A52);
}
.service-svg-choice { width: 21px; height: 21px; }
.services-grid label,
.filter-grid label {
  display: flex;
  align-items: center;
  gap: 9px;
}
.services-grid input,
.filter-grid input { flex: 0 0 auto; }
.mini-tag.service-icons {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  letter-spacing: 0;
}
.service-svg-mini {
  width: 20px;
  height: 20px;
  color: #fff;
  flex: 0 0 auto;
}
/* V0.1.102 — tous les services restent visibles dans Mes spots ;
   si l’écran est étroit, le bandeau se fait simplement glisser horizontalement. */
.place-card-copy .mini-tag.service-icons {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  flex-wrap: nowrap;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-inline: contain;
  scrollbar-width: none;
  touch-action: pan-x;
}
.place-card-copy .mini-tag.service-icons::-webkit-scrollbar { display: none; }
.detail-service-icon .service-svg-detail {
  width: 25px;
  height: 25px;
  color: #fff;
}
@media (max-width: 430px) {
  .service-choice-icon { width: 31px; height: 31px; min-width: 31px; }
  .service-svg-choice { width: 22px; height: 22px; }
  .service-svg-mini { width: 19px; height: 19px; }
  .place-card-copy .mini-tag.service-icons { gap: 5px; padding: 6px 8px; }
}

/* V0.1.20 — WC, eaux grises et cassette redessinés pour une lecture immédiate */


/* V0.1.25 — catégories simples + coup de cœur indépendant */
.favorite-choice {
  align-self: end; min-height: 46px; display: flex; align-items: center; gap: 9px;
  padding: 10px 12px; border: 1px solid var(--line); border-radius: 13px;
  background: #fff; font-size: 14px; font-weight: 750; color: var(--text);
}
.favorite-choice input { width: 19px; height: 19px; accent-color: var(--primary); }
.favorite-choice > .favorite-star-icon { font-size: 22px; color: #71817d; line-height: 1; width: 24px; text-align: center; }
.favorite-choice > .favorite-star-icon::before { content: "☆"; }
.favorite-choice input:checked + .favorite-star-icon { color: var(--primary); }
.favorite-choice input:checked + .favorite-star-icon::before { content: "★"; }
.favorite-pill { background: #fff4cf; color: #7b5a00; border: 1px solid #ecd98a; }
.favorite-toggle {
  width: 100%; min-height: 46px; border: 1px solid #e3d39a; border-radius: 13px;
  background: #fffaf0; color: #775700; font-size: 14px; font-weight: 800;
}
.favorite-toggle.is-favorite { background: #fff2c6; }
.detail-note { max-height: 190px; overflow-y: auto; overscroll-behavior: contain; }
@media (max-width: 430px) {
  .favorite-choice { min-height: 50px; font-size: 15px; }
  .detail-note { max-height: 170px; }
}

#parkingUseField[hidden] { display: none !important; }

/* V0.1.26 — liens facultatifs Site web / Google Maps */
.detail-resource-links {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 10px;
}
.detail-resource-links .resource-link {
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--surface);
  color: var(--brand-deep, var(--text));
  text-decoration: none;
  font-size: 13px;
  font-weight: 750;
  text-align: center;
}
.detail-resource-links .google-link {
  background: var(--brand-soft, #e8f2e7);
}
@media (max-width: 380px) {
  .detail-resource-links { grid-template-columns: 1fr; }
}

/* V0.1.27 — installation claire, version et historique */
.install-device-icon {
  display: block;
  width: 24px;
  height: 24px;
  background: currentColor;
  -webkit-mask: url('../icons/ui/install-phone.svg') center / contain no-repeat;
  mask: url('../icons/ui/install-phone.svg') center / contain no-repeat;
}
.install-device-icon.is-desktop {
  -webkit-mask-image: url('../icons/ui/install-desktop.svg');
  mask-image: url('../icons/ui/install-desktop.svg');
}
.menu-action > span .install-device-icon {
  width: 29px;
  height: 29px;
}
.about-box {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center;
  gap: 10px 14px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #fafcfb;
  color: var(--muted);
  font-size: 12px;
}
.about-copy { display: grid; gap: 4px; min-width: 0; }
.about-copy strong { color: var(--primary); font-size: 14px; }
.about-copy span { line-height: 1.35; }
.last-backup { color: #4f5d58; font-weight: 650; }
.about-link {
  border: 1px solid rgba(15,107,99,.22);
  border-radius: 12px;
  background: rgba(15,107,99,.07);
  color: var(--primary);
  padding: 9px 10px;
  font: inherit;
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}
.changelog-list { display: grid; gap: 12px; padding-bottom: 8px; }
.changelog-entry {
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 13px 14px;
  background: #fff;
}
.changelog-entry.is-current { border-color: rgba(15,107,99,.28); background: rgba(15,107,99,.045); }
.changelog-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.changelog-head strong { color: var(--primary); font-size: 15px; }
.changelog-head time { color: var(--muted); font-size: 12px; white-space: nowrap; }
.changelog-entry ul { margin: 0; padding-left: 19px; display: grid; gap: 6px; color: #45524e; font-size: 13px; line-height: 1.4; }
.changelog-loading { margin: 0; color: var(--muted); }
@media (max-width: 430px) {
  .about-box { grid-template-columns: 1fr; }
  .about-link { width: 100%; min-height: 40px; }
}

/* V0.1.28 — statut de sauvegarde placé sous l'export + filtres complets */
.backup-status-row {
  margin: -3px 4px 1px 64px;
  padding: 2px 0 3px;
  color: #44534e;
  font-size: 13px;
  line-height: 1.35;
  font-weight: 750;
}
@media (max-width: 430px) {
  .backup-status-row {
    margin-left: 6px;
    font-size: 14px;
  }
}


/* V0.1.30 — mode carte agrandie mobile : grille à 2 lignes (carte + navigation) */
@media (max-width: 859px) {
  .app-shell.is-map-expanded {
    grid-template-rows: minmax(0, 1fr) auto;
  }
  .app-shell.is-map-expanded > .topbar,
  .app-shell.is-map-expanded > .search-row,
  .app-shell.is-map-expanded > .quick-filters {
    display: none !important;
  }
  .app-shell.is-map-expanded > .main-layout {
    grid-row: 1;
    min-height: 0;
    height: 100%;
  }
  .app-shell.is-map-expanded > .bottom-nav {
    grid-row: 2;
  }
  .app-shell.is-map-expanded .map-wrap {
    inset: 0;
  }
}
@media (min-width: 860px) {
  .map-expand-fab { display: none !important; }
}


/* V0.1.33 — Voyages : itinéraires personnels et étapes */
.trips-top-actions { display: grid; grid-template-columns: 1fr; gap: 8px; margin-bottom: 12px; }
.trips-top-actions > button { width: 100%; }
.trip-back-link {
  width: 100%; margin: -3px 0 12px; min-height: 42px; border: 1px solid var(--line); border-radius: 12px;
  background: var(--surface-2); color: var(--primary); font-size: 13px; font-weight: 850; text-align: left; padding: 9px 12px;
}
.trips-list { display: grid; gap: 9px; }
.trips-empty[hidden], .trip-steps-empty[hidden] { display: none !important; }
.trip-card {
  width: 100%; min-height: 68px; display: grid; grid-template-columns: 46px minmax(0,1fr) auto;
  align-items: center; gap: 11px; padding: 10px 11px; border: 1px solid var(--line); border-radius: 17px;
  background: var(--surface); color: var(--text); text-align: left;
}
.trip-card-icon { width: 44px; height: 44px; border-radius: 14px; display: grid; place-items: center; background: rgba(15,107,99,.10); color: var(--primary); font-size: 25px; font-weight: 900; }
.trip-card-copy { min-width: 0; }
.trip-card-copy strong { display: block; font-size: 15px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.trip-card-copy small { display: block; margin-top: 5px; color: var(--muted); font-size: 12px; line-height: 1.35; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.trip-form { display: grid; grid-template-columns: 1fr; gap: 13px; }
.trip-detail-sheet, .trip-step-sheet { max-height: min(92dvh, 820px); }
.trip-detail-title-block { min-width: 0; flex: 1 1 auto; margin-right: 0 !important; }
.trip-detail-title-block h2 { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.trip-title-edit-btn { margin-left: auto; color: var(--primary); cursor: pointer; }
.trip-title-edit-btn:active { transform: translateY(1px); }
.trip-detail-meta { margin: -3px 0 12px; padding: 10px 12px; border-radius: 14px; background: var(--surface-2); color: var(--muted); font-size: 13px; line-height: 1.45; }
.trip-detail-meta p { margin: 0; }
.trip-main-actions { display: grid; grid-template-columns: 1fr; gap: 8px; margin-bottom: 14px; }
.trip-main-actions button[hidden] { display: none !important; }
.trip-secondary-actions { display: grid; grid-template-columns: 1fr; gap: 8px; margin-top: 15px; padding-top: 13px; border-top: 1px solid var(--line); }
.trip-secondary-actions button[hidden] { display: none !important; }
.trip-gpx-block { margin: 0 0 15px; padding: 12px; border: 1px solid var(--line); border-radius: 17px; background: var(--surface-2); }
.trip-gpx-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 9px; }
.trip-gpx-heading > div { min-width: 0; }
.trip-gpx-heading strong { display: block; font-size: 13px; }
.trip-gpx-heading small { display: block; margin-top: 2px; color: var(--muted); font-size: 10.5px; }
.trip-gpx-heading > span { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 12px; background: rgba(15,107,99,.10); color: var(--primary); font-size: 22px; font-weight: 900; }
.trip-gpx-block[hidden] { display: none !important; }
.trip-gpx-card { display: grid; gap: 10px; }
.trip-gpx-copy { min-width: 0; }
.trip-gpx-copy strong { display: block; font-size: 14px; line-height: 1.3; }
.trip-gpx-copy small { display: block; margin-top: 4px; color: var(--muted); font-size: 11px; line-height: 1.4; }
.trip-gpx-copy em { display: block; margin-top: 3px; color: var(--muted); font-size: 10px; font-style: normal; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.trip-gpx-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.trip-gpx-actions #tripGpxMapBtn { grid-column: 1 / -1; }
.trip-gpx-actions button { min-width: 0; padding-inline: 8px; }
.trip-gpx-actions .danger-text { color: var(--danger); }
.trip-steps-list { display: grid; gap: 10px; }
.trip-step-card { border: 1px solid var(--line); border-radius: 17px; background: var(--surface); padding: 10px; }
.trip-step-main { display: grid; grid-template-columns: 36px minmax(0,1fr) auto; align-items: center; gap: 9px; }
.trip-step-number { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: var(--primary); color: #fff; font-size: 13px; font-weight: 900; }
.trip-step-copy { min-width: 0; }
.trip-step-copy strong { display: block; font-size: 14px; line-height: 1.25; }
.trip-step-copy small { display: block; margin-top: 3px; color: var(--muted); font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.trip-step-order { display: flex; gap: 4px; align-items: center; }
.trip-step-order button { width: 38px; height: 38px; border: 1px solid rgba(15,107,99,.20); border-radius: 11px; background: rgba(15,107,99,.07); color: var(--primary); font-size: 21px; line-height: 1; font-weight: 900; }
.trip-step-order button:disabled { opacity: .28; }
.trip-step-actions { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px; padding-left: 43px; }
.trip-step-actions button { min-height: 34px; border: 1px solid var(--line); border-radius: 10px; padding: 6px 9px; background: #fff; color: var(--text); font-size: 11px; font-weight: 780; }
.trip-step-actions .danger-text { color: var(--danger); }
.trip-footer-actions { display: grid; grid-template-columns: 1fr; gap: 8px; margin-top: 10px; }
.trip-delete-btn { color: var(--danger); }
.trip-step-section { padding: 12px; border: 1px solid var(--line); border-radius: 17px; background: #f8faf9; }
.trip-step-section-head { display: flex; justify-content: space-between; gap: 10px; align-items: baseline; margin-bottom: 9px; }
.trip-step-section-head strong { font-size: 14px; }
.trip-step-section-head span { color: var(--muted); font-size: 10px; }
.trip-source-picker { display: grid; grid-template-columns: auto minmax(0,1fr); align-items: center; gap: 9px; min-height: 45px; padding: 6px 9px 6px 11px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.trip-source-picker > span { color: var(--muted); font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .02em; }
.trip-source-picker select { min-width: 0; width: 100%; border: 0; outline: 0; background: transparent; color: var(--text); font: inherit; font-size: 13px; font-weight: 760; }
.trip-source-hint { display: block; margin: 5px 3px 8px; color: var(--muted); font-size: 10px; }
.trip-spot-search { min-height: 43px; display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 7px; padding: 0 10px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.trip-spot-search input { min-width: 0; border: 0; outline: 0; background: transparent; color: var(--text); font-size: 14px; }
.trip-spot-choices { max-height: 310px; overflow-y: auto; display: grid; gap: 6px; margin-top: 8px; }
.trip-spot-choice { width: 100%; min-height: 72px; display: grid; grid-template-columns: 40px minmax(0,1fr); align-items: center; gap: 6px 9px; padding: 8px; border: 1px solid var(--line); border-radius: 13px; background: #fff; color: var(--text); text-align: left; }
.trip-spot-choice .place-card-icon { width: 38px; height: 38px; border-radius: 12px; grid-row: 1 / span 2; }
.trip-choice-copy { min-width: 0; }
.trip-spot-choice strong { display: block; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.trip-spot-choice small { display: block; margin-top: 2px; color: var(--muted); font-size: 10px; }
.trip-choice-actions { grid-column: 2; display: flex; gap: 6px; align-items: center; }
.trip-choice-actions button { min-height: 34px; border: 1px solid var(--line); border-radius: 10px; padding: 6px 10px; font: inherit; font-size: 11px; font-weight: 820; }
.trip-choice-view { background: #fff; color: var(--primary-strong); }
.trip-choice-add { background: var(--primary); border-color: var(--primary) !important; color: #fff; }
.trip-choice-actions button:active { transform: translateY(1px); }
.trip-choice-empty { padding: 15px 8px; color: var(--muted); font-size: 13px; text-align: center; }
.trip-step-divider { display: grid; place-items: center; position: relative; height: 34px; color: var(--muted); font-size: 11px; font-weight: 800; text-transform: uppercase; }
.trip-step-divider::before { content: ''; position: absolute; left: 0; right: 0; top: 50%; border-top: 1px solid var(--line); }
.trip-step-divider span { position: relative; padding: 0 9px; background: var(--surface); }


@media (max-width: 380px) {
  .trip-choice-actions button { padding-inline: 8px; }
}

@media (max-width: 380px) {
  .trip-step-actions { padding-left: 0; }
  .trip-step-actions button { flex: 1 1 auto; }
  .trip-step-order button { width: 31px; height: 31px; }
  .trip-card-copy small { font-size: 11px; }
}

@media (min-width: 860px) {
  .trips-sheet, .trip-detail-sheet, .trip-step-sheet { width: min(520px, calc(100vw - 36px)); }
}

/* V0.1.34 — accès PC et voyage structuré Départ → Étapes → Arrivée */
.desktop-quick-nav { display: none; }
.trip-endpoints { display: grid; grid-template-columns: 1fr; position: relative; margin: 2px 0 14px; }
.trip-endpoint-card {
  width: 100%; min-height: 72px; display: grid; grid-template-columns: 38px minmax(0,1fr) auto; align-items: center; gap: 10px;
  padding: 10px 11px; border: 1px solid var(--line); border-radius: 17px; background: #fff; color: var(--text); text-align: left;
}
.trip-endpoint-card.is-set { border-color: rgba(15,107,99,.30); background: rgba(15,107,99,.035); }
.trip-endpoint-badge { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; background: var(--primary); color: #fff; font-size: 12px; font-weight: 900; }
.trip-endpoint-card.arrival .trip-endpoint-badge { background: var(--brand-deep); }
.trip-endpoint-copy { min-width: 0; display: grid; gap: 2px; }
.trip-endpoint-copy small { color: var(--primary); font-size: 10px; font-weight: 850; text-transform: uppercase; letter-spacing: .06em; }
.trip-endpoint-copy strong { font-size: 14px; line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.trip-endpoint-copy em { color: var(--muted); font-size: 10.5px; font-style: normal; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.trip-endpoint-action { color: var(--primary); font-size: 11px; font-weight: 800; }
.trip-endpoint-line { width: 2px; height: 10px; margin-left: 27px; background: rgba(15,107,99,.25); }
.trip-steps-heading { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin: 3px 2px 9px; }
.trip-steps-heading strong { font-size: 13px; }
.trip-steps-heading span { min-width: 25px; height: 25px; display: grid; place-items: center; border-radius: 999px; background: var(--surface-2); color: var(--primary); font-size: 11px; font-weight: 850; }
@media (min-width: 860px) {
  .desktop-quick-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: -4px 0 12px; }
  .desktop-nav-btn { min-height: 58px; display: grid; grid-template-columns: 28px minmax(0,1fr); align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 13px; background: #fff; color: var(--text); text-align: left; }
  .desktop-nav-btn .nav-icon { width: 25px; height: 25px; color: var(--primary); }
  .desktop-nav-btn > span:last-child { min-width: 0; display: grid; gap: 2px; }
  .desktop-nav-btn strong { font-size: 12.5px; }
  .desktop-nav-btn small { color: var(--muted); font-size: 10px; }
  .desktop-nav-btn:hover { border-color: rgba(15,107,99,.32); background: rgba(15,107,99,.04); }
}

/* V0.1.35 — Collections séparées et partage de listes */
.spot-marker.collection > div {
  box-shadow: 0 0 0 3px rgba(36,117,208,.38), 0 5px 15px rgba(0,0,0,.22);
}
.collections-sheet, .my-spots-sheet, .collection-detail-sheet, .import-choice-sheet { max-height: min(92dvh, 850px); }
.personal-collection-card {
  display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 10px;
  padding: 12px; margin-bottom: 10px; border: 1px solid rgba(15,107,99,.22); border-radius: 17px;
  background: rgba(15,107,99,.045);
}
.collection-card-copy { min-width: 0; display: grid; gap: 3px; }
.collection-card-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.collection-card-copy small { color: var(--muted); font-size: 11px; line-height: 1.35; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.collection-share-main { min-height: 40px; padding-inline: 11px; font-size: 12px; }
.collections-import-btn { width: 100%; display: grid; place-items: center; margin-bottom: 14px; text-decoration: none; cursor: pointer; }
.collections-heading { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin: 4px 2px 9px; }
.collections-heading strong { font-size: 13px; }
.collections-heading span { min-width: 27px; height: 27px; display: grid; place-items: center; border-radius: 999px; background: var(--surface-2); color: var(--primary); font-size: 11px; font-weight: 850; }
.collections-list { display: grid; gap: 9px; }
.collections-empty[hidden] { display: none !important; }
.collection-card { border: 1px solid var(--line); border-radius: 17px; background: #fff; overflow: hidden; }
.collection-open-btn {
  width: 100%; display: grid; grid-template-columns: 42px minmax(0,1fr) auto; align-items: center; gap: 9px;
  padding: 10px; border: 0; background: #fff; color: var(--text); text-align: left;
}
.collection-card-icon { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 12px; background: rgba(36,117,208,.10); font-size: 20px; overflow: hidden; }
.collection-card-icon img { width: 30px; height: 30px; object-fit: contain; display: block; }
.collection-card-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; padding: 0 9px 9px; }
.collection-card-actions button { min-height: 36px; border: 1px solid var(--line); border-radius: 11px; background: #f8faf9; color: var(--text); font-size: 11px; font-weight: 800; }
.collection-card-actions .collection-visibility-btn { display: flex; align-items: center; justify-content: space-between; gap: 7px; padding: 5px 8px; }
.collection-card-actions .collection-visibility-btn.is-visible { border-color: rgba(15,107,99,.28); background: rgba(15,107,99,.075); color: var(--primary); }
.collection-card-actions .collection-visibility-btn.is-hidden { background: #f6f7f7; color: #68726f; }
.collection-visibility-state { min-width: 0; display: inline-flex; align-items: center; gap: 5px; }
.collection-eye-icon { width: 17px; height: 17px; flex: 0 0 17px; }
.collection-switch { position: relative; width: 31px; height: 18px; flex: 0 0 31px; border-radius: 999px; background: #cfd6d3; transition: background .15s ease; }
.collection-switch > span { position: absolute; top: 3px; left: 3px; width: 12px; height: 12px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.18); transition: transform .15s ease; }
.collection-visibility-btn.is-visible .collection-switch, #collectionMapToggleBtn.is-visible .collection-switch { background: var(--primary); }
.collection-visibility-btn.is-visible .collection-switch > span, #collectionMapToggleBtn.is-visible .collection-switch > span { transform: translateX(13px); }
.import-choice-summary { display: grid; grid-template-columns: 50px minmax(0,1fr); gap: 11px; align-items: center; padding: 13px; border: 1px solid var(--line); border-radius: 17px; background: #f8faf9; }
.import-list-icon { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 15px; background: rgba(36,117,208,.10); font-size: 24px; }
.import-choice-summary > div:last-child { min-width: 0; display: grid; gap: 3px; }
.import-choice-summary strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 15px; }
.import-choice-summary span, .import-choice-summary small { color: var(--muted); font-size: 11px; line-height: 1.35; }

.shared-spots-destination-panel { margin-top: 12px; }
.shared-spots-destination-panel[hidden], .shared-spots-existing-list-target[hidden] { display: none !important; }
.shared-spots-existing-list-target { display: grid; gap: 10px; margin-top: 12px; }
.import-choice-summary.is-shared-spots { grid-template-columns: 1fr; padding: 11px 12px; background: var(--surface-2); }
.import-choice-summary.is-shared-spots .import-list-icon { display: none; }
.import-choice-summary.is-shared-spots strong { color: var(--text); font-size: 14px; }
.import-choice-actions { display: grid; gap: 8px; margin-top: 12px; }
.import-choice-note { margin: 11px 2px 0; color: var(--muted); font-size: 11.5px; line-height: 1.5; }
.collection-detail-meta { display: grid; gap: 3px; margin: -2px 0 12px; padding: 10px 12px; border-radius: 14px; background: var(--surface-2); }
.collection-detail-meta strong { font-size: 13px; }
.collection-detail-meta span { color: var(--muted); font-size: 10.5px; line-height: 1.4; }
.collection-detail-actions { display: grid; grid-template-columns: 1.2fr .8fr .8fr; gap: 7px; margin-bottom: 14px; }
.collection-detail-actions button { min-height: 42px; padding-inline: 8px; font-size: 11px; }
#collectionMapToggleBtn { display: flex; align-items: center; justify-content: center; gap: 7px; }
#collectionMapToggleBtn .collection-switch { margin-left: 2px; }
#collectionMapToggleBtn.is-visible { border-color: rgba(15,107,99,.28); background: rgba(15,107,99,.075); color: var(--primary); }
#collectionMapToggleBtn.is-hidden { background: var(--surface-2); color: #68726f; }
.collection-places-list { max-height: min(43dvh, 390px); overflow-y: auto; padding-right: 2px; }
.collection-delete-btn { width: 100%; margin-top: 14px; color: var(--danger); border-color: rgba(181,72,63,.2); }
.collection-origin-banner { display: grid; grid-template-columns: 40px minmax(0,1fr); gap: 9px; align-items: center; padding: 10px 11px; border: 1px solid rgba(36,117,208,.18); border-radius: 15px; background: rgba(36,117,208,.055); }
.collection-origin-banner > span { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 12px; background: #fff; font-size: 18px; overflow: hidden; }
.collection-origin-banner > span img { width: 28px; height: 28px; object-fit: contain; display: block; }
.collection-origin-banner > div { min-width: 0; display: grid; gap: 2px; }
.collection-origin-banner strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.collection-origin-banner small { color: var(--muted); font-size: 10.5px; }
.collection-copy-btn { width: 100%; }
.collection-external-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }
.collection-external-actions button { min-height: 44px; display: grid; place-items: center; border-radius: 12px; font: inherit; font-size: 12px; font-weight: 800; }
.collection-google-info-btn { border: 1px solid rgba(36,117,208,.34); background: rgba(36,117,208,.07); color: var(--primary); }
.collection-navigate-btn { border: 1px solid var(--primary); background: var(--primary); color: #fff; }
@media (max-width: 430px) {
  .personal-collection-card { grid-template-columns: 1fr; }
  .collection-share-main { width: 100%; }
  .collection-detail-actions { grid-template-columns: 1fr 1fr; }
  .collection-detail-actions #collectionMapToggleBtn { grid-column: 1 / -1; }
}
@media (min-width: 860px) {
  .collections-sheet, .my-spots-sheet, .collection-detail-sheet, .import-choice-sheet { width: min(560px, calc(100vw - 36px)); }
}

.collection-place-back-btn { width: 100%; }


/* V0.1.38 — Collections : état visible/masqué sans ambiguïté + pictogramme Camping */
.collections-quick-chip { display: inline-flex; align-items: center; gap: 5px; }
.collections-quick-chip span { min-width: 20px; height: 20px; padding: 0 5px; display: inline-grid; place-items: center; border-radius: 999px; background: rgba(36,117,208,.10); color: #2475d0; font-size: 10px; font-weight: 850; }
.collections-quick-chip.is-active span { background: rgba(15,118,110,.14); color: var(--primary); }
.import-collection-name-field { margin-top: 12px; }
.import-collection-name-field small { display: block; margin-top: 5px; color: var(--muted); font-size: 10.5px; line-height: 1.35; }
.import-visible-choice { margin-top: 10px; padding: 10px 12px; display: flex; align-items: center; gap: 9px; border: 1px solid var(--line); border-radius: 13px; background: #f8faf9; color: var(--text); font-size: 12px; font-weight: 700; }
.import-visible-choice input { width: 18px; height: 18px; accent-color: var(--primary); flex: 0 0 auto; }
.collection-card-actions { grid-template-columns: 1fr 1fr 1fr; }
@media (max-width: 390px) {
  .collection-card-actions { grid-template-columns: 1fr 1fr; }
  .collection-card-actions button:last-child { grid-column: 1 / -1; }
}


/* V0.1.39 — Mes spots devient une couche affichable/masquable */
.personal-collection-actions { display: grid; grid-template-columns: auto auto; align-items: center; gap: 7px; }
.personal-collection-actions .collection-visibility-btn { min-height: 40px; display: flex; align-items: center; justify-content: space-between; gap: 7px; padding: 5px 8px; border: 1px solid var(--line); border-radius: 11px; font-size: 11px; font-weight: 800; }
.personal-collection-actions .collection-visibility-btn.is-visible { border-color: rgba(15,107,99,.28); background: rgba(15,107,99,.075); color: var(--primary); }
.personal-collection-actions .collection-visibility-btn.is-hidden { background: #f6f7f7; color: #68726f; }
.personal-collection-actions .collection-visibility-btn.is-visible .collection-switch { background: var(--primary); }
.personal-collection-actions .collection-visibility-btn.is-visible .collection-switch > span { transform: translateX(13px); }
@media (max-width: 430px) {
  .personal-collection-actions { grid-template-columns: 1fr 1fr; }
  .personal-collection-actions .collection-share-main { width: auto; }
}


/* V0.1.42 — import de listes externes */
.import-mapping-panel { margin-top: 12px; padding: 11px; border: 1px solid var(--line); border-radius: 15px; background: #f8faf9; }
.import-mapping-panel[hidden] { display: none !important; }
.import-mapping-head { display: grid; gap: 3px; margin-bottom: 9px; }
.import-mapping-head strong { font-size: 12.5px; }
.import-mapping-head small { color: var(--muted); font-size: 10.5px; line-height: 1.4; }
.import-mapping-list { display: grid; gap: 7px; max-height: min(30dvh, 260px); overflow-y: auto; padding-right: 2px; }
.import-mapping-row { display: grid; grid-template-columns: minmax(0,1fr) minmax(145px,.9fr); gap: 8px; align-items: center; padding: 8px 9px; border: 1px solid rgba(0,0,0,.07); border-radius: 11px; background: #fff; }
.import-mapping-row > span { min-width: 0; display: grid; gap: 2px; }
.import-mapping-row b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11.5px; }
.import-mapping-row small { color: var(--muted); font-size: 9.5px; }
.import-mapping-row select { width: 100%; min-height: 38px; border: 1px solid var(--line); border-radius: 9px; background: #fff; color: var(--text); padding: 0 7px; font: inherit; font-size: 11px; font-weight: 700; }
.import-mapping-row.needs-review { border-color: #e0b85b; background: #fffaf0; }
@media (max-width: 430px) { .import-mapping-row { grid-template-columns: 1fr; } }


/* V0.1.43 — coordonnées enrichies + regroupement des grosses collections */
.detail-contact-line {
  display: grid;
  grid-template-columns: minmax(74px, auto) minmax(0, 1fr);
  gap: 9px;
  align-items: start;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: #fafcfb;
  font-size: 12px;
  line-height: 1.45;
}
.detail-contact-line strong { color: var(--muted); font-size: 10.5px; text-transform: uppercase; letter-spacing: .04em; }
.detail-contact-line span { min-width: 0; overflow-wrap: anywhere; }

.collection-cluster-marker {
  background: transparent !important;
  border: 0 !important;
  z-index: 24 !important;
}
.collection-cluster-marker > div {
  width: 100%;
  height: 100%;
  display: grid;
  place-content: center;
  justify-items: center;
  border: 3px solid #fff;
  border-radius: 999px;
  background: #2475d0;
  color: #fff;
  box-shadow: 0 3px 10px rgba(18,55,92,.28);
  line-height: 1;
}
.collection-cluster-marker strong { font-size: 13px; font-weight: 900; }
.collection-cluster-marker small { margin-top: 2px; font-size: 7px; font-weight: 800; opacity: .92; }

@media (max-width: 430px) {
  .detail-contact-line { grid-template-columns: 1fr; gap: 3px; font-size: 13px; }
}


/* V0.1.44 — clusters hiérarchiques stables */
.cluster-places-meta {
  margin: -5px 0 12px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}


/* V0.1.53 — moteur cartographique Leaflet natif. */
.leaflet-container {
  width: 100%;
  height: 100%;
  background: #dfe8e4;
  font: inherit;
  -webkit-tap-highlight-color: transparent;
}
.leaflet-pane, .leaflet-control { will-change: transform; }
.leaflet-control-zoom a {
  width: 38px !important;
  height: 38px !important;
  line-height: 38px !important;
  font-size: 22px !important;
}
.leaflet-control-attribution { background: rgba(255,255,255,.82) !important; }
.leaflet-gl-layer { z-index: 1; }

/* V0.1.57 — fiches premium + ajout mieux structuré */
#addSheet {
  background: #f7f9f8;
}
#addSheet .sheet-head {
  margin-bottom: 12px;
}
/* V0.1.68 — poignée Ajouter un spot : zone tactile élargie, aspect inchangé */
#addSheet .sheet-handle {
  width: 100%;
  height: 30px;
  margin: -4px 0 2px;
  z-index: 2;
}
#addSheet .sheet-handle::after {
  top: 10px;
}
.add-location-panel,
.add-details-panel {
  border: 1px solid var(--line);
  border-radius: 20px;
  box-shadow: 0 8px 24px rgba(28, 48, 41, .055);
}
.add-location-panel {
  margin-bottom: 12px;
  padding: 13px;
  background: linear-gradient(180deg, rgba(15,118,110,.065), rgba(255,255,255,.96));
}
.add-details-panel {
  padding: 13px;
  background: #fff;
}
.add-section-heading {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
}
.add-section-number {
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  background: var(--primary);
  color: #fff;
  box-shadow: 0 6px 14px rgba(15,118,110,.18);
  font-size: 13px;
  font-weight: 900;
}
.add-section-heading > div {
  min-width: 0;
  display: grid;
  gap: 2px;
}
.add-section-heading strong {
  font-size: 14.5px;
  line-height: 1.2;
  letter-spacing: -.1px;
}
.add-section-heading small {
  color: var(--muted);
  font-size: 11.5px;
  line-height: 1.35;
}
.add-location-panel .location-actions {
  margin-bottom: 9px;
}
.add-location-panel .secondary-btn {
  min-height: 48px;
  background: rgba(255,255,255,.94);
  box-shadow: 0 3px 10px rgba(28,48,41,.035);
}
.add-location-panel .address-search-block {
  margin-bottom: 9px;
  padding: 10px;
  background: rgba(255,255,255,.78);
}
.add-location-panel .location-status {
  margin: 0;
  padding: 11px 12px;
  border: 1px solid rgba(15,118,110,.13);
  background: rgba(15,118,110,.075);
  line-height: 1.35;
}
.add-details-panel .place-name-field {
  margin-bottom: 1px;
}

/* V0.1.158 — ajout rapide : coordonnées GPS et lien/texte */
.quick-add-actions {
  grid-template-columns: 1fr 1fr;
}
.quick-add-panel {
  margin: 0 0 9px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(255,255,255,.82);
}
.quick-add-panel[hidden] { display: none !important; }
.quick-add-panel > label {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: baseline;
  margin-bottom: 8px;
  font-size: 12px;
}
.quick-add-panel > label strong { font-size: 12.5px; }
.quick-add-panel > label span,
.quick-add-panel > small {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
}
.quick-add-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  margin-bottom: 6px;
}
.quick-add-row input,
.quick-paste-panel textarea {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  color: var(--text);
  font: inherit;
}
.quick-add-row input { min-height: 42px; padding: 8px 10px; }
.quick-add-row button {
  min-height: 42px;
  padding: 8px 12px;
  border: 0;
  border-radius: 12px;
  background: var(--primary);
  color: #fff;
  font-weight: 800;
}
.quick-paste-panel textarea {
  display: block;
  min-height: 76px;
  resize: vertical;
  padding: 10px;
  margin-bottom: 8px;
}
.quick-paste-actions {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 6px;
}
.quick-paste-actions .secondary-btn {
  min-height: 42px;
  padding: 8px 12px;
}
.quick-paste-status {
  min-width: 0;
  color: var(--muted);
  font-size: 11.5px;
  line-height: 1.3;
}
.quick-paste-status.is-ok { color: var(--primary); font-weight: 700; }
.quick-paste-status.is-error { color: var(--danger); font-weight: 700; }

@media (max-width: 430px) {
  .quick-add-actions { grid-template-columns: 1fr; }
  .quick-add-panel > label { display: grid; gap: 2px; }
  .quick-paste-actions { align-items: flex-start; flex-direction: column; }
  .quick-paste-actions .secondary-btn { width: 100%; }
}
#placeName.is-guided {
  border-color: var(--primary);
  box-shadow: 0 0 0 4px rgba(15,118,110,.12);
  transition: border-color .18s ease, box-shadow .18s ease;
}

.detail-body {
  gap: 12px;
}
.detail-section {
  display: grid;
  gap: 9px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 6px 20px rgba(28,48,41,.045);
}
.detail-section-title {
  display: flex;
  align-items: center;
  gap: 7px;
  color: var(--text);
}
.detail-section-title > span {
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  border-radius: 9px;
  background: var(--surface-2);
  font-size: 15px;
}
.detail-section-title strong {
  font-size: 14px;
  letter-spacing: -.1px;
}
.detail-info-grid {
  display: grid;
  gap: 8px;
}
.detail-contact-line {
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  min-height: 58px;
  padding: 10px 11px;
  border-radius: 14px;
  background: #f8faf9;
  font-size: 15px;
  line-height: 1.35;
}
.detail-contact-icon {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  background: #fff;
  border: 1px solid var(--line);
  font-size: 17px;
}
.detail-phone-icon { color: var(--primary); }
.detail-phone-icon svg {
  width: 18px;
  height: 18px;
  display: block;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.detail-contact-line > div {
  min-width: 0;
  display: grid;
  gap: 3px;
}
.detail-contact-line strong {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.15;
  text-transform: uppercase;
  letter-spacing: .055em;
}
.detail-contact-line > div > span,
.detail-contact-value > span {
  min-width: 0;
  overflow-wrap: anywhere;
  color: var(--text);
  font-size: 15px;
  font-weight: 750;
}
.detail-contact-value {
  min-width: 0;
  display: grid;
  gap: 2px;
  color: var(--primary);
  text-decoration: none;
}
.detail-contact-value small {
  color: var(--primary);
  font-size: 10.5px;
  font-weight: 750;
}
.detail-contact-line.is-actionable {
  border-color: rgba(15,118,110,.2);
  background: rgba(15,118,110,.055);
}
.detail-services {
  gap: 8px;
}
.detail-service {
  background: #f8faf9;
}
.detail-observations {
  background: linear-gradient(180deg, #fff, #fbf8f5);
}
.detail-note {
  margin: 0;
  padding: 12px 13px;
  border: 0;
  border-radius: 13px;
  background: #faf6f2;
  color: #2f3935;
  font-size: 15px;
  line-height: 1.55;
}
.detail-source {
  padding: 8px 10px;
  border-radius: 11px;
  background: var(--surface-2);
  color: var(--muted);
  font-size: 11.5px;
  line-height: 1.35;
}
.detail-memberships {
  display: grid;
  gap: 2px;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: #fff;
  font-size: 11.5px;
  line-height: 1.35;
}
.detail-memberships strong { color: var(--text); font-size: 12px; }
.detail-memberships span { color: var(--muted); }
.detail-resource-links {
  margin-top: 0;
}
.detail-resource-links .resource-link {
  min-height: 48px;
  border-radius: 14px;
  font-size: 14px;
}

@media (max-width: 430px) {
  .add-location-panel,
  .add-details-panel { padding: 12px; border-radius: 18px; }
  .add-section-heading small { font-size: 11px; }
  .detail-section { padding: 11px; border-radius: 17px; }
  .detail-contact-line {
    grid-template-columns: 34px minmax(0, 1fr);
    gap: 9px;
    font-size: 15px;
  }
  .detail-contact-line strong { font-size: 10.8px; }
  .detail-contact-line > div > span,
  .detail-contact-value > span { font-size: 15px; }
  .detail-note { font-size: 15px; }
}


/* V0.1.58 — France Passion / sauvegarde guidée / FAQ */
.safety-sheet, .faq-sheet { max-height: min(90dvh, 760px); }
.safety-hero { display:grid; grid-template-columns:48px minmax(0,1fr); gap:12px; align-items:start; padding:14px; border:1px solid rgba(15,107,99,.18); border-radius:18px; background:rgba(15,107,99,.055); }
.safety-hero > span { width:46px; height:46px; display:grid; place-items:center; border-radius:14px; background:#fff; font-size:24px; box-shadow:0 4px 14px rgba(15,55,50,.06); }
.safety-hero strong { display:block; color:var(--text); font-size:15px; line-height:1.3; }
.safety-hero p, .safety-tip p { margin:5px 0 0; color:var(--muted); font-size:13px; line-height:1.5; }
.safety-hero.reminder { border-color:rgba(180,120,25,.2); background:rgba(215,154,45,.07); }
.safety-tip { margin-top:10px; padding:12px 13px; border-radius:15px; background:#f8faf9; border:1px solid var(--line); }
.safety-tip strong { font-size:13px; color:var(--primary); }
.safety-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:13px; }
.faq-intro { margin-bottom:10px; padding:11px 12px; border-radius:14px; background:var(--surface-2); color:var(--muted); font-size:13px; line-height:1.45; }
.faq-item { border:1px solid var(--line); border-radius:15px; background:#fff; overflow:hidden; margin-bottom:8px; }
.faq-item summary { list-style:none; cursor:pointer; position:relative; padding:13px 38px 13px 13px; color:var(--text); font-size:14px; font-weight:800; line-height:1.35; }
.faq-item summary::-webkit-details-marker { display:none; }
.faq-item summary::after { content:'+'; position:absolute; right:14px; top:50%; transform:translateY(-50%); color:var(--primary); font-size:20px; font-weight:700; }
.faq-item[open] summary::after { content:'−'; }
.faq-item p { margin:0; padding:0 13px 10px; color:#4b5954; font-size:13px; line-height:1.58; }
.faq-item p:last-child { padding-bottom:13px; }
.faq-item p + p { padding-top:1px; }
@media (max-width:430px) {
  .safety-actions { grid-template-columns:1fr; }
  .safety-hero { grid-template-columns:42px minmax(0,1fr); padding:12px; }
  .safety-hero > span { width:40px; height:40px; border-radius:12px; font-size:21px; }
  .faq-item summary { font-size:14px; }
}


/* V0.1.59 — accueil producteurs / FAQ de prise en main */
.farm-products-choice {
  display:grid;
  grid-template-columns:24px minmax(0,1fr);
  gap:10px;
  align-items:start;
  padding:12px 13px;
  border:1px solid rgba(15,107,99,.18);
  border-radius:15px;
  background:rgba(15,107,99,.045);
  cursor:pointer;
}
.farm-products-choice input {
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.farm-products-check {
  width:22px;
  height:22px;
  border:2px solid #9fb8b3;
  border-radius:7px;
  display:grid;
  place-items:center;
  color:transparent;
  background:#fff;
  font-weight:900;
  line-height:1;
  transition:.16s ease;
}
.farm-products-choice:has(input:checked) {
  border-color:rgba(15,107,99,.38);
  background:rgba(15,107,99,.085);
}
.farm-products-choice input:checked + .farm-products-check {
  background:var(--primary);
  border-color:var(--primary);
  color:#fff;
}
.farm-products-copy strong {
  display:block;
  color:var(--text);
  font-size:13.5px;
  line-height:1.35;
}
.farm-products-copy small {
  display:block;
  margin-top:3px;
  color:var(--muted);
  font-size:11.5px;
  line-height:1.45;
}
.faq-intro-hero {
  display:grid;
  grid-template-columns:44px minmax(0,1fr);
  gap:11px;
  align-items:start;
  padding:13px;
  background:linear-gradient(135deg, rgba(15,107,99,.08), rgba(55,131,166,.05));
  border:1px solid rgba(15,107,99,.16);
}
.faq-intro-hero > span {
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border-radius:13px;
  background:#fff;
  font-size:22px;
  box-shadow:0 4px 14px rgba(15,55,50,.06);
}
.faq-intro-hero strong {
  display:block;
  color:var(--text);
  font-size:15px;
  line-height:1.3;
}
.faq-intro-hero p {
  margin:4px 0 0;
  color:#4b5954;
  font-size:12.7px;
  line-height:1.5;
}
.faq-section-label {
  margin:15px 2px 7px;
  color:var(--primary);
  font-size:11px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
@media (max-width:430px) {
  .faq-intro-hero { grid-template-columns:40px minmax(0,1fr); padding:12px; }
  .faq-intro-hero > span { width:38px; height:38px; font-size:20px; }
  .farm-products-copy strong { font-size:13px; }
}
.farm-products-choice[hidden] { display:none !important; }


/* V0.1.60 — Mes spots : compteur clair, recherche locale et accès carte */
.list-fab {
  white-space: nowrap;
  letter-spacing: -.08px;
}
.place-card-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 52px;
  gap: 7px;
  align-items: stretch;
}
.place-card-row .place-card { min-width: 0; }
.place-map-btn {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: rgba(15,118,110,.055);
  color: var(--primary);
  display: grid;
  place-items: center;
  align-content: center;
  gap: 2px;
  padding: 5px 2px;
  font: inherit;
  font-weight: 850;
  touch-action: manipulation;
}
.place-map-btn > span { font-size: 20px; line-height: 1; }
.place-map-btn > small { font-size: 9.5px; line-height: 1; font-weight: 850; }
.place-map-btn:hover,
.place-map-btn:focus-visible { background: rgba(15,118,110,.11); border-color: rgba(15,118,110,.24); }
.my-spots-list-search {
  min-height: 47px;
  display: grid;
  grid-template-columns: 27px minmax(0,1fr) auto;
  gap: 6px;
  align-items: center;
  margin: -2px 0 12px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #f8faf9;
}
.my-spots-list-search[hidden] { display: none !important; }
.my-spots-list-search-icon { color: var(--primary); font-size: 20px; line-height: 1; text-align: center; }
.my-spots-list-search input {
  min-width: 0;
  width: 100%;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 14px;
}
.my-spots-list-search-count {
  min-width: 27px;
  padding: 4px 6px;
  border-radius: 999px;
  background: #fff;
  color: var(--muted);
  font-size: 10.5px;
  font-weight: 850;
  text-align: center;
}
@media (min-width: 860px) {
  .map-wrap .list-fab {
    display: block;
    left: 16px;
    bottom: 18px;
    min-height: 42px;
    padding: 0 13px;
    font-size: 12.5px;
  }
}
@media (max-width: 380px) {
  .list-fab { padding-left: 11px; padding-right: 11px; font-size: 12.5px; }
  .place-card-row { grid-template-columns: minmax(0, 1fr) 48px; gap: 6px; }
  .place-map-btn > small { font-size: 9px; }
}


/* V0.1.62 — pictogrammes cartographiques externalisés + priorité Mes spots */
:root { --service: #76538f; }
.place-card-icon.service { background: var(--service); }
.spot-marker.service > div { background: var(--service); }
.subtype-svg { width: 21px; height: 21px; display: block; color: currentColor; }
.spot-marker .subtype-svg { width: 24px; height: 24px; }
.search-result-icon .subtype-svg { width: 21px; height: 21px; }
.place-card-icon .subtype-svg { width: 22px; height: 22px; }
.trip-spot-choice .subtype-svg { width: 21px; height: 21px; }
.chip[data-family="all"].is-active { border-color: var(--all); background: var(--all); color: #fff; }
.chip[data-family="discover"].is-active { border-color: var(--discover); background: rgba(217,106,53,.10); color: var(--discover); }
.chip[data-family="service"].is-active { border-color: var(--service); background: rgba(118,83,143,.10); color: var(--service); }
.chip[data-favorite="true"].is-active { border-color: #e2c45c; background: #fff2bd; color: #735700; }
.legend-fab { right: 14px; bottom: 78px; width: 48px; height: 48px; background: rgba(255,255,255,.97); color: var(--primary); font-size: 19px; font-weight: 900; font-family: Georgia, serif; }
.service-point-fields { display: grid; grid-template-columns: 1fr; gap: 12px; }
.service-point-fields[hidden], .services-grid[hidden] { display: none !important; }
.service-point-intro { display: grid; grid-template-columns: 42px minmax(0,1fr); gap: 10px; align-items: center; padding: 11px 12px; border: 1px solid rgba(118,83,143,.22); border-radius: 15px; background: rgba(118,83,143,.055); }
.service-point-intro > span { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 12px; background: var(--service); color: #fff; font-size: 18px; font-weight: 900; }
.service-point-intro > div { min-width: 0; display: grid; gap: 2px; }
.service-point-intro strong { font-size: 13px; }
.service-point-intro small { color: var(--muted); font-size: 10.5px; line-height: 1.35; }
.legend-sheet { width: min(500px, calc(100vw - 20px)); }
.legend-intro { margin: -2px 0 13px; color: var(--muted); font-size: 12px; line-height: 1.45; }
.legend-body { display: grid; gap: 12px; }
.legend-group { padding: 12px; border: 1px solid var(--line); border-radius: 17px; background: #fff; }
.legend-group-head { display: grid; grid-template-columns: 18px minmax(0,1fr); gap: 8px; align-items: center; margin-bottom: 10px; }
.legend-family-dot { width: 14px; height: 14px; border-radius: 5px 5px 5px 1px; transform: rotate(-45deg); border: 2px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,.18); }
.legend-family-dot.sleep { background: var(--sleep); }
.legend-family-dot.discover { background: var(--discover); }
.legend-family-dot.service { background: var(--service); }
.legend-group-head > div { display: grid; gap: 1px; }
.legend-group-head strong { font-size: 14px; }
.legend-group-head small { color: var(--muted); font-size: 10.5px; }
.legend-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }
.legend-item { min-width: 0; display: grid; grid-template-columns: 32px minmax(0,1fr); gap: 7px; align-items: center; min-height: 36px; color: var(--text); font-size: 11px; font-weight: 700; }
.legend-marker { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 10px; color: #fff; }
.legend-marker.sleep { background: var(--sleep); }
.legend-marker.discover { background: var(--discover); }
.legend-marker.service { background: var(--service); }
.legend-marker .subtype-svg { width: 19px; height: 19px; }
.legend-note { display: grid; grid-template-columns: 36px minmax(0,1fr); gap: 9px; align-items: center; margin: 1px 0 0; padding: 10px 11px; border-radius: 14px; background: rgba(36,117,208,.06); color: var(--muted); font-size: 10.5px; line-height: 1.35; }
.legend-cluster-sample { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; background: #2475d0; color: #fff; font-size: 11px; font-weight: 900; box-shadow: 0 2px 7px rgba(36,117,208,.25); }
@media (max-width: 390px) {
  .legend-grid { grid-template-columns: 1fr; }
  .legend-fab { bottom: 76px; }
}


/* V0.1.63 — légende mobile centrée + colonne PC allégée */
@media (max-width: 859px) {
  /* La largeur globale posée en V0.1.62 décalait la feuille vers la gauche sur certains mobiles. */
  .legend-sheet {
    left: 0;
    right: 0;
    width: auto;
    margin-inline: 0;
  }
}
@media (min-width: 860px) {
  /* Sur PC, Mes spots se consulte depuis le raccourci posé directement sur la carte. */
  .places-panel .panel-heading,
  .places-panel #placesList,
  .places-panel #emptyState {
    display: none !important;
  }
  .places-panel {
    padding-top: 14px;
  }
  .legend-sheet {
    width: min(500px, calc(100vw - 36px));
  }
}



/* V0.1.65 — retour temporaire aux pictogrammes SVG intégrés */

/* V0.1.66 — pictogrammes externes via <img>, sans masque CSS */
.subtype-svg {
  width: 21px;
  height: 21px;
  display: block;
  object-fit: contain;
  pointer-events: none;
  user-select: none;
  -webkit-user-drag: none;
}
/* Dans les marqueurs/cartes/légende colorés, le dessin est toujours blanc,
   quelle que soit la couleur utilisée dans le fichier SVG de remplacement. */
.spot-marker .subtype-svg,
.place-card-icon .subtype-svg,
.trip-spot-choice .subtype-svg,
.legend-marker .subtype-svg {
  filter: brightness(0) invert(1);
}
/* Dans la recherche, fond clair : pictogramme sombre pour rester lisible. */
.search-result-icon .subtype-svg {
  filter: brightness(0);
  opacity: .72;
}





/* V0.1.74 — rappel de filtre flottant, sans modifier la grille de l’application */
.filter-btn.has-active-filters { border-color: var(--primary); background: rgba(15,118,110,.10); color: var(--primary); }
.active-filters-pill {
  position: absolute; z-index: 24; top: 14px; left: 50%; transform: translateX(-50%);
  max-width: 220px; min-height: 36px; display: flex; align-items: center; gap: 7px;
  padding: 5px 6px 5px 11px; border: 1px solid rgba(15,118,110,.28); border-radius: 999px;
  background: rgba(255,255,255,.97); color: var(--text); box-shadow: 0 6px 20px rgba(23,32,29,.16);
  font-size: 12px; font-weight: 750;
}
.active-filters-pill[hidden] { display: none !important; }
.active-filters-pill .active-filters-open {
  min-width: 0; min-height: 26px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  border: 0; border-radius: 999px; padding: 3px 4px; background: transparent; color: var(--text);
  font: inherit; font-size: 12px; font-weight: 800; cursor: pointer;
}
.active-filters-pill .active-filters-open:hover,
.active-filters-pill .active-filters-open:focus-visible { color: var(--primary); outline: none; }
.active-filters-pill .active-filters-clear {
  flex: 0 0 auto; min-height: 26px; border: 0; border-radius: 999px; padding: 3px 9px;
  background: var(--primary); color: #fff; font-size: 11px; font-weight: 850; cursor: pointer;
}
@media (max-width: 520px) {
  .active-filters-pill { top: 12px; max-width: min(220px, calc(100% - 150px)); }
}

/* V0.1.76 — fiche détail mobile : coque arrondie fixe, contenu seul scrollable */
@media (max-width: 859px) {
  .detail-sheet {
    display: flex;
    flex-direction: column;
    border-top-left-radius: 26px;
    border-top-right-radius: 26px;
    overflow: hidden;
    background: var(--surface);
    background-clip: padding-box;
  }
  .detail-sheet > .sheet-handle,
  .detail-sheet > .sheet-head {
    flex: 0 0 auto;
  }
  .detail-sheet > .detail-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }
}


/* V0.1.77 — pictogrammes cartographiques agrandis à 22 px pour améliorer la lisibilité, notamment aire camping-car et ferme. */


/* V0.1.78 — tous les pictogrammes de carte passent de 22 px à 24 px pour une meilleure lisibilité mobile. */


/* V0.1.82 — distinction Aire / Parking / Spot + limitation de hauteur */
.legend-sleep-help { margin-top: 10px; padding: 9px 10px; border-radius: 13px; background: rgba(15,118,110,.055); color: var(--muted); font-size: 10.5px; line-height: 1.45; }
.legend-sleep-help div + div { margin-top: 4px; }
.legend-sleep-help strong { color: var(--text); }

/* V0.1.83 — menu Plus structuré + niveau camping-car */
.menu-sheet { max-height: min(92dvh, 860px); }
.menu-sections { display: grid; gap: 18px; }
.menu-section { display: grid; gap: 8px; }
.menu-section-title {
  margin: 0 4px;
  color: #52615c;
  font-size: 12px;
  line-height: 1.2;
  font-weight: 850;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.menu-action-featured {
  border-color: rgba(15,118,110,.24);
  background: linear-gradient(135deg, rgba(15,118,110,.07), rgba(36,117,208,.045));
}
.menu-action-featured > span {
  background: rgba(15,118,110,.11);
}

.level-sheet { max-height: min(92dvh, 820px); }
.level-body { display: grid; gap: 14px; padding-bottom: 4px; }
.level-intro {
  margin: -2px 0 0;
  padding: 11px 12px;
  border-radius: 14px;
  background: rgba(36,117,208,.055);
  color: #43514c;
  font-size: 14px;
  line-height: 1.5;
}
.level-status-row {
  min-height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  flex-wrap: wrap;
}
.level-status,
.level-calibration-badge {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 5px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 850;
}
.level-status { background: #eef3f1; color: #5b6864; }
.level-status.is-live { background: rgba(36,117,208,.10); color: #185ca6; }
.level-status.is-good { background: rgba(15,118,110,.11); color: var(--primary); }
.level-status.is-warn { background: rgba(180,83,9,.10); color: #a04c08; }
.level-status.is-error { background: rgba(181,72,63,.10); color: var(--danger); }
.level-calibration-badge { background: rgba(15,118,110,.08); color: var(--primary); }

.level-target {
  --level-x: 0px;
  --level-y: 0px;
  position: relative;
  width: min(250px, 72vw);
  aspect-ratio: 1;
  margin: 0 auto;
  overflow: hidden;
  border: 2px solid #8ca09a;
  border-radius: 50%;
  background:
    radial-gradient(circle at center, rgba(15,118,110,.08) 0 18%, transparent 18.5%),
    radial-gradient(circle at center, transparent 0 41%, rgba(140,160,154,.18) 41.5% 42.5%, transparent 43%),
    linear-gradient(#f9fbfa, #edf4f1);
  box-shadow: inset 0 0 0 9px rgba(255,255,255,.65), 0 8px 24px rgba(32,48,43,.09);
}
.level-cross {
  position: absolute;
  left: 50%;
  top: 50%;
  display: block;
  background: rgba(72,92,85,.28);
  transform: translate(-50%, -50%);
}
.level-cross-x { width: 76%; height: 1px; }
.level-cross-y { width: 1px; height: 76%; }
.level-center-ring {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 54px;
  height: 54px;
  border: 2px solid rgba(15,118,110,.40);
  border-radius: 50%;
  transform: translate(-50%, -50%);
}
.level-bubble {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 34px;
  height: 34px;
  border: 3px solid rgba(13,95,89,.72);
  border-radius: 50%;
  background: rgba(32,205,178,.50);
  box-shadow: 0 3px 10px rgba(15,118,110,.22), inset 0 0 0 5px rgba(255,255,255,.30);
  transform: translate(calc(-50% + var(--level-x)), calc(-50% + var(--level-y)));
  transition: transform .10s linear, background .18s ease, border-color .18s ease;
}
.level-target.is-level .level-bubble {
  background: rgba(38,197,122,.62);
  border-color: rgba(11,120,72,.78);
}

.level-values { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.level-value-card {
  min-width: 0;
  padding: 11px 10px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #fff;
  text-align: center;
}
.level-value-card small { display: block; color: var(--muted); font-size: 12px; font-weight: 700; }
.level-value-card strong {
  display: block;
  margin-top: 3px;
  color: var(--text);
  font-size: 21px;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}
.level-hint {
  min-height: 38px;
  margin: 0;
  color: #53615c;
  font-size: 13px;
  line-height: 1.5;
  text-align: center;
}
.level-actions { display: grid; grid-template-columns: 1.25fr 1fr; gap: 8px; }
.level-actions button:disabled { opacity: .45; cursor: default; }
.level-reset-btn {
  justify-self: center;
  min-height: 34px;
  border: 0;
  background: transparent;
  color: var(--primary);
  font-size: 13px;
  font-weight: 800;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.level-calibration-help {
  margin: -5px 0 0;
  color: #6b7773;
  font-size: 12px;
  line-height: 1.45;
  text-align: center;
}
.level-privacy-note {
  display: grid;
  grid-template-columns: 34px minmax(0,1fr);
  gap: 8px;
  align-items: center;
  padding: 10px 11px;
  border-radius: 14px;
  background: rgba(15,118,110,.05);
  color: #5d6a66;
}
.level-privacy-note > span { display: grid; place-items: center; font-size: 20px; }
.level-privacy-note p { margin: 0; font-size: 12px; line-height: 1.45; }

@media (max-width: 390px) {
  .menu-sections { gap: 15px; }
  .level-target { width: min(218px, 68vw); }
  .level-value-card strong { font-size: 19px; }
  .level-actions { grid-template-columns: 1fr; }
}



/* V0.1.84 — harmonisation des icônes du menu Plus dans un style SVG cohérent. */


/* V0.1.85 — correction des icônes du menu Plus : retour des icônes Niveau et Installer, et agrandissement/correction ciblée des autres pictos utilitaires. */


/* V0.1.86 — agrandissement ciblé des icônes Collections, Importer, Sauvegarder et Restaurer ; icône Restaurer simplifiée et homogénéisée. */


/* V0.1.87 — renfort mobile ciblé pour les icônes Mes collections / Importer / Sauvegarder / Restaurer. */
.menu-svg-icon-strong { width: 30px; height: 30px; }
.menu-svg-icon-strong path,
.menu-svg-icon-strong circle,
.menu-svg-icon-strong rect,
.menu-svg-icon-strong line,
.menu-svg-icon-strong polyline { stroke-width: 2.9; }
@media (max-width: 430px) {
  .menu-svg-icon-strong { width: 32px; height: 32px; }
  #collectionsBtn > span,
  label[for="importFile"] > span,
  #exportBtn > span,
  label[for="restoreFile"] > span {
    color: #0b6e67;
    background: rgba(15,118,110,.14);
  }
}


/* V0.1.88 — restauration : icône simplifiée, plus foncée et plus lisible sur mobile ; léger renfort de contraste pour le bloc Mes données. */
#collectionsBtn > span,
label[for="importFile"] > span,
#exportBtn > span,
label[for="restoreFile"] > span {
  color: #0b6e67;
  background: rgba(15,118,110,.17);
}
.menu-svg-icon-strong path,
.menu-svg-icon-strong circle,
.menu-svg-icon-strong rect,
.menu-svg-icon-strong line,
.menu-svg-icon-strong polyline { stroke-width: 3.1; }
.menu-svg-icon-restore path { stroke-width: 3.35; }
@media (max-width: 430px) {
  #collectionsBtn > span,
  label[for="importFile"] > span,
  #exportBtn > span,
  label[for="restoreFile"] > span {
    color: #095f59;
    background: rgba(15,118,110,.20);
  }
  .menu-svg-icon-strong { width: 33px; height: 33px; }
  .menu-svg-icon-restore { width: 34px; height: 34px; }
}


/* V0.1.89 — correction de visibilité mobile du bloc Mes données : contraste fort (fond vert foncé + pictos blancs). */
#collectionsBtn > span,
label[for="importFile"] > span,
#exportBtn > span,
label[for="restoreFile"] > span {
  width: 42px;
  height: 42px;
  color: #ffffff !important;
  background: #0b6e67 !important;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.04);
}
#collectionsBtn .menu-svg-icon-strong,
label[for="importFile"] .menu-svg-icon-strong,
#exportBtn .menu-svg-icon-strong,
label[for="restoreFile"] .menu-svg-icon-strong {
  width: 27px;
  height: 27px;
}
#collectionsBtn .menu-svg-icon-strong path,
#collectionsBtn .menu-svg-icon-strong circle,
#collectionsBtn .menu-svg-icon-strong rect,
#collectionsBtn .menu-svg-icon-strong line,
#collectionsBtn .menu-svg-icon-strong polyline,
label[for="importFile"] .menu-svg-icon-strong path,
label[for="importFile"] .menu-svg-icon-strong circle,
label[for="importFile"] .menu-svg-icon-strong rect,
label[for="importFile"] .menu-svg-icon-strong line,
label[for="importFile"] .menu-svg-icon-strong polyline,
#exportBtn .menu-svg-icon-strong path,
#exportBtn .menu-svg-icon-strong circle,
#exportBtn .menu-svg-icon-strong rect,
#exportBtn .menu-svg-icon-strong line,
#exportBtn .menu-svg-icon-strong polyline,
label[for="restoreFile"] .menu-svg-icon-strong path,
label[for="restoreFile"] .menu-svg-icon-strong circle,
label[for="restoreFile"] .menu-svg-icon-strong rect,
label[for="restoreFile"] .menu-svg-icon-strong line,
label[for="restoreFile"] .menu-svg-icon-strong polyline {
  stroke-width: 2.6;
}
label[for="restoreFile"] .menu-svg-icon-restore path {
  stroke-width: 2.85;
}
@media (max-width: 430px) {
  #collectionsBtn > span,
  label[for="importFile"] > span,
  #exportBtn > span,
  label[for="restoreFile"] > span { width: 44px; height: 44px; }
  #collectionsBtn .menu-svg-icon-strong,
  label[for="importFile"] .menu-svg-icon-strong,
  #exportBtn .menu-svg-icon-strong,
  label[for="restoreFile"] .menu-svg-icon-strong { width: 29px; height: 29px; }
}


/* V0.1.90 — retouches ciblées validées : Restaurer refait ; Actualiser et FAQ renforcés. */
label[for="restoreFile"] .menu-svg-icon-restore { width: 30px; height: 30px; }
label[for="restoreFile"] .menu-svg-icon-restore path { stroke-width: 3.15; }
#refreshMenuBtn > span,
#faqBtn > span {
  color: #0b6e67;
  background: rgba(15,118,110,.13);
}
#refreshMenuBtn .menu-svg-icon,
#faqBtn .menu-svg-icon {
  width: 28px;
  height: 28px;
}
#refreshMenuBtn .menu-svg-icon path,
#refreshMenuBtn .menu-svg-icon circle,
#refreshMenuBtn .menu-svg-icon rect,
#faqBtn .menu-svg-icon path,
#faqBtn .menu-svg-icon circle,
#faqBtn .menu-svg-icon rect {
  stroke-width: 2.75;
}
@media (max-width: 430px) {
  #refreshMenuBtn > span,
  #faqBtn > span {
    color: #095f59;
    background: rgba(15,118,110,.16);
  }
  #refreshMenuBtn .menu-svg-icon,
  #faqBtn .menu-svg-icon { width: 29px; height: 29px; }
}


/* V0.1.91 — marqueurs progressifs selon le niveau de zoom.
   De loin : taille historique. En approche : le marqueur et son pictogramme
   grandissent ensemble pour rendre les dessins détaillés (fourgon, tracteur…)
   immédiatement reconnaissables sans surcharger la carte à petite échelle. */
.spot-marker.marker-zoom-md > div { width: 40px; height: 40px; border-radius: 14px 14px 14px 3px; }
.spot-marker.marker-zoom-md .subtype-svg,
.spot-marker.marker-zoom-md .subtype-camping-symbol { width: 27px; height: 27px; }
.spot-marker.marker-zoom-md span { font-size: 17px; }

.spot-marker.marker-zoom-lg > div { width: 44px; height: 44px; border-radius: 15px 15px 15px 4px; }
.spot-marker.marker-zoom-lg .subtype-svg,
.spot-marker.marker-zoom-lg .subtype-camping-symbol { width: 30px; height: 30px; }
.spot-marker.marker-zoom-lg span { font-size: 18px; }

.spot-marker.marker-zoom-xl > div { width: 48px; height: 48px; border-radius: 16px 16px 16px 4px; }
.spot-marker.marker-zoom-xl .subtype-svg,
.spot-marker.marker-zoom-xl .subtype-camping-symbol { width: 33px; height: 33px; }
.spot-marker.marker-zoom-xl span { font-size: 19px; }


/* V0.1.92 — netteté des pictogrammes de carte.
   La forme de goutte reste tournée, mais le contenu SVG n'est plus contre-tourné :
   le navigateur rend le pictogramme directement à 0°, ce qui évite les variations
   de netteté liées aux doubles rotations selon le zoom / la densité de pixels. */
.spot-marker { --marker-fill: var(--sleep); }
.spot-marker.sleep { --marker-fill: var(--sleep); }
.spot-marker.discover { --marker-fill: var(--discover); }
.spot-marker.service { --marker-fill: var(--service); }

.spot-marker > div {
  position: relative;
  transform: none !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  overflow: visible;
}
.spot-marker > div::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: inherit;
  transform: rotate(-45deg);
  transform-origin: 50% 50%;
  background: var(--marker-fill);
  border: 3px solid #fff;
  box-shadow: 0 5px 15px rgba(0,0,0,.22);
  box-sizing: border-box;
}
.spot-marker span {
  position: relative;
  z-index: 1;
  transform: none !important;
}
.spot-marker.favorite > div::after {
  z-index: 2;
  transform: none !important;
  top: -8px;
  right: -8px;
}
.spot-marker.collection > div::before {
  box-shadow: 0 0 0 3px rgba(36,117,208,.38), 0 5px 15px rgba(0,0,0,.22);
}


/* V0.1.93 — rendu des pictogrammes de carte inspiré du principe observé dans l'APK Park4night.
   Les SVG de carte sont déjà colorés en blanc : aucun filtre CSS n'est appliqué sur les marqueurs,
   afin d'éviter une rasterisation supplémentaire susceptible de réduire la netteté à certaines tailles. */
.spot-marker .subtype-svg {
  filter: none !important;
  opacity: 1 !important;
}

/* V0.1.95 — raccourcis compacts Recherche / Filtres en mode carte agrandie mobile.
   Placés sous les contrôles de zoom Leaflet pour éviter les recouvrements. */
.expanded-map-tools,
.expanded-search-close { display: none; }

@media (max-width: 859px) {
  .app-shell.is-map-expanded .expanded-map-tools {
    position: absolute;
    z-index: 25;
    left: 10px;
    top: 92px;
    display: grid;
    gap: 8px;
  }
  .app-shell.is-map-expanded .expanded-map-tools button {
    position: relative;
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    border: 1px solid rgba(15,118,110,.20);
    border-radius: 13px;
    padding: 0;
    display: grid;
    place-items: center;
    background: rgba(255,255,255,.98);
    color: var(--primary-strong);
    box-shadow: var(--shadow);
  }
  .app-shell.is-map-expanded .expanded-map-tools .expanded-tool-icon {
    width: 24px;
    height: 24px;
    display: block;
    fill: none;
    stroke: currentColor;
    stroke-width: 2.2;
    stroke-linecap: round;
    stroke-linejoin: round;
  }
  .app-shell.is-map-expanded .expanded-map-tools button.has-active-filters {
    border-color: var(--primary);
    background: rgba(238,248,246,.98);
  }
  .app-shell.is-map-expanded.is-expanded-search-open .expanded-map-tools { display: none; }
  .app-shell.is-map-expanded.is-expanded-search-open > .search-row {
    display: flex !important;
    position: fixed;
    z-index: 70;
    left: 10px;
    right: 10px;
    top: max(10px, env(safe-area-inset-top));
    padding: 7px;
    border: 1px solid rgba(15,118,110,.18);
    border-radius: 18px;
    background: rgba(255,255,255,.98);
    box-shadow: 0 12px 32px rgba(23,32,29,.20);
  }
  .app-shell.is-map-expanded.is-expanded-search-open > .search-row .filter-btn { display: none; }
  .app-shell.is-map-expanded.is-expanded-search-open > .search-row .expanded-search-close {
    flex: 0 0 auto;
    width: 42px;
    height: 42px;
    border: 0;
    border-radius: 13px;
    display: grid;
    place-items: center;
    background: var(--surface-2);
    color: var(--text);
    font-size: 24px;
    line-height: 1;
  }
  .app-shell.is-map-expanded.is-expanded-search-open > .search-row .search-box {
    height: 42px;
    background: #fff;
  }
  .app-shell.is-map-expanded.is-expanded-search-open .global-search-results {
    left: 7px;
    right: 7px;
    max-height: min(58dvh, 430px);
  }
}


/* V0.1.96 — commandes de zoom plus discrètes sur mobile, sans sacrifier la zone tactile. */
@media (max-width: 859px) {
  .leaflet-control-zoom {
    box-shadow: 0 3px 12px rgba(0,0,0,.10) !important;
  }
  .leaflet-control-zoom a {
    width: 36px !important;
    height: 36px !important;
    line-height: 36px !important;
    font-size: 20px !important;
    background: rgba(255,255,255,.78) !important;
    color: #3f4a46 !important;
  }
}


/* V0.1.97 — retour contextuel depuis une fiche personnelle vers la liste mobile d’origine. */
.detail-back-btn {
  flex: 0 0 42px;
  border: 1px solid var(--line);
  background: #eef3f1;
  color: var(--primary);
  font-size: 24px;
  font-weight: 750;
  line-height: 1;
}
@media (max-width: 859px) {
  .detail-back-btn { width: 42px; height: 42px; border-radius: 14px; }
}


/* V0.1.100 — Ma position revient à la cible claire ; Autour possède désormais son propre pictogramme de recherche. */
.locate-fab { font-size: 0; }
.locate-icon {
  width: 27px;
  height: 27px;
  display: block;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.05;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.locate-icon .locate-icon-dot { fill: currentColor; stroke: none; }



/* V0.1.104 — tarif du lieu et animaux : champs simples + filtres compacts */
.tariff-status-field { display: grid; grid-template-columns: minmax(0, 1fr); gap: 5px; }
.tariff-status-field > small { color: var(--muted); font-size: 11px; line-height: 1.35; }
.tariff-status-field[hidden], #animalPolicyField[hidden], #placePriceField[hidden] { display: none !important; }
.mobile-filter-quick {
  display: flex; gap: 7px; overflow-x: auto; scrollbar-width: none; padding: 1px 0 11px; margin: 0 0 4px; -webkit-overflow-scrolling: touch;
}
.mobile-filter-quick::-webkit-scrollbar { display: none; }
.mobile-filter-chip {
  flex: 0 0 auto; min-height: 36px; padding: 7px 10px; border: 1px solid var(--line); border-radius: 999px;
  background: #fff; color: var(--text); font: inherit; font-size: 12px; font-weight: 750; white-space: nowrap; cursor: pointer;
}
.mobile-filter-chip.is-active { border-color: var(--primary); background: rgba(15,118,110,.10); color: var(--primary); }

.filter-section { display: grid; gap: 9px; margin: 0 0 14px; padding: 12px; border: 1px solid var(--line); border-radius: 14px; background: #fbfcfc; }
.filter-section-title { display: flex; justify-content: space-between; gap: 10px; align-items: baseline; }
.filter-section-title strong { font-size: 13px; }
.filter-section-title small, .filter-help { color: var(--muted); font-size: 11px; line-height: 1.35; }
.filter-segmented { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
.filter-segmented label { position: relative; cursor: pointer; }
.filter-segmented input { position: absolute; opacity: 0; pointer-events: none; }
.filter-segmented span { min-height: 40px; display: grid; place-items: center; padding: 8px 7px; border: 1px solid var(--line); border-radius: 11px; background: #fff; font-size: 12px; font-weight: 750; text-align: center; }
.filter-segmented input:checked + span { border-color: var(--primary); background: rgba(15,118,110,.09); color: var(--primary); }
.filter-secondary-option, .filter-wide-option { display: flex; align-items: center; gap: 9px; min-height: 42px; font-size: 12px; font-weight: 650; }
.filter-secondary-option input, .filter-wide-option input { width: 18px; height: 18px; accent-color: var(--primary); flex: 0 0 auto; }
.filter-secondary-option.is-disabled { opacity: .52; }
.animal-filter-icon { font-size: 20px; line-height: 1; }
.tariff-tag.is-free { font-weight: 800; }
.tariff-tag.is-paid { font-weight: 800; }
.animal-tag { white-space: nowrap; }
@media (max-width: 430px) {
  .filter-section { padding: 11px; }
  .filter-segmented span { min-height: 42px; font-size: 13px; }
  .filter-secondary-option, .filter-wide-option { font-size: 13px; }
}


/* V0.1.106 — menu Plus > Application : même fond pour Actualiser, Installer et Aide & FAQ. */
#refreshMenuBtn > span,
#installMenuBtn > span,
#faqBtn > span {
  background: var(--brand-soft, #e8f2e7);
  color: var(--primary);
}

/* V0.1.107 — Collections proposées : catalogue léger et mises à jour versionnées */
.proposed-collections-section[hidden] { display: none !important; }
.proposed-collections-section { margin: 3px 0 16px; }
.proposed-collections-intro { margin: -2px 2px 9px; color: var(--muted); font-size: 11px; line-height: 1.45; }
.proposed-collections-list { display: grid; gap: 9px; }
.proposed-collection-card { padding: 11px; border: 1px solid rgba(15,107,99,.20); border-radius: 17px; background: linear-gradient(180deg, rgba(15,107,99,.045), #fff 78%); }
.proposed-collection-head { display: grid; grid-template-columns: 42px minmax(0,1fr); gap: 9px; align-items: center; }
.proposed-collection-icon { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 12px; background: #fff; border: 1px solid rgba(15,107,99,.12); box-shadow: 0 2px 8px rgba(24,54,48,.06); overflow: hidden; }
.proposed-collection-icon img { width: 29px; height: 29px; object-fit: contain; display: block; }
.proposed-collection-copy { min-width: 0; display: grid; gap: 3px; }
.proposed-title-line { min-width: 0; display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.proposed-title-line strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.proposed-collection-copy small { color: var(--muted); font-size: 10.5px; line-height: 1.35; }
.proposed-collection-card > p { margin: 9px 1px 10px; color: #4f5b57; font-size: 11.5px; line-height: 1.45; }
.proposed-status { flex: 0 0 auto; padding: 3px 7px; border-radius: 999px; background: rgba(36,117,208,.09); color: #2475d0; font-size: 9px; font-weight: 850; }
.proposed-status.is-installed { background: rgba(15,107,99,.10); color: var(--primary); }
.proposed-status.is-update { background: rgba(221,147,33,.13); color: #946112; }
.proposed-collection-actions { display: grid; grid-template-columns: 1fr auto; gap: 7px; align-items: stretch; }
.proposed-collection-actions .primary-btn { min-height: 42px; font-size: 11.5px; }
.proposed-source-link { min-width: 78px; min-height: 42px; display: grid; place-items: center; padding: 0 11px; text-decoration: none; font-size: 11.5px; }
.collection-inline-badge { display: inline-flex; vertical-align: 1px; margin-left: 4px; padding: 2px 6px; border-radius: 999px; background: rgba(15,107,99,.10); color: var(--primary); font-size: 8.5px; font-weight: 850; }
#renameCollectionBtn[hidden] { display: none !important; }
@media (max-width: 390px) {
  .proposed-collection-actions { grid-template-columns: 1fr; }
  .proposed-source-link { width: 100%; }
}


/* V0.1.108 — Mes collections : catalogue proposé repliable en bas + commandes plus confortables */
.proposed-collections-section { margin: 16px 0 2px; border-top: 1px solid var(--line); padding-top: 12px; }
.proposed-collections-toggle {
  width: 100%; min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 10px 11px; border: 1px solid rgba(15,107,99,.18); border-radius: 15px;
  background: rgba(15,107,99,.045); color: var(--text); text-align: left; cursor: pointer;
}
.proposed-toggle-copy { min-width: 0; display: grid; gap: 2px; }
.proposed-toggle-copy strong { font-size: 13px; }
.proposed-toggle-copy small { color: var(--muted); font-size: 10.5px; line-height: 1.3; }
.proposed-toggle-meta { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; }
.proposed-count-badge { min-width: 27px; height: 27px; padding: 0 6px; display: inline-grid; place-items: center; border-radius: 999px; background: #fff; color: var(--primary); font-size: 11px; font-weight: 850; border: 1px solid rgba(15,107,99,.12); }
.proposed-update-badge { min-height: 25px; padding: 0 7px; display: inline-flex; align-items: center; border-radius: 999px; background: rgba(221,147,33,.14); color: #946112; font-size: 9px; font-weight: 900; white-space: nowrap; }
.proposed-update-badge[hidden] { display: none !important; }
.proposed-toggle-chevron { width: 20px; display: inline-grid; place-items: center; color: var(--primary); font-size: 18px; line-height: 1; transition: transform .18s ease; }
.proposed-collections-toggle[aria-expanded="true"] .proposed-toggle-chevron { transform: rotate(90deg); }
.proposed-collections-body { padding-top: 10px; }
.proposed-collections-body[hidden] { display: none !important; }
.proposed-collections-intro { margin: 0 2px 9px; }
.collection-card-actions button { min-height: 42px; font-size: 11.5px; }
.collection-detail-actions button { min-height: 44px; font-size: 11.5px; }
.collection-delete-btn { min-height: 44px; }


/* V0.1.109 — Collections proposées : date plus lisible + navigation retour */
.proposed-updated-date {
  margin: 8px 1px 0; display: inline-flex; align-items: center; gap: 6px; width: fit-content;
  padding: 5px 8px; border-radius: 10px; background: rgba(15,107,99,.085); color: var(--primary);
  font-size: 10.5px; line-height: 1.2;
}
.proposed-updated-date > span:first-child { font-size: 13px; font-weight: 900; }
.proposed-updated-date strong { font-weight: 900; }
.collection-detail-back-btn {
  width: 100%; min-height: 42px; margin: -3px 0 10px; padding: 8px 11px;
  display: flex; align-items: center; justify-content: flex-start; color: var(--primary);
  border-color: rgba(15,107,99,.20); background: rgba(15,107,99,.045); font-size: 11.5px;
}

/* V0.1.110 — Collections : supprimer en local, masquer dans les collections proposées */
.collection-restore-hidden-btn {
  width: 100%; min-height: 42px; margin: -5px 0 12px;
  color: var(--primary); border-color: rgba(15,107,99,.20); background: rgba(15,107,99,.045);
  font-size: 11.5px;
}
.collection-place-remove-btn {
  width: 100%; color: var(--danger); border-color: rgba(181,72,63,.22); background: rgba(181,72,63,.035);
}

/* V0.1.119 — Voyage : actions plus lisibles et état ajouté/retiré */
.trip-gpx-actions #tripGpxMapBtn {
  min-height: 46px; border-color: rgba(36,117,208,.30); background: rgba(36,117,208,.10);
  color: #195fa8; font-weight: 850; box-shadow: 0 3px 10px rgba(36,117,208,.08);
}
.trip-gpx-actions #tripGpxMapBtn:hover { background: rgba(36,117,208,.16); }
.trip-context-add-btn {
  width: 100%; min-height: 46px; margin: 10px 0; font-weight: 850;
  border-color: #2475d0; background: #2475d0; color: #fff;
}
.trip-context-add-btn:hover { background: #1c64b6; }
.trip-context-add-btn.is-remove {
  border-color: rgba(217,119,69,.40); background: rgba(217,119,69,.12); color: #9b4e27;
}
.trip-context-add-btn.is-remove:hover { background: rgba(217,119,69,.18); }
.trip-choice-add.is-added, .trip-choice-add:disabled {
  border-color: rgba(15,118,110,.18); background: rgba(15,118,110,.07); color: var(--primary); opacity: 1;
}
.trip-spot-choice.is-added { border-color: rgba(15,118,110,.22); background: rgba(15,118,110,.035); }


/* V0.1.122 — recherche dans les collections + Infos Google Mes spots */
.collection-places-search {
  display: grid; grid-template-columns: 22px minmax(0,1fr); gap: 7px; align-items: center;
  margin: 2px 0 10px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 13px; background: var(--surface);
}
.collection-places-search > span { display: grid; place-items: center; font-size: 14px; }
.collection-places-search input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--text); font: inherit; font-size: 13px; }
.collection-places-search input::placeholder { color: var(--muted); }
.detail-google-info-btn { width: 100%; min-height: 44px; margin-top: 10px; border-radius: 12px; font: inherit; font-size: 12px; font-weight: 800; }


/* V0.1.126 — palette de repères collection fortement contrastée + cyan électrique.
   Il ne modifie jamais le fond ni le SVG du pictogramme : la couleur sert
   uniquement à reconnaître la collection lorsque plusieurs listes sont visibles. */
.collection-color-brand { --collection-accent: #1f846b; }
.collection-color-navy { --collection-accent: #0066ff; }
.collection-color-brick { --collection-accent: #e31b23; }
.collection-color-slate { --collection-accent: #d9a400; }
.collection-color-brown { --collection-accent: #ff2f92; }
.collection-color-charcoal { --collection-accent: #111111; }
.collection-color-raspberry { --collection-accent: #39ff14; }
.collection-color-cyan { --collection-accent: #00cfff; }

.collection-marker-dot {
  position: absolute;
  z-index: 4;
  top: -5px;
  left: -5px;
  right: auto;
  width: 13px;
  height: 13px;
  border: 2px solid #fff;
  border-radius: 999px;
  background: var(--collection-accent);
  box-shadow: 0 1px 4px rgba(0,0,0,.32);
  box-sizing: border-box;
  pointer-events: none;
}
.collection-cluster-marker > div { position: relative; }

.collection-list-color-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin-right: 6px;
  border: 2px solid #fff;
  border-radius: 999px;
  background: var(--collection-accent);
  box-shadow: 0 0 0 1px rgba(26,43,53,.20);
  vertical-align: -1px;
  box-sizing: border-box;
}

/* V0.1.340 — rappel de la couleur choisie dans les Collections proposées */
.proposed-title-color-dot,
.collection-title-color-dot {
  display: inline-block;
  width: 11px;
  height: 11px;
  margin-right: 6px;
  border: 2px solid #fff;
  border-radius: 999px;
  background: var(--collection-accent);
  box-shadow: 0 0 0 1px rgba(26,43,53,.22);
  vertical-align: -1px;
  box-sizing: border-box;
}
.collection-detail-sheet #collectionDetailTitle { display:flex; align-items:center; flex-wrap:wrap; }

.collection-color-panel {
  display: grid;
  gap: 9px;
  margin: -2px 0 14px;
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #fafcfb;
}
.collection-color-copy { display: grid; gap: 2px; }
.collection-color-copy strong { font-size: 12px; }
.collection-color-copy small { color: var(--muted); font-size: 10.5px; line-height: 1.4; }
.collection-color-picker {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(82px, 1fr));
  gap: 6px;
}
.collection-color-choice {
  min-width: 0;
  min-height: 50px;
  padding: 6px 5px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 4px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: #fff;
  color: var(--text);
  font: inherit;
  cursor: pointer;
}
.collection-color-choice small {
  width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted);
  font-size: 9.5px;
  font-weight: 750;
}
.collection-color-choice.is-selected {
  border-color: rgba(36,117,208,.62);
  background: rgba(36,117,208,.07);
  box-shadow: inset 0 0 0 1px rgba(36,117,208,.18);
}
.collection-color-swatch,
.collection-color-none {
  width: 20px;
  height: 20px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  box-sizing: border-box;
}
.collection-color-swatch {
  border: 3px solid #fff;
  background: var(--collection-accent);
  box-shadow: 0 0 0 1px rgba(26,43,53,.24);
}
.collection-color-none {
  border: 1px dashed #aeb8b4;
  color: #7a8581;
  background: #f7f8f8;
  font-size: 14px;
  line-height: 1;
}

/* V0.1.126 — huit choix (Aucune + 7 couleurs) : grille 4 × 2 sur mobile. */
@media (max-width: 600px) {
  .collection-color-picker { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}


/* V0.1.129 — photos personnelles retirées + coordonnées GPS copiables */
.add-return-btn { margin: -2px 16px 12px; width: calc(100% - 32px); }
.add-return-btn[hidden] { display: none !important; }

/* V0.1.127 — photo légère et non bloquante dans les fiches */
.spot-photo-host:empty { display: none; }
.spot-photo-preview {
  width: 100%; padding: 0; border: 0; border-radius: 14px; overflow: hidden; background: #e9efec;
  display: block; cursor: zoom-in; box-shadow: inset 0 0 0 1px rgba(26,43,53,.06);
}
.spot-photo-preview img, .spot-photo-img {
  width: 100%; height: clamp(140px, 28vw, 230px); display: block; object-fit: cover;
}
.spot-photo-unavailable button {
  min-height: 38px; padding: 7px 10px; border: 1px solid var(--line); border-radius: 10px;
  background: #fff; color: var(--primary); font: inherit; font-size: 11px; font-weight: 800; cursor: pointer;
}
.spot-photo-loading, .spot-photo-unavailable {
  min-height: 74px; padding: 12px; display: flex; align-items: center; justify-content: center; gap: 8px;
  border: 1px solid var(--line); border-radius: 13px; background: #f7faf8; color: var(--muted);
  font-size: 11px; text-align: center;
}
.spot-photo-unavailable { flex-wrap: wrap; }
.spot-photo-unavailable.is-muted { min-height: 48px; background: #fafafa; }
.detail-body > .spot-photo-host { margin-top: -2px; }
.photo-viewer-overlay {
  position: fixed; inset: 0; z-index: 2500; background: rgba(8,18,23,.92); padding: max(8px, env(safe-area-inset-top)) 8px max(8px, env(safe-area-inset-bottom));
}
.photo-viewer-overlay[hidden] { display: none !important; }
.photo-viewer-panel { width: 100%; height: 100%; display: grid; grid-template-rows: auto 1fr auto; color: #fff; }
.photo-viewer-head { padding: 8px 8px 10px; border-bottom: 1px solid rgba(255,255,255,.12); }
.photo-viewer-head .eyebrow { color: rgba(255,255,255,.62); }
.photo-viewer-head h2 { color: #fff; }
.photo-viewer-head .icon-btn { color: #fff; border-color: rgba(255,255,255,.20); background: rgba(255,255,255,.08); }
.photo-viewer-stage { min-height: 0; display: grid; place-items: center; padding: 12px; }
.photo-viewer-stage img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 10px; }
.photo-viewer-credit { padding: 8px 14px 12px; text-align: center; font-size: 11px; line-height: 1.35; color: rgba(255,255,255,.78); }
.spot-photo-credit { padding: 6px 4px 0; font-size: 10px; line-height: 1.35; color: var(--muted); text-align: right; overflow-wrap: anywhere; }
.collection-photo-policy {
  display: grid; gap: 8px; margin: -5px 0 14px; padding: 10px 11px; border: 1px solid var(--line);
  border-radius: 14px; background: #fafcfb;
}
.collection-photo-policy[hidden] { display: none !important; }
.collection-photo-policy > div { display: grid; gap: 2px; }
.collection-photo-policy strong { font-size: 12px; }
.collection-photo-policy small { color: var(--muted); font-size: 10.5px; line-height: 1.4; }
.collection-photo-policy button { min-height: 44px; font-size: 11px; display:flex; align-items:center; justify-content:space-between; gap:10px; }
.collection-photo-policy button[hidden] { display:none !important; }
.collection-photo-policy button.is-enabled { color: var(--primary); background: rgba(15,107,99,.06); border-color: rgba(15,107,99,.22); }
.collection-photo-policy button.is-disabled { color: var(--muted); background:#fff; }
.collection-photo-state { display:inline-flex; align-items:baseline; gap:3px; text-align:left; }
.collection-photo-state small { font-size:10px; }
.collection-photo-switch { position:relative; width:38px; height:22px; border-radius:999px; flex:0 0 auto; background:#cbd5d1; transition:.18s ease; }
.collection-photo-switch > span { position:absolute; top:3px; left:3px; width:16px; height:16px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.22); transition:.18s ease; }
.collection-photo-policy button.is-enabled .collection-photo-switch { background:var(--primary); }
.collection-photo-policy button.is-enabled .collection-photo-switch > span { transform:translateX(16px); }
@media (min-width: 760px) {
  .spot-photo-preview img, .spot-photo-img { height: 220px; }
  .photo-viewer-overlay { padding: 4vh 5vw; }
  .photo-viewer-panel { border-radius: 20px; overflow: hidden; background: rgba(8,18,23,.96); }
}

/* V0.1.129 — coordonnées GPS discrètes et copiables */
.detail-coordinate-row { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.detail-coordinate-row code { flex:1 1 180px; min-width:0; padding:9px 10px; border-radius:9px; background:#f5f7f6; font-size:12px; line-height:1.25; overflow-wrap:anywhere; }
.coordinate-copy-btn { min-height:38px; padding:8px 13px; flex:0 0 auto; }


/* V0.1.131 — UX partage : accès collections permanent sur la carte + partage très visible */
.collections-map-fab {
  bottom: 18px;
  color: var(--primary);
}
#listBtn.has-collections-below { bottom: 72px; }
.collections-map-fab[hidden] { display: none !important; }
.share-emphasis-btn,
.collection-share-card-btn {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border-color: rgba(15,107,99,.28) !important;
  background: rgba(15,107,99,.075) !important;
  color: var(--primary) !important;
  font-weight: 850 !important;
}
.share-btn-icon,
.receive-btn-icon {
  display: inline-grid;
  place-items: center;
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
  border-radius: 8px;
  background: rgba(15,107,99,.12);
  color: var(--primary);
  font-size: 15px;
  line-height: 1;
  font-weight: 950;
}
.collections-import-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
}
.collections-import-btn .receive-btn-icon {
  background: rgba(255,255,255,.18);
  color: #fff;
}
.detail-share-btn { width: 100%; min-height: 46px; margin: 0 0 10px; }
.collection-share-card-btn .share-btn-icon { width: 19px; height: 19px; flex-basis: 19px; border-radius: 7px; font-size: 13px; }
#importCollectionNameField[hidden], #importVisibleChoice[hidden], #importChoiceNote[hidden], #importAsCollectionBtn[hidden], #importChoiceActions[hidden] { display: none !important; }
@media (min-width: 860px) {
  .map-wrap .collections-map-fab {
    display: block;
    left: 16px;
    bottom: 18px;
    min-height: 42px;
    padding: 0 13px;
    font-size: 12.5px;
  }
  .map-wrap .collections-map-fab[hidden] { display: none !important; }
  .map-wrap #listBtn.has-collections-below { bottom: 70px; }
}
@media (max-width: 380px) {
  .collections-map-fab { font-size: 12px; padding-left: 11px; padding-right: 11px; }
}


/* V0.1.132 — ordre compact carte + destination d’un spot partagé */
.single-spot-collection-target { margin-top:10px; padding:11px; border:1px solid var(--line); border-radius:14px; background:#f8faf9; }
.single-spot-collection-target[hidden] { display:none !important; }
.single-spot-collection-target .field { margin-bottom:9px; }
.single-spot-collection-back-btn { width:100%; margin-bottom:9px; text-align:left; }
.single-spot-collection-target .primary-btn { width:100%; }

/* V0.1.133 — interface Mes spots / Listes simplifiée */
.collections-map-fab {
  background: rgba(255,255,255,.96);
  color: var(--text);
}
.lists-main-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin: 0 0 12px;
}
.lists-main-actions .list-create-btn,
.lists-main-actions .collections-import-btn {
  width: 100%;
  min-height: 44px;
  margin: 0;
}
.create-list-panel {
  margin: 0 0 13px;
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #f8faf9;
}
.create-list-panel[hidden] { display: none !important; }
.create-list-panel .field { margin-bottom: 9px; }
.create-list-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.detail-add-list-btn { width: 100%; min-height: 44px; margin: 0 0 10px; }
#addSpotToListSheet .field { margin-bottom: 10px; }
#addSpotToListConfirmBtn { width: 100%; }
#addSpotNewListField[hidden] { display: none !important; }
@media (max-width: 380px) {
  .lists-main-actions { grid-template-columns: 1fr; }
}

/* V0.1.134 — hiérarchie claire : Mes spots (carnet principal) puis section Mes listes. */
.lists-section-heading { margin-top: 16px; }


/* V0.1.135 — raccourcis carte demandés : Mes spots / Mes listes, sans icône, couleur distincte et identique PC/mobile. */
.collections-map-fab {
  background: var(--primary) !important;
  color: #fff !important;
}
.collections-map-fab:hover,
.collections-map-fab:focus-visible {
  background: var(--primary-strong) !important;
  color: #fff !important;
}

/* V0.1.137 — remise à plat UX Mes spots / Mes listes depuis V0.1.135 */
#listBtn {
  background: #4a7f6c !important;
  color: #fff !important;
}
#listBtn:hover,
#listBtn:focus-visible {
  background: #3f6f5e !important;
  color: #fff !important;
}
.collections-map-fab {
  background: rgba(255,255,255,.97) !important;
  color: var(--text) !important;
  border: 1px solid rgba(23,32,29,.08) !important;
}
.collections-map-fab:hover,
.collections-map-fab:focus-visible {
  background: #fff !important;
  color: var(--primary-strong) !important;
}
.lists-section-help {
  margin: -2px 2px 10px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.45;
}
.personal-collection-card {
  grid-template-columns: minmax(0,1fr) auto;
}
.personal-collection-actions {
  grid-template-columns: auto auto;
}
.personal-collection-actions .collection-share-main {
  min-width: 92px;
  white-space: nowrap;
}
@media (max-width: 430px) {
  .personal-collection-card { grid-template-columns: 1fr; }
  .personal-collection-actions { grid-template-columns: 1fr 1fr; }
  .personal-collection-actions .collection-share-main { width: auto; min-width: 0; }
}
#importMergeBtn[hidden] { display: none !important; }


/* V0.1.139 — actions de fiche lisibles PC/mobile, sans libellés tronqués */
.detail-quick-actions {
  display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px;
  margin-top:2px; padding-top:12px; border-top:1px solid var(--line);
}
.detail-quick-actions .detail-quick-btn {
  min-width:0; min-height:46px; padding:9px 10px; border:1px solid var(--line); border-radius:12px;
  background:#fff; color:var(--text); font:inherit; font-size:12.5px; font-weight:800; line-height:1.2;
  display:flex; align-items:center; justify-content:center; gap:6px; text-align:center;
}
.detail-quick-actions .detail-quick-btn span { min-width:0; white-space:normal; overflow:visible; text-overflow:clip; overflow-wrap:anywhere; }
.detail-quick-actions .detail-quick-btn:hover, .detail-quick-actions .detail-quick-btn:focus-visible { border-color:rgba(15,107,99,.3); background:rgba(15,107,99,.05); }
.detail-quick-actions .favorite-toggle { width:auto; margin:0; min-height:46px; font-size:12.5px; }
.detail-quick-actions .favorite-toggle.is-favorite { background:#fff2c6; color:#775700; border-color:#e3d39a; }
.detail-share-btn, .detail-add-list-btn, .detail-google-info-btn { width:auto; margin:0; }
.collection-place-back-top { width:100%; margin:0 0 2px; min-height:40px; }
.personal-collection-actions { grid-template-columns:auto auto !important; }
.personal-collection-actions .personal-receive-btn { grid-column:1 / -1; min-height:40px; display:flex; align-items:center; justify-content:center; padding:8px 12px; font-size:12.5px; font-weight:800; cursor:pointer; }
.personal-receive-help { display:block; margin:7px 2px 0; color:var(--muted); font-size:10.5px; line-height:1.4; }
@media (max-width:430px) { .personal-collection-actions { grid-template-columns:1fr 1fr !important; } }

/* V0.1.141 — import unique et séparation nette Mes spots / Mes listes */
.unified-import-card {
  display: grid;
  gap: 10px;
  margin: 0 0 14px;
  padding: 12px;
  border: 1px solid rgba(15,107,99,.20);
  border-radius: 17px;
  background: #fff;
}
.unified-import-copy { display: grid; gap: 3px; }
.unified-import-copy strong { font-size: 13px; }
.unified-import-copy small { color: var(--muted); font-size: 10.8px; line-height: 1.4; }
.unified-import-btn {
  width: 100%;
  min-height: 44px;
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  text-align: center;
  cursor: pointer;
}
.unified-import-btn .receive-btn-icon { background: rgba(255,255,255,.18); color: #fff; }
.lists-main-actions.lists-create-only { grid-template-columns: 1fr; }
.lists-main-actions.lists-create-only .list-create-btn { width: 100%; }
/* Le zoom Leaflet pouvait apparaître dans l’arrondi supérieur gauche de Mes spots. */
body.list-sheet-open .leaflet-control-zoom { visibility: hidden !important; pointer-events: none !important; }



/* V0.1.142 — hiérarchie Importer / Mes spots / Mes listes clarifiée */
.unified-import-copy strong { font-size: 15px; line-height: 1.25; }
.unified-import-copy small { font-size: 11px; line-height: 1.45; }
.unified-import-copy small b { color: var(--text); font-weight: 800; }
.personal-collection-copy { gap: 5px; }
.personal-collection-title-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-width: 0; }
.personal-collection-title-row strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.personal-count-badge { min-width: 27px; height: 27px; padding: 0 7px; flex: 0 0 auto; display: inline-grid; place-items: center; border-radius: 999px; background: var(--surface-2); color: var(--primary); font-size: 11px; font-weight: 850; line-height: 1; }
.personal-collection-card .collection-card-copy small { white-space: normal; overflow: visible; text-overflow: clip; }
.lists-section-help b { color: var(--text); font-weight: 800; }


/* V0.1.143 — Mes spots cliquable depuis Mon carnet */
.personal-collection-open {
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.personal-collection-open strong { color: var(--text); font-size: 14px; }
.personal-collection-open:hover strong, .personal-collection-open:focus-visible strong { text-decoration: underline; }
.personal-collection-open:focus-visible { outline: 2px solid rgba(15,107,99,.35); outline-offset: 4px; border-radius: 8px; }

/* V0.1.144 — gestion des listes personnelles */
.collection-add-spots-btn {
  width: 100%;
  min-height: 42px;
  margin: -4px 0 12px;
}
.collection-add-spots-btn[hidden] { display: none !important; }
.add-spots-collection-sheet .add-spots-search { margin-bottom: 10px; }
.add-spots-selection-list {
  display: grid;
  gap: 7px;
  max-height: min(46vh, 430px);
  overflow: auto;
  margin-bottom: 12px;
  padding-right: 2px;
}
.add-spots-choice {
  display: grid;
  grid-template-columns: auto 38px minmax(0,1fr);
  gap: 9px;
  align-items: center;
  min-height: 54px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--surface);
  cursor: pointer;
}
.add-spots-choice input { width: 18px; height: 18px; margin: 0; }
.add-spots-choice .place-card-icon { width: 36px; height: 36px; }
.add-spots-choice-copy { min-width: 0; display: grid; gap: 2px; }
.add-spots-choice-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.add-spots-choice-copy small { color: var(--muted); font-size: 11px; }
.add-spots-choice.is-disabled { opacity: .58; cursor: default; }
#addSpotsToCollectionConfirmBtn { width: 100%; }



/* V0.1.176 — accès discret à un spot reçu depuis Ajouter */
.add-import-shared-btn {
  width: 100%;
  border: 0;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 12px;
  line-height: 1.35;
  padding: 7px 4px 2px;
  cursor: pointer;
  text-align: center;
}
.add-import-shared-btn b { color: var(--primary); font-weight: 800; }
.add-import-shared-btn:hover,
.add-import-shared-btn:focus-visible { color: var(--text); }

/* V0.1.177 — lisibilité mobile du raccourci d’import reçu */
@media (max-width: 600px) {
  .add-import-shared-btn {
    font-size: 13px;
    line-height: 1.45;
    padding: 9px 6px 6px;
    margin-bottom: 10px;
  }
}


/* V0.1.245 — réception d’un spot par fichier ou QR directement depuis Ajouter */
.add-received-spot {
  margin: 2px 0 8px;
  padding-top: 3px;
  text-align: center;
}
.add-received-spot-label {
  display: block;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
  margin-bottom: 3px;
}
.add-received-spot-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 4px 12px;
}
.add-received-spot .add-import-shared-btn {
  width: auto;
  padding: 5px 2px 3px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
}
.add-scan-shared-btn span[aria-hidden="true"] { font-size: 14px; line-height: 1; }
@media (max-width: 360px) {
  .add-received-spot-actions { gap: 3px 9px; }
  .add-received-spot .add-import-shared-btn { font-size: 12px; }
}

/* V0.1.213 — raccourci Coup de cœur cohérent avec les étoiles de la carte et des filtres */
.favorite-icon-btn {
  width: 38px;
  height: 38px;
  flex: 0 0 38px;
  border: 1px solid var(--line);
  background: var(--surface);
  color: #71817d;
  font-size: 24px;
  font-weight: 700;
  line-height: 1;
}
.favorite-icon-btn.is-favorite {
  background: rgba(15,118,110,.10);
  border-color: rgba(15,118,110,.30);
  color: var(--primary);
}
.favorite-icon-btn:active { transform: scale(.94); }

/* V0.1.147 — fiches simplifiées */
.spot-edit-icon-btn {
  width: 38px;
  height: 38px;
  flex: 0 0 38px;
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--text);
  font-size: 0;
  font-weight: 800;
}
.spot-edit-svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.spot-action-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.spot-action-btn {
  min-height: 46px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  font-size: 12.5px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
}
.spot-action-btn.is-primary {
  border-color: var(--primary);
  background: var(--primary);
  color: #fff;
}
.edit-delete-spot-btn {
  margin-top: 8px;
  min-height: 44px;
  border-color: rgba(181,72,63,.24);
  background: rgba(181,72,63,.06);
  color: var(--danger);
  font-weight: 800;
}
.organize-spot-summary {
  display: grid;
  gap: 4px;
  margin-bottom: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface-2);
}
.organize-spot-summary strong { font-size: 14px; }
.organize-spot-summary small { color: var(--muted); line-height: 1.4; }
.organize-destinations { display: grid; gap: 8px; }
.organize-lists { display: grid; gap: 7px; }
.organize-choice {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 52px;
  padding: 9px 11px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--surface);
}
.organize-choice input {
  width: 19px;
  height: 19px;
  flex: 0 0 auto;
  accent-color: var(--primary);
}
.organize-choice > span { display: grid; gap: 2px; min-width: 0; }
.organize-choice strong { font-size: 13px; }
.organize-choice small { color: var(--muted); font-size: 11px; }
.organize-lists-heading { margin: 5px 0 0; }
.organize-empty {
  padding: 11px;
  border-radius: 12px;
  background: var(--surface-2);
  color: var(--muted);
  font-size: 12px;
}
.organize-protected-note { margin: 12px 0 0; }
.organize-actions { margin-top: 14px; }
.organize-hide-proposed-btn {
  width: 100%;
  margin-top: 10px;
  min-height: 42px;
  color: var(--danger);
  border-color: rgba(181,72,63,.2);
}

/* V0.1.155 — Mon carnet : Mes spots / Mes listes / Collections proposées nettement séparés */
.collections-sheet .personal-collection-card.carnet-spots-block {
  margin-top: 2px;
  padding: 14px;
  border: 1px solid rgba(15,107,99,.22);
  border-left: 4px solid var(--primary);
  background: linear-gradient(180deg, rgba(15,107,99,.055), rgba(255,255,255,.98));
}
.collections-sheet .personal-collection-open strong {
  font-size: 18px;
  line-height: 1.15;
  font-weight: 900;
}
.collections-sheet .personal-count-badge {
  min-width: 31px;
  height: 31px;
  font-size: 12px;
}
.collections-sheet .carnet-section-heading {
  margin: 18px 0 8px;
  padding: 11px 12px;
  border: 1px solid rgba(36,117,208,.15);
  border-radius: 14px;
  background: rgba(36,117,208,.045);
}
.collections-sheet .carnet-section-heading > div {
  min-width: 0;
  display: grid;
  gap: 2px;
}
.collections-sheet .carnet-section-heading strong {
  font-size: 18px;
  line-height: 1.15;
  font-weight: 900;
}
.collections-sheet .carnet-section-heading small {
  color: var(--muted);
  font-size: 10.5px;
  line-height: 1.35;
}
.collections-sheet .lists-section-help {
  margin-top: 0;
}
.collections-sheet .lists-main-actions.lists-create-only .list-create-btn {
  min-height: 40px;
  border-color: rgba(36,117,208,.18);
  background: #fff;
  color: var(--text);
  font-size: 11.5px;
}
.collections-sheet .proposed-collections-section {
  margin: 20px 0 2px;
  padding: 12px;
  border: 1px solid rgba(36,117,208,.17);
  border-radius: 18px;
  background: rgba(36,117,208,.035);
}
.collections-sheet .proposed-collections-toggle {
  min-height: 64px;
  padding: 9px 10px;
  border: 0;
  border-radius: 12px;
  background: transparent;
}
.collections-sheet .proposed-toggle-copy strong {
  font-size: 18px;
  line-height: 1.15;
  font-weight: 900;
}
.collections-sheet .proposed-toggle-copy small {
  font-size: 10.7px;
}
.collections-sheet .proposed-collections-body {
  padding-top: 6px;
}
.collections-sheet .proposed-collections-intro {
  margin: 0 2px 11px;
  padding: 10px 11px;
  border-radius: 12px;
  background: #fff;
  color: #4f5b57;
  font-size: 11px;
  line-height: 1.45;
}
.collections-sheet .proposed-collections-intro b {
  color: var(--text);
}
.proposed-collection-card {
  border-color: rgba(36,117,208,.17);
  background: #fff;
}
.proposed-collection-card.is-active {
  box-shadow: inset 3px 0 0 rgba(36,117,208,.70);
}
.proposed-collection-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}
.proposed-collection-actions > button,
.proposed-collection-actions > a {
  flex: 1 1 115px;
  min-height: 42px;
}
.proposed-collection-actions .collection-visibility-btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 7px;
  padding: 6px 9px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: #f8faf9;
  color: var(--text);
  font-size: 11px;
  font-weight: 800;
}
.proposed-collection-actions .collection-visibility-btn.is-visible {
  border-color: rgba(15,107,99,.28);
  background: rgba(15,107,99,.075);
  color: var(--primary);
}
.proposed-collection-actions .collection-visibility-btn.is-hidden {
  background: #f6f7f7;
  color: #68726f;
}
.proposed-collection-actions .collection-visibility-btn.is-visible .collection-switch {
  background: var(--primary);
}
.proposed-collection-actions .collection-visibility-btn.is-visible .collection-switch > span {
  transform: translateX(13px);
}
#deleteCollectionBtn[hidden] { display: none !important; }
@media (max-width: 430px) {
  .collections-sheet .personal-collection-open strong,
  .collections-sheet .carnet-section-heading strong,
  .collections-sheet .proposed-toggle-copy strong { font-size: 17px; }
}


/* V0.1.156 — Collections proposées : désactivation claire et finitions visuelles */
.collections-sheet .proposed-toggle-chevron {
  width: 30px; height: 30px; border-radius: 999px;
  border: 1px solid rgba(36,117,208,.20); background: #fff;
  color: #2475d0; font-size: 20px; font-weight: 900;
  box-shadow: 0 2px 7px rgba(24,54,48,.06);
}
.collections-sheet .proposed-collections-toggle[aria-expanded="true"] .proposed-toggle-chevron { transform: rotate(90deg); }
.proposed-deactivate-btn { color: #68726f; border-color: rgba(104,114,111,.22); background: #fff; }
.collection-delete-btn.is-proposed-deactivate {
  color: #68726f; border-color: rgba(104,114,111,.24); background: #fff;
}
.collection-detail-sheet .collection-delete-btn { margin-bottom: 8px; }

/* V0.1.173 — Mon carnet / Mes listes : textes explicatifs plus lisibles sur mobile */
@media (max-width: 600px) {
  .collections-sheet .unified-import-copy small,
  .collections-sheet .personal-collection-card .collection-card-copy small,
  .collections-sheet .carnet-section-heading small,
  .collections-sheet .lists-section-help,
  .collections-sheet .proposed-toggle-copy small,
  .collections-sheet .proposed-collections-intro {
    font-size: 12.5px;
    line-height: 1.5;
  }
}

/* V0.1.179 — Mon carnet : compteur de lieux immédiatement visible sur chaque liste */
.personal-list-title-row {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
}
.personal-list-title-row .personal-list-title {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.personal-list-place-count {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 23px;
  padding: 3px 8px;
  border-radius: 999px;
  background: rgba(15,107,99,.10);
  color: var(--primary);
  font-size: 10.5px;
  line-height: 1;
  font-weight: 900;
}
@media (max-width: 600px) {
  .personal-list-place-count {
    min-height: 25px;
    padding-inline: 9px;
    font-size: 11.5px;
  }
}

/* V0.1.186 — QR / transfert privé entre appareils */
.unified-import-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.unified-import-actions .unified-import-btn{flex:1 1 210px;justify-content:center}
.menu-action-transfer{border-color:rgba(15,107,99,.24);background:linear-gradient(180deg,rgba(15,107,99,.07),rgba(15,107,99,.025))}
.transfer-sheet{max-width:520px}
.transfer-intro{margin:0 0 16px;color:#59656a;line-height:1.5}
.transfer-methods{display:grid;gap:10px}
.transfer-method{width:100%;border:1px solid #dbe3e1;border-radius:16px;background:#fff;padding:15px 16px;display:flex;gap:13px;align-items:center;text-align:left;color:#243034}
.transfer-method:hover{border-color:#9fc9c3}
.transfer-method-featured{border-color:rgba(15,107,99,.35);background:rgba(15,107,99,.055)}
.transfer-method-icon{width:42px;height:42px;border-radius:12px;background:#edf6f4;color:#0f6b63;display:grid;place-items:center;font-size:23px;font-weight:800;flex:0 0 auto}
.transfer-method span:last-child{display:grid;gap:3px}.transfer-method strong{font-size:15px}.transfer-method small{font-size:12.5px;color:#6b777b;line-height:1.35}
.transfer-privacy-note{font-size:12px;line-height:1.45;color:#68777b;background:#f5f8f7;border-radius:12px;padding:10px 12px;margin:14px 0 0}
.qr-transfer-code{width:min(310px,86vw);aspect-ratio:1;margin:4px auto 14px;padding:12px;border:1px solid #dfe7e5;border-radius:20px;background:#fff;box-shadow:0 8px 28px rgba(18,53,49,.08)}
.qr-transfer-code svg{display:block;width:100%;height:100%}
.transfer-code-card{display:grid;grid-template-columns:1fr auto;gap:5px 10px;align-items:center;border:1px solid #dfe7e5;border-radius:14px;padding:12px 14px;background:#fafcfc}
.transfer-code-card small{grid-column:1/-1;color:#6d797d}.transfer-code-card strong{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.07em;font-size:14px;overflow-wrap:anywhere}.transfer-code-card .ghost-btn{padding:8px 10px;min-height:0}
.transfer-expiry{text-align:center;font-size:12.5px;color:#6d797d;margin:10px 0 0}.transfer-actions{margin-top:14px}
.transfer-scanner-box{position:relative;aspect-ratio:4/3;border-radius:18px;overflow:hidden;background:#17211f;margin:8px 0 12px}
.transfer-scanner-box video{width:100%;height:100%;object-fit:cover;display:none}.transfer-scanner-box.is-running video{display:block}
.transfer-scanner-placeholder{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:5px;color:#eaf3f1;padding:20px}.transfer-scanner-box.is-running .transfer-scanner-placeholder{display:none}.transfer-scanner-placeholder>span{font-size:44px}.transfer-scanner-placeholder small{color:#b8c7c4;max-width:300px}
.transfer-separator{display:flex;align-items:center;gap:10px;color:#899491;font-size:12px;margin:14px 0}.transfer-separator:before,.transfer-separator:after{content:"";height:1px;background:#dfe6e4;flex:1}
.transfer-code-input input{text-transform:uppercase;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.05em}
@media (max-width:640px){.unified-import-actions{display:grid}.unified-import-actions .unified-import-btn{width:100%;min-height:46px}.qr-transfer-code{width:min(290px,82vw)}.transfer-code-card{grid-template-columns:1fr}.transfer-code-card .ghost-btn{justify-self:start}.transfer-method{padding:14px}.transfer-method strong{font-size:14.5px}}


/* V0.1.187 — harmonisation visuelle QR/transfert + lisibilité import reçu */
#transferCarnetBtn > span {
  width: 42px; height: 42px;
  color: #fff !important;
  background: #0b6e67 !important;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.04);
}
#transferCarnetBtn .menu-svg-icon-strong { width: 27px; height: 27px; }
#transferCarnetBtn .menu-svg-icon-strong path,
#transferCarnetBtn .menu-svg-icon-strong circle,
#transferCarnetBtn .menu-svg-icon-strong rect,
#transferCarnetBtn .menu-svg-icon-strong line,
#transferCarnetBtn .menu-svg-icon-strong polyline { stroke-width: 2.6; }
.receive-btn-icon-file {
  width: 30px !important; height: 30px !important; flex-basis: 30px !important;
  border-radius: 9px !important; background: #0b6e67 !important; color: #fff !important;
}
.receive-btn-icon-file svg { width: 19px; height: 19px; display: block; }
.receive-btn-icon-file svg path { fill:none; stroke:currentColor; stroke-width:2.35; stroke-linecap:round; stroke-linejoin:round; }
@media (max-width:430px) {
  #transferCarnetBtn > span { width:44px; height:44px; }
  #transferCarnetBtn .menu-svg-icon-strong { width:29px; height:29px; }
  .unified-import-actions .secondary-btn.unified-import-btn { min-height: 54px; }
}


/* V0.1.188 — icône QR plus claire dans Mon carnet */
.receive-btn-icon-qr {
  width: 30px !important; height: 30px !important; flex-basis: 30px !important;
  border-radius: 9px !important; background: #dff0eb !important; color: #0b6e67 !important;
  box-shadow: inset 0 0 0 1px rgba(11,110,103,.08);
}
.receive-btn-icon-qr svg { width: 19px; height: 19px; display: block; }
.receive-btn-icon-qr svg rect { fill: currentColor; stroke: none; }
.receive-btn-icon-qr svg path { fill:none; stroke:currentColor; stroke-width:2.15; stroke-linecap:round; stroke-linejoin:round; }


/* V0.1.189 — pictogramme QR unique dans toute l’application */
.sep-qr-glyph { display:block; width:22px; height:22px; overflow:visible; }
.sep-qr-glyph .qr-frame { fill:none !important; stroke:currentColor !important; stroke-width:1.75 !important; stroke-linecap:round !important; stroke-linejoin:round !important; }
.sep-qr-glyph .qr-module { fill:currentColor !important; stroke:none !important; }
#transferCarnetBtn .sep-qr-glyph { width:28px; height:28px; }
.receive-btn-icon-qr .sep-qr-glyph { width:19px; height:19px; }
.transfer-method-icon .sep-qr-glyph { width:25px; height:25px; }
.transfer-scanner-qr-icon { width:54px; height:54px; display:grid; place-items:center; margin:0 auto 2px; color:#eaf3f1; }
.transfer-scanner-qr-icon .sep-qr-glyph { width:48px; height:48px; }
.transfer-scanner-placeholder > span.transfer-scanner-qr-icon { font-size:inherit; }
@media (max-width:430px) {
  #transferCarnetBtn .sep-qr-glyph { width:29px; height:29px; }
}


/* V0.1.190 — mode ménage / suppression multiple */
.bulk-manage-launch { margin: 8px 0 10px; }
.bulk-manage-launch-btn,
.collection-bulk-manage-btn { width: 100%; min-height: 42px; border-style: dashed; color: #495955; }
.collection-bulk-manage-btn { margin: 0 0 12px; }
.bulk-manage-panel {
  margin: 8px 0 12px; padding: 12px; border: 1px solid rgba(151,64,57,.18);
  border-radius: 15px; background: #fff9f7; display: grid; gap: 10px;
}
.bulk-manage-copy { display:grid; gap:3px; }
.bulk-manage-copy strong { font-size: 13.5px; color: #5f312d; }
.bulk-manage-copy small { color: #6b6f6d; font-size: 11.5px; line-height: 1.45; }
.bulk-manage-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.bulk-manage-actions .ghost-btn,
.bulk-manage-actions .danger-btn { min-height: 40px; margin: 0; }
.bulk-manage-actions .bulk-manage-cancel,
#mySpotsBulkCancelBtn,
#collectionBulkCancelBtn { grid-column: 1 / -1; }
.danger-btn {
  border: 1px solid #b9574f; border-radius: 12px; background: #a9443d; color: #fff;
  font: inherit; font-weight: 850; padding: 10px 12px; cursor: pointer;
}
.danger-btn:hover, .danger-btn:focus-visible { background: #913a34; }
.danger-btn:disabled { opacity: .42; cursor: default; }
.bulk-select-row {
  position: relative; display: grid; grid-template-columns: 32px minmax(0,1fr); align-items: stretch;
  gap: 8px; border: 1px solid var(--line); border-radius: 14px; background: #fff; padding: 5px;
  cursor: pointer;
}
.bulk-select-row + .bulk-select-row { margin-top: 8px; }
.bulk-select-row.is-selected { border-color: rgba(15,107,99,.42); background: rgba(15,107,99,.055); }
.bulk-select-input { position:absolute; opacity:0; pointer-events:none; }
.bulk-select-check {
  width: 27px; height: 27px; border: 2px solid #b9c5c2; border-radius: 8px; align-self:center; justify-self:center;
  display:grid; place-items:center; color:transparent; background:#fff; font-size:17px; font-weight:950; line-height:1;
}
.bulk-select-input:checked + .bulk-select-check { border-color: var(--primary); background: var(--primary); color:#fff; }
.bulk-select-card { border:0 !important; box-shadow:none !important; background:transparent !important; width:100%; min-width:0; }
.collection-bulk-panel { margin-top: 0; }
@media (max-width:430px) {
  .bulk-manage-panel { padding: 11px; }
  .bulk-manage-actions { grid-template-columns: 1fr; }
  #mySpotsBulkCancelBtn, #collectionBulkCancelBtn { grid-column: auto; }
  .bulk-select-row { grid-template-columns: 34px minmax(0,1fr); }
}

.bulk-manage-panel[hidden], .bulk-manage-launch[hidden], .collection-bulk-manage-btn[hidden] { display:none !important; }


/* V0.1.191 — Mes spots : aucune autre feuille ne doit apparaître derrière l’arrondi. */
body.list-sheet-open .sheet:not(#listSheet) {
  visibility: hidden !important;
  pointer-events: none !important;
  transition: none !important;
  transform: translateY(105%) !important;
}
body.list-sheet-open #listSheet {
  isolation: isolate;
  background: var(--surface);
}

/* V0.1.191 — cases du mode ménage plus franches et lisibles sur mobile. */
.bulk-select-check {
  width: 30px;
  height: 30px;
  border-color: #91a29e;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.7);
}
.bulk-select-row.is-selected .bulk-select-check {
  box-shadow: 0 0 0 3px rgba(15,107,99,.10);
}


/* V0.1.192 — Mes spots : coins propres + lancement du mode ménage clairement identifiable en bas */
.sheet-force-hidden { display: none !important; }
body.list-sheet-open #listSheet {
  overflow-x: hidden;
  background-clip: padding-box;
}
@media (max-width: 859px) {
  body.list-sheet-open #listSheet {
    clip-path: inset(0 round 26px 26px 0 0);
  }
}
.bulk-manage-launch-bottom { margin: 16px 0 6px; padding-bottom: 2px; }
.bulk-manage-launch-bottom .bulk-manage-launch-btn {
  min-height: 48px;
  border-style: solid;
  border-color: rgba(15,107,99,.22);
  background: rgba(15,107,99,.055);
  color: #26443f;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  font-weight: 820;
}
.bulk-manage-launch-bottom .bulk-manage-launch-btn:hover,
.bulk-manage-launch-bottom .bulk-manage-launch-btn:focus-visible {
  background: rgba(15,107,99,.09);
  border-color: rgba(15,107,99,.34);
}
.bulk-manage-launch-icon {
  width: 25px; height: 25px; border-radius: 8px;
  display: inline-grid; place-items: center; flex: 0 0 25px;
  background: #e0f0ec; color: #0f6b63; font-size: 14px; font-weight: 950;
}


/* V0.1.193 — Mes spots : coque arrondie fixe + défilement intérieur (correctif Android) */
#listSheet.my-spots-sheet {
  padding: 0 !important;
  overflow: hidden !important;
  clip-path: none !important;
  background: var(--surface) !important;
}
#listSheet > .my-spots-sheet-scroll {
  max-height: inherit;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  padding: 8px 16px calc(18px + var(--safe-bottom));
  background: var(--surface);
}
@media (min-width: 860px) {
  #listSheet > .my-spots-sheet-scroll {
    padding-bottom: 18px;
  }
}


/* V0.1.195 — Mes spots : coque non scrollable, seul le listing défile (Android) */
body.list-sheet-open #backdrop {
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
#listSheet.my-spots-sheet {
  display: flex !important;
  flex-direction: column;
  padding: 8px 16px 0 !important;
  overflow: hidden !important;
  border-radius: 26px 26px 0 0 !important;
  background: var(--surface) !important;
  background-clip: border-box !important;
  contain: paint;
  isolation: isolate;
}
body.list-sheet-open #listSheet.is-open {
  transform: none !important;
  transition: none !important;
}
#listSheet > .sheet-handle,
#listSheet > .sheet-head,
#listSheet > #mySpotsListSearchWrap,
#listSheet > #mySpotsLocalFilters,
#listSheet > #mySpotsBulkPanel,
#listSheet > #aroundRadiusBar {
  flex: 0 0 auto;
}
#listSheet > .my-spots-list-body {
  min-height: 0;
  flex: 1 1 auto;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  padding: 0 0 calc(18px + var(--safe-bottom));
  background: transparent;
}
/* Neutralise complètement la tentative V0.1.193 : aucun scroller ne doit toucher les coins supérieurs. */
#listSheet > .my-spots-sheet-scroll { display: contents !important; }
@media (min-width: 860px) {
  #listSheet.my-spots-sheet { padding-bottom: 0 !important; }
  #listSheet > .my-spots-list-body { padding-bottom: 18px; }
}


/* V0.1.283 — Voyage : panneau sous les fenêtres/modales (fond 80, feuilles 90). */
/* V0.1.195 — Voyage : Spots sur mon trajet */
.trip-corridor-main-btn { border-color: rgba(15,107,99,.28); background: rgba(15,107,99,.055); color: var(--primary); font-weight: 850; }
.trip-corridor-controls {
  position:absolute; z-index:70; top:68px; left:72px; width:min(410px,calc(100% - 86px));
  padding:11px 12px; border:1px solid rgba(15,107,99,.22); border-radius:15px;
  background:rgba(255,255,255,.96); box-shadow:0 8px 24px rgba(18,53,49,.13); backdrop-filter:blur(8px);
  box-sizing:border-box;
}
.trip-corridor-controls[hidden]{display:none!important}
.trip-corridor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:9px;cursor:move;touch-action:none;user-select:none;-webkit-user-select:none}
.trip-corridor-head>div{display:grid;gap:2px;min-width:0;flex:1 1 auto}.trip-corridor-head strong{font-size:14px;line-height:1.15}.trip-corridor-head small{font-size:11px;color:var(--muted);line-height:1.25}
.trip-corridor-count{flex:0 0 auto;border-radius:999px;background:#eaf5f1;color:var(--primary);padding:5px 8px;font-size:10.5px;font-weight:850;white-space:nowrap}
.trip-corridor-grip{flex:0 0 auto;margin-top:1px;color:var(--muted);font-size:18px;line-height:1;font-weight:900;opacity:.72}
.trip-corridor-collapse-btn{flex:0 0 auto;width:32px;height:32px;margin:-3px -3px -3px 0;padding:0;border:1px solid rgba(15,107,99,.16);border-radius:10px;background:#fff;color:var(--primary);font:inherit;font-size:18px;font-weight:900;line-height:1;display:grid;place-items:center;cursor:pointer;touch-action:manipulation}
.trip-corridor-collapse-btn:hover{background:#f2f8f6}.trip-corridor-collapse-btn:focus-visible{outline:3px solid rgba(15,107,99,.18);outline-offset:2px}
.trip-corridor-controls.is-collapsed{width:max-content;max-width:calc(100% - 86px);padding:6px 7px;border-radius:999px}
.trip-corridor-controls.is-collapsed .trip-corridor-head{align-items:center;justify-content:flex-start;gap:6px;margin-bottom:0;cursor:move;touch-action:none}
.trip-corridor-controls.is-collapsed .trip-corridor-radius,.trip-corridor-controls.is-collapsed .trip-corridor-help{display:none}
.trip-corridor-controls.is-collapsed .trip-corridor-grip{display:block;margin-top:0;font-size:15px;opacity:.66}
.trip-corridor-controls.is-collapsed .trip-corridor-head>div{display:block;min-width:auto;flex:0 0 auto}.trip-corridor-controls.is-collapsed .trip-corridor-head strong{display:none}.trip-corridor-controls.is-collapsed .trip-corridor-head small{display:block;font-size:11px;font-weight:850;color:var(--primary);line-height:1;white-space:nowrap}
.trip-corridor-controls.is-collapsed .trip-corridor-count{padding:4px 7px;font-size:10px}
.trip-corridor-controls.is-collapsed .trip-corridor-collapse-btn{width:28px;height:28px;margin:-2px -2px -2px 0;border-radius:999px;font-size:16px}
.trip-corridor-controls.is-dragging{box-shadow:0 12px 30px rgba(18,53,49,.22);backdrop-filter:none}
.trip-corridor-radius{display:flex;gap:6px;flex-wrap:wrap}.trip-corridor-radius button{min-height:31px;padding:5px 9px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--text);font:inherit;font-size:11px;font-weight:800;cursor:pointer}
.trip-corridor-radius button.is-active{background:var(--primary);border-color:var(--primary);color:#fff}.trip-corridor-radius .trip-corridor-fit{margin-left:auto;color:var(--primary)}.trip-corridor-radius .trip-corridor-fit.is-active{color:#fff}
.trip-corridor-help{display:block;margin-top:8px;color:var(--muted);font-size:10.5px;line-height:1.3}
body.trip-corridor-active #listBtn, body.trip-corridor-active #collectionsMapBtn { display:none!important; }
/* V0.1.236 — une fiche de spot doit toujours passer devant le panneau Voyage. */
#detailSheet.is-open, #collectionPlaceSheet.is-open { z-index: 1100; }
@media(max-width:640px){
  .trip-corridor-controls{top:66px;left:70px;width:calc(100% - 78px);max-width:340px;padding:10px 10px;border-radius:14px}
  .trip-corridor-controls.is-collapsed{width:max-content;max-width:calc(100% - 78px);padding:6px 7px}
  .trip-corridor-radius{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.trip-corridor-radius button{padding:5px 2px;font-size:10px}.trip-corridor-radius .trip-corridor-fit{margin-left:0}
  body.trip-corridor-active .trip-map-back-btn{top:auto;bottom:18px;max-width:calc(100% - 150px)}
}

/* V0.1.198 — Voyage : panneau Spots sur mon trajet déplaçable, commandes carte dégagées et flèches d’étapes simplifiées. */

/* V0.1.199 — protection locale et sauvegardes intelligentes. */
.backup-status-block {
  margin: -2px 4px 5px 64px;
  padding: 9px 11px;
  border: 1px solid rgba(15,107,99,.13);
  border-radius: 12px;
  background: rgba(15,107,99,.035);
}
.backup-status-block .backup-status-row {
  margin: 0;
  padding: 0;
  color: #344740;
  font-size: 12.5px;
  line-height: 1.35;
  font-weight: 800;
}
.backup-changes-row,
.backup-storage-row {
  margin-top: 3px;
  color: var(--muted);
  font-size: 11.5px;
  line-height: 1.35;
  font-weight: 650;
}
.backup-storage-row { color: #557169; }
.carnet-backup-nudge {
  display: grid;
  grid-template-columns: 38px minmax(0,1fr) auto;
  gap: 10px;
  align-items: center;
  margin: 10px 0 12px;
  padding: 11px 12px;
  border: 1px solid rgba(173,116,20,.2);
  border-radius: 15px;
  background: rgba(215,154,45,.065);
}
.carnet-backup-nudge[hidden] { display: none !important; }
.carnet-backup-nudge-icon {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  background: #fff;
  font-size: 19px;
}
.carnet-backup-nudge-copy { min-width: 0; }
.carnet-backup-nudge-copy strong {
  display: block;
  color: var(--text);
  font-size: 13px;
  line-height: 1.25;
}
.carnet-backup-nudge-copy small {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 11.5px;
  line-height: 1.35;
}
.carnet-backup-nudge .secondary-btn {
  min-height: 36px;
  padding: 7px 10px;
  white-space: nowrap;
}
.safety-tip.safety-tip-soft {
  background: rgba(15,107,99,.035);
  border-color: rgba(15,107,99,.12);
}
@media (max-width: 430px) {
  .backup-status-block {
    margin: -2px 6px 5px;
    padding: 9px 10px;
  }
  .backup-status-block .backup-status-row { font-size: 13px; }
  .backup-changes-row,
  .backup-storage-row { font-size: 12px; }
  .carnet-backup-nudge {
    grid-template-columns: 36px minmax(0,1fr);
  }
  .carnet-backup-nudge .secondary-btn {
    grid-column: 1 / -1;
    width: 100%;
  }
}


/* V0.1.201 — sauvegarde : un seul parcours, option hors téléphone facultative. */
.rescue-backup-sheet,
.restore-choice-sheet{max-width:540px}
.backup-remote-option{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:11px;
  align-items:flex-start;
  margin-top:14px;
  padding:13px 14px;
  border:1px solid var(--line);
  border-radius:16px;
  background:#fafcfc;
  cursor:pointer;
}
.backup-remote-option input{
  width:20px;
  height:20px;
  margin:1px 0 0;
  accent-color:var(--primary);
}
.backup-remote-option span{display:grid;gap:4px;min-width:0}
.backup-remote-option strong{font-size:14px;line-height:1.3;color:var(--text)}
.backup-remote-option small{font-size:12px;line-height:1.4;color:var(--muted)}
.backup-remote-status{
  margin:7px 2px 0;
  font-size:12px;
  line-height:1.35;
  color:var(--muted);
}
.backup-remote-status.is-active{color:var(--primary);font-weight:700}
.backup-unified-main{width:100%;margin-top:15px}
.backup-unified-note{
  margin:7px 2px 0;
  text-align:center;
  font-size:11.5px;
  line-height:1.35;
  color:var(--muted);
}
.backup-remote-tools{
  display:grid;
  gap:8px;
  margin-top:12px;
  padding-top:12px;
  border-top:1px solid var(--line);
}
.backup-remote-tools[hidden]{display:none!important}
.backup-remote-tools>button{width:100%}
.rescue-actions-stack{display:grid;gap:9px;margin-top:12px}
.rescue-actions-stack>button{width:100%}
.rescue-delete-btn{
  color:var(--danger)!important;
  border-color:rgba(181,72,63,.20)!important;
  background:rgba(181,72,63,.025)!important;
}
.rescue-code-card strong{font-size:13px;letter-spacing:.055em}
.rescue-code-sheet .transfer-privacy-note{border:1px solid rgba(181,72,63,.10);background:rgba(181,72,63,.035)}
@media(max-width:430px){
  .rescue-code-card strong{font-size:12.5px;letter-spacing:.045em}
  .backup-remote-option{padding:12px}
}


/* V0.1.205 — correction chirurgicale : Restaurer reprend exactement le rendu validé en V0.1.199.
   Mon carnet, Sauvegarder et Transférer restent strictement inchangés. */
#restoreMenuBtn > span {
  width: 42px;
  height: 42px;
  color: #ffffff !important;
  background: #0b6e67 !important;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.04);
}
#restoreMenuBtn .menu-svg-icon-restore {
  width: 30px;
  height: 30px;
}
#restoreMenuBtn .menu-svg-icon-restore path {
  stroke-width: 3.15;
}
@media (max-width: 430px) {
  #restoreMenuBtn > span { width: 44px; height: 44px; }
}


/* V0.1.207 — retours testeurs : Autour + formulaire Ajouter un spot. */
.nearby-place-row .place-map-btn { background: rgba(15,118,110,.07); }
.place-name-field {
  padding: 12px; border: 1px solid rgba(15,118,110,.24); border-radius: 16px;
  background: linear-gradient(180deg, rgba(15,118,110,.07), rgba(255,255,255,.98));
}
.add-details-panel .place-name-field > span { color: var(--primary-strong); font-size: 14px; font-weight: 900; }
.add-details-panel .place-name-field input { min-height: 50px; border: 2px solid rgba(15,118,110,.34); font-size: 15.5px; font-weight: 700; }
.place-name-help { color: var(--muted); font-size: 11px; line-height: 1.35; }
.add-optional-heading {
  margin: 6px -2px 0; padding-top: 13px; border-top: 1px solid var(--line);
}
.add-section-number.is-secondary { background: #e8efed; color: var(--primary-strong); box-shadow: none; border: 1px solid rgba(15,118,110,.15); }
.add-mini-heading {
  display: grid; gap: 2px; margin-top: 3px; padding: 9px 10px; border-radius: 13px;
  background: #f5f8f7; border: 1px solid #e3ebe8;
}
.add-mini-heading strong { font-size: 12.5px; color: #33423d; }
.add-mini-heading small { font-size: 10.8px; line-height: 1.35; color: var(--muted); }

/* V0.1.208 — Ajouter un spot : services prioritaires + étape 3 au même niveau visuel. */
.add-practical-heading {
  margin: 8px -2px 0;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}
.add-services-heading {
  margin-top: 0;
  background: rgba(15,118,110,.075);
  border-color: rgba(15,118,110,.18);
}
.add-services-heading strong {
  color: var(--primary-strong);
  font-size: 13.5px;
  font-weight: 900;
}
#amenitiesFields {
  margin-bottom: 4px;
}

/* V0.1.211 — les sous-titres de l'étape 3 suivent réellement la famille choisie. */
.add-mini-heading[hidden], .service-point-intro[hidden] { display: none !important; }


/* V0.1.214 — Mon carnet mieux délimité + sauvegarde visible dans Plus */
.collections-sheet .carnet-lists-block {
  margin: 18px 0 0;
  padding: 12px;
  border: 1px solid rgba(36,117,208,.18);
  border-radius: 18px;
  background: rgba(36,117,208,.028);
}
.collections-sheet .carnet-lists-block .carnet-section-heading {
  margin: 0 0 9px;
  padding: 0 0 10px;
  border: 0;
  border-bottom: 1px solid rgba(36,117,208,.14);
  border-radius: 0;
  background: transparent;
}
.collections-sheet .carnet-lists-block .lists-section-help { margin: 0 0 10px; }
.collections-sheet .carnet-lists-block .lists-main-actions { margin-bottom: 10px; }
.collections-sheet .carnet-lists-block .collections-list { margin-top: 9px; }
.collections-sheet .carnet-lists-block .collections-empty { margin-bottom: 0; }
.menu-action.backup-due {
  border-color: rgba(173,116,20,.30);
  background: linear-gradient(135deg, rgba(215,154,45,.10), rgba(255,255,255,.98));
  box-shadow: 0 0 0 1px rgba(215,154,45,.035) inset;
}
.menu-action.backup-due > span {
  background: rgba(215,154,45,.13);
  color: #94620d;
}
.menu-action.backup-due b { color: #5e461d; }
.menu-action.backup-due #exportBtnHint { color: #94620d; font-weight: 800; }


/* V0.1.215 — Mon carnet : trois univers visuels + Collections proposées distinctes */
.collections-sheet .carnet-lists-block {
  border-color: rgba(36,117,208,.22);
  background: linear-gradient(180deg, rgba(36,117,208,.050), rgba(255,255,255,.98));
}
.collections-sheet .proposed-collections-section {
  border-color: rgba(177,123,33,.25);
  background: linear-gradient(180deg, rgba(214,161,62,.085), rgba(255,255,255,.985));
}
.collections-sheet .proposed-collections-section .proposed-collections-toggle {
  color: #6f531f;
}
.collections-sheet .proposed-collections-section .proposed-toggle-copy small {
  color: #8a6c31;
}
.collections-sheet .proposed-collections-section .proposed-collections-intro {
  border: 1px solid rgba(177,123,33,.12);
  background: rgba(255,252,245,.96);
}
.collections-sheet .proposed-collections-section .proposed-collection-card {
  border-color: rgba(177,123,33,.22);
  background: linear-gradient(180deg, rgba(214,161,62,.070), #fff 78%);
}
.collections-sheet .proposed-collections-section .proposed-collection-icon {
  border-color: rgba(177,123,33,.16);
}


/* V0.1.216 — Mon carnet : Mes spots prioritaire, sauvegarde visible, Mes listes repliable */
.collections-sheet .personal-collection-card.carnet-spots-block {
  border: 2px solid rgba(15,107,99,.34);
  border-left: 5px solid var(--primary);
  background: linear-gradient(180deg, rgba(15,118,110,.105), rgba(255,255,255,.99) 82%);
  box-shadow: 0 5px 16px rgba(15,107,99,.075);
}
.collections-sheet .carnet-spots-block .personal-collection-open strong { color: var(--primary-strong); }
.collections-sheet .carnet-spots-block .personal-count-badge {
  background: var(--primary);
  color: #fff;
  border-color: var(--primary);
}
.carnet-backup-nudge {
  border: 2px solid rgba(221,151,8,.52);
  background: linear-gradient(135deg, rgba(255,226,92,.34), rgba(255,249,218,.96));
  box-shadow: 0 5px 16px rgba(190,124,0,.10);
}
.carnet-backup-nudge-icon {
  background: #fff5ba;
  box-shadow: 0 0 0 1px rgba(221,151,8,.22) inset;
}
.carnet-backup-nudge-copy strong { color: #684700; font-weight: 900; }
.carnet-backup-nudge-copy small { color: #7a5b19; font-weight: 700; }
.carnet-backup-nudge .secondary-btn {
  border-color: #ae7200;
  background: #ae7200;
  color: #fff;
}
.menu-action.backup-due {
  border-color: rgba(221,151,8,.48);
  background: linear-gradient(135deg, rgba(255,226,92,.25), rgba(255,255,255,.99));
  box-shadow: 0 0 0 1px rgba(221,151,8,.08) inset, 0 4px 12px rgba(190,124,0,.07);
}
.menu-action.backup-due > span { background: rgba(255,221,74,.30); color: #8a5a00; }
.menu-action.backup-due b { color: #684700; }
.menu-action.backup-due #exportBtnHint { color: #8a5a00; font-weight: 850; }

.collections-sheet .carnet-lists-block { padding: 0; overflow: hidden; }
.collections-sheet .lists-section-toggle {
  width: 100%;
  min-height: 64px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 12px;
  border: 0;
  background: transparent;
  color: var(--text);
  text-align: left;
  font: inherit;
  cursor: pointer;
}
.collections-sheet .lists-toggle-copy {
  min-width: 0;
  display: grid;
  gap: 2px;
}
.collections-sheet .lists-toggle-copy strong {
  color: #245f9e;
  font-size: 18px;
  line-height: 1.15;
  font-weight: 900;
}
.collections-sheet .lists-toggle-copy small {
  color: #5f7892;
  font-size: 10.7px;
  line-height: 1.35;
}
.collections-sheet .lists-toggle-meta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex: 0 0 auto;
}
.collections-sheet .lists-count-badge {
  min-width: 27px;
  height: 27px;
  padding: 0 6px;
  display: inline-grid;
  place-items: center;
  border-radius: 999px;
  background: #fff;
  color: #245f9e;
  font-size: 12px;
  font-weight: 850;
  border: 1px solid rgba(36,117,208,.20);
}
.collections-sheet .lists-toggle-chevron {
  width: 30px;
  height: 30px;
  display: inline-grid;
  place-items: center;
  border-radius: 999px;
  border: 1px solid rgba(36,117,208,.20);
  background: #fff;
  color: #2475d0;
  font-size: 20px;
  font-weight: 900;
  line-height: 1;
  box-shadow: 0 2px 7px rgba(24,54,48,.06);
  transition: transform .16s ease;
}
.collections-sheet .lists-section-toggle[aria-expanded="true"] .lists-toggle-chevron { transform: rotate(90deg); }
.collections-sheet .personal-lists-body {
  padding: 0 12px 12px;
  border-top: 1px solid rgba(36,117,208,.14);
}
.collections-sheet .personal-lists-body[hidden] { display: none !important; }
.collections-sheet .personal-lists-body .lists-section-help { margin-top: 10px; }


/* V0.1.218 — cohérence Mes listes / Collections proposées : même gabarit compteur + flèche ronde, couleur propre conservée */


/* V0.1.220 — Partenaires & bons plans dans la PWA */
.partners-menu-section[hidden], .desktop-partners-btn[hidden] { display: none !important; }
.partner-menu-action {
  border-color: rgba(217,144,34,.32);
  background: linear-gradient(135deg, rgba(255,239,191,.72), rgba(255,250,235,.96));
}
.partner-menu-action > span { background: rgba(235,170,48,.16); }
.partner-menu-action b { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.partners-menu-count {
  min-width: 23px; height: 23px; padding: 0 7px; display: inline-grid; place-items: center;
  border-radius: 999px; background: #fff; border: 1px solid rgba(181,119,22,.22);
  color: #8a5a00; font-size: 10.5px; font-style: normal; font-weight: 900;
}
@media (min-width:860px) {
  .desktop-partners-btn { grid-column: 1 / -1; border-color: rgba(217,144,34,.26); background: rgba(255,246,220,.72); }
  .desktop-partners-btn:hover { border-color: rgba(181,119,22,.38); background: rgba(255,241,199,.82); }
  .desktop-partners-icon { width: 25px; height: 25px; display: grid; place-items: center; font-size: 20px; }
}
.partners-sheet, .partner-detail-sheet { max-height: min(92dvh, 850px); }
.partners-intro { margin: -2px 0 13px; padding: 11px 12px; border-radius: 14px; background: rgba(255,246,220,.72); color: #66522d; font-size: 12px; line-height: 1.5; }
.partners-list { display: grid; gap: 10px; padding-bottom: 4px; }
.partners-empty { padding: 18px; border: 1px dashed var(--line); border-radius: 15px; color: var(--muted); text-align: center; }
.partner-card {
  width: 100%; display: grid; grid-template-columns: 92px minmax(0,1fr) 22px; align-items: center; gap: 11px;
  padding: 10px; border: 1px solid rgba(181,119,22,.18); border-radius: 17px; background: #fff; color: var(--text); text-align: left;
}
.partner-card:hover { border-color: rgba(181,119,22,.34); background: rgba(255,250,238,.74); }
.partner-card-media { width: 92px; height: 72px; overflow: hidden; display: grid; place-items: center; border-radius: 13px; background: #f7f4ed; }
.partner-card-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.partner-card-media.is-logo img { object-fit: contain; padding: 8px; background: #fff; }
.partner-card-media-fallback { font-size: 28px; }
.partner-card-copy { min-width: 0; display: grid; gap: 3px; }
.partner-card-copy small { color: var(--muted); font-size: 10.5px; font-weight: 750; }
.partner-card-copy strong { font-size: 14px; line-height: 1.25; }
.partner-card-copy em { color: #78633b; font-size: 10.5px; font-style: normal; }
.partner-card-arrow { color: #9b762e; font-size: 25px; line-height: 1; }
.partner-badge { width: max-content; max-width: 100%; padding: 4px 8px; border-radius: 999px; background: rgba(225,158,42,.13); color: #8a5a00; font-size: 9.5px; font-weight: 900; text-transform: uppercase; letter-spacing: .055em; }
.partner-detail-content { display: grid; gap: 13px; padding-bottom: 4px; }
.partner-detail-visual { width: 100%; max-height: 280px; overflow: hidden; border-radius: 18px; background: #f4f1e8; border: 1px solid rgba(181,119,22,.15); }
.partner-detail-visual img { width: 100%; max-height: 280px; object-fit: cover; display: block; }
.partner-detail-brand { display: flex; align-items: center; gap: 10px; }
.partner-detail-brand > div { display: grid; gap: 5px; }
.partner-detail-brand small { color: var(--muted); font-weight: 800; }
.partner-detail-logo { width: 54px; height: 54px; object-fit: contain; border-radius: 13px; padding: 5px; background: #fff; border: 1px solid var(--line); }
.partner-detail-content h3 { margin: 0; font-size: 20px; line-height: 1.22; }
.partner-detail-description { margin: 0; color: #39433f; line-height: 1.55; white-space: pre-wrap; }
.partner-validity { margin: 0; padding: 9px 11px; border-radius: 12px; background: rgba(15,118,110,.06); color: #43534d; font-size: 12px; }
.partner-code-box { display: grid; grid-template-columns: 1fr auto; gap: 4px 10px; align-items: center; padding: 12px; border-radius: 15px; border: 1px dashed rgba(181,119,22,.38); background: rgba(255,246,220,.58); }
.partner-code-box span { grid-column: 1 / -1; color: #806425; font-size: 10.5px; font-weight: 850; text-transform: uppercase; letter-spacing: .05em; }
.partner-code-box strong { font-size: 18px; letter-spacing: .06em; overflow-wrap: anywhere; }
.partner-code-box button { min-height: 36px; padding: 0 12px; border: 1px solid rgba(181,119,22,.24); border-radius: 11px; background: #fff; color: #755114; font-weight: 850; }
.partner-detail-actions { display: grid; grid-template-columns: repeat(auto-fit,minmax(140px,1fr)); gap: 8px; }
.partner-action-link { min-height: 44px; display: grid; place-items: center; text-decoration: none; border-radius: 13px; }
.partner-disclaimer { margin: 1px 0 0; color: var(--muted); font-size: 10.5px; line-height: 1.45; }
@media (max-width:480px) {
  .partner-card { grid-template-columns: 78px minmax(0,1fr) 18px; gap: 9px; }
  .partner-card-media { width: 78px; height: 64px; }
}


/* V0.1.222 — sélecteur de langue : alignement mobile corrigé. */
/* V0.1.223 — Langue : même grille que les autres lignes. */
/* V0.1.224 — Correctif réel : la règle générale .menu-action b {align-self:end} poussait le titre à droite dans ce conteneur flex. */
.language-menu-action{cursor:default;align-items:center;grid-template-columns:52px minmax(0,1fr);grid-template-rows:auto auto;column-gap:12px;row-gap:7px}
.language-menu-action:hover{transform:none}
.language-menu-copy{grid-column:2;grid-row:1;min-width:0;width:100%;display:flex;flex-direction:column;gap:2px;text-align:left;justify-self:stretch}
.language-menu-copy b,.language-menu-copy small{display:block;text-align:left}
.language-menu-copy b{align-self:flex-start;width:100%;justify-self:start}
.language-menu-copy small{align-self:flex-start;width:100%;justify-self:start}
.language-select{grid-column:2;grid-row:2;justify-self:start;width:min(100%,190px);max-width:190px;min-height:38px;border:1px solid var(--line,#d9e1e5);border-radius:11px;background:#fff;color:var(--ink,#19313d);font:inherit;font-weight:700;padding:7px 30px 7px 10px;cursor:pointer}
.language-select:focus{outline:2px solid rgba(28,139,106,.22);outline-offset:2px}
@media (max-width:520px){.language-menu-action{grid-template-columns:52px minmax(0,1fr)}.language-select{grid-column:2;justify-self:start;width:min(100%,190px);max-width:190px}}


/* V0.1.226 — fiche spot : priorité aux services/actions, infos compactes, GPS discret en fin de fiche */
.detail-services-section {
  border-color: rgba(15,118,110,.22);
  background: linear-gradient(180deg, rgba(15,118,110,.055), #fff 72%);
  box-shadow: 0 7px 22px rgba(15,82,73,.06);
}
.detail-services-section .detail-section-title > span {
  background: rgba(15,118,110,.11);
  color: var(--primary);
}
.detail-services-section .detail-service {
  background: #fff;
  border-color: rgba(15,118,110,.14);
}
.detail-priority-actions { margin-top: -2px; }
.detail-info-grid { gap: 6px; }
.detail-contact-line {
  grid-template-columns: 30px minmax(0, 1fr);
  gap: 9px;
  min-height: 49px;
  padding: 7px 9px;
  border-radius: 12px;
}
.detail-contact-icon {
  width: 30px;
  height: 30px;
  border-radius: 9px;
  font-size: 15px;
}
.detail-contact-line > div { gap: 2px; }
.detail-contact-line strong { font-size: 10.3px; }
.detail-contact-line > div > span,
.detail-contact-value > span { font-size: 14px; }
.detail-contact-value small { font-size: 10px; }
.detail-coordinates {
  gap: 6px;
  padding: 9px 10px;
  border-radius: 13px;
  background: #fafbfa;
  box-shadow: none;
}
.detail-coordinates .detail-section-title > span {
  width: 24px;
  height: 24px;
  font-size: 13px;
}
.detail-coordinates .detail-section-title strong {
  color: var(--muted);
  font-size: 11.5px;
}
.detail-coordinates .detail-coordinate-row code {
  padding: 7px 8px;
  background: #f4f6f5;
  font-size: 11.5px;
}
.detail-coordinates .coordinate-copy-btn {
  min-height: 34px;
  padding: 6px 11px;
  font-size: 11.5px;
}
@media (max-width: 430px) {
  .detail-contact-line {
    grid-template-columns: 30px minmax(0, 1fr);
    gap: 8px;
    min-height: 47px;
    padding: 7px 8px;
  }
  .detail-contact-line strong { font-size: 10px; }
  .detail-contact-line > div > span,
  .detail-contact-value > span { font-size: 14px; }
}

/* V0.1.227 — fiche spot : relief plus net sans changer la palette */
.detail-hero {
  padding: 2px 0 10px;
  border-bottom: 1px solid var(--line);
}
.detail-hero .detail-pill:not(.favorite-pill) {
  border: 1px solid var(--line);
  background: #fff;
  box-shadow: 0 2px 8px rgba(28,48,41,.035);
}
.detail-priority-actions {
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #f8faf9;
}
.detail-priority-actions .spot-action-btn:not(.is-primary) {
  background: #fff;
}
.detail-info-grid .detail-contact-line {
  border-color: rgba(28,48,41,.10);
  background: #fff;
}
.detail-source {
  margin-top: -2px;
  background: transparent;
  border-top: 1px solid var(--line);
  border-radius: 0;
  padding: 8px 2px 0;
}
.detail-source a {
  color: var(--primary);
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
}


/* V0.1.230 — sauvegarde de secours : visible mais volontairement indisponible hors application installée. */
.backup-remote-option.is-unavailable{
  cursor:default;
  background:#f4f6f6;
}
.backup-remote-option.is-unavailable input{cursor:not-allowed}
.backup-install-cta{width:100%;margin-top:9px}
.backup-install-cta[hidden]{display:none!important}


/* V0.1.231 — sauvegardes : séparation visuelle nette entre fichier local et secours installé. */
.backup-choice-card{
  margin-top:14px;
  padding:15px;
  border:1px solid var(--line);
  border-radius:18px;
  background:#fff;
  box-shadow:0 5px 16px rgba(24,58,50,.045);
}
.backup-choice-head{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  gap:10px;
  align-items:start;
}
.backup-choice-icon{
  width:35px;
  height:35px;
  display:grid;
  place-items:center;
  border-radius:12px;
  background:var(--primary-soft,#edf7f2);
  font-size:18px;
  line-height:1;
}
.backup-choice-copy{display:grid;gap:3px;min-width:0;padding-top:1px}
.backup-choice-copy strong{font-size:14.5px;line-height:1.3;color:var(--text)}
.backup-choice-copy small{font-size:12px;line-height:1.42;color:var(--muted)}
.backup-choice-badge{
  align-self:start;
  max-width:132px;
  padding:5px 8px;
  border-radius:999px;
  background:var(--primary-soft,#edf7f2);
  color:var(--primary);
  font-size:10.5px;
  font-weight:800;
  line-height:1.15;
  text-align:center;
}
.backup-choice-badge-muted{background:#eef1f1;color:#687574}
.backup-choice-note{
  margin:8px 1px 0;
  font-size:11.5px;
  line-height:1.4;
  color:var(--muted);
}
.backup-local-card .backup-unified-main{margin-top:13px}
.backup-remote-card{background:#fbfcfc}
.backup-remote-card .backup-remote-option{
  margin-top:12px;
  padding:11px 12px;
  border-radius:14px;
  background:#fff;
}
.backup-remote-card.is-unavailable{
  border-color:#dfe4e3;
  background:#f6f8f8;
  box-shadow:none;
}
.backup-remote-card.is-unavailable .backup-choice-icon,
.backup-remote-card.is-unavailable .backup-remote-option{opacity:.62}
.backup-remote-card.is-unavailable .backup-install-cta{opacity:1}
.backup-privacy-note{margin-top:12px}
@media (max-width:520px){
  .backup-choice-card{padding:13px}
  .backup-choice-head{grid-template-columns:auto minmax(0,1fr)}
  .backup-choice-badge{grid-column:2;justify-self:start;max-width:none;margin-top:2px}
}

/* V0.1.232 — le bouton Filtres utilise un pictogramme entonnoir distinct du menu hamburger. */

/* V0.1.244 — Mes spots : les noms longs reviennent sur deux lignes au lieu d'être coupés immédiatement.
   Le bandeau d'équipements peut contenir les 10 pictogrammes et garde son défilement horizontal sur petit écran. */
.place-card-copy strong {
  white-space: normal;
  overflow: hidden;
  text-overflow: clip;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow-wrap: anywhere;
}


/* V0.1.249 — Outil Gaz & GPL */
.gas-tool-sheet { max-height: min(92dvh, 860px); }
.gas-tool-body { display: grid; gap: 13px; padding-bottom: 4px; }
.gas-tool-intro { margin: 0; color: #43514c; font-size: 14px; line-height: 1.55; }
.gas-tool-source-note { display:flex; align-items:flex-start; gap:9px; padding:10px 11px; border-radius:14px; background:rgba(36,117,208,.055); color:#43514c; }
.gas-tool-source-note > span { flex:0 0 auto; }
.gas-tool-source-note p { margin:0; display:grid; gap:2px; }
.gas-tool-source-note strong { font-size:13px; }
.gas-tool-source-note small { color:var(--muted); font-size:12px; line-height:1.45; }
.gas-tool-filter-block { display:grid; gap:7px; }
.gas-tool-filter-block > strong { color:#42504b; font-size:13px; }
.gas-tool-chips { display:flex; flex-wrap:wrap; gap:7px; }
.gas-chip { appearance:none; border:1px solid var(--line); background:#fff; color:#44524d; min-height:34px; padding:7px 11px; border-radius:999px; font:inherit; font-size:12.5px; font-weight:800; cursor:pointer; }
.gas-chip.is-active { border-color:rgba(15,118,110,.35); background:rgba(15,118,110,.09); color:var(--primary); box-shadow:inset 0 0 0 1px rgba(15,118,110,.08); }
.gas-locate-btn { width:100%; }
.gas-tool-status { min-height:20px; color:var(--muted); font-size:12.5px; line-height:1.4; text-align:center; }
.gas-tool-status.is-error { color:var(--danger); }
.gas-tool-results { display:grid; gap:9px; }
.gas-result-card { display:grid; gap:8px; padding:11px 12px; border:1px solid var(--line); border-radius:15px; background:#fff; box-shadow:0 4px 14px rgba(31,51,44,.045); }
.gas-result-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.gas-result-title { min-width:0; display:grid; gap:2px; }
.gas-result-title strong { color:#263b34; font-size:14px; line-height:1.3; }
.gas-result-title small { color:var(--muted); font-size:12px; line-height:1.4; }
.gas-distance { flex:0 0 auto; padding:4px 7px; border-radius:999px; background:#f0f4f2; color:#4d5e57; font-size:11.5px; font-weight:850; }
.gas-badges { display:flex; flex-wrap:wrap; gap:5px; }
.gas-badge { display:inline-flex; align-items:center; min-height:24px; padding:3px 7px; border-radius:999px; background:rgba(36,117,208,.08); color:#185ca6; font-size:11px; font-weight:850; }
.gas-badge.is-bottle { background:rgba(180,83,9,.09); color:#98500f; }
.gas-gpl-price { color:#1e4d40; font-size:13.5px; font-weight:850; }
.gas-gpl-price small { color:var(--muted); font-size:11px; font-weight:650; }
.gas-result-actions { display:flex; justify-content:flex-end; }
.gas-result-actions .secondary-btn { min-height:36px; padding:8px 12px; font-size:12px; }
.gas-tool-source-link { justify-self:center; color:var(--muted); font-size:11.5px; text-decoration:underline; text-underline-offset:2px; }

/* V0.1.258 — Outils : icône Gaz & GPL clarifiée ; même traitement visuel que Niveau camping-car. */
.tool-gas-icon path { stroke-width:2.05; }


/* V0.1.262 — raccourcis carte plus compacts sur petit écran : Mes spots + Mon carnet. */
#listBtn,
.collections-map-fab {
  min-height: 42px;
  padding-left: 11px;
  padding-right: 11px;
  font-size: 12.25px;
}
#listBtn.has-collections-below { bottom: 66px; }
@media (max-width: 380px) {
  #listBtn,
  .collections-map-fab {
    min-height: 40px;
    padding-left: 9px;
    padding-right: 9px;
    font-size: 11.75px;
  }
  #listBtn.has-collections-below { bottom: 66px; }
}
@media (min-width: 860px) {
  .map-wrap #listBtn,
  .map-wrap .collections-map-fab {
    min-height: 40px;
    padding-left: 11px;
    padding-right: 11px;
    font-size: 12px;
  }
  .map-wrap #listBtn.has-collections-below { bottom: 66px; }
}


/* V0.1.263 — raccourcis carte encore un peu plus discrets sur petit écran. */
@media (max-width: 430px) {
  #listBtn,
  .collections-map-fab {
    min-height: 38px;
    padding-left: 8px;
    padding-right: 8px;
    font-size: 11.25px;
  }
  #listBtn.has-collections-below { bottom: 62px; }
}
@media (max-width: 360px) {
  #listBtn,
  .collections-map-fab {
    min-height: 37px;
    padding-left: 7px;
    padding-right: 7px;
    font-size: 11px;
  }
  #listBtn.has-collections-below { bottom: 61px; }
}


/* V0.1.265 — Mon carnet : Mes spots aussi lisible que Mes listes + partage/transfert clarifiés */
.collections-sheet .personal-collection-card.carnet-spots-block {
  display: block;
  padding: 0;
  overflow: hidden;
}
.collections-sheet .carnet-spots-block .personal-collection-copy { display: block; }
.collections-sheet .carnet-spots-block .personal-collection-open {
  min-height: 68px;
  padding: 12px 13px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border-radius: 0;
}
.collections-sheet .personal-spots-heading-copy {
  min-width: 0;
  display: grid;
  gap: 3px;
}
.collections-sheet .personal-spots-heading-copy strong {
  color: var(--primary-strong);
  font-size: 19px;
  line-height: 1.1;
  font-weight: 900;
}
.collections-sheet .personal-spots-heading-copy small {
  color: #56766f;
  font-size: 10.8px;
  line-height: 1.35;
  white-space: normal;
}
.collections-sheet .personal-spots-heading-meta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex: 0 0 auto;
}
.collections-sheet .personal-spots-chevron {
  width: 30px;
  height: 30px;
  display: inline-grid;
  place-items: center;
  border-radius: 999px;
  border: 1px solid rgba(15,107,99,.22);
  background: #fff;
  color: var(--primary);
  font-size: 22px;
  font-weight: 900;
  line-height: 1;
  box-shadow: 0 2px 7px rgba(24,54,48,.06);
}
.collections-sheet .carnet-spots-block .personal-collection-actions {
  grid-template-columns: 1fr 1fr !important;
  padding: 0 12px 12px;
}
.share-merge-note, .full-carnet-transfer-notice {
  margin: 0 0 12px;
  padding: 10px 11px;
  border-radius: 13px;
  font-size: 11px;
  line-height: 1.45;
}
.share-merge-note {
  border: 1px solid rgba(15,107,99,.18);
  background: rgba(15,107,99,.055);
  color: #365f59;
}
.share-merge-note b { color: var(--primary-strong); }
.full-carnet-transfer-notice {
  display: grid;
  gap: 4px;
  border: 1px solid rgba(181,72,63,.22);
  background: rgba(181,72,63,.055);
  color: #6f3b36;
}
.full-carnet-transfer-notice[hidden] { display: none !important; }
.full-carnet-transfer-notice strong { color: #8f4039; font-size: 12.5px; }
.full-carnet-transfer-notice p, .full-carnet-transfer-notice small { margin: 0; }
.full-carnet-transfer-notice small { color: #73544f; font-size: 10.6px; line-height: 1.4; }
@media (max-width: 390px) {
  .collections-sheet .carnet-spots-block .personal-collection-open { min-height: 64px; padding: 10px 11px; }
  .collections-sheet .personal-spots-heading-copy strong { font-size: 18px; }
  .collections-sheet .carnet-spots-block .personal-collection-actions { padding: 0 10px 10px; }
}
/* V0.1.266 — Partage : choix plus lisibles, moins de blanc */
#shareChoiceSheet .transfer-intro {
  margin: -2px 0 12px;
  padding: 9px 11px;
  border-radius: 12px;
  background: #f1f7f5;
  border: 1px solid rgba(15,107,99,.12);
  color: #315d57;
  font-weight: 750;
}
#shareChoiceSheet .transfer-methods { gap: 9px; }
#shareChoiceSheet .transfer-method {
  min-height: 68px;
  box-shadow: 0 4px 12px rgba(24,54,48,.055);
}
#shareChoiceSheet .transfer-method-featured {
  border-color: #0f6b63;
  background: #0f6b63;
  color: #fff;
}
#shareChoiceSheet .transfer-method-featured:hover {
  border-color: #0b5b54;
  background: #0b625b;
}
#shareChoiceSheet .transfer-method-featured .transfer-method-icon {
  background: #fff;
  color: #0f6b63;
}
#shareChoiceSheet .transfer-method-featured small { color: rgba(255,255,255,.83); }
#shareChoiceSheet #shareByFileBtn {
  border-color: rgba(15,107,99,.22);
  background: #f8fbfa;
}
#shareChoiceSheet #shareByFileBtn .transfer-method-icon {
  background: #e4f1ee;
}

/* V0.1.269 — classement utile mais discret, placé sous les actions */
.detail-storage-memberships {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 5px;
  padding: 0 2px;
  border: 0;
  border-radius: 0;
  background: transparent;
  font-size: 10.5px;
  line-height: 1.25;
}
.detail-storage-memberships > strong {
  color: var(--muted);
  font-size: 10.5px;
  font-weight: 700;
  text-transform: none;
  letter-spacing: 0;
}
.detail-membership-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.detail-membership-tag {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  padding: 2px 6px;
  border: 1px solid rgba(28,48,41,.10);
  border-radius: 999px;
  background: var(--surface-2);
  color: var(--muted) !important;
  font-size: 10.5px;
  font-weight: 700;
  line-height: 1.1;
}
.detail-membership-tag.is-personal {
  border-color: rgba(15,107,99,.18);
  background: rgba(15,107,99,.07);
  color: var(--primary) !important;
}
.detail-membership-link {
  cursor: pointer;
}
.detail-membership-link:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}

.detail-membership-tag.is-map-hidden {
  border-color: rgba(86,100,94,.14);
  background: rgba(86,100,94,.06);
  color: #7b8983 !important;
  opacity: .72;
}
.detail-membership-tag.is-map-hidden .collection-eye-icon {
  width: 13px;
  height: 13px;
  flex: 0 0 13px;
  margin-right: 2px;
}
.detail-membership-tag.is-personal.is-map-hidden {
  border-color: rgba(15,107,99,.12);
  background: rgba(15,107,99,.04);
  color: #748780 !important;
}

/* V0.1.270 — fiche spot : la catégorie principale reprend la couleur de sa rubrique */
.detail-hero .detail-pill.family-pill {
  color: #fff;
  border-color: transparent;
  box-shadow: 0 2px 8px rgba(28,48,41,.08);
}
.detail-hero .detail-pill.family-pill.sleep { background: var(--sleep); }
.detail-hero .detail-pill.family-pill.discover { background: var(--discover); }
.detail-hero .detail-pill.family-pill.service { background: var(--service); }


/* V0.1.272 — filtres contextuels : familles lisibles et sous-types compacts */
.filter-context-intro { margin: 2px 0 14px; padding: 13px 14px; border: 1px dashed var(--line); border-radius: 14px; background: #fbfcfc; display: grid; gap: 4px; }
.filter-context-intro strong { font-size: 13px; }
.filter-context-intro small { color: var(--muted); font-size: 11px; line-height: 1.4; }
.filter-type-grid { margin-bottom: 0; }
.filter-type-grid label { min-height: 46px; align-items: center; }
.subtype-mini-icon { width: 27px; height: 27px; border-radius: 50%; background: var(--discover); display: grid; place-items: center; flex: 0 0 27px; }
#filterServiceTypesSection .subtype-mini-icon { background: var(--service); }
.subtype-mini-icon .subtype-svg { width: 18px; height: 18px; object-fit: contain; }
@media (max-width: 520px) {
  .filter-type-grid { grid-template-columns: 1fr 1fr; }
  .filter-type-grid label { min-height: 48px; padding: 8px; gap: 7px; font-size: 12px; }
}

/* V0.1.273 — feuille Filtres : hidden prioritaire + couleurs contextuelles */
#filterSheet .filter-section[hidden],
#filterSheet .filter-context-intro[hidden] { display: none !important; }

#filterSheet { --filter-accent: var(--all); --filter-accent-soft: var(--all-soft); }
#filterSheet[data-filter-family="sleep"] { --filter-accent: var(--sleep); --filter-accent-soft: rgba(15,118,110,.10); }
#filterSheet[data-filter-family="discover"] { --filter-accent: var(--discover); --filter-accent-soft: rgba(217,106,53,.11); }
#filterSheet[data-filter-family="service"] { --filter-accent: var(--service); --filter-accent-soft: rgba(118,83,143,.11); }
#filterSheet[data-filter-family="favorite"] { --filter-accent: #9a7200; --filter-accent-soft: #fff4c6; }

#filterSheet .filter-segmented input:checked + span {
  border-color: var(--filter-accent);
  background: var(--filter-accent-soft);
  color: var(--filter-accent);
}
#filterSheet .filter-secondary-option input,
#filterSheet .filter-wide-option input,
#filterSheet .filter-grid input { accent-color: var(--filter-accent); }

#mobileQuickFilters .mobile-filter-chip[data-mobile-family="all"].is-active {
  border-color: var(--all); background: var(--all); color: #fff;
}
#mobileQuickFilters .mobile-filter-chip[data-mobile-family="sleep"].is-active {
  border-color: var(--sleep); background: var(--sleep); color: #fff;
}
#mobileQuickFilters .mobile-filter-chip[data-mobile-family="discover"].is-active {
  border-color: var(--discover); background: var(--discover); color: #fff;
}
#mobileQuickFilters .mobile-filter-chip[data-mobile-family="service"].is-active {
  border-color: var(--service); background: var(--service); color: #fff;
}
#mobileQuickFilters .mobile-filter-chip[data-mobile-favorite="true"].is-active {
  border-color: #e2c45c; background: #fff2bd; color: #735700;
}


/* V0.1.279 — recherche par mot-clé dans la feuille Filtres */
.filter-keyword-block { display:grid; gap:8px; margin:2px 0 14px; padding:12px; border:1px solid var(--line); border-radius:14px; background:#fbfcfc; }
.filter-keyword-input { min-height:43px; display:grid; grid-template-columns:22px minmax(0,1fr); gap:7px; align-items:center; padding:0 11px; border:1px solid var(--line); border-radius:12px; background:#fff; transition:border-color .16s ease, box-shadow .16s ease; }
.filter-keyword-input:focus-within { border-color:var(--filter-accent); box-shadow:0 0 0 3px var(--filter-accent-soft); }
.filter-keyword-input svg { width:19px; height:19px; fill:none; stroke:var(--filter-accent); stroke-width:2; stroke-linecap:round; }
.filter-keyword-input input { min-width:0; width:100%; border:0; outline:0; background:transparent; color:var(--text); font:inherit; font-size:13px; }
.filter-keyword-input input::placeholder { color:var(--muted); opacity:.9; }
@media (max-width:430px) { .filter-keyword-block { padding:11px; } .filter-keyword-input input { font-size:14px; } }

/* V0.1.283 — invitation à installer avant de créer/importer un carnet sur mobile navigateur. */
.install-required-note{margin:0 0 14px;padding:13px 14px;border:1px solid #bfe0d3;border-radius:14px;background:#edf8f3;color:#174f43}
.install-required-note strong{display:block;margin-bottom:4px;font-size:14px}
.install-required-note p{margin:0;font-size:13px;line-height:1.45}


/* V0.1.287 — Ajouter un spot : étape 4 Contact, liens et notes. */
.add-contact-heading {
  margin: 8px -2px 0;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}
.add-contact-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 12px;
  padding: 11px;
  border: 1px solid #e3ebe8;
  border-radius: 16px;
  background: #f8faf9;
}
.add-contact-fields .add-contact-wide {
  grid-column: 1 / -1;
}
.add-contact-fields .field input,
.add-contact-fields .field textarea {
  background: #fff;
}
@media (max-width: 430px) {
  .add-contact-fields {
    grid-template-columns: 1fr;
    gap: 10px;
    padding: 10px;
  }
  .add-contact-fields .field,
  .add-contact-fields .add-contact-wide {
    grid-column: 1;
  }
}


/* V0.1.290 — arrivée depuis le bouton Installer du site vitrine. */
.install-intent-card {
  display: grid;
  gap: 10px;
  padding: 4px 0 2px;
}
.install-intent-card > strong {
  font-size: 1.05rem;
  color: var(--text);
}
.install-intent-card > p {
  margin: 0;
  color: var(--muted);
  line-height: 1.5;
}
.install-intent-confirm {
  width: 100%;
  min-height: 50px;
  margin-top: 4px;
  font-weight: 800;
}
.install-intent-confirm:disabled {
  opacity: .58;
  cursor: wait;
}
.install-intent-card > small {
  display: block;
  text-align: center;
  color: var(--muted);
}

/* V0.1.299 — retrait discret de la photo externe dans Mes spots */
.detail-body > .spot-photo-host {
  position: relative;
}
.detail-remove-external-photo-trash {
  position: absolute;
  top: 8px;
  right: 8px;
  z-index: 2;
  width: 34px;
  height: 34px;
  min-width: 34px;
  min-height: 34px;
  padding: 0;
  border: 1px solid rgba(255,255,255,.72);
  border-radius: 50%;
  background: rgba(20,28,32,.68);
  color: #fff;
  font: inherit;
  font-size: 16px;
  line-height: 1;
  display: grid;
  place-items: center;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(0,0,0,.18);
}
.detail-remove-external-photo-trash:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 2px;
}

/* V0.1.312 — Paramètres : langue + hauteur véhicule, avec icônes homogènes. */
.vehicle-height-menu-action{cursor:default;align-items:center;grid-template-columns:52px minmax(0,1fr);grid-template-rows:auto auto;column-gap:12px;row-gap:7px}
.vehicle-height-menu-action:hover{transform:none}
.vehicle-height-menu-copy{grid-column:2;grid-row:1;min-width:0;width:100%;display:flex;flex-direction:column;gap:2px;text-align:left;justify-self:stretch}
.vehicle-height-menu-copy b,.vehicle-height-menu-copy small{display:block;text-align:left;align-self:flex-start;width:100%}
.vehicle-height-control{grid-column:2;grid-row:2;display:flex;align-items:center;gap:7px;justify-self:start;color:var(--muted);font-size:12px;font-weight:800}
.vehicle-height-control input{width:108px;min-height:38px;border:1px solid var(--line,#d9e1e5);border-radius:11px;background:#fff;color:var(--text,#19313d);font:inherit;font-size:14px;font-weight:800;padding:7px 9px}
.vehicle-height-control input:focus{outline:2px solid rgba(28,139,106,.22);outline-offset:2px}
.detail-contact-line.detail-height-warning{border-color:rgba(185,74,44,.26);background:rgba(185,74,44,.07)}
.detail-contact-line.detail-height-warning .detail-contact-icon{color:#b54a2c}
.detail-contact-line.detail-height-warning strong{color:#8d321d}
@media (max-width:520px){.vehicle-height-menu-action{grid-template-columns:52px minmax(0,1fr)}}

/* V0.1.312 — feuille Paramètres légère, sans alourdir le menu Plus. */
.settings-sheet-body{padding:4px 0 8px}
.settings-sheet .settings-menu-action{cursor:default}
.settings-sheet .settings-menu-action:hover{transform:none}
#settingsBtn .menu-svg-icon{width:26px;height:26px}

/* V0.1.317 — Tout/Tous : état actif global neutre, distinct de Dormir */

/* V0.1.321 — audit mobile multi-appareils : interface fixe hors carte, lisibilité et fiche mieux hiérarchisée. */
html,
body,
.app-shell {
  touch-action: pan-x pan-y;
  overscroll-behavior: none;
}

/* La carte conserve seule ses gestes tactiles natifs (déplacement + pincement). */
#map,
.map,
.leaflet-container,
.maplibregl-map {
  touch-action: none !important;
}

/* Fiches : léger contraste de fond, sans changer la palette générale de l'application. */
#detailSheet,
#collectionPlaceSheet {
  background: #f1f5f3;
}
#detailSheet .detail-section,
#collectionPlaceSheet .detail-section {
  border-color: #d4dfdb;
  box-shadow: 0 7px 22px rgba(28,48,41,.065);
}
#detailSheet .detail-priority-actions,
#collectionPlaceSheet .detail-priority-actions {
  border-color: #d2ded9;
  background: #e9f0ed;
}

/* Partager reste une action principale : visible sans ajouter de bouton dans l'en-tête. */
.detail-priority-actions .spot-action-btn.is-share {
  border-color: rgba(15,118,110,.32);
  background: rgba(15,118,110,.09);
  color: var(--primary-strong);
  font-weight: 850;
}
/* Quand Partager est le 3e et dernier bouton, il occupe naturellement toute la ligne. */
.detail-priority-actions #shareDetailBtn:last-child {
  grid-column: 1 / -1;
  min-height: 48px;
  font-size: 13.5px;
}

@media (max-width: 520px) {
  /* iOS : 16 px évite aussi le zoom automatique lors du focus dans les champs. */
  input,
  select,
  textarea {
    font-size: 16px;
  }

  /* Les titres principaux étaient déjà corrects : on relève uniquement la typographie secondaire. */
  .eyebrow { font-size: 11px; }
  .add-section-heading small { font-size: 13px; line-height: 1.42; }
  .address-search-block > label { font-size: 13px; }
  .field > span,
  fieldset legend { font-size: 13px; }
  .choice-card small { font-size: 12.5px; line-height: 1.35; }
  .place-name-help { font-size: 12.5px; line-height: 1.42; }
  .add-mini-heading small { font-size: 12.5px; line-height: 1.42; }
  .add-save-targets-head small,
  .add-save-choice small { font-size: 12.5px; line-height: 1.42; }
  .services-grid label,
  .filter-grid label { font-size: 13px; }
  .quick-paste-status { font-size: 12.5px; line-height: 1.4; }

  /* Fiches : les micro-libellés restent secondaires mais ne doivent plus paraître minuscules. */
  .detail-section-title strong { font-size: 15px; }
  .detail-contact-line strong { font-size: 11.5px; }
  .detail-contact-value small { font-size: 11.5px; }
  .detail-coordinates .detail-section-title strong { font-size: 12.5px; }
  .detail-coordinates .detail-coordinate-row code,
  .detail-coordinates .coordinate-copy-btn { font-size: 12.5px; }
  .detail-source,
  .detail-memberships { font-size: 12.5px; line-height: 1.42; }
  .detail-memberships strong { font-size: 13px; }
  .detail-pill,
  .detail-service { font-size: 13px; }
  .spot-action-btn { font-size: 13px; }
}

/* V0.1.328 — Ajouter un spot : réception centrée + confirmation de position visible sur mobile. */
.add-received-spot {
  margin: 10px 0 12px;
  padding: 10px 12px 11px;
  border: 1px solid #c9d9f2;
  border-radius: 16px;
  background: #f3f7ff;
  text-align: left;
}
.add-received-spot-label {
  margin: 0 0 8px;
  color: #315a8a;
  font-size: 13.5px;
  line-height: 1.35;
  font-weight: 850;
}
.add-received-spot-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(190px, 1fr));
  justify-content: center;
  gap: 10px;
  width: min(100%, 620px);
  margin: 0 auto;
}
.add-received-spot .add-import-shared-btn {
  width: 100%;
  min-height: 44px;
  justify-content: center;
  padding: 9px 14px;
  border: 1px solid #b8cdea;
  border-radius: 12px;
  background: #fff;
  color: #315a8a;
  font-size: 13px;
  font-weight: 800;
}
.add-received-spot .add-import-shared-btn:hover,
.add-received-spot .add-import-shared-btn:focus-visible {
  border-color: #7ea6d8;
  background: #edf4ff;
}

/* Le Pixel XL et les autres grands smartphones restent en lecture mobile guidée.
   Les tablettes/PC (> 540 px ou pointeur fin) conservent la grille actuelle. */
@media (max-width: 540px) and (pointer: coarse) {
  .add-location-panel .quick-add-actions {
    grid-template-columns: 1fr;
    gap: 8px;
  }
  .add-location-panel .quick-add-actions .secondary-btn {
    width: 100%;
    min-height: 46px;
    justify-content: flex-start;
    text-align: left;
    padding-left: 14px;
  }
  .add-received-spot {
    margin-top: 12px;
    padding: 11px 12px 12px;
  }
  .add-received-spot-label {
    font-size: 14px;
    margin-bottom: 9px;
  }
  .add-received-spot-actions {
    display: grid;
    grid-template-columns: 1fr;
    gap: 7px;
  }
  .add-received-spot .add-import-shared-btn {
    width: 100%;
    min-height: 44px;
    justify-content: flex-start;
    padding: 9px 12px;
    font-size: 13.5px;
  }
}



/* V0.1.327 — lisibilité mobile : titres, étapes et informations importantes */
.add-section-number {
  width: 36px;
  height: 36px;
  font-size: 15px;
}

.add-section-heading strong {
  font-size: 16px;
}

.add-section-heading small {
  font-size: 13px;
  line-height: 1.45;
}

.add-location-panel .secondary-btn {
  font-size: 16px;
}

.add-received-spot-label {
  font-size: 14px;
  font-weight: 800;
}

.add-received-spot .add-import-shared-btn {
  font-size: 15px;
  padding: 9px 14px;
}

/* Informations pratiques / tarifs : meilleure lecture */
.add-details-panel label,
.add-details-panel .field-label,
.tarif-section label {
  font-size: 14px;
}

.add-details-panel input,
.add-details-panel select,
.tarif-section input,
.tarif-section select {
  font-size: 16px;
}

@media (min-width: 700px) {
  .add-received-spot-actions {
    gap: 12px;
  }

  .add-received-spot .add-import-shared-btn {
    min-width: 180px;
    justify-content: center;
  }
}


/* V0.1.328 — Actualiser un spot depuis sa source. */
.detail-source.is-refreshable{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.detail-source-line{min-width:0}.detail-source-refresh-btn{appearance:none;border:1px solid rgba(15,118,110,.26);background:#eef8f5;color:#0f6f68;border-radius:999px;padding:8px 12px;font:inherit;font-size:13px;font-weight:800;line-height:1;cursor:pointer;white-space:nowrap}.source-refresh-sheet{max-width:680px}.source-refresh-body{display:grid;gap:13px;padding-bottom:max(20px,env(safe-area-inset-bottom))}.source-refresh-loading,.source-refresh-message,.source-refresh-intro{border:1px solid var(--line);border-radius:17px;background:#fff;padding:14px}.source-refresh-loading{min-height:118px;display:grid;place-items:center;align-content:center;gap:6px;text-align:center}.source-refresh-loading small{color:var(--muted)}.source-refresh-spinner{width:28px;height:28px;border:3px solid #dceae6;border-top-color:var(--primary);border-radius:50%;animation:sep-refresh-spin .8s linear infinite}@keyframes sep-refresh-spin{to{transform:rotate(360deg)}}.source-refresh-message{display:grid;grid-template-columns:34px minmax(0,1fr);gap:10px;align-items:start}.source-refresh-message>span{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;font-weight:900;background:#eaf7f2;color:var(--primary)}.source-refresh-message.is-error>span{background:#fff0ef;color:var(--danger)}.source-refresh-message p,.source-refresh-intro p{margin:4px 0 0;color:var(--muted);line-height:1.42}.source-refresh-list{display:grid;gap:11px}.source-refresh-card{display:grid;gap:10px;padding:13px;border:1px solid var(--line);border-radius:17px;background:#fff;box-shadow:0 5px 18px rgba(28,48,41,.04)}.source-refresh-card h3{margin:0;font-size:15px}.source-refresh-values{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:8px;align-items:center}.source-refresh-values>div:not(.source-refresh-arrow){min-width:0;display:grid;gap:3px;padding:9px 10px;border-radius:12px;background:#f7f9f8}.source-refresh-values small{color:var(--muted);font-size:11.5px;font-weight:700}.source-refresh-values strong{overflow-wrap:anywhere;font-size:13px;line-height:1.35}.source-refresh-arrow{color:var(--muted);font-weight:900}.source-refresh-choices{display:grid;grid-template-columns:1fr 1fr;gap:7px}.source-refresh-choice{border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--text);padding:9px 8px;font:inherit;font-size:12.5px;font-weight:800;cursor:pointer}.source-refresh-choice[data-choice="keep"].is-selected{background:#f0f2f1;border-color:#cdd5d2}.source-refresh-choice[data-choice="source"].is-selected{background:#e8f7f2;border-color:#8bcdbd;color:#0c6d61}.source-refresh-apply{width:100%;min-height:46px}.source-refresh-apply:disabled{opacity:.55;cursor:default}.source-refresh-open-link,.source-refresh-retry{width:100%;justify-content:center}@media(max-width:520px){.source-refresh-values{grid-template-columns:1fr}.source-refresh-arrow{transform:rotate(90deg);justify-self:center}.source-refresh-choices{grid-template-columns:1fr}.source-refresh-choice{min-height:42px;font-size:13px}}

/* V0.1.362 — Apparence simple : Automatique / Clair / Sombre. */
.theme-menu-action{cursor:default;align-items:center;grid-template-columns:52px minmax(0,1fr);grid-template-rows:auto auto;column-gap:12px;row-gap:7px}
.theme-menu-action:hover{transform:none}
.theme-menu-copy{grid-column:2;grid-row:1;min-width:0;width:100%;display:flex;flex-direction:column;gap:2px;text-align:left;justify-self:stretch}
.theme-menu-copy b,.theme-menu-copy small{display:block;text-align:left;align-self:flex-start;width:100%}
.theme-select{grid-column:2;grid-row:2;justify-self:start;width:min(100%,190px);max-width:190px;min-height:38px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--text);font:inherit;font-weight:700;padding:7px 30px 7px 10px;cursor:pointer}
@media (max-width:520px){.theme-menu-action{grid-template-columns:52px minmax(0,1fr)}}

html[data-theme="dark"]{
  --bg:#101614;
  --surface:#18211e;
  --surface-2:#222d29;
  --text:#edf4f1;
  --muted:#a7b5b0;
  --line:#35443f;
  --primary:#67c8bd;
  --primary-strong:#8ad8d0;
  --accent:#e38c60;
  --sleep:#238d83;
  --discover:#c96f40;
  --all:#aab8c4;
  --all-soft:rgba(170,184,196,.14);
  --danger:#ef8d85;
  --shadow:0 12px 35px rgba(0,0,0,.34);
}
html[data-theme="dark"] body,
html[data-theme="dark"] .app-shell{background:var(--bg);color:var(--text)}
html[data-theme="dark"] .topbar,
html[data-theme="dark"] .bottom-nav{background:rgba(24,33,30,.97)}
html[data-theme="dark"] .global-search-results{background:rgba(24,33,30,.985);box-shadow:0 14px 36px rgba(0,0,0,.38)}
html[data-theme="dark"] .search-box,
html[data-theme="dark"] .search-result-icon,
html[data-theme="dark"] .search-result-btn:hover,
html[data-theme="dark"] .search-result-btn:focus-visible,
html[data-theme="dark"] .search-clear-btn:hover,
html[data-theme="dark"] .search-clear-btn:focus-visible{background:var(--surface-2)}
html[data-theme="dark"] .list-fab,
html[data-theme="dark"] .trip-map-back-btn,
html[data-theme="dark"] .around-search-zone-btn,
html[data-theme="dark"] .around-mode-status{background:rgba(24,33,30,.97);color:var(--text)}
html[data-theme="dark"] .sheet-head .js-close-sheet{background:var(--surface-2)}
html[data-theme="dark"] .field>span,
html[data-theme="dark"] fieldset legend{color:var(--muted)}
html[data-theme="dark"] .field input,
html[data-theme="dark"] .field select,
html[data-theme="dark"] .field textarea,
html[data-theme="dark"] .choice-card span,
html[data-theme="dark"] .menu-action,
html[data-theme="dark"] .trip-step-actions button,
html[data-theme="dark"] .trip-source-picker,
html[data-theme="dark"] .trip-spot-search,
html[data-theme="dark"] .trip-spot-choice,
html[data-theme="dark"] .trip-choice-view,
html[data-theme="dark"] .desktop-nav-btn,
html[data-theme="dark"] .collection-card,
html[data-theme="dark"] .import-mapping-row,
html[data-theme="dark"] .import-mapping-row select,
html[data-theme="dark"] .faq-item,
html[data-theme="dark"] .legend-group,
html[data-theme="dark"] .filter-segmented span,
html[data-theme="dark"] .proposed-collection-icon,
html[data-theme="dark"] .proposed-count-badge,
html[data-theme="dark"] .proposed-deactivate-btn,
html[data-theme="dark"] .collection-photo-policy button.is-disabled,
html[data-theme="dark"] .detail-section,
html[data-theme="dark"] .detail-contact-icon,
html[data-theme="dark"] .detail-memberships,
html[data-theme="dark"] .transfer-method,
html[data-theme="dark"] .trip-corridor-collapse-btn,
html[data-theme="dark"] .trip-corridor-radius button,
html[data-theme="dark"] .partner-card,
html[data-theme="dark"] .partner-code-box button,
html[data-theme="dark"] .language-select,
html[data-theme="dark"] .theme-select,
html[data-theme="dark"] .vehicle-height-control input,
html[data-theme="dark"] .quick-add-row input,
html[data-theme="dark"] .quick-paste-panel textarea{background:var(--surface);color:var(--text);border-color:var(--line)}
html[data-theme="dark"] .services-grid label,
html[data-theme="dark"] .filter-grid label,
html[data-theme="dark"] .address-search-block,
html[data-theme="dark"] .filter-section,
html[data-theme="dark"] .safety-tip,
html[data-theme="dark"] .import-choice-summary,
html[data-theme="dark"] .detail-contact-line,
html[data-theme="dark"] .detail-service{background:var(--surface-2)}
html[data-theme="dark"] .add-location-panel{background:linear-gradient(180deg,rgba(35,141,131,.16),rgba(24,33,30,.97))}
html[data-theme="dark"] .add-details-panel,
html[data-theme="dark"] .quick-add-panel{background:var(--surface)}
html[data-theme="dark"] .add-location-panel .secondary-btn,
html[data-theme="dark"] .add-location-panel .address-search-block{background:var(--surface-2)}
html[data-theme="dark"] .detail-observations{background:linear-gradient(180deg,var(--surface),#211d1a)}
html[data-theme="dark"] .detail-note{background:#28211d;color:var(--text)}
html[data-theme="dark"] .faq-item p{color:var(--muted)}
html[data-theme="dark"] .mini-tag{color:var(--muted)}
html[data-theme="dark"] #detailSheet,
html[data-theme="dark"] #collectionPlaceSheet{background:var(--bg)}
html[data-theme="dark"] #detailSheet .detail-section,
html[data-theme="dark"] #collectionPlaceSheet .detail-section{border-color:var(--line);box-shadow:0 7px 22px rgba(0,0,0,.2)}
html[data-theme="dark"] #detailSheet .detail-priority-actions,
html[data-theme="dark"] #collectionPlaceSheet .detail-priority-actions{border-color:var(--line);background:var(--surface-2)}
html[data-theme="dark"] .detail-coordinate-row code{background:var(--surface-2);color:var(--text)}
html[data-theme="dark"] .map-unavailable{background:linear-gradient(145deg,#18211e,#202b27)}
html[data-theme="dark"] .leaflet-control-zoom a{background:var(--surface)!important;color:var(--text)!important}
html[data-theme="dark"] .leaflet-control-attribution{background:rgba(24,33,30,.82)!important;color:var(--muted)!important}
html[data-theme="dark"] .leaflet-control-attribution a{color:var(--primary)!important}
/* Le QR doit rester blanc pour conserver un contraste de lecture maximal. */
html[data-theme="dark"] .qr-transfer-code{background:#fff}
html[data-theme="dark"] .basemap-fab,
html[data-theme="dark"] .map-expand-fab,
html[data-theme="dark"] .basemap-menu,
html[data-theme="dark"] .changelog-entry,
html[data-theme="dark"] .trip-endpoint-card,
html[data-theme="dark"] .collection-open-btn,
html[data-theme="dark"] .farm-products-check,
html[data-theme="dark"] .my-spots-list-search-count,
html[data-theme="dark"] .legend-fab,
html[data-theme="dark"] .active-filters-pill,
html[data-theme="dark"] .level-value-card,
html[data-theme="dark"] .app-shell.is-map-expanded .expanded-map-tools button,
html[data-theme="dark"] .app-shell.is-map-expanded.is-expanded-search-open>.search-row,
html[data-theme="dark"] .app-shell.is-map-expanded.is-expanded-search-open>.search-row .search-box,
html[data-theme="dark"] .mobile-filter-chip,
html[data-theme="dark"] .collection-color-choice,
html[data-theme="dark"] .spot-photo-unavailable button,
html[data-theme="dark"] .photo-viewer-head .icon-btn,
html[data-theme="dark"] .collections-import-btn .receive-btn-icon,
html[data-theme="dark"] .collections-map-fab,
html[data-theme="dark"] .detail-quick-actions .detail-quick-btn,
html[data-theme="dark"] .unified-import-card,
html[data-theme="dark"] .unified-import-btn .receive-btn-icon,
html[data-theme="dark"] .collections-sheet .lists-main-actions.lists-create-only .list-create-btn,
html[data-theme="dark"] .collections-sheet .proposed-collections-intro,
html[data-theme="dark"] .proposed-collection-card,
html[data-theme="dark"] .collections-sheet .proposed-toggle-chevron,
html[data-theme="dark"] .bulk-manage-panel,
html[data-theme="dark"] .bulk-select-row,
html[data-theme="dark"] .bulk-select-check,
html[data-theme="dark"] .trip-corridor-controls,
html[data-theme="dark"] .carnet-backup-nudge-icon,
html[data-theme="dark"] .collections-sheet .lists-count-badge,
html[data-theme="dark"] .collections-sheet .lists-toggle-chevron,
html[data-theme="dark"] .partners-menu-count,
html[data-theme="dark"] .detail-services-section .detail-service,
html[data-theme="dark"] .detail-hero .detail-pill:not(.favorite-pill),
html[data-theme="dark"] .detail-priority-actions .spot-action-btn:not(.is-primary),
html[data-theme="dark"] .detail-info-grid .detail-contact-line,
html[data-theme="dark"] .backup-choice-card,
html[data-theme="dark"] .backup-remote-card .backup-remote-option,
html[data-theme="dark"] .gas-chip,
html[data-theme="dark"] .gas-result-card,
html[data-theme="dark"] .collections-sheet .personal-spots-chevron,
html[data-theme="dark"] #shareChoiceSheet .transfer-method-featured .transfer-method-icon,
html[data-theme="dark"] .filter-keyword-input,
html[data-theme="dark"] .add-contact-fields .field input,
html[data-theme="dark"] .add-contact-fields .field textarea,
html[data-theme="dark"] .add-received-spot .add-import-shared-btn,
html[data-theme="dark"] .source-refresh-loading,
html[data-theme="dark"] .source-refresh-message,
html[data-theme="dark"] .source-refresh-card,
html[data-theme="dark"] .source-refresh-choice{background:var(--surface);color:var(--text);border-color:var(--line)}
html[data-theme="dark"]{color-scheme:dark}

/* V0.1.545 — correction ciblée des blocs Collection ajoutés après le thème sombre. */
html[data-theme="dark"] .collection-color-panel,
html[data-theme="dark"] .collection-photo-policy,
html[data-theme="dark"] .collection-subtype-panel {
  background: var(--surface);
  color: var(--text);
  border-color: var(--line);
}
html[data-theme="dark"] .collection-subtype-choice {
  background: var(--surface-2);
  color: var(--text);
  border-color: var(--line);
}
html[data-theme="dark"] .collection-photo-policy button.is-enabled {
  background: rgba(103,200,189,.10);
  border-color: rgba(103,200,189,.28);
  color: var(--primary);
}
html[data-theme="light"]{color-scheme:light}
html[data-theme="dark"] .detail-services-section{background:linear-gradient(180deg,rgba(35,141,131,.13),var(--surface) 72%)}
html[data-theme="dark"] .detail-coordinates,
html[data-theme="dark"] .backup-remote-option.is-unavailable,
html[data-theme="dark"] .backup-remote-card,
html[data-theme="dark"] .backup-remote-card.is-unavailable,
html[data-theme="dark"] .filter-context-intro,
html[data-theme="dark"] .filter-keyword-block,
html[data-theme="dark"] .add-contact-fields,
html[data-theme="dark"] .transfer-privacy-note,
html[data-theme="dark"] .transfer-code-card,
html[data-theme="dark"] #shareChoiceSheet .transfer-intro,
html[data-theme="dark"] #shareChoiceSheet #shareByFileBtn{background:var(--surface-2);border-color:var(--line);color:var(--text)}
html[data-theme="dark"] .detail-coordinates .detail-coordinate-row code,
html[data-theme="dark"] .gas-distance{background:var(--surface-2);color:var(--muted)}
html[data-theme="dark"] .gas-tool-intro,
html[data-theme="dark"] .gas-tool-source-note,
html[data-theme="dark"] .gas-tool-filter-block>strong,
html[data-theme="dark"] .gas-result-title strong,
html[data-theme="dark"] .gas-chip,
html[data-theme="dark"] .gas-gpl-price,
html[data-theme="dark"] .share-merge-note,
html[data-theme="dark"] .full-carnet-transfer-notice,
html[data-theme="dark"] .full-carnet-transfer-notice strong,
html[data-theme="dark"] .full-carnet-transfer-notice small{color:var(--text)}
html[data-theme="dark"] .leaflet-popup-content-wrapper,
html[data-theme="dark"] .leaflet-popup-tip,
html[data-theme="dark"] .maplibregl-popup-content{background:var(--surface);color:var(--text)}

/* V0.1.363 — Mode sombre : contraste ciblé sans uniformiser les couleurs métier. */
html[data-theme="dark"] .brand-copy strong,
html[data-theme="dark"] .brand-copy strong em { color:#fff; }
html[data-theme="dark"] .brand-copy span { color:#c2cec9; }
html[data-theme="dark"] .brand-mark-light { display:none; }
html[data-theme="dark"] .brand-mark-dark {
  display:block;
  filter:drop-shadow(0 2px 5px rgba(0,0,0,.32));
}

/* Mon carnet : remplacer les anciens fonds clairs codés en dur. */
html[data-theme="dark"] .collections-sheet .personal-collection-card.carnet-spots-block {
  border-color:rgba(103,200,189,.34);
  border-left-color:var(--primary);
  background:linear-gradient(180deg,rgba(35,141,131,.22),rgba(24,33,30,.98) 82%);
  box-shadow:0 5px 16px rgba(0,0,0,.18);
}
html[data-theme="dark"] .collections-sheet .carnet-lists-block {
  border-color:rgba(93,157,219,.28);
  background:linear-gradient(180deg,rgba(48,105,160,.18),rgba(24,33,30,.98));
}
html[data-theme="dark"] .collections-sheet .personal-spots-heading-copy strong,
html[data-theme="dark"] .collections-sheet .carnet-spots-block .personal-collection-open strong {
  color:#8ad8d0;
}
html[data-theme="dark"] .collections-sheet .personal-spots-heading-copy small { color:#b7c7c2; }
html[data-theme="dark"] .collections-sheet .personal-spots-chevron {
  background:#20302b;
  color:#8ad8d0;
  border-color:rgba(103,200,189,.34);
}
html[data-theme="dark"] .collections-sheet .lists-toggle-copy strong { color:#8fc8ff; }
html[data-theme="dark"] .collections-sheet .lists-toggle-copy small { color:#b8c9d8; }
html[data-theme="dark"] .collections-sheet .lists-count-badge,
html[data-theme="dark"] .collections-sheet .lists-toggle-chevron {
  background:#202c31;
  color:#9bd0ff;
  border-color:rgba(113,178,238,.30);
}
html[data-theme="dark"] .collections-sheet .personal-lists-body { border-top-color:rgba(113,178,238,.20); }
html[data-theme="dark"] .collections-sheet .lists-main-actions.lists-create-only .list-create-btn {
  background:#202c31;
  color:#edf4f1;
  border-color:rgba(113,178,238,.28);
}
html[data-theme="dark"] .collections-sheet .personal-collection-card:not(.carnet-spots-block) {
  background:rgba(103,200,189,.075);
  border-color:rgba(103,200,189,.22);
}

/* Collections proposées : conserver leur univers doré mais avec un fond réellement sombre. */
html[data-theme="dark"] .collections-sheet .proposed-collections-section {
  border-color:rgba(214,161,62,.30);
  background:linear-gradient(180deg,rgba(214,161,62,.11),rgba(24,33,30,.98));
}
html[data-theme="dark"] .collections-sheet .proposed-collections-section .proposed-collections-toggle { color:#f0cd84; }
html[data-theme="dark"] .collections-sheet .proposed-collections-section .proposed-toggle-copy small { color:#cfb77f; }
html[data-theme="dark"] .collections-sheet .proposed-collections-section .proposed-collections-intro {
  background:#242820;
  color:#d6d0bd;
  border-color:rgba(214,161,62,.20);
}
html[data-theme="dark"] .collections-sheet .proposed-collections-section .proposed-collection-card {
  background:linear-gradient(180deg,rgba(214,161,62,.10),var(--surface) 78%);
  border-color:rgba(214,161,62,.26);
}

/* Filtres rapides : l'état actif reprend franchement sa couleur de famille. */
html[data-theme="dark"] .quick-filters .chip[data-family="all"].is-active {
  border-color:var(--all); background:var(--all); color:#fff;
}
html[data-theme="dark"] .quick-filters .chip[data-family="sleep"].is-active {
  border-color:var(--sleep); background:var(--sleep); color:#fff;
}
html[data-theme="dark"] .quick-filters .chip[data-family="discover"].is-active {
  border-color:var(--discover); background:var(--discover); color:#fff;
}
html[data-theme="dark"] .quick-filters .chip[data-family="service"].is-active {
  border-color:var(--service); background:var(--service); color:#fff;
}
html[data-theme="dark"] .quick-filters .chip[data-favorite="true"].is-active {
  border-color:#e2c45c; background:#fff2bd; color:#735700;
}
html[data-theme="dark"] #filterSheet .filter-segmented input:checked + span {
  background:var(--filter-accent);
  border-color:var(--filter-accent);
  color:#fff;
}
html[data-theme="dark"] #filterSheet[data-filter-family="favorite"] .filter-segmented input:checked + span {
  background:#fff2bd;
  border-color:#e2c45c;
  color:#735700;
}

/* Nouveautés : les listes utilisaient encore un gris foncé prévu pour le thème clair. */
html[data-theme="dark"] .changelog-entry ul { color:#d6e0dc; }
html[data-theme="dark"] .changelog-entry.is-current { background:rgba(103,200,189,.09); }
html[data-theme="dark"] .about-box { background:var(--surface); color:var(--muted); }
html[data-theme="dark"] .last-backup { color:#c2cec9; }

/* Niveau camping-car : textes d'aide auparavant codés en gris sombre. */
html[data-theme="dark"] .level-intro,
html[data-theme="dark"] .level-hint,
html[data-theme="dark"] .level-calibration-help,
html[data-theme="dark"] .level-privacy-note { color:#c5d1cd; }
html[data-theme="dark"] .level-intro { background:rgba(93,157,219,.10); }
html[data-theme="dark"] .level-privacy-note { background:rgba(103,200,189,.08); }


/* V0.1.365 — Mode sombre : passe complète de contraste après test écran par écran.
   Principe : conserver l'identité claire telle quelle et corriger uniquement les composants
   dont les couleurs avaient été codées en dur pour un fond blanc. */
html[data-theme="dark"]{
  /* Les textes secondaires de la première passe étaient encore trop discrets. */
  --muted:#c2ceca;
}

/* Commandes principales : garder le vert historique foncé sous du texte blanc.
   --primary reste volontairement clair pour les liens/libellés sur fond sombre. */
html[data-theme="dark"] .primary-btn,
html[data-theme="dark"] .spot-action-btn.is-primary,
html[data-theme="dark"] .address-search-row button,
html[data-theme="dark"] .quick-add-row button {
  background:#0f766e;
  border-color:#0f766e;
  color:#fff;
}
html[data-theme="dark"] .primary-btn:hover,
html[data-theme="dark"] .spot-action-btn.is-primary:hover,
html[data-theme="dark"] .address-search-row button:hover,
html[data-theme="dark"] .quick-add-row button:hover {
  background:#0a5d57;
  border-color:#0a5d57;
  color:#fff;
}

/* Raccourci Mon carnet sur la carte : l'ancienne règle blanche était en !important. */
html[data-theme="dark"] .collections-map-fab {
  background:#18211e !important;
  color:#edf4f1 !important;
  border-color:#50605a !important;
}
html[data-theme="dark"] .collections-map-fab:hover,
html[data-theme="dark"] .collections-map-fab:focus-visible {
  background:#222d29 !important;
  color:#8ad8d0 !important;
  border-color:#60736c !important;
}

/* Plus / Mes données : titres et état de sauvegarde. */
html[data-theme="dark"] .menu-section-title { color:#c8d4d0; }
html[data-theme="dark"] .menu-action small { color:#c2ceca; }
html[data-theme="dark"] .backup-status-block {
  background:rgba(103,200,189,.065);
  border-color:rgba(103,200,189,.22);
}
html[data-theme="dark"] .backup-status-block .backup-status-row { color:#e5eeeb; }
html[data-theme="dark"] .backup-changes-row { color:#cbd6d2; }
html[data-theme="dark"] .backup-storage-row { color:#9fd8ca; }

/* Sauvegarde conseillée : conserver l'orange, mais sur une vraie carte sombre. */
html[data-theme="dark"] .menu-action.backup-due {
  border-color:rgba(236,187,83,.55);
  background:linear-gradient(135deg,rgba(125,88,18,.35),rgba(24,33,30,.98));
  box-shadow:0 0 0 1px rgba(236,187,83,.10) inset;
}
html[data-theme="dark"] .menu-action.backup-due > span {
  background:#3b3018;
  color:#ffd978;
}
html[data-theme="dark"] .menu-action.backup-due b { color:#ffe7a8; }
html[data-theme="dark"] .menu-action.backup-due #exportBtnHint { color:#f3cf78; }

/* Feuilles de sauvegarde/restauration. */
html[data-theme="dark"] .backup-choice-icon,
html[data-theme="dark"] .backup-choice-badge,
html[data-theme="dark"] .backup-choice-badge-muted {
  background:#26332f;
  color:#dfe9e5;
  border-color:#40524b;
}
html[data-theme="dark"] .backup-choice-note,
html[data-theme="dark"] .backup-remote-option small,
html[data-theme="dark"] .backup-unified-note { color:#c5d1cd; }
html[data-theme="dark"] .transfer-intro { color:#c9d4d0; }

/* Ajouter un spot : les numéros, sous-cartes et titres doivent rester francs. */
html[data-theme="dark"] #addSheet { background:var(--bg); }
html[data-theme="dark"] .add-section-number {
  background:#0f766e;
  color:#fff;
  box-shadow:0 6px 14px rgba(0,0,0,.26);
}
html[data-theme="dark"] .add-section-number.is-secondary {
  background:#27332f;
  color:#9addd5;
  border-color:#49615a;
}
html[data-theme="dark"] .place-name-field {
  background:linear-gradient(180deg,rgba(24,118,110,.20),rgba(24,33,30,.98));
  border-color:rgba(103,200,189,.32);
}
html[data-theme="dark"] .add-mini-heading {
  background:#222d29;
  border-color:#3c4d47;
}
html[data-theme="dark"] .add-mini-heading strong { color:#edf4f1; }
html[data-theme="dark"] .choice-card span,
html[data-theme="dark"] .favorite-choice,
html[data-theme="dark"] .single-spot-collection-target,
html[data-theme="dark"] .create-list-panel {
  background:var(--surface);
  color:var(--text);
  border-color:var(--line);
}
html[data-theme="dark"] .choice-card input:checked + span {
  background:rgba(15,118,110,.24);
  border-color:#67c8bd;
  color:#a7e2db;
}
html[data-theme="dark"] .favorite-toggle {
  background:#2a271b;
  color:#f3d98b;
  border-color:#6c6038;
}
html[data-theme="dark"] .favorite-toggle.is-favorite {
  background:#393119;
  color:#ffe39a;
  border-color:#82703b;
}
html[data-theme="dark"] .favorite-choice > .favorite-star-icon { color:#b7c5c0; }
html[data-theme="dark"] .favorite-choice input:checked + .favorite-star-icon { color:#f0d46f; }

/* Fiches de spot : informations, badges et raccourcis. */
html[data-theme="dark"] .collection-origin-banner > span,
html[data-theme="dark"] .detail-contact-icon,
html[data-theme="dark"] .detail-section-title > span { background:#26332f; }
html[data-theme="dark"] .detail-contact-line strong { color:#c2ceca; }
html[data-theme="dark"] .detail-contact-value small { color:#9edbd3; }
html[data-theme="dark"] .detail-phone-icon { color:#9edbd3; }
html[data-theme="dark"] .detail-membership-tag.is-map-hidden,
html[data-theme="dark"] .detail-membership-tag.is-personal.is-map-hidden {
  color:#b9c8c3 !important;
  border-color:#44564f;
  background:#202a27;
}

/* Mon carnet / listes : rendre les descriptions réellement lisibles. */
html[data-theme="dark"] .collections-sheet .collection-card-copy small,
html[data-theme="dark"] .collections-sheet .lists-section-help,
html[data-theme="dark"] .collections-sheet .personal-receive-help,
html[data-theme="dark"] .collections-sheet .proposed-toggle-copy small,
html[data-theme="dark"] .collections-sheet .proposed-collections-intro,
html[data-theme="dark"] .collections-sheet .personal-spots-heading-copy small,
html[data-theme="dark"] .collections-sheet .lists-toggle-copy small { color:#c5d1cd; }
html[data-theme="dark"] .collections-sheet .collection-visibility-btn,
html[data-theme="dark"] .collections-sheet .personal-collection-actions button {
  color:#e6eeeb;
}

/* FAQ : la description d'introduction et les paragraphes étaient encore trop gris. */
html[data-theme="dark"] .faq-intro,
html[data-theme="dark"] .faq-intro-hero { color:#d0dad6; }
html[data-theme="dark"] .faq-intro-hero > span { background:#26332f; }
html[data-theme="dark"] .faq-intro-hero p,
html[data-theme="dark"] .faq-item p {
  color:#d0dad6;
  font-size:13.5px;
}
html[data-theme="dark"] .faq-item summary { color:#f0f5f3; }
html[data-theme="dark"] .faq-section-label { color:#8ad8d0; }

/* Partenaires & bons plans : remplacer beige + marron par un doré lisible sur sombre. */
html[data-theme="dark"] .partner-menu-action {
  border-color:rgba(224,178,82,.38);
  background:linear-gradient(135deg,rgba(111,77,16,.25),rgba(24,33,30,.98));
}
html[data-theme="dark"] .partner-menu-action > span { background:#3a301d; }
html[data-theme="dark"] .partners-intro {
  background:#2e291d;
  color:#ead9ac;
  border:1px solid rgba(224,178,82,.22);
}
html[data-theme="dark"] .partners-menu-count {
  background:#342c1d;
  border-color:#6e5a2c;
  color:#f3d485;
}
html[data-theme="dark"] .partner-card:hover { background:#242b27; }
html[data-theme="dark"] .partner-card-media { background:#242a26; }
html[data-theme="dark"] .partner-card-copy em { color:#d6c08c; }
html[data-theme="dark"] .partner-card-arrow { color:#e2c26f; }
html[data-theme="dark"] .partner-badge {
  background:#352e1d;
  color:#f0d17b;
}
html[data-theme="dark"] .partner-detail-description { color:#d3ddd9; }
html[data-theme="dark"] .partner-validity {
  background:rgba(103,200,189,.10);
  color:#c5ddd7;
}
html[data-theme="dark"] .partner-code-box {
  background:#2e291d;
  border-color:#7a6332;
}
html[data-theme="dark"] .partner-code-box span { color:#e4c879; }
html[data-theme="dark"] .partner-code-box button {
  background:#252d29;
  color:#f1d78e;
  border-color:#6e5a2c;
}

/* Divers panneaux d'aide/sécurité héritant encore d'un fond blanc. */
html[data-theme="dark"] .safety-hero > span { background:#26332f; }
html[data-theme="dark"] .safety-tip { background:#202a27; }
html[data-theme="dark"] .install-required-note {
  background:#20302b;
  color:#d4e8e2;
  border-color:#41655b;
}

/* V0.1.365 — compléments de contraste pour états et transferts secondaires. */
html[data-theme="dark"] .collection-card-actions .collection-visibility-btn.is-hidden,
html[data-theme="dark"] .personal-collection-actions .collection-visibility-btn.is-hidden,
html[data-theme="dark"] .proposed-collection-actions .collection-visibility-btn.is-hidden {
  background:#222d29;
  color:#c5d1cd;
  border-color:#42534d;
}
html[data-theme="dark"] .collection-card-actions .collection-visibility-btn.is-visible,
html[data-theme="dark"] .personal-collection-actions .collection-visibility-btn.is-visible,
html[data-theme="dark"] .proposed-collection-actions .collection-visibility-btn.is-visible {
  background:rgba(15,118,110,.24);
  color:#a5e0d8;
  border-color:rgba(103,200,189,.42);
}
html[data-theme="dark"] .transfer-method small,
html[data-theme="dark"] .transfer-code-card small,
html[data-theme="dark"] .transfer-expiry,
html[data-theme="dark"] .transfer-privacy-note {
  color:#c4d0cc;
}
html[data-theme="dark"] .transfer-method-icon {
  background:#26332f;
  color:#8ad8d0;
}
html[data-theme="dark"] .transfer-separator { color:#b4c1bd; }
html[data-theme="dark"] .transfer-separator:before,
html[data-theme="dark"] .transfer-separator:after { background:#40504a; }

/* V0.1.365 — réception d'un spot : le cartouche bleu clair doit lui aussi suivre le thème sombre. */
html[data-theme="dark"] .add-received-spot {
  background:#1d2830;
  border-color:#435a72;
}
html[data-theme="dark"] .add-received-spot-label { color:#b9d7fb; }
html[data-theme="dark"] .add-received-spot .add-import-shared-btn {
  background:#222e36;
  color:#c6ddfa;
  border-color:#4a627a;
}
html[data-theme="dark"] .add-received-spot .add-import-shared-btn:hover,
html[data-theme="dark"] .add-received-spot .add-import-shared-btn:focus-visible {
  background:#293945;
  color:#e3efff;
  border-color:#6885a1;
}

/* V0.1.365 — compteur Mes spots : éviter le blanc sur le vert clair du thème sombre. */
html[data-theme="dark"] .collections-sheet .carnet-spots-block .personal-count-badge {
  background:#0f766e;
  color:#fff;
  border-color:#0f766e;
}

/* V0.1.365 — navigation et filtres : couleurs de famille conservées, mais assez foncées sous texte blanc. */
html[data-theme="dark"] .nav-item.is-active,
html[data-theme="dark"] .nav-add {
  color:#8ad8d0;
}
html[data-theme="dark"] .quick-filters .chip[data-family="all"].is-active,
html[data-theme="dark"] #mobileQuickFilters .mobile-filter-chip[data-mobile-family="all"].is-active {
  border-color:#475569;
  background:#475569;
  color:#fff;
}
html[data-theme="dark"] .quick-filters .chip[data-family="sleep"].is-active,
html[data-theme="dark"] #mobileQuickFilters .mobile-filter-chip[data-mobile-family="sleep"].is-active {
  border-color:#0f766e;
  background:#0f766e;
  color:#fff;
}
html[data-theme="dark"] .quick-filters .chip[data-family="discover"].is-active,
html[data-theme="dark"] #mobileQuickFilters .mobile-filter-chip[data-mobile-family="discover"].is-active {
  border-color:#a94f28;
  background:#a94f28;
  color:#fff;
}
html[data-theme="dark"] .quick-filters .chip[data-family="service"].is-active,
html[data-theme="dark"] #mobileQuickFilters .mobile-filter-chip[data-mobile-family="service"].is-active {
  border-color:#65437d;
  background:#65437d;
  color:#fff;
}
html[data-theme="dark"] #filterSheet { --filter-accent:#475569; --filter-accent-soft:rgba(71,85,105,.24); }
html[data-theme="dark"] #filterSheet[data-filter-family="sleep"] { --filter-accent:#0f766e; --filter-accent-soft:rgba(15,118,110,.24); }
html[data-theme="dark"] #filterSheet[data-filter-family="discover"] { --filter-accent:#a94f28; --filter-accent-soft:rgba(169,79,40,.24); }
html[data-theme="dark"] #filterSheet[data-filter-family="service"] { --filter-accent:#65437d; --filter-accent-soft:rgba(101,67,125,.24); }


/* V0.1.365 — Mode sombre : finitions ciblées après retour utilisateur.
   Ne touche pas au mode clair ni aux couleurs actives de navigation. */
html[data-theme="dark"] .carnet-backup-nudge {
  border-color:rgba(224,178,82,.48);
  background:linear-gradient(135deg,rgba(190,139,35,.17),rgba(24,33,30,.98));
  box-shadow:0 5px 16px rgba(0,0,0,.18);
}
html[data-theme="dark"] .carnet-backup-nudge-icon {
  background:#302c20;
  color:#ffe29a;
  box-shadow:0 0 0 1px rgba(224,178,82,.26) inset;
}
html[data-theme="dark"] .carnet-backup-nudge-copy strong {
  color:#ffe8ad;
}
html[data-theme="dark"] .carnet-backup-nudge-copy small {
  color:#d8c99e;
}
html[data-theme="dark"] .carnet-backup-nudge .secondary-btn {
  border-color:#9b742a;
  background:#8b671f;
  color:#fff8e7;
}

/* Les descriptions longues des Collections avaient encore la couleur du thème clair. */
html[data-theme="dark"] .collections-sheet .proposed-collection-card > p {
  color:#d7dfdc;
  font-size:12.5px;
  line-height:1.48;
}
html[data-theme="dark"] .collections-sheet .proposed-collection-copy small {
  color:#c9d3cf;
}

/* Icônes du menu et de Paramètres : moins de blanc sur vert, plus cohérent avec le sombre. */
html[data-theme="dark"] .menu-action:not(.backup-due):not(.partner-menu-action) > span {
  background:#26322e;
  color:#9edbd3;
  box-shadow:0 0 0 1px rgba(158,219,211,.10) inset;
}
html[data-theme="dark"] .settings-sheet .settings-menu-action > span {
  background:#26322e;
  color:#a8ddd6;
}


/* V0.1.366 — Mode sombre : cohérence des derniers composants secondaires. */
/* Actualiser + FAQ avaient des règles historiques par ID plus spécifiques que le thème sombre. */
html[data-theme="dark"] #refreshMenuBtn > span,
html[data-theme="dark"] #faqBtn > span {
  background:#26322e;
  color:#9edbd3;
  box-shadow:0 0 0 1px rgba(158,219,211,.10) inset;
}
html[data-theme="dark"] #refreshMenuBtn .menu-svg-icon,
html[data-theme="dark"] #faqBtn .menu-svg-icon { color:#9edbd3; }

/* Mes spots : recherche et informations compactes plus nettes sans agrandir le listing. */
html[data-theme="dark"] .my-spots-list-search {
  background:#202a27;
  border-color:#42534d;
}
html[data-theme="dark"] .my-spots-list-search-icon {
  color:#a8e4dc;
  font-size:22px;
  font-weight:800;
}
html[data-theme="dark"] .my-spots-list-search input::placeholder { color:#9fada8; opacity:1; }
html[data-theme="dark"] .place-card-copy > small {
  color:#dce5e2;
  font-weight:650;
}
html[data-theme="dark"] .place-card-copy .mini-tag:not(.service-icons) {
  background:#2b3833;
  color:#edf4f1;
  border:1px solid #52645d;
}
html[data-theme="dark"] .place-card-copy .mini-tag.animal-tag {
  background:#263a34;
  color:#c9eee6;
  border-color:#4e7168;
}
html[data-theme="dark"] .place-card-copy .mini-tag.animal-tag.is-refused {
  background:#3a2928;
  color:#f2c7c3;
  border-color:#74504d;
}
html[data-theme="dark"] .place-card-copy .mini-tag.tariff-tag.is-free {
  background:#26392d;
  color:#d8f0dc;
  border-color:#50705a;
}
html[data-theme="dark"] .place-card-copy .mini-tag.tariff-tag.is-paid {
  background:#3a3324;
  color:#f3dfad;
  border-color:#70613c;
}

/* Toutes les petites flèches Retour utilisent enfin le même langage sombre. */
html[data-theme="dark"] .sheet-back-btn,
html[data-theme="dark"] .detail-back-btn {
  background:#26322e;
  color:#e7f4f0;
  border-color:#4b5e57;
  box-shadow:none;
}
html[data-theme="dark"] .sheet-back-btn:hover,
html[data-theme="dark"] .sheet-back-btn:focus-visible,
html[data-theme="dark"] .detail-back-btn:hover,
html[data-theme="dark"] .detail-back-btn:focus-visible {
  background:#31403a;
  color:#fff;
  border-color:#60756d;
}


/* V0.1.368 — Mode sombre : finitions Voyage, listings et recherche globale. */
/* Listing Mes spots : la ligne catégorie/statut doit rester secondaire au titre. */
html[data-theme="dark"] .place-card-copy > small {
  color:#aebdb8;
  font-weight:650;
}

/* Recherche globale : les pictogrammes SVG noirs du thème clair deviennent clairs sur fond sombre. */
html[data-theme="dark"] .search-result-icon {
  color:#dce8e4;
  background:#26322e;
}
html[data-theme="dark"] .search-result-icon .subtype-svg {
  filter:brightness(0) invert(1);
  opacity:.90;
}

/* Voyage : A doit rester lisible comme B sur fond sombre. */
html[data-theme="dark"] .trip-endpoint-card.departure .trip-endpoint-badge {
  background:#0f766e;
  color:#fff;
}
html[data-theme="dark"] .trip-endpoint-card.arrival .trip-endpoint-badge {
  color:#fff;
}

/* Voyage > Ajouter une étape : les deux panneaux avaient encore leur fond clair historique. */
html[data-theme="dark"] .trip-step-section {
  background:var(--surface-2);
  border-color:var(--line);
  color:var(--text);
}
html[data-theme="dark"] .trip-step-section-head strong { color:var(--text); }
html[data-theme="dark"] .trip-step-section-head span,
html[data-theme="dark"] .trip-source-hint,
html[data-theme="dark"] .trip-spot-choice small,
html[data-theme="dark"] .trip-choice-empty { color:var(--muted); }
html[data-theme="dark"] .trip-step-divider span { background:var(--surface); color:var(--muted); }
html[data-theme="dark"] .trip-step-divider::before { border-color:var(--line); }
html[data-theme="dark"] .trip-step-section .address-search-row input,
html[data-theme="dark"] .trip-step-section .address-result {
  background:var(--surface);
  color:var(--text);
  border-color:var(--line);
}
html[data-theme="dark"] .trip-step-section .address-search-row input::placeholder,
html[data-theme="dark"] .trip-spot-search input::placeholder {
  color:#9fada8;
  opacity:1;
}
html[data-theme="dark"] .trip-source-picker > span,
html[data-theme="dark"] .trip-spot-search > span { color:#a8ddd6; }
html[data-theme="dark"] .trip-spot-choice { box-shadow:none; }
html[data-theme="dark"] .trip-choice-add {
  background:#0f766e;
  border-color:#0f766e !important;
  color:#fff;
}

/* V0.1.554 — Voyage : le sélecteur de source doit rester sombre jusque dans le menu natif. */
html[data-theme="dark"] #tripSpotSource {
  color-scheme: dark;
  background-color: var(--surface);
  color: var(--text);
}
html[data-theme="dark"] #tripSpotSource option {
  background-color: #18211e;
  color: #edf4f1;
}
html[data-theme="dark"] #tripSpotSource optgroup {
  background-color: #18211e;
  color: #c2ceca;
}
html[data-theme="dark"] #tripSpotSource option:checked {
  background-color: #222d29;
  color: #edf4f1;
}
html[data-theme="dark"] .trip-choice-add.is-added,
html[data-theme="dark"] .trip-choice-add:disabled {
  background:#33443e;
  border-color:#52645d !important;
  color:#cbd7d3;
}

/* V0.1.368 — Listings : politique animaux plus identifiable aussi en thème clair. */
.place-card-copy .mini-tag.animal-tag {
  background:#e8f5ef;
  color:#245f4d;
  border:1px solid #b8ddce;
  font-weight:800;
}
.place-card-copy .mini-tag.animal-tag.is-refused {
  background:#f9eceb;
  color:#8a413c;
  border-color:#e8c4c1;
}
/* Le thème sombre conserve sa palette plus profonde. */
html[data-theme="dark"] .place-card-copy .mini-tag.animal-tag {
  background:#263a34;
  color:#d8f4ed;
  border-color:#4e7168;
}
html[data-theme="dark"] .place-card-copy .mini-tag.animal-tag.is-refused {
  background:#3a2928;
  color:#f2c7c3;
  border-color:#74504d;
}

/* V0.1.368 — derniers raffinements : animaux compacts + action Voyage distincte. */
/* Dans les petits listings, la politique animaux devient un pictogramme compact,
   centré comme les autres équipements. Le texte complet reste dans la fiche. */
.place-card-copy .mini-tag.animal-tag.animal-icon-tag {
  width:32px;
  height:30px;
  padding:0;
  display:inline-grid;
  place-items:center;
  flex:0 0 32px;
  background:#2f7d63;
  color:#fff;
  border:1px solid #286b56;
  line-height:1;
}
.place-card-copy .mini-tag.animal-tag.animal-icon-tag.is-refused {
  background:#a34e47;
  color:#fff;
  border-color:#8d433d;
}
.animal-mini-icon {
  width:20px;
  height:20px;
  display:block;
  fill:currentColor;
  color:inherit;
}
html[data-theme="dark"] .place-card-copy .mini-tag.animal-tag.animal-icon-tag {
  background:#347d69;
  color:#fff;
  border-color:#5ca58f;
}
html[data-theme="dark"] .place-card-copy .mini-tag.animal-tag.animal-icon-tag.is-refused {
  background:#8c4742;
  color:#fff;
  border-color:#b96d66;
}

/* Ajouter à ce voyage est une action métier distincte du vert général :
   on conserve le bleu du thème clair aussi en mode sombre. */
html[data-theme="dark"] .trip-context-add-btn:not(.is-remove) {
  background:#2475d0;
  border-color:#2475d0;
  color:#fff;
  box-shadow:0 5px 16px rgba(36,117,208,.22);
}
html[data-theme="dark"] .trip-context-add-btn:not(.is-remove):hover,
html[data-theme="dark"] .trip-context-add-btn:not(.is-remove):focus-visible {
  background:#2f83df;
  border-color:#2f83df;
  color:#fff;
}



/* V0.1.369 — Listings : politique animaux explicite, compacte et centrée.
   La silhouette expérimentale V0.1.368 est abandonnée : à côté du tarif,
   le libellé Animaux + état reste immédiatement compréhensible. */
.place-card-copy .mini-tag.animal-tag {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:30px;
  padding:5px 9px;
  line-height:1;
  text-align:center;
  font-weight:800;
  letter-spacing:0;
}

/* V0.1.370 — Mode sombre : états actifs Gaz & GPL et carte plein écran. */
html[data-theme="dark"] .gas-chip.is-active {
  background:#0f766e;
  color:#fff;
  border-color:#59b8ad;
  box-shadow:0 0 0 2px rgba(89,184,173,.18);
}
html[data-theme="dark"] .map-expand-fab[aria-pressed="true"] {
  background:#0f766e;
  color:#fff;
  border-color:#59b8ad;
  box-shadow:0 4px 14px rgba(15,118,110,.30), 0 0 0 2px rgba(89,184,173,.16);
}


/* V0.1.377 — Mes spots : raccourci Coups de cœur + cases ménage fiables en sombre. */
.my-spots-local-filters {
  display:flex; align-items:center; gap:8px; margin:-5px 0 11px;
}
.my-spots-local-filters[hidden] { display:none !important; }
.my-spots-favorite-filter {
  min-height:34px; padding:6px 11px; border:1px solid #e2c45c; border-radius:999px;
  background:#fffaf0; color:#735700; font:inherit; font-size:12px; font-weight:850; cursor:pointer;
}
.my-spots-favorite-filter:hover,
.my-spots-favorite-filter:focus-visible { background:#fff4cf; }
.my-spots-favorite-filter.is-active { background:#fff2bd; border-color:#d3ad2f; color:#684d00; box-shadow:0 0 0 2px rgba(211,173,47,.12); }
.my-spots-detailed-filter {
  min-height:34px; padding:6px 11px; display:inline-flex; align-items:center; gap:6px; border:1px solid rgba(15,107,99,.28); border-radius:999px;
  background:#f5fbf9; color:var(--primary); font:inherit; font-size:12px; font-weight:850; cursor:pointer;
}
.my-spots-detailed-filter:hover,
.my-spots-detailed-filter:focus-visible { background:#eaf6f2; }
.my-spots-detailed-filter.has-active-filters { background:rgba(15,107,99,.11); border-color:rgba(15,107,99,.42); box-shadow:0 0 0 2px rgba(15,107,99,.08); }
.my-spots-detailed-filter-icon { width:15px; height:15px; fill:currentColor; flex:0 0 auto; }

html[data-theme="dark"] .my-spots-favorite-filter {
  background:#252a25; border-color:#8a7432; color:#e8d37b;
}
html[data-theme="dark"] .my-spots-favorite-filter.is-active {
  background:#5b4a14; border-color:#d5b84a; color:#fff0a8;
}
html[data-theme="dark"] .my-spots-detailed-filter {
  background:#1f2d29; border-color:#46645c; color:#8fd0c3;
}
html[data-theme="dark"] .my-spots-detailed-filter.has-active-filters {
  background:#214139; border-color:#5c9789; color:#b7e5db;
}
/* Une case vide doit rester réellement vide : la règle sombre générale ne doit pas révéler le ✓. */
html[data-theme="dark"] .bulk-select-check {
  background:#202925; border-color:#71817b; color:transparent !important; box-shadow:inset 0 0 0 1px rgba(255,255,255,.05);
}
html[data-theme="dark"] .bulk-select-input:checked + .bulk-select-check,
html[data-theme="dark"] .bulk-select-row.is-selected .bulk-select-check {
  background:var(--primary); border-color:var(--primary); color:#fff !important; box-shadow:0 0 0 3px rgba(35,141,131,.16);
}
html[data-theme="dark"] .bulk-manage-launch-bottom .bulk-manage-launch-btn {
  background:rgba(35,141,131,.13); border-color:rgba(103,200,189,.34); color:#d8e5e1;
}
html[data-theme="dark"] .bulk-manage-launch-bottom .bulk-manage-launch-btn:hover,
html[data-theme="dark"] .bulk-manage-launch-bottom .bulk-manage-launch-btn:focus-visible {
  background:rgba(35,141,131,.20); border-color:rgba(103,200,189,.52);
}
html[data-theme="dark"] .bulk-manage-launch-icon { background:#203b35; color:#8ad8d0; }

/* V0.1.377 — Voyage : états actifs lisibles en mode sombre. */
html[data-theme="dark"] .trip-corridor-main-btn {
  border-color:#2f8d82;
  background:#164a45;
  color:#f3fffc;
  box-shadow:0 0 0 1px rgba(158,219,211,.08) inset, 0 5px 14px rgba(0,0,0,.16);
}
html[data-theme="dark"] .trip-corridor-main-btn:hover,
html[data-theme="dark"] .trip-corridor-main-btn:focus-visible {
  background:#1b5a53;
  border-color:#55aaa0;
}
html[data-theme="dark"] .trip-corridor-radius button.is-active {
  background:#0f766e;
  border-color:#2ca095;
  color:#fff;
  box-shadow:0 0 0 1px rgba(255,255,255,.06) inset;
}
html[data-theme="dark"] .trip-corridor-radius .trip-corridor-fit.is-active {
  color:#fff;
}

/* V0.1.377 — Voyage : compteur et rayon actif mieux différenciés en sombre. */
html[data-theme="dark"] .trip-corridor-count {
  background:#203d39;
  color:#bfe9e3;
  border:1px solid #355e58;
  box-shadow:0 1px 0 rgba(255,255,255,.03) inset;
}
html[data-theme="dark"] .trip-corridor-radius button.is-active {
  background:#155c56;
  border-color:#3b9188;
  color:#fff;
  box-shadow:0 0 0 1px rgba(255,255,255,.05) inset;
}

/* V0.1.377 — Partage : pictogramme Fichier vectoriel stable + logos de Collections lisibles en sombre. */
.transfer-file-glyph{
  width:25px;
  height:25px;
  display:block;
}
.transfer-file-glyph path{
  fill:none;
  stroke:currentColor;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
}
html[data-theme="dark"] #shareChoiceSheet #shareByFileBtn .transfer-method-icon{
  background:#202925;
  color:#f2f7f5;
  border:1px solid #465650;
}
/* Les logos de Collections sont souvent dessinés en vert sombre : garder une petite tuile claire
   évite de devoir créer une variante de chaque logo pour le thème sombre. */
html[data-theme="dark"] .proposed-collection-icon{
  background:#f3f7f5 !important;
  border-color:#708078 !important;
}

/* V0.1.405 — fiche publique randonnée : voir/télécharger la trace + retour propre. */
.route-viewer-overlay { position: fixed; inset: 0; z-index: 1220; background: rgba(18,27,23,.58); display: grid; place-items: center; padding: 18px; }
.route-viewer-overlay[hidden] { display: none !important; }
.route-viewer-panel { width: min(920px, 100%); height: min(86dvh, 760px); background: var(--surface); border-radius: 24px; box-shadow: 0 24px 70px rgba(0,0,0,.28); padding: 15px; display: grid; grid-template-rows: auto auto minmax(0,1fr); overflow: hidden; }
.route-viewer-head { margin-bottom: 6px; display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:10px; }
.route-viewer-back-btn { min-height:40px; white-space:nowrap; }
.route-viewer-note { margin: 0 0 10px; color: var(--muted); font-size: 12px; line-height: 1.45; }
.route-viewer-frame { width: 100%; height: 100%; min-height: 320px; border: 1px solid var(--line); border-radius: 17px; background: var(--surface-2); }
.detail-route-trace { display: grid; gap: 9px; }
.detail-route-trace-copy { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.45; }
.detail-route-trace-actions { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:8px; }
.detail-route-trace .route-trace-btn, .detail-route-trace .route-trace-download-btn, .detail-route-trace .route-trace-local-btn { width:100%; min-height:44px; }
@media (max-width: 680px) { .route-viewer-overlay { padding: 0; place-items: stretch; } .route-viewer-panel { width: 100%; height: 100dvh; max-height: none; border-radius: 0; padding: 12px; } .route-viewer-frame { min-height: 0; border-radius: 14px; } .route-viewer-head { grid-template-columns:auto minmax(0,1fr); } .route-viewer-head > .icon-btn { display:none; } .detail-route-trace-actions { grid-template-columns:1fr; } }

/* V0.1.417 — Tracés externes : Voir le tracé n'apparaît que si la source autorise
   une lecture directe depuis le navigateur. Le téléchargement reste direct source. */
.detail-route-trace .route-trace-btn[hidden] { display:none !important; }
.detail-route-trace-actions.is-download-only { grid-template-columns:1fr; }

/* V0.1.418 — repli local : si la source bloque la lecture directe, le fichier téléchargé peut être choisi et visualisé localement. */
.detail-route-trace .route-trace-local-btn[hidden] { display:none !important; }

/* V0.1.425 — attribution DATAtourisme : information indicative, source producteur séparée. */
.detail-datatourisme-notice{margin:8px 0 6px;padding:9px 11px;border:1px solid var(--line);border-radius:11px;background:var(--surface-2);color:var(--muted);font-size:11.5px;line-height:1.45}
.detail-datatourisme-source{margin-top:0}

/* V0.1.484 — traduction à la demande des observations de Collection. */
.detail-translate-btn{
  margin-left:auto;
  min-height:32px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  padding:6px 10px;
  border:1px solid rgba(15,118,110,.24);
  border-radius:999px;
  background:rgba(15,118,110,.07);
  color:var(--primary);
  font:inherit;
  font-size:12px;
  font-weight:800;
  line-height:1;
  cursor:pointer;
  white-space:nowrap;
}
.detail-translate-btn:hover{background:rgba(15,118,110,.12)}
.detail-translate-btn:focus-visible{outline:2px solid rgba(15,118,110,.28);outline-offset:2px}
html[data-theme="dark"] .detail-translate-btn{background:rgba(74,222,128,.08);border-color:rgba(74,222,128,.22);color:#86efac}
@media (max-width:420px){.detail-translate-btn{padding:6px 8px;font-size:11.5px}}

/* V0.1.485 — rubriques locales d'une Collection proposée */
.collection-subtype-panel{margin-top:12px;padding:13px;border:1px solid var(--line);border-radius:14px;background:var(--surface,#fff)}
.collection-subtype-copy strong{display:block;font-size:13px}.collection-subtype-copy small{display:block;color:var(--muted);font-size:11px;margin-top:3px}
.collection-subtype-choices{display:grid;gap:7px;margin-top:10px}.collection-subtype-choice{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:9px;align-items:center;padding:9px 10px;border:1px solid var(--line);border-radius:11px;background:var(--panel,#fff);cursor:pointer}.collection-subtype-choice>input{position:absolute;opacity:0;pointer-events:none}.collection-subtype-choice-copy strong{display:block;font-size:12px}.collection-subtype-choice-copy small{display:block;color:var(--muted);font-size:10px;margin-top:1px}.collection-subtype-choice input:not(:checked)~.collection-switch{opacity:.55}.collection-subtype-choice input:not(:checked)~.collection-switch>span{transform:translateX(0)}.collection-subtype-choice input:checked~.collection-switch{background:var(--primary)}.collection-subtype-choice input:checked~.collection-switch>span{transform:translateX(13px)}

/* V0.1.493 — téléchargement réel par rubrique pour les Collections proposées. */
.proposed-download-groups{margin:9px 0 10px;border:1px solid var(--line);border-radius:13px;background:var(--panel,#fff);overflow:hidden}
.proposed-download-groups>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 11px}
.proposed-download-groups>summary::-webkit-details-marker{display:none}
.proposed-download-groups>summary span{min-width:0}.proposed-download-groups>summary strong{display:block;font-size:11.5px}.proposed-download-groups>summary small{display:block;margin-top:2px;color:var(--muted);font-size:9.5px;line-height:1.3}.proposed-download-groups>summary b{flex:0 0 auto;font-size:10px;font-weight:800;color:var(--primary)}
.proposed-download-group-list{display:grid;gap:6px;padding:0 9px 9px}
.proposed-download-group-choice{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:center;padding:8px 9px;border:1px solid var(--line);border-radius:10px;background:var(--surface,#fff);cursor:pointer}
.proposed-download-group-choice input{width:17px;height:17px;accent-color:var(--primary)}
.proposed-download-group-choice strong{display:block;font-size:11px}.proposed-download-group-choice small{display:block;margin-top:1px;color:var(--muted);font-size:9.5px}
.proposed-download-group-total{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 9px;border-top:1px solid var(--line);font-size:9.5px;color:var(--muted)}
.proposed-download-group-total .ghost-btn{min-height:31px;padding:6px 9px;font-size:9.5px}
html[data-theme="dark"] .proposed-download-groups,html[data-theme="dark"] .proposed-download-group-choice{background:var(--panel,#18211f)}

/* V0.1.506 — progression des Collections téléchargées en paquets */
.proposed-download-progress{display:grid;gap:5px;margin:8px 1px 9px}
.proposed-download-progress-track{height:7px;overflow:hidden;border-radius:999px;background:rgba(15,107,99,.12)}
.proposed-download-progress-track>i{display:block;height:100%;border-radius:inherit;background:var(--primary);transition:width .18s ease}
.proposed-download-progress small{font-size:9.5px;color:var(--muted);font-weight:700;text-align:right}
html[data-theme="dark"] .proposed-download-progress-track{background:rgba(255,255,255,.14)}

/* V0.1.524 — Mon carnet plus lisible + accès rapide au thème en carte agrandie. */
.expanded-theme-glyph { font-size: 23px; line-height: 1; font-weight: 800; transform: translateY(-1px); }

.collections-sheet .receive-share-card {
  border-color: rgba(15,107,99,.28);
  background: linear-gradient(180deg, rgba(15,118,110,.075), #fff 88%);
}
.collections-sheet .receive-share-card .unified-import-copy strong {
  color: var(--primary-strong);
  font-size: 16px;
}
.collections-sheet .receive-share-card .unified-import-copy small {
  font-size: 11.5px;
  line-height: 1.48;
}
.collections-sheet .unified-import-file-btn {
  border-color: rgba(36,117,208,.30);
  background: #f3f8ff;
  color: #245f9e;
  font-weight: 850;
}
.collections-sheet .unified-import-file-btn .receive-btn-icon {
  background: rgba(36,117,208,.11);
  color: #245f9e;
}

.collections-sheet .lists-count-badge {
  min-width: 31px;
  height: 31px;
  padding: 0 8px;
  background: #245f9e;
  color: #fff;
  border-color: #245f9e;
  font-size: 13px;
  box-shadow: 0 2px 8px rgba(36,95,158,.18);
}
.collections-sheet .proposed-count-badge {
  min-width: 31px;
  height: 31px;
  padding: 0 8px;
  background: #a87420;
  color: #fff;
  border-color: #a87420;
  font-size: 13px;
  box-shadow: 0 2px 8px rgba(168,116,32,.18);
}
.collections-sheet .proposed-collections-section .proposed-collection-card {
  background: #fff;
  border-color: rgba(177,123,33,.24);
  box-shadow: 0 4px 13px rgba(105,76,29,.055);
}
.collections-sheet .proposed-collections-section .proposed-title-line strong { color: #5f491d; }
.collections-sheet .proposed-collections-section .proposed-collection-copy small { color: #74613b; font-size: 11px; }
.collections-sheet .proposed-collections-section .proposed-collection-card > p { color: #514a3c; font-size: 11.8px; }

html[data-theme="dark"] .collections-sheet .unified-import-file-btn {
  background:#202c31;
  color:#9bd0ff;
  border-color:rgba(113,178,238,.30);
}
html[data-theme="dark"] .collections-sheet .unified-import-file-btn .receive-btn-icon {
  background:rgba(113,178,238,.12);
  color:#9bd0ff;
}
html[data-theme="dark"] .collections-sheet .lists-count-badge {
  background:#2b74b6;
  color:#fff;
  border-color:#2b74b6;
}
html[data-theme="dark"] .collections-sheet .proposed-count-badge {
  background:#9a6a1e;
  color:#fff;
  border-color:#9a6a1e;
}
html[data-theme="dark"] .collections-sheet .proposed-collections-section .proposed-title-line strong { color:#f0cd84; }
html[data-theme="dark"] .collections-sheet .proposed-collections-section .proposed-collection-copy small { color:#cfb77f; }

/* V0.1.530 — signalement discret d'une fiche de Collection. */
.collection-report-btn { width: 100%; margin-top: 4px; justify-content: center; color: var(--muted); border-style: dashed; }
.collection-report-btn span { font-size: 12.5px; }
.collection-report-btn:hover, .collection-report-btn:focus-visible { color: var(--text); border-color: var(--primary); }
.report-collection-sheet { max-width: 620px; }
.report-collection-summary { display: grid; grid-template-columns: 42px minmax(0,1fr); gap: 10px; align-items: center; padding: 11px 12px; margin-bottom: 12px; border: 1px solid var(--line); border-radius: 15px; background: var(--surface-2); }
.report-collection-summary > span { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 12px; background: var(--surface); font-size: 19px; }
.report-collection-summary > div { min-width: 0; display: grid; gap: 2px; }
.report-collection-summary strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.report-collection-summary small { color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.report-collection-intro { margin: 0 0 13px; color: var(--muted); line-height: 1.45; }
.report-collection-sheet .field { margin-bottom: 12px; }
.report-collection-sheet textarea { min-height: 116px; }
.report-collection-privacy { margin: 0 0 13px; padding: 10px 11px; border-radius: 12px; background: rgba(15,107,99,.07); color: var(--muted); font-size: 12px; line-height: 1.4; }
.report-collection-status { margin: 0 0 13px; padding: 11px 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface-2); font-size: 13px; font-weight: 700; line-height: 1.4; }
.report-collection-status[hidden] { display: none !important; }
.report-collection-status[data-kind="success"] { margin: 8px 0 16px; padding: 20px 16px; border: 2px solid rgba(15,118,110,.42); background: rgba(15,118,110,.12); color: var(--primary-strong); font-size: 16px; font-weight: 900; line-height: 1.45; text-align: center; box-shadow: 0 8px 24px rgba(15,118,110,.12); }
.report-collection-sheet.is-sent .report-collection-intro,
.report-collection-sheet.is-sent .field,
.report-collection-sheet.is-sent .report-collection-privacy { display: none !important; }
.report-collection-sheet.is-sent .report-collection-summary { margin-bottom: 18px; }
.report-collection-status[data-kind="error"] { border-color: rgba(181,72,63,.24); background: rgba(181,72,63,.08); color: var(--danger); }
#reportCollectionSubmitBtn { width: 100%; min-height: 46px; }

/* V0.1.539 — proposition publique intégrée à la PWA */
.collection-proposal-public-btn {
  margin-top: -4px;
  margin-bottom: 12px;
  border-color: rgba(15,107,99,.24);
  background: rgba(15,107,99,.07);
  color: var(--primary);
}
.collection-proposal-sheet {
  height: min(94dvh, 900px);
  max-height: min(94dvh, 900px);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.collection-proposal-sheet .sheet-head,
.collection-proposal-sheet .collection-detail-back-btn { flex: 0 0 auto; }
.collection-proposal-frame-wrap {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface);
}
.collection-proposal-frame-wrap iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  background: var(--surface);
}
@media (max-width: 620px) {
  .collection-proposal-sheet { width: min(100vw - 12px, 720px); height: 96dvh; max-height: 96dvh; }
  .collection-proposal-frame-wrap { border-radius: 12px; }
}


/* V0.1.547 — Mode sombre : Installer cohérent + raccourci de thème existant visible aussi sur PC. */
html[data-theme="dark"] .install-btn {
  background:var(--surface-2);
  color:var(--primary);
}
html[data-theme="dark"] #installMenuBtn {
  background:var(--surface);
  color:var(--text);
  border-color:var(--line);
}
html[data-theme="dark"] #installMenuBtn > span {
  background:#26322e;
  color:#9edbd3;
  box-shadow:0 0 0 1px rgba(158,219,211,.10) inset;
}

/* V0.1.548 — Sur PC, le raccourci de thème reprend l’alignement du zoom Leaflet.
   Le comportement mobile/PWA reste strictement inchangé. */
@media (min-width: 860px) {
  .map-wrap .expanded-map-tools {
    position:absolute;
    z-index:25;
    left:10px;
    top:94px;
    display:grid;
  }
  .map-wrap .expanded-map-tools > button { display:none; }
  .map-wrap .expanded-map-tools > #expandedThemeToggleBtn {
    position:relative;
    width:38px;
    height:38px;
    min-width:38px;
    min-height:38px;
    border:0;
    border-radius:8px;
    padding:0;
    display:grid;
    place-items:center;
    background:rgba(255,255,255,.96);
    color:var(--primary-strong);
    box-shadow:0 5px 18px rgba(0,0,0,.13);
    font-size:20px;
    line-height:1;
  }
  .map-wrap .expanded-map-tools > #expandedThemeToggleBtn .expanded-theme-glyph {
    font-size:20px;
    line-height:1;
  }
  html[data-theme="dark"] .map-wrap .expanded-map-tools > #expandedThemeToggleBtn {
    background:var(--surface);
    color:var(--primary);
  }
}


/* V0.1.557 — Mes listes : bouton « Gérer » lisible en thème sombre. */
html[data-theme="dark"] .collections-sheet .personal-list-card .collection-card-actions [data-manage-collection] {
  background:#202a27;
  color:#e6eeeb;
  border-color:#42534d;
}
html[data-theme="dark"] .collections-sheet .personal-list-card .collection-card-actions [data-manage-collection]:hover,
html[data-theme="dark"] .collections-sheet .personal-list-card .collection-card-actions [data-manage-collection]:focus-visible {
  background:#26342f;
  border-color:#52665f;
}


/* V0.1.562 — Signalement plus compact : précision repliée et contrôles contextuels. */
.report-collection-details {
  margin: 2px 0 13px;
  padding: 0;
  border: 0;
}
.report-collection-details > summary {
  cursor: pointer;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
  list-style-position: inside;
}
.report-collection-details > summary small {
  font-weight: 600;
}
.report-collection-details[open] > summary {
  margin-bottom: 9px;
  color: var(--text);
}
.report-collection-details .field {
  margin: 0;
}
.report-collection-sheet.is-sent .report-collection-details {
  display: none !important;
}

/* V0.1.563 — Signalement guidé par le problème : masquer réellement les blocs inutiles. */
#reportCollectionFieldWrap[hidden],
#reportCollectionSuggestedWrap[hidden],
#reportCollectionSuggestedChoice[hidden],
#reportCollectionSuggested[hidden],
#reportCollectionFieldCurrent[hidden] { display: none !important; }
.report-collection-current {
  margin: -5px 0 12px;
  padding: 9px 11px;
  border-radius: 11px;
  background: var(--surface-2);
  color: var(--muted);
  font-size: 12.5px;
  line-height: 1.35;
}


/* V0.1.583 — partage système prioritaire et réception beaucoup plus visible. */
.collections-sheet .receive-share-card {position:relative;gap:9px;margin-bottom:18px;padding:14px;border:2px solid rgba(15,107,99,.38);box-shadow:0 6px 18px rgba(15,107,99,.09)}
.collections-sheet .receive-share-kicker {width:max-content;max-width:100%;padding:4px 9px;border-radius:999px;background:var(--primary);color:#fff;font-size:10.5px;font-weight:900;letter-spacing:.02em}
.collections-sheet .receive-share-card .unified-import-copy strong {font-size:16.5px}
.collections-sheet .receive-share-footnote {color:var(--muted);font-size:10.8px;line-height:1.42;font-weight:700}
.collections-sheet .unified-import-file-btn,.collections-sheet .unified-import-qr-btn {min-height:50px;border-width:1px;font-weight:850}
.collections-sheet .unified-import-file-btn {background:var(--primary);border-color:var(--primary);color:#fff}
.collections-sheet .unified-import-file-btn .receive-btn-icon {background:rgba(255,255,255,.18);color:#fff}
.collections-sheet .unified-import-qr-btn {background:#f8fbfa;border-color:rgba(15,107,99,.28);color:var(--primary-strong)}
.collections-sheet .unified-import-qr-btn .receive-btn-icon {background:rgba(15,107,99,.09);color:var(--primary)}
#shareChoiceSheet #shareByFileBtn,#shareChoiceSheet #shareByQrBtn {border-color:rgba(15,107,99,.25);background:#f8fbfa;color:var(--text)}
#shareChoiceSheet #shareByFileBtn:hover,#shareChoiceSheet #shareByQrBtn:hover {border-color:rgba(15,107,99,.50);background:#f1f8f6}
#shareChoiceSheet #shareByFileBtn .transfer-method-icon,#shareChoiceSheet #shareByQrBtn .transfer-method-icon {background:#e4f1ee;color:var(--primary)}
#shareChoiceSheet .share-system-icon {font-size:27px;line-height:1}
html[data-theme="dark"] .collections-sheet .receive-share-card {border-color:rgba(75,190,174,.45);box-shadow:0 6px 18px rgba(0,0,0,.18)}
html[data-theme="dark"] .collections-sheet .unified-import-file-btn {background:var(--primary);border-color:var(--primary);color:#fff}
html[data-theme="dark"] .collections-sheet .unified-import-qr-btn,html[data-theme="dark"] #shareChoiceSheet #shareByFileBtn,html[data-theme="dark"] #shareChoiceSheet #shareByQrBtn {background:#202c31;color:var(--text);border-color:rgba(95,177,165,.30)}
html[data-theme="dark"] #shareChoiceSheet #shareByFileBtn .transfer-method-icon,html[data-theme="dark"] #shareChoiceSheet #shareByQrBtn .transfer-method-icon {background:rgba(95,177,165,.13);color:#8fd4c8}

/* V0.1.584 — lisibilité mobile ciblée : Partage / Réception / Sauvegarde. */
/* Mon carnet : le bloc de réception devient un vrai point d'entrée, sans toucher à la logique d'import. */
.collections-sheet .receive-share-card {
  gap: 11px;
  padding: 17px;
  border-color: rgba(15,107,99,.46);
  background: #f5fbf8;
  box-shadow: 0 8px 22px rgba(15,107,99,.11);
}
.collections-sheet .receive-share-kicker {
  width: 100%;
  padding: 0;
  border-radius: 0;
  background: transparent;
  color: var(--primary-strong);
  font-size: 21px;
  line-height: 1.18;
  font-weight: 950;
  letter-spacing: 0;
}
.collections-sheet .receive-share-footnote.receive-share-lead {
  display: block;
  margin: -2px 0 1px;
  padding: 9px 11px;
  border-radius: 12px;
  background: rgba(15,107,99,.085);
  color: #315d57;
  font-size: 13.5px;
  line-height: 1.45;
  font-weight: 750;
}
.collections-sheet .receive-share-card .unified-import-copy {
  gap: 4px;
}
.collections-sheet .receive-share-card .unified-import-copy strong {
  font-size: 17.5px;
  line-height: 1.28;
}
.collections-sheet .receive-share-card .unified-import-copy small {
  font-size: 13.5px;
  line-height: 1.45;
  color: #536661;
}
.collections-sheet .unified-import-file-btn,
.collections-sheet .unified-import-qr-btn {
  min-height: 56px;
  padding: 12px 14px;
  font-size: 14.5px;
  line-height: 1.25;
}
.collections-sheet .unified-import-qr-btn {
  background: #eef5ff;
  border-color: rgba(45,105,164,.40);
  color: #265781;
}
.collections-sheet .unified-import-qr-btn .receive-btn-icon {
  background: rgba(45,105,164,.11);
  color: #2d69a4;
}

/* Partage : deux choix immédiatement identifiables, textes nettement plus lisibles. */
#shareChoiceSheet .transfer-intro {
  font-size: 14.5px;
  line-height: 1.45;
  padding: 11px 13px;
}
#shareChoiceSheet .share-merge-note {
  padding: 11px 13px;
  font-size: 13px;
  line-height: 1.48;
}
#shareChoiceSheet .transfer-methods { gap: 12px; }
#shareChoiceSheet .transfer-method {
  min-height: 80px;
  padding: 16px;
  border-width: 2px;
  border-radius: 17px;
  gap: 14px;
  box-shadow: 0 6px 16px rgba(24,54,48,.075);
}
#shareChoiceSheet .transfer-method-icon {
  width: 48px;
  height: 48px;
  border-radius: 14px;
  font-size: 27px;
}
#shareChoiceSheet .transfer-method strong {
  font-size: 17px;
  line-height: 1.22;
  font-weight: 900;
}
#shareChoiceSheet .transfer-method small {
  font-size: 13.5px;
  line-height: 1.4;
}
#shareChoiceSheet #shareByFileBtn {
  border-color: #0f6b63;
  background: #0f6b63;
  color: #fff;
}
#shareChoiceSheet #shareByFileBtn:hover,
#shareChoiceSheet #shareByFileBtn:focus-visible {
  border-color: #0b5b54;
  background: #0b625b;
}
#shareChoiceSheet #shareByFileBtn .transfer-method-icon {
  background: rgba(255,255,255,.16);
  color: #fff;
}
#shareChoiceSheet #shareByFileBtn small { color: rgba(255,255,255,.88); }
#shareChoiceSheet #shareByQrBtn {
  border-color: #7ea8d5;
  background: #eef5ff;
  color: #234f79;
}
#shareChoiceSheet #shareByQrBtn:hover,
#shareChoiceSheet #shareByQrBtn:focus-visible {
  border-color: #5c8fc3;
  background: #e5f0fc;
}
#shareChoiceSheet #shareByQrBtn .transfer-method-icon {
  background: #d9e9fa;
  color: #2d69a4;
}
#shareChoiceSheet #shareByQrBtn small { color: #486983; }
#shareChoiceSheet .transfer-privacy-note {
  font-size: 13px;
  line-height: 1.45;
  padding: 11px 13px;
}

/* Sauvegarde : hiérarchie plus forte, cartes différenciées et corps de texte lisible sur mobile. */
#rescueBackupSheet > .transfer-intro {
  margin-bottom: 15px;
  font-size: 15px;
  line-height: 1.5;
}
#rescueBackupSheet .backup-choice-card {
  margin-top: 13px;
  padding: 16px;
  border-width: 2px;
  box-shadow: 0 7px 20px rgba(24,58,50,.065);
}
#rescueBackupSheet .backup-local-card {
  background: #f3faf7;
  border-color: rgba(15,107,99,.30);
}
#rescueBackupSheet .backup-remote-card {
  background: #f4f8fd;
  border-color: rgba(45,105,164,.28);
}
#rescueBackupSheet .backup-choice-head { gap: 11px; }
#rescueBackupSheet .backup-choice-icon {
  width: 42px;
  height: 42px;
  border-radius: 13px;
  font-size: 21px;
}
#rescueBackupSheet .backup-local-card .backup-choice-icon {
  background: #dcefe9;
}
#rescueBackupSheet .backup-remote-card .backup-choice-icon {
  background: #e0ecf9;
}
/* V0.1.587 — le pictogramme de la sauvegarde de secours reste franc en thème clair. */
#rescueBackupSheet .backup-remote-card .backup-choice-icon-cloud {
  color: #2d69a4;
  border: 1px solid rgba(45,105,164,.15);
}
#rescueBackupSheet .backup-cloud-glyph {
  width: 25px;
  height: 25px;
  display: block;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.25;
  stroke-linecap: round;
  stroke-linejoin: round;
}
#rescueBackupSheet .backup-choice-copy strong {
  font-size: 17px;
  line-height: 1.25;
  font-weight: 900;
}
#rescueBackupSheet .backup-choice-copy small {
  font-size: 13.5px;
  line-height: 1.45;
  color: #566965;
}
#rescueBackupSheet .backup-choice-badge {
  padding: 6px 9px;
  font-size: 11.5px;
  line-height: 1.2;
}
#rescueBackupSheet .backup-choice-note {
  margin-top: 10px;
  font-size: 13px;
  line-height: 1.45;
}
#rescueBackupSheet .backup-unified-main {
  min-height: 50px;
  margin-top: 14px;
  font-size: 15.5px;
  font-weight: 900;
}
#rescueBackupSheet .backup-remote-option {
  margin-top: 13px;
  padding: 13px 14px;
  border-color: rgba(45,105,164,.24);
  background: rgba(255,255,255,.86);
}
#rescueBackupSheet .backup-remote-option input {
  width: 24px;
  height: 24px;
  margin-top: 0;
}
#rescueBackupSheet .backup-remote-option strong {
  font-size: 15px;
  line-height: 1.3;
}
#rescueBackupSheet .backup-remote-option small {
  font-size: 13px;
  line-height: 1.45;
}
#rescueBackupSheet .backup-remote-status {
  margin-top: 9px;
  font-size: 13px;
  line-height: 1.4;
}
#rescueBackupSheet .backup-remote-card.is-unavailable .backup-choice-icon,
#rescueBackupSheet .backup-remote-card.is-unavailable .backup-remote-option {
  opacity: .82;
}
#rescueBackupSheet .backup-privacy-note {
  margin-top: 14px;
  padding: 11px 13px;
  border: 1px solid rgba(15,107,99,.17);
  border-radius: 12px;
  background: rgba(15,107,99,.065);
  color: #365f59;
  text-align: left;
  font-size: 13px;
  line-height: 1.45;
}

@media (max-width: 640px) {
  .collections-sheet .receive-share-card { padding: 15px; }
  .collections-sheet .receive-share-kicker { font-size: 20px; }
  #shareChoiceSheet .transfer-method { min-height: 84px; padding: 15px; }
  #shareChoiceSheet .transfer-method strong { font-size: 17px; }
  #shareChoiceSheet .transfer-method small { font-size: 13.5px; }
  #rescueBackupSheet .backup-choice-card { padding: 15px; }
  #rescueBackupSheet .backup-choice-copy strong { font-size: 16.5px; }
}

/* Les mêmes contrastes sont explicitement traités en thème sombre. */
html[data-theme="dark"] .collections-sheet .receive-share-card {
  background: #182724;
  border-color: rgba(95,177,165,.48);
  box-shadow: 0 8px 22px rgba(0,0,0,.24);
}
html[data-theme="dark"] .collections-sheet .receive-share-kicker { color: #a9e1d7; }
html[data-theme="dark"] .collections-sheet .receive-share-footnote.receive-share-lead {
  background: rgba(95,177,165,.12);
  color: #d8e9e5;
}
html[data-theme="dark"] .collections-sheet .receive-share-card .unified-import-copy small { color: #c3d1cd; }
html[data-theme="dark"] .collections-sheet .unified-import-qr-btn {
  background: #223246;
  border-color: rgba(115,165,214,.45);
  color: #b9d8f7;
}
html[data-theme="dark"] .collections-sheet .unified-import-qr-btn .receive-btn-icon {
  background: rgba(115,165,214,.14);
  color: #a8d0f6;
}
html[data-theme="dark"] #shareChoiceSheet #shareByFileBtn {
  background: #13786f;
  border-color: #2f9b90;
  color: #fff;
}
html[data-theme="dark"] #shareChoiceSheet #shareByFileBtn .transfer-method-icon {
  background: rgba(255,255,255,.15);
  color: #fff;
}
html[data-theme="dark"] #shareChoiceSheet #shareByFileBtn small { color: rgba(255,255,255,.88); }
html[data-theme="dark"] #shareChoiceSheet #shareByQrBtn {
  background: #223246;
  border-color: #547eaa;
  color: #c2ddf7;
}
html[data-theme="dark"] #shareChoiceSheet #shareByQrBtn .transfer-method-icon {
  background: rgba(115,165,214,.16);
  color: #afd2f4;
}
html[data-theme="dark"] #shareChoiceSheet #shareByQrBtn small { color: #bdd0e2; }
html[data-theme="dark"] #rescueBackupSheet .backup-local-card {
  background: #182724;
  border-color: rgba(95,177,165,.38);
}
html[data-theme="dark"] #rescueBackupSheet .backup-remote-card {
  background: #1d2835;
  border-color: rgba(115,165,214,.34);
}
html[data-theme="dark"] #rescueBackupSheet .backup-local-card .backup-choice-icon {
  background: rgba(95,177,165,.15);
}
html[data-theme="dark"] #rescueBackupSheet .backup-remote-card .backup-choice-icon {
  background: rgba(115,165,214,.15);
}
html[data-theme="dark"] #rescueBackupSheet .backup-remote-card .backup-choice-icon-cloud {
  color: #afd2f4;
  border-color: rgba(115,165,214,.28);
}
html[data-theme="dark"] #rescueBackupSheet .backup-choice-copy small,
html[data-theme="dark"] #rescueBackupSheet .backup-choice-note,
html[data-theme="dark"] #rescueBackupSheet .backup-remote-status,
html[data-theme="dark"] #rescueBackupSheet .backup-remote-option small { color: #c8d4d0; }
html[data-theme="dark"] #rescueBackupSheet .backup-remote-option {
  background: rgba(17,24,30,.62);
  border-color: rgba(115,165,214,.28);
}
html[data-theme="dark"] #rescueBackupSheet .backup-privacy-note {
  background: rgba(95,177,165,.10);
  border-color: rgba(95,177,165,.24);
  color: #d3e6e1;
}



/* V0.1.585 — Mon carnet : deux voies de réception clairement séparées. */
.collections-sheet .receive-share-intro {
  display: block;
  color: #445e58;
  font-size: 14px;
  line-height: 1.45;
  font-weight: 700;
}
.collections-sheet .receive-share-route {
  display: grid;
  gap: 10px;
  padding: 13px;
  border: 1px solid transparent;
  border-radius: 14px;
}
.collections-sheet .receive-share-file-route {
  background: rgba(15,107,99,.075);
  border-color: rgba(15,107,99,.20);
}
.collections-sheet .receive-share-qr-route {
  background: rgba(45,105,164,.075);
  border-color: rgba(45,105,164,.22);
}
.collections-sheet .receive-share-route-copy {
  display: grid;
  gap: 3px;
}
.collections-sheet .receive-share-route-copy strong {
  color: var(--text);
  font-size: 15.5px;
  line-height: 1.3;
  font-weight: 900;
}
.collections-sheet .receive-share-route-copy small {
  color: #586a65;
  font-size: 13px;
  line-height: 1.4;
  font-weight: 650;
}
.collections-sheet .receive-share-or {
  position: relative;
  height: 20px;
  display: grid;
  place-items: center;
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
  text-transform: uppercase;
}
.collections-sheet .receive-share-or::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 1px;
  background: rgba(70,96,90,.16);
}
.collections-sheet .receive-share-or span {
  position: relative;
  z-index: 1;
  padding: 0 9px;
  background: #f5fbf8;
}
.collections-sheet .receive-share-card > .receive-share-footnote:not(.receive-share-lead) {
  display: block;
  margin-top: 1px;
  color: #536661;
  font-size: 12.8px;
  line-height: 1.42;
  font-weight: 700;
}
.collections-sheet .receive-share-route .unified-import-btn {
  width: 100%;
  justify-content: center;
}
html[data-theme="dark"] .collections-sheet .receive-share-intro { color: #c8d8d4; }
html[data-theme="dark"] .collections-sheet .receive-share-file-route {
  background: rgba(95,177,165,.10);
  border-color: rgba(95,177,165,.24);
}
html[data-theme="dark"] .collections-sheet .receive-share-qr-route {
  background: rgba(115,165,214,.10);
  border-color: rgba(115,165,214,.25);
}
html[data-theme="dark"] .collections-sheet .receive-share-route-copy small,
html[data-theme="dark"] .collections-sheet .receive-share-card > .receive-share-footnote:not(.receive-share-lead) { color: #c3d1cd; }
html[data-theme="dark"] .collections-sheet .receive-share-or::before { background: rgba(190,214,207,.15); }
html[data-theme="dark"] .collections-sheet .receive-share-or span { background: #182724; }


/* V0.1.586 — Mon carnet : réception repliable par défaut + séparation nette du carnet. */
.collections-sheet .receive-share-details {
  display: block;
  padding: 0;
  overflow: hidden;
}
.collections-sheet .receive-share-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 58px;
  padding: 14px 16px;
  cursor: pointer;
  list-style: none;
  -webkit-tap-highlight-color: transparent;
}
.collections-sheet .receive-share-summary::-webkit-details-marker { display: none; }
.collections-sheet .receive-share-summary::marker { content: ''; }
.collections-sheet .receive-share-summary .receive-share-kicker {
  width: auto;
  flex: 1 1 auto;
  font-size: 18px;
  line-height: 1.22;
}
.collections-sheet .receive-share-summary-chevron {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: rgba(15,107,99,.11);
  color: var(--primary-strong);
  font-size: 28px;
  line-height: 1;
  font-weight: 800;
  transform: rotate(90deg);
  transition: transform .18s ease, background .18s ease;
}
.collections-sheet .receive-share-details[open] .receive-share-summary-chevron {
  transform: rotate(-90deg);
  background: rgba(15,107,99,.16);
}
.collections-sheet .receive-share-body {
  display: grid;
  gap: 11px;
  padding: 0 15px 15px;
  border-top: 1px solid rgba(15,107,99,.13);
}
.collections-sheet .receive-share-body .receive-share-intro { margin-top: 12px; }
.collections-sheet .carnet-content-divider {
  height: 1px;
  margin: 4px 5px 16px;
  background: linear-gradient(90deg, transparent, rgba(70,96,90,.30) 12%, rgba(70,96,90,.30) 88%, transparent);
}
html[data-theme="dark"] .collections-sheet .receive-share-summary-chevron {
  background: rgba(95,177,165,.15);
  color: #a9e1d7;
}
html[data-theme="dark"] .collections-sheet .receive-share-details[open] .receive-share-summary-chevron { background: rgba(95,177,165,.22); }
html[data-theme="dark"] .collections-sheet .receive-share-body { border-top-color: rgba(95,177,165,.16); }
html[data-theme="dark"] .collections-sheet .carnet-content-divider {
  background: linear-gradient(90deg, transparent, rgba(190,214,207,.22) 12%, rgba(190,214,207,.22) 88%, transparent);
}
@media (max-width: 640px) {
  .collections-sheet .receive-share-details { padding: 0; }
  .collections-sheet .receive-share-summary { min-height: 56px; padding: 13px 14px; }
  .collections-sheet .receive-share-summary .receive-share-kicker { font-size: 17.5px; }
  .collections-sheet .receive-share-body { padding: 0 13px 13px; }
}
.collections-sheet .receive-share-body > .receive-share-footnote {
  display: block;
  margin-top: 1px;
  color: #536661;
  font-size: 12.8px;
  line-height: 1.42;
  font-weight: 700;
}
html[data-theme="dark"] .collections-sheet .receive-share-body > .receive-share-footnote { color: #c3d1cd; }


/* V0.1.588 — disquette vectorielle cohérente pour les sauvegardes locales. */
.backup-disk-glyph {
  width: 24px;
  height: 24px;
  display: block;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}
#rescueBackupSheet .backup-local-card .backup-choice-icon-disk {
  color: #0f6b63;
  border: 1px solid rgba(15,107,99,.14);
}
.carnet-backup-nudge-icon {
  color: #8b6200;
}
.carnet-backup-nudge-icon .backup-disk-glyph {
  width: 21px;
  height: 21px;
}
html[data-theme="dark"] #rescueBackupSheet .backup-local-card .backup-choice-icon-disk {
  color: #9bdad0;
  border-color: rgba(95,177,165,.28);
}
html[data-theme="dark"] .carnet-backup-nudge-icon {
  color: #ffe29a;
}


/* V0.1.593 — stabilisation Soleil & orientation + navigation onboarding */
.tools-sheet { max-height:min(88dvh,720px); }
.tools-hub-intro,
.sun-tool-intro { margin:-2px 0 12px; color:var(--muted); font-size:14px; line-height:1.5; }
.tools-hub-grid { display:grid; gap:10px; }
.tools-hub-card {
  width:100%; border:1px solid var(--line); border-radius:18px; background:var(--surface);
  padding:13px; display:grid; grid-template-columns:48px minmax(0,1fr) 22px; gap:11px; align-items:center;
  text-align:left; color:var(--text); box-shadow:0 5px 16px rgba(24,43,37,.05); cursor:pointer;
}
.tools-hub-card-sun { border-color:rgba(220,148,20,.28); background:linear-gradient(135deg,rgba(255,194,58,.10),rgba(15,118,110,.035)); }
.tools-hub-icon { width:48px; height:48px; border-radius:15px; display:grid; place-items:center; background:var(--surface-2); color:var(--primary); }
.tools-hub-card-sun .tools-hub-icon { color:#d89212; background:rgba(255,190,52,.13); }
.tools-hub-icon svg { width:29px; height:29px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.tools-hub-copy { min-width:0; display:grid; gap:3px; }
.tools-hub-copy strong { font-size:15px; line-height:1.25; }
.tools-hub-copy small { color:var(--muted); font-size:12.5px; line-height:1.4; }
.tools-hub-arrow { font-size:28px; color:#8a9893; line-height:1; }
.tools-coming-note { margin-top:14px; padding:13px 14px; border-radius:16px; background:rgba(15,118,110,.055); border:1px dashed rgba(15,118,110,.22); display:grid; gap:3px; }
.tools-coming-note strong { color:var(--primary); font-size:13.5px; }
.tools-coming-note span { color:var(--muted); font-size:12px; line-height:1.45; }

.sun-tool-sheet { max-height:min(92dvh,840px); }
.sun-tool-body { display:grid; gap:13px; padding-bottom:4px; }
.sun-tool-actions { display:grid; grid-template-columns:1fr 1fr; gap:9px; }
.sun-tool-actions .primary-btn,.sun-tool-actions .secondary-btn { min-height:44px; padding:9px 11px; font-size:13px; }
.sun-tool-status { min-height:36px; padding:9px 11px; border-radius:13px; background:var(--surface-2); color:var(--muted); font-size:12.5px; line-height:1.4; }
.sun-tool-status.is-good { color:var(--primary); background:rgba(15,118,110,.08); }
.sun-tool-status.is-error { color:var(--danger); background:rgba(181,72,63,.08); }
.sun-compass { position:relative; width:min(292px,78vw); aspect-ratio:1; margin:2px auto 0; border-radius:50%; background:radial-gradient(circle at 50% 44%,rgba(126,195,241,.20),rgba(255,220,123,.09) 58%,rgba(15,118,110,.035)); border:2px solid rgba(110,132,123,.34); box-shadow:inset 0 0 0 8px rgba(255,255,255,.45),0 10px 28px rgba(32,48,43,.08); overflow:hidden; }
.sun-compass-lines { position:absolute; inset:0; width:100%; height:100%; }
.sun-compass-lines circle,.sun-compass-lines line { fill:none; stroke:rgba(69,96,87,.16); stroke-width:.65; }
.sun-path-line { fill:none; stroke:#f0a61b; stroke-width:1.45; stroke-linecap:round; stroke-linejoin:round; stroke-dasharray:2.2 2.1; opacity:.92; }
.sun-cardinal { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); font-size:13px; font-weight:900; color:#52645d; z-index:3; }
.sun-marker { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:22px; height:22px; border-radius:50%; z-index:5; box-shadow:0 2px 8px rgba(0,0,0,.18); }
.sun-marker i { position:absolute; inset:4px; border-radius:50%; display:block; }
.sun-marker-rise,.sun-marker-set { background:#fff7df; border:2px solid #df9a17; }
.sun-marker-rise i,.sun-marker-set i { background:#efaa20; }
.sun-marker-current { width:30px; height:30px; background:rgba(255,255,255,.92); border:2px solid rgba(255,181,31,.45); box-shadow:0 0 0 6px rgba(255,193,56,.14),0 3px 12px rgba(0,0,0,.16); }
.sun-marker-current i { inset:5px; background:#ffb51f; }
.sun-phone-arrow { position:absolute; left:50%; top:50%; width:42px; height:54px; transform:translate(-50%,-50%); transform-origin:center center; transition:transform .16s linear, box-shadow .2s ease; display:grid; place-items:center; border-radius:14px; background:rgba(255,255,255,.90); border:2px solid #27332f; z-index:4; box-shadow:0 5px 14px rgba(25,42,37,.13); }
.sun-phone-arrow.is-active { box-shadow:0 0 0 5px rgba(15,118,110,.10),0 5px 14px rgba(25,42,37,.13); }
.sun-phone-arrow svg { width:30px; height:39px; fill:rgba(15,118,110,.15); stroke:#26332f; stroke-width:1.4; stroke-linejoin:round; }
.sun-info-card { padding:12px 13px; border:1px solid var(--line); border-radius:17px; background:var(--surface); display:grid; gap:9px; }
.sun-info-card > div { display:grid; grid-template-columns:14px 1fr auto; align-items:center; gap:8px; }
.sun-info-card strong { font-size:12.5px; }
.sun-info-card b { font-size:12.5px; text-align:right; color:#364741; }
.sun-info-card > small { margin-top:2px; padding-top:8px; border-top:1px solid var(--line); color:var(--muted); text-align:center; font-size:11.5px; }
.sun-info-dot { width:10px; height:10px; border-radius:50%; background:#e9a51d; }
.sun-info-dot.is-now { background:#ffb51f; box-shadow:0 0 0 3px rgba(255,181,31,.16); }
.sun-info-dot.is-set { background:#c98215; }
.sun-privacy-note { display:flex; gap:9px; align-items:flex-start; padding:10px 11px; border-radius:14px; background:rgba(15,118,110,.055); color:var(--muted); }
.sun-privacy-note > span { color:var(--primary); font-size:19px; line-height:1; }
.sun-privacy-note p { margin:0; font-size:11.5px; line-height:1.45; }

.onboarding-overlay { position:fixed; inset:0; z-index:3200; padding:max(14px,env(safe-area-inset-top)) 14px max(14px,env(safe-area-inset-bottom)); background:rgba(8,28,24,.76); backdrop-filter:blur(8px); display:grid; place-items:center; }
.onboarding-overlay[hidden] { display:none !important; }
.onboarding-card { width:min(430px,100%); min-height:min(650px,calc(100dvh - 28px)); max-height:calc(100dvh - 28px); overflow:hidden; border-radius:28px; background:var(--surface); box-shadow:0 24px 70px rgba(0,0,0,.32); display:grid; grid-template-rows:auto 1fr auto; }
.onboarding-topline { display:flex; align-items:center; justify-content:space-between; padding:18px 20px 8px; }
.onboarding-brand { color:var(--primary); font-weight:900; font-size:14px; letter-spacing:.02em; }
.onboarding-topline button { border:0; background:transparent; color:var(--muted); font-weight:800; font-size:13px; padding:8px; }
.onboarding-slides { position:relative; min-height:0; }
.onboarding-slide { display:none; height:100%; padding:20px 26px 18px; align-content:center; text-align:center; }
.onboarding-slide.is-active { display:grid; }
.onboarding-visual { width:156px; height:156px; margin:0 auto 26px; border-radius:42px; background:linear-gradient(145deg,rgba(15,118,110,.12),rgba(255,190,52,.15)); display:grid; place-items:center; }
.onboarding-visual svg { width:92px; height:92px; fill:none; stroke:var(--primary); stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }
.onboarding-visual.is-account { background:linear-gradient(145deg,rgba(15,118,110,.13),rgba(15,118,110,.05)); }
.onboarding-visual.is-collections { background:linear-gradient(145deg,rgba(43,125,196,.12),rgba(15,118,110,.06)); }
.onboarding-visual.is-share { background:linear-gradient(145deg,rgba(255,190,52,.18),rgba(15,118,110,.06)); }
.onboarding-slide h2 { margin:0 auto 13px; max-width:330px; color:var(--text); font-size:27px; line-height:1.12; letter-spacing:-.6px; }
.onboarding-slide p { margin:0 auto; max-width:330px; color:var(--muted); font-size:16px; line-height:1.55; }
.onboarding-footer { padding:12px 20px 22px; display:grid; grid-template-columns:minmax(72px,1fr) auto minmax(130px,180px); align-items:center; gap:12px; }
.onboarding-footer .primary-btn { min-height:48px; }
.onboarding-back-btn { justify-self:start; min-height:42px; border:0; background:transparent; color:var(--primary); font-weight:850; font-size:14px; padding:8px 4px; }
.onboarding-back-btn[hidden] { visibility:hidden; display:block !important; }
.onboarding-dots { display:flex; gap:7px; align-items:center; justify-content:center; }
.onboarding-dots i { width:8px; height:8px; border-radius:999px; background:#c7d1cd; transition:.2s ease; }
.onboarding-dots i.is-active { width:24px; background:var(--primary); }

html[data-theme="dark"] .tools-hub-card,
html[data-theme="dark"] .sun-info-card,
html[data-theme="dark"] .onboarding-card { background:var(--surface); }
html[data-theme="dark"] .tools-hub-card-sun { background:linear-gradient(135deg,rgba(255,184,51,.10),rgba(42,164,145,.06)); border-color:rgba(255,184,51,.25); }
html[data-theme="dark"] .sun-compass { background:radial-gradient(circle at 50% 44%,rgba(49,113,154,.28),rgba(118,87,25,.13) 58%,rgba(15,118,110,.08)); border-color:rgba(155,178,169,.28); box-shadow:inset 0 0 0 8px rgba(255,255,255,.025),0 10px 28px rgba(0,0,0,.2); }
html[data-theme="dark"] .sun-compass-lines circle,
html[data-theme="dark"] .sun-compass-lines line { stroke:rgba(210,227,220,.14); }
html[data-theme="dark"] .sun-cardinal { color:#cbd8d3; }
html[data-theme="dark"] .sun-phone-arrow { background:#e7ecea; }
html[data-theme="dark"] .sun-info-card b { color:var(--text); }
html[data-theme="dark"] .onboarding-overlay { background:rgba(0,9,8,.82); }
@media (max-width:420px) {
  .sun-tool-actions { grid-template-columns:1fr; }
  .sun-compass { width:min(274px,78vw); }
  .onboarding-card { min-height:min(610px,calc(100dvh - 20px)); border-radius:24px; }
  .onboarding-slide { padding:14px 22px; }
  .onboarding-visual { width:132px; height:132px; margin-bottom:20px; }
  .onboarding-visual svg { width:78px; height:78px; }
  .onboarding-slide h2 { font-size:24px; }
  .onboarding-slide p { font-size:15px; }
}

/* V0.1.593 — Soleil autour du véhicule + onboarding recentré */
.sun-start-btn { width:100%; min-height:48px; font-size:14px; }
.sun-tool-status { text-align:center; }
.sun-compass { width:min(310px,82vw); }
.sun-cardinal { font-size:15px; }
.sun-marker-rise,.sun-marker-set { width:23px; height:23px; }
.sun-marker > b {
  position:absolute; top:26px; left:50%; transform:translateX(-50%);
  padding:3px 6px; border-radius:8px; background:rgba(255,255,255,.94);
  color:#8a5a05; border:1px solid rgba(217,146,18,.24); font-size:9.5px; line-height:1;
  white-space:nowrap; box-shadow:0 2px 7px rgba(0,0,0,.08);
}
.sun-vehicle {
  position:absolute; left:50%; top:50%; width:54px; height:78px; transform:translate(-50%,-50%);
  display:grid; place-items:center; z-index:6; pointer-events:none;
}
.sun-vehicle svg { width:42px; height:64px; fill:rgba(255,255,255,.96); stroke:#24322e; stroke-width:1.8; stroke-linejoin:round; filter:drop-shadow(0 4px 7px rgba(20,35,31,.18)); }
.sun-vehicle em {
  position:absolute; top:-7px; left:50%; transform:translateX(-50%); padding:2px 5px; border-radius:6px;
  background:var(--primary); color:#fff; font-size:7.5px; font-style:normal; font-weight:900; letter-spacing:.05em;
}
.sun-time-card { padding:11px 13px 12px; border:1px solid var(--line); border-radius:17px; background:var(--surface); display:grid; gap:9px; }
.sun-time-card > div { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.sun-time-card strong { font-size:16px; color:var(--text); }
.sun-time-card button { border:0; background:transparent; color:var(--primary); font-size:11.5px; font-weight:850; padding:5px 0; }
.sun-time-card button:disabled { opacity:.38; }
.sun-time-card input[type="range"] { width:100%; accent-color:#efa61a; }
.sun-time-card small { color:var(--muted); font-size:11.5px; line-height:1.35; text-align:center; }
.sun-info-card > small { font-size:12px; font-weight:750; color:var(--primary); }
.onboarding-logo-visual { background:transparent; box-shadow:none; }
.onboarding-logo-visual img { width:142px; height:142px; object-fit:contain; border-radius:34px; box-shadow:0 12px 28px rgba(12,67,58,.14); }
.onboarding-slide p b { color:var(--primary); }
html[data-theme="dark"] .sun-marker > b { background:#26332f; color:#ffd786; border-color:rgba(255,210,116,.22); }
html[data-theme="dark"] .sun-time-card { background:var(--surface); }
html[data-theme="dark"] .sun-vehicle svg { fill:#eef2f0; }
@media (max-width:420px) {
  .sun-compass { width:min(286px,82vw); }
  .sun-vehicle { width:50px; height:72px; }
  .sun-vehicle svg { width:39px; height:59px; }
  .onboarding-logo-visual img { width:122px; height:122px; border-radius:29px; }
}

/* V0.1.594 — Collections facultativement protégées par code */
.proposed-status.is-locked {
  color: #735817;
  background: #fff4cf;
  border-color: rgba(177,128,19,.26);
}
.collection-access-sheet { max-height: min(78dvh, 620px); }
.collection-access-form { display: grid; gap: 14px; padding: 2px 2px 8px; }
.collection-access-lock {
  width: 62px; height: 62px; margin: 2px auto 0; border-radius: 20px;
  display: grid; place-items: center; font-size: 30px;
  background: linear-gradient(145deg, #fff6d8, #eef9f4);
  border: 1px solid rgba(168,123,18,.18);
  box-shadow: 0 8px 24px rgba(33,65,57,.08);
}
.collection-access-copy { margin: 0; text-align: center; font-weight: 800; color: var(--text); line-height: 1.45; }
.collection-access-help { margin: -5px 1px 0; color: var(--muted); font-size: 12px; line-height: 1.48; }
.collection-access-error {
  margin: -3px 0 0; padding: 10px 12px; border-radius: 12px;
  background: #fff0f0; border: 1px solid rgba(176,52,52,.18); color: #8b2e2e;
  font-size: 12px; font-weight: 750;
}
.collection-access-actions { display: grid; gap: 8px; }
.collection-access-actions .primary-btn,
.collection-access-actions .ghost-btn { width: 100%; justify-content: center; text-align: center; }

html[data-theme="dark"] .proposed-status.is-locked {
  color: #f3d77f; background: rgba(205,159,45,.15); border-color: rgba(234,197,100,.22);
}
html[data-theme="dark"] .collection-access-lock {
  background: linear-gradient(145deg, rgba(207,164,65,.16), rgba(38,104,88,.20));
  border-color: rgba(234,197,100,.18); box-shadow: none;
}
html[data-theme="dark"] .collection-access-error {
  background: rgba(150,52,52,.18); border-color: rgba(255,137,137,.18); color: #ffb5b5;
}
