diff options
Diffstat (limited to 'style.css')
-rw-r--r-- | style.css | 650 |
1 files changed, 650 insertions, 0 deletions
diff --git a/style.css b/style.css new file mode 100644 index 0000000..cf7fc86 --- /dev/null +++ b/style.css @@ -0,0 +1,650 @@ +@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-container-padding: 1rem; +} + +body.inprogress { + cursor: wait; +} + +#map-control-container { + --map-menu-spacing: .5em; + position: absolute; + padding: var(--map-container-padding); + display: flex; + justify-content: flex-end; + width: 100%; + height: 100%; +} +@media screen and (max-width: 767px), screen and (max-height: 767px) { + #map { + --map-container-padding: .5rem; + } +} + +#zoom-control { + position: absolute; + margin-left: var(--map-container-padding); + margin-top: var(--map-container-padding); +} +#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 { + position: relative; +} +@media screen and (min-width: 576px) { + #map-menu > .ol-control > button { + font-size: 150%; + } +} +@media screen and (min-width: 768px) { + #map-menu > .ol-control > button { + font-size: 200%; + } + #zoom-control > .ol-zoom > button { + font-size: 120%; + } +} +#map-menu > * { + margin-bottom: var(--map-menu-spacing); + pointer-events: auto; +} +@media screen and (max-width: 767px) { + #map-control-container { + --map-menu-spacing: .25rem; + } + .ol-scale-line-inner { + font-size: 70%; + } +} + +#map-menu > .ol-control { + position: relative; + inset: initial; +} + +.ol-control { + background: none; + border: none; + outline: none; /* eslint-disable-line css/use-baseline */ +} +.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; /* eslint-disable-line css/use-baseline */ +} +.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; /* eslint-disable-line css/use-baseline */ +} +.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; + margin-left: 0; + margin-right: var(--map-menu-spacing); + font-size: medium; + z-index: 11; + height: max-content; + max-height: 100%; + pointer-events: auto; + --bs-modal-color: var(--bs-body-color); + --bs-modal-padding: .75rem; +} +#layer-selection-panel { + /*min-width: min-content;*/ + /*max-width: 35%;*/ + /*width: revert;*/ + max-width: 360px; +} +#map-legend-panel { + max-width: 410px; +} +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +#map-legend-panel .modal-body { + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; /* eslint-disable-line css/use-baseline */ +} +#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-aspect-ratio: .75), screen and (max-width: 460px) { + /* 4/3 in portrait mode, likely mobile in portrait mode */ + #map-control-container { + flex-direction: column-reverse; + } + #map-menu { + display: flex; + justify-content: flex-end; + } + #map-menu > * { + margin-bottom: 0; + margin-left: var(--map-menu-spacing); + } + #map-menu .ol-full-screen { + display: none; + } + #layer-selection-panel, + #map-legend-panel { + margin: var(--map-menu-spacing) 0 0 auto; + } +} + +#map-legend-button.disabled button { + color: rgb(from var(--bs-btn-color) r g b / calc(alpha*.25)); + pointer-events: none; +} +@media screen and (max-width: 200px) { + #layer-selection-button, + #map-legend-button, + #age-filter-button, + #export-to-image, + #layer-selection-panel, + #map-legend-panel, + #map-menu .ol-full-screen { + display: none; + } +} +@media screen and (max-height: 576px), screen and (max-width: 500px) { + #zoom-control .ol-zoomslider { + display: none; + } +} +@media screen and (max-width: 300px), 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; + } +} +#info-modal { + /* close the modal when clicking the backdrop */ + pointer-events: none; + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; /* eslint-disable-line css/use-baseline */ + --bs-modal-header-padding: 1rem; + --modal-info-padding-x: var(--bs-modal-header-padding); + --modal-info-padding-y: .5rem; + --modal-info-bg-light: rgba(0, 0, 0, .08); +} +#info-modal .modal-header { + padding: var(--modal-info-padding-y) var(--modal-info-padding-x); +} +#info-modal .list-group-item, +#info-modal { + --bs-list-group-border-width: 1px; +} +#info-accordion { + --bs-accordion-active-bg: var(--bs-accordion-bg); + --bs-accordion-active-color: var(--bs-body-color); + --bs-accordion-btn-padding-x: 0; + --bs-accordion-btn-padding-y: .025rem; + --bs-accordion-btn-focus-box-shadow: none; + --bs-accordion-body-padding-x: 0; + --bs-accordion-body-padding-y: 0; + --bs-accordion-btn-active-bg: var(--modal-info-bg-light); + padding: 0 var(--modal-info-padding-x); +} +#info-modal .accordion-item { + border: none; +} +#info-modal .accordion-header > .accordion-button[aria-expanded="false"]:hover { + background-color: rgb(from var(--modal-info-bg-light) r g b / calc(alpha*.4)); +} +#info-modal .accordion-header > .accordion-button[aria-expanded="true"] { + background-color: var(--bs-accordion-btn-active-bg); +} +#info-modal ul.list-group > li.list-group-item { + padding: .3rem 0; + border: none; +} +#info-modal ul.list-group > li.list-group-item:last-child { + padding-bottom: var(--modal-info-padding-y); +} +#info-body > ul.list-group { + margin-top: var(--modal-info-padding-y); + border-top: var(--bs-list-group-border-width) solid var(--modal-info-bg-light); + padding: 0 var(--modal-info-padding-x); +} +#info-modal ul.list-group > li.list-group-item:not(:first-child) { + border-top: var(--bs-list-group-border-width) solid var(--modal-info-bg-light); +} +#info-accordion > .accordion-item:not(:last-child) ul.list-group > li.list-group-item:last-child { + border-bottom: var(--bs-list-group-border-width) solid var(--modal-info-bg-light); +} +#info-modal .modal-body ul.list-group > li.list-group-item:not(.text-muted):hover { + background-color: rgb(from var(--modal-info-bg-light) r g b / calc(alpha*.4)); +} +#info-body { + padding: var(--modal-info-padding-y) 0; +} +#info-body > ul.list-group > li.list-group-item p, +#info-modal .accordion-body ul.list-group > li.list-group-item p { + margin: 0; +} +#info-body > ul.list-group > li.list-group-item h6, +#info-modal .accordion-body ul.list-group > li.list-group-item h6 { + margin: .05rem 0 .15rem 0; + font-size: 1.15rem; +} +#info-modal .modal-body a { + color: inherit; + text-decoration: none; +} +#info-modal .modal-body a:hover { + opacity: .8; + text-decoration: underline; +} +#info-modal .modal-body .info-credits { + border-top: var(--bs-list-group-border-width) solid var(--modal-info-bg-light); + padding: var(--modal-info-padding-y) var(--modal-info-padding-x) 0 var(--modal-info-padding-x); + margin: 0; +} + +.ol-overlaycontainer-stopevent .modal-backdrop.show { + pointer-events: auto; +} + +#layer-selection-panel .accordion { + --bs-accordion-active-bg: var(--bs-accordion-bg); + --bs-accordion-active-color: var(--bs-body-color); + --bs-accordion-btn-padding-x: 0; + --bs-accordion-btn-padding-y: 0; + --bs-accordion-btn-focus-box-shadow: none; + --bs-accordion-body-padding-x: 0; + --bs-accordion-body-padding-y: 0; +} +#layer-selection-panel .accordion-item { + border: none; +} +#layer-selection-panel .accordion-body .list-group { + padding-left: 1.5em; +} +#layer-selection-panel .accordion .list-group.list-group-flush > .list-group-item { + padding: 0; + border: none; +} +#layer-selection-panel .accordion-item .form-check { + padding-left: 0; + margin: 0.125rem 0 0 0; +} +#layer-selection-panel .accordion-item:first-child .form-check { + margin-top: 0; +} +#layer-selection-panel .accordion-header > .accordion-button[aria-expanded="true"] { + padding-bottom: 0.125rem; + margin-bottom: 0.125rem; +} +#layer-selection-panel .accordion-header > .accordion-button > .form-check > .form-check-input, +#layer-selection-panel .accordion > .accordion-item > .form-check > .form-check-input { + margin-left: 0; + float: none; +} +#layer-selection-panel .accordion-item .form-check > .form-check-input, +#layer-selection-panel .accordion-item .list-group-item > .d-inline-flex > .form-check-input { + margin-right: .5em !important; +} +#layer-selection-panel .accordion-header > .accordion-button > .form-check > .form-check-label, +#layer-selection-panel .accordion-item .form-check > .form-check-label { + display: inline; +} +#map-legend-panel .list-group-flush > .list-group-item { + border: none; + padding: 0; +} +#map-legend-panel .modal-body > ul.list-group > li.list-group-item:not(.d-none) ~ li.list-group-item:not(.d-none) { + border-top: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color); + margin-top: .5rem; + padding-top: .5rem; +} +#map-legend-panel .list-group .list-group-item.h4, +#map-legend-panel .list-group .list-group-item.h5, +#map-legend-panel .list-group .list-group-item.h6 { + margin: 0 0 .25rem 0; +} +#map-legend-panel .list-group .list-group-item:not(.d-none) ~ .list-group-item.h5:not(.d-none) { + margin-top: .125rem; +} +#map-legend-panel .list-group .list-group-item.h4 { + font-size: 1.3rem; +} +#map-legend-panel .list-group .list-group-item.h5 { + font-size: 1.05rem; +} +#map-legend-panel .list-group .list-group-item.h6 { + font-size: 1rem; +} +#map-legend-panel .list-group .list-group-item .map-legend-symbol { + /* 24px */ + height: calc(var(--bs-body-line-height) * var(--bs-body-font-size)) !important; +} +#map-legend-panel .list-group .list-group-item .map-legend-symbol > * { + width: 32px; + margin-right: .5rem; +} +#map-legend-panel .list-group .list-group-item .map-legend-symbol img { + margin-left: auto; + margin-right: auto; + display: block; +} +#map-legend-panel .list-group .list-group-item:not(.h4,.h5,.h6):hover { + background-color: var(--bs-list-group-action-hover-bg); +} + +#age-filter-modal .modal-body .btn-group { + width: 100%; +} +#age-filter-modal .age-filter-infotext { + margin: 0 0 var(--bs-modal-padding) 0; +} +#age-filter-form .age-filter-settings .age-filter-settings-desc { + margin: var(--bs-modal-padding) 0; +} +#age-filter-form .age-filter-settings { + margin: 0 0 var(--bs-modal-padding) 0; +} +#age-filter-form .age-filter-settings p.text-muted { + margin: 0; +} +#age-filter-modal p { + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; /* eslint-disable-line css/use-baseline */ +} + +.popover { + --bs-popover-header-padding-x: .75rem; + --bs-popover-header-padding-y: .5rem; + --bs-popover-body-offset-x: .3rem; + --bs-popover-body-padding-x: calc(var(--bs-popover-header-padding-x) - var(--bs-popover-body-offset-x)); + --bs-popover-body-padding-y: .5rem; + --bs-popover-header-bg: var(--bs-popover-bg); + --bs-popover-zindex: 1000; + --bs-popover-max-width: 450px; + width: var(--bs-popover-max-width); + pointer-events: auto; +} +.popover.popover-maximized { + --bs-popover-header-padding-x: 1rem; + --bs-popover-header-padding-y: 1rem; + --bs-popover-body-padding-y: 1rem; + --bs-popover-body-offset-x: .5rem; + --bs-popover-font-size: 1rem; +} +.popover.inprogress > .popover-header, +.popover.inprogress > .popover-body { + filter: opacity(70%); + pointer-events: none; +} +.popover-header { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; /* eslint-disable-line css/use-baseline */ + --bs-heading-color: var(--bs-popover-header-color); +} +.popover-header h5, .popover-header h6 { + line-height: var(--bs-body-line-height); + vertical-align: middle; + margin: 0; +} +.popover-body { + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; /* eslint-disable-line css/use-baseline */ + max-height: 40vh; + overflow: auto auto; +} +.popover.popover-maximized .popover-body { + max-height: calc(100% - 2*var(--bs-popover-header-padding-y) - var(--bs-body-line-height)*var(--bs-popover-font-size) - var(--bs-popover-border-width)); +} +.popover-body h6, .popover-body h5 { + margin-bottom: var(--bs-popover-body-padding-y); + margin-left: calc(var(--bs-popover-header-padding-x) - var(--bs-popover-body-padding-x)); + margin-right: calc(var(--bs-popover-header-padding-x) - var(--bs-popover-body-padding-x)); +} +.popover.popover-maximized .popover-body h5, +.popover.popover-maximized .popover-body h6 { + font-size: calc(1.2 * var(--bs-popover-font-size)); +} +.popover-body .table { + --bs-table-bg: none; + --bs-table-hover-bg: rgba(0, 0, 0, .04); + --bs-table-bg-padding-y: .1rem; + margin: 0; +} +.popover.popover-maximized .popover-body .table { + --bs-table-hover-bg: none; + --bs-table-bg-padding-y: .5rem; +} +.popover.popover-maximized .popover-body .table tr:nth-of-type(2n+1) { + background: rgba(0, 0, 0, .05); +} +.popover-body table > tbody > tr > th[scope="row"] { + font-style: italic; + padding-right: .75em; + font-weight: normal; +} +.popover .popover-body table > tbody > tr > th[scope="row"] { + width: 35%; +} +.popover-body table > tbody > tr > th[scope="row"], +.popover-body table > tbody > tr > td { + padding: var(--bs-table-bg-padding-y) var(--bs-popover-body-offset-x); +} +.feature-attr-mrr-license-id, .feature-attr-dnr, .feature-objid, .feature-orgnr { + font-family: var(--bs-font-monospace); + word-wrap: break-word; +} + +/* inspired from bootstrap's .btn-close */ +.popover-header .popover-button { + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: #000; + background: transparent var(--popover-button-icon) center/1em auto no-repeat; + border: 0; + border-radius: 0.375rem; + opacity: .5; +} +.popover-header .popover-button:hover { + text-decoration: none; + opacity: .75; +} +.popover-header .popover-button:focus { + outline: 0; /* eslint-disable-line css/use-baseline */ + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + opacity: 1; +} +.popover-header .popover-button:disabled, .popover-header .popover-button.disabled { + pointer-events: none; + opacity: .25; +} + +/* SVG from bootstrap icons v1.11.0 (released under MIT License) */ +.popover-header .popover-button-prev { + --popover-button-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath transform='scale(1.3799) translate(-2.2025 -2.2025)' d='M10 12.796V3.204L4.519 8zm-.659.753-5.48-4.796a1 1 0 0 1 0-1.506l5.48-4.796A1 1 0 0 1 11 3.204v9.592a1 1 0 0 1-1.659.753'/%3e%3c/svg%3e"); +} +.popover-header .popover-button-next { + --popover-button-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath transform='scale(1.3799) translate(-2.2025 -2.2025)' d='M6 12.796V3.204L11.481 8zm.659.753 5.48-4.796a1 1 0 0 0 0-1.506L6.66 2.451C6.011 1.885 5 2.345 5 3.204v9.592a1 1 0 0 0 1.659.753'/%3e%3c/svg%3e"); +} +.popover-header .popover-button-expand { + --popover-button-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M5.828 10.172a.5.5 0 0 0-.707 0l-4.096 4.096V11.5a.5.5 0 0 0-1 0v3.975a.5.5 0 0 0 .5.5H4.5a.5.5 0 0 0 0-1H1.732l4.096-4.096a.5.5 0 0 0 0-.707m4.344-4.344a.5.5 0 0 0 .707 0l4.096-4.096V4.5a.5.5 0 1 0 1 0V.525a.5.5 0 0 0-.5-.5H11.5a.5.5 0 0 0 0 1h2.768l-4.096 4.096a.5.5 0 0 0 0 .707'/%3e%3c/svg%3e"); +} +.popover-header .popover-button-reduce { + --popover-button-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.172 15.828a.5.5 0 0 0 .707 0l4.096-4.096V14.5a.5.5 0 1 0 1 0v-3.975a.5.5 0 0 0-.5-.5H1.5a.5.5 0 0 0 0 1h2.768L.172 15.121a.5.5 0 0 0 0 .707M15.828.172a.5.5 0 0 0-.707 0l-4.096 4.096V1.5a.5.5 0 1 0-1 0v3.975a.5.5 0 0 0 .5.5H14.5a.5.5 0 0 0 0-1h-2.768L15.828.879a.5.5 0 0 0 0-.707'/%3e%3c/svg%3e"); +} +.popover-header .popover-button-close { + --popover-button-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath transform='scale(1.3332) translate(-2 -2)' d='M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z'/%3e%3c/svg%3e"); +} + +.popover:not(.popover-maximized) .grabbing-area { + cursor: move; /* fallback if grab cursor is unsupported */ + cursor: grab; + cursor: -moz-grab; + cursor: -webkit-grab; +} +.popover:not(.popover-maximized) .grabbing-area.grabbing-area-grabbed { + cursor: grabbing; + cursor: -moz-grabbing; + cursor: -webkit-grabbing; +} +.popover.popover-detached > .popover-arrow, +.popover.popover-maximized > .popover-arrow { + display: none; +} +.popover.popover-maximized { + position: relative !important; + inset: 0 !important; + transform: none !important; + margin: calc(.75*var(--map-container-padding)) auto !important; + --bs-popover-max-width: calc(100vw - 1.5*var(--map-container-padding)); + height: calc(100vh - 1.5*var(--map-container-padding)); + animation: fade-in .25s ease-in-out both; +} +@media screen and (min-width: 1280px) { + .popover.popover-maximized { + --bs-popover-max-width: 1280px; + } +} +@media screen and (min-height: 1920px) { + .popover.popover-maximized { + height: 1920px; + margin-top: calc(50vh - 960px) !important; + margin-bottom: calc(50vh - 960px) !important; + } +} |