From 35528bea06784737e614339e56537d335dd87c22 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Thu, 12 Jun 2025 13:32:40 +0200 Subject: Move *.css files to ./src. --- main.js | 2 +- src/style.css | 621 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/style2.css | 50 +++++ style.css | 621 --------------------------------------------------------- style2.css | 50 ----- 5 files changed, 672 insertions(+), 672 deletions(-) create mode 100644 src/style.css create mode 100644 src/style2.css delete mode 100644 style.css delete mode 100644 style2.css diff --git a/main.js b/main.js index e5c8909..edee94b 100644 --- a/main.js +++ b/main.js @@ -53,7 +53,7 @@ import { register as registerProjection } from 'ol/proj/proj4.js'; import { Modal, Popover } from 'bootstrap'; import { layers } from './src/layers.js'; -import './style.css'; +import './src/style.css'; proj4.defs('EPSG:3006', '+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs +type=crs'); registerProjection(proj4); diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000..672610d --- /dev/null +++ b/src/style.css @@ -0,0 +1,621 @@ +@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; +} +.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; + 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; +} +#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; + --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; +} + +.popover { + --bs-popover-header-padding-x: .75rem; + --bs-popover-header-padding-y: .5rem; + --bs-popover-body-padding-x: .45rem; + --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.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; + --bs-heading-color: var(--bs-popover-header-color); +} +.popover-body { + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; + max-height: 40vh; + overflow: auto auto; +} +.popover-body h6, .popover-body h5 { + margin-bottom: .25rem; + 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-body .table { + --bs-table-bg: none; + --bs-table-hover-bg: rgba(0, 0, 0, 0.04); + margin: 0; +} +.popover-body table > tbody > tr > td:first-child { + font-style: italic; + width: 9.75em; + padding-right: .75em; +} +.popover-body table > tbody > tr > td { + padding: 0.1rem 0.3rem; +} +.feature-attr-mrr-license-id, .feature-attr-dnr, .feature-objid, .feature-orgnr { + font-family: var(--bs-font-monospace); + word-wrap: break-word; +} + +.popover-header h6 { + margin: 0; +} +/* 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; + 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; + } +} diff --git a/src/style2.css b/src/style2.css new file mode 100644 index 0000000..dfeaee5 --- /dev/null +++ b/src/style2.css @@ -0,0 +1,50 @@ +body { + text-align: center; + max-width: 960px; + font-family: "Helvetica Neue", Arial, "Noto Sans", sans-serif; + padding: 0; + margin: 0 auto; + height: 100vh; + --margin-y: 1em; + --margin-x: 0; +} +#wrapper { + height: 100%; + display: flex; + flex-flow: column; + margin: 0 var(--margin-x); +} +#desc { + margin: var(--margin-y) 0; +} +#desc > p:first-child { + margin-top: 0; +} +#desc > p:last-child { + margin-bottom: 0; +} +#map { + border: 1px solid black; + width: 500px; + max-height: 600px; + margin: 0 auto var(--margin-y) auto; + flex: 1; +} +@media screen and (max-width: 500px) { + body { + --margin-x: .25em; + } + #map { + width: 100%; + } +} +@media screen and (max-height: 1280px) { + body { + --margin-y: .5em; + } +} +@media screen and (max-height: 600px) { + body { + --margin-y: .25em; + } +} diff --git a/style.css b/style.css deleted file mode 100644 index 672610d..0000000 --- a/style.css +++ /dev/null @@ -1,621 +0,0 @@ -@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; -} -.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; - 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; -} -#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; - --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; -} - -.popover { - --bs-popover-header-padding-x: .75rem; - --bs-popover-header-padding-y: .5rem; - --bs-popover-body-padding-x: .45rem; - --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.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; - --bs-heading-color: var(--bs-popover-header-color); -} -.popover-body { - -webkit-user-select: text; - -moz-user-select: text; - user-select: text; - max-height: 40vh; - overflow: auto auto; -} -.popover-body h6, .popover-body h5 { - margin-bottom: .25rem; - 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-body .table { - --bs-table-bg: none; - --bs-table-hover-bg: rgba(0, 0, 0, 0.04); - margin: 0; -} -.popover-body table > tbody > tr > td:first-child { - font-style: italic; - width: 9.75em; - padding-right: .75em; -} -.popover-body table > tbody > tr > td { - padding: 0.1rem 0.3rem; -} -.feature-attr-mrr-license-id, .feature-attr-dnr, .feature-objid, .feature-orgnr { - font-family: var(--bs-font-monospace); - word-wrap: break-word; -} - -.popover-header h6 { - margin: 0; -} -/* 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; - 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; - } -} diff --git a/style2.css b/style2.css deleted file mode 100644 index dfeaee5..0000000 --- a/style2.css +++ /dev/null @@ -1,50 +0,0 @@ -body { - text-align: center; - max-width: 960px; - font-family: "Helvetica Neue", Arial, "Noto Sans", sans-serif; - padding: 0; - margin: 0 auto; - height: 100vh; - --margin-y: 1em; - --margin-x: 0; -} -#wrapper { - height: 100%; - display: flex; - flex-flow: column; - margin: 0 var(--margin-x); -} -#desc { - margin: var(--margin-y) 0; -} -#desc > p:first-child { - margin-top: 0; -} -#desc > p:last-child { - margin-bottom: 0; -} -#map { - border: 1px solid black; - width: 500px; - max-height: 600px; - margin: 0 auto var(--margin-y) auto; - flex: 1; -} -@media screen and (max-width: 500px) { - body { - --margin-x: .25em; - } - #map { - width: 100%; - } -} -@media screen and (max-height: 1280px) { - body { - --margin-y: .5em; - } -} -@media screen and (max-height: 600px) { - body { - --margin-y: .25em; - } -} -- cgit v1.2.3