.tt-map-wrapper { position: relative; width: 100%; height: 100%; background-color: #f0f0f0; } .tt-map-container { width: 100%; height: 100%; z-index: 1; } .tt-map-loader { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1001; background: rgba(255, 255, 255, 0.7); display: flex; justify-content: center; align-items: center; } .tt-map-top-container { position: absolute; top: 10px; left: 10px; right: 10px; z-index: 402; display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; pointer-events: none; flex-wrap: wrap; } .tt-map-top-container > * { pointer-events: auto; } .tt-map-top-left-controls { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; } .tt-map-top-right-controls { display: flex; flex-direction: column; gap: 10px; align-items: flex-end; margin-right: 50px; } .tt-map-bottom-right-container { position: absolute; bottom: 30px; right: 10px; z-index: 401; display: flex; flex-direction: column; align-items: flex-end; gap: 10px; } .tt-map-bottom-right-container.with-logo { bottom: 90px; } .leaflet-control-container .leaflet-top.leaflet-right { z-index: 403; } .leaflet-control-zoom { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25); } .tt-map-search-wrapper { width: 100%; max-width: 350px; } .tt-input-with-icon { position: relative; width: 100%; } .tt-input-with-icon .prefix-icon { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: #888; pointer-events: none; z-index: 5; } .tt-input-with-icon input.has-prefix-icon { padding-left: 32px !important; } .tt-map-search-input-container { position: relative; display: flex; align-items: center; background-color: white; border-radius: 6px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25); height: 42px; min-width: 250px; padding: 12px; } .tt-map-search-input-container .tt-input { width: 100%; } .tt-map-search-input-container .tt-input input { padding-right: 30px !important; border: 1px solid rgba(0, 0, 0, 0.1) !important; } .tt-map-search-input-container .clear-icon { position: absolute; right: 8px; background: none; border: none; cursor: pointer; color: #aaa; font-size: 16px; padding: 5px; z-index: 5; } .tt-map-search-results { list-style: none; padding: 0; margin: 8px 0 0 0; background-color: #fff; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); max-height: 300px; overflow-y: auto; border: 1px solid #ddd; } .tt-map-search-results .result-item, .tt-map-search-results .result-item-info { padding: 10px 15px; cursor: pointer; display: flex; align-items: center; gap: 10px; transition: background-color 0.15s; font-size: 14px; } .tt-map-search-results .result-item:hover { background-color: #f5f5f5; } .tt-map-search-results .result-item:not(:last-child) { border-bottom: 1px solid #eee; } .tt-map-search-results .result-item i { color: #6c757d; } .tt-map-search-results .result-item-info { color: #6c757d; cursor: default; } .tt-map-builtin-controls { position: relative; } .tt-map-builtin-controls .btn { box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4); } .tt-map-settings-panel { position: absolute; top: calc(100% + 5px); right: 0; z-index: 10; background-color: white; padding: 0.75rem; border-radius: 5px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25); border: 1px solid rgba(0, 0, 0, 0.1); } .map-legend-wrapper { background-color: rgba(255, 255, 255, 0.9); border-radius: 6px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25); border: 1px solid rgba(0, 0, 0, 0.1); max-width: 300px; } .map-legend-header { padding: 0.5rem 0.75rem; cursor: pointer; display: flex; justify-content: space-between; align-items: center; } .map-legend-header h6 { margin: 0; font-weight: bold; } .map-legend-header i.fa-chevron-down { transition: transform 0.2s ease; } .map-legend-wrapper:not(.collapsed) .map-legend-header i.fa-chevron-down { transform: rotate(180deg); } .map-legend-content { padding: 0 0.75rem 0.5rem; } .tt-map-mobile-fab .btn { width: 56px; height: 56px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } .tt-map-mobile-fab { position: absolute; bottom: calc(90px + env(safe-area-inset-bottom)); right: 10px; z-index: 401; } .tt-map-mobile-controls-overlay { position: fixed; inset: 0; z-index: 1050; background-color: rgba(0, 0, 0, 0.5); display: flex; align-items: flex-end; } .tt-map-mobile-controls-panel { background-color: #fff; width: 100%; max-height: 75vh; border-top-left-radius: 1rem; border-top-right-radius: 1rem; display: flex; flex-direction: column; } .panel-header { padding: 0.5rem 1rem; border-bottom: 1px solid #e9ecef; display: flex; justify-content: space-between; align-items: center; } .panel-header h5 { margin-bottom: 0; font-size: 1.1rem; } .panel-content { padding: 1rem; overflow-y: auto; } .panel-section:not(:last-child) { margin-bottom: 1.5rem; } .panel-section h6 { font-weight: bold; margin-bottom: 0.75rem; } .panel-section .map-filter-container { flex-direction: column; align-items: stretch; margin-left: 0; padding: 0; background: none; border: none; box-shadow: none; } .fade-enter-active, .fade-leave-active { transition: opacity 0.2s ease; } .fade-enter, .fade-leave-to { opacity: 0; } .custom-map-marker { background-color: rgba(0, 123, 255, 0.9); width: 24px; height: 24px; border-radius: 50%; border: 2px solid white; box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.9); display: flex; justify-content: center; align-items: center; animation: pulse 1.5s infinite; } .custom-map-marker i { color: white; font-size: 12px; } @keyframes pulse { 0% { transform: scale(0.9); box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.7); } 70% { transform: scale(1); box-shadow: 0 0 0 10px rgba(0, 123, 255, 0); } 100% { transform: scale(0.9); box-shadow: 0 0 0 0 rgba(0, 123, 255, 0); } } .leaflet-control-logo { background-color: rgba(255, 255, 255, 0.7); padding: 2px 5px; border-radius: 5px; box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4); } .leaflet-control-logo img { display: block; }