/* ========================================================================== 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; } }