diff --git a/src/assets/scss/_buttons.scss b/src/assets/scss/_buttons.scss
index c4c3f085..44561cfd 100644
--- a/src/assets/scss/_buttons.scss
+++ b/src/assets/scss/_buttons.scss
@@ -5,8 +5,9 @@
gap: .5rem;
font-size: .9em;
font-weight: 500;
+ color: var(--foreground);
border: 1px solid transparent;
- border-radius: .2rem;
+ border-radius: var(--border-radius);
cursor: pointer;
transition-property: color, background-color, border-color;
transition-duration: .2s;
@@ -23,7 +24,7 @@
&:hover,
&:focus-visible {
color: var(--background);
- background-color: var(--blue-500);
+ background-color: var(--accent);
}
}
@@ -40,7 +41,7 @@
&:hover,
&:focus-visible {
color: var(--background);
- background-color: var(--blue-500);
+ background-color: var(--accent);
}
}
}
@@ -97,6 +98,7 @@
transition-timing-function: cubic-bezier(0.445, 0.05, 0.55, 0.95);
svg {
+ fill: var(--foreground);
width: 1.15em;
transition-property: fill;
transition-duration: .15s;
@@ -105,18 +107,18 @@
&:hover,
&:focus-visible {
- outline-color: color-mix(in srgb, var(--blue-500) 20%, transparent);
- border-color: var(--blue-500);
+ outline-color: color-mix(in srgb, var(--accent) 20%, transparent);
+ border-color: var(--accent);
svg {
- fill: var(--blue-500);
+ fill: var(--accent);
}
}
&.active {
color: var(--background);
- background-color: var(--blue-500);
- border-color: var(--blue-700);
+ background-color: var(--accent);
+ border-color: color-mix(in srgb, var(--accent) 75%, var(--background));
svg {
fill: var(--background);
diff --git a/src/assets/scss/theme.scss b/src/assets/scss/theme.scss
index b5da0f1a..8cb7f756 100644
--- a/src/assets/scss/theme.scss
+++ b/src/assets/scss/theme.scss
@@ -41,10 +41,18 @@
--foreground: var(--black);
--background: var(--white);
--border: var(--slate-400);
+ --accent: var(--blue-500);
+
--border-radius: .25rem;
--shadow: color-mix(in srgb, var(--foreground) 10%, transparent) 0px 4px 12px;
}
+.dark {
+ --foreground: var(--slate-300);
+ --background: var(--slate-950);
+ --border: var(--slate-600);
+}
+
html {
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
color: var(--foreground);
diff --git a/src/components/maps/MapOverlayBreadcrumbs.astro b/src/components/maps/MapOverlayBreadcrumbs.astro
index 7349c9b3..d4cea186 100644
--- a/src/components/maps/MapOverlayBreadcrumbs.astro
+++ b/src/components/maps/MapOverlayBreadcrumbs.astro
@@ -14,7 +14,7 @@ const { breadcrumbs = [] } = Astro.props
{breadcrumbs.map((breadcrumb, index) => (
{index === breadcrumbs.length - 1 &&
-
+
@@ -23,7 +23,7 @@ const { breadcrumbs = [] } = Astro.props
}
{!(index === breadcrumbs.length - 1) &&
-
+
@@ -31,7 +31,7 @@ const { breadcrumbs = [] } = Astro.props
-
+
}
))}
@@ -48,6 +48,7 @@ menu {
margin-top: .5rem;
padding-block: .25rem;
padding-inline: .8rem;
+ color: var(--foreground);
border: 1px solid var(--border);
background: var(--background);
border-radius: 100vmax;
@@ -59,6 +60,10 @@ menu {
align-items: center;
gap: .25ch;
+ svg {
+ fill: var(--foreground);
+ }
+
&:has(a:hover, a:focus-visible) {
svg.folder {
fill: var(--blue-500);
@@ -83,7 +88,7 @@ menu {
}
.icon {
- width: 1.1em;
+ fill: var(--foreground);
}
.label {
diff --git a/src/components/maps/overlay/MarkerCreator.vue b/src/components/maps/overlay/MarkerCreator.vue
index bdb355d4..c24036f1 100644
--- a/src/components/maps/overlay/MarkerCreator.vue
+++ b/src/components/maps/overlay/MarkerCreator.vue
@@ -275,6 +275,7 @@ menu {
padding-block: .25rem;
top: calc(var(--mouse-y) - .5rem);
left: calc(var(--mouse-x) + .75rem);
+ color: var(--foreground);
background-color: var(--background);
border: 1px solid var(--border);
border-radius: .3rem;
@@ -295,13 +296,17 @@ menu {
cursor: pointer;
width: 100%;
+ svg {
+ fill: var(--foreground);
+ }
+
&:hover,
&:focus-within {
- color: var(--blue-700);
- background-color: var(--slate-100);
+ color: color-mix(in srgb, var(--accent) 90%, var(--background));
+ background-color: color-mix(in srgb, var(--accent) 10%, var(--background));
svg {
- fill: var(--blue-700);
+ fill: color-mix(in srgb, var(--accent) 75%, var(--background));
}
}
}
diff --git a/src/components/maps/overlay/SearchMarkers.vue b/src/components/maps/overlay/SearchMarkers.vue
index 2f649dfa..904ddd1e 100644
--- a/src/components/maps/overlay/SearchMarkers.vue
+++ b/src/components/maps/overlay/SearchMarkers.vue
@@ -308,6 +308,7 @@ function resetAllFields(actionAfter?: "focusAfter") {
margin-left: calc(45px + .5rem);
padding: .5rem 1.2rem;
width: calc(100% - 3rem);
+ color: var(--foreground);
background: var(--background);
border: 1px solid var(--border);
border-radius: 25px;
@@ -338,7 +339,7 @@ function resetAllFields(actionAfter?: "focusAfter") {
flex-grow: 1;
&::placeholder {
- color: var(--slate-400);
+ color: color-mix(in srgb, var(--foreground) 75%, var(--background));
}
}
@@ -348,7 +349,7 @@ function resetAllFields(actionAfter?: "focusAfter") {
transform: translateY(-50%);
left: 0;
width: $search-icon-size;
- fill: var(--slate-400);
+ fill: color-mix(in srgb, var(--foreground) 75%, var(--background));
pointer-events: none;
}
@@ -375,16 +376,20 @@ function resetAllFields(actionAfter?: "focusAfter") {
}
&:hover {
+ .icon {
+ color: var(--foreground);
+ }
+
&::before {
- background-color: var(--slate-300);
+ background-color: color-mix(in srgb, var(--foreground) 20%, var(--background));
}
}
&:focus-visible {
&::before {
- background-color: var(--slate-200);
- outline: 1px dotted var(--slate-500);
- outline: 4px auto var(--slate-900);
+ background-color: color-mix(in srgb, var(--foreground) 20%, var(--background));
+ outline: 1px dotted color-mix(in srgb, var(--foreground) 50%, var(--background));
+ outline: 4px auto color-mix(in srgb, var(--foreground) 90%, var(--background));
}
}
}
@@ -399,22 +404,22 @@ function resetAllFields(actionAfter?: "focusAfter") {
&:hover {
&::before {
- background-color: var(--slate-300);
+ background-color: color-mix(in srgb, var(--foreground) 20%, var(--background));
}
}
&:focus-visible {
&::before {
- background-color: var(--slate-200);
- outline: 1px dotted var(--slate-500);
- outline: 4px auto var(--slate-900);
+ background-color: color-mix(in srgb, var(--foreground) 20%, var(--background));
+ outline: 1px dotted color-mix(in srgb, var(--foreground) 50%, var(--background));
+ outline: 4px auto color-mix(in srgb, var(--foreground) 90%, var(--background));
}
}
}
.close-btn {
font-size: 1.1em;
- color: var(--slate-500);
+ color: color-mix(in srgb, var(--foreground) 75%, var(--background));
}
}
@@ -453,7 +458,7 @@ function resetAllFields(actionAfter?: "focusAfter") {
}
&:hover:not(:has(a:hover)) {
- background-color: var(--slate-100);
+ background-color: color-mix(in srgb, var(--foreground) 10%, var(--background));
.title {
text-decoration: underline;
@@ -490,9 +495,14 @@ function resetAllFields(actionAfter?: "focusAfter") {
.title {
font-weight: 500;
text-underline-offset: 2px;
+
+ & + .desc {
+ margin-top: .25rem;
+ }
}
+
.desc {
- color: var(--slate-500);
+ color: color-mix(in srgb, var(--foreground) 50%, var(--background));
.map-link {
margin-top: .5rem;
@@ -528,12 +538,12 @@ function resetAllFields(actionAfter?: "focusAfter") {
top: 50%;
transform: translateY(-50%);
right: .75rem;
- fill: var(--slate-400);
+ fill: color-mix(in srgb, var(--foreground) 70%, var(--background));
}
&:focus-visible {
- outline: 1px dotted var(--slate-500);
- outline: 4px auto var(--slate-900);
+ outline: 1px dotted color-mix(in srgb, var(--foreground) 50%, var(--background));
+ outline: 4px auto color-mix(in srgb, var(--foreground) 90%, var(--background));
.title {
text-decoration: underline;
@@ -600,8 +610,9 @@ function resetAllFields(actionAfter?: "focusAfter") {
&[data-focused="true"] {
margin-bottom: 1em;
+
.input-w {
- border-bottom: 1px solid var(--slate-200);
+ border-bottom: 1px solid color-mix(in srgb, var(--foreground) 20%, var(--background));
margin-bottom: .5rem;
padding-bottom: .5rem;
diff --git a/src/components/maps/overlay/SearchMarkersTags.vue b/src/components/maps/overlay/SearchMarkersTags.vue
index d8b2f70c..39330989 100644
--- a/src/components/maps/overlay/SearchMarkersTags.vue
+++ b/src/components/maps/overlay/SearchMarkersTags.vue
@@ -125,6 +125,7 @@ function emitCategorySwitch(newCategory: MapMarkerGroup) {
padding-inline: .8rem;
font-weight: 600;
font-size: .85em;
+ color: var(--foreground);
background: var(--background);
border: 1px solid var(--border);
border-radius: 100vmax;
@@ -145,6 +146,10 @@ function emitCategorySwitch(newCategory: MapMarkerGroup) {
width: 1.1em;
}
+ svg {
+ fill: var(--foreground);
+ }
+
.label {
text-underline-offset: .15rem;
}
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro
index 969f7720..d36c1701 100644
--- a/src/layouts/Layout.astro
+++ b/src/layouts/Layout.astro
@@ -58,7 +58,7 @@ const lang = getLangFromUrl(Astro.url) || defaultLang;
-
+