@import "~bootstrap/dist/css/bootstrap.css"; @import "~bootstrap-icons/font/bootstrap-icons.css"; @import "~ol/ol.css"; html, body { margin: 0; height: 100%; --ol-foreground-color: var(--bs-body-color); --ol-background-color: var(--bs-body-bg); /* highlight non-bootstrapy style */ --ol-accent-background-color: red; --ol-subtle-background-color: red; --ol-partial-background-color: red; --ol-subtle-foreground-color: red; --ol-brand-color: red; } #map { position: absolute; top: 0; bottom: 0; width: 100%; } #map-control-container { --map-container-padding: 1rem; position: absolute; padding: var(--map-container-padding); display: flex; justify-content: flex-end; width: 100%; height: 100%; } @media screen and (max-width: 576px) { #map-control-container { --map-container-padding: .5rem; } } #zoom-control { display: block; margin-right: auto; } #zoom-control .ol-zoom { position: relative; display: block; width: revert; top: auto; left: auto; pointer-events: auto; } #zoom-control .ol-zoomslider { margin-top: .5rem; position: relative; display: block; width: revert; top: auto; left: auto; padding: 10px 0; background-color: RGBA(var(--bs-body-bg-rgb), .95); border-radius: var(--bs-modal-border-radius); border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); overflow-y: hidden; z-index: 0; } #zoom-control .ol-zoomslider::after { content: ""; position: absolute; top: 3%; left: calc(50% - 3px); width: 6px; height: 94%; background-color: RGBA(211, 212, 213, .4); border-radius: 5px; border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); cursor: pointer; pointer-events: auto; } #zoom-control button.ol-zoomslider-thumb { z-index: 10; height: 10px; width: 80%; margin: 0 auto; padding: 0; pointer-events: auto; } .ol-scale-line { display: block; width: revert; height: revert; top: auto; bottom: var(--map-container-padding); left: var(--map-container-padding); z-index: 0; padding: .5rem; background-color: RGBA(var(--bs-body-bg-rgb), .95); background-clip: padding-box; border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); border-radius: var(--bs-modal-border-radius); pointer-events: auto; } .ol-scale-line-inner { border: 1px solid var(--bs-body-color); border-top: none; color: var(--bs-body-color); font-size: 80%; margin: 0; } #map-menu, #zoom-control { position: relative; } @media screen and (min-width: 768px) { #map-menu > .ol-control > button { font-size: 200%; } } #map-menu > * { margin-top: .5rem; pointer-events: auto; } @media screen and (max-width: 767px) { #map-menu > * { margin-top: .25rem; } } #map-menu > *:first-child { margin-top: 0; } #map-menu > .ol-control { position: relative; inset: initial; } .ol-control { background: none; border: none; outline: none; } .ol-control button.btn { --bs-btn-padding-x: 0.5rem; --bs-btn-padding-y: 0.5rem; display: block; margin: 0; padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x); width: auto; height: auto; font-weight: bold; text-decoration: none; font-size: inherit; text-align: center; color: var(--bs-btn-color); background-color: var(--bs-btn-bg); border-radius: var(--bs-btn-border-radius); border: var(--bs-btn-border-width) solid var(--bs-btn-border-color); } .ol-control button.btn:focus:not(:focus-visible, :hover) { text-decoration: none; color: var(--bs-btn-color); background-color: var(--bs-btn-bg); border-color: var(--bs-btn-border-color); outline: none; } .ol-control button.btn:hover, .ol-control button.btn:focus-visible { text-decoration: none; color: var(--bs-btn-hover-color); background-color: var(--bs-btn-hover-bg); border-color: var(--bs-btn-hover-border-color); outline: none; } .btn-light, .btn-dark { --bs-btn-border-color: var(--bs-btn-hover-border-color); } #map-control-container[aria-hidden="true"], #layer-selection-panel[aria-hidden="true"], #map-legend-panel[aria-hidden="true"] { display: none; } #layer-selection-panel, #map-legend-panel { position: relative; min-width: min-content; max-width: 35%; width: revert; margin-right: 1rem; font-size: medium; z-index: 0; --bs-modal-color: var(--bs-body-color); --bs-modal-padding: .75rem; } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } #layer-selection-panel[aria-hidden="false"], #map-legend-panel[aria-hidden="false"] { animation: fade-in .25s ease-in-out both; display: block; } @media screen and (max-width: 767px) { #layer-selection-panel, #map-legend-panel { max-width: 100%; margin-right: .5rem; display: none; } #layer-selection-button, #map-legend-button, #export-to-image, #layer-selection-panel, #map-legend-panel, #map-menu .ol-full-screen { display: none; } } @media screen and (min-width: 350px) and (max-width: 576px) { #info-button { bottom: 0; right: 0; position: absolute; } } @media screen and (max-height: 576px), (max-width: 500px) { #zoom-control .ol-zoomslider { display: none; } } @media screen and (max-width: 900px) { #map-legend-panel, #layer-selection-panel { max-width: 60%; } } @media screen and (max-height: 300px) { body { --bs-body-font-size: .8rem; } .ol-control button.btn { --bs-btn-padding-x: 0.4rem; --bs-btn-padding-y: 0.4rem; } } .ol-overlaycontainer-stopevent .modal-backdrop.show { pointer-events: auto; }