h1 {
    margin-block: 0.5rem;
}

#header {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.5rem;
}

#header > div {
    display: flex;
    flex-direction: row;
    gap: 0.5rem;
}

#basket-button {
    width: 1.75rem;
    aspect-ratio: 1;
    background-color: transparent;
    background-image: url("../icons/basket.svg");
    background-repeat: no-repeat;
    background-size: 100%;
    background-position: 50% 50%;
}

#add-button {
    position: fixed;
    bottom: 2rem;
    right: 1rem;
    width: 4rem;
    aspect-ratio: 1;
    border-radius: 50%;
    border: none;
    background-image: url("../icons/plus.svg");
    background-repeat: no-repeat;
    background-size: 50%;
    background-position: 50% 50%;
}

#search-bar,
#sorting-input {
    width: 100%;
}

#search-container {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 0.25rem;
    align-items: center;
}

#search-bar-parent {
    position: relative;
}

#search-bar-parent::after {
    content: "";
    position: absolute;
    right: 0.5rem;
    top: 25%;
    height: 50%;
    aspect-ratio: 1;
    background-image: url("../icons/search.svg");
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
    pointer-events: none;
}

#search-filters-checkbox {
    appearance: none;
    width: 2rem;
    height: 2rem;
    margin: 0;
    background-image: url("../icons/filter.svg");
    background-repeat: no-repeat;
    background-size: 80%;
    background-position: center;
    border: none;
    border-radius: 0.25rem;
    background-color: transparent;
}

#search-filters-checkbox:checked::after {
    content: "";
    display: none;
}

#sort-filter-container {
    display: none;
    flex-direction: column;
    gap: 0.6rem;
}

#sorting-container {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    gap: 1rem;
    margin-top: 0.25rem;
}

#sorting-container > label {
    text-wrap: nowrap;
}

#filter-container {
    display: flex;
    flex-direction: row;
    gap: 0.25rem;
    align-items: center;
}

#container {
    width: 100%;
    margin-block: 1rem;
}

#books-grid {
    width: 100%;
    height: 100%;
    display: grid;
    gap: 0.65rem;
}

/* .book width + total body horizontal padding */
@media (min-width: calc(10rem + 2rem)) {
    #books-grid {
        grid-template-columns: 1fr;
    }
}

/* .book width + total body horizontal padding + single gap */
@media (min-width: calc(20rem + 2rem + 0.65rem)) {
    #books-grid {
        grid-template-columns: 1fr 1fr;
    }
}

/* .book width + total body horizontal padding + double gap */
@media (min-width: calc(30rem + 2rem + calc(0.65rem * 2))) {
    #books-grid {
        grid-template-columns: 1fr 1fr 1fr;
    }
}

@media (min-width: calc(40rem + 2rem + calc(0.65rem * 3))) {
    #books-grid {
        grid-template-columns: 1fr 1fr 1fr 1fr;
    }
}

@media (min-width: calc(50rem + 2rem + calc(0.65rem * 4))) {
    #books-grid {
        grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
    }
}

@media (min-width: calc(60rem + 2rem + calc(0.65rem * 5))) {
    #books-grid {
        grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
    }
}

@media (min-width: calc(70rem + 2rem + calc(0.65rem * 6))) {
    #books-grid {
        grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
    }
}

@media (min-width: calc(80rem + 2rem + calc(0.65rem * 7))) {
    #books-grid {
        grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
    }
}

@media (min-width: calc(90rem + 2rem + calc(0.65rem * 8))) {
    #books-grid {
        grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
    }
}

.book {
    background-color: lightgray;
    border-radius: 0.75rem;
    width: 10rem;
    aspect-ratio: 1 / 1.46;
    justify-self: center;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    color: whitesmoke;
    font-size: 1.1em;
    font-weight: 500;
    position: relative;
}

.book > h5 {
    position: absolute;
    left: 0.375rem;
    bottom: 0.375rem;
    margin: 0;
    padding: 0.125rem;
    border-radius: 0.25rem;
    max-width: 65%;
    text-overflow: ellipsis;
    overflow-x: hidden;
    text-wrap: nowrap;
    text-shadow: 0px 0px 4px black;
    backdrop-filter: blur(8px);
}

.book-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border-radius: inherit;
    pointer-events: none;
}

.book-rating-element {
    position: absolute;
    right: 0.375rem;
    bottom: 0.5rem;
    font-size: 0.75rem;
    padding: 0.125rem;
    border-radius: 0.25rem;
    backdrop-filter: blur(8px);
    text-shadow: 0px 0px 4px black;
}

.book-rating-element::before {
    content: "";
    width: 1rem;
    aspect-ratio: 1;
    position: absolute;
    right: 125%;
    background-image: url("../icons/star-filled.svg");
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
}

@media (prefers-color-scheme: light) {
    #add-button {
        background-color: white;
        box-shadow: 0px 0px 4px 0px #ccc;
    }

    #search-filters-checkbox:checked {
        background-color: #ececec;
    }
}

@media (prefers-color-scheme: dark) {
    #add-button {
        background-color: #222;
        box-shadow: 0px 0px 4px 0px #444;
    }

    #search-filters-checkbox:checked {
        background-color: #101010;
    }
}