  /* ── MAP ── */
  #map-wrap { flex:1; position:relative; }
  #leaflet-map { width:100%; height:100%; z-index:1; }
  .leaflet-container { font-family:var(--font-primary); }

  /* Bench name tooltip */
  .bench-tooltip {
    background:var(--bark); color:var(--cream);
    border:none; border-radius:var(--radius-pill);
    padding:3px 10px; font-size:0.75rem; 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:absolute; bottom:90px; left:50%; transform:translateX(-50%);
    background:var(--bark); color:var(--cream);
    padding:10px 20px; border-radius:var(--radius-pill);
    display:flex; 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;
  }
  .zoo-count { font-size:0.9rem; font-weight:700; }
  .zoo-hint  { font-size:0.7rem; 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:0.8rem; 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 */
  #mobLocateBtn {
    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:1rem; cursor:pointer; z-index:500;
    box-shadow:0 1px 5px rgba(0,0,0,0.25); padding:0; line-height:1;
  }
  #mobLocateBtn: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:7px 20px; gap:20px;
    box-shadow:0 4px 20px var(--shadow-deep);
  }
  .fab-divider {
    width:1px; height:32px; background:var(--parchment); flex-shrink:0;
  }
  .fab-item {
    display:flex; flex-direction:column; align-items:center; gap:5px;
    cursor:pointer; 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:38px; height:38px; border-radius:50%;
    background:var(--cream); border:var(--border-card);
    font-size:1.2rem;
    box-shadow:0 2px 6px var(--shadow);
  }
  .fab-item:hover .fab-circle { background:var(--moss); border-color:var(--moss); }
  .fab-label {
    font-size:0.62rem; font-weight:600; color:var(--stone-dark);
    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:0.85rem !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;
  }

