.address-autocomplete-host {
    --address-autocomplete-accent: var(--bs-primary, var(--brand-primary, #2463b5));
    --address-autocomplete-border: var(--bs-border-color, #d8dee8);
    --address-autocomplete-muted: var(--bs-secondary-color, #667085);
    --address-autocomplete-surface: var(--bs-body-bg, #fff);
    --address-autocomplete-subtle: var(--bs-tertiary-bg, #f6f8fb);

    position: relative;
}

.address-autocomplete {
    position: absolute;
    z-index: 1200;
    inset-block-start: calc(100% + 0.375rem);
    inset-inline-start: 0;
    width: 100%;
    overflow: hidden;
    color: var(--bs-body-color, #172033);
    font: inherit;
    background: var(--address-autocomplete-surface);
    border: 1px solid var(--address-autocomplete-border);
    border-radius: var(--address-autocomplete-radius, 0.375rem);
    box-shadow: 0 0.5rem 1.5rem rgba(23, 32, 51, 0.13);
}

.address-autocomplete[hidden],
.address-autocomplete__list[hidden],
.address-autocomplete__feedback[hidden],
.address-autocomplete__context[hidden],
.address-autocomplete__loading-indicator[hidden],
.address-autocomplete__selection[hidden] {
    display: none;
}

.address-autocomplete__context {
    padding: 0.75rem 1rem;
    overflow-wrap: anywhere;
    color: var(--bs-body-color, #172033);
    font-size: 0.8125rem;
    font-weight: 600;
    line-height: 1.4;
    background: var(--address-autocomplete-subtle);
    border-bottom: 1px solid var(--address-autocomplete-border);
}

.address-autocomplete__list {
    margin: 0;
    padding: 0.375rem;
    padding-inline-end: 2.25rem;
    list-style: none;
}

.address-autocomplete[data-mode='companies'] .address-autocomplete__list,
.address-autocomplete[data-mode='premises'] .address-autocomplete__list {
    max-height: min(25rem, 45vh);
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-color: var(--address-autocomplete-muted) var(--address-autocomplete-subtle);
    scrollbar-gutter: stable;
    scrollbar-width: thin;
}

.address-autocomplete[data-mode='companies'] .address-autocomplete__primary {
    white-space: normal;
    overflow-wrap: anywhere;
}

.address-autocomplete[data-mode='premises'] .address-autocomplete__list::-webkit-scrollbar {
    width: 0.625rem;
}

.address-autocomplete[data-mode='premises'] .address-autocomplete__list::-webkit-scrollbar-track {
    background: var(--address-autocomplete-subtle);
}

.address-autocomplete[data-mode='premises'] .address-autocomplete__list::-webkit-scrollbar-thumb {
    background: var(--address-autocomplete-muted);
    border: 0.1875rem solid var(--address-autocomplete-subtle);
    border-radius: 999px;
}

.address-autocomplete__option {
    display: flex;
    min-height: 3.125rem;
    padding: 0.55rem 0.75rem;
    cursor: pointer;
    border-radius: max(0.25rem, calc(var(--address-autocomplete-radius, 0.375rem) - 0.125rem));
    flex-direction: column;
    justify-content: center;
}

.address-autocomplete[data-mode='premises'] .address-autocomplete__option {
    min-height: 2.75rem;
    padding-block: 0.45rem;
}

.address-autocomplete__option + .address-autocomplete__option {
    margin-top: 0.125rem;
}

.address-autocomplete__option:hover {
    background: var(--address-autocomplete-subtle);
}

.address-autocomplete__option[aria-selected='true'] {
    color: var(--bs-primary-text-emphasis, #173f73);
    background: var(--bs-primary-bg-subtle, #edf4ff);
    outline: 2px solid var(--address-autocomplete-accent);
    outline-offset: -2px;
}

.address-autocomplete__primary {
    overflow: hidden;
    font-weight: 400;
    line-height: 1.35;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.address-autocomplete__prediction {
    font-weight: 650;
}

.address-autocomplete__historical {
    margin-top: 0.15rem;
    overflow-wrap: anywhere;
    color: var(--address-autocomplete-muted);
    font-size: 0.75rem;
    line-height: 1.35;
}

.address-autocomplete__secondary {
    display: flex;
    gap: 0.4rem;
    margin-top: 0.15rem;
    overflow: hidden;
    color: var(--address-autocomplete-muted);
    font-size: 0.8125rem;
    line-height: 1.35;
    align-items: center;
}

.address-autocomplete__secondary-location {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.address-autocomplete__quality {
    padding: 0.0625rem 0.3rem;
    color: var(--address-autocomplete-muted);
    font-size: 0.6875rem;
    font-weight: 650;
    line-height: 1.35;
    background: var(--address-autocomplete-subtle);
    border-radius: 0.25rem;
    flex: 0 0 auto;
}

.address-autocomplete__quality--exact {
    color: var(--bs-primary-text-emphasis, #173f73);
    background: var(--bs-primary-bg-subtle, #edf4ff);
}

.address-autocomplete__quality--broad {
    background: transparent;
    border: 1px solid var(--address-autocomplete-border);
}

.address-autocomplete__quality--land {
    background: transparent;
    border: 1px solid var(--address-autocomplete-border);
}

.address-autocomplete__option[aria-selected='true'] .address-autocomplete__secondary {
    color: var(--bs-primary-text-emphasis, #315f9e);
}

.address-autocomplete__feedback {
    display: flex;
    box-sizing: border-box;
    gap: 0.625rem;
    block-size: 4rem;
    padding: 1rem;
    color: var(--address-autocomplete-muted);
    line-height: 1.45;
    align-items: center;
}

.address-autocomplete[data-state='stalled'] .address-autocomplete__feedback::before {
    width: 0.875rem;
    height: 0.875rem;
    border: 2px solid var(--address-autocomplete-border);
    border-top-color: var(--address-autocomplete-accent);
    border-radius: 50%;
    content: '';
    animation: address-autocomplete-spin 700ms linear infinite;
    flex: 0 0 auto;
}

.address-autocomplete[data-state='error'] .address-autocomplete__feedback {
    color: #8a2d2d;
    background: #fff8f7;
}

.address-autocomplete__footer {
    display: flex;
    gap: 0.5rem 1rem;
    min-height: 2.75rem;
    padding: 0.55rem 0.75rem;
    align-items: center;
    justify-content: space-between;
    background: var(--address-autocomplete-subtle);
    border-top: 1px solid var(--address-autocomplete-border);
    flex-wrap: wrap;
}

.address-autocomplete__manual {
    min-height: 2rem;
    padding: 0.25rem 0;
    color: var(--bs-link-color, var(--address-autocomplete-accent));
    font: inherit;
    font-size: 0.8125rem;
    font-weight: 600;
    background: transparent;
    border: 0;
    text-align: start;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 0.18em;
}

.address-autocomplete__manual:hover {
    color: var(--bs-link-hover-color, #173f73);
}

.address-autocomplete__manual:focus-visible {
    border-radius: 0.25rem;
    outline: 2px solid var(--address-autocomplete-accent);
    outline-offset: 2px;
}

.address-autocomplete__loading-indicator {
    position: absolute;
    z-index: 1;
    inset-block-start: 1rem;
    inset-inline-end: 0.875rem;
    width: 0.875rem;
    height: 0.875rem;
    border: 2px solid var(--address-autocomplete-border);
    border-top-color: var(--address-autocomplete-accent);
    border-radius: 50%;
    animation: address-autocomplete-spin 700ms linear infinite;
    pointer-events: none;
}

.address-autocomplete__attribution {
    color: var(--address-autocomplete-muted);
    font-size: 0.75rem;
    line-height: 1.35;
    text-align: end;
}

.address-autocomplete__selection {
    display: flex;
    gap: 0.45rem;
    margin-top: 0.375rem;
    color: var(--address-autocomplete-muted);
    font-size: 0.75rem;
    line-height: 1.4;
    align-items: center;
    flex-wrap: wrap;
}

.address-autocomplete__selection::before {
    width: 0.65rem;
    height: 0.35rem;
    border-block-end: 2px solid var(--address-autocomplete-accent);
    border-inline-start: 2px solid var(--address-autocomplete-accent);
    content: '';
    transform: rotate(-45deg) translateY(-0.08rem);
    flex: 0 0 auto;
}

.address-autocomplete__status {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

@keyframes address-autocomplete-spin {
    to {
        transform: rotate(360deg);
    }
}

@media (max-width: 575.98px) {
    .address-autocomplete[data-mode='premises'] .address-autocomplete__list {
        max-height: min(50dvh, 24rem);
    }

    .address-autocomplete__footer {
        gap: 0.375rem 0.75rem;
    }

    .address-autocomplete__manual {
        width: 100%;
    }

    .address-autocomplete__attribution {
        margin-inline-start: auto;
        text-align: start;
    }
}

@media (prefers-reduced-motion: reduce) {
    .address-autocomplete[data-state='stalled'] .address-autocomplete__feedback::before,
    .address-autocomplete__loading-indicator {
        animation: none;
    }
}
