/* Mapbox GL JS Custom Theme Overrides */ /* Import Google Fonts */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Outfit:wght@400;500;600;700&display=swap'); /* Global Mapbox Container */ .mapboxgl-map { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background-color: #0a1929; } /* Mapbox Controls Styling */ .mapboxgl-ctrl-group { background: rgba(10, 25, 41, 0.9); backdrop-filter: blur(12px); border: 1px solid rgba(0, 217, 255, 0.2); border-radius: 12px; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4); } .mapboxgl-ctrl-group button { background-color: transparent; border: none; color: #00d9ff; transition: all 0.2s ease; } .mapboxgl-ctrl-group button:hover { background-color: rgba(0, 217, 255, 0.1); color: #00ff88; } .mapboxgl-ctrl-group button+button { border-top: 1px solid rgba(255, 255, 255, 0.1); } /* Zoom Controls */ .mapboxgl-ctrl-zoom-in, .mapboxgl-ctrl-zoom-out { font-size: 18px; font-weight: 600; } /* Attribution */ .mapboxgl-ctrl-attrib { background: rgba(10, 25, 41, 0.8); backdrop-filter: blur(8px); border-radius: 8px; padding: 4px 8px; font-size: 10px; color: rgba(255, 255, 255, 0.5); } .mapboxgl-ctrl-attrib a { color: #00d9ff; text-decoration: none; } /* Popup Styling (if using default Mapbox popups) */ .mapboxgl-popup-content { background: rgba(10, 25, 41, 0.95); backdrop-filter: blur(16px); border: 1px solid rgba(0, 217, 255, 0.2); border-radius: 12px; padding: 16px; color: #ffffff; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5); } .mapboxgl-popup-close-button { color: #ff3366; font-size: 20px; padding: 4px 8px; } .mapboxgl-popup-close-button:hover { background-color: rgba(255, 51, 102, 0.1); color: #ff6699; } .mapboxgl-popup-tip { border-top-color: rgba(10, 25, 41, 0.95); } /* Marker Styling */ .mapboxgl-marker { cursor: pointer; transition: transform 0.2s ease; } .mapboxgl-marker:hover { transform: scale(1.1); z-index: 1; } /* Canvas Container */ .mapboxgl-canvas-container { cursor: grab; } .mapboxgl-canvas-container:active { cursor: grabbing; } /* Loading Overlay */ .map-loading-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(10, 25, 41, 0.8); backdrop-filter: blur(8px); display: flex; align-items: center; justify-content: center; z-index: 999; color: #00d9ff; font-family: 'Inter', sans-serif; font-size: 16px; font-weight: 600; } /* Map Container */ .map-wrapper { position: relative; width: 100%; height: 100%; overflow: hidden; } /* Custom Marker Classes */ .data-point-marker { width: 20px; height: 20px; border-radius: 50%; cursor: pointer; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; } .data-point-marker::before { content: ''; position: absolute; top: -4px; left: -4px; right: -4px; bottom: -4px; border-radius: 50%; opacity: 0; transition: opacity 0.3s ease; } .data-point-marker:hover::before { opacity: 0.3; animation: ripple 1.5s ease-out infinite; } /* Cluster Marker */ .cluster-marker { border-radius: 50%; display: flex; align-items: center; justify-content: center; font-family: 'Outfit', sans-serif; font-weight: 700; color: #ffffff; cursor: pointer; transition: all 0.3s ease; position: relative; } .cluster-marker:hover { transform: scale(1.1); z-index: 10; } .cluster-marker::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; border-radius: 50%; border: 2px solid currentColor; opacity: 0.3; animation: pulse 2s ease-in-out infinite; }