    .portal-map-wrap {
      position: relative;
      width: 100%;
      min-height: 200px;
      background: #e8eef4;
    }
    .portal-map-wrap.is-fill { height: 100%; min-height: 220px; }
    .portal-map-leaflet {
      width: 100%;
      height: 100%;
      min-height: inherit;
      z-index: 1;
    }
    .portal-map-wrap .leaflet-control-attribution {
      font-size: 0.5625rem;
      line-height: 1.2;
      background: rgba(255, 255, 255, 0.85);
    }
    .portal-map-legend {
      position: absolute;
      left: 0.5rem;
      bottom: 0.5rem;
      z-index: 500;
      display: flex;
      flex-wrap: wrap;
      gap: 0.25rem;
      padding: 0.3rem 0.45rem;
      background: rgba(255, 255, 255, 0.92);
      border: 1px solid rgba(0, 0, 0, 0.08);
      border-radius: 6px;
      font-size: 0.5625rem;
      font-weight: 600;
      color: #444;
      box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
      pointer-events: none;
    }
    .portal-map-legend span::before {
      content: '';
      display: inline-block;
      width: 7px;
      height: 7px;
      border-radius: 50%;
      margin-right: 0.2rem;
      vertical-align: middle;
    }
    .portal-map-legend .lg-warehouse::before { background: #2563eb; }
    .portal-map-legend .lg-shop::before { background: #10b981; }
    .portal-map-legend .lg-flow::before { background: #f59e0b; }
    .portal-map-lg-badge {
      position: absolute;
      top: 0.5rem;
      left: 0.5rem;
      z-index: 500;
      background: rgba(255, 255, 255, 0.94);
      border: 1px solid rgba(0, 0, 0, 0.1);
      border-radius: 6px;
      padding: 0.35rem 0.55rem;
      font-size: 0.6875rem;
      font-weight: 700;
      color: #1a2b4b;
      box-shadow: 0 1px 6px rgba(0, 0, 0, 0.1);
      pointer-events: none;
      max-width: calc(100% - 1rem);
    }
    .portal-map-lg-badge small {
      display: block;
      font-size: 0.5625rem;
      font-weight: 500;
      color: #666;
      margin-top: 0.1rem;
    }
