/* TailwindCSS JIT-Mode Input file. Use TailwindCSS functions and directives here – https://tailwindcss.com/docs/functions-and-directives About JIT-Mode: https://tailwindcss.com/docs/just-in-time-mode#styles-rebuild-in-an-infinite-loop TailwindCSS CLI generates the css/index-tailwind-output.css file based on this file. It is not used directly in the app. */ @tailwind base; @tailwind components; @tailwind utilities; @layer utilities { @variants responsive { .z-above-map { z-index: 10000 } .z-above-controls { z-index: 10001 } .w-160 { width: 40rem; } .bg-subtle { background-color: var(--subtle-detail-color); color: var(--subtle-detail-color-contrast); } .bg-unsubtle { background-color: var(--unsubtle-detail-color); color: var(--unsubtle-detail-color-contrast); } .bg-catch { background-color: var(--catch-detail-color); color: var(--catch-detail-color-contrast); } .rounded-left-full { border-bottom-left-radius: 999rem; border-top-left-radius: 999rem; } .rounded-right-full { border-bottom-right-radius: 999rem; border-top-right-radius: 999rem; } } } :root { /* The main colour scheme of mapcomplete is configured here. * For a custom styling, set 'customCss' in your layoutConfig and overwrite some of these. */ /* Main color of the application: the background and text colours */ --background-color: white; /* Main text colour. Also styles some elements, such as the 'close popup'-button or 'back-arrow' (in mobile) */ --foreground-color: black; /* A colour to indicate an error or warning */ --alert-color: #fee4d1; /** * Base colour of interactive elements, mainly the 'subtle button' * */ --subtle-detail-color: #DBEAFE; --subtle-detail-color-contrast: black; --subtle-detail-color-light-contrast: lightgrey; /** * A stronger variant of the 'subtle-detail-colour' * Used as subtle button hover */ --unsubtle-detail-color: #BFDBFE; --unsubtle-detail-color-contrast: black; --catch-detail-color: #3a3aeb; --catch-detail-color-contrast: white; --non-active-tab-svg: var(--foreground-color); --shadow-color: #00000066; --return-to-the-map-height: 2em; --image-carousel-height: 350px; /* The border colour of the leaflet popup */ --popup-border: white; /* Technical variable to make some dynamic behaviour possible; set by javascript. */ --variable-title-height: 0px; } html, body { height: 100%; min-height: 100vh; min-height: -webkit-fill-available; margin: 0; padding: 0; background-color: var(--background-color); color: var(--foreground-color); font-family: 'Helvetica Neue', Arial, sans-serif; } .leaflet-overlay-pane .leaflet-zoom-animated { /* Another workaround to keep leaflet working */ width: initial !important; height: initial !important; box-sizing: initial !important; } .leaflet-control-attribution { display: block ruby; } .badge { } .badge svg { /*Workaround for leaflet*/ width: unset !important; height: 100% !important; } svg, img { box-sizing: content-box; width: 100%; height: 100%; } .svg-catch svg path { fill: var(--catch-detail-color) !important; stroke: var(--catch-detail-color) !important; } .svg-unsubtle svg path { fill: var(--unsubtle-detail-color) !important; stroke: var(--unsubtle-detail-color) !important; } .svg-subtle svg path { fill: var(--subtle-detail-color) !important; stroke: var(--subtle-detail-color) !important; } .svg-foreground svg path { fill: var(--foreground-color) !important; stroke: var(--foreground-color) !important; } .no-images img { display: none; } .weblate-link { /* Weblate-links are the little translation icon next to translatable sentences. Due to their special nature, they are exempt from some rules */ } .mapcontrol svg path { fill: var(--subtle-detail-color-contrast) !important; } .red-svg svg path { stroke: #d71010 !important; } a { color: var(--foreground-color); } .btn { line-height: 1.25rem; --tw-text-opacity: 1; color: var(--catch-detail-color-contrast); --tw-bg-opacity: 1; background-color: var(--catch-detail-color); display: inline-flex; border-radius: 1.5rem; padding-top: 0.75rem; padding-bottom: 0.75rem; padding-left: 1.25rem; padding-right: 1.25rem; font-size: large; font-weight: bold; transition: 100ms; /*-- invisible border: rendered on hover*/ border: 3px solid var(--unsubtle-detail-color); } .btn:hover { border: 3px solid var(--catch-detail-color); } .btn-secondary { background-color: var(--catch-detail-color); filter: saturate(0.5); } .btn-secondary:hover { background-color: var(--catch-detail-color); filter: unset; } .btn-disabled { filter: saturate(0.3); cursor: default; } .btn-disabled:hover { border: 3px solid var(--unsubtle-detail-color); } .h-min { height: min-content; } .border-detail { border-color: var(--foreground-color); } .w-min { width: min-content; } .rounded-left-full { border-bottom-left-radius: 999rem; border-top-left-radius: 999rem; } .rounded-right-full { border-bottom-right-radius: 999rem; border-top-right-radius: 999rem; } .w-16-imp { width: 4rem !important; } .w-32-imp { width: 8rem !important; } .w-48-imp { width: 12rem !important; } .link-underline a { text-decoration: underline 1px var(--foreground-color); } .link-no-underline a { text-decoration: none; } li { margin-left: 0.5em; padding-left: 0.2em; margin-top: 0.1em; } h2 { font-size: large; margin-top: 0.5em; margin-bottom: 0.3em; font-weight: bold; } h3 { font-size: larger; margin-top: 0.6em; margin-bottom: 0; font-weight: bold; } h3 { font-size: larger; margin-top: 0.6em; margin-bottom: 0; font-weight: bolder; } p { padding-top: 0.1em; } li::marker { content: "•" } .subtle-background { background: var(--subtle-detail-color); color: var(--subtle-detail-color-contrast); } .normal-background { background: var(--background-color); color: var(--foreground-color) } .subtle-lighter { color: var(--subtle-detail-color-light-contrast); } .border-attention-catch { border: 5px solid var(--catch-detail-color); } .border-invisible { border: 5px solid #00000000; } .border-attention { border-color: var(--catch-detail-color); } .direction-svg svg path { fill: var(--catch-detail-color) !important; } #leafletDiv { height: 100%; } .leaflet-popup-content-wrapper { background-color: var(--background-color); color: var(--foreground-color); border: 2px solid var(--popup-border); box-shadow: 0 3px 14px var(--shadow-color) !important; } .leaflet-container { font: unset !important; background-color: var(--background-color) !important; } .leaflet-popup-tip { background-color: var(--popup-border) !important; color: var(--popup-border) !important; box-shadow: 0 3px 14px var(--shadow-color) !important; } .single-layer-selection-toggle { position: relative; width: 2em; height: 2em; flex-shrink: 0; } .single-layer-selection-toggle img { max-height: 2em !important; max-width: 2em !important; } .single-layer-selection-toggle svg { max-height: 2em !important; max-width: 2em !important; } .block-ruby { display: block ruby; } .disable-links a { pointer-events: none; text-decoration: none !important; color: var(--subtle-detail-color-contrast) !important; } .enable-links a { pointer-events: unset; text-decoration: underline !important; color: unset !important; } .disable-links a.must-link, .disable-links .must-link a { /* Hide links if they are disabled */ display: none; } /**************** GENERIC ****************/ .alert { background-color: var(--alert-color); color: var(--foreground-color); font-weight: bold; border-radius: 1em; margin: 0.25em; text-align: center; padding: 0.15em 0.3em; } .invalid { box-shadow: 0 0 10px #ff5353; height: min-content; } .shadow { box-shadow: 0 0 10px var(--shadow-color); } .title-font span { font-size: xx-large !important; font-weight: bold; } .soft { background-color: var(--subtle-detail-color); color: var(--subtle-detail-color-contrast); font-weight: bold; border-radius: 1em; margin: 0.25em; text-align: center; padding: 0.15em 0.3em; } .subtle { color: #999; } .link-underline .subtle a { text-decoration: underline 1px #7193bb88; color: #7193bb; } .thanks { background-color: #43d904; font-weight: bold; border-radius: 1em; margin: 0.25em; text-align: center; padding: 0.15em 0.3em; } .clickable { pointer-events: all; } .unclickable { pointer-events: none !important; } @keyframes slide { /* This is the animation on the marker to add a new point - it slides through all the possible presets */ from { transform: translateX(0%); } to { transform: translateX(calc(-100% + 42px)); } } .hand-drag-animation { animation: hand-drag-animation 6s ease-in-out infinite; transform-origin: 50% 125%; } @keyframes hand-drag-animation { /* This is the animation on the little extra hand on the location input. If fades in, invites the user to interact/drag the map */ 0% { opacity: 0; transform: rotate(-30deg); } 6% { opacity: 1; transform: rotate(-30deg); } 12% { opacity: 1; transform: rotate(-45deg); } 24% { opacity: 1; transform: rotate(-00deg); } 30% { opacity: 1; transform: rotate(-30deg); } 36% { opacity: 0; transform: rotate(-30deg); } 100% { opacity: 0; transform: rotate(-30deg); } } /**************************************/ #topleft-tools { display: block; position: absolute; z-index: 5000; transition: all 500ms linear; left: 0; right: 0; } .welcomeMessage { display: block; max-width: calc(100vw - 5em); width: 40em; max-height: calc(100vh - 15em); background-color: var(--background-color); color: var(--foreground-color); } /***************** Info box (box containing features and questions ******************/ input { color: var(--foreground-color) } .leaflet-popup-content { width: 45em !important; margin: 0.25rem !important; } .leaflet-div-icon { background-color: unset !important; border: unset !important; } .floating-element-width { max-width: calc(100vw - 5em); width: 40em; } .leaflet-div-icon svg { width: calc(100%); height: calc(100%); } /****** ShareScreen *****/ .literal-code { display: inline-block; background-color: lightgray; padding: 0.5em; word-break: break-word; color: black; box-sizing: border-box; } /** Switch layout **/ .small-image img { height: 1em; max-width: 1em; } .small-image { height: 1em; max-width: 1em; } .slideshow-item img { height: var(--image-carousel-height); width: unset; } .animate-height { transition: max-height .5s ease-in-out; overflow-y: hidden; } .zebra-table tr:nth-child(even) { background-color: #f2f2f2; } .layer-toggle { /* The checkbox that toggles a single layer */ } .layer-filters { /* If needed, the panel which contains the extra filters for a layer */ margin-bottom: 1rem; border-bottom: 2px solid var(--foreground-color); } .filter-panel { /* The panel for a single layer, containing both the toggle and the filters (if any) */ border-bottom: 2px solid lightgrey; margin-bottom: 0.5rem; } .first-filter-panel { /* Additional class on the first layer filter */ } .mapping-icon-small { /* A mapping icon type */ width: 1.5rem; max-height: 1.5rem; margin-right: 0.5rem; } .mapping-icon-medium { /* A mapping icon type */ width: 3rem; max-height: 3rem; margin-right: 1rem; margin-left: 1rem; } .mapping-icon-large{ /* A mapping icon type */ width: 6rem; max-height: 5rem; margin-top: 0.5rem; margin-bottom: 0.5rem; margin-right: 1.5rem; margin-left: 1.5rem; }