.apartment-toolbar {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem 1.5rem;
    margin: 2rem 0 3rem;
}

.apartment-filters {
    margin-inline: .7rem;
    display: flex;
    flex: 1 1 auto;
    flex-wrap: nowrap;
    gap: 1rem 1.25rem;
}

.view-switch {
    display: inline-grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .25rem;
    padding: .25rem;
    margin-left: auto;
    border-radius: 999px;
    background: var(--col-bw-200);
    border: 1px solid rgb(18 32 51 / .06);

    label {
        cursor: pointer;
        display: block;
        border-radius: 999px;
        min-width: 2.5rem;
        color: var(--color-ink);
        transition: background-color .2s ease, color .2s ease;

        &.active {
            background: var(--col-bw-000);
            color: var(--color-ink);
        }

        input {
            position: absolute;
            opacity: 0;
            pointer-events: none;
        }

        span {
            display: grid;
            place-items: center;
            min-width: 2.5rem;
            min-height: 2.5rem;
            color: inherit;

            svg {
                width: 1.2rem;
                height: 1.2rem;
            }
        }
    }
}

#apartment-results-shell[data-view="grid"] .portfolio-map-view,
#apartment-results-shell[data-view="map"] .portfolio-grid-view {
    display: none;
}

.portfolio-map-view {
    display: grid;
    gap: 1.5rem;
}

.portfolio-map {
    min-height: 42rem;
}

.switch-filter {
    display: inline-flex;
    align-items: center;
    gap: .75rem;
    cursor: pointer;
    font-weight: 500;

    input {
        position: absolute;
        opacity: 0;
        pointer-events: none;
    }

    span:last-child {
        white-space: nowrap;
    }

    .switch-filter-track {
        position: relative;
        width: 3.25rem;
        height: 2rem;
        border-radius: 999px;
        background: var(--col-bw-300);
        transition: background-color .2s ease;

        &::after {
            content: "";
            position: absolute;
            top: .2rem;
            left: .2rem;
            width: 1.6rem;
            height: 1.6rem;
            border-radius: 50%;
            background: var(--col-000);
            transition: transform .2s ease;
            box-shadow: 0 .1rem .3rem rgba(0, 0, 0, .2);
        }
    }

    input:checked + .switch-filter-track {
        background: var(--col-600);
    }

    input:checked + .switch-filter-track::after {
        transform: translateX(1.25rem);
    }

    input:focus-visible + .switch-filter-track {
        outline: 2px solid var(--col-600);
        outline-offset: 2px;
    }
}

.state-section + .state-section {
    margin-top: 7rem;
}

.portfolio-grid {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr));
    gap: var(--gap-size);
    padding: 0;

    li {
        list-style: none;
    }
}

article.portfolio-item {
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: start;
    transition: transform 0.3s ease;
    border-radius: var(--border-radius-s);
    background: linear-gradient(var(--col-bw-000), var(--col-bw-100));
    border: 1px solid var(--col-bw-200);
    box-shadow: var(--shadow-m);

    &:hover {
        transform: scale(1.03);
    }

    .image {
        position: relative;
        padding: 0;

        img {
            aspect-ratio: 1.5;
            width: 100%;
            object-fit: cover;
            filter: brightness(1.06) contrast(0.88) saturate(0.78) sepia(0.10) hue-rotate(-6deg);
        }


        .bookmark-apartment {
            position: absolute;
            top: -1.8rem;
            right: -2.1rem;
            width: 7rem;
            height: max-content;
            transform-origin: bottom left;
            padding: .3rem 1rem;
            background-color: var(--col-600);
            color: var(--col-000);
            font-weight: 600;
            text-align: center;
            transform: rotate(45deg);
            font-size: 1rem;
            letter-spacing: .1rem;
        }

        .bookmark-parking {
            position: absolute;
            top: -2.9rem;
            right: -4.5rem;
            width: 13rem;
            height: max-content;
            transform-origin: bottom left;
            padding: .3rem 1rem;
            background-color: var(--col-bw-100);
            color: var(--col-600);
            font-weight: 600;
            text-align: center;
            transform: rotate(45deg);
            font-size: 1rem;
            letter-spacing: .1rem;
        }

        .area-text {
            position: absolute;
            bottom: .5rem;
            left: .5rem;
            font-family: var(--font-mono), monospace;
            background-color: var(--col-000);
            height: max-content;
            padding: .3rem .55rem;
            font-size: .875rem;
            opacity: .8;
        }
    }

    div {
        padding: 1rem;
        height: 100%;
        display: flex;
        flex-direction: column;

        h3 {
            margin-top: 0;
            margin-bottom: 0.3rem;
            line-height: 1.3;
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 1;
            overflow: hidden;
            font-size: 1.2rem;
        }


        .portfolio-address {
            justify-self: start;
            margin-top: 0;
            margin-bottom: 0;
            color: var(--color-muted);
            line-height: 1.3;
            min-height: calc(1.3em * 2);
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 2;
            overflow: hidden;
            white-space: pre-line;
        }

        .portfolio-info {
            font-weight: 500;
            color: var(--color-ink);
            min-height: calc(1.3em * 3);
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 3;
            overflow: hidden;
        }

        .portfolio-buttons {
            margin-top: auto;
            flex-direction: row;
            display: flex;
            padding: 2rem 0 1rem;
            height: 2rem;
            gap: 1rem;
            align-items: center;
            justify-content: space-between;

            .button-primary {
                width: fit-content;
            }
        }
    }
}

.leaflet-popup.portfolio-map-popup {
    .leaflet-popup-content-wrapper {
        padding: 0;
        border-radius: var(--border-radius-s);
        overflow: hidden;
    }

    .leaflet-popup-content {
        margin: 0;
        width: min(22rem, calc(100vw - 4rem)) !important;
    }

    .leaflet-popup-tip {
        background: var(--col-bw-000);
    }

    .portfolio-item {
        &:hover {
            transform: none;
        }
    }
}

@media (max-width: 48rem) {
    .apartment-toolbar {
        gap: .75rem 1rem;
    }

    .apartment-filters {
        gap: .75rem 1rem;
    }

    .view-switch {
        margin-left: auto;
        transform: scale(.9);
        transform-origin: right center;
    }

    .switch-filter {
        gap: .5rem;
        font-size: .95rem;
    }

    .portfolio-map {
        min-height: 32rem;
    }
}

@media (max-width: 36rem) {
    .apartment-toolbar {
        gap: .5rem;
    }

    .apartment-filters {
        gap: .5rem .75rem;
    }

    .switch-filter {
        font-size: .875rem;
    }

    .view-switch {
        transform: scale(.82);
    }
}