mapcomplete/src/index.css

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

607 lines
13 KiB
CSS
Raw Normal View History

/*
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;
:root {
2024-04-24 02:44:31 +02:00
/*
* The main colour scheme of mapcomplete is configured here.
* For a custom styling, set 'customCss' in your layoutConfig and overwrite some of these.
*/
2022-02-04 00:45:22 +01:00
2024-06-18 03:33:11 +02:00
/* No support for dark mode yet, we disable it to prevent some elements to suddenly toggle */
color-scheme: only light;
2024-04-24 02:44:31 +02:00
/* 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;
2024-04-24 02:44:31 +02:00
/* A colour scheme to indicate an error or warning */
--alert-color: #fee4d1;
--alert-foreground-color: var(--foreground-color);
2024-04-24 02:44:31 +02:00
--low-interaction-background: #eeeeee;
--low-interaction-background-50: #eeeeee90;
2024-04-24 02:44:31 +02:00
--low-interaction-foreground: black;
--low-interaction-contrast: #ff00ff;
2024-04-24 02:44:31 +02:00
--interactive-background: #dddddd;
--interactive-foreground: black;
--interactive-contrast: #ff00ff;
2024-06-17 04:27:08 +02:00
--button-background: #282828;
2024-06-16 19:00:43 +02:00
--button-background-hover: #686868;
2024-04-24 02:44:31 +02:00
--button-foreground: white;
2024-06-17 04:27:08 +02:00
--button-border-color: #F7F7F7;
--disabled: #DBDBDB;
2024-04-24 02:44:31 +02:00
/**
* Base colour of interactive elements, mainly the 'subtle button'
* @deprecated
*/
2024-04-24 02:44:31 +02:00
--subtle-detail-color: #dbeafe;
--subtle-detail-color-contrast: black;
--subtle-detail-color-light-contrast: lightgrey;
2021-01-07 04:50:12 +01:00
2024-04-24 02:44:31 +02:00
--catch-detail-color: black; /*#3a3aeb;*/
--catch-detail-foregroundcolor: white;
--catch-detail-color-contrast: #fb3afb;
2024-04-24 02:44:31 +02:00
--image-carousel-height: 350px;
2024-04-24 02:44:31 +02:00
/** Technical value, used by icon.svelte
*/
2024-04-24 02:44:31 +02:00
--svg-color: #000000;
}
2024-06-16 19:00:43 +02:00
@font-face{
font-family:"Source Sans Pro";
src:url("/assets/source-sans-pro.regular.ttf") format("woff");
}
/***********************************************************************\
* Various tweaks and settings to make some behaviours more predictable *
\***********************************************************************/
html,
body {
2024-04-24 02:44:31 +02:00
height: 100%;
min-height: 100vh;
min-height: -webkit-fill-available;
margin: 0;
padding: 0;
background-color: var(--background-color);
color: var(--foreground-color);
2024-06-16 19:00:43 +02:00
font-family: 'Source Sans Pro';
font-style: normal;
font-weight: 400;
font-size: 16px;
line-height: 150%;
}
svg,
img {
2024-04-24 02:44:31 +02:00
box-sizing: content-box;
width: 100%;
height: 100%;
}
li {
2024-04-24 02:44:31 +02:00
margin-left: 0.5em;
padding-left: 0.2em;
margin-top: 0.1em;
2022-02-01 19:02:46 +01:00
}
li::marker {
2024-04-24 02:44:31 +02:00
content: "•";
}
h1 {
2024-04-24 02:44:31 +02:00
font-size: xx-large;
margin-top: 0.6em;
margin-bottom: 0.4em;
font-weight: bold;
}
h2 {
2024-04-24 02:44:31 +02:00
font-size: x-large;
margin-top: 0.5em;
2024-06-18 03:33:11 +02:00
margin-bottom: 0; /*Disable margin bottom to play nicely with accordeons from flowbite*/
2024-04-24 02:44:31 +02:00
font-weight: bold;
}
h3 {
2024-04-24 02:44:31 +02:00
font-size: larger;
margin-top: 0.6em;
margin-bottom: 0;
font-weight: bold;
2022-02-01 19:02:46 +01:00
}
p {
2024-04-24 02:44:31 +02:00
padding-top: 0.1em;
}
2022-02-01 19:02:46 +01:00
input {
2024-04-24 02:44:31 +02:00
color: var(--foreground-color);
2022-04-01 12:51:55 +02:00
}
2024-04-24 02:44:31 +02:00
input[type="text"] {
width: 100%;
2023-05-16 03:27:49 +02:00
}
/************************* BIG CATEGORIES ********************************/
/**
* The main classes that dictate the structure of the entire app,
* and some interactive elements
*/
.subtle-background {
2024-04-24 02:44:31 +02:00
background: var(--subtle-detail-color);
color: var(--subtle-detail-color-contrast);
}
.normal-background {
2024-04-24 02:44:31 +02:00
background: var(--background-color);
color: var(--foreground-color);
}
.low-interaction {
2024-04-24 02:44:31 +02:00
background: var(--low-interaction-background);
color: var(--low-interaction-foreground);
}
2022-08-19 10:40:57 +02:00
.interactive {
2024-04-24 02:44:31 +02:00
background: var(--interactive-background);
color: var(--interactive-foreground);
}
.border-interactive {
2024-04-24 02:44:31 +02:00
border: 2px dashed var(--catch-detail-color-contrast);
border-radius: 0.5rem;
}
.border-region {
2024-04-24 02:44:31 +02:00
border: 2px dashed var(--interactive-background);
border-radius: 0.5rem;
}
/******************* Styling of input elements **********************/
/**
* This very important section defines what the various input elements look like within the 'low-interaction' and 'interactive'-blocks
*/
2024-06-16 19:00:43 +02:00
/********* BUTTONS ***********/
2024-06-16 19:00:43 +02:00
button, .button {
box-sizing: border-box;
2023-08-23 11:11:53 +02:00
2024-06-16 19:00:43 +02:00
/* Auto layout */
display: flex;
column-gap: 0.25rem;
justify-content: center;
align-items: center;
padding: 0.25rem 1rem;
margin: 0.25rem;
2024-06-16 19:00:43 +02:00
background: var(--background-color);
2024-06-17 04:27:08 +02:00
border: 1px solid var(--button-background-hover);
2024-06-16 19:00:43 +02:00
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
2024-06-17 04:27:08 +02:00
border-radius: 15px;
2024-06-16 19:00:43 +02:00
background: var(--background-color);
transition: all 200ms;
2021-07-27 21:25:00 +02:00
2022-04-23 15:20:54 +02:00
}
2024-06-18 03:33:11 +02:00
.group > button {
padding-right: 1rem !important; /*Flowbite workaround */
}
2024-06-16 19:00:43 +02:00
button.w-full {
margin-left: 0;
2022-04-23 15:20:54 +02:00
}
2024-06-16 19:00:43 +02:00
button:hover:not(.disabled):not(.as-link), .button:hover:not(.disabled):not(.as-link) {
background-color: var(--low-interaction-background);
2021-04-12 13:05:30 +02:00
}
2024-06-16 19:00:43 +02:00
button:focus, .button:focus {
border-color: var(--interactive-contrast);
}
2024-06-17 04:27:08 +02:00
.focus {
border: 2px solid var(--interactive-contrast);
}
2024-06-16 19:00:43 +02:00
button.primary, .button.primary {
color: var(--button-foreground);
background-color: var(--button-background);
2024-06-17 04:27:08 +02:00
border-color: var(--button-border-color);
2021-04-12 13:05:30 +02:00
}
2024-06-16 19:00:43 +02:00
button.primary:hover:not(.disabled), .button.primary:hover:not(.disabled) {
background-color: var(--button-background-hover);
}
2024-06-16 19:00:43 +02:00
button.disabled {
border-color: var(--disabled);
color: var(--disabled);
}
2024-06-17 04:27:08 +02:00
button.disabled svg path {
transition: all 200ms;
}
button.disabled svg path {
fill: var(--disabled);
stroke: var(--disabled);
}
2024-06-16 19:00:43 +02:00
button.primary.disabled, .button.primary.disabled {
color: var(--button-foreground);
background-color: var(--disabled);
}
2024-06-16 19:00:43 +02:00
.low-interaction button:hover:not(.disabled):not(.as-link), .low-interaction .button:hover:not(.disabled):not(.as-link) {
box-sizing: border-box;
background-color: var(--interactive-background);
}
2024-06-16 19:00:43 +02:00
button.as-link {
background-color: unset;
display: inline-flex;
justify-content: start;
border: none;
border-radius: 0;
text-decoration: underline;
box-shadow: none;
margin: 0;
padding: 0;
}
2024-06-16 19:00:43 +02:00
/******* Other input elements ******/
2024-06-16 19:00:43 +02:00
.hover-alert:hover {
color: var(--catch-detail-color-contrast)
2023-05-14 03:24:13 +02:00
}
2024-06-16 19:00:43 +02:00
.links-w-full a:not(.weblate-link), .links-w-full button.as-link {
2024-04-24 02:44:31 +02:00
display: flex;
column-gap: 0.25rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
width: 100%;
2023-05-14 03:24:13 +02:00
}
2023-05-11 17:29:25 +02:00
select {
2024-04-24 02:44:31 +02:00
border: 2px solid #00000000;
color: var(--foreground-color) !important;
background-color: var(--low-interaction-background) !important;
}
select:hover {
2024-04-24 02:44:31 +02:00
border-color: var(--catch-detail-color-contrast);
}
2024-04-24 02:44:31 +02:00
.neutral-label {
/** This label styles as normal text. It's power comes from the many :not(.neutral-label) entries.
2023-12-29 22:46:02 +01:00
* Placed here for autocompletion
*/
}
label:not(.neutral-label):not(.button) {
2024-04-24 02:44:31 +02:00
/**
2023-12-29 22:46:02 +01:00
* Label should _contain_ the input element
*/
2024-04-24 02:44:31 +02:00
padding: 0.25rem;
padding-right: 0.5rem;
padding-left: 0.5rem;
2024-06-17 04:27:08 +02:00
margin:0.25rem;
2024-04-24 02:44:31 +02:00
border-radius: 0.5rem;
width: 100%;
box-sizing: border-box;
transition: all 250ms;
2023-12-29 22:46:02 +01:00
}
label.button {
2024-04-24 02:44:31 +02:00
width: 100%;
2023-12-29 22:46:02 +01:00
}
label:hover:not(.neutral-label) {
2024-06-17 04:27:08 +02:00
background-color: var(--low-interaction-background);
2023-12-29 22:46:02 +01:00
}
label.checked:not(.neutral-label) {
2024-06-17 04:27:08 +02:00
color: var(--foreground-color);
background-color: var(--low-interaction-background);
2023-12-29 22:46:02 +01:00
}
textarea {
2024-04-24 02:44:31 +02:00
color: black;
}
/************************* OTHER CATEGORIES ********************************/
/**
* Smaller categories which convey some semantic information but don't define bigger blocks.
* As they are _semantic_ categories, they can be styled
*/
.thanks {
2024-04-24 02:44:31 +02:00
/* The class to indicate 'operation successful' or 'thank you for contributing' */
font-weight: bold;
border-radius: 1em;
margin: 0.25em;
text-align: center;
padding: 0.25rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
border: 3px dotted #58cd27;
background-color: #58cd2722;
2021-04-12 13:05:30 +02:00
}
.alert {
2024-04-24 02:44:31 +02:00
/* The class to convey important information, e.g. 'invalid', 'something went wrong', 'warning: testmode', ... */
background-color: var(--alert-color);
color: var(--alert-foreground-color);
font-weight: bold;
border-radius: 1em;
margin: 0.25em;
text-align: center;
padding: 0.15em 0.3em;
border: 2px dotted #ff9143;
2021-04-12 13:05:30 +02:00
}
.warning {
2024-04-24 02:44:31 +02:00
/* The class to convey important information, but not as grave as 'alert' */
background-color: var(--low-interaction-background);
color: var(--alert-foreground-color);
font-weight: bold;
border-radius: 1em;
margin: 0.25em;
text-align: center;
padding: 0.15em 0.3em;
border: 3px dotted #ff9143;
}
.low-interaction .warning {
2024-04-24 02:44:31 +02:00
background-color: var(--interactive-background);
}
.information {
2024-04-24 02:44:31 +02:00
/* The class to convey important information which does _not_ denote an error... */
background-color: var(--low-interaction-background);
color: var(--alert-foreground-color);
border-radius: 1em;
margin: 0.25em;
text-align: center;
padding: 0.15em 0.3em;
border: 3px dotted var(--catch-detail-color-contrast);
}
.low-interaction .interactive {
2024-04-24 02:44:31 +02:00
background-color: var(--interactive-background);
}
.subtle {
2024-04-24 02:44:31 +02:00
/* For all information that is not important for 99% of the users */
color: #666;
font-weight: normal;
2021-04-12 13:05:30 +02:00
}
.low-interaction .subtle {
2024-04-24 02:44:31 +02:00
color: #444;
}
.interactive .subtle {
2024-04-24 02:44:31 +02:00
color: #333;
}
.link-underline .subtle a {
2024-04-24 02:44:31 +02:00
text-decoration: underline 1px #7193bb88;
color: #7193bb;
2021-04-12 13:05:30 +02:00
}
.literal-code,
code {
2024-04-24 02:44:31 +02:00
/* A codeblock */
display: inline-block;
background-color: lightgray;
padding: 0.1rem;
padding-left: 0.35rem;
padding-right: 0.35rem;
word-break: break-word;
color: black;
box-sizing: border-box;
font-family: monospace;
2021-04-12 13:05:30 +02:00
}
.interactive .literal-code {
2024-04-24 02:44:31 +02:00
background-color: #b3b3b3;
2021-03-13 19:07:38 +01:00
}
/************************** UTILITY ************************/
/**
* Utility classes are there for a specific function to pin down browser behaviour (and cannot be changed)
*/
.text-white a {
2024-04-24 02:44:31 +02:00
/* Used solely in 'imageAttribution' and in many themes*/
color: var(--background-color);
2021-10-02 17:57:54 +02:00
}
2023-05-18 15:44:54 +02:00
.bg-black-transparent {
2024-04-24 02:44:31 +02:00
background-color: #00000088;
2023-05-18 15:44:54 +02:00
}
.block-ruby {
2024-04-24 02:44:31 +02:00
display: block ruby;
}
.rounded-left-full {
2024-04-24 02:44:31 +02:00
border-bottom-left-radius: 999rem;
border-top-left-radius: 999rem;
}
.rounded-right-full {
2024-04-24 02:44:31 +02:00
border-bottom-right-radius: 999rem;
border-top-right-radius: 999rem;
}
.no-images img {
2024-04-24 02:44:31 +02:00
/* Used solely in 'imageAttribution' and in many themes for the label*/
display: none;
}
.weblate-link {
2024-04-24 02:44:31 +02:00
display: inline-block;
flex-shrink: 0;
margin: 0;
padding: 0.25rem;
width: 1.2rem;
height: 1.2rem;
border: unset;
border-radius: 5rem;
backdrop-filter: var(--low-interaction-background);
2023-05-18 15:44:54 +02:00
}
.no-weblate .weblate-link {
2024-04-24 02:44:31 +02:00
display: none !important;
}
.link-underline a {
2024-04-24 02:44:31 +02:00
text-decoration: underline 1px var(--foreground-color);
}
a.link-underline {
2024-04-24 02:44:31 +02:00
text-decoration: underline 1px var(--foreground-color);
}
.link-no-underline a {
2024-04-24 02:44:31 +02:00
text-decoration: none;
}
.disable-links a {
2024-04-24 02:44:31 +02:00
pointer-events: none;
text-decoration: none !important;
color: var(--subtle-detail-color-contrast) !important;
}
.enable-links a {
2024-04-24 02:44:31 +02:00
pointer-events: unset;
text-decoration: underline !important;
color: unset !important;
}
.disable-links a.must-link,
.disable-links .must-link a {
2024-04-24 02:44:31 +02:00
/* Hide links if they are disabled */
display: none;
}
.zebra-table tr:nth-child(even) {
2024-04-24 02:44:31 +02:00
background-color: #f2f2f2;
}
/************************* MISC ELEMENTS *************************/
.selected svg:not(.noselect *) path.selectable {
2024-04-24 02:44:31 +02:00
/* A marker on the map gets the 'selected' class when it's properties are displayed
*/
2024-04-24 02:44:31 +02:00
stroke: white !important;
stroke-width: 20px !important;
overflow: visible !important;
-webkit-animation: glowing-drop-shadow 1s ease-in-out infinite alternate;
-moz-animation: glowing-drop-shadow 1s ease-in-out infinite alternate;
animation: glowing-drop-shadow 1s ease-in-out infinite alternate;
}
.selected svg {
2024-04-24 02:44:31 +02:00
/* A marker on the map gets the 'selected' class when it's properties are displayed
*/
2024-04-24 02:44:31 +02:00
overflow: visible !important;
}
svg.apply-fill path {
2024-04-24 02:44:31 +02:00
fill: var(--svg-color);
}
2023-12-18 01:30:02 +01:00
.compass_arrow {
2024-04-24 02:44:31 +02:00
width: calc(2.5rem - 1px);
height: calc(2.5rem - 1px);
2023-12-18 01:30:02 +01:00
}
@media (min-width: 640px) {
2024-04-24 02:44:31 +02:00
.compass_arrow {
width: calc(2.75rem - 1px);
height: calc(2.75rem - 1px);
}
2023-12-18 01:30:02 +01:00
}
@-webkit-keyframes glowing-drop-shadow {
2024-04-24 02:44:31 +02:00
from {
filter: drop-shadow(5px 5px 60px rgb(128 128 128 / 0.6));
}
to {
filter: drop-shadow(5px 5px 80px rgb(0.5 0.5 0.5 / 0.8));
}
}
@keyframes slide {
2024-04-24 02:44:31 +02:00
/* This is the animation on the marker to add a new point - it slides through all the possible presets */
from {
transform: translateX(0%);
}
2024-04-24 02:44:31 +02:00
to {
transform: translateX(calc(-100% + 42px));
}
}
2020-07-01 02:12:33 +02:00
2020-11-06 01:58:26 +01:00
2020-07-29 15:05:19 +02:00
/************************* LEGACY MARKER - CLEANUP BELOW ********************************/
.slideshow-item img {
2024-04-24 02:44:31 +02:00
/* Legacy: should be replace when the image element is ported to Svelte*/
height: var(--image-carousel-height);
width: unset;
}
2021-11-25 21:31:33 +01:00
.animate-height {
2024-04-24 02:44:31 +02:00
/* Legacy: should be replaced by headlessui disclosure in time */
transition: max-height 0.5s ease-in-out;
overflow-y: hidden;
2021-11-25 21:31:33 +01:00
}
.min-h-32 {
2024-04-24 02:44:31 +02:00
min-height: 8rem;
}
2023-12-02 01:46:50 +01:00
.max-w-full {
2024-04-24 02:44:31 +02:00
max-width: 100%;
}
/************************* Experimental support for foldable devices ********************************/
@media (horizontal-viewport-segments: 2) {
.theme-list {
display: grid;
grid-auto-flow: row;
grid-template-columns: repeat(2, minmax(0, 1fr));
}
2023-12-02 01:46:50 +01:00
}