/* --- START OF FILE styles.css --- */
html, body {
    height: 100%;
    margin: 0;
    padding: 0;
    overflow: hidden;
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

*, *::before, *::after {
    box-sizing: border-box;
}

#map-container { 
    width: 100%;
    height: 100%; 
    position: relative; 
}
#map { width: 100%; height: 100%; cursor: default; background-color: #f0f0f0; position: relative; }
#map.drawing { cursor: crosshair; }

/* --- Icon Toolbar Styles --- */
.icon-toolbar {
    position: absolute;
    z-index: 1010;
    display: flex;
    flex-direction: column;
    gap: 10px;
    background-color: transparent;
    padding: 0;
    transition: right 0.3s ease-out, left 0.3s ease-out, opacity 0.3s ease-out, visibility 0.3s ease-out;
}
#left-icon-toolbar { top: 10px; left: 10px; }
#right-icon-toolbar {
    top: 10px;
    right: 10px;
}


/* --- Selection Mode Dropdown Style --- */
.map-tool-select {
    font-family: inherit; /* Perii modernin fontin bodylta */
    font-size: 0.9em;
    background-color: #fff;
    border: 1px solid #ccc;
    border-radius: 3px;
    /* Reset browser appearance to gain full control */
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    /* Add custom arrow */
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right 0.5rem center;
    background-size: 12px 10px;
    padding: 0 25px 0 8px; /* Top/Bottom | Right (for arrow) | Left */
}
#selection-mode-container {
    position: absolute;
    top: 10px;
    left: calc(10px + 44px + 10px);
    z-index: 1011;
    background-color: rgba(255,255,255,0.5);
    padding: 5px 8px;
    border-radius: 4px;
    box-shadow: 0 1px 2px rgba(0,0,0,0.1);
    display: none;
    flex-direction: column; /* MUUTETTU: Asettaa rivit päällekkäin */
    align-items: flex-start; /* MUUTETTU: Tasaa vasemmalle */
    gap: 8px;
    transition: opacity 0.3s ease-out, visibility 0.3s ease-out;
}

#selection-tools-row, #annotation-tools-row {
    display: flex;
    align-items: center;
    gap: 8px;
}

#selectionMode {
    width: 140px;
    height: 36px;
}

#selection-mode-container .map-tool-button {
    width: 36px !important;
    height: 36px !important;
    min-width: 36px !important;
    min-height: 36px !important;
    font-size: 1.1em !important;
}
#selection-mode-container .map-tool-button .button-icon {
    width: 16px;
}

#annotation-tools-row:not(.button-hidden) {
    display: flex !important;
}


/* --- Layer Switcher Panel (Overlay) --- */
#layer-switcher-panel {
    display: none;
    position: absolute;
    width: calc(100vw - 40px);
    max-width: 380px;
    overflow-y: auto;
    z-index: 1020;
    background-color: #fff;
    padding: 15px;
    border: 1px solid #ccc;
    border-radius: 6px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.25);
    transition: opacity 0.3s ease-out, visibility 0.3s ease-out, right 0.3s ease-out;
}

#layer-switcher-panel.active {
    display: block;
}
#layer-switcher-panel .panel-header { 
    display: flex; 
    justify-content: space-between; 
    align-items: center; 
    margin-bottom: 10px; 
}
#layer-switcher-panel .panel-header h4 { 
    margin: 0; 
    flex-grow: 1;
}
#pin-layer-switcher-button.map-tool-button {
    margin-left: auto; 
    margin-right: 5px; 
}
#close-layer-switcher-button { 
    display: none !important; 
}


.layer-switcher h5 { margin-top: 0px; margin-bottom: 0px; font-size: 0.95em; color: #333; }
.layer-switcher .layer-item {
    margin-bottom: 5px;
    display: flex;
    align-items: center;
    min-height: 34px;
}
.layer-switcher label {
    cursor: pointer;
    transition: color 0.3s ease;
    display: flex;
    align-items: center;
    flex-grow: 1;
    margin-right: 8px;
}
.layer-switcher label.disabled { color: #aaa !important; cursor: default !important; }
.layer-switcher label input[type="checkbox"] { margin-right: 5px; }


.layer-switcher .style-config-button.map-tool-button,
#pin-layer-switcher-button.map-tool-button {
    padding: 0 !important;
    font-size: 1em !important; 
    width: 30px !important;    
    height: 30px !important;   
    min-width: 30px !important; 
    min-height: 30px !important;
    margin-left: 5px !important;
    margin-right: 5px;
    border-radius: 3px !important; 
    flex-shrink: 0;
    display: inline-flex !important; 
    align-items: center !important;
    justify-content: center !important;
}

.layer-switcher .style-config-button.map-tool-button .button-icon,
#pin-layer-switcher-button.map-tool-button .button-icon {
    width: 18px; 
    height: auto;
    transition: transform 0.1s ease-in-out, fill 0.15s ease-out;
}

#pin-layer-switcher-button.map-tool-button {
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
}

#pin-layer-switcher-button.map-tool-button:hover:not(:disabled):not(.disabled) {
    background-color: rgba(0,0,0,0.05) !important; 
    transform: none !important; 
    box-shadow: none !important;
}

#pin-layer-switcher-button.map-tool-button.active .button-icon {
    fill: #007bff !important; 
}

#pin-layer-switcher-button.map-tool-button:not(.active) .button-icon {
    transform: scale(0.8); 
}


.layer-switcher input[type="range"] {
    width: 80px;
    flex-shrink: 0;
    margin-left: auto;
}
.layer-switcher hr { margin-top: 8px; margin-bottom: 8px; border: 0; border-top: 1px solid #eee; }


/* --- InfoSidePanel & SummarySidePanel Styles --- */
#infoSidePanel, #summarySidePanel {
    width: 600px;
    min-width: 350px; max-width: 60%;
    height: 100vh;
    background-color: #f8f9fa; border-left: 1px solid #ccc;
    box-shadow: -2px 0 5px rgba(0,0,0,0.1);
    display: flex; flex-direction: column;
    position: absolute; top: 0; right: 0;
    transform: translateX(100%); z-index: 1015;
    transition: transform 0.3s ease-out, width 0.2s ease-out;
}
#infoSidePanel.visible, #summarySidePanel.visible { transform: translateX(0); }
#infoSidePanel.truly-hidden, #summarySidePanel.truly-hidden { display: none; }

#infoPanelResizer { width: 8px; background-color: #e0e0e0; cursor: ew-resize; position: absolute; top: 0; left: -4px; height: 100%; z-index: 1016; }
#infoPanelContentWrapper, #summaryPanelContentWrapper {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow-y: hidden;
}
#infoPanelHeader, #summaryPanelHeader { display: flex; justify-content: space-between; align-items: center; padding: 10px 15px; border-bottom: 1px solid #ddd; gap: 10px; flex-shrink: 0; }
#infoPanelHeader #infoPanelTitle, #summaryPanelHeader #summaryPanelTitle { margin-right: auto; font-size: 1.1em; }
#infoPanelHeader label[for="autoZoomToInfoFeature"] { font-size: 0.9em; display: flex; align-items: center; cursor: pointer; white-space: nowrap; }
#infoPanelHeader label[for="autoZoomToInfoFeature"] input[type="checkbox"] { margin-right: 5px; }

.info-tabs { list-style-type: none; padding: 0 10px; margin: 0 0 10px 0; display: flex; border-bottom: 1px solid #ccc; flex-shrink: 0;}
.info-tabs li { padding: 8px 8px; cursor: pointer; border: 1px solid transparent; border-bottom: none; margin-right: 3px; background-color: #eee; border-radius: 4px 4px 0 0; font-size: 0.9em;}
.info-tabs li.active { background-color: #fff; border-color: #ccc; border-bottom-color: #fff; position: relative; top: 1px; font-weight: bold;}

#infoPanelBody, #summaryPanelBody {
    flex-grow: 1;
    overflow-y: auto;
    padding: 0 15px;
    display: flex;
    flex-direction: column;
}
#summaryPanelBody {
    padding: 5px 15px 15px;
}

.info-tab-content {
    display: none;
    flex-grow: 1;
    overflow-y: auto;
    padding-top: 10px;
}
.info-tab-content.active {
    display: flex;
    flex-direction: column;
}
.info-tab-content table { width: 100%; border-collapse: collapse; font-size: 0.9em; }
.info-tab-content th, .info-tab-content td { border: 1px solid #ddd; padding: 6px; text-align: left; }
.info-tab-content th { background-color: #e9ecef; }
#infoPanelNavigation { 
    display: flex; 
    justify-content: space-between; 
    align-items: center; 
    padding: 10px 15px; 
    border-top: 1px solid #ddd; 
    flex-wrap: wrap; 
    gap: 10px; 
    flex-shrink: 0;
}
#infoPanelNavigation span { 
    flex-grow: 1; 
    text-align: center; 
    min-width: 50px; 
}

#removeCurrentFeatureButton:not(:disabled):not(.disabled) {
    background-color: #f8d7da !important;
    border-color: #f5c6cb !important;
    color: #721c24 !important;
}
#removeCurrentFeatureButton:not(:disabled):not(.disabled) .button-icon {
    fill: #721c24 !important;
}
#removeCurrentFeatureButton:not(:disabled):hover {
    background-color: #f1b0b7 !important;
    border-color: #eea2aa !important;
}


/* Info Panel Header - Auto-zoom button specific style */
#infoPanelAutoZoomButton.map-tool-button,
#infoPanelLockSelectionButton.map-tool-button {
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
}
#infoPanelAutoZoomButton.map-tool-button .button-icon,
#infoPanelLockSelectionButton.map-tool-button .button-icon {
    width: 16px;
}

/* --- Mobile Specific InfoSidePanel --- */
@media (max-width: 768px) {
    body.mobile-view #infoSidePanel,
    body.mobile-view #summarySidePanel {
        width: 100% !important; min-width: 100% !important; max-width: 100% !important;
        height: 60vh !important; position: fixed !important;
        bottom: env(safe-area-inset-bottom, 0px) !important;
        left: 0 !important;
        top: auto !important; right: auto !important; transform: translateY(100%) !important;
        border-left: none !important; border-top: 1px solid #ccc !important;
    }
    body.mobile-view #infoSidePanel.visible, 
    body.mobile-view #summarySidePanel.visible { transform: translateY(0) !important; }
    body.mobile-view #infoPanelResizer { display: none !important; }
    body.mobile-view #infoPanelHeader,
    body.mobile-view #summaryPanelHeader {
        padding: 3px 10px !important;
        gap: 10px !important;
    }
    body.mobile-view #right-icon-toolbar { right: 10px !important; top: 10px !important; }
}

/* --- General Button Styling --- */
.map-tool-button, .ol-control button {
    background-color: #ffffff !important;
    border: 1px solid #ced4da !important;
    color: #495057 !important;
    opacity: 1 !important;
    padding: 0 !important;
    margin: 0 !important;
    border-radius: 5px !important;
    cursor: pointer !important;
    font-size: 1.3em !important;
    line-height: 1 !important;
    text-align: center !important;
    width: 44px !important;
    height: 44px !important;
    min-width: 44px !important;
    min-height: 44px !important;
    display: inline-flex !important;
    align-items: center !important; justify-content: center !important;
    box-shadow: 0 2px 3px rgba(0,0,0,0.1), 0 1px 1px rgba(0,0,0,0.06) !important;
    transition: background-color 0.15s ease-out, border-color 0.15s ease-out, color 0.15s ease-out,
                opacity: 0.15s ease-out, box-shadow 0.15s ease-out, transform 0.1s ease-out, height 0.2s ease-in-out !important;
}
.map-tool-button:hover:not(:disabled):not(.disabled),
.ol-control button:hover:not(:disabled):not(.disabled) {
    background-color: #f8f9fa !important;
    border-color: #adb5bd !important;
    box-shadow: 0 3px 5px rgba(0,0,0,0.12), 0 2px 3px rgba(0,0,0,0.08) !important;
    transform: translateY(-1px) !important;
}
.map-tool-button:disabled, .map-tool-button.disabled,
.ol-control button:disabled {
    background-color: #e9ecef !important;
    color: #adb5bd !important;
    cursor: not-allowed !important;
    border-color: #dee2e6 !important;
    opacity: 0.65 !important;
    box-shadow: none !important;
    transform: none !important;
}
.map-tool-button.active, .ol-control button:active {
    background-color: #007bff !important;
    border-color: #0069d9 !important;
    color: #ffffff !important;
    box-shadow: inset 0 2px 3px rgba(0,0,0,0.15) !important;
    transform: translateY(1px) !important;
}
 .map-tool-button.active:hover:not(:disabled):not(.disabled),
 .ol-control button:active:hover:not(:disabled):not(.disabled) {
    background-color: #0069d9 !important;
    border-color: #005cbf !important;
 }

.map-tool-button .button-icon {
    width: 18px; 
    height: auto;
    vertical-align: middle;
}

.map-tool-button.active .button-icon {
    fill: #ffffff; 
}

.map-tool-button:disabled .button-icon,
.map-tool-button.disabled .button-icon {
    fill: #adb5bd !important;
}


.button-hidden {
    display: none !important;
}
#clear-measurements-button:not(.button-hidden) {
     display: inline-flex !important;
}
#zoom-to-selected-button:not(.button-hidden),
#clear-selection-button:not(.button-hidden) {
     display: inline-flex !important;
}

/* Tyhjennä valinnat -painike */
#clear-selection-button:not(:disabled):not(.disabled) {
    background-color: #f37480 !important; 
    border-color: #e85a69 !important;  
    color: #ffffff !important;           
}
#clear-selection-button:not(:disabled):not(.disabled) .button-icon {
    fill: #ffffff !important;            
}
#clear-selection-button:not(:disabled):not(.disabled):hover {
    background-color: #e85a69 !important;  
    border-color: #dd4a5a !important;
}
#clear-selection-button:not(:disabled):not(.disabled):hover .button-icon {
    fill: #ffffff !important;
}

/* Tyhjennä mittaukset -painike */
#clear-measurements-button:not(:disabled):not(.disabled) {
    background-color: #f37480 !important; 
    border-color: #e85a69 !important;  
    color: #ffffff !important;          
}
#clear-measurements-button:not(:disabled):not(.disabled) .button-icon {
    fill: #ffffff !important;            
}
#clear-measurements-button:not(:disabled):not(.disabled):hover {
    background-color: #e85a69 !important; 
    border-color: #dd4a5a !important;
}
#clear-measurements-button.active:not(:disabled):not(.disabled) {
     background-color: #dd4a5a !important; 
     border-color: #d03a4a !important;
     color: #ffffff !important;
     box-shadow: inset 0 2px 3px rgba(0,0,0,0.15) !important;
     transform: translateY(1px) !important;
}
#clear-measurements-button.active .button-icon {
    fill: #ffffff !important;
}


.panel-close-button {
    font-size: 1.5em !important; padding: 0 8px !important; background: none !important; border: none !important;
    line-height: 1 !important; min-width: auto !important; color: #495057 !important; box-shadow: none !important;
    transform: none !important;
    width: auto !important; height: auto !important;
}
.panel-close-button:hover { background: #e9ecef !important; color: #212529 !important; }

#infoPanelNavigation button.map-tool-button,
.modal-footer button.map-tool-button {
    font-family: inherit;
    font-size: 0.9em !important; padding: 6px 10px !important; min-width: auto !important;
    width: auto !important; height: auto !important;
    box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;
}

.modal-footer button#settingsModalSaveButton,
.modal-footer button#offlineSettingsModalStartButton,
.modal-footer button#styleModalSaveButton { 
    background-color: #28a745 !important;
    color: white !important;
    border-color: #218838 !important;
}
.modal-footer button#settingsModalSaveButton:hover:not(:disabled),
.modal-footer button#offlineSettingsModalStartButton:hover:not(:disabled),
.modal-footer button#styleModalSaveButton:hover:not(:disabled) { 
    background-color: #218838 !important;
    border-color: #1e7e34 !important;
}

.modal-footer button#settingsModalCancelButton,
.modal-footer button#offlineSettingsModalCancelButton,
.modal-footer button#multipleFeaturesModalCancelButton,
.modal-footer button#styleModalCancelButton { 
    background-color: #6c757d !important;
    color: white !important;
    border-color: #5a6268 !important;
}
.modal-footer button#settingsModalCancelButton:hover:not(:disabled),
.modal-footer button#offlineSettingsModalCancelButton:hover:not(:disabled),
.modal-footer button#multipleFeaturesModalCancelButton:hover:not(:disabled),
.modal-footer button#styleModalCancelButton:hover:not(:disabled) { 
    background-color: #5a6268 !important;
    border-color: #545b62 !important;
}

/* Settings Modal - Offline painikkeiden erityistyylit */
#settingsModalBody button#saveOfflineStandsButton .button-icon,
#settingsModalBody button#clearOfflineStandsButton .button-icon {
    margin-right: 5px;
}

#settingsModalBody button#saveOfflineStandsButton {
    background-color: #f8f9fa !important; 
    color: #495057 !important;          
    border-color: #ced4da !important;  
    display: inline-flex !important; 
    align-items: center;
    padding-left: 10px !important; 
    padding-right: 10px !important; 
}
#settingsModalBody button#saveOfflineStandsButton .button-icon {
    fill: #28a745 !important; 
}
#settingsModalBody button#saveOfflineStandsButton:hover:not(:disabled) {
    background-color: #e9ecef !important; 
    border-color: #adb5bd !important;
}
#settingsModalBody button#saveOfflineStandsButton:disabled {
    background-color: #e9ecef !important;
    color: #adb5bd !important;
    border-color: #dee2e6 !important;
}
#settingsModalBody button#saveOfflineStandsButton:disabled .button-icon {
    fill: #adb5bd !important; 
}

#settingsModalBody button#clearOfflineStandsButton {
    background-color: #f8f9fa !important; 
    color: #495057 !important;         
    border-color: #ced4da !important;  
    display: inline-flex !important; 
    align-items: center;
    padding-left: 10px !important; 
    padding-right: 10px !important;
    margin-top: 8px; 
}
#settingsModalBody button#clearOfflineStandsButton .button-icon {
    fill: #dc3545 !important; 
}
#settingsModalBody button#clearOfflineStandsButton:hover:not(:disabled) {
    background-color: #e9ecef !important; 
    border-color: #adb5bd !important;
}
#settingsModalBody button#clearOfflineStandsButton:disabled {
    background-color: #e9ecef !important;
    color: #adb5bd !important;
    border-color: #dee2e6 !important;
}
#settingsModalBody button#clearOfflineStandsButton:disabled .button-icon {
    fill: #adb5bd !important; 
}

/* Settings Modal Header & Dropdown Menu */
.modal-content .modal-header-with-menu {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    gap: 10px;
    width: 100%;
    margin-bottom: 15px;
}
.modal-header-with-menu h3 {
    margin: 0;
}
.settings-menu-container {
    position: relative;
}
#settingsMenuButton {
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
}
.dropdown-menu {
    display: none;
    position: absolute;
    left: 0;
    right: auto;
    top: calc(100% + 5px);
    background-color: white;
    min-width: 200px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    border: 1px solid #ddd;
    border-radius: 4px;
    z-index: 21001;
    padding: 5px 0;
}
.dropdown-menu.active {
    display: block;
}
.dropdown-menu a {
    color: black;
    padding: 8px 15px;
    text-decoration: none;
    display: block;
    font-size: 0.9em;
}
.dropdown-menu a:hover { background-color: #f1f1f1; }
.dropdown-menu hr { margin: 5px 0; border-color: #eee; }
.dropdown-menu a.danger-action { color: #dc3545; }


.modal-close-button.map-tool-button {
    position: absolute !important;
    top: 10px !important;   
    right: 10px !important;  
    background: none !important;
    border: none !important;
    color: #6c757d !important;
    font-size: 1.8em !important; 
    box-shadow: none !important;
    transform: none !important;
    width: auto !important;
    height: auto !important;
    padding: 0 !important; 
    line-height: 1 !important;
    z-index: 1; 
}
.modal-close-button.map-tool-button:hover { 
    background: #f8f9fa !important; 
    color: #343a40 !important;
}

.icon-toolbar hr {
    width: 70%;
    margin: 8px auto;
    border: 0;
    border-top: 1px solid #dee2e6;
}

/* OpenLayers Control Positioning & Styling */
.ol-control {
    background-color: transparent !important;
    padding: 0 !important;
    border-radius: 5px !important;
    z-index: 1005 !important;
    position: absolute;
    transition: right 0.3s ease-out, top 0.3s ease-out, opacity 0.3s ease-out, visibility 0.3s ease-out;
}
.ol-zoom {
    top: calc(10px + (4 * 44px) + (3 * 10px) + 10px);
    right: 10px; 
    left: auto !important; 
    display: flex !important;
    flex-direction: column !important;
    gap: 0 !important;
}

.ol-zoom .ol-zoom-in {
    border-radius: 5px 5px 0 0 !important;
}
.ol-zoom .ol-zoom-out {
    border-radius: 0 0 5px 5px !important;
    margin-top: -1px !important;
}
.ol-rotate {
    top: calc(10px + (4 * 44px) + (3 * 10px) + 10px + (2 * 44px) + 10px);
    right: 10px; 
    left: auto !important; 
}
.ol-rotate button { border-radius: 5px !important;}

.ol-full-screen { display: none !important; }


 .ol-control button:focus {
    outline: none;
}

/* --- Bottom Right Controls: Attribution, ScaleLine & Zoom Level --- */
.ol-attribution {
    z-index: 1000 !important;
    bottom: calc(3px + env(safe-area-inset-bottom, 0px)) !important;
    right: 10px; 
    left: auto !important;
    text-align: right;
    transition: right 0.3s ease-out, opacity 0.3s ease-out, visibility 0.3s ease-out;
}
.ol-attribution ul { font-size: 10px; color: #333; text-align: right; }
.ol-attribution.ol-uncollapsible {
    background: rgba(255,255,255,0.5) !important;
    padding: 1px 4px !important;
    border-radius: 3px;
    max-width: calc(100% - 150px);
}
.ol-attribution button { display: none !important; }

.ol-scale-line {
    position: absolute !important;
    bottom: calc(3px + 15px + 5px + env(safe-area-inset-bottom, 0px)) !important;
    right: 10px; 
    left: auto !important;
    background-color: rgba(255,255,255,0.5) !important;
    padding: 3px 5px !important;
    border-radius: 3px !important;
    z-index: 1000 !important;
    transition: right 0.3s ease-out, opacity 0.3s ease-out, visibility 0.3s ease-out;
}

#zoom-level-indicator {
    position: absolute;
    bottom: calc(3px + 15px + 5px + 20px + 5px + env(safe-area-inset-bottom, 0px));
    right: 10px; 
    background-color: rgba(255,255,255,0.5);
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 12px;
    z-index: 1005;
    display: none;
    transition: right 0.3s ease-out, opacity 0.3s ease-out, visibility 0.3s ease-out;
}

.ol-scale-line-inner {
    border-color: #333 !important;
    color: #333 !important;
}

/* --- Bottom Left Controls: Help Button --- */
#bottom-left-controls {
    position: absolute;
    bottom: calc(10px + env(safe-area-inset-bottom, 0px));
    left: 10px;
    z-index: 1005;
    transition: opacity 0.3s ease-out, visibility 0.3s ease-out;
}
#bottom-left-controls .ol-control {
    position: relative !important;
}


/* --- Other UI Elements --- */
.custom-mouse-position {
    position: absolute; bottom: 10px; right: 10px;
    background-color: rgba(255,255,255,0.8); padding: 5px;
    border-radius: 4px; font-size: 12px; z-index: 1000;
    display: none !important;
}

#selected-count-indicator { display: none; }
#measure-output {
    display: none;
    position: absolute;
    top: 60px;
    left: calc(10px + 44px + 10px);
    background: rgba(255, 255, 255, 0.9);
    padding: 8px 12px;
    border-radius: 5px;
    font-size: 0.9em;
    z-index: 1010;
    min-height: 1.5em;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
    max-width: 250px;
    word-wrap: break-word;
    transition: top 0.3s ease-out, opacity 0.3s ease-out, visibility 0.3s ease-out;
}

/* Siirtää mittauskenttää alemmas, kun merkintätyökalut ovat näkyvissä */
#map-container:has(#annotation-tools-row:not(.button-hidden)) #measure-output {
    top: 105px;
}

.ol-tooltip { position: relative; background: rgba(0,0,0,0.5); border-radius: 4px; color: white; padding: 4px 8px; opacity: 0.7; white-space: nowrap; font-size: 12px; pointer-events: none; }
.ol-tooltip.hidden { display: none; }
.ol-tooltip-measure { opacity: 1; font-weight: bold; }
.ol-tooltip-static { background-color: #ffcc33; color: black; border: 1px solid white; }
.ol-tooltip-measure:before, .ol-tooltip-static:before { border-top: 6px solid rgba(0,0,0,0.5); border-right: 6px solid transparent; border-left: 6px solid transparent; content: ""; position: absolute; bottom: -6px; margin-left: -7px; left: 50%; }
.ol-tooltip-static:before { border-top-color: #ffcc33; }

/* Style Modal & Settings Modal & MultipleFeaturesModal */
.modal {
    display: none; /* Hidden by default */
    position: fixed;
    z-index: 21000;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    overflow-y: auto;
    background-color: rgba(0,0,0,0.4);
    padding: 10px;
    align-items: center; 
    justify-content: center;
}
.modal-content {
    background-color: #fefefe;
    margin: 0;
    padding: 20px;
    border: 1px solid #888;
    width: 95%; 
    max-width: 500px; 
    border-radius: 5px;
    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
    display: flex;
    flex-direction: column;
    max-height: calc(100vh - 40px);
    position: relative; 
    font-family: inherit;
}

#styleModalTitle, #settingsModalTitle, #offlineSettingsModalTitle, #multipleFeaturesModalTitle, #helpModalTitle {
    margin-top: 0;
    font-size: 1.2em;
    flex-shrink: 0;
}

.modal-body, #settingsModalBody, #styleModalBody, #offlineSettingsModalBody, #multipleFeaturesModalBody, #helpModalBody {
    margin-bottom: 10px;
    overflow-y: auto;
    overflow-x: hidden;
    flex-grow: 1;
}


#styleModalBody label, #settingsModalBody label,
#offlineSettingsModalBody label, #multipleFeaturesModalBody p, #helpModalBody p, #helpModalBody li {
    display: block; margin-top: 6px; margin-bottom: 2px; font-weight: normal; font-size: 0.9em;
}
#multipleFeaturesModalBody p { margin-bottom: 8px; }
#offlineSettingsModalBody #offlineZoomLevelSelection label,
#offlineSettingsModalBody #offlineLayerSelection label {
    display: inline-block;
    margin-right: 15px;
    margin-bottom: 4px;
}
 #offlineSettingsModalBody #offlineZoomLevelSelection br,
#offlineSettingsModalBody #offlineLayerSelection br {
    display: none;
}
#styleModalBody .style-group, #settingsModalBody .setting-item,
#offlineSettingsModalBody .setting-item { margin-bottom: 10px; padding-bottom: 8px; border-bottom: 1px solid #eee;}

#settingsModalBody .setting-item:last-of-type,
#offlineSettingsModalBody .setting-item:last-of-type {
    border-bottom: none;
    padding-bottom: 0;
    margin-bottom: 0;
}

/* Mobiilin modaali-ikkunan pystysuuntainen kohdistus */
@media (max-width: 768px), (max-height: 550px) {
    .modal {
        align-items: flex-start; /* Kohdista ylös mobiilissa tai matalassa näkymässä */
        padding-top: 20px; /* Pieni tila yläreunaan */
    }
}
 #offlineSettingsModalBody p {
    margin-top: 4px;
    margin-bottom: 8px;
}

#styleModalBody .style-group:last-child { border-bottom: none; }
#styleModalBody input[type="color"], #styleModalBody input[type="number"], #styleModalBody input[type="range"], #styleModalBody select,
#settingsModalBody input[type="color"], #settingsModalBody input[type="checkbox"], #settingsModalBody input[type="range"],
#offlineSettingsModalBody input[type="checkbox"] {
    width: auto;
    padding: 6px; margin-bottom: 8px; border: 1px solid #ccc; border-radius: 3px;
    margin-right: 5px;
    vertical-align: middle;
}
#offlineLayerSelection label.disabled { color: #aaa !important; cursor: default !important; }
#offlineLayerSelection label.disabled input[type="checkbox"] { cursor: default !important; }

/* Color picker specific styles in settings */
.color-picker-row {
    display: flex;
    gap: 15px;
    margin-bottom: 10px;
}
.color-picker-item {
    flex: 1;
}
.color-picker-item label {
    margin-bottom: 4px;
}
#styleModalBody input[type="color"], 
#settingsModalBody input[type="color"] { 
    height: 35px;
    width: 100%; /* Take full width of its container */
    padding: 2px;
}

#styleModalBody input[type="number"],
#styleModalBody input[type="range"],
#styleModalBody select,
#settingsModalBody input[type="range"] {
    width: 100%;
}


#styleModalBody .radio-group label { display: inline-block; margin-right: 15px; font-weight: normal;}
#styleModalBody .radio-group input[type="radio"] { margin-right: 5px; }

#settingsModalBody label, #settingsModalBody input[type="checkbox"] {
    vertical-align: middle;
}
#settingsModalBody label[for="enableHoverSetting"] {
    display: flex;
    align-items: center;
}
#settingsModalBody label[for="enableHoverSetting"] input[type="checkbox"] {
    margin-right: 5px;
}
#settingsModalBody span { vertical-align: middle; margin-left: 5px; }

/* Piilota hover-asetukset mobiilissa */
body.mobile-view #settingsModalBody .hover-settings-group {
    display: none !important;
}


/* Tyylit #featureSelectListModal -listalle */
#featureSelectListModal li {
    padding: 8px 10px;
    cursor: pointer;
    border-bottom: 1px solid #eee;
    font-size: 0.9em;
}
#featureSelectListModal li:last-child {
    border-bottom: none;
}
#featureSelectListModal li:hover {
    background-color: #f0f0f0;
}
#featureSelectListModal li[style*="bold"] {
    background-color: #e9ecef;
}


.modal-footer {
    margin-top: auto;
    padding-top: 15px;
    text-align: right;
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 10px;
    flex-shrink: 0;
}
.modal-footer .reset-button-container {
    margin-right: auto;
}
.modal-footer button.map-tool-button {
    flex-shrink: 0;
}
#styleModalResetButton {
    background-color: #e9ecef !important;
    color: #495057 !important;
    border-color: #ced4da !important;
}
#styleModalResetButton:hover:not(:disabled) {
    background-color: #dee2e6 !important;
    border-color: #b0b6bc !important;
}


.layer-group-header { display: flex; align-items: center; margin-bottom: 8px; }
.layer-group-header input[type="checkbox"] { margin-right: 8px; }
.layer-group-header h5 { margin-top: 0; margin-bottom: 0; }
.layer-item[data-group-member] { padding-left: 25px; }


body.mobile-view .map-tool-button:hover:not(:disabled):not(.disabled):not(.active),
body.mobile-view .ol-control button:hover:not(:disabled):not(.disabled):not(.active) {
    background-color: #ffffff !important;
    border-color: #ced4da !important;
    box-shadow: 0 2px 3px rgba(0,0,0,0.1), 0 1px 1px rgba(0,0,0,0.06) !important;
    transform: none !important;
}

body.mobile-view .map-tool-button.active:hover:not(:disabled):not(.disabled),
body.mobile-view .ol-control button:active:hover:not(:disabled):not(.disabled) {
    background-color: #007bff !important;
    border-color: #0069d9 !important;
}

body.mobile-view #clear-measurements-button:not(:disabled):not(.disabled):hover {
    background-color: #f8d7da !important;
    border-color: #f5c6cb !important;
}

body.mobile-view .panel-close-button:hover {
    background: none !important;
    color: #495057 !important;
}

body.mobile-view .modal-close-button.map-tool-button:hover {
    background: none !important;
    color: #6c757d !important;
}
body.mobile-view .layer-switcher label:hover {
}
#offlineStorageInfo {
    font-size: 0.9em;
    margin-top: 5px;
    color: #333;
}
#offlineProgressInfo {
    font-size: 0.9em;
    margin-top: 10px;
    padding: 8px;
    background-color: #e9f5ff;
    border: 1px solid #b3d7ff;
    color: #004085;
    border-radius: 4px;
    display: none;
    text-align: center;
}
#offlineProgressInfo .progress-bar-container {
    width: 100%;
    background-color: #ddd;
    border-radius: 4px;
    margin-top: 5px;
    height: 10px;
    overflow: hidden;
}
#offlineProgressInfo .progress-bar {
    width: 0%;
    height: 100%;
    background-color: #4CAF50;
    text-align: center;
    line-height: 10px;
    color: white;
    font-size: 0.7em;
    transition: width 0.3s ease-out;
}

/* Data Source Toggle Switch Styles */
#dataSourceToggleContainer {
    display: flex;
    align-items: center;
    gap: 8px;
}

.data-source-toggle {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 22px;
    cursor: pointer;
}

.data-source-toggle input {
    opacity: 0;
    width: 0;
    height: 0;
}

.toggle-slider {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #ccc;
    -webkit-transition: .4s;
    transition: .4s;
    border-radius: 22px;
}

.toggle-slider:before {
    position: absolute;
    content: "";
    height: 18px;
    width: 18px;
    left: 2px;
    bottom: 2px;
    background-color: white;
    -webkit-transition: .4s;
    transition: .4s;
    border-radius: 50%;
}

.data-source-toggle input:checked + .toggle-slider {
    background-color: #2196F3;
}

.data-source-toggle input:focus + .toggle-slider {
    box-shadow: 0 0 1px #2196F3;
}

.data-source-toggle input:checked + .toggle-slider:before {
    -webkit-transform: translateX(22px);
    -ms-transform: translateX(22px);
    transform: translateX(21px);
}

.toggle-label {
    font-size: 0.9em;
    font-weight: 500;
    vertical-align: middle;
}

/* XML Data Container Styles */
#xmlDataContainer .info-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9em;
    margin-bottom: 15px;
}
#xmlDataContainer .info-table:last-child {
    margin-bottom: 0;
}
#xmlDataContainer .info-table th, 
#xmlDataContainer .info-table td {
    border: 1px solid #ddd;
    padding: 6px;
    text-align: left;
}
#xmlDataContainer .info-table th {
    background-color: #e9ecef;
    width: 180px;
}

#xmlDataContainer h3 {
    border-bottom: 2px solid #eee;
    padding-bottom: 8px;
    margin-top: 0px;
    margin-bottom: 10px;
    font-size: 1.1em;
}
#xmlDataContainer h4 {
    border-bottom: 1px solid #eee;
    padding-bottom: 5px;
    margin-top: 20px;
    margin-bottom: 10px;
    font-size: 1.0em;
}
#xmlDataContainer .info-tab-content h4:first-child {
    margin-top: 0;
}
#xmlDataContainer .tree-data-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 15px;
    font-size: 0.85em;
}
#xmlDataContainer .tree-data-table th, 
#xmlDataContainer .tree-data-table td {
    border: 1px solid #ddd;
    padding: 6px;
    text-align: center;
}
#xmlDataContainer .tree-data-table th {
    background-color: #e9ecef;
}
#xmlDataContainer .tree-data-table th .header-unit {
    font-size: 0.8em;
    font-weight: normal;
}
#xmlDataContainer .tree-data-table td:first-child {
    text-align: left;
    font-weight: normal;
}
#xmlDataContainer .tree-data-table .summary-row td {
    font-weight: bold;
    background-color: #dde3e8;
}

/* --- XML Data View Tab Alignment Fix --- */
#xmlDataContainer {
    padding-top: 0 !important;
}

#xmlDataContainer .info-tabs {
    padding-left: 0;
    padding-right: 0;
}

#xmlDataContainer .info-tab-content {
    padding-top: 10px;
}

/* --- Splash Screen Styles --- */
#splash-screen {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #fdfdfd; /* Puhdas valkoinen tai lähes valkoinen */
    z-index: 99999; /* Varmistaa, että on kaiken päällä */
    display: flex;
    justify-content: center;
    align-items: center;
    transition: opacity 0.7s ease-out, visibility 0.7s ease-out;
    opacity: 1;
    visibility: visible;
}

#splash-screen img {
    max-width: 250px;
    width: 60%;
    animation: pulse-fade-in 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

#splash-screen.hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none; /* Estää klikkaukset, kun elementti on piilossa */
}

@keyframes pulse-fade-in {
  0% {
    transform: scale(0.95);
    opacity: 0;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

/* --- Settings Modal Header Fix --- */
.modal-header-with-menu {
    justify-content: flex-start; /* Oletus, elementit vasemmalta oikealle */
    position: relative; /* Tarvitaan, jotta valikko pysyy oikeassa reunassa */
    width: 100%;
    align-items: center;
    gap: 12px;
}

.modal-header-with-menu .modal-header-logo {
    height: 32px;
}

/* --- Help Button Specific Style --- */
#help-button.map-tool-button {
    width: 36px !important;
    height: 36px !important;
    min-width: 36px !important;
    min-height: 36px !important;
    font-size: 1.3em !important; /* Säilytetään kysymysmerkin koko */
    line-height: 1 !important;
}

/* --- Help Modal Icon Styling --- */
#helpModalBody span[data-icon] .button-icon {
    width: 1.2em;
    height: 1.2em;
    vertical-align: middle;
    margin-right: 5px;
    fill: currentColor;
    display: inline-block; /* Varmistetaan, että koon muutokset toimivat */
    position: relative;
    top: -0.1em; /* Pieni säätö pystysuunnassa */
}

#helpModalBody span[data-icon] {
    display: inline-flex;
    align-items: center;
}


/* --- Summary Panel Tab Styles --- */
#summaryPanelBody .info-tabs {
    list-style-type: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    border-bottom: 1px solid #ccc;
    flex-shrink: 0;
}

#summaryPanelBody .info-tabs li {
    padding: 8px 6px;
    cursor: pointer;
    border: 1px solid transparent;
    border-bottom: none;
    margin-right: 3px;
    background-color: #eee;
    border-radius: 4px 4px 0 0;
    font-size: 0.9em;
    white-space: nowrap;
}

#summaryPanelBody .info-tabs li.active {
    background-color: #fff;
    border-color: #ccc;
    border-bottom-color: #fff;
    position: relative;
    top: 1px;
    font-weight: bold;
}

#summaryPanelBody .summary-tab-content {
    display: none;
}

#summaryPanelBody .summary-tab-content.active {
    display: block;
    overflow-x: hidden;
}

#summaryPanelBody .info-table {
    width: 100%;
    max-width: 500px;
    border-collapse: collapse;
    font-size: 0.9em;
    margin: 0 0 15px 0;
    table-layout: fixed;
}
#summaryPanelBody .info-table th, 
#summaryPanelBody .info-table td {
    border: 1px solid #ddd;
    padding: 6px;
    overflow-wrap: break-word;
}

#summaryPanelBody .info-table th {
    background-color: #e9ecef;
    text-align: left;
}

#summaryPanelBody .info-table.summary-key-value th {
    width: auto;
}
#summaryPanelBody .info-table.summary-key-value td {
    width: 35%;
    text-align: right;
}

#summaryPanelBody .info-table tbody tr.row-hover th,
#summaryPanelBody .info-table tbody tr.row-hover td {
    background-color: #e9f5ff; /* Vaaleansininen korostusväri */
    cursor: pointer;
}

/* --- Chart.js Container Styles --- */
.summary-barchart-container {
    position: relative;
    margin: 25px 0;
    padding: 15px;
    border: 1px solid #e0e0e0;
    border-radius: 4px;
    background-color: #f9f9f9;
}
.summary-barchart-container h4 {
    margin-top: 0;
    margin-bottom: 15px;
    text-align: center;
    font-weight: normal;
}
.summary-barchart-container canvas {
    max-height: 250px;
}


/* --- YHTEENVETOPANEELIN OTSAKKEEN TYYLIT --- */
#summaryPanelTitle {
    flex-shrink: 0; /* Estää otsikkoa kutistumasta */
    white-space: nowrap;
}

#headerKpiContainer {
    display: flex;
    flex-grow: 1; /* Avainluvut täyttävät keskellä olevan tilan */
    justify-content: center; /* Keskittää avainluvut säiliön sisällä */
    gap: 20px;
    align-items: center;
    overflow: hidden; /* Varmistaa, ettei ylivuoda pienillä näytöillä */
}

.kpi-item {
    text-align: center;
    line-height: 1.1;
}

.kpi-item strong {
    font-size: 1.1em;
    color: #212529;
    display: block; /* Asettaa etiketin omalle rivilleen */
}

.kpi-item .kpi-label {
    font-size: 0.7em;
    color: #6c757d;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* --- Summary Panel Fertility Class Table Style --- */
#summaryPanelBody .fertility-class-table th {
    max-width: 65%; /* Estää solua venymästä liikaa */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.dropdown-menu a small {
    line-height: 1.2;
    margin-top: 4px;
}

/* --- Annotation List in Summary Panel --- */
#summaryPanelBody .annotation-list {
    list-style: none;
    padding: 0;
    margin: 10px 0;
}

#summaryPanelBody .annotation-list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 10px;
    border-bottom: 1px solid #eee;
    font-size: 0.9em;
}

#summaryPanelBody .annotation-list li:last-child {
    border-bottom: none;
}

#summaryPanelBody .annotation-list .annotation-info {
    display: flex;
    flex-direction: column;
}

#summaryPanelBody .annotation-list .annotation-name {
    font-weight: 500;
}

#summaryPanelBody .annotation-list .annotation-timestamp {
    font-size: 0.8em;
    color: #6c757d;
    margin-top: 2px;
}

#summaryPanelBody .annotation-list .zoom-to-annotation-btn {
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
    flex-shrink: 0;
    margin-left: 15px;
}

#summaryPanelBody .annotation-list .zoom-to-annotation-btn .button-icon {
    width: 16px;
}

/* --- Annotation View/Edit Styles in Info Panel --- */
#annotation-editor-container.view-mode .annotation-view-item {
    margin-bottom: 12px;
}

#annotation-editor-container.view-mode label {
    font-weight: bold;
    font-size: 0.9em;
    color: #6c757d;
    margin-bottom: 2px;
    display: block;
}

#annotation-editor-container.view-mode p {
    font-size: 1em;
    margin: 0;
    padding: 8px;
    background-color: #f1f3f5;
    border-radius: 4px;
    border: 1px solid #dee2e6;
    word-wrap: break-word; /* For long descriptions */
    white-space: pre-wrap; /* Preserve line breaks in description */
}

#annotation-editor-container.view-mode .annotation-color-view {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px;
    background-color: #f1f3f5;
    border-radius: 4px;
    border: 1px solid #dee2e6;
}

#annotation-editor-container.view-mode .color-swatch {
    width: 24px;
    height: 24px;
    border-radius: 4px;
    border: 1px solid #adb5bd;
    flex-shrink: 0;
}

.annotation-edit-item {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* --- Annotation Deletion Buttons in Summary Footer --- */
#summaryPanelFooter {
    border-top: 1px solid #ddd;
    padding: 10px 15px;
    background-color: #f8f9fa;
    margin-top: auto; /* Push to bottom */
}

#summaryPanelFooter #deleteSelectedAnnotationsButton,
#summaryPanelFooter #deleteAllAnnotationsButton {
    background-color: #f37480 !important;
    border-color: #e85a69 !important;
    color: #ffffff !important;
    font-size: 0.85em !important;
}

#summaryPanelFooter #deleteSelectedAnnotationsButton:hover:not(:disabled),
#summaryPanelFooter #deleteAllAnnotationsButton:hover:not(:disabled) {
    background-color: #e85a69 !important;
    border-color: #dd4a5a !important;
}

#summaryPanelFooter #deleteSelectedAnnotationsButton .button-icon,
#summaryPanelFooter #deleteAllAnnotationsButton .button-icon {
    fill: #ffffff !important;
    margin-right: 5px;
}

/* --- Annotation List in Summary Panel (Continued) --- */
#summaryPanelBody .annotation-list li.selected {
    background-color: #e0eaff; /* Vaaleansininen valintaväri */
    border-left: 3px solid #007bff;
}

#summaryPanelBody .annotation-list li.selected .annotation-name {
    font-weight: bold;
    color: #0056b3;
}

/* --- Annotation List in Summary Panel (Hover Effect) --- */
body:not(.mobile-view) #summaryPanelBody .annotation-list li:hover {
    background-color: #f0faff; /* Vaaleansininen hover-väri */
    cursor: default; /* Koko rivi ei ole enää klikattava */
}

#summaryPanelBody .annotation-list li {
    display: flex;
    align-items: center;
    gap: 12px;
}

#summaryPanelBody .annotation-list .annotation-type-icon {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
}

#summaryPanelBody .annotation-list .annotation-type-icon .button-icon {
    width: 18px;
    height: 18px;
}

#summaryPanelBody .annotation-list .annotation-info {
    flex-grow: 1;
    overflow: hidden; /* Varmistaa, ettei pitkä nimi työnnä painikkeita */
    text-overflow: ellipsis;
    white-space: nowrap;
}

#summaryPanelBody .annotation-list .annotation-actions {
    display: flex;
    gap: 5px;
    flex-shrink: 0;
}

#summaryPanelBody .annotation-list .annotation-actions .map-tool-button {
    width: 32px !important;
    height: 32px !important;
    min-width: 32px !important;
    min-height: 32px !important;
    font-size: 1em !important;
}

#summaryPanelBody .annotation-list .annotation-actions .map-tool-button .button-icon {
    width: 15px;
    height: 15px;
}

#summaryPanelBody .annotation-list .annotation-actions .delete-annotation-btn-item {
    background-color: #f8d7da !important;
    border-color: #f5c6cb !important;
}
#summaryPanelBody .annotation-list .annotation-actions .delete-annotation-btn-item .button-icon {
    fill: #721c24 !important;
}
#summaryPanelBody .annotation-list .annotation-actions .delete-annotation-btn-item:hover:not(:disabled) {
    background-color: #f1b0b7 !important;
}

#cancel-annotation-modify-button:not(:disabled):not(.disabled) {
    background-color: #f37480 !important;
    border-color: #e85a69 !important;
    color: #ffffff !important;
}
#cancel-annotation-modify-button:not(:disabled):not(.disabled) .button-icon {
    fill: #ffffff !important;
}
#cancel-annotation-modify-button:not(:disabled):not(.disabled):hover {
    background-color: #e85a69 !important;
    border-color: #dd4a5a !important;
}

/* Uudet tyylit merkintöjen katselutilaan */
.annotation-view-item-row {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    align-items: flex-start;
}
.annotation-view-item.compact {
    margin-bottom: 5px;
    flex: 1;
}
.annotation-view-item.compact label {
    margin-bottom: 4px;
}
.annotation-view-item.compact p,
.annotation-view-item.compact span,
.annotation-view-item.compact .annotation-color-view {
    padding: 8px;
    background-color: #f1f3f5;
    border-radius: 4px;
    border: 1px solid #dee2e6;
    margin: 0;
    min-height: 38px; /* Tasaa korkeuden muiden elementtien kanssa */
    display: flex;
    align-items: center;
}
.annotation-view-item.compact .annotation-color-view {
    padding: 6px 8px;
}

/* Uudet tyylit merkintöjen muokkaustilaan */
#annotation-editor-container.edit-mode input[type="text"],
#annotation-editor-container.edit-mode textarea {
    width: 100%;
    padding: 8px;
    border-radius: 4px;
    border: 1px solid #ccc;
    font-size: 1em;
    font-family: inherit;
    margin-bottom: 10px;
}
#annotation-editor-container.edit-mode label {
    font-size: 0.9em;
    font-weight: bold;
    color: #6c757d;
    margin-bottom: 4px;
    display: block;
}
.annotation-edit-row {
    display: flex;
    gap: 20px;
    align-items: flex-end;
    margin-bottom: 10px;
}
.annotation-edit-item-group {
    display: flex;
    flex-direction: column;
}
.annotation-edit-item-group.flex-grow {
    flex-grow: 1;
}
.annotation-edit-item-group input[type="color"] {
    width: 60px;
    height: 38px;
    padding: 2px;
}
.slider-container {
    display: flex;
    align-items: center;
    gap: 10px;
}
.slider-container input[type="range"] {
    flex-grow: 1;
    margin: 0;
}
.annotation-edit-item label {
    font-weight: normal;
    margin-bottom: 0;
}

.modal-footer button#save-annotation-btn {
    background-color: #28a745 !important;
    color: white !important;
}
.modal-footer button#delete-annotation-btn {
     background-color: #dc3545 !important;
     color: white !important;
}

/* --- Summary Panel Footer Redesign --- */
#summaryPanelFooter {
    gap: 15px;
}
.footer-group-left, .footer-group-right {
    display: flex;
    gap: 10px;
    align-items: center;
}
.map-tool-button.text-button {
    width: auto !important;
    padding: 6px 12px !important;
    font-size: 0.9em !important;
}
.map-tool-button.text-button.danger-action {
    background-color: #f8d7da !important;
    border-color: #f5c6cb !important;
    color: #721c24 !important;
}
.map-tool-button.text-button.danger-action:hover:not(:disabled) {
    background-color: #f1b0b7 !important;
}

.dropdown-menu-container {
    position: relative;
    display: inline-block;
}

.action-dropdown-menu {
    display: none;
    position: absolute;
    bottom: calc(100% + 5px); /* Position above the button */
    right: 0;
    background-color: white;
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    border: 1px solid #ddd;
    border-radius: 4px;
    z-index: 21001;
    padding: 5px 0;
    list-style: none;
    margin: 0;
}

.action-dropdown-menu.active {
    display: block;
}

.action-dropdown-menu a {
    color: black;
    padding: 8px 12px; /* MUUTETTU: Pienennetty vasenta ja oikeaa pehmustetta */
    text-decoration: none;
    display: block;
    font-size: 0.9em;
    white-space: nowrap;
}

.action-dropdown-menu a:hover {
    background-color: #f1f1f1;
}

.action-dropdown-menu a.danger-action {
    color: #dc3545;
}

.action-dropdown-menu a.danger-action:hover {
    background-color: #f8d7da;
}

.action-dropdown-menu a.disabled {
    color: #adb5bd;
    pointer-events: none;
    cursor: default;
}
.action-dropdown-menu a.disabled:hover {
    background-color: transparent !important;
}

/* --- Immersive Mode for Mobile --- */
body.immersive-mode #left-icon-toolbar,
body.immersive-mode #right-icon-toolbar,
body.immersive-mode #selection-mode-container,
body.immersive-mode .ol-control:not(.ol-attribution):not(.ol-scale-line),
body.immersive-mode #bottom-left-controls,
body.immersive-mode #measure-output,
body.immersive-mode #zoom-level-indicator {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

/* LISÄÄ NÄMÄ TYYLIT styles.css-TIEDOSTON LOPPUUN */
.floating-controls-container {
    position: absolute;
    top: 15px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 1012;
    background-color: rgba(255, 255, 255, 0.9);
    padding: 8px;
    border-radius: 6px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.2);
    display: flex;
    gap: 10px;
}

.map-tool-button.text-button.success-action {
    background-color: #28a745 !important;
    border-color: #218838 !important;
    color: white !important;
}
.map-tool-button.text-button.success-action:hover:not(:disabled) {
    background-color: #218838 !important;
}

.map-tool-button.text-button.danger-action {
    background-color: #dc3545 !important;
    border-color: #c82333 !important;
    color: white !important;
}
.map-tool-button.text-button.danger-action:hover:not(:disabled) {
    background-color: #c82333 !important;
}

/* --- LISÄYS: GPS-painikkeen erityistyyli seurannan aikana --- */
#toggle-gps-button.active.gps-following {
    background-color: #28a745 !important; /* Vihreä pohja onnistumiselle */
    border-color: #218838 !important;   /* Tummempi vihreä reunus */
}

#toggle-gps-button.active.gps-following .button-icon {
    fill: #ffffff !important; /* Varmistetaan, että ikoni pysyy valkoisena */
}

#toggle-gps-button.active.gps-following:hover:not(:disabled) {
    background-color: #218838 !important; /* Tummempi vihreä hover-efekti */
    border-color: #1e7e34 !important;
}

/* --- KORJATTU: Mobiilin työkalujen laajennusvalikko --- */
#collapsible-tools-wrapper {
    display: flex;
    flex-direction: column;
    gap: 10px;
    align-items: center;
}

#toggle-tools-menu-button {
    display: none !important;
}
#collapsible-tools-content {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

body.mobile-view #toggle-tools-menu-button {
    display: inline-flex !important;
}

.map-tool-button.half-height {
    height: 22px !important;
    min-height: 22px !important;
}

body.mobile-view #collapsible-tools-content {
    display: none !important;
}

body.mobile-view #collapsible-tools-wrapper.expanded {
    background-color: rgba(255, 255, 255, 0.5);
    border-radius: 5px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.15);
    overflow: hidden;
    padding: 0;
}


body.mobile-view #collapsible-tools-wrapper.expanded #collapsible-tools-content {
    display: flex !important;
    margin-top: -3px;
    margin-bottom: -3px;
}

#toggle-tools-menu-button .button-icon {
    transition: transform 0.2s ease-in-out;
}
#toggle-tools-menu-button.active .button-icon {
    transform: rotate(180deg);
}

body.mobile-view .desktop-only-separator {
    display: none;
}

@media (max-height: 500px) and (orientation: landscape) {
    body.mobile-view #bottom-left-controls {
        display: none !important;
    }
}

/* Piilota turhat viivat Asetukset-ikkunasta mobiilissa */
body.mobile-view #settingsModalBody hr {
    display: none;
}

/* Säädetään Asetukset-ikkunan osioiden väliä mobiilissa, kun viivat poistetaan */
body.mobile-view #settingsModalBody .setting-item {
    margin-bottom: 20px; /* Lisätään hieman enemmän tilaa osioiden väliin */
    padding-bottom: 0;
    border-bottom: none;
}

/* Piilota Asetukset-ikkunan erotinviivat kaikissa näkymissä */
#settingsModalBody hr {
    display: none;
}

/* Asetetaan oletusmarginaali osioille työpöytänäkymässä */
#settingsModalBody .setting-item {
    margin-bottom: 15px;
    padding-bottom: 0;
    border-bottom: none;
}

/* Asetetaan hieman suurempi marginaali mobiilinäkymässä */
body.mobile-view #settingsModalBody .setting-item {
    margin-bottom: 20px;
}

/* --- UUDET TYYLIT PÄIVITYSANIMAATIOLLE --- */

/* Avainkehysanimaatio spinnerille */
@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Oletuksena piilotetaan koko päivityscontainer */
#splash-screen .update-container {
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

/* Spinnerin ulkoasu ja animaatio */
#splash-screen .spinner {
    width: 40px;
    height: 40px;
    border: 4px solid rgba(0, 0, 0, 0.1);
    border-top-color: #007bff; /* Spinnerin pääväri */
    border-radius: 50%;
    animation: spin 1s linear infinite;
    margin-bottom: 20px;
}

/* Päivitystekstin tyyli */
#splash-screen .update-container h4 {
    display: block; /* Varmistetaan, että teksti näkyy */
    color: #495057; /* Hieman pehmeämpi musta */
    font-weight: 500; /* Normaalia kevyempi, modernimpi */
    font-size: 1.1em;
    margin: 0;
}

/* Kun sovellus päivittyy (html-tagilla on luokka 'app-is-updating')... */
.app-is-updating #splash-screen img {
    display: none; /* ...piilotetaan logo... */
}

.app-is-updating #splash-screen .update-container {
    display: flex; /* ...ja näytetään päivityscontainer. */
}