@import url(config.css?v=1);
@import url(filters.css?v=1);
@import url(list.css?v=1);
@import url(modal.css?v=1);
main {
    &:has(#map) + aside {
        border-left: 1px solid var(--accent);
    }    
    #map {
        height: 100%;
        .leaflet-bar {
            border: 0;
            a {
                background-color: var(--white);
                color: var(--accent);
                width: 35px;
                height: 35px;
                line-height: 35px;
                border-radius: 100%;
                box-shadow: var(--shadow);
                transition: var(--transition);
                will-change: transform;
                &:last-child {
                    border-bottom: 1px solid #CCC; /* leaflet fix */
                }
                &:hover {
                    background-color: var(--white); 
                    transform: scale(.9);
                }
                &.leaflet-disabled {
                    background-color: var(--grey-blend);
                    color: color-mix(in srgb, var(--accent) 20%, transparent);
                }
                + a {
                    margin-top: .5rem;
                }
            }
        }
        .leaflet-marker-pane .leaflet-marker-icon {
            --pin-size: .6rem;
            --pin-width: 1.5rem;
            border: none;
            &.selected .pin {
                fill: var(--pin-color-selected);
                width: var(--pin-width);
                height: auto;
                transform: translate(-50%, -100%) scale(1.5) !important;
                &.minimal {
                    content-visibility: visible;
                    border: none;
                    animation: none;
                }
                &.hidden {
                    opacity: 1;
                }
            }
            .pin {
                fill: var(--pin-color);
                width: var(--pin-size);
                height: var(--pin-size);
                transform: translate(-50%, -50%);
                transform-origin: bottom;
                will-change: transform;
                &.visible {
                    width: var(--pin-width);
                    height: auto;
                    transform: translate(-50%, -100%);
                    transition: all .25s ease;
                }
                &.minimal {
                    content-visibility: hidden;
                    border: 2px solid var(--pin-color);
                    border-radius: 100%;
                    animation: pin-pulse 2s infinite;
                }
                &.hidden {
                    display: block;
                    opacity: 0;
                }
            }
            .user-location {
                fill: var(--accent-secondary);
                width: 30px;
                transform: translate(-50%, -50%);
            }
        }
    }
    .info {
        display: flex;
        flex-direction: column;
        gap: 2rem;
        height: 100%;
        padding: var(--safe-padding);
        overflow-y: auto;
        .logo {
            align-self: flex-start;
            max-width: 300px;
        }
    }
}
aside {
    --header-height: 80px;
    flex-shrink: 0;
    position: relative;
    background-color: var(--white);
    height: 100%;
    transition: var(--transition);
    will-change: flex-basis;
    filter: drop-shadow(0 -1px 5px rgb(0 0 0 / 15%));
    z-index: 1000;    
    .toggle {
        display: none;
        position: absolute;
        background-color: var(--white);
        width: var(--taskbar-size);
        height: var(--taskbar-size);
        top: calc(0px - var(--taskbar-size));
        right: 0;
        display: grid;
        place-items: center;
        cursor: pointer;
        .icon {
            font-size: 2em;
            color: var(--accent);
        }
    }
    .page {
        position: relative;        
        height: 100%;
        overflow: hidden;
        transition: var(--transition);
        transform: translateZ(0);
        -webkit-transform: translateZ(0);
        &[data-transition-dir="right"] {
            #index,
            #location,
            #detail {
                &.slide-enter-from {
                    transform: translateX(100%);
                    opacity: 0;
                }
                &.slide-leave-to {
                    transform: translateX(-100%);
                    opacity: 0;
                }
            }
        }
        &[data-transition-dir="left"] {
            #index,
            #location,
            #detail {
                &.slide-enter-from {
                    transform: translateX(-100%);
                    opacity: 0;
                }
                &.slide-leave-to {
                    transform: translateX(100%);
                    opacity: 0;
                }
            }
        }
        #index,
        #location,
        #detail {
            display: flex;
            flex-direction: column;
            position: absolute;
            width: 100%;
            height: 100%;
            top: 0;
            left: 0;
            will-change: transform, opacity;
            -webkit-backface-visibility: hidden;
            backface-visibility: hidden;
            header {       
                flex-shrink: 0;
                display: flex;
                align-items: center;
                gap: 1rem;
                height: var(--header-height);
                padding: 0 var(--safe-padding);
                button {
                    flex-shrink: 0;
                }
            }
            .content {                
                flex-grow: 1;
                padding: 0 var(--safe-padding) var(--safe-padding);
                overflow-y: auto;
            }
        }
        #location,
        #detail {
            header .context {
                font-size: .8em;
                font-weight: 600;
                text-transform: uppercase;
            }
        }
        #index {
            header {     
                &.disabled {
                    pointer-events: none;
                    opacity: .25;
                }
                .filter {
                    position: relative;
                    font-size: 1.2em !important;
                    &:not([data-length='0'])::before {
                        transform: scale(1);
                    }
                    &::before {
                        content: attr(data-length);
                        position: absolute;
                        background-color: var(--accent-secondary);
                        color: var(--white);
	                    font-family: var(--font-family);
                        font-size: .6em;
                        font-weight: bold;
                        text-align: center;
                        line-height: 18px;
                        width: 18px;
                        height: 18px;
                        top: -5px;
                        right: -5px;
                        border-radius: 100%;
                        transform: scale(0);
                        transition: var(--transition);
                    }
                }
                .search {
                    flex: 1;
                    display: flex;
                    justify-content: space-between;
                    align-items: center;
                    gap: .5rem;
                    background-color: #FFF;
                    font-size: .9em;
                    height: calc(var(--taskbar-size) + 5px); /* because of optical effect */
                    padding: 0 .75rem;
                    border-bottom: 1px solid transparent;
                    border-radius: var(--radius);
                    box-shadow: var(--shadow);
                    transition: var(--transition);
                    &:has(input:focus) {    
                        border-color: var(--accent);
                    }
                    &:has(input:focus) .icon {   
                        color: var(--accent);
                    }
                    input {
                        background-color: transparent;
                        width: 100%;
                        height: auto;
                        border: none;
                        outline: none;
                        text-overflow: ellipsis;
                    }
                    .icon {
                        color: var(--grey-soft);
                        font-size: 1.5em;
                        transition: var(--transition);
                        &.close {
                            cursor: pointer;
                        }
                    }
                }
            }
            .filter-wrapper {
                --background: var(--grey-blend);
                --pointer-size: 20px;
                position: absolute;     
                background-color: var(--background);
                width: 100%;
                height: calc(100% - var(--header-height));
                top: var(--header-height);
                left: 0;
                clip-path: inset(0 0 100% 0);
                transition: all .25s ease;    
                will-change: clip-path;
                z-index: 1;
                &.visible {                    
                    clip-path: inset(calc(0px - var(--pointer-size)) 0 0 0);
                }
                &::before {
                    content: '';
                    position: absolute;
                    background-color: var(--background);
                    width: var(--pointer-size);
                    height: var(--pointer-size);
                    top: calc(0px - (var(--pointer-size) / 2));
                    left: calc(var(--safe-padding) + (var(--taskbar-size) / 2) - (var(--pointer-size) / 2));
                    transform: rotate(45deg);
                }  
                .filters {        
                    padding: var(--safe-padding);
                    overflow-y: auto;
                    z-index: 1;
                    .multiselect__content-wrapper {
                        background-color: var(--background);
                    }
                }             
            }
            .content {
                &:has(.scroll-to-top) {
                    display: flex;
                    flex-direction: column;
                    gap: var(--safe-padding);
                    padding-bottom: 0;
                }
                .scroll-to-top {
                    position: sticky;
                    bottom: 0;
                    margin-left: auto;
                    border-radius: var(--radius) var(--radius) 0 0;
                    transition: var(--transition);
                    opacity: 0;
                    pointer-events: none;
                    &:hover {
                        transform: none;
                    }  
                    &.visible {
                        opacity: 1;
                        pointer-events: auto;
                    }
                }   
            }
        }
        #detail .content section {
            &.info {
                .logo {
                    flex-shrink: 0;
                    width: 5rem;
                    height: 5rem;                    
                }
                .buttons {
                    max-width: max-content;
                    margin-top: 1rem;
                    button {
                        display: block;
                        width: 100%;
                        text-align: left;
                        padding: .5rem 2.5rem .5rem 1rem !important;
                        + button {
                            margin-top: .5rem;
                        }
                    }
                }
                .links .item .summary {
                    padding: 0;
                }
            }
            + section {
                margin-top: 2.5rem;
            }
            .section-title {
                --cut-width: 10px;
                --inline-padding: .75rem;
                position: relative;
                background: linear-gradient(to right, var(--grey-blend), transparent);
                color: var(--black);
                font-size: .8em;
                font-weight: 600;
                text-transform: uppercase;
                padding-block: .5rem;
                padding-inline: calc(var(--cut-width) + (var(--inline-padding) * 2)) var(--inline-padding);                
                margin-bottom: 1rem;
                border-radius: var(--radius);
                &::before {
                    content: '';
                    position: absolute;
                    display: block;
                    background-color: var(--white);
                    width: var(--cut-width);
                    height: 100%;
                    top: 0;
                    left: var(--inline-padding);
                    clip-path: polygon(5px 0, 100% 0, calc(100% - 5px) 100%, 0 100%);
                }
            }
            .description {
                font-size: .9em;
                overflow-wrap: break-word;
            }
            .fields {
                font-size: .9em;
                margin-top: 1.5rem;
                > div + div {
                    margin-top: 1.5rem;
                }
                .title {
                    font-weight: 600;
                }
                .options {
                    display: flex;
                    flex-wrap: wrap;
                    gap: .5rem;
                    margin-top: .5rem;
                    .option {
                        background-color: var(--grey-blend);
                        font-size: .8em;
                        padding: .25rem .5rem;
                        border-radius: var(--radius);
                    }
                }
            }
            .item {
                display: flex;
                align-items: center;
                gap: 1rem;
                position: relative;
                font-size: .9em;
                padding: .75rem 0;
                border-bottom: 1px solid var(--grey-blend);
                transition: var(--transition);
                will-change: transform;
                cursor: pointer;
                &.unclickable {
                    cursor: default;
                    &:hover {
                        transform: none;
                    }
                    .nav {
                        display: none;
                    }
                }
                &:hover {
                    transform: scale(1.025);
                }
                .image { 
                    flex-shrink: 0;  
                    width: 3rem;
                    height: 3rem;
                    &.is-qr {
                        background-color: var(--grey-blend);                            
                        width: 6rem;
                        height: 6rem;
                        border-radius: var(--radius);
                        padding: .75rem;
                        canvas {
                            width: 100%;
                            height: 100%;
                        }
                    } 
                    img {        
                        width: 100%;
                        height: 100%;           
                        object-fit: cover;
                    } 
                }  
                .nav {
                    color: var(--accent);
                    margin-left: auto;
                }
            }
        }
    }
}
.error-screen {
    display: grid;
    place-items: center;
    position: fixed;
    background-color: #FFF;
    font-size: 1.5em;
    text-align: center;
    inset: 0;
    padding: 1rem;
    z-index: 9999;
}