  /* ── MAP ── */
  #map-wrap { flex:1; position:relative; }
  #leaflet-map { width:100%; height:100%; z-index:1; }
  .leaflet-container { font-family:var(--font-primary); }
  #leaflet-map.map-theme-dark {
    background: #121823;
  }
  #leaflet-map.map-theme-dark :is(
    .leaflet-layer,
    .leaflet-control-attribution
  ) {
    filter: var(--bm-dark-map-filter, invert(100%) hue-rotate(180deg) brightness(95%) contrast(90%));
  }
  #leaflet-map.map-theme-dark .leaflet-control-zoom a {
    background: var(--bark);
    color: var(--cream);
    border-color: var(--shadow);
  }
  #leaflet-map.map-theme-dark .leaflet-control-zoom a:hover {
    background: var(--bark-dark, #2a1a0e);
  }
  #leaflet-map :is(.leaflet-layer, .leaflet-control-zoom-in, .leaflet-control-zoom-out, .leaflet-control-attribution) {
    transition: filter 0.2s ease;
  }

  /* Bench name tooltip */
  .bench-tooltip {
    background:var(--bark); color:var(--cream);
    border:none; border-radius:var(--radius-pill);
    padding:3px 10px; font-size:12px; font-weight:600;
    box-shadow:0 2px 8px rgba(61,43,31,0.35);
    white-space:nowrap; pointer-events:none;
  }
  .bench-tooltip::before { display:none; }

  /* Low-zoom count overlay */
  #zoomOutOverlay {
    position:fixed; top:54px; left:50%; transform:translateX(-50%);
    background:var(--bark); color:var(--cream);
    padding:10px 20px; border-radius:var(--radius-pill);
    display:none; flex-direction:column; align-items:center; gap:2px;
    z-index:500; pointer-events:none;
    box-shadow:0 4px 14px var(--shadow-deep); white-space:nowrap;
    opacity:1; transition:opacity 0.5s ease;
  }
  #zoomOutOverlay.zoo-fading {
    opacity: 0;
  }
  .zoo-count { font-size:14px; font-weight:700; }
  .zoo-hint  { font-size:12px; opacity:0.75; }

  .map-hint {
    position:absolute; bottom:80px; left:50%; transform:translateX(-50%);
    background:var(--bark); color:var(--cream);
    padding:9px 18px; border-radius:var(--radius-pill);
    font-size:14px; font-weight:500;
    pointer-events:none; z-index:500;
    box-shadow:0 4px 14px var(--shadow-deep); white-space:nowrap;
    animation:floatHint 3s ease-in-out infinite; transition:opacity 0.5s;
    display:none; opacity:0;
  }

  @keyframes floatHint { 0%,100%{transform:translateX(-50%) translateY(0)} 50%{transform:translateX(-50%) translateY(-4px)} }

  /* Mobile locate button hidden on desktop by default; mobile.css only handles placement */
  :is(#mobLocateBtn, #mobBugBtn, #mobInfoBtn) {
    display:none; width:34px; height:34px;
    background:var(--ui-surface-bg, var(--white)); border:2px solid rgba(0,0,0,0.2); border-radius:4px;
    align-items:center; justify-content:center; font-size:16px; cursor:pointer; z-index:500;
    box-shadow:0 1px 5px rgba(0,0,0,0.25); padding:0; line-height:1;
  }
  :is(#mobLocateBtn, #mobBugBtn, #mobInfoBtn):active { background:var(--ui-surface-bg-soft, var(--cream)); transform:none; }

  .fab-group {
    position:fixed; bottom:32px; right:48px;
    display:flex; align-items:center;
    background:var(--ui-surface-bg, var(--white));
    border:var(--ui-surface-border, var(--border-card));
    border-radius:var(--radius-pill); padding:10px 24px; gap:24px;
    box-shadow:0 4px 20px var(--shadow-deep);
  }
  .fab-item {
    display:flex; flex-direction:column; align-items:center; gap:6px;
    cursor:pointer; -webkit-user-select:none; user-select:none;
  }
  .fab-item.fab-item-start { margin-left:6px; }
  .fab-item.fab-item-end { margin-right:6px; }
  .fab-circle {
    display:flex; align-items:center; justify-content:center; transition:all 0.2s;
    width:44px; height:44px; border-radius:50%;
    background:var(--cream); border:var(--border-card);
    font-size:21px;
    box-shadow:0 2px 6px var(--shadow);
  }
  .fab-icon-btn {
    padding:0;
    font:inherit;
  }
  .fab-icon-btn:hover { background:var(--moss); border-color:var(--moss); color:var(--white); }
  .fab-item:hover .fab-circle { background:var(--moss); border-color:var(--moss); color:var(--white); }
  .fab-label {
    font-size:12px; font-weight:600; color:var(--stone-dark);
    line-height:1.2;
    min-height:28px;
    display:flex;
    align-items:center;
    justify-content:center;
    text-align:center;
    white-space:nowrap; letter-spacing:0.2px;
  }

  /* ── MARKER CLUSTERS ── */
  :is(.marker-cluster-small, .marker-cluster-medium, .marker-cluster-large) { background:var(--moss-t20) !important; }

  :is(.marker-cluster-small, .marker-cluster-medium, .marker-cluster-large) div {
    background:var(--moss) !important;
    color:var(--cream) !important;
    font-family:var(--font-primary) !important;
    font-size:14px !important;
    font-weight:600 !important;
    line-height:36px !important;
  }

  .marker-cluster {
    border-radius:50% !important;
    box-shadow:0 3px 12px var(--bark-shadow-deep) !important;
  }

  .map-cluster-icon {
    background: var(--moss);
    color: var(--white);
    width: 54px;
    height: 54px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-primary);
    font-size: 19px;
    font-weight: 900;
    box-shadow: 0 3px 12px rgba(31,125,62,0.4);
    border: 3px solid rgba(255,255,255,0.4);
  }

  .map-marker-icon {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 3px 10px rgba(61,43,31,0.4);
    border: 2px solid rgba(255,255,255,0.4);
    cursor: pointer;
    font-size: 20px;
    line-height: 1;
  }

  .map-marker-icon.is-default { background: var(--moss); }
  .map-marker-icon.is-selected { background: var(--bark); }
  .map-marker-icon.is-reported { background: var(--red); }

  .map-marker-icon-challenge {
    background: #00ffff;
    box-shadow: 0 3px 10px rgba(0,255,255,0.55), 0 0 18px rgba(0,255,255,0.35);
    border-color: rgba(255,255,255,0.6);
  }
