/* ==========================================================================
Office Locator — /office-locations
Matches the legacy layout: gray banner header, location select bar,
side-by-side map + scrollable office list below.
========================================================================== */
:root {
--ol-gray-lt: #f4f5f6;
--ol-gray-md: #e2e4e7;
--ol-gray-dk: #4a4f57;
--ol-text: #24272b;
--ol-text-muted: #6b7178;
--ol-brand: #1f6feb;
--ol-brand-dk: #17549c;
--ol-white: #ffffff;
--ol-border-radius: 8px;
--ol-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.06);
}
/* Page banner (matches .banner-gray-lt / .banner-replace on legacy page) */
.banner-gray-lt {
background: var(--ol-gray-lt);
}
.banner-replace {
padding: 48px 24px 32px;
text-align: center;
}
.banner-replace .prompt h1 {
margin: 0;
font-size: 2rem;
font-weight: 700;
color: var(--ol-text);
}
/* ---- Locator shell ---- */
#locations {
background: var(--ol-white);
}
#office-locator {
display: flex;
flex-direction: column;
}
/* Location select bar */
#office-locator .banner {
background: var(--ol-gray-md);
border-bottom: 1px solid #d5d8dc;
padding: 20px 0;
}
#office-locator .container {
max-width: 1200px;
margin: 0 auto;
padding: 0 24px;
}
.state-list-container {
display: flex;
align-items: center;
gap: 14px;
flex-wrap: wrap;
}
.state-list-container label {
font-weight: 600;
color: var(--ol-text);
white-space: nowrap;
}
.selector {
min-width: 260px;
padding: 10px 14px;
font-size: 1rem;
border: 1px solid #c7cbd1;
border-radius: var(--ol-border-radius);
background-color: var(--ol-white);
color: var(--ol-text);
cursor: pointer;
}
.selector:focus {
outline: 2px solid var(--ol-brand);
outline-offset: 1px;
}
/* ---- Map + list layout ---- */
.map-container {
position: relative;
width: 100%;
height: 480px;
}
.map-container .map {
width: 100%;
height: 100%;
background: var(--ol-gray-lt);
}
.map-container .overlay {
display: none;
}
.list-container {
background: var(--ol-gray-lt);
border-top: 1px solid var(--ol-gray-md);
}
.list-container .container-fluid {
max-width: 1200px;
margin: 0 auto;
padding: 32px 24px 48px;
}
@media (min-width: 900px) {
/* Side-by-side layout: map fills the viewport width above,
list becomes a scrollable rail that mirrors it below the fold
on smaller desktops, or side-by-side when there's room. */
#office-locator .map-list-flex {
display: flex;
align-items: flex-start;
}
}
ul.offices {
list-style: none;
margin: 0;
padding: 0;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 20px;
}
ul.offices li.office {
background: var(--ol-white);
border: 1px solid var(--ol-gray-md);
border-radius: var(--ol-border-radius);
box-shadow: var(--ol-shadow);
padding: 20px;
transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
cursor: pointer;
}
ul.offices li.office:hover {
border-color: var(--ol-brand);
transform: translateY(-1px);
}
ul.offices li.office.is-active {
border-color: var(--ol-brand);
box-shadow: 0 0 0 2px rgba(31, 111, 235, 0.25), var(--ol-shadow);
}
.office h3 {
margin: 0 0 4px;
font-size: 1.125rem;
color: var(--ol-text);
}
.office .office-market {
margin: 0 0 12px;
font-size: 0.85rem;
color: var(--ol-text-muted);
text-transform: uppercase;
letter-spacing: 0.03em;
}
.office address {
font-style: normal;
margin: 0 0 12px;
color: var(--ol-text);
line-height: 1.5;
}
.office .office-contact {
margin: 0 0 14px;
line-height: 1.6;
}
.office .office-contact a {
color: var(--ol-brand-dk);
text-decoration: none;
}
.office .office-contact a:hover {
text-decoration: underline;
}
.office .office-actions {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.office .office-actions a {
display: inline-block;
font-size: 0.85rem;
font-weight: 600;
padding: 8px 14px;
border-radius: 999px;
text-decoration: none;
transition: background-color 0.15s ease, color 0.15s ease;
}
.office .office-actions .btn-primary {
background: var(--ol-brand);
color: var(--ol-white);
}
.office .office-actions .btn-primary:hover {
background: var(--ol-brand-dk);
}
.office .office-actions .btn-secondary {
background: transparent;
color: var(--ol-brand-dk);
border: 1px solid var(--ol-brand);
}
.office .office-actions .btn-secondary:hover {
background: rgba(31, 111, 235, 0.08);
}
/* Leaflet popup content styling */
.leaflet-popup-content .office-popup h4 {
margin: 0 0 6px;
font-size: 1rem;
}
.leaflet-popup-content .office-popup p {
margin: 0 0 6px;
font-size: 0.875rem;
line-height: 1.4;
}
.leaflet-popup-content .office-popup a {
color: var(--ol-brand-dk);
}
/* Empty / no-results state */
.offices-empty {
text-align: center;
color: var(--ol-text-muted);
padding: 40px 0;
grid-column: 1 / -1;
}
@media (max-width: 640px) {
.banner-replace {
padding: 32px 16px 24px;
}
.banner-replace .prompt h1 {
font-size: 1.5rem;
}
.selector {
min-width: 0;
width: 100%;
}
.state-list-container {
width: 100%;
}
.map-container {
height: 320px;
}
}