.map-root {
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100dvh;
}

.control-panel {
    position: fixed;
    z-index: 1000;
    top: max(12px, env(safe-area-inset-top));
    left: max(12px, env(safe-area-inset-left));
    width: min(390px, calc(100vw - 24px));
    max-height: calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 14px;
    overflow: hidden;
}

.control-panel.is-collapsed .panel-body {
    display: none;
}

.panel-body {
    min-height: 0;
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 12px;
}

.filter-grid,
.panel-actions,
.result-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.results {
    min-height: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 10px;
    overflow: auto;
}

.result-card {
    width: 100%;
    text-align: left;
}

.filter-chip.is-active,
.scope-button.is-active,
.utility-button.is-active {
    font-weight: 700;
}

@media only screen and (max-width: 980px) {
    .control-panel {
        top: auto;
        right: 0;
        bottom: 0;
        left: 0;
        width: auto;
        max-height: min(70dvh, 560px);
        overflow-y: auto;
        overflow-x: hidden;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
    }

    .panel-body {
        min-height: auto;
        flex: 0 0 auto;
    }

    .results {
        min-height: auto;
        flex: 0 0 auto;
        overflow: visible;
    }
}
