@defra/interactive-map 0.0.3-alpha → 0.0.5-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -57
- package/dist/css/index.css +1 -1
- package/dist/esm/im-core.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/umd/im-core.js +1 -1
- package/dist/umd/index.js +1 -1
- package/docs/api/button-definition.md +176 -0
- package/docs/api/context.md +124 -0
- package/docs/api/control-definition.md +72 -0
- package/docs/api/icon-definition.md +28 -0
- package/docs/api/map-style-config.md +76 -0
- package/docs/api/marker-config.md +51 -0
- package/docs/api/panel-definition.md +117 -0
- package/docs/api/slots.md +25 -0
- package/docs/api.md +721 -0
- package/docs/architecture.md +139 -0
- package/docs/building-a-plugin.md +149 -0
- package/docs/getting-started.md +46 -0
- package/docs/govuk-prototype.md +0 -0
- package/docs/plugins/interact.md +205 -0
- package/docs/plugins/map-styles.md +84 -0
- package/docs/plugins/plugin-context.md +67 -0
- package/docs/plugins/plugin-descriptor.md +71 -0
- package/docs/plugins/plugin-manifest.md +118 -0
- package/docs/plugins/scale-bar.md +62 -0
- package/docs/plugins/search.md +162 -0
- package/docs/plugins.md +116 -0
- package/govuk-prototype-kit.config.json +7 -7
- package/package.json +16 -2
- package/plugins/beta/datasets/dist/esm/im-datasets-plugin.js +2 -0
- package/plugins/beta/datasets/dist/esm/index.js +2 -0
- package/plugins/beta/datasets/dist/umd/im-datasets-plugin.js +2 -0
- package/plugins/beta/datasets/dist/umd/index.js +2 -0
- package/plugins/beta/datasets/src/datasets.js +113 -0
- package/plugins/beta/datasets/src/fetch/createDynamicSource.js +206 -0
- package/plugins/beta/datasets/src/fetch/fetchGeoJSON.js +38 -0
- package/plugins/{datasets → beta/datasets}/src/handleSetMapStyle.js +8 -1
- package/plugins/{datasets → beta/datasets}/src/manifest.js +1 -1
- package/plugins/{datasets → beta/datasets}/src/mapLayers.js +42 -4
- package/plugins/{datasets → beta/datasets}/src/panels/Key.jsx +1 -1
- package/plugins/beta/datasets/src/utils/bbox.js +115 -0
- package/plugins/beta/draw-ml/dist/css/index.css +1 -0
- package/plugins/beta/draw-ml/dist/esm/im-draw-ml-plugin.js +1 -0
- package/plugins/beta/draw-ml/dist/esm/index.js +2 -0
- package/plugins/beta/draw-ml/dist/umd/im-draw-ml-plugin.js +1 -0
- package/plugins/beta/draw-ml/dist/umd/index.js +2 -0
- package/plugins/beta/draw-ml/src/api/addFeature.js +27 -0
- package/plugins/{draw-ml → beta/draw-ml}/src/api/editFeature.js +17 -6
- package/plugins/beta/draw-ml/src/api/merge.js +9 -0
- package/plugins/beta/draw-ml/src/api/newLine.js +68 -0
- package/plugins/beta/draw-ml/src/api/newPolygon.js +68 -0
- package/plugins/beta/draw-ml/src/api/split.js +81 -0
- package/plugins/{draw-ml → beta/draw-ml}/src/defaults.js +3 -0
- package/plugins/beta/draw-ml/src/draw.scss +32 -0
- package/plugins/beta/draw-ml/src/events.js +171 -0
- package/plugins/beta/draw-ml/src/manifest.js +132 -0
- package/plugins/{draw-ml → beta/draw-ml}/src/mapboxDraw.js +51 -2
- package/plugins/{draw-ml → beta/draw-ml}/src/mapboxSnap.js +18 -12
- package/plugins/beta/draw-ml/src/modes/createDrawMode.js +497 -0
- package/plugins/beta/draw-ml/src/modes/drawLineMode.js +18 -0
- package/plugins/beta/draw-ml/src/modes/drawPolygonMode.js +16 -0
- package/plugins/beta/draw-ml/src/modes/editVertex/geometryHelpers.js +135 -0
- package/plugins/beta/draw-ml/src/modes/editVertex/helpers.js +2 -0
- package/plugins/beta/draw-ml/src/modes/editVertex/touchHandlers.js +134 -0
- package/plugins/beta/draw-ml/src/modes/editVertex/undoHandlers.js +133 -0
- package/plugins/beta/draw-ml/src/modes/editVertex/vertexOperations.js +141 -0
- package/plugins/beta/draw-ml/src/modes/editVertex/vertexQueries.js +121 -0
- package/plugins/beta/draw-ml/src/modes/editVertexMode.js +437 -0
- package/plugins/{draw-ml → beta/draw-ml}/src/reducer.js +30 -2
- package/plugins/{draw-ml → beta/draw-ml}/src/styles.js +66 -36
- package/plugins/beta/draw-ml/src/undoStack.js +50 -0
- package/plugins/beta/draw-ml/src/utils/debounce.js +16 -0
- package/plugins/beta/draw-ml/src/utils/flattenStyleProperties.js +49 -0
- package/plugins/beta/draw-ml/src/utils/spatial.js +258 -0
- package/plugins/beta/frame/dist/esm/im-frame-plugin.js +1 -0
- package/plugins/beta/frame/dist/esm/index.js +2 -0
- package/plugins/beta/frame/dist/umd/im-frame-plugin.js +1 -0
- package/plugins/beta/frame/dist/umd/index.js +2 -0
- package/plugins/{frame → beta/frame}/src/Frame.jsx +1 -1
- package/plugins/{map-styles → beta/map-styles}/dist/css/index.css +1 -1
- package/plugins/beta/map-styles/dist/esm/im-map-styles-plugin.js +1 -0
- package/plugins/beta/map-styles/dist/esm/index.js +2 -0
- package/plugins/beta/map-styles/dist/umd/im-map-styles-plugin.js +1 -0
- package/plugins/beta/map-styles/dist/umd/index.js +2 -0
- package/plugins/{map-styles → beta/map-styles}/src/MapStyles.jsx +1 -1
- package/plugins/{map-styles → beta/map-styles}/src/manifest.js +8 -10
- package/plugins/{map-styles → beta/map-styles}/src/mapStyles.scss +4 -1
- package/plugins/beta/scale-bar/dist/esm/im-scale-bar-plugin.js +1 -0
- package/plugins/beta/scale-bar/dist/esm/index.js +2 -0
- package/plugins/beta/scale-bar/dist/umd/im-scale-bar-plugin.js +1 -0
- package/plugins/beta/scale-bar/dist/umd/index.js +2 -0
- package/plugins/beta/use-location/dist/esm/im-use-location-plugin.js +1 -0
- package/plugins/beta/use-location/dist/esm/index.js +2 -0
- package/plugins/beta/use-location/dist/umd/im-use-location-plugin.js +1 -0
- package/plugins/beta/use-location/dist/umd/index.js +2 -0
- package/plugins/interact/dist/css/index.css +1 -1
- package/plugins/interact/dist/esm/im-interact-plugin.js +1 -1
- package/plugins/interact/dist/esm/index.js +1 -1
- package/plugins/interact/dist/umd/im-interact-plugin.js +1 -1
- package/plugins/interact/dist/umd/index.js +1 -1
- package/plugins/interact/src/InteractInit.jsx +1 -1
- package/plugins/interact/src/InteractInit.test.js +97 -0
- package/plugins/interact/src/api/clear.test.js +18 -0
- package/plugins/interact/src/api/disable.test.js +12 -0
- package/plugins/interact/src/api/enable.test.js +48 -0
- package/plugins/interact/src/api/selectFeature.test.js +33 -0
- package/plugins/interact/src/api/unselectFeature.test.js +33 -0
- package/plugins/interact/src/defaults.js +2 -0
- package/plugins/interact/src/events.js +37 -52
- package/plugins/interact/src/events.test.js +186 -0
- package/plugins/interact/src/hooks/useHighlightSync.js +1 -1
- package/plugins/interact/src/hooks/useHighlightSync.test.js +212 -0
- package/plugins/interact/src/hooks/useInteractionHandlers.js +80 -41
- package/plugins/interact/src/hooks/useInteractionHandlers.test.js +316 -0
- package/plugins/interact/src/index.test.js +22 -0
- package/plugins/interact/src/interact.scss +6 -0
- package/plugins/interact/src/manifest.js +1 -1
- package/plugins/interact/src/manifest.test.js +94 -0
- package/plugins/interact/src/reducer.js +28 -21
- package/plugins/interact/src/reducer.test.js +155 -0
- package/plugins/interact/src/utils/buildStylesMap.test.js +57 -0
- package/plugins/interact/src/utils/featureQueries.js +2 -2
- package/plugins/interact/src/utils/featureQueries.test.js +56 -0
- package/plugins/interact/src/utils/spatial.js +95 -0
- package/plugins/interact/src/utils/spatial.test.js +93 -0
- package/plugins/search/dist/css/index.css +1 -1
- package/plugins/search/dist/esm/im-search-plugin.js +1 -1
- package/plugins/search/dist/esm/index.js +1 -1
- package/plugins/search/dist/umd/im-search-plugin.js +1 -1
- package/plugins/search/dist/umd/index.js +1 -1
- package/plugins/search/src/Search.jsx +2 -2
- package/plugins/search/src/components/Form/Form.jsx +1 -1
- package/plugins/search/src/components/Suggestions/Suggestions.jsx +5 -5
- package/plugins/search/src/datasets.js +1 -1
- package/plugins/search/src/defaults.js +3 -0
- package/plugins/search/src/events/fetchSuggestions.js +48 -53
- package/plugins/search/src/events/formHandlers.js +3 -2
- package/plugins/search/src/events/index.js +1 -1
- package/plugins/search/src/events/inputHandlers.js +3 -1
- package/plugins/search/src/events/suggestionHandlers.js +12 -3
- package/plugins/search/src/search.scss +4 -1
- package/plugins/search/src/utils/parseOsNamesResults.js +15 -19
- package/providers/{esri → beta/esri}/src/esriProvider.js +1 -1
- package/providers/{esri → beta/esri}/src/index.js +1 -1
- package/providers/{esri → beta/esri}/src/mapEvents.js +2 -2
- package/providers/beta/open-names/dist/esm/im-reverse-geocode.js +2 -0
- package/providers/beta/open-names/dist/esm/index.js +2 -0
- package/providers/beta/open-names/dist/umd/im-reverse-geocode.js +2 -0
- package/providers/beta/open-names/dist/umd/im-reverse-geocode.js.LICENSE.txt +1 -0
- package/providers/beta/open-names/dist/umd/index.js +2 -0
- package/providers/beta/open-names/dist/umd/index.js.LICENSE.txt +1 -0
- package/providers/maplibre/dist/esm/im-maplibre-framework.js +1 -1
- package/providers/maplibre/dist/esm/im-maplibre-framework.js.LICENSE.txt +1 -1
- package/providers/maplibre/dist/esm/im-maplibre-provider.js +1 -1
- package/providers/maplibre/dist/esm/index.js +1 -1
- package/providers/maplibre/dist/umd/im-maplibre-framework.js +1 -1
- package/providers/maplibre/dist/umd/im-maplibre-framework.js.LICENSE.txt +1 -1
- package/providers/maplibre/dist/umd/im-maplibre-provider.js +1 -1
- package/providers/maplibre/dist/umd/index.js +1 -1
- package/providers/maplibre/src/defaults.js +3 -2
- package/providers/maplibre/src/index.js +36 -20
- package/providers/maplibre/src/maplibreProvider.js +140 -11
- package/providers/maplibre/src/utils/detectWebgl.js +1 -2
- package/providers/maplibre/src/utils/highlightFeatures.js +78 -67
- package/providers/maplibre/src/utils/labels.js +174 -120
- package/providers/maplibre/src/utils/maplibreFixes.js +2 -2
- package/providers/maplibre/src/utils/queryFeatures.js +146 -0
- package/providers/maplibre/src/utils/spatial.js +14 -17
- package/sonar-project.properties +40 -3
- package/src/App/components/Actions/Actions.jsx +2 -2
- package/src/App/components/Actions/Actions.module.scss +2 -2
- package/src/App/components/KeyboardHelp/KeyboardHelp.jsx +3 -1
- package/src/App/components/KeyboardHelp/KeyboardHelp.test.jsx +9 -0
- package/src/App/components/Logo/Logo.jsx +1 -1
- package/src/App/components/MapButton/MapButton.jsx +217 -41
- package/src/App/components/MapButton/MapButton.module.scss +32 -21
- package/src/App/components/MapButton/MapButton.test.jsx +128 -84
- package/src/App/components/Markers/Markers.jsx +1 -1
- package/src/App/components/Markers/Markers.module.scss +0 -5
- package/src/App/components/Panel/Panel.jsx +75 -45
- package/src/App/components/Panel/Panel.module.scss +18 -24
- package/src/App/components/Panel/Panel.test.jsx +18 -0
- package/src/App/components/PopupMenu/PopupMenu.jsx +246 -0
- package/src/App/components/PopupMenu/PopupMenu.module.scss +70 -0
- package/src/App/components/PopupMenu/PopupMenu.test.jsx +304 -0
- package/src/App/components/Tooltip/Tooltip.jsx +4 -2
- package/src/App/components/Tooltip/getTooltipPosition.js +1 -1
- package/src/App/components/Viewport/MapController.jsx +1 -1
- package/src/App/components/Viewport/MapStatus.jsx +1 -1
- package/src/App/components/Viewport/Viewport.jsx +2 -2
- package/src/App/components/Viewport/Viewport.module.scss +2 -2
- package/src/App/controls/keyboardActions.js +3 -2
- package/src/App/controls/keyboardShortcuts.js +4 -2
- package/src/App/hooks/useButtonStateEvaluator.js +58 -45
- package/src/App/hooks/useButtonStateEvaluator.test.js +36 -3
- package/src/App/hooks/useCrossHairAPI.js +49 -47
- package/src/App/hooks/useFocusVisible.js +2 -2
- package/src/App/hooks/useInterfaceAPI.js +36 -1
- package/src/App/hooks/useKeyboardHint.js +1 -1
- package/src/App/hooks/useKeyboardShortcuts.js +4 -2
- package/src/App/hooks/useMapAnnouncements.js +34 -32
- package/src/App/hooks/useMapEvents.js +12 -1
- package/src/App/hooks/useMapProviderOverrides.js +3 -3
- package/src/App/hooks/useMapStateSync.js +7 -1
- package/src/App/hooks/useMapURLSync.js +6 -1
- package/src/App/hooks/useMarkersAPI.js +88 -50
- package/src/App/hooks/useMediaQueryDispatch.test.js +48 -0
- package/src/App/hooks/useModalPanelBehaviour.js +46 -40
- package/src/App/hooks/useResizeObserver.js +2 -2
- package/src/App/initialiseApp.js +45 -38
- package/src/App/layout/Layout.jsx +6 -4
- package/src/App/layout/layout.module.scss +13 -17
- package/src/App/registry/keyboardShortcutRegistry.js +12 -2
- package/src/App/registry/keyboardShortcutRegistry.test.js +28 -0
- package/src/App/registry/mergeManifests.js +1 -1
- package/src/App/registry/panelRegistry.js +1 -1
- package/src/App/registry/panelRegistry.test.js +30 -1
- package/src/App/registry/pluginRegistry.js +14 -51
- package/src/App/registry/pluginRegistry.test.js +54 -6
- package/src/App/renderer/HtmlElementHost.jsx +186 -0
- package/src/App/renderer/HtmlElementHost.test.jsx +231 -0
- package/src/App/renderer/mapButtons.js +12 -9
- package/src/App/renderer/mapButtons.test.js +6 -4
- package/src/App/renderer/mapControls.js +6 -0
- package/src/App/renderer/mapControls.test.js +10 -2
- package/src/App/renderer/mapPanels.js +39 -26
- package/src/App/renderer/mapPanels.test.js +29 -0
- package/src/App/renderer/pluginWrapper.test.js +28 -0
- package/src/App/renderer/slotHelpers.js +60 -0
- package/src/App/renderer/slotHelpers.test.js +82 -0
- package/src/App/store/AppProvider.jsx +3 -0
- package/src/App/store/AppProvider.test.jsx +40 -0
- package/src/App/store/PluginProvider.jsx +7 -5
- package/src/App/store/appActionsMap.js +46 -1
- package/src/App/store/appActionsMap.test.js +21 -0
- package/src/App/store/appReducer.js +1 -0
- package/src/App/store/mapActionsMap.js +12 -24
- package/src/App/store/mapReducer.js +1 -1
- package/src/InteractiveMap/InteractiveMap.js +194 -13
- package/src/InteractiveMap/InteractiveMap.test.js +164 -2
- package/src/InteractiveMap/behaviourController.js +12 -2
- package/src/InteractiveMap/behaviourController.test.js +82 -1
- package/src/InteractiveMap/deviceChecker.js +1 -1
- package/src/InteractiveMap/deviceChecker.test.js +2 -2
- package/src/InteractiveMap/historyManager.js +41 -5
- package/src/InteractiveMap/historyManager.test.js +37 -6
- package/src/InteractiveMap/polyfills.js +39 -0
- package/src/InteractiveMap/polyfills.test.js +127 -0
- package/src/config/appConfig.js +5 -5
- package/src/config/appConfig.test.js +107 -42
- package/src/config/defaults.js +30 -20
- package/src/config/events.js +110 -4
- package/src/index.js +5 -2
- package/src/index.umd.js +1 -1
- package/src/scss/main.scss +1 -0
- package/src/scss/settings/_dimensions.scss +6 -2
- package/src/scss/tools/_border-focus.scss +20 -4
- package/src/services/eventBus.test.js +24 -1
- package/src/test-utils.js +1 -0
- package/src/types.js +590 -0
- package/src/utils/detectBreakpoint.js +78 -77
- package/src/utils/detectBreakpoint.test.js +50 -4
- package/src/utils/detectInterfaceType.js +4 -4
- package/src/utils/getIsFullscreen.js +3 -1
- package/src/utils/getSafeZoneInset.js +23 -7
- package/src/utils/getSafeZoneInset.test.js +18 -0
- package/src/utils/mapStateSync.js +3 -3
- package/src/utils/queryString.js +1 -1
- package/src/utils/stringToKebab.js +1 -1
- package/src/utils/toggleInertElements.js +37 -12
- package/webpack.dev.mjs +3 -4
- package/webpack.esm.mjs +8 -8
- package/webpack.umd.mjs +8 -8
- package/plugins/datasets/dist/esm/im-datasets-plugin.js +0 -1
- package/plugins/datasets/dist/esm/index.js +0 -2
- package/plugins/datasets/dist/umd/im-datasets-plugin.js +0 -1
- package/plugins/datasets/dist/umd/index.js +0 -2
- package/plugins/datasets/src/datasets.js +0 -60
- package/plugins/datasets/src/utils/bbox.js +0 -4
- package/plugins/draw-ml/dist/css/index.css +0 -1
- package/plugins/draw-ml/dist/esm/im-draw-ml-plugin.js +0 -1
- package/plugins/draw-ml/dist/esm/index.js +0 -2
- package/plugins/draw-ml/dist/umd/im-draw-ml-plugin.js +0 -1
- package/plugins/draw-ml/dist/umd/index.js +0 -2
- package/plugins/draw-ml/src/api/addFeature.js +0 -15
- package/plugins/draw-ml/src/api/newPolygon.js +0 -43
- package/plugins/draw-ml/src/draw.scss +0 -9
- package/plugins/draw-ml/src/events.js +0 -127
- package/plugins/draw-ml/src/manifest.js +0 -100
- package/plugins/draw-ml/src/modes/drawVertexMode.js +0 -275
- package/plugins/draw-ml/src/modes/editVertexMode.js +0 -426
- package/plugins/draw-ml/src/utils.js +0 -102
- package/plugins/frame/dist/esm/im-frame-plugin.js +0 -1
- package/plugins/frame/dist/esm/index.js +0 -2
- package/plugins/frame/dist/umd/im-frame-plugin.js +0 -1
- package/plugins/frame/dist/umd/index.js +0 -2
- package/plugins/map-styles/dist/esm/im-map-styles-plugin.js +0 -1
- package/plugins/map-styles/dist/esm/index.js +0 -2
- package/plugins/map-styles/dist/umd/im-map-styles-plugin.js +0 -1
- package/plugins/map-styles/dist/umd/index.js +0 -2
- package/plugins/scale-bar/dist/esm/im-scale-bar-plugin.js +0 -1
- package/plugins/scale-bar/dist/esm/index.js +0 -2
- package/plugins/scale-bar/dist/umd/im-scale-bar-plugin.js +0 -1
- package/plugins/scale-bar/dist/umd/index.js +0 -2
- package/plugins/search/src/utils/fetchDataset.js +0 -23
- package/plugins/use-location/dist/esm/im-use-location-plugin.js +0 -1
- package/plugins/use-location/dist/esm/index.js +0 -2
- package/plugins/use-location/dist/umd/im-use-location-plugin.js +0 -1
- package/plugins/use-location/dist/umd/index.js +0 -2
- package/providers/maplibre/dist/esm/im-maplibre-legacy-framework.js +0 -1
- package/providers/maplibre/dist/umd/im-maplibre-legacy-framework.js +0 -1
- package/providers/open-names/dist/esm/im-reverse-geocode.js +0 -2
- package/providers/open-names/dist/esm/index.js +0 -2
- package/providers/open-names/dist/umd/im-reverse-geocode.js +0 -2
- package/providers/open-names/dist/umd/index.js +0 -2
- /package/docs/architecture/{ARCHITECTURE_DIAGRAMS.md → architecture-diagrams.md} +0 -0
- /package/plugins/{datasets → beta/datasets}/dist/css/index.css +0 -0
- /package/plugins/{datasets/dist/esm/index.js.LICENSE.txt → beta/datasets/dist/esm/im-datasets-plugin.js.LICENSE.txt} +0 -0
- /package/plugins/{datasets/dist/umd → beta/datasets/dist/esm}/index.js.LICENSE.txt +0 -0
- /package/plugins/{draw-ml/dist/esm/index.js.LICENSE.txt → beta/datasets/dist/umd/im-datasets-plugin.js.LICENSE.txt} +0 -0
- /package/plugins/{draw-ml → beta/datasets}/dist/umd/index.js.LICENSE.txt +0 -0
- /package/plugins/{datasets → beta/datasets}/src/DatasetsInit.jsx +0 -0
- /package/plugins/{datasets → beta/datasets}/src/api/addDataset.js +0 -0
- /package/plugins/{datasets → beta/datasets}/src/api/hideDataset.js +0 -0
- /package/plugins/{datasets → beta/datasets}/src/api/hideFeatures.js +0 -0
- /package/plugins/{datasets → beta/datasets}/src/api/removeDataset.js +0 -0
- /package/plugins/{datasets → beta/datasets}/src/api/showDataset.js +0 -0
- /package/plugins/{datasets → beta/datasets}/src/api/showFeatures.js +0 -0
- /package/plugins/{datasets → beta/datasets}/src/datasets.scss +0 -0
- /package/plugins/{datasets → beta/datasets}/src/defaults.js +0 -0
- /package/plugins/{datasets → beta/datasets}/src/index.js +0 -0
- /package/plugins/{datasets → beta/datasets}/src/panels/Key.module.scss +0 -0
- /package/plugins/{datasets → beta/datasets}/src/panels/Layers.jsx +0 -0
- /package/plugins/{datasets → beta/datasets}/src/panels/Layers.module.scss +0 -0
- /package/plugins/{datasets → beta/datasets}/src/reducer.js +0 -0
- /package/plugins/{datasets → beta/datasets}/src/utils/debounce.js +0 -0
- /package/plugins/{datasets → beta/datasets}/src/utils/filters.js +0 -0
- /package/plugins/{draw-es → beta/draw-es}/src/DrawInit.jsx +0 -0
- /package/plugins/{draw-es → beta/draw-es}/src/api/addFeature.js +0 -0
- /package/plugins/{draw-es → beta/draw-es}/src/api/deleteFeature.js +0 -0
- /package/plugins/{draw-es → beta/draw-es}/src/api/editFeature.js +0 -0
- /package/plugins/{draw-es → beta/draw-es}/src/api/newPolygon.js +0 -0
- /package/plugins/{draw-es → beta/draw-es}/src/events.js +0 -0
- /package/plugins/{draw-es → beta/draw-es}/src/graphic.js +0 -0
- /package/plugins/{draw-es → beta/draw-es}/src/index.js +0 -0
- /package/plugins/{draw-es → beta/draw-es}/src/manifest.js +0 -0
- /package/plugins/{draw-es → beta/draw-es}/src/reducer.js +0 -0
- /package/plugins/{draw-es → beta/draw-es}/src/sketchViewModel.js +0 -0
- /package/plugins/{frame → beta/draw-ml}/dist/esm/index.js.LICENSE.txt +0 -0
- /package/plugins/{frame → beta/draw-ml}/dist/umd/index.js.LICENSE.txt +0 -0
- /package/plugins/{draw-ml → beta/draw-ml}/src/DrawInit.jsx +0 -0
- /package/plugins/{draw-ml → beta/draw-ml}/src/api/deleteFeature.js +0 -0
- /package/plugins/{draw-ml → beta/draw-ml}/src/index.js +0 -0
- /package/plugins/{draw-ml → beta/draw-ml}/src/modes/disabledMode.js +0 -0
- /package/plugins/{draw-ml/src → beta/draw-ml/src/utils}/snapHelpers.js +0 -0
- /package/plugins/{frame → beta/frame}/dist/css/index.css +0 -0
- /package/plugins/{map-styles → beta/frame}/dist/esm/index.js.LICENSE.txt +0 -0
- /package/plugins/{map-styles → beta/frame}/dist/umd/index.js.LICENSE.txt +0 -0
- /package/plugins/{frame → beta/frame}/package.json +0 -0
- /package/plugins/{frame → beta/frame}/src/FrameInit.jsx +0 -0
- /package/plugins/{frame → beta/frame}/src/api/addFrame.js +0 -0
- /package/plugins/{frame → beta/frame}/src/api/editFeature.js +0 -0
- /package/plugins/{frame → beta/frame}/src/config.js +0 -0
- /package/plugins/{frame → beta/frame}/src/frame.scss +0 -0
- /package/plugins/{frame → beta/frame}/src/index.js +0 -0
- /package/plugins/{frame → beta/frame}/src/manifest.js +0 -0
- /package/plugins/{frame → beta/frame}/src/reducer.js +0 -0
- /package/plugins/{frame → beta/frame}/src/utils.js +0 -0
- /package/plugins/{scale-bar → beta/map-styles}/dist/esm/index.js.LICENSE.txt +0 -0
- /package/plugins/{scale-bar → beta/map-styles}/dist/umd/index.js.LICENSE.txt +0 -0
- /package/plugins/{map-styles → beta/map-styles}/src/MapStylesInit.jsx +0 -0
- /package/plugins/{map-styles → beta/map-styles}/src/config.js +0 -0
- /package/plugins/{map-styles → beta/map-styles}/src/index.js +0 -0
- /package/plugins/{scale-bar → beta/scale-bar}/dist/css/index.css +0 -0
- /package/plugins/{use-location → beta/scale-bar}/dist/esm/index.js.LICENSE.txt +0 -0
- /package/plugins/{use-location → beta/scale-bar}/dist/umd/index.js.LICENSE.txt +0 -0
- /package/plugins/{scale-bar → beta/scale-bar}/package.json +0 -0
- /package/plugins/{scale-bar → beta/scale-bar}/src/ScaleBar.jsx +0 -0
- /package/plugins/{scale-bar → beta/scale-bar}/src/ScaleBar.test.jsx +0 -0
- /package/plugins/{scale-bar → beta/scale-bar}/src/index.js +0 -0
- /package/plugins/{scale-bar → beta/scale-bar}/src/index.test.js +0 -0
- /package/plugins/{scale-bar → beta/scale-bar}/src/manifest.js +0 -0
- /package/plugins/{scale-bar → beta/scale-bar}/src/scaleBar.scss +0 -0
- /package/plugins/{scale-bar → beta/scale-bar}/src/utils.js +0 -0
- /package/plugins/{scale-bar → beta/scale-bar}/src/utils.test.js +0 -0
- /package/{providers/open-names → plugins/beta/use-location}/dist/esm/index.js.LICENSE.txt +0 -0
- /package/{providers/open-names → plugins/beta/use-location}/dist/umd/index.js.LICENSE.txt +0 -0
- /package/plugins/{use-location → beta/use-location}/src/UseLocation.jsx +0 -0
- /package/plugins/{use-location → beta/use-location}/src/UseLocationInit.jsx +0 -0
- /package/plugins/{use-location → beta/use-location}/src/defaults.js +0 -0
- /package/plugins/{use-location → beta/use-location}/src/events.js +0 -0
- /package/plugins/{use-location → beta/use-location}/src/index.js +0 -0
- /package/plugins/{use-location → beta/use-location}/src/manifest.js +0 -0
- /package/plugins/{use-location → beta/use-location}/src/reducer.js +0 -0
- /package/providers/{esri → beta/esri}/src/appEvents.js +0 -0
- /package/providers/{esri → beta/esri}/src/defaults.js +0 -0
- /package/providers/{esri → beta/esri}/src/esriProvider.scss +0 -0
- /package/providers/{esri → beta/esri}/src/utils/coords.js +0 -0
- /package/providers/{esri → beta/esri}/src/utils/detectWebGL.js +0 -0
- /package/providers/{esri → beta/esri}/src/utils/esriFixes.js +0 -0
- /package/providers/{esri → beta/esri}/src/utils/query.js +0 -0
- /package/providers/{esri → beta/esri}/src/utils/spatial.js +0 -0
- /package/providers/{open-names → beta/open-names}/dist/esm/im-reverse-geocode.js.LICENSE.txt +0 -0
- /package/providers/{open-names/dist/umd/im-reverse-geocode.js.LICENSE.txt → beta/open-names/dist/esm/index.js.LICENSE.txt} +0 -0
- /package/providers/{open-names → beta/open-names}/src/index.js +0 -0
- /package/providers/{open-names → beta/open-names}/src/reverseGeocode.js +0 -0
- /package/providers/{open-names → beta/open-names}/src/utils/mapToLocationModel.js +0 -0
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# InteractiveMap
|
|
2
2
|
|
|
3
3
|
[](https://github.com/defra/interactive-map/actions)
|
|
4
4
|
[](https://sonarcloud.io/summary/new_code?id=DEFRA_interactive-map)
|
|
@@ -6,7 +6,13 @@
|
|
|
6
6
|
[](https://libraries.io/npm/@defra%2Finteractive-map)
|
|
7
7
|
[](LICENSE)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
**InteractiveMap** is a lightweight map component designed for public-facing government services, and available for anyone to use.
|
|
10
|
+
Built to GOV.UK standards, with accessibility at its core, Interactive Map supports a wide range of users across abilities, devices and input methods.
|
|
11
|
+
It is open source and works with multiple mapping engines. The component can be extended through plugins to meet the specific needs of a service.
|
|
12
|
+
|
|
13
|
+
See [examples of InteractiveMap](https://google.co.uk).
|
|
14
|
+
|
|
15
|
+
See [getting started](./docs/getting-started.md) developer guide.
|
|
10
16
|
|
|
11
17
|
**⚠️ This project is currently in beta and is not yet stable. Documentation and support are not yet available.**
|
|
12
18
|
|
|
@@ -14,65 +20,18 @@ A lightweight, accessible map component for frontend applications. Built with ac
|
|
|
14
20
|
<img src="docs/assets/screens-white.jpg" alt="Screenshots of map component" width="800">
|
|
15
21
|
</p>
|
|
16
22
|
|
|
17
|
-
##
|
|
18
|
-
|
|
19
|
-
Interactive Map is an open-source mapping solution designed for government services, but available for anyone to use. It provides a core map component that can be extended with plugins to suit your specific needs.
|
|
20
|
-
|
|
21
|
-
The component takes an accessibility-first approach, ensuring mapping tools in government services are usable by all citizens, regardless of their abilities or assistive technologies.
|
|
22
|
-
|
|
23
|
-
## Features
|
|
24
|
-
|
|
25
|
-
### Flexible architecture
|
|
26
|
-
- **Core component** - Lightweight base map with essential functionality
|
|
27
|
-
- **Plugin system** - Add only the capabilities you need:
|
|
28
|
-
- Drawing tools (ES and MapLibre variants)
|
|
29
|
-
- Search functionality
|
|
30
|
-
- Custom datasets
|
|
31
|
-
- Map styling controls
|
|
32
|
-
- Scale bars
|
|
33
|
-
- Location services
|
|
34
|
-
- Interaction handlers
|
|
35
|
-
- Framing and layout tools
|
|
36
|
-
|
|
37
|
-
### Government-ready
|
|
38
|
-
- Built to GOV.UK standards
|
|
39
|
-
- Designed for integration with government services
|
|
40
|
-
- Follows established design patterns and principles
|
|
41
|
-
|
|
42
|
-
## Tech Stack
|
|
43
|
-
|
|
44
|
-
- **React** - UI component framework
|
|
45
|
-
- **MapLibre** - Primary mapping engine
|
|
46
|
-
- **Webpack** - Module bundling (UMD, ESM builds)
|
|
47
|
-
- **Jest** - Testing framework
|
|
48
|
-
- **SCSS** - Styling
|
|
49
|
-
- **Babel** - JavaScript compilation
|
|
50
|
-
|
|
51
|
-
## Map Providers
|
|
52
|
-
|
|
53
|
-
The component uses an injectable provider architecture, allowing you to choose the mapping engine that best suits your needs. Application teams can select the provider based on their specific requirements.
|
|
54
|
-
|
|
55
|
-
### MapLibre (Recommended)
|
|
56
|
-
|
|
57
|
-
Our reference provider, offering the most complete and tested experience:
|
|
58
|
-
|
|
59
|
-
- **Out of the box** - Works immediately with no additional configuration
|
|
60
|
-
- **Modern and lightweight** - Better performance with smaller bundle sizes
|
|
61
|
-
- **Vector tile support** - Most comprehensive support for vector tiles
|
|
62
|
-
- **Enhanced accessibility** - Improved support for assistive technologies
|
|
63
|
-
|
|
64
|
-
### Esri (Experimental)
|
|
23
|
+
## Documentation
|
|
65
24
|
|
|
66
|
-
|
|
25
|
+
[Getting started](./docs/getting-started.md)
|
|
67
26
|
|
|
68
|
-
|
|
27
|
+
[API Reference](./docs/api.md)
|
|
69
28
|
|
|
70
|
-
|
|
29
|
+
[Plugins](./docs/plugins.md)
|
|
71
30
|
|
|
72
|
-
|
|
31
|
+
[Building a Plugin](./docs/building-a-plugin.md)
|
|
73
32
|
|
|
74
|
-
|
|
33
|
+
[Architecture](./docs/architecture.md)
|
|
75
34
|
|
|
76
|
-
##
|
|
35
|
+
## Contributing
|
|
77
36
|
|
|
78
|
-
|
|
37
|
+
To follow...
|
package/dist/css/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--foreground-color: #0b0c0c;--background-color: #ffffff;--focus-border-color: #0b0c0c;--focus-outline-color: #ffdd00;--button-background-color: #ffffff;--button-hover-color: #f3f2f1;--primary-button-color: #00703c;--primary-button-hover-color: #005a30;--primary-button-box-shadow: inset 0 -2px 0 #002d18;--tertiary-button-border-color: #505a5f;--disabled-button-opacity: 0.4;--pressed-button-foreground-color: #ffffff;--pressed-button-border-color: #0b0c0c;--pressed-button-background-color: #0b0c0c;--scrollable-outline: 3px solid #ffdd00;--scrollable-outline-offset: -3px;--scrollable-box-shadow: inset 0 0 0 6px #002d18;--tooltip-background-color: #383F43;--tooltip-foreground-color: #ffffff;--modal-background-color: #0b0c0c;--modal-backdrop-opacity: 0.4;--attributions-foreground-color: #0b0c0c;--attributions-background-color: #ffffff80;--map-overlay-foreground-color: #0b0c0c;--map-overlay-halo-color: #ffffff;--fixed-foreground-color: #0b0c0c;--app-border-color: #b1b4b6;--content-border-color: #f3f2f1;--secondary-text-color: #505a5f;--image-placeholder-color: #b1b4b6;--content-link-color: #1d70b8}:root .im-o-app--dark-app{--foreground-color: #ffffff;--background-color: #383F43;--focus-border-color: #0b0c0c;--focus-outline-color: #ffdd00;--button-background-color: #383F43;--button-hover-color: #505a5f;--primary-button-color: #ffffff;--primary-button-hover-color: #b1b4b6;--primary-button-box-shadow: none;--tertiary-button-border-color: #f3f2f1;--tertiary-button-box-shadow: none;--disabled-button-opacity: 0.4;--pressed-button-foreground-color: #0b0c0c;--pressed-button-border-color: #ffffff;--pressed-button-background-color: #ffffff;--content-border-color: #505a5f;--secondary-text-color: #f3f2f1;--content-link-color: #ffffff}:root .im-o-app--dark-map{--map-overlay-foreground-color: #ffffff;--map-overlay-halo-color: #0b0c0c}:root{--font-family: gds transport,arial,sans-serif;--font-size: 16px;--line-height: 1.25em}:root{--button-box-shadow: 0 -2px 20px rgba(0,0,0,.1), 0 0 12px rgba(0,0,0,.1);--panel-box-shadow: 0 -2px 20px rgba(0,0,0,.1), 0 0 12px rgba(0,0,0,.1);--shadow-clip-size: 20px}:root{--duration: 0.2s}:root{--primary-gap: 15px;--divider-gap: 10px;--button-size: 40px;--icon-size: 24px;--button-padding: 8px;--button-icon-label-offset: 7px;--label-button-padding: 10px;--app-border-width: 1px;--button-border-radius: 0px;--panel-border-radius: 0px;--focus-border-width: 3px;--focus-outline-width: 3px;--modal-offset-top: 0px;--modal-offset-right: 0px;--tooltip-padding: 10px;--tooltip-offset: 10px;--tooltip-arrow-size: 8px;--tooltip-font-size: 14px;--tooltip-border-radius: 3px;--min-panel-width: 260px;--panel-close-button-gap: 4px;--panel-heading-margin-top: 12px;--panel-margin: 15px;--banner-close-button-gap: 0px;--banner-max-desktop-width: 400px;--banner-collapse-margin: 14px;--action-bar-max-width: calc(100% - (var(--button-size) * 2) - (var(--primary-gap) * 4));--attributions-padding: 2px 5px;--attributions-font-size: 12px}:root{--kbd-font-family: monospace;--kbd-background-color: var(--background-color);--kbd-foreground-color: var(--tooltip-background-color);--kbd-border: 2px solid #e7e7e7;--kbd-border-radius: 4px;--kbd-font-size: .825rem;--kbd-padding: 2px 4px;--kbd-tooltip-border: none}:root .im-o-app--dark-app{--kbd-background-color: var(--background-color);--kbd-foreground-color: var(--tooltip-foreground-color);--kbd-tooltip-border: 2px solid #505a5f;--kbd-border: 2px solid #505a5f}.im-o-app *,.im-o-app *::before,.im-o-app *::after{box-sizing:border-box}.im-o-app *{margin:0}.im-o-app img,.im-o-app picture,.im-o-app video,.im-o-app canvas,.im-o-app svg{display:block}.im-o-app input,.im-o-app button,.im-o-app textarea,.im-o-app select{font:inherit}.im-o-app p,.im-o-app h1,.im-o-app h2,.im-o-app h3,.im-o-app h4,.im-o-app h5,.im-o-app h6{overflow-wrap:break-word}.im-o-app{visibility:visible;font-family:var(--font-family);font-size:var(--font-size);line-height:var(--line-height);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--foreground-color);background-color:var(--background-color);-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y}.im-is-fullscreen>.im-o-app{position:fixed;z-index:999;top:0;bottom:0;left:0;right:0;width:100%}.im-o-app__overlay,.im-o-app__modal{pointer-events:none}.im-e-heading-s,.im-e-heading-m,.im-e-heading-l{margin:0;font-weight:600}.im-e-heading-l{font-size:1.5rem;line-height:1.25}.im-e-heading-m{font-size:1.25rem;line-height:1.25}.im-e-heading-s{font-size:1rem;line-height:1.25}kbd{font-family:var(--kbd-font-family);border:var(--kbd-border);background-color:var(--kbd-background-color);color:var(--kbd-foreground-color);border-radius:var(--kbd-border-radius);font-size:var(--kbd-font-size);padding:var(--kbd-padding)}.im-o-app{position:relative;width:100%;height:100%;min-height:0;overflow:hidden;touch-action:none}.im-o-app__overlay{position:absolute;z-index:1;box-sizing:border-box;flex-direction:row;display:flex;justify-content:space-between;top:0;left:0;width:100%;height:100%;min-height:0;visibility:visible;opacity:1}@media(prefers-reduced-motion: no-preference){.im-o-app__overlay{transition:opacity var(--duration) ease-in}}.im-o-app__side{position:relative;display:flex;flex-direction:column;z-index:3;flex-shrink:0;height:100%}.im-o-app__main{position:relative;display:flex;flex-direction:column;width:100%;min-width:0;height:100%;min-height:0;flex-wrap:nowrap;padding:var(--primary-gap)}.im-o-app__side .im-c-panel{height:100%;position:relative;border:0;border-radius:var(--panel-border-radius)}.im-o-app__side .im-c-panel::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:calc(var(--panel-border-radius));box-shadow:var(--panel-box-shadow)}.im-o-app__side .im-c-panel:focus{outline:0}.im-o-app__side .im-c-panel[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-o-app__side .im-c-panel::after{content:"";pointer-events:none;position:absolute;z-index:99;top:var(--focus-border-width);right:var(--focus-border-width);bottom:var(--focus-border-width);left:var(--focus-border-width);border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:calc(var(--panel-border-radius) - 2px);opacity:0}@media(prefers-reduced-motion: no-preference){.im-o-app__side .im-c-panel::after{transition:opacity var(--duration) ease}}.im-o-app__side .im-c-panel[data-focus-visible=true]::after{opacity:1}.im-o-app__side .im-c-panel,.im-o-app__side .im-c-panel::before,.im-o-app__side .im-c-panel::after{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.im-o-app__side .im-c-panel::before{clip-path:inset(-20px -20px -20px -20px)}.im-o-app__banner{display:flex;flex-direction:column;gap:var(--divider-gap)}.im-o-app__banner .im-c-panel:last-child{margin-bottom:var(--divider-gap)}.im-o-app__top{display:flex;margin-bottom:auto;justify-content:space-between;align-items:flex-start;width:100%;gap:var(--divider-gap)}.im-o-app__top-col{display:flex;flex:1 1 auto;gap:var(--divider-gap)}.im-o-app__top-col:not(:empty){padding-bottom:var(--divider-gap)}.im-o-app__top-col:first-child,.im-o-app__top-col:last-child{flex:1 1 calc(var(--button-size) + var(--primary-gap)*2);max-width:var(--top-col-width, 100%)}.im-o-app__top-col:first-child{justify-content:flex-start}.im-o-app__top-col:last-child{justify-content:flex-end}.im-o-app__top-col:nth-child(2){justify-content:center}.im-o-app__inset{display:flex;flex-direction:column;position:absolute;gap:var(--divider-gap);top:var(--inset-offset-top)}.im-o-app__inset .im-c-panel{height:100%;max-height:var(--inset-max-height)}.im-o-app__middle{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:-1}.im-o-app__right{position:absolute;display:flex;flex-direction:column;right:var(--primary-gap);top:var(--right-offset-top);bottom:var(--right-offset-bottom)}.im-o-app__right-top{display:flex;flex-direction:column;flex-shrink:0;align-items:flex-end;gap:var(--divider-gap)}.im-o-app__right-bottom{margin-top:auto}.im-o-app__footer{display:flex;justify-content:space-between;align-items:flex-end;z-index:-2}.im-o-app__footer-col{display:flex;flex-direction:column;min-width:auto}.im-o-app__footer-col:first-child{justify-content:flex-start;flex-shrink:0}.im-o-app__footer-col:last-child{flex:1 1 auto;justify-content:flex-end;text-align:right;min-width:0}.im-o-app__attributions:not(:empty){display:flex;justify-content:flex-end;position:relative;padding-top:var(--divider-gap);margin-bottom:calc(var(--primary-gap)*-1);margin-right:calc(var(--primary-gap)*-1)}.im-o-app__bottom{z-index:1}.im-o-app__actions{display:flex;flex-shrink:0;justify-content:center;text-align:center}.im-o-app__actions .im-c-panel__body{overflow:visible}.im-o-app .im-o-app__modal{display:flex;position:absolute;top:0;width:100%;height:100%;z-index:99}.im-o-app .im-o-app__modal .im-c-panel{position:absolute;inset:0 0 auto;z-index:1000}.im-o-app .im-o-app__modal .im-c-panel+.im-o-app__modal-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--modal-background-color);opacity:var(--modal-backdrop-opacity);pointer-events:auto}.im-o-app .im-o-app__modal .im-c-panel--side{width:100%;max-width:80%;position:relative;border:0;border-radius:var(--panel-border-radius)}.im-o-app .im-o-app__modal .im-c-panel--side::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:calc(var(--panel-border-radius));box-shadow:var(--panel-box-shadow)}.im-o-app .im-o-app__modal .im-c-panel--side:focus{outline:0}.im-o-app .im-o-app__modal .im-c-panel--side[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-o-app .im-o-app__modal .im-c-panel--side::after{content:"";pointer-events:none;position:absolute;z-index:99;top:var(--focus-border-width);right:var(--focus-border-width);bottom:var(--focus-border-width);left:var(--focus-border-width);border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:calc(var(--panel-border-radius) - 2px);opacity:0}@media(prefers-reduced-motion: no-preference){.im-o-app .im-o-app__modal .im-c-panel--side::after{transition:opacity var(--duration) ease}}.im-o-app .im-o-app__modal .im-c-panel--side[data-focus-visible=true]::after{opacity:1}.im-o-app .im-o-app__modal .im-c-panel--side,.im-o-app .im-o-app__modal .im-c-panel--side::before,.im-o-app .im-o-app__modal .im-c-panel--side::after{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.im-o-app .im-o-app__modal .im-c-panel--side::before{clip-path:inset(-20px -20px -20px -20px)}.im-o-app .im-o-app__modal .im-c-panel--inset{top:var(--inset-offset-top);left:var(--primary-gap);max-width:calc(100% - var(--primary-gap)*2);max-height:calc(100% - var(--inset-offset-top) - var(--primary-gap))}.im-o-app .im-o-app__modal .im-c-panel--middle{position:relative;margin:auto;width:100%;max-width:calc(100% - var(--primary-gap)*2);max-height:calc(100% - var(--primary-gap)*2)}.im-o-app .im-o-app__modal .im-c-panel--bottom{top:auto;bottom:0;max-height:85%}.im-o-app .im-o-app__modal [class*=im-c-panel--][class*=-button]{inset:var(--modal-inset)}.im-o-app--mobile .im-o-app__modal .im-c-panel--banner,.im-o-app--tablet .im-o-app__modal .im-c-panel--banner{margin:var(--primary-gap)}.im-o-app--desktop .im-o-app__modal .im-c-panel--banner{margin-top:var(--primary-gap)}.im-o-app--inline{border:var(--app-border-width) solid var(--app-border-color)}.im-o-app__main--keyboard-hint-visible .im-o-app__top-col,.im-o-app__main--keyboard-hint-visible .im-o-app__right,.im-o-app__main--keyboard-hint-visible .im-o-app__right-bottom{opacity:0}.im-o-app__overlay--not-ready{visibility:hidden;opacity:0}.im-o-app--mobile .im-o-app__banner,.im-o-app--tablet .im-o-app__banner{z-index:9}.im-o-app--desktop .im-c-panel--banner{margin-left:auto;margin-right:auto;max-width:var(--banner-max-desktop-width)}.im-o-app--tablet .im-o-app__actions,.im-o-app--desktop .im-o-app__actions{position:absolute;width:100%;left:0;bottom:calc(var(--primary-gap)*2);padding-left:var(--offset-left)}.im-o-app--tablet .im-o-app__actions .im-c-panel,.im-o-app--desktop .im-o-app__actions .im-c-panel{max-width:var(--action-bar-max-width)}.im-o-app--mobile .im-o-app__bottom,.im-o-app--mobile .im-o-app__actions{margin:var(--primary-gap) calc(var(--primary-gap)*-1) calc(var(--primary-gap)*-1) calc(var(--primary-gap)*-1)}.im-o-app--mobile .im-o-app__bottom .im-c-panel,.im-o-app--mobile .im-o-app__actions .im-c-panel{width:100%}.im-o-app--mobile .im-o-app__bottom .im-c-panel,.im-o-app--mobile .im-o-app__bottom .im-c-panel::before,.im-o-app--mobile .im-o-app__bottom .im-c-panel::after,.im-o-app--mobile .im-o-app__actions .im-c-panel,.im-o-app--mobile .im-o-app__actions .im-c-panel::before,.im-o-app--mobile .im-o-app__actions .im-c-panel::after{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.im-o-app--mobile .im-o-app__bottom .im-c-panel::before,.im-o-app--mobile .im-o-app__actions .im-c-panel::before{clip-path:inset(-20px -20px -20px -20px)}.im-o-app--mobile .im-o-app__bottom .im-c-panel{clip-path:inset(-20px 0 0 0)}.im-o-app--mobile .im-o-app__side{position:absolute;left:0;top:0;width:100%;max-width:80%;pointer-events:none}.im-c-keyboard-help__list{margin:0;color:var(--foreground-color)}.im-c-keyboard-help__item{display:table;padding:10px 0;width:100%;border-top:1px solid var(--content-border-color)}.im-c-keyboard-help__group:last-child .im-c-keyboard-help__item:last-child{padding-bottom:0}.im-c-keyboard-help__title{display:table-cell;width:45%}.im-c-keyboard-help__description{display:table-cell}.im-o-app--mobile .im-c-keyboard-help__title{width:100%;display:block}.im-o-app--mobile .im-c-keyboard-help__description{display:block;margin-top:5px}.im-c-button-wrapper{position:relative}.im-c-button-wrapper .im-c-panel{position:absolute;right:calc(100% + var(--divider-gap));top:0}.im-c-map-button{position:relative;border:0;border-radius:var(--button-border-radius)}.im-c-map-button::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:calc(var(--button-border-radius));box-shadow:var(--button-box-shadow)}.im-c-map-button:focus{outline:0}.im-c-map-button[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-c-map-button::after{content:"";pointer-events:none;position:absolute;z-index:99;top:-1px;right:-1px;bottom:-1px;left:-1px;border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:calc(var(--button-border-radius) - 2px);opacity:0}@media(prefers-reduced-motion: no-preference){.im-c-map-button::after{transition:opacity var(--duration) ease}}.im-c-map-button[data-focus-visible=true]::after{opacity:1}.im-c-map-button{display:flex;justify-content:center;align-items:center;padding-left:var(--button-padding);padding-right:var(--button-padding);pointer-events:auto;color:var(--foreground-color);background-color:var(--button-background-color);min-height:var(--button-size);min-width:var(--button-size);user-select:none;cursor:pointer}.im-c-map-button svg{pointer-events:none;width:var(--icon-size);height:var(--icon-size);flex-shrink:0}.im-c-map-button svg+span{margin-left:var(--button-icon-label-offset);white-space:nowrap}@media(hover: hover)and (pointer: fine)and (prefers-reduced-motion: no-preference){.im-c-map-button:hover{transition:background-color var(--duration) ease}}@media(hover: hover)and (pointer: fine){.im-c-map-button:hover{background-color:var(--button-hover-color)}}.im-c-map-button--with-label{padding-left:var(--label-button-padding);padding-right:var(--label-button-padding)}.im-c-map-button--primary{color:var(--background-color);background-color:var(--primary-button-color);box-shadow:var(--primary-button-box-shadow)}.im-c-map-button--primary span{white-space:nowrap;padding:0 var(--button-icon-label-offset)}.im-c-map-button--primary svg+span{padding-left:0}@media(hover: hover)and (pointer: fine){.im-c-map-button--primary:hover{background-color:var(--primary-button-hover-color)}}.im-c-map-button--primary::before{box-shadow:none}.im-c-map-button--tertiary{border:1px solid var(--tertiary-button-border-color);box-shadow:var(--tertiary-button-box-shadow)}.im-c-map-button--tertiary span{white-space:nowrap;padding:0 5px}.im-c-map-button--tertiary svg+span{padding-left:0}.im-c-map-button--tertiary::before{box-shadow:none}.im-o-app__right .im-c-button-wrapper--group-start,.im-o-app__right .im-c-button-wrapper--group-middle{margin-bottom:calc(-1*var(--divider-gap))}.im-o-app__right .im-c-button-wrapper--group-start .im-c-map-button,.im-o-app__right .im-c-button-wrapper--group-start .im-c-map-button::before,.im-o-app__right .im-c-button-wrapper--group-start .im-c-map-button::after{border-bottom-left-radius:0;border-bottom-right-radius:0}.im-o-app__right .im-c-button-wrapper--group-start .im-c-map-button::before{clip-path:inset(-20px -20px 0 -20px)}.im-o-app__right .im-c-button-wrapper--group-end .im-c-map-button{margin-top:0}.im-o-app__right .im-c-button-wrapper--group-end .im-c-map-button,.im-o-app__right .im-c-button-wrapper--group-end .im-c-map-button::before,.im-o-app__right .im-c-button-wrapper--group-end .im-c-map-button::after{border-top-left-radius:0;border-top-right-radius:0}.im-o-app__right .im-c-button-wrapper--group-end .im-c-map-button::before{clip-path:inset(0 -20px -20px -20px)}.im-o-app__top .im-c-button-wrapper--group-start,.im-o-app__top .im-c-button-wrapper--group-middle{margin-right:calc(-1*var(--divider-gap))}.im-o-app__top .im-c-button-wrapper--group-start .im-c-map-button,.im-o-app__top .im-c-button-wrapper--group-start .im-c-map-button::before,.im-o-app__top .im-c-button-wrapper--group-start .im-c-map-button::after{border-top-right-radius:0;border-bottom-right-radius:0}.im-o-app__top .im-c-button-wrapper--group-start .im-c-map-button::before{clip-path:inset(-20px 0 -20px -20px)}.im-o-app__top .im-c-button-wrapper--group-end .im-c-map-button,.im-o-app__top .im-c-button-wrapper--group-end .im-c-map-button::before,.im-o-app__top .im-c-button-wrapper--group-end .im-c-map-button::after{border-top-left-radius:0;border-bottom-left-radius:0}.im-o-app__top .im-c-button-wrapper--group-end .im-c-map-button::before{clip-path:inset(-20px -20px -20px 0)}.im-c-map-button[aria-disabled=true]:not(.im-c-map-button--primary):not(.im-c-map-button--tertiary) svg,.im-c-map-button[aria-disabled=true]:not(.im-c-map-button--primary):not(.im-c-map-button--tertiary) span{opacity:var(--disabled-button-opacity)}.im-c-map-button--primary[aria-disabled=true],.im-c-map-button--tertiary[aria-disabled=true]{opacity:var(--disabled-button-opacity)}.im-o-app__actions .im-c-map-button[aria-pressed=true]{color:var(--pressed-button-foreground-color);border-color:var(--pressed-button-border-color);background-color:var(--pressed-button-background-color)}.im-c-panel{position:relative;border:0;border-radius:var(--panel-border-radius)}.im-c-panel::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:calc(var(--panel-border-radius));box-shadow:var(--panel-box-shadow)}.im-c-panel:focus{outline:0}.im-c-panel[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-c-panel::after{content:"";pointer-events:none;position:absolute;z-index:99;top:-1px;right:-1px;bottom:-1px;left:-1px;border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:calc(var(--panel-border-radius) - 2px);opacity:0}@media(prefers-reduced-motion: no-preference){.im-c-panel::after{transition:opacity var(--duration) ease}}.im-c-panel[data-focus-visible=true]::after{opacity:1}.im-c-panel{display:flex;flex-direction:column;max-height:100vh;min-width:var(--min-panel-width);pointer-events:auto;background-color:var(--background-color)}.im-c-panel__heading{display:flex;padding:var(--panel-heading-margin-top) calc(var(--panel-close-button-gap)*2 + var(--button-size)) var(--panel-margin) var(--panel-margin);color:var(--foreground-color)}.im-c-panel__close{position:relative;border:0;border-radius:var(--button-border-radius)}.im-c-panel__close::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:calc(var(--button-border-radius));box-shadow:var(--button-box-shadow)}.im-c-panel__close:focus{outline:0}.im-c-panel__close[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-c-panel__close::after{content:"";pointer-events:none;position:absolute;z-index:99;top:-1px;right:-1px;bottom:-1px;left:-1px;border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:calc(var(--button-border-radius) - 2px);opacity:0}@media(prefers-reduced-motion: no-preference){.im-c-panel__close::after{transition:opacity var(--duration) ease}}.im-c-panel__close[data-focus-visible=true]::after{opacity:1}.im-c-panel__close{border:0;position:absolute;top:var(--panel-close-button-gap);right:var(--panel-close-button-gap);padding-left:var(--button-padding);padding-right:var(--button-padding);min-height:var(--button-size);min-width:var(--button-size);color:var(--foreground-color);background-color:rgba(0,0,0,0);cursor:pointer}.im-c-panel__body{padding:0 var(--panel-margin) var(--panel-margin);overflow:auto}.im-c-panel__body[data-focus-visible=true]{outline:var(--scrollable-outline);outline-offset:var(--scrollable-outline-offset);box-shadow:var(--scrollable-box-shadow)}.im-c-panel__close::before{content:none}@media(prefers-reduced-motion: no-preference){.im-c-panel__close:hover{transition:background-color var(--duration) ease}}.im-c-panel__close:hover{background-color:var(--button-hover-color)}.im-o-app--mobile .im-c-panel--bottom{position:relative;border:0;border-radius:var(--panel-border-radius)}.im-o-app--mobile .im-c-panel--bottom::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:calc(var(--panel-border-radius));box-shadow:var(--panel-box-shadow)}.im-o-app--mobile .im-c-panel--bottom:focus{outline:0}.im-o-app--mobile .im-c-panel--bottom[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-o-app--mobile .im-c-panel--bottom::after{content:"";pointer-events:none;position:absolute;z-index:99;top:var(--focus-border-width);right:var(--focus-border-width);bottom:var(--focus-border-width);left:var(--focus-border-width);border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:calc(var(--panel-border-radius) - 2px);opacity:0}@media(prefers-reduced-motion: no-preference){.im-o-app--mobile .im-c-panel--bottom::after{transition:opacity var(--duration) ease}}.im-o-app--mobile .im-c-panel--bottom[data-focus-visible=true]::after{opacity:1}.im-o-app--mobile .im-c-panel--bottom,.im-o-app--mobile .im-c-panel--bottom::before,.im-o-app--mobile .im-c-panel--bottom::after{border-bottom-left-radius:0;border-bottom-right-radius:0}.im-o-app--mobile .im-c-panel--bottom::before{clip-path:inset(-20px -20px 0 -20px)}.im-o-app--desktop .im-c-panel--banner.im-c-panel--no-heading .im-c-panel__close{top:var(--banner-close-button-gap);right:var(--banner-close-button-gap)}.im-o-app--desktop .im-c-panel--banner.im-c-panel--no-heading .im-c-panel__body--offset{padding-top:10px;padding-bottom:10px}.im-c-panel__body--offset{padding-right:calc(var(--button-size) + var(--divider-gap))}.im-c-viewport{width:100%;height:100%;background-color:var(--background-colour);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:relative;border:0;border-radius:0px}.im-c-viewport::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:0px}.im-c-viewport:focus{outline:0}.im-c-viewport[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-c-viewport::after{content:"";pointer-events:none;position:absolute;z-index:99;top:var(--focus-border-width);right:var(--focus-border-width);bottom:var(--focus-border-width);left:var(--focus-border-width);border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:-2px;opacity:0}@media(prefers-reduced-motion: no-preference){.im-c-viewport::after{transition:opacity var(--duration) ease}}.im-c-viewport[data-focus-visible=true]::after{opacity:1}.im-c-viewport__map-container{width:100%;height:100%}.im-c-viewport__keyboard-hint{position:absolute;left:50%;transform:translateX(-50%);text-wrap:nowrap;color:var(--tooltip-foreground-color);background-color:var(--tooltip-background-color);border-radius:var(--tooltip-border-radius);padding:var(--tooltip-padding);font-size:var(--tooltip-font-size);line-height:1}.im-c-viewport__keyboard-hint kbd{border:var(--kbd-tooltip-border)}.im-c-viewport__map-container>*:first-child{overflow:visible;transform-origin:top left}.im-c-viewport__safezone{position:absolute;pointer-events:none;z-index:1}.im-c-viewport--medium .im-c-viewport__map-container{width:66.66%;height:66.66%}.im-c-viewport--medium .im-c-viewport__map-container>*:first-child{transform:scale(150%)}.im-c-viewport--large .im-c-viewport__map-container{width:50%;height:50%}.im-c-viewport--large .im-c-viewport__map-container>*:first-child{transform:scale(200%)}.im-c-tooltip-wrapper{position:relative;display:inline-block;z-index:1}.im-c-tooltip-wrapper:hover,.im-c-tooltip-wrapper--has-focus{z-index:2}.im-c-tooltip{position:absolute;z-index:10;visibility:hidden;pointer-events:none;opacity:0;color:var(--tooltip-foreground-color);background-color:var(--tooltip-background-color);border-radius:var(--tooltip-border-radius);white-space:nowrap;padding:var(--tooltip-padding);font-size:var(--tooltip-font-size);line-height:1}@media(prefers-reduced-motion: no-preference){.im-c-tooltip{transition:opacity var(--duration) ease,visibility var(--duration) ease}}.im-c-tooltip::after{content:"";position:absolute;box-sizing:border-box;z-index:-1;width:var(--tooltip-arrow-size);height:var(--tooltip-arrow-size);color:var(--tooltip-background-color);border:calc(var(--tooltip-arrow-size)/2) solid currentcolor}.im-c-tooltip--is-visible{opacity:1;visibility:visible;pointer-events:auto}.im-c-tooltip--hidden{width:0;overflow:hidden}.im-c-tooltip--left{top:50%;transform:translateY(-50%);left:auto;right:calc(100% + var(--tooltip-offset))}.im-c-tooltip--left::after{top:50%;transform:translateY(-50%) rotate(45deg);right:calc(var(--tooltip-arrow-size)/2*-1)}.im-c-tooltip--right{top:50%;transform:translateY(-50%);right:auto;left:calc(100% + var(--tooltip-offset))}.im-c-tooltip--right::after{top:50%;transform:translateY(-50%) rotate(45deg);left:calc(var(--tooltip-arrow-size)/2*-1)}.im-c-tooltip--bottom{top:calc(100% + var(--tooltip-offset));left:50%;transform:translateX(-50%)}.im-c-tooltip--bottom::after{left:50%;transform:translateX(-50%) rotate(45deg);top:calc(var(--tooltip-arrow-size)/2*-1)}.im-c-tooltip--top{bottom:calc(100% + var(--tooltip-offset));left:50%;transform:translateX(-50%)}.im-c-tooltip--top::after{left:50%;transform:translateX(-50%) rotate(45deg);bottom:calc(var(--tooltip-arrow-size)/2*-1)}.im-c-attributions{color:var(--attributions-foreground-color);background-color:var(--attributions-background-color);padding:var(--attributions-padding);font-size:var(--attributions-font-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.im-c-logo{align-self:center;flex-shrink:0;height:auto;width:auto;user-select:none}.im-c-cross-hair{position:absolute;top:0;left:0;pointer-events:none;margin:-19px 0 0 -19px}.im-c-cross-hair path{stroke-width:3;stroke:var(--map-overlay-halo-color);fill:var(--map-overlay-foreground-color);paint-order:stroke fill}.im-c-marker{position:absolute;left:0;top:0;margin:-17px 0 0 -19px;pointer-events:none}.im-c-marker__graphic{fill:var(--map-overlay-halo-color)}.im-c-marker--pin .im-c-marker__graphic{filter:opacity(50%) brightness(0.25)}.im-c-actions{display:flex;flex-direction:row;justify-content:center;gap:var(--divider-gap);padding:var(--panel-margin)}.im-c-actions .im-c-button-wrapper--wide{display:flex;flex:1 1 0}.im-c-actions .im-c-map-button--primary,.im-c-actions .im-c-map-button--tertiary{width:100%}.im-c-actions--border-top{border-top:1px solid var(--app-border-color)}.im-o-app--tablet .im-c-actions,.im-o-app--desktop .im-c-actions{min-width:280px}.im-c-open-map-button{font-family:-apple-system,blinkmacsystemfont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;display:inline-flex;text-decoration:none;border:1px solid #505a5f;white-space:nowrap;padding:10px}.im-c-open-map-button svg+span{padding-left:8px}.im-c-open-map-button span{color:#1d70b8}.im-c-open-map-button:hover{background-color:#f3f2f1}.im-c-open-map-button:active span{color:#0b0c0c}.im-c-open-map-button:focus{border-color:rgba(0,0,0,0);outline:3px solid rgba(0,0,0,0);color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none}.im-c-open-map-button:focus span{color:#0b0c0c}.im-c-error{padding:15px;margin-bottom:30px;border:5px solid #b1b4b6}.im-is-loading{visibility:hidden}.im-has-js{position:fixed;overflow:hidden;top:0;right:0;bottom:0;left:0}.im-is-fullscreen{height:100%;overflow-y:visible;overscroll-behavior-y:none}.im-is-fullscreen body{position:fixed;overflow:hidden;top:0;right:0;bottom:0;left:0}.maplibregl-canvas-container canvas{image-rendering:pixelated;outline:0}.maplibregl-control-container{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.maplibregl-control-container *{pointer-events:auto}.maplibregl-symbols{display:none}.im-u-visually-hidden{position:absolute;width:1px;height:1px;margin:0;padding:0;overflow:hidden;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0;white-space:nowrap}
|
|
1
|
+
:root{--foreground-color: #0b0c0c;--background-color: #ffffff;--focus-border-color: #0b0c0c;--focus-outline-color: #ffdd00;--button-background-color: #ffffff;--button-hover-color: #f3f2f1;--primary-button-color: #00703c;--primary-button-hover-color: #005a30;--primary-button-box-shadow: inset 0 -2px 0 #002d18;--tertiary-button-border-color: #505a5f;--disabled-button-opacity: 0.4;--pressed-button-foreground-color: #ffffff;--pressed-button-border-color: #0b0c0c;--pressed-button-background-color: #0b0c0c;--scrollable-outline: 3px solid #ffdd00;--scrollable-outline-offset: -3px;--scrollable-box-shadow: inset 0 0 0 6px #002d18;--tooltip-background-color: #383F43;--tooltip-foreground-color: #ffffff;--modal-background-color: #0b0c0c;--modal-backdrop-opacity: 0.4;--attributions-foreground-color: #0b0c0c;--attributions-background-color: #ffffff80;--map-overlay-foreground-color: #0b0c0c;--map-overlay-halo-color: #ffffff;--fixed-foreground-color: #0b0c0c;--app-border-color: #b1b4b6;--content-border-color: #f3f2f1;--secondary-text-color: #505a5f;--image-placeholder-color: #b1b4b6;--content-link-color: #1d70b8}:root .im-o-app--dark-app{--foreground-color: #ffffff;--background-color: #383F43;--focus-border-color: #0b0c0c;--focus-outline-color: #ffdd00;--button-background-color: #383F43;--button-hover-color: #505a5f;--primary-button-color: #ffffff;--primary-button-hover-color: #b1b4b6;--primary-button-box-shadow: none;--tertiary-button-border-color: #f3f2f1;--tertiary-button-box-shadow: none;--disabled-button-opacity: 0.4;--pressed-button-foreground-color: #0b0c0c;--pressed-button-border-color: #ffffff;--pressed-button-background-color: #ffffff;--content-border-color: #505a5f;--secondary-text-color: #f3f2f1;--content-link-color: #ffffff}:root .im-o-app--dark-map{--map-overlay-foreground-color: #ffffff;--map-overlay-halo-color: #0b0c0c}:root{--font-family: gds transport,arial,sans-serif;--font-size: 16px;--line-height: 1.25em}:root{--button-box-shadow: 0 -2px 20px rgba(0,0,0,.1), 0 0 12px rgba(0,0,0,.1);--panel-box-shadow: 0 -2px 20px rgba(0,0,0,.1), 0 0 12px rgba(0,0,0,.1);--shadow-clip-size: 20px}:root{--duration: 0.2s}:root{--primary-gap: 15px;--divider-gap: 10px;--button-size: 40px;--icon-size: 24px;--button-padding: 8px;--button-icon-label-offset: 7px;--label-button-padding: 10px;--app-border-width: 1px;--button-border-radius: 4px;--panel-border-radius: 8px;--focus-border-width: 3px;--focus-outline-width: 3px;--modal-offset-top: 0px;--modal-offset-right: 0px;--tooltip-padding: 10px;--tooltip-offset: 10px;--tooltip-arrow-size: 8px;--tooltip-font-size: 14px;--tooltip-border-radius: 3px;--min-panel-width: 260px;--panel-close-button-gap: 4px;--panel-heading-margin-top: 12px;--panel-margin: 15px;--banner-close-button-gap: 0px;--banner-max-desktop-width: 400px;--banner-collapse-margin: 14px;--popup-menu-min-width: 200px;--popup-menu-max-width: 300px;--action-bar-max-width: calc(100% - (var(--button-size) * 2) - (var(--primary-gap) * 4));--attributions-padding: 2px 5px;--attributions-font-size: 12px}:root{--kbd-font-family: monospace;--kbd-background-color: var(--background-color);--kbd-foreground-color: var(--tooltip-background-color);--kbd-border: 2px solid #e7e7e7;--kbd-border-radius: 4px;--kbd-font-size: .825rem;--kbd-padding: 2px 4px;--kbd-tooltip-border: none}:root .im-o-app--dark-app{--kbd-background-color: var(--background-color);--kbd-foreground-color: var(--tooltip-foreground-color);--kbd-tooltip-border: 2px solid #505a5f;--kbd-border: 2px solid #505a5f}.im-o-app *,.im-o-app *::before,.im-o-app *::after{box-sizing:border-box}.im-o-app *{margin:0}.im-o-app img,.im-o-app picture,.im-o-app video,.im-o-app canvas,.im-o-app svg{display:block}.im-o-app input,.im-o-app button,.im-o-app textarea,.im-o-app select{font:inherit}.im-o-app p,.im-o-app h1,.im-o-app h2,.im-o-app h3,.im-o-app h4,.im-o-app h5,.im-o-app h6{overflow-wrap:break-word}.im-o-app{visibility:visible;font-family:var(--font-family);font-size:var(--font-size);line-height:var(--line-height);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--foreground-color);background-color:var(--background-color);-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y}.im-is-fullscreen>.im-o-app{position:fixed;z-index:999;top:0;bottom:0;left:0;right:0;width:100%}.im-o-app__overlay,.im-o-app__modal{pointer-events:none}.im-e-heading-s,.im-e-heading-m,.im-e-heading-l{margin:0;font-weight:600}.im-e-heading-l{font-size:1.5rem;line-height:1.25}.im-e-heading-m{font-size:1.25rem;line-height:1.25}.im-e-heading-s{font-size:1rem;line-height:1.25}kbd{font-family:var(--kbd-font-family);border:var(--kbd-border);background-color:var(--kbd-background-color);color:var(--kbd-foreground-color);border-radius:var(--kbd-border-radius);font-size:var(--kbd-font-size);padding:var(--kbd-padding)}.im-o-app{position:relative;width:100%;height:100%;min-height:0;overflow:hidden;touch-action:none}.im-o-app__overlay{position:absolute;z-index:1;box-sizing:border-box;flex-direction:row;display:flex;justify-content:space-between;top:0;left:0;width:100%;height:100%;min-height:0;visibility:visible;opacity:1}@media(prefers-reduced-motion: no-preference){.im-o-app__overlay{transition:opacity var(--duration) ease-in}}.im-o-app__side{position:relative;display:flex;flex-direction:column;z-index:3;flex-shrink:0;height:100%}.im-o-app__main{position:relative;display:flex;flex-direction:column;width:100%;min-width:0;height:100%;min-height:0;flex-wrap:nowrap;padding:var(--primary-gap)}.im-o-app__side .im-c-panel{height:100%;position:relative;border:0;border-radius:var(--panel-border-radius)}.im-o-app__side .im-c-panel::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:calc(var(--panel-border-radius));box-shadow:var(--panel-box-shadow)}.im-o-app__side .im-c-panel:focus{outline:0}.im-o-app__side .im-c-panel[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-o-app__side .im-c-panel::after{content:"";pointer-events:none;position:absolute;z-index:99;top:var(--focus-border-width);right:var(--focus-border-width);bottom:var(--focus-border-width);left:var(--focus-border-width);border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:calc(var(--panel-border-radius) - 2px);opacity:0}@media(prefers-reduced-motion: no-preference){.im-o-app__side .im-c-panel::after{transition:opacity var(--duration) ease}}.im-o-app__side .im-c-panel[data-focus-visible=true]::after{opacity:1}.im-o-app__side .im-c-panel,.im-o-app__side .im-c-panel::before,.im-o-app__side .im-c-panel::after{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.im-o-app__side .im-c-panel::before{clip-path:inset(-20px -20px -20px -20px)}.im-o-app__banner{display:flex;flex-direction:column;gap:var(--divider-gap)}.im-o-app__banner .im-c-panel:last-child{margin-bottom:var(--divider-gap)}.im-o-app__top{display:flex;margin-bottom:auto;justify-content:space-between;align-items:flex-start;width:100%;gap:var(--divider-gap)}.im-o-app__top-col{display:flex;flex:1 1 auto;gap:var(--divider-gap)}.im-o-app__top-col:not(:empty){padding-bottom:var(--divider-gap)}.im-o-app__top-col:first-child,.im-o-app__top-col:last-child{flex:1 1 calc(var(--button-size) + var(--primary-gap)*2);max-width:var(--top-col-width, 100%)}.im-o-app__top-col:first-child{justify-content:flex-start}.im-o-app__top-col:last-child{justify-content:flex-end}.im-o-app__top-col:nth-child(2){justify-content:center}.im-o-app__inset{display:flex;flex-direction:column;position:absolute;gap:var(--divider-gap);top:var(--inset-offset-top)}.im-o-app__inset .im-c-panel{height:100%;max-height:var(--inset-max-height)}.im-o-app__middle{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:-1}.im-o-app__right{position:absolute;display:flex;flex-direction:column;right:var(--primary-gap);top:var(--right-offset-top);bottom:var(--right-offset-bottom)}.im-o-app__right-top{display:flex;flex-direction:column;flex-shrink:0;align-items:flex-end;gap:var(--divider-gap)}.im-o-app__right-bottom{margin-top:auto}.im-o-app__footer{display:flex;justify-content:space-between;align-items:flex-end;z-index:-2}.im-o-app__footer-col{display:flex;flex-direction:column;min-width:auto}.im-o-app__footer-col:first-child{justify-content:flex-start;flex-shrink:0}.im-o-app__footer-col:last-child{flex:1 1 auto;justify-content:flex-end;text-align:right;min-width:0}.im-o-app__attributions:not(:empty){display:flex;justify-content:flex-end;position:relative;padding-top:var(--divider-gap);margin-bottom:calc(var(--primary-gap)*-1);margin-right:calc(var(--primary-gap)*-1)}.im-o-app__bottom{z-index:1}.im-o-app__actions{display:flex;flex-shrink:0;justify-content:center;text-align:center}.im-o-app__actions .im-c-panel__body{overflow:visible}.im-o-app .im-o-app__modal{display:flex;position:absolute;top:0;width:100%;height:100%;z-index:99}.im-o-app .im-o-app__modal .im-c-panel{position:absolute;top:0;right:0;bottom:auto;left:0;z-index:1000}.im-o-app .im-o-app__modal .im-c-panel+.im-o-app__modal-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--modal-background-color);opacity:var(--modal-backdrop-opacity);pointer-events:auto}.im-o-app .im-o-app__modal .im-c-panel--side{width:100%;max-width:80%;position:relative;border:0;border-radius:var(--panel-border-radius)}.im-o-app .im-o-app__modal .im-c-panel--side::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:calc(var(--panel-border-radius));box-shadow:var(--panel-box-shadow)}.im-o-app .im-o-app__modal .im-c-panel--side:focus{outline:0}.im-o-app .im-o-app__modal .im-c-panel--side[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-o-app .im-o-app__modal .im-c-panel--side::after{content:"";pointer-events:none;position:absolute;z-index:99;top:var(--focus-border-width);right:var(--focus-border-width);bottom:var(--focus-border-width);left:var(--focus-border-width);border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:calc(var(--panel-border-radius) - 2px);opacity:0}@media(prefers-reduced-motion: no-preference){.im-o-app .im-o-app__modal .im-c-panel--side::after{transition:opacity var(--duration) ease}}.im-o-app .im-o-app__modal .im-c-panel--side[data-focus-visible=true]::after{opacity:1}.im-o-app .im-o-app__modal .im-c-panel--side,.im-o-app .im-o-app__modal .im-c-panel--side::before,.im-o-app .im-o-app__modal .im-c-panel--side::after{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.im-o-app .im-o-app__modal .im-c-panel--side::before{clip-path:inset(-20px -20px -20px -20px)}.im-o-app .im-o-app__modal .im-c-panel--inset{top:var(--inset-offset-top);left:var(--primary-gap);max-width:calc(100% - var(--primary-gap)*2);max-height:calc(100% - var(--inset-offset-top) - var(--primary-gap))}.im-o-app .im-o-app__modal .im-c-panel--middle{position:relative;margin:auto;width:100%;max-width:calc(100% - var(--primary-gap)*2);max-height:calc(100% - var(--primary-gap)*2)}.im-o-app .im-o-app__modal .im-c-panel--bottom{top:auto;bottom:0;max-height:85%}.im-o-app .im-o-app__modal [class*=im-c-panel--][class*=-button]{top:var(--modal-inset);right:var(--modal-inset);bottom:var(--modal-inset);left:var(--modal-inset)}.im-o-app--mobile .im-o-app__modal .im-c-panel--banner,.im-o-app--tablet .im-o-app__modal .im-c-panel--banner{margin:var(--primary-gap)}.im-o-app--mobile .im-o-app__banner,.im-o-app--tablet .im-o-app__banner{z-index:9}.im-o-app--desktop .im-o-app__modal .im-c-panel--banner{margin-top:var(--primary-gap)}.im-o-app--inline{border:var(--app-border-width) solid var(--app-border-color)}.im-o-app__main--keyboard-hint-visible .im-o-app__top-col,.im-o-app__main--keyboard-hint-visible .im-o-app__right,.im-o-app__main--keyboard-hint-visible .im-o-app__right-bottom{opacity:0}.im-o-app__overlay--not-ready{visibility:hidden;opacity:0}.im-o-app--desktop .im-c-panel--banner{margin-left:auto;margin-right:auto;max-width:var(--banner-max-desktop-width)}.im-o-app--tablet .im-o-app__actions,.im-o-app--desktop .im-o-app__actions{position:absolute;width:100%;left:0;bottom:calc(var(--primary-gap)*2);padding-left:var(--offset-left)}.im-o-app--tablet .im-o-app__actions .im-c-panel,.im-o-app--desktop .im-o-app__actions .im-c-panel{max-width:var(--action-bar-max-width)}.im-o-app--mobile .im-o-app__bottom,.im-o-app--mobile .im-o-app__actions{margin:var(--primary-gap) calc(var(--primary-gap)*-1) calc(var(--primary-gap)*-1) calc(var(--primary-gap)*-1)}.im-o-app--mobile .im-o-app__bottom .im-c-panel,.im-o-app--mobile .im-o-app__actions .im-c-panel{width:100%}.im-o-app--mobile .im-o-app__bottom .im-c-panel,.im-o-app--mobile .im-o-app__bottom .im-c-panel::before,.im-o-app--mobile .im-o-app__bottom .im-c-panel::after,.im-o-app--mobile .im-o-app__actions .im-c-panel,.im-o-app--mobile .im-o-app__actions .im-c-panel::before,.im-o-app--mobile .im-o-app__actions .im-c-panel::after{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.im-o-app--mobile .im-o-app__bottom .im-c-panel::before,.im-o-app--mobile .im-o-app__actions .im-c-panel::before{clip-path:inset(-20px -20px -20px -20px)}.im-o-app--mobile .im-o-app__bottom .im-c-panel{clip-path:inset(-20px 0 0 0)}.im-o-app--mobile .im-o-app__side{position:absolute;left:0;top:0;width:100%;max-width:80%;pointer-events:none}.im-c-keyboard-help__list{margin:0;color:var(--foreground-color)}.im-c-keyboard-help__item{display:table;padding:10px 0;width:100%;border-top:1px solid var(--content-border-color)}.im-c-keyboard-help__group:last-child .im-c-keyboard-help__item:last-child{padding-bottom:0}.im-c-keyboard-help__title{display:table-cell;width:45%}.im-c-keyboard-help__description{display:table-cell}.im-o-app--mobile .im-c-keyboard-help__title{width:100%;display:block}.im-o-app--mobile .im-c-keyboard-help__description{display:block;margin-top:5px}.im-c-button-wrapper{position:relative}.im-c-button-wrapper .im-c-panel{position:absolute;right:calc(100% + var(--divider-gap));top:0}.im-c-map-button{position:relative;border:0;border-radius:var(--button-border-radius)}.im-c-map-button::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:calc(var(--button-border-radius));box-shadow:var(--button-box-shadow)}.im-c-map-button:focus{outline:0}.im-c-map-button[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-c-map-button::after{content:"";pointer-events:none;position:absolute;z-index:99;top:-1px;right:-1px;bottom:-1px;left:-1px;border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:calc(var(--button-border-radius) - 2px);opacity:0}@media(prefers-reduced-motion: no-preference){.im-c-map-button::after{transition:opacity var(--duration) ease}}.im-c-map-button[data-focus-visible=true]::after{opacity:1}.im-c-map-button{display:flex;justify-content:center;align-items:center;padding-left:var(--button-padding);padding-right:var(--button-padding);pointer-events:auto;color:var(--foreground-color);background-color:var(--button-background-color);min-height:var(--button-size);min-width:var(--button-size);user-select:none;cursor:pointer}.im-c-map-button--primary[aria-disabled=true],.im-c-map-button--tertiary[aria-disabled=true]{opacity:var(--disabled-button-opacity)}.im-c-map-button svg{pointer-events:none;width:var(--icon-size);height:var(--icon-size);flex-shrink:0}.im-c-map-button svg+span{margin-left:var(--button-icon-label-offset);white-space:nowrap}@media(hover: hover)and (pointer: fine){.im-c-map-button:hover{background-color:var(--button-hover-color)}}@media(hover: hover)and (pointer: fine)and (prefers-reduced-motion: no-preference){.im-c-map-button:hover{transition:background-color var(--duration) ease}}.im-c-map-button--with-label{padding-left:var(--label-button-padding);padding-right:var(--label-button-padding)}.im-c-map-button--primary{color:var(--background-color);background-color:var(--primary-button-color);box-shadow:var(--primary-button-box-shadow)}.im-c-map-button--primary span{white-space:nowrap;padding:0 var(--button-icon-label-offset)}.im-c-map-button--primary svg+span{padding-left:0}@media(hover: hover)and (pointer: fine){.im-c-map-button--primary:hover{background-color:var(--primary-button-hover-color)}}.im-c-map-button--primary::before{box-shadow:none}.im-c-map-button--tertiary{border:1px solid var(--tertiary-button-border-color);box-shadow:var(--tertiary-button-box-shadow)}.im-c-map-button--tertiary span{white-space:nowrap;padding:0 5px}.im-c-map-button--tertiary svg+span{padding-left:0}.im-c-map-button--tertiary::before{box-shadow:none}.im-o-app__right .im-c-button-wrapper--group-start,.im-o-app__right .im-c-button-wrapper--group-middle{margin-bottom:calc(-1*var(--divider-gap))}.im-o-app__right .im-c-button-wrapper--group-start .im-c-map-button,.im-o-app__right .im-c-button-wrapper--group-start .im-c-map-button::before,.im-o-app__right .im-c-button-wrapper--group-start .im-c-map-button::after{border-bottom-left-radius:0;border-bottom-right-radius:0}.im-o-app__right .im-c-button-wrapper--group-start .im-c-map-button::before{clip-path:inset(-20px -20px 0 -20px)}.im-o-app__right .im-c-button-wrapper--group-middle .im-c-map-button,.im-o-app__right .im-c-button-wrapper--group-middle .im-c-map-button::before,.im-o-app__right .im-c-button-wrapper--group-middle .im-c-map-button::after{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.im-o-app__right .im-c-button-wrapper--group-middle .im-c-map-button::before{clip-path:inset(-20px -20px -20px -20px)}.im-o-app__right .im-c-button-wrapper--group-middle .im-c-map-button::before{clip-path:inset(0 -20px 0 -20px)}.im-o-app__right .im-c-button-wrapper--group-end .im-c-map-button{margin-top:0}.im-o-app__right .im-c-button-wrapper--group-end .im-c-map-button,.im-o-app__right .im-c-button-wrapper--group-end .im-c-map-button::before,.im-o-app__right .im-c-button-wrapper--group-end .im-c-map-button::after{border-top-left-radius:0;border-top-right-radius:0}.im-o-app__right .im-c-button-wrapper--group-end .im-c-map-button::before{clip-path:inset(0 -20px -20px -20px)}.im-o-app__top .im-c-button-wrapper--group-start,.im-o-app__top .im-c-button-wrapper--group-middle{margin-right:calc(-1*var(--divider-gap))}.im-o-app__top .im-c-button-wrapper--group-start .im-c-map-button,.im-o-app__top .im-c-button-wrapper--group-start .im-c-map-button::before,.im-o-app__top .im-c-button-wrapper--group-start .im-c-map-button::after{border-top-right-radius:0;border-bottom-right-radius:0}.im-o-app__top .im-c-button-wrapper--group-start .im-c-map-button::before{clip-path:inset(-20px 0 -20px -20px)}.im-o-app__top .im-c-button-wrapper--group-middle .im-c-map-button,.im-o-app__top .im-c-button-wrapper--group-middle .im-c-map-button::before,.im-o-app__top .im-c-button-wrapper--group-middle .im-c-map-button::after{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.im-o-app__top .im-c-button-wrapper--group-middle .im-c-map-button::before{clip-path:inset(-20px -20px -20px -20px)}.im-o-app__top .im-c-button-wrapper--group-middle .im-c-map-button::before{clip-path:inset(-20px 0 -20px 0)}.im-o-app__top .im-c-button-wrapper--group-end .im-c-map-button,.im-o-app__top .im-c-button-wrapper--group-end .im-c-map-button::before,.im-o-app__top .im-c-button-wrapper--group-end .im-c-map-button::after{border-top-left-radius:0;border-bottom-left-radius:0}.im-o-app__top .im-c-button-wrapper--group-end .im-c-map-button::before{clip-path:inset(-20px -20px -20px 0)}.im-c-map-button[aria-disabled=true]:not(.im-c-map-button--primary):not(.im-c-map-button--tertiary) svg,.im-c-map-button[aria-disabled=true]:not(.im-c-map-button--primary):not(.im-c-map-button--tertiary) span{opacity:var(--disabled-button-opacity)}.im-o-app__actions .im-c-map-button[aria-pressed=true]{color:var(--pressed-button-foreground-color);border-color:var(--pressed-button-border-color);background-color:var(--pressed-button-background-color)}.im-c-panel{position:relative;border:0;border-radius:var(--panel-border-radius)}.im-c-panel::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:calc(var(--panel-border-radius));box-shadow:var(--panel-box-shadow)}.im-c-panel:focus{outline:0}.im-c-panel[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-c-panel::after{content:"";pointer-events:none;position:absolute;z-index:99;top:-1px;right:-1px;bottom:-1px;left:-1px;border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:calc(var(--panel-border-radius) - 2px);opacity:0}@media(prefers-reduced-motion: no-preference){.im-c-panel::after{transition:opacity var(--duration) ease}}.im-c-panel[data-focus-visible=true]::after{opacity:1}.im-c-panel{display:flex;flex-direction:column;max-height:100vh;min-width:var(--min-panel-width);pointer-events:auto;background-color:var(--background-color)}.im-c-panel__heading{display:flex;padding:var(--panel-heading-margin-top) calc(var(--panel-close-button-gap)*2 + var(--button-size)) var(--panel-margin) var(--panel-margin);color:var(--foreground-color)}.im-c-panel__close{position:relative;border:0;border-radius:var(--button-border-radius)}.im-c-panel__close::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:calc(var(--button-border-radius));box-shadow:var(--button-box-shadow)}.im-c-panel__close:focus{outline:0}.im-c-panel__close[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-c-panel__close::after{content:"";pointer-events:none;position:absolute;z-index:99;top:-1px;right:-1px;bottom:-1px;left:-1px;border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:calc(var(--button-border-radius) - 2px);opacity:0}@media(prefers-reduced-motion: no-preference){.im-c-panel__close::after{transition:opacity var(--duration) ease}}.im-c-panel__close[data-focus-visible=true]::after{opacity:1}.im-c-panel__close{border:0;position:absolute;top:var(--panel-close-button-gap);right:var(--panel-close-button-gap);padding-left:var(--button-padding);padding-right:var(--button-padding);min-height:var(--button-size);min-width:var(--button-size);color:var(--foreground-color);background-color:rgba(0,0,0,0);cursor:pointer}.im-c-panel__body{padding:0 var(--panel-margin) var(--panel-margin);overflow:auto}.im-c-panel__body[data-focus-visible=true]{outline:var(--scrollable-outline);outline-offset:var(--scrollable-outline-offset);box-shadow:var(--scrollable-box-shadow)}.im-c-panel__close::before{content:none}@media(prefers-reduced-motion: no-preference){.im-c-panel__close:hover{transition:background-color var(--duration) ease}}.im-c-panel__close:hover{background-color:var(--button-hover-color)}.im-o-app--mobile .im-c-panel--bottom{position:relative;border:0;border-radius:var(--panel-border-radius)}.im-o-app--mobile .im-c-panel--bottom::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:calc(var(--panel-border-radius));box-shadow:var(--panel-box-shadow)}.im-o-app--mobile .im-c-panel--bottom:focus{outline:0}.im-o-app--mobile .im-c-panel--bottom[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-o-app--mobile .im-c-panel--bottom::after{content:"";pointer-events:none;position:absolute;z-index:99;top:var(--focus-border-width);right:var(--focus-border-width);bottom:var(--focus-border-width);left:var(--focus-border-width);border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:calc(var(--panel-border-radius) - 2px);opacity:0}@media(prefers-reduced-motion: no-preference){.im-o-app--mobile .im-c-panel--bottom::after{transition:opacity var(--duration) ease}}.im-o-app--mobile .im-c-panel--bottom[data-focus-visible=true]::after{opacity:1}.im-o-app--mobile .im-c-panel--bottom,.im-o-app--mobile .im-c-panel--bottom::before,.im-o-app--mobile .im-c-panel--bottom::after{border-bottom-left-radius:0;border-bottom-right-radius:0}.im-o-app--mobile .im-c-panel--bottom::before{clip-path:inset(-20px -20px 0 -20px)}.im-o-app--desktop .im-c-panel--banner.im-c-panel--no-heading .im-c-panel__close{top:var(--banner-close-button-gap);right:var(--banner-close-button-gap)}.im-o-app--desktop .im-c-panel--banner.im-c-panel--no-heading .im-c-panel__body--offset{padding-top:10px;padding-bottom:10px}.im-c-panel__body--offset{padding-right:calc(var(--button-size) + var(--divider-gap))}.im-c-viewport{width:100%;height:100%;background-color:var(--background-colour);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:relative;border:0;border-radius:0px}.im-c-viewport::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:0px}.im-c-viewport:focus{outline:0}.im-c-viewport[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.im-c-viewport::after{content:"";pointer-events:none;position:absolute;z-index:99;top:var(--focus-border-width);right:var(--focus-border-width);bottom:var(--focus-border-width);left:var(--focus-border-width);border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:-2px;opacity:0}@media(prefers-reduced-motion: no-preference){.im-c-viewport::after{transition:opacity var(--duration) ease}}.im-c-viewport[data-focus-visible=true]::after{opacity:1}.im-c-viewport__map-container{width:100%;height:100%}.im-c-viewport__keyboard-hint{position:absolute;left:50%;transform:translateX(-50%);text-wrap:nowrap;color:var(--tooltip-foreground-color);background-color:var(--tooltip-background-color);border-radius:var(--tooltip-border-radius);padding:var(--tooltip-padding);font-size:var(--tooltip-font-size);line-height:1}.im-c-viewport__keyboard-hint kbd{border:var(--kbd-tooltip-border)}.im-c-viewport__map-container>*:first-child{overflow:visible;transform-origin:top left}.im-c-viewport__safezone{position:absolute;pointer-events:none;z-index:1}.im-c-viewport--medium .im-c-viewport__map-container{width:66.66%;height:66.66%}.im-c-viewport--medium .im-c-viewport__map-container>*:first-child{transform:scale(1.5)}.im-c-viewport--large .im-c-viewport__map-container{width:50%;height:50%}.im-c-viewport--large .im-c-viewport__map-container>*:first-child{transform:scale(2)}.im-c-tooltip-wrapper{position:relative;display:inline-block;z-index:1}.im-c-tooltip-wrapper:hover,.im-c-tooltip-wrapper--has-focus{z-index:2}.im-c-tooltip{position:absolute;z-index:10;visibility:hidden;pointer-events:none;opacity:0;color:var(--tooltip-foreground-color);background-color:var(--tooltip-background-color);border-radius:var(--tooltip-border-radius);white-space:nowrap;padding:var(--tooltip-padding);font-size:var(--tooltip-font-size);line-height:1}@media(prefers-reduced-motion: no-preference){.im-c-tooltip{transition:opacity var(--duration) ease,visibility var(--duration) ease}}.im-c-tooltip::after{content:"";position:absolute;box-sizing:border-box;z-index:-1;width:var(--tooltip-arrow-size);height:var(--tooltip-arrow-size);color:var(--tooltip-background-color);border:calc(var(--tooltip-arrow-size)/2) solid currentcolor}.im-c-tooltip--is-visible{opacity:1;visibility:visible;pointer-events:auto}.im-c-tooltip--hidden{width:0;overflow:hidden}.im-c-tooltip--left{top:50%;transform:translateY(-50%);left:auto;right:calc(100% + var(--tooltip-offset))}.im-c-tooltip--left::after{top:50%;transform:translateY(-50%) rotate(45deg);right:calc(var(--tooltip-arrow-size)/2*-1)}.im-c-tooltip--right{top:50%;transform:translateY(-50%);right:auto;left:calc(100% + var(--tooltip-offset))}.im-c-tooltip--right::after{top:50%;transform:translateY(-50%) rotate(45deg);left:calc(var(--tooltip-arrow-size)/2*-1)}.im-c-tooltip--bottom{top:calc(100% + var(--tooltip-offset));left:50%;transform:translateX(-50%)}.im-c-tooltip--bottom::after{left:50%;transform:translateX(-50%) rotate(45deg);top:calc(var(--tooltip-arrow-size)/2*-1)}.im-c-tooltip--top{bottom:calc(100% + var(--tooltip-offset));left:50%;transform:translateX(-50%)}.im-c-tooltip--top::after{left:50%;transform:translateX(-50%) rotate(45deg);bottom:calc(var(--tooltip-arrow-size)/2*-1)}.fm-c-popup-menu{position:relative;border:0;border-radius:var(--button-border-radius)}.fm-c-popup-menu::before{content:"";pointer-events:none;position:absolute;top:0;left:0;height:100%;width:100%;border-radius:calc(var(--button-border-radius));box-shadow:var(--button-box-shadow)}.fm-c-popup-menu:focus{outline:0}.fm-c-popup-menu[data-focus-visible=true]{outline:3px solid rgba(0,0,0,0)}.fm-c-popup-menu::after{content:"";pointer-events:none;position:absolute;z-index:99;top:-1px;right:-1px;bottom:-1px;left:-1px;border:var(--focus-border-width) solid var(--focus-border-color);outline:var(--focus-outline-width) solid var(--focus-outline-color);border-radius:calc(var(--button-border-radius) - 2px);opacity:0}@media(prefers-reduced-motion: no-preference){.fm-c-popup-menu::after{transition:opacity var(--duration) ease}}.fm-c-popup-menu[data-focus-visible=true]::after{opacity:1}.fm-c-popup-menu{background-color:var(--background-color);position:absolute;list-style:none;margin:0;padding:0}.fm-c-popup-menu__item{display:flex;align-items:center;padding:var(--divider-gap);border-top:1px solid var(--button-hover-color);text-align:left;cursor:pointer;min-width:var(--popup-menu-min-width);max-width:var(--popup-menu-max-width)}.fm-c-popup-menu__item:first-child{border-top:0}@media(hover: hover)and (pointer: fine){.fm-c-popup-menu__item:hover:not(.fm-c-popup-menu__item--selected){background-color:var(--button-hover-color)}}.fm-c-popup-menu__item:hover:not(.fm-c-popup-menu__item--selected) .fm-c-popup-menu__item-label{text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:2px;text-decoration-color:var(--foreground-color);text-decoration-skip-ink:none}.fm-c-popup-menu__item--selected{background-color:var(--button-hover-color)}.fm-c-popup-menu__item--selected .fm-c-popup-menu__item-label{outline:3px solid rgba(0,0,0,0);color:var(--focus-border-color);background-color:var(--focus-outline-color);box-shadow:0 -2px var(--focus-outline-color),0 4px var(--focus-border-color);text-decoration:none}.fm-c-popup-menu__item svg+span{margin-left:var(--button-icon-label-offset);white-space:nowrap}.im-o-app__actions .fm-c-popup-menu{left:50%;transform:translateX(-50%);bottom:calc(100% + var(--primary-gap)*2)}.im-c-attributions{color:var(--attributions-foreground-color);background-color:var(--attributions-background-color);padding:var(--attributions-padding);font-size:var(--attributions-font-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.im-c-logo{align-self:center;flex-shrink:0;height:auto;width:auto;user-select:none}.im-c-cross-hair{position:absolute;top:0;left:0;pointer-events:none;margin:-19px 0 0 -19px}.im-c-cross-hair path{stroke-width:3;stroke:var(--map-overlay-halo-color);fill:var(--map-overlay-foreground-color);paint-order:stroke fill}.im-c-marker{position:absolute;left:0;top:0;margin:-17px 0 0 -19px;pointer-events:none}.im-c-marker__graphic{fill:var(--map-overlay-halo-color)}.im-c-marker--pin .im-c-marker__graphic{filter:opacity(50%) brightness(0.25)}.im-c-actions{display:flex;flex-direction:row;justify-content:center;gap:calc(var(--divider-gap)/2);padding:var(--panel-margin)}.im-c-actions .im-c-button-wrapper--wide{display:flex;flex:1 1 0}.im-c-actions .im-c-map-button--primary,.im-c-actions .im-c-map-button--tertiary{width:100%}.im-c-actions--border-top{border-top:1px solid var(--app-border-color)}.im-o-app--tablet .im-c-actions,.im-o-app--desktop .im-c-actions{min-width:0}.im-c-open-map-button{font-family:-apple-system,blinkmacsystemfont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;display:inline-flex;text-decoration:none;border:1px solid #505a5f;white-space:nowrap;padding:10px}.im-c-open-map-button svg+span{padding-left:8px}.im-c-open-map-button span{color:#1d70b8}.im-c-open-map-button:hover{background-color:#f3f2f1}.im-c-open-map-button:active span{color:#0b0c0c}.im-c-open-map-button:focus{border-color:rgba(0,0,0,0);outline:3px solid rgba(0,0,0,0);color:#0b0c0c;background-color:#fd0;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none}.im-c-open-map-button:focus span{color:#0b0c0c}.im-c-error{padding:15px;margin-bottom:30px;border:5px solid #b1b4b6}.im-is-loading{visibility:hidden}.im-has-js{position:fixed;overflow:hidden;top:0;right:0;bottom:0;left:0}.im-is-fullscreen{height:100%;overflow-y:visible;overscroll-behavior-y:none}.im-is-fullscreen body{position:fixed;overflow:hidden;top:0;right:0;bottom:0;left:0}.maplibregl-canvas-container canvas{image-rendering:pixelated;outline:0}.maplibregl-control-container{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.maplibregl-control-container *{pointer-events:auto}.maplibregl-symbols{display:none}.im-u-visually-hidden{position:absolute;width:1px;height:1px;margin:0;padding:0;overflow:hidden;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0;white-space:nowrap}
|