.bsfct-finder {




    --bsfct-blue: #214f97;




    --bsfct-blue-dark: #173c78;




    --bsfct-blue-soft: #eef4ff;




    --bsfct-text: #1b2430;




    --bsfct-muted: #6e7b8f;




    --bsfct-border: #d8e1ec;




    --bsfct-border-strong: #b8c8de;




    --bsfct-surface: #ffffff;




    --bsfct-bg: #f4f7fb;




    --bsfct-shadow: 0 10px 24px rgba(12, 33, 66, 0.08);




    color: var(--bsfct-text);




    font-family: Arial, Helvetica, sans-serif;




}









.bsfct-search-panel,




.bsfct-results {




    background: var(--bsfct-surface);




    border: 1px solid var(--bsfct-border);




    border-radius: 18px;




    box-shadow: var(--bsfct-shadow);




}









.bsfct-search-panel {




    padding: 24px;




    margin-bottom: 24px;




}









.bsfct-search-panel__title {




    margin: 0 0 8px;




    font-size: 30px;




    line-height: 1.15;




}









.bsfct-search-panel__description {




    margin: 0 0 20px;




    color: var(--bsfct-muted);




    font-size: 16px;




}









.bsfct-search-form__grid {




    display: grid;




    grid-template-columns: repeat(3, minmax(0, 1fr)) auto;




    gap: 16px;




    align-items: end;




}









.bsfct-search-form__stack {




    display: grid;




    gap: 20px;




}









.bsfct-field__label,




.bsfct-filter-group__title {




    display: block;




    margin-bottom: 8px;




    font-size: 14px;




    font-weight: 700;




    color: var(--bsfct-text);




}









.bsfct-filter-group {




    margin: 0;




    padding: 0;




    border: 0;




}









.bsfct-filter-group__help {




    margin: 8px 0 0;




    color: var(--bsfct-muted);




    font-size: 13px;




    line-height: 1.45;




}









.bsfct-field__control {




    width: 100%;




    min-height: 48px;




    padding: 12px 14px;




    border: 1px solid var(--bsfct-border);




    border-radius: 12px;




    background: #fff;




    font-size: 16px;




    box-sizing: border-box;




}









.bsfct-field__control:focus {




    outline: 2px solid rgba(33, 79, 151, 0.15);




    border-color: var(--bsfct-blue);




}









.bsfct-program-options {




    display: grid;




    gap: 12px;




}









.bsfct-program-option {




    display: block;




    cursor: pointer;




}









.bsfct-program-option__input {




    position: absolute;




    opacity: 0;




    pointer-events: none;




}









.bsfct-program-option__content {




    display: block;




    padding: 14px 16px 14px 46px;




    border: 1px solid var(--bsfct-border);




    border-radius: 16px;




    background: #fff;




    position: relative;




    transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;




}









.bsfct-program-option__body {




    display: grid;




    grid-template-columns: 40px minmax(0, 1fr);




    gap: 12px;




    align-items: center;




}









.bsfct-program-option__icon-wrap {




    width: 40px;




    height: 40px;




    display: inline-flex;




    align-items: center;




    justify-content: center;




    flex-shrink: 0;




}









.bsfct-program-option__icon {




    display: block;




    width: 36px;




    height: 36px;




    object-fit: contain;




}









.bsfct-program-option__text {




    min-width: 0;




}









.bsfct-program-option__content::before {




    content: '';




    position: absolute;




    top: 16px;




    left: 16px;




    width: 20px;




    height: 20px;




    border: 2px solid var(--bsfct-border-strong);




    border-radius: 50%;




    background: #fff;




    box-sizing: border-box;




    transition: border-color 0.2s ease, background 0.2s ease;




}









.bsfct-program-option__input:focus + .bsfct-program-option__content,




.bsfct-program-option__input:checked + .bsfct-program-option__content {




    border-color: var(--bsfct-blue);




    box-shadow: 0 0 0 3px rgba(33, 79, 151, 0.12);




}









.bsfct-program-option__input:checked + .bsfct-program-option__content {




    background: var(--bsfct-blue-soft);




}









.bsfct-program-option__input:checked + .bsfct-program-option__content::before {




    border-color: var(--bsfct-blue);




    background: radial-gradient(circle at center, var(--bsfct-blue) 0 4px, #fff 4px 100%);




}









.bsfct-program-option__title {




    display: block;




    font-size: 22px;




    font-weight: 700;




    line-height: 1.15;




    color: var(--bsfct-text);




}









.bsfct-program-option__description {




    display: block;




    color: var(--bsfct-muted);




    font-size: 14px;




    line-height: 1.35;




}









.bsfct-search-form__actions {




    display: flex;




}









.bsfct-search-form__secondary {




    margin-top: -8px;




}









.bsfct-button {




    display: inline-flex;




    align-items: center;




    justify-content: center;




    min-height: 50px;




    padding: 0 18px;




    border: 0;




    border-radius: 12px;




    text-decoration: none;




    font-weight: 700;




    cursor: pointer;




    transition: background-color 0.2s ease, transform 0.2s ease, border-color 0.2s ease, color 0.2s ease;




}









.bsfct-button--primary {




    background: #4a7fe5;




    color: #fff;




}









.bsfct-button--primary:hover,




.bsfct-button--primary:focus {




    background: #3c70d3;




    color: #fff;




}









.bsfct-button--secondary {




    background: #fff;




    color: var(--bsfct-blue);




    border: 1px solid var(--bsfct-border);




}









.bsfct-button--secondary:hover,




.bsfct-button--secondary:focus {




    border-color: var(--bsfct-blue);




    color: var(--bsfct-blue-dark);




}









.bsfct-button.is-disabled {




    background: #c9d6e7;




    color: #54657d;




    cursor: not-allowed;




}









.bsfct-results {




    padding: 24px;




    background: var(--bsfct-bg);




}









.bsfct-results__layout {




    display: grid;




    grid-template-columns: 320px minmax(0, 1fr);




    gap: 24px;




    align-items: start;




}









.bsfct-results__sidebar {




    position: sticky;




    top: 24px;




}









.bsfct-search-panel--sidebar {




    margin-bottom: 0;




    padding: 0;




    background: transparent;




    border: 0;




    box-shadow: none;




}









.bsfct-search-panel--sidebar .bsfct-search-panel__copy,




.bsfct-search-panel--sidebar .bsfct-search-form {




    background: #fff;




    border: 1px solid var(--bsfct-border);




    border-radius: 18px;




    box-shadow: var(--bsfct-shadow);




}









.bsfct-search-panel--sidebar .bsfct-search-panel__copy {




    padding: 22px 22px 0;




    border-bottom-left-radius: 0;




    border-bottom-right-radius: 0;




    border-bottom: 0;




    box-shadow: none;




}









.bsfct-search-panel--sidebar .bsfct-search-panel__title {




    margin-bottom: 6px;




    font-size: 24px;




}









.bsfct-search-panel--sidebar .bsfct-search-panel__description {




    margin-bottom: 0;




    font-size: 15px;




}









.bsfct-search-form--stacked {




    padding: 20px 22px 22px;




    border-top-left-radius: 0;




    border-top-right-radius: 0;




}









.bsfct-search-form--stacked .bsfct-search-form__actions,




.bsfct-search-form--stacked .bsfct-search-form__actions .bsfct-button,




.bsfct-search-form--stacked .bsfct-search-form__secondary .bsfct-button {




    width: 100%;




}









.bsfct-results__main {




    min-width: 0;




}









.bsfct-results__toolbar {




    display: flex;




    align-items: center;




    justify-content: space-between;




    gap: 12px;




    margin-bottom: 18px;




}









.bsfct-results__view-pill,




.bsfct-results__count-pill {




    display: inline-flex;




    align-items: center;




    min-height: 48px;




    padding: 0 18px;




    border-radius: 12px;




    font-weight: 700;




}









.bsfct-results__view-pill {




    background: var(--bsfct-blue-soft);




    color: var(--bsfct-blue);




    border-bottom: 4px solid var(--bsfct-blue);




}









.bsfct-results__count-pill {




    background: #fff;




    border: 1px solid var(--bsfct-border);




    color: var(--bsfct-muted);




}









.bsfct-results__header {




    margin-bottom: 18px;




}









.bsfct-results__title {




    margin: 0 0 6px;




    font-size: 24px;




}









.bsfct-results__summary {




    margin: 0;




    color: var(--bsfct-muted);




}









.bsfct-results__list {




    display: grid;




    gap: 16px;




}









.bsfct-card {




    display: grid;




    grid-template-columns: 56px minmax(0, 1fr);




    gap: 18px;




    background: #fff;




    border: 1px solid var(--bsfct-border);




    border-radius: 18px;




    padding: 20px;




}









.bsfct-card__rank {




    width: 56px;




    height: 56px;




    border-radius: 50%;




    background: #e8f0fb;




    color: var(--bsfct-blue);




    display: flex;




    align-items: center;




    justify-content: center;




    font-size: 22px;




    font-weight: 700;




}









.bsfct-card__title {




    margin: 0 0 6px;




    font-size: 22px;




    line-height: 1.25;




}









.bsfct-card__subtitle,




.bsfct-card__meta,




.bsfct-card__address p {




    margin: 0 0 8px;




}









.bsfct-card__subtitle {




    color: var(--bsfct-blue);




    font-weight: 700;




}









.bsfct-card__meta,




.bsfct-card__address {




    color: var(--bsfct-text);




}









.bsfct-card__address {




    margin-top: 12px;




}









.bsfct-badges {




    display: flex;




    flex-wrap: wrap;




    gap: 8px;




    list-style: none;




    margin: 14px 0 0;




    padding: 0;




}









.bsfct-badge {




    padding: 8px 12px;




    background: var(--bsfct-blue-soft);




    color: var(--bsfct-blue);




    border-radius: 999px;




    font-size: 13px;




    font-weight: 700;




}









.bsfct-card__actions {




    margin-top: 18px;




}









.bsfct-notice,




.bsfct-empty-state {




    border-radius: 14px;




    padding: 16px 18px;




    margin-bottom: 18px;




}









.bsfct-notice--error {




    background: #fff2f1;




    border: 1px solid #f1c6c3;




    color: #8f231d;




}









.bsfct-empty-state {




    background: #fff;




    border: 1px dashed var(--bsfct-border);




    color: var(--bsfct-muted);




}









.bsfct-mobile-filters__toggle {

    display: none;

    width: 100%;

    margin-top: 18px;

    padding: 14px 16px;

    align-items: center;

    justify-content: space-between;

    gap: 12px;

    border: 1px solid var(--bsfct-border);

    border-radius: 14px;

    background: var(--bsfct-bg);

    color: var(--bsfct-text);

    cursor: pointer;

}



.bsfct-mobile-filters__toggle-copy {

    display: flex;

    flex-direction: column;

    align-items: flex-start;

    gap: 4px;

    min-width: 0;

}



.bsfct-mobile-filters__toggle-title {

    font-size: 14px;

    font-weight: 700;

}



.bsfct-mobile-filters__toggle-summary {

    color: var(--bsfct-muted);

    font-size: 13px;

    line-height: 1.35;

    text-align: left;

}



.bsfct-mobile-filters__toggle-icon {

    width: 12px;

    height: 12px;

    border-right: 2px solid currentColor;

    border-bottom: 2px solid currentColor;

    transform: rotate(45deg);

    transition: transform 0.2s ease;

    flex-shrink: 0;

    margin-right: 4px;

}



.bsfct-search-panel--sidebar.is-mobile-collapsed .bsfct-mobile-filters__toggle-icon {

    transform: rotate(-45deg);

}



.bsfct-mobile-filters__content[hidden] {

    display: none;

}



@media (max-width: 1024px) {




    .bsfct-results__layout {




        grid-template-columns: 1fr;




    }









    .bsfct-results__sidebar {




        position: static;




    }




}









@media (max-width: 768px) {
    .bsfct-search-panel--sidebar .bsfct-mobile-filters__toggle {
        display: flex;
    }

    .bsfct-search-panel--sidebar .bsfct-search-panel__copy {
        border-bottom-left-radius: 18px;
        border-bottom-right-radius: 18px;
        padding-bottom: 22px;
    }

    .bsfct-search-panel--sidebar:not(.is-mobile-collapsed) .bsfct-search-panel__copy {
        border-bottom-left-radius: 0;
        border-bottom-right-radius: 0;
        padding-bottom: 0;
    }
}

@media (max-width: 768px) {




    .bsfct-search-form__grid,




    .bsfct-card {




        grid-template-columns: 1fr;




    }









    .bsfct-search-form__actions,




    .bsfct-search-form__actions .bsfct-button,




    .bsfct-card__actions .bsfct-button {




        width: 100%;




    }









    .bsfct-results__toolbar {




        flex-direction: column;




        align-items: stretch;




    }









    .bsfct-results__view-pill,




    .bsfct-results__count-pill {




        justify-content: center;




    }









    .bsfct-card__rank {




        margin-bottom: 8px;




    }









    .bsfct-program-option__body {




        grid-template-columns: 34px minmax(0, 1fr);




        gap: 10px;




    }









    .bsfct-program-option__icon-wrap {




        width: 34px;




        height: 34px;




    }









    .bsfct-program-option__icon {




        width: 30px;




        height: 30px;




    }









    .bsfct-program-option__title {




        font-size: 20px;




    }




}






/* test.5: richer map result cards and overlapping ZIP-centroid pin support */
.bsfct-finder .leaflet-popup-content-wrapper {
    padding: 0;
    border-radius: 22px;
    background: #f1efe8;
    box-shadow: 0 14px 34px rgba(11, 23, 48, 0.24);
    overflow: hidden;
}

.bsfct-finder .leaflet-popup-content {
    margin: 0;
    width: auto !important;
    min-width: 290px;
}

.bsfct-finder .leaflet-popup-tip {
    background: #f1efe8;
}

.bsfct-finder .leaflet-popup-close-button {
    top: 7px;
    right: 8px;
    width: 28px;
    height: 28px;
    line-height: 26px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.9);
    color: #0b1730;
    font-size: 20px;
    z-index: 4;
}

.bsfct-finder .bsfct-map-popup {
    min-width: 290px;
    color: #232a36;
    font-family: Arial, Helvetica, sans-serif;
}

.bsfct-finder .bsfct-map-popup__top {
    position: relative;
    display: grid;
    grid-template-columns: 32px minmax(0, 1fr) auto;
    gap: 10px;
    align-items: start;
    padding: 16px 42px 10px 14px;
}

.bsfct-finder .bsfct-map-popup__rank {
    width: 28px;
    height: 28px;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #214f97;
    color: #ffffff;
    font-size: 14px;
    font-weight: 700;
    line-height: 1;
}

.bsfct-finder .bsfct-map-popup__heading {
    min-width: 0;
}

.bsfct-finder .bsfct-map-popup__title {
    margin: 0 0 3px;
    color: #232a36;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.2;
}

.bsfct-finder .bsfct-map-popup__subtitle {
    margin: 0;
    color: #214f97;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.3;
}

.bsfct-finder .bsfct-map-popup__distance {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 58px;
    min-height: 34px;
    margin-right: -34px;
    padding: 0 10px;
    border-radius: 0 14px 0 14px;
    background: #0b1730;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
}

.bsfct-finder .bsfct-map-popup__body {
    padding: 0 14px 15px 56px;
}

.bsfct-finder .bsfct-map-popup__meta,
.bsfct-finder .bsfct-map-popup__address,
.bsfct-finder .bsfct-map-popup__address p {
    margin: 0 0 5px;
    color: #303845;
    font-size: 12px;
    line-height: 1.35;
}

.bsfct-finder .bsfct-map-popup__badges {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    list-style: none;
    margin: 8px 0 0;
    padding: 0;
}

.bsfct-finder .bsfct-map-popup__badges li {
    padding: 4px 7px;
    border-radius: 999px;
    background: #eef4ff;
    color: #214f97;
    font-size: 10px;
    font-weight: 700;
}

.bsfct-finder .bsfct-map-popup__actions {
    margin-top: 11px;
}

.bsfct-finder .bsfct-map-popup__button {
    display: inline-flex;
    min-height: 36px;
    padding: 0 16px;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    background: #bf2f32;
    color: #ffffff !important;
    text-decoration: none !important;
    font-size: 13px;
    font-weight: 700;
    line-height: 1;
}

.bsfct-finder .bsfct-map-popup__button:hover,
.bsfct-finder .bsfct-map-popup__button:focus {
    background: #a8282b;
    color: #ffffff !important;
}

.bsfct-finder .bsfct-map-pin-icon {
    overflow: visible;
}
