

.map-main{ padding: 0!important; -webkit-user-select: none; user-select: none; }
.map-wrapper { position: relative; width: 100%; height: calc(100dvh - 80px); overflow: hidden; }
.map-render-layer { width: 100%; height: 100%; z-index: 12; }

/* POI Menu */
.poi-menu { display: grid; grid-template-columns: 1fr; gap: 0; padding: 2px; }
.poi-btn:hover { opacity: 0.9; }
.poi-btn-active { opacity: 0.6; box-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.3) !important; }

 /* Popup */
.popup-actions { display: flex; flex-direction: column; gap: 0.375rem; }
.btn-popup-primary, .btn-popup-secondary, .btn-popup-dark, .btn-popup-success { width: 100%; font-size: 0.75rem; padding: 0.375rem; border-radius: 0.25rem; border: none; font-weight: 700; cursor: pointer; transition: transform 0.1s; display: flex; align-items: center; justify-content: center; gap: 0.5rem; }
.btn-popup-primary { background-color: var(--blue-600); color: #ffffff; }
.btn-popup-secondary { background-color: var(--slate-200); color: var(--slate-700); }
.btn-popup-dark { background-color: var(--slate-800); color: #ffffff; }
.btn-popup-success { background-color: var(--emerald-600); color: #ffffff; }
.btn-popup-danger-text { background: none; border: none; color: var(--slate-400); font-size: 10px; margin-top: 0.25rem; cursor: pointer; transition: color 0.15s; display: flex; align-items: center; justify-content: center; gap: 0.25rem; }





/* Layer Menu */
.layer-dropdown-menu { position: absolute; top: 0; left: calc(100% + 8px); background: #ffffff; border-radius: 12px; box-shadow: 0 8px 30px rgba(0,0,0,0.15); padding: 8px 0; min-width: 220px; border: 1px solid #e2e8f0; z-index: 1010; max-height: 75dvh; overflow-x: hidden; overflow-y:auto; }
.dropdown-section-title { font-size: 0.75rem; font-weight: 700; color: #64748b; letter-spacing: 0.05em; padding: 12px 16px 4px 16px; text-transform: uppercase; }
.btn-dropdown-item { display: flex; align-items: center; width: 100%; padding: 10px 16px; background: transparent; border: none; text-align: left; font-size: 0.95rem; color: #334155; cursor: pointer; transition: background 0.2s; }
.btn-dropdown-item:hover, .btn-dropdown-item:active { background: #f1f5f9; }
.btn-dropdown-item.active-layer { background: #eff6ff; color: #2563eb; font-weight: 600; }
.btn-dropdown-item .icon-map-medium, .btn-dropdown-item .popup-icon-small { display: inline-flex; justify-content: center; align-items: center; width: 24px; margin-right: 12px; }
.text-fire { color: #dc2626; } .text-fire:hover { background: #fee2e2; }
.text-aed { color: #16a34a; } .text-aed:hover { background: #dcfce7; }
.layer-toggle-wrapper { display: flex; justify-content: space-between; align-items: center; width: 100%; }
.layer-toggle-left { display: flex; align-items: center; }
.checkbox-icon { font-size: 1.2rem; }


.maplibregl-popup-content { padding: 0 !important; box-shadow: none !important; }

.bottom-sheet { position: absolute; bottom: 0; left: 0; width: 100%; height: 20px; background-color: #ffffff; border-top-left-radius: 20px; border-top-right-radius: 20px; box-shadow: 0 -4px 15px rgba(0, 0, 0, 0.2); transition: height 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); z-index: 1000; display: flex; flex-direction: column; }
.bottom-sheet.expanded { height: 50%; }
.btn-bottom-sheet { width: 50px; height: 5px; background-color: #d1d5db; border-radius: 10px; margin: 8px auto; cursor: pointer; }     
.btn-bg-bottom-sheet { cursor: pointer; }  
.dynamic-area-accordion { width: 100%; background: #ffffff; border-radius: 8px; border:0; overflow: hidden; max-height: 400px; overflow-y: auto; }
.map-accordion-details:first-child { border-top: 1px dashed #e2e8f0; }
.map-accordion-details { border-bottom: 1px solid #e2e8f0; }
.map-accordion-details:last-child { border-bottom: none; }

.map-accordion-summary { display: flex; justify-content: space-between; align-items: center; padding: 8px 8px; font-size: 14px; font-weight: 600; color: #1e293b; background: #ffffff; cursor: pointer; list-style: none; user-select: none; transition: background 0.2s ease; }
.map-accordion-summary::-webkit-details-marker { display: none; }
.map-accordion-summary:hover { background: #f8fafc; }
.accordion-arrow { font-size: 10px; color: #64748b; transition: transform 0.2s ease; }
.map-accordion-details[open] .accordion-arrow { transform: rotate(180deg); }

.map-accordion-content { display: flex; flex-flow: row wrap; gap:5px; background: #f8fafc; border-top: 1px solid #f1f5f9; }
.map-accordion-group { display: flex; flex-wrap: wrap; gap: 6px 8px; break-inside: avoid; page-break-inside: avoid; margin-bottom: 20px; }
.map-accordion-header { width: 100%; font-size: 11px; font-weight: 700; color: #64748b; text-transform: uppercase; letter-spacing: 0.02em; margin-top: 0; margin-bottom: 2px; }
.map-accordion-btn { flex: 1 1 auto; min-width:60px; justify-content: center; text-align: center; display: inline-flex; align-items: center; background: #ffffff; border: 1px solid #e2e8f0; border-radius: 6px; min-height: 32px; padding:3px; font-size: 13px; font-weight: 500; color: #334155; cursor: pointer; transition: all 0.15s ease; gap: 6px; }
.map-accordion-btn:hover, .map-accordion-btn:active { background: #f1f5f9; border-color: #cbd5e1; color: #0f172a; }

.map-accordion-icon-wrap { display: flex; align-items: center; justify-content: center; width: 20px; height: 20px; flex-shrink: 0; }
.map-accordion-icon-wrap img, .map-accordion-icon-wrap svg { max-width: 100%; max-height: 100%; object-fit: contain; }
.map-accordion-color-dot { width: 12px; height: 12px; border-radius: 50%; display: inline-block; flex-shrink: 0; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); }
.map-accordion-color-area { width: 12px; height: 12px; display: inline-block; flex-shrink: 0; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); }
.truncate-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 150px; }
.map-details-accordion { flex: 1; overflow-y: scroll; }

.maplibregl-ctrl-bottom-left, .maplibregl-ctrl-bottom-right { margin-bottom: 20px !important; transition: margin-bottom 0.3s ease; }
.hud-top-center { position: absolute; top: calc(max(0.75rem, env(safe-area-inset-top))); left: 50%; transform: translateX(-50%); z-index: 1000; }
.hud-bottom-center { position: absolute; bottom: 1.5rem; left: 50%; transform: translateX(-50%); width: 3.5rem; height: 3.5rem; background-color: rgba(15, 23, 42, 0.9); border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 2px solid var(--slate-700); z-index: 1000; }
.compass-text-bubble { background-color: rgba(15, 23, 42, 0.9); backdrop-filter: blur(4px); border: 1px solid var(--slate-700); color: #ffffff; padding: 0.5rem 1.25rem; border-radius: 9999px; display: flex; flex-direction: column; align-items: center; min-width: 200px; }
.compass-target-title { font-weight: 700; font-size: 1rem; color: var(--emerald-500); }
.compass-arrow-rotation { color: #fff; }

.control-panel-left { position: absolute; left: 0.5rem; top: calc(max(1.25rem, env(safe-area-inset-top))); display: flex; flex-direction: column; gap: 0.75rem; z-index: 15; }
.control-panel-right { position: absolute; right: 0.5rem; top: 1.25rem; display: flex; flex-direction: column; gap: 0.75rem; z-index: 15; }
.btn-map-control { background-color: #ffffff; border: 1px solid var(--slate-200); border-radius: 0.5rem; box-shadow: 0 1px 2px rgba(0,0,0,0.05); display: flex; align-items: center; justify-content: center; cursor: pointer; width: 2.5rem; height: 2.5rem; color: var(--slate-700); }
.btn-map-control.control-active { background-color: var(--blue-600); color: #ffffff; border-color: var(--blue-700); }

/* In-Map HUD Search & Widgets */
.map-search-box-wrap { display: flex; align-items: center; position: relative; background: #ffffff; border: 1px solid #cbd5e1; border-radius: 8px; padding: 4px 8px; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); width: 260px; max-width: calc(100vw - 80px); transition: all 0.2s ease-in-out; z-index: 1010; }
.search-inside-icon { display: flex; align-items: center; color: #64748b; padding-right: 6px; }
.map-search-input { width: 100%; border: none; outline: none; background: transparent; font-size: 14px; color: #1e293b; padding: 6px 0; }
.map-search-results { position: absolute; top: calc(100% + 6px); left: 0; width: 100%; max-height: 280px; overflow-y: auto; border: 0; z-index: 1020; }
.search-result-category { font-size: 10px; text-transform: uppercase; font-weight: 700; color: var(--slate-400); margin-top: 0.5rem; margin-bottom: 0.25rem; padding-left: 0.25rem; border-top: 1px solid var(--slate-100); padding-top: 0.5rem; display: flex; align-items: center; gap: 0.25rem; justify-content: center; }
.search-result-item { background-color: var(--slate-50); padding: 0.5rem; border-radius: 0.5rem; display: flex; justify-content: space-between; align-items: center; cursor: pointer; transition: transform 0.1s, background-color 0.15s; border: 1px solid var(--slate-200); margin-bottom: 0.25rem; }
.search-result-item.online-result { background-color: #eff6ff; border-color: #bfdbfe; }
.search-result-title { font-weight: 700; color: var(--slate-800); font-size: 0.875rem; }
.search-result-subtitle { font-size: 9px; color: var(--slate-400); text-transform: uppercase; display: flex; align-items: center; gap: 0.25rem; }
.search-result-icon { font-size: 0.875rem; color: var(--slate-500); }
.search-result-empty { padding: 1rem; text-align: center; color: var(--slate-400); font-size: 0.875rem; }




.leaflet-popup-content { margin: 0 !important; }
.leaflet-tooltip-pane { z-index: 400 !important; }
.leaflet-marker-pane { z-index: 600 !important; }
.leaflet-popup-pane { z-index: 700 !important; }
.zoom-low-active .vup-marker-icon { display: none !important; }

/* Map Toast */
.map-toast-bubble { position: absolute; bottom: 24px; left: 50%; transform: translate(-50%, 20px); display: flex; align-items: center; gap: 10px; background: rgba(15, 23, 42, 0.9); color: #ffffff; padding: 10px 16px; border-radius: 50px; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.2), 0 4px 6px -2px rgba(0, 0, 0, 0.1); font-size: 13px; font-weight: 600; white-space: nowrap; opacity: 0; pointer-events: none; transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275), opacity 0.2s ease; z-index: 2000; }
.map-toast-bubble.toast-visible { opacity: 1; transform: translate(-50%, 0); }
#toast-icon { display: flex; align-items: center; justify-content: center; width: 18px; height: 18px; flex-shrink: 0; }
#toast-icon svg { width: 100%; height: 100%; fill: currentColor; }
#toast-msg { line-height: 1; }
.toast-live-stop { background: rgba(67, 56, 202, 0.95); border: 1px solid #818cf8; color: #fff; }



/* Map Elements HTML Layouts */
.popup-container { padding: 0.5rem; display: flex; flex-direction: column; gap: 0.375rem; }
.min-w-180 { min-width: 180px; }
.popup-title { font-weight: 700; border-bottom: 1px solid var(--slate-100); padding-bottom: 0.25rem; margin-bottom: 0.25rem; display: flex; align-items: center; gap: 0.25rem; }
.popup-title-center { text-align: center; padding: 0.25rem; font-weight: 700; }
.aed-title { color: var(--emerald-700); }
.popup-address { font-size: 0.75rem; color: var(--slate-600); margin-bottom: 0.25rem; display: flex; align-items: flex-start; gap: 0.25rem; line-height: 1.2; }
.popup-status { font-size: 0.75rem; font-weight: 500; display: flex; align-items: center; gap: 0.25rem; }
.status-ok { color: var(--slate-700); } .status-warn { color: var(--orange-600); }
.popup-phone { font-size: 10px; color: var(--slate-500); margin-top: 0.25rem; border-top: 1px solid var(--slate-100); padding-top: 0.25rem; display: flex; align-items: center; gap: 0.25rem; }


.popup-icon-small, .popup-icon-medium, .popup-icon-tiny { display: inline-flex; align-items: center; justify-content: center; }
.popup-icon-small { width: 1.25rem; height: 1.25rem; }
.popup-icon-medium { width: 1.5rem; height: 1.5rem; }
.popup-icon-tiny { width: 1rem; height: 1rem; }

.popup-coords { font-family: var(--font-mono); font-size: 10px; color: var(--slate-500); margin-bottom: 0.5rem; background-color: var(--slate-50); padding: 0.25rem; border-radius: 0.25rem; border: 1px solid var(--slate-100); text-align: center; }
.popup-coords-clickable { font-family: var(--font-mono); font-size: 10px; color: var(--slate-500); margin-top: 0.25rem; background-color: var(--slate-50); border-radius: 0.25rem; padding: 0.125rem 0.375rem; text-align: center; border: 1px solid var(--slate-100); cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 0.25rem; }
.popup-header-block { display: flex; flex-direction: column; border-bottom: 1px solid var(--slate-100); padding-bottom: 0.5rem; }
.popup-details-block { display: flex; flex-direction: column; gap: 0.375rem; margin-top: 0.25rem; }
.popup-sector { display: flex; align-items: flex-start; gap: 0.5rem; font-size: 0.875rem; background-color: #eff6ff; padding: 0.375rem; border-radius: 0.375rem; border: 1px solid #bfdbfe; }
.text-blue-strong { color: var(--blue-600); font-weight: 700; }
.popup-address-clickable { display: flex; align-items: flex-start; justify-content: center; gap: 0.375rem; font-size: 0.75rem; color: var(--slate-600); line-height: 1.2; cursor: pointer; }
.popup-icon-opacity { opacity: 0.5; }

.popup-vuep-list { margin-top: 0.5rem; padding-top: 0.5rem; border-top: 1px solid var(--slate-100); width: 100%; max-height: 140px; overflow-x: hidden; overflow-y: auto; }
.popup-vuep-header { font-size: 9px; text-transform: uppercase; letter-spacing: 0.05em; font-weight: 700; color: var(--slate-400); margin-bottom: 0.25rem; display: flex; justify-content: space-between; align-items: center; }
.popup-vuep-hint { font-size: 8px; font-weight: normal; opacity: 0.7; }
.popup-vuep-item { display: flex; justify-content: space-between; align-items: center; padding: 0.375rem; cursor: pointer; border-radius: 0.25rem; transition: all 0.15s; margin: 0 -0.25rem; }
.popup-vuep-item:hover { background-color: var(--slate-50); }
.popup-vuep-info { display: flex; align-items: baseline; gap: 0.25rem; }
.text-orange-strong { font-size: 0.875rem; color: var(--orange-600); font-weight: 700; }
.text-slate-medium { font-size: 0.875rem; color: var(--slate-700); font-weight: 500; }
.popup-vuep-area { font-size: 9px; color: var(--slate-400); }
.popup-vuep-distance { font-size: 10px; font-family: var(--font-mono); color: var(--slate-500); background-color: var(--slate-100); padding: 0.125rem 0.375rem; border-radius: 0.25rem; border: 1px solid var(--slate-200); display: flex; align-items: center; gap: 0.25rem; transition: background-color 0.15s; }
.popup-vuep-item:hover .popup-vuep-distance { background-color: #eff6ff; color: var(--blue-700); border-color: #bfdbfe; }

/* Custom Map Badges / Markers */
.map-icon-wrapper { width: 2rem; height: 2rem; display: flex; align-items: center; justify-content: center; }
.map-icon-img { width: 100%; height: auto; display: block; }
.map-fallback-icon { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; }
.svg-drop-shadow { filter: drop-shadow(0 3px 4px rgba(0,0,0,0.4)); }
.custom-marker-badge { background-color: var(--purple-600); color: #ffffff; width: 1.75rem; height: 1.75rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 2px solid #ffffff; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.2); }
.manual-marker-badge { background-color: var(--orange-500); color: #ffffff; width: 2rem; height: 2rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 2px solid #ffffff; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.2); }
.aed-marker-badge { background-color: var(--emerald-600); color: #ffffff; width: 1.75rem; height: 1.75rem; border-radius: 0.375rem; display: flex; align-items: center; justify-content: center; border: 0; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.2); }

/* GPS Offline Modus Overlays */
.offline-text { color: var(--amber-400) !important; font-weight: 900 !important; font-size: 1.25rem !important; text-transform: uppercase; letter-spacing: 0.05em; }
.offline-container { border: 2px solid var(--amber-500) !important; padding: 1rem; }
.offline-placeholder { flex-direction: column; align-items: center; justify-content: center; text-align: center; height: 100%; }
.offline-icon { font-size: 1.875rem; display: block; margin-bottom: 0.5rem; }
.offline-title { color: #ffffff; font-weight: 700; display: block; font-size: 0.875rem; }
.offline-hint { font-size: 0.75rem; color: var(--amber-400); font-weight: 700; margin-top: 0.25rem; text-transform: uppercase; letter-spacing: 0.05em; display: block; }
.offline-coords { background-color: var(--slate-900) !important; border: 2px solid var(--amber-400); padding: 1rem !important; border-radius: 0.5rem; color: var(--amber-400) !important; font-size: 1.125rem !important; font-weight: 900 !important; box-shadow: 0 0 15px rgba(251,191,36,0.3); }


/* Filter Bar & Vehicle List */
.filter-bar { position: sticky; top: -4px; background-color: var(--bg-color); padding: 10px 0; z-index: 100; display: flex; gap: 1px; }
#vSearchInput, #assignmentFilter { padding: 8px; font-size: 16px; border: 2px solid var(--border-color); border-radius: 8px; outline: none; box-shadow: 0 2px 4px rgba(0,0,0,0.05); min-width: 20px; }
#vSearchInput{ flex: 1 1 auto; }
#assignmentFilter { background-color: white; cursor: pointer; }
#vSearchInput:focus, #assignmentFilter:focus { border-color: var(--primary-color); }
.group-header { border-left: 5px solid var(--primary-color); padding-left: 10px; margin: 30px 0 15px 0; font-size: 20px; color: var(--text-main); }
.vehicle-list { list-style: none; padding: 0; margin: 0; }
.vehicle-item { display: flex; background: var(--card-bg); margin-bottom: 15px; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); border: 1px solid var(--border-color); align-items: stretch; }
.photo-wrapper { width: 140px; min-width: 140px; display: flex; align-items: center; justify-content: center; padding: 10px; border-right: 1px solid var(--border-color); }
.vehicle-photo { max-width: 100%; max-height: 100px; object-fit: contain; transition: transform 0.2s; cursor: pointer; }
.vehicle-photo:hover { transform: scale(1.05); }
.vehicle-details { padding: 12px 15px; flex-grow: 1; position: relative; display: flex; flex-direction: column; }
.vehicle-title-row { display: flex; justify-content: space-between; align-items: flex-start; border-bottom: 1px dashed var(--border-color); padding-bottom: 8px; margin-bottom: 10px; }
.vehicle-title-row h3 { margin: 0; font-size: 18px; color: var(--primary-color); }
.kennzeichen-badge { background: #2d3748; color: white; padding: 3px 6px; border-radius: 4px; font-family: monospace; font-size: 13px; margin-left: 10px; }
.info-container { padding-right: 80px; flex-grow: 1; }
.info-grid-compact { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.info-item { font-size: 13px; display:flex; gap: 2px; align-items: center; }
.info-list { display: flex; flex-direction: column; gap: 16px; }
.info-row { display: flex; align-items: center; font-size: 13px; }
.info-label { color: var(--text-muted); margin-right: 6px; display: inline-block; }
.info-text { font-weight: 600; }
.corner-badges { position: absolute; bottom: 12px; right: 15px; display: flex; gap: 8px; }
.circle-badge { min-width: 45px; padding: 0 12px; height: 32px; border-radius: 16px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; font-weight: bold; font-size: 12px; color: white; box-shadow: 0 2px 5px rgba(0,0,0,0.15); }
.circle-badge .info-icon { display: flex; align-items: center; margin: 0; }
.badge-license { background-color: #4a5568; }
.badge-area { background-color: var(--primary-color); }





/* Taktische Zeichen View */
.taktik-sticky-searchbar { position: sticky; top: -4px; z-index: 20; background-color: rgba(241, 245, 249, 0.95); backdrop-filter: blur(4px); display:flex; align-items:center; justify-content: center; gap:2px; padding: 4px; }
.taktik-search { width: 100%; border: 0; padding: 5px; border-radius: 5px; }
.taktik-grid-container { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; margin-bottom: 2rem; }
.taktik-card { background-color: #ffffff; padding: 0.75rem; border-radius: 1rem; border: 1px solid var(--slate-200); box-shadow: 0 1px 2px rgba(0,0,0,0.05); display: flex; flex-direction: column; align-items: center; justify-content: space-between; gap: 0.75rem; }
.taktik-card-image-wrapper { width: 100%; aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center; padding: 0.5rem; }
.taktik-card-image { max-width: 100%; max-height: 100%; object-fit: contain; }
.taktik-card-title { font-size: 10px; font-weight: 900; color: var(--slate-700); text-transform: uppercase; text-align: center; }

