@charset "utf-8";
/* CSS Document */
body {
	font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
	background-color: #f8f9fa; /* Light background for better contrast */
	margin: 0;
	padding: 0;
}
/* Adjust map container to ensure toolbar doesn't overlap important content */
#map {
	position: relative;
	height: 100vh; /* Full viewport height */
	width: 100%;
}
.ol-control {
	display: none;
}
.rounded-button {
	border-radius: 50%;
}
.clear-icon {
	position: absolute;
	right: 45px;
	top: 50%;
	transform: translateY(-50%);
	cursor: pointer;
	font-size: 1.2em;
	color: #aaa;
	z-index: 1000;
}
.branch-list {
	list-style: none;
	padding-left: 0;
	max-height: 400px;
	overflow-y: auto;
}
.branch-list li {
	margin-bottom: 5px;
	line-height: 1.2;
}
.branch-link {
	cursor: pointer;
	color: #036 !important;
	text-decoration: none;
}
.branch-link:hover {
	text-decoration: underline;
}
.branch-link .bi {
	color: #036 !important;
}
.branch-link:hover .bi {
	color: #007bff;
}
/* Hide toggle button and close button by default */
#toggleSidebar, #sidebar .close-btn {
	display: none;
}
/* Custom Gradient Background for Sidebar */
#sidebar {
	position: relative; /* Establishes a positioning context for the pseudo-element */
	overflow: hidden; /* Ensures the pseudo-element doesn't spill outside */
	padding: 20px;
	/* Optional: Remove Bootstrap's bg-soft-secondary to prevent conflicts */
	background: none;
	border-right: 1px solid #ddd;
}
/* 2. Pseudo-Element for Gradient and Blur */
#sidebar::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	/* Radial Gradient */
	background: radial-gradient(circle, rgba(135, 206, 235, 0.6), rgba(211, 211, 211, 0.6), rgba(70, 130, 180, 0.6));
	filter: blur(15px); /* Adjust blur intensity */
	z-index: -1; /* Places the gradient behind the sidebar content */
	/* For smoother edges */
	border-radius: 0 20px 20px 0; /* Adjust if your sidebar has rounded corners */
}
/* 3. Sidebar Content Styles */
#sidebar .branch-link {
	position: relative; /* Ensures stacking context above the pseudo-element */
	z-index: 1;
	/* Additional styling for branch links */
	display: flex;
	align-items: center;
	padding: 5px 15px;
	border-radius: 8px;
	background-color: rgba(255, 255, 255, 0.8); /* Semi-transparent background for readability */
	margin-bottom: 5px;
	text-decoration: none;
	color: #333; /* Text color */
	transition: background-color 0.3s ease, color 0.3s ease, padding-left 0.3s ease, box-shadow 0.3s ease;
}
#sidebar .branch-link:hover {
	background-color: rgba(173, 216, 230, 0.3); /* Very light blue */
	color: #036 !important;
	padding-left: 10px; /* Subtle slide effect */
	box-shadow: inset 2px 0 0 #00aaff; /* Blue accent on left */
	transition: all 0.3s ease; /* Smooth transition */
}
/* 4. Responsive Adjustments (Optional) */
@media (max-width: 767px) {
	#sidebar {
		padding: 15px;
	}
	#sidebar::before {
		filter: blur(25px); /* Increased blur on smaller screens */
	}
	.branch-link {
		padding: 12px 20px;
		font-size: 1.1rem;
	}
}
/* Adjust sidebar and toggle button for mobile */
@media (max-width: 767.98px) {
	#sidebar {
		position: fixed; /* Fixed for better overlay handling */
		top: 0;
		left: 0;
		height: 100%;
		height: 100dvh;
		width: min(22rem, 88%);
		z-index: 1055; /* Above Bootstrap's modal z-index */
		overflow-y: auto;
		padding-top: 2.75rem;
		background: linear-gradient(135deg, #f0f0f0, #d9d9d9);
		transform: translateX(-100%);
		transition: transform 0.3s ease-in-out;
		box-shadow: 2px 0 5px rgba(0, 0, 0, 0.3);
	}
	#sidebar.active {
		transform: translateX(0);
	}
	#toggleSidebar {
		display: inline-flex;
		align-items: center;
		width: auto;
		max-width: calc(100vw - 4.75rem);
		position: fixed;
		top: max(10px, env(safe-area-inset-top));
		left: max(10px, env(safe-area-inset-left));
		z-index: 1056;
	}
	#toggleSidebar[hidden] {
		display: none !important;
	}
	/* Overlay styling */
	#overlay {
		display: none; /* Hidden by default */
		position: fixed;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		background: rgba(0, 0, 0, 0.5);
		z-index: 1054; /* Below the sidebar and toggle button */
	}
	#overlay.active {
		display: block;
	}
	/* Close button inside sidebar */
	#sidebar .close-btn {
		display: block; /* Show close button only on mobile */
		position: absolute;
		top: 8px;
		right: 10px;
		font-size: 1.5rem;
		cursor: pointer;
		color: #aaa;
	}
	#sidebar .close-btn:hover {
		color: #000;
	}
}
/* Tooltip styles */
.tooltip {
	background-color: rgba(0, 0, 0, 0.7);
	color: white;
	padding: 4px 8px;
	border-radius: 4px;
	white-space: nowrap;
	font-size: 12px;
}
/* Marker hover cursor */
.ol-map .ol-unselectable.ol-control {
	cursor: pointer;
}
/* Popup marker styling */
.ol-popup {
	position: absolute;
	background-color: white;
	padding: 0px;
	border-radius: 10px;
	border: 1px solid #cccccc;
	bottom: 12px;
	left: -50px;
	min-width: 16rem;
	max-width: min(22rem, calc(100vw - 2rem));
	box-sizing: border-box;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
	pointer-events: auto; /* Ensure the popup can receive pointer events */
	overflow: visible;
}
.ol-popup:after, .ol-popup:before {
	top: 100%;
	border: solid transparent;
	content: " ";
	height: 0;
	width: 0;
	position: absolute;
	pointer-events: none;
}
.ol-popup:after {
	border-top-color: white;
	border-width: 10px;
	left: 48px;
	margin-left: -10px;
}
.ol-popup:before {
	border-top-color: #cccccc;
	border-width: 11px;
	left: 48px;
	margin-left: -11px;
}
/* Marker hover effect */
.ol-marker {
    transition: transform 0.5s ease-in-out; /* Smoother easing */
}

.ol-marker:hover {
    transform: scale(1.2); /* Scale up on hover */
    cursor: pointer; /* Change cursor to pointer on hover */
}


/* Reduce font size for pop-up tabs */
.ol-popup .nav-tabs .nav-link {
	font-size: 0.9rem;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
/* Enhanced UI styling */
.accordion-button:not(.collapsed) {
	background-color: #014890;
	color: white;
}
.accordion-button.collapsed {
	background-color: #014890;
	color: #fff;
}
.btn-primary {
	background-color: #014890;
	border-color: #014890;
}
.btn-primary:hover {
	background-color: #0b5ed7;
	border-color: #0a58ca;
}
/* Button group color customization */
.btn-group .btn-info {
	background-color: #17a2b8;
	border-color: #17a2b8;
}
.btn-group .btn-success {
	background-color: #28a745;
	border-color: #28a745;
}
.btn-group .btn-warning {
	background-color: #ffc107;
	border-color: #ffc107;
	color: #212529;
}
.btn-group .btn {
    background-color: #007bff; /* Change this to your desired background color */
    color: white; /* Change this to your desired text color */
    border: none; /* Remove default border */
}

.btn-group .btn:hover {
    background-color: #0056b3; /* Change this to your desired hover background color */
    color: white; /* Change hover text color if needed */
}

.btn-group .btn-secondary {
    background-color: #F0F8FF; /* Light blue background */
    color: #2C3E50; /* Dark slate gray text for good contrast */
	font-weight: 500;
    border: 1px solid #B9D9EB; /* Slightly darker border for definition */
	  font-size: 12px; /* Decrease font size here */
}

.btn-group .btn-secondary:hover {
    background-color: #E1EBEE; /* Slightly darker shade for hover effect */
    color: #1B2631; /* Darker text color on hover */
}


/* Ensure the overlay covers the entire screen on mobile */
@media (max-width: 767.98px) {
	#overlay {
		display: none; /* Hidden by default */
		position: fixed;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		background: rgba(0, 0, 0, 0.5);
		z-index: 1054; /* Below the sidebar and toggle button */
	}
	#overlay.active {
		display: block;
	}
}
/* Toolbar Styling */
.map-toolbar {
	position: absolute;
	top: 10px;
	right: 10px;
	background: rgba(0, 0, 0, 0.7); /* Semi-transparent black background */
	border-radius: 4px;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
	z-index: 1000;
	display: flex;
	flex-direction: column;
	padding: 5px;
}
.map-toolbar button {
	margin: 2px 0;
	width: 40px;
	height: 40px;
	border: none;
	background: none;
	padding: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	color: white; /* White icons */
}
.map-toolbar button:hover,
.map-toolbar button:focus-visible {
	background: rgba(255, 255, 255, 0.1); /* Light hover effect */
	border-radius: 4px;
}
.map-toolbar-divider {
	display: block;
	height: 1px;
	margin: 4px 6px;
	background: rgba(255, 255, 255, 0.28);
}
.map-fit-icon {
	display: block;
	flex: 0 0 auto;
}
.view-all-chip {
	position: absolute;
	top: 12px;
	left: 12px;
	z-index: 1001;
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	height: 40px;
	padding: 0 0.9rem 0 0.7rem;
	border: 0;
	border-radius: 999px;
	background: #fff;
	color: #014890;
	font-size: 0.8125rem;
	font-weight: 600;
	line-height: 1;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.28);
	cursor: pointer;
}
.view-all-chip[hidden] {
	display: none !important;
}
.view-all-chip:hover,
.view-all-chip:focus-visible {
	background: #eef4fa;
	color: #014890;
}
.locator-sheet {
	display: none;
}
.map-toolbar button[title] {
	position: relative;
}
.map-toolbar button[title]:hover::after,
.map-toolbar button[title]:focus-visible::after {
	content: attr(title);
	position: absolute;
	top: 50%;
	right: calc(100% + 8px);
	transform: translateY(-50%);
	white-space: nowrap;
	background: #123;
	color: #fff;
	font-size: 0.75rem;
	line-height: 1.2;
	padding: 0.35rem 0.5rem;
	border-radius: 0.25rem;
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
	pointer-events: none;
	z-index: 2;
}
.map-toolbar .layers-dropdown {
	position: relative;
}
.map-toolbar .dropdown-menu {
	position: absolute;
	top: 0;
	right: 50px;
}
/* CSS to add vertical spacing and style the autocomplete dropdown */
.search-container {
	position: relative;
	margin-bottom: 1.5rem; /* Adjust spacing as needed */
}
#searchDropdown {
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	z-index: 1000;
	max-height: 300px;
	overflow-y: auto;
	margin-top: 0.5rem;
	display: none; /* Hidden by default */
}
#searchDropdown.show {
	display: block;
}
#searchDropdown .dropdown-item {
	cursor: pointer;
}
#searchDropdown .dropdown-item:hover {
	background-color: #f8f9fa;
}
.search-container .form-control {
	z-index: 1050;
}
@media (max-width: 767.98px) {
	.search-container {
		margin-bottom: 1rem;
	}
}
.searchListingsAccordion {
	margin-top: 10px !important;
}
@media (max-width: 767px) {
	.searchListingsAccordion {
		margin-top: 70px !important;
		transition: margin-top 0.3s ease-in-out;
	}
}
#searchResults {
	background: none;
	padding: 0;
}
#searchResults:empty {
	display: none;
}
.layers-dropdown .form-check-input:checked {
    background-color: #888 !important;
    border-color: #888 !important;
}
.tab-content {
    font-size: 0.875rem; /* Adjust to your desired size */
}
/* Modern Filter Styles */
.filter-group {
    border-bottom: 1px solid #f0f0f0;
    padding-bottom: 1rem;
    margin-bottom: 1rem;
}

.filter-group:last-child {
    border-bottom: none;
}

.filter-label {
    font-size: 0.75rem;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    font-weight: bold;
    color: #6c757d;
    margin-bottom: 0.5rem;
}

/* Button group styles */
.filter-btn-group {
    display: flex;
    width: 100%;
}

.filter-btn {
    flex: 1;
    padding: 0.375rem 0.75rem;
    font-size: 0.875rem;
    border: 1px solid #dee2e6;
    background-color: #f8f9fa;
    color: #495057;
    cursor: pointer;
    text-align: center;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
}

.filter-btn:first-child {
    border-radius: 0.25rem 0 0 0.25rem;
}

.filter-btn:last-child {
    border-radius: 0 0.25rem 0.25rem 0;
}

.filter-btn.active {
    background-color: #014890;
    border-color: #014890;
    color: white;
}

/* Feature chip styles */
.feature-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.feature-chip {
    margin: 0;
}

.chip-label {
    display: inline-block;
    padding: 0.375rem 0.75rem;
    border-radius: 50rem;
    border: 1px solid #dee2e6;
    background-color: #f8f9fa;
    color: #495057;
    font-size: 0.875rem;
    cursor: pointer;
    transition: all 0.2s ease;
}

.chip-label.active {
    background-color: #014890;
    border-color: #014890;
    color: white;
}
/* Modern Filter Styles */
.filter-section {
    margin-bottom: 1rem;
}

.filter-caption {
    font-size: 0.875rem;
    color: #6c757d;
    margin-bottom: 0.5rem;
}

.filter-toggle-group {
    display: flex;
    flex-wrap: wrap;
}

/* Bootstrap 5 Switch Customization */
.form-switch .form-check-input {
    height: 1.25rem;
    width: 2.25rem;
    cursor: pointer;
    background-color: #dee2e6; /* Grey for unchecked */
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
}

.form-switch .form-check-input:checked {
    background-color: #014890 !important;
    border-color: #014890 !important;
}

.form-switch .form-check-label {
    font-size: 0.875rem;
    cursor: pointer;
    user-select: none;
}

/* Add these new styles for better visual feedback */
.form-check-label {
    transition: color 0.2s ease;
}

.form-switch .form-check-input:checked ~ .form-check-label {
    color: #212529;
    font-weight: 500;
}

.form-switch .form-check-input:not(:checked) ~ .form-check-label {
    color: #6c757d;
}

/* Add these styles to reduce the size of the search and filters header */
.accordion-header .d-none.d-md-block {
    font-size: 0.9rem;
    padding: 0.5rem 1rem !important;
    margin-bottom: 0;
}

.accordion-button {
    padding: 0.5rem 1rem;
    font-size: 0.9rem;
}

/* Make the accordion body more compact */
.accordion-body {
    padding: 0.75rem;
}

.search-panel {
    background: #fff;
    border: 1px solid #d7e4f2;
    border-radius: 0.75rem;
    padding: 0.9rem;
    box-shadow: 0 1px 2px rgba(1, 72, 144, 0.06);
}
.search-panel .form-label {
    color: #014890;
    margin-bottom: 0.35rem;
}
.search-panel .form-control {
    font-size: 16px;
}
.search-panel .form-text {
    color: #5c6b7a;
}
#search-button {
    white-space: nowrap;
}
.search-panel .clear-icon {
    right: 5.25rem;
    z-index: 5;
}
#find-me {
    width: 100%;
}
.btn-outline-primary {
    border-color: #c5d7ee;
    color: #014890;
}
.btn-outline-primary:hover,
.btn-check:checked + .btn-outline-primary {
    background-color: #014890;
    border-color: #014890;
    color: #fff;
}
#sidebar .branch-link {
    align-items: flex-start;
    gap: 0.4rem;
}
.branch-link-text {
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.branch-distance {
    font-size: 0.75rem;
    color: #014890;
    font-weight: 600;
}
.nearest-badge {
    margin-left: auto;
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    background: #014890;
    color: #fff;
    border-radius: 0.25rem;
    padding: 0.15rem 0.35rem;
    align-self: center;
    white-space: nowrap;
}
.nearest-result {
    background: #fff;
    border: 1px solid #c5d7ee;
    border-radius: 0.75rem;
    padding: 0.8rem 0.9rem;
    text-align: left;
    box-shadow: 0 1px 2px rgba(1, 72, 144, 0.06);
}
.nearest-result-kicker {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #014890;
    font-weight: 700;
}
.nearest-result-name {
    font-size: 1.05rem;
    color: #123;
    font-weight: 600;
}
.nearest-result-miles {
    font-size: 0.95rem;
    color: #014890;
    font-weight: 700;
}
.nearest-result-open {
    appearance: none;
    background: none;
    border: 0;
    padding: 0;
    width: 100%;
    text-align: left;
    cursor: pointer;
}
.nearest-result-open:hover .nearest-result-name,
.nearest-result-open:focus-visible .nearest-result-name {
    text-decoration: underline;
}
.nearest-result-actions {
    margin-top: 0.65rem;
}
#searchResults.text-danger {
    color: #b02a37 !important;
}
.ol-popup .card {
    border: 0;
    box-shadow: none;
}
.locator-popup-card {
    position: relative;
    border-radius: 10px;
    max-height: min(70vh, 36rem);
    overflow: auto;
}
.locator-popup-media {
    position: relative;
}
.ol-popup .card-body {
    padding: 0.85rem 1rem 0.55rem;
}
.ol-popup .card-title {
    color: #014890;
    font-size: 1.05rem;
    padding-right: 1.75rem;
    margin-bottom: 0.65rem;
}
.ol-popup img.img-fluid {
    width: 100%;
    display: block;
    max-height: 9.5rem;
    object-fit: cover;
    margin-bottom: 0 !important;
}
.ol-popup-close {
    -webkit-appearance: none;
    appearance: none;
    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 0;
    margin: 0;
    border: 0;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);
    color: #334155;
    font-size: 0;
    line-height: 0;
    cursor: pointer;
}
.ol-popup-close-icon {
    display: block;
    width: 14px;
    height: 14px;
    flex: 0 0 auto;
}
.ol-popup-close:hover,
.ol-popup-close:focus-visible {
    background: #eef4fa;
    color: #014890;
}
.ol-popup .nav-tabs .nav-link {
    padding: 0.4rem 0.55rem;
    font-size: 0.8rem;
}
.popup-actions {
    display: flex;
    gap: 0.45rem;
    padding: 0.7rem 0.85rem 0.85rem;
    background: #f6f9fc;
    border-top: 1px solid #e6eef6;
}
.popup-actions .btn {
    flex: 1;
    font-size: 0.8125rem;
    font-weight: 600;
}
.popup-actions .btn-primary {
    background-color: #014890;
    border-color: #014890;
}
.popup-actions .btn-outline-secondary {
    color: #014890;
    border-color: #c5d7ee;
    background: #fff;
}
.popup-actions .btn-outline-secondary:hover {
    background: #eef4fa;
    color: #014890;
    border-color: #014890;
}
@media (max-width: 767.98px) {
    #toggleSidebar {
        padding: 0.55rem 0.9rem;
        font-size: 0.95rem;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
    }
    #sidebar .close-btn {
        margin-bottom: 0 !important;
    }
    .search-panel .form-control,
    #search-button,
    #find-me {
        min-height: 48px;
    }
    #search-button {
        padding-left: 0.85rem;
        padding-right: 0.85rem;
    }
    .ol-popup {
        display: none !important;
    }
    .view-all-chip {
        top: calc(max(10px, env(safe-area-inset-top)) + 52px);
        left: 50%;
        transform: translateX(-50%);
    }
    .locator-sheet:not([hidden]) {
        display: block;
        position: fixed;
        left: 0.75rem;
        right: 0.75rem;
        bottom: max(0.75rem, env(safe-area-inset-bottom));
        z-index: 1040;
        pointer-events: auto;
    }
    .locator-sheet .locator-popup-card {
        max-height: min(62vh, 32rem);
        overflow: auto;
        background: #fff;
        box-shadow: 0 8px 28px rgba(0, 0, 0, 0.28);
    }
    .locator-sheet .ol-popup-close,
    .ol-popup-close {
        width: 40px;
        height: 40px;
    }
    .locator-sheet .ol-popup-close-icon,
    .ol-popup-close-icon {
        width: 16px;
        height: 16px;
    }
    .locator-popup-card {
        max-height: min(62vh, 32rem);
    }
    .popup-actions {
        flex-wrap: wrap;
    }
    .popup-actions .btn {
        min-height: 44px;
    }
    #sidebar .branch-link {
        padding: 0.7rem 0.75rem;
    }
    .nearest-badge {
        font-size: 0.7rem;
        padding: 0.25rem 0.4rem;
    }
} 