229 lines
5.5 KiB
CSS
229 lines
5.5 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
@layer base {
|
|
:root {
|
|
--background: 0 0% 100%;
|
|
--foreground: 222.2 84% 4.9%;
|
|
--card: 0 0% 100%;
|
|
--card-foreground: 222.2 84% 4.9%;
|
|
--popover: 0 0% 100%;
|
|
--popover-foreground: 222.2 84% 4.9%;
|
|
--primary: 222.2 47.4% 11.2%;
|
|
--primary-foreground: 210 40% 98%;
|
|
--secondary: 210 40% 96.1%;
|
|
--secondary-foreground: 222.2 47.4% 11.2%;
|
|
--muted: 210 40% 96.1%;
|
|
--muted-foreground: 215.4 16.3% 46.9%;
|
|
--accent: 210 40% 96.1%;
|
|
--accent-foreground: 222.2 47.4% 11.2%;
|
|
--destructive: 0 84.2% 60.2%;
|
|
--destructive-foreground: 210 40% 98%;
|
|
--border: 214.3 31.8% 91.4%;
|
|
--input: 214.3 31.8% 91.4%;
|
|
--ring: 222.2 84% 4.9%;
|
|
--radius: 0.5rem;
|
|
}
|
|
|
|
/* Nacht-Modus: Sehr dunkel, bernstein/rot-Akzente (Nachtsicht-Erhaltung) */
|
|
.dark {
|
|
--background: 0 0% 5%;
|
|
--foreground: 30 20% 75%;
|
|
--card: 0 0% 7%;
|
|
--card-foreground: 30 20% 75%;
|
|
--popover: 0 0% 8%;
|
|
--popover-foreground: 30 20% 75%;
|
|
--primary: 25 90% 45%;
|
|
--primary-foreground: 0 0% 5%;
|
|
--secondary: 0 0% 12%;
|
|
--secondary-foreground: 30 20% 75%;
|
|
--muted: 0 0% 12%;
|
|
--muted-foreground: 30 10% 50%;
|
|
--accent: 0 0% 14%;
|
|
--accent-foreground: 30 20% 75%;
|
|
--destructive: 0 70% 40%;
|
|
--destructive-foreground: 30 20% 85%;
|
|
--border: 0 0% 15%;
|
|
--input: 0 0% 15%;
|
|
--ring: 25 80% 45%;
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
* {
|
|
@apply border-border;
|
|
}
|
|
body {
|
|
@apply bg-background text-foreground;
|
|
}
|
|
}
|
|
|
|
/* MapLibre styles */
|
|
.maplibregl-map {
|
|
font-family: inherit;
|
|
}
|
|
|
|
/* Night mode: map stays bright (readable), only UI around it is dark */
|
|
/* MapLibre controls get subtle dark styling */
|
|
.dark .maplibregl-ctrl-group {
|
|
background: #222 !important;
|
|
border: 1px solid #444 !important;
|
|
}
|
|
.dark .maplibregl-ctrl-group button {
|
|
background-color: #222 !important;
|
|
}
|
|
.dark .maplibregl-ctrl-group button .maplibregl-ctrl-icon {
|
|
filter: invert(0.8);
|
|
}
|
|
.dark .maplibregl-ctrl-attrib {
|
|
background: rgba(0,0,0,0.6) !important;
|
|
color: #aaa !important;
|
|
}
|
|
|
|
.maplibregl-ctrl-group {
|
|
@apply shadow-md rounded-lg overflow-hidden;
|
|
}
|
|
|
|
.maplibregl-ctrl-group button {
|
|
width: 48px !important;
|
|
height: 48px !important;
|
|
}
|
|
|
|
.maplibregl-ctrl-group button .maplibregl-ctrl-icon {
|
|
transform: scale(1.4);
|
|
}
|
|
|
|
/* Touch-friendly: disable text selection on interactive elements */
|
|
.touch-none {
|
|
touch-action: none;
|
|
-webkit-touch-callout: none;
|
|
-webkit-user-select: none;
|
|
user-select: none;
|
|
}
|
|
|
|
/* Custom scrollbar */
|
|
::-webkit-scrollbar {
|
|
width: 8px;
|
|
height: 8px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
@apply bg-muted rounded-full;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
@apply bg-muted-foreground/30 rounded-full hover:bg-muted-foreground/50;
|
|
}
|
|
|
|
/* Drawing tools cursor */
|
|
.draw-mode-point {
|
|
cursor: crosshair;
|
|
}
|
|
|
|
.draw-mode-line,
|
|
.draw-mode-polygon,
|
|
.draw-mode-rectangle,
|
|
.draw-mode-circle {
|
|
cursor: crosshair;
|
|
}
|
|
|
|
.draw-mode-select {
|
|
cursor: default;
|
|
}
|
|
|
|
/* Symbol markers on map: no border/background (override global border-border) */
|
|
.symbol-marker-wrapper {
|
|
border: none !important;
|
|
background-color: transparent !important;
|
|
}
|
|
.symbol-marker {
|
|
border: none !important;
|
|
background-color: transparent !important;
|
|
}
|
|
|
|
/* Symbol dragging */
|
|
.symbol-dragging {
|
|
@apply opacity-70 scale-110 shadow-lg;
|
|
cursor: grabbing;
|
|
}
|
|
|
|
/* Moveable handles: larger and touch-friendly */
|
|
.moveable-control-box .moveable-control {
|
|
width: 14px !important;
|
|
height: 14px !important;
|
|
margin-top: -7px !important;
|
|
margin-left: -7px !important;
|
|
border-radius: 50% !important;
|
|
background: #3b82f6 !important;
|
|
border: 2px solid #fff !important;
|
|
box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;
|
|
}
|
|
.moveable-control-box .moveable-rotation .moveable-control {
|
|
width: 28px !important;
|
|
height: 28px !important;
|
|
margin-top: -14px !important;
|
|
margin-left: -14px !important;
|
|
background: #f97316 !important;
|
|
cursor: grab !important;
|
|
border: 2px solid #fff !important;
|
|
border-radius: 50% !important;
|
|
box-shadow: 0 2px 8px rgba(0,0,0,0.35) !important;
|
|
position: relative !important;
|
|
}
|
|
.moveable-control-box .moveable-rotation .moveable-control::after {
|
|
content: '' !important;
|
|
display: block !important;
|
|
width: 16px !important;
|
|
height: 16px !important;
|
|
position: absolute !important;
|
|
top: 50% !important;
|
|
left: 50% !important;
|
|
transform: translate(-50%, -50%) !important;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8'/%3E%3Cpath d='M21 3v5h-5'/%3E%3C/svg%3E") !important;
|
|
background-size: contain !important;
|
|
background-repeat: no-repeat !important;
|
|
}
|
|
.moveable-control-box .moveable-rotation .moveable-control:active {
|
|
cursor: grabbing !important;
|
|
background: #ea580c !important;
|
|
}
|
|
.moveable-control-box .moveable-line {
|
|
background: #3b82f6 !important;
|
|
height: 2px !important;
|
|
}
|
|
.moveable-control-box .moveable-rotation .moveable-line {
|
|
display: none !important;
|
|
}
|
|
|
|
/* Toast animations */
|
|
.toast-enter {
|
|
animation: toast-enter 0.2s ease-out;
|
|
}
|
|
|
|
.toast-exit {
|
|
animation: toast-exit 0.2s ease-in;
|
|
}
|
|
|
|
@keyframes toast-enter {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateX(100%);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateX(0);
|
|
}
|
|
}
|
|
|
|
@keyframes toast-exit {
|
|
from {
|
|
opacity: 1;
|
|
transform: translateX(0);
|
|
}
|
|
to {
|
|
opacity: 0;
|
|
transform: translateX(100%);
|
|
}
|
|
}
|