
.search {
  position: relative;
  display: grid;
  grid-template-columns: 320px 2fr;
  grid-template-rows: auto 1fr;
  grid-template-areas: 
    "availableFilters results"
    "appliedFilters results";
  width: 100%;
  gap: 18px;
}

@media only screen and (max-width: 680px) {
  .search {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto;
    grid-template-areas: 
      "availableFilters"
      "appliedFilters"
      "results";
  }
}

/* applied filters */
.search-appliedFilters {
  grid-area: appliedFilters;
}

/* available filters */
.search-availableFilters {
  grid-area: availableFilters;
}
  .search-filterHeading {
    display: flex;
    align-items: center;
    height: 40px;
    padding: 10px;

    background-color: #899da1;
    color: #fff;
    /* border: 1px solid #899da1; */

    cursor: pointer;
  }
    .search-filterTitle {
      flex: auto;
      font-size: 16px;
      white-space: nowrap;
    }
    .search-filterShowHide {
      flex: none;
      border: none;
      background: none;

      & .search-plus,
      .search-minus {
        color: #fff;
        font-size: 24px;
        /* font-weight: bold; */
        font-family: monospace;
      }
    }
      .search-expanded .search-plus {
        display: none;
      }
      .search-minus {
        display: none;
        .search-expanded & {
          display: inline;
        }
      }
  .search-filterSubHeading {
    padding: 10px 0px 0px 0px;
    font-size: 15px;
    font-weight: bold;
  }

  .search-filterContainer {
    max-height: 0;
    overflow: hidden;
    padding: 0px;
    opacity: 0;
    border: 1px solid #899da1;
    transition: 
      opacity .10s,
      max-height .10s .10s,
      padding .10s .10s;

    .search-expanded & {
      /* When expanded, the div should try to fit it's entire content plus 
      100px (for padding), but it should not expand larger than 400px
      This was implemented to make the collapse transition smooth... */
      max-height: 400px;
      max-height: calc-size(max-content, min(size + 100px, 400px));
      overflow: auto;
      padding: 10px;
      opacity: 1;
      transition: 
        max-height .10s,
        padding .10s,
        opacity .10s .10s;
    }

    & ul {
      padding-inline-start: 0px;
    }
    & li {
      list-style: none;
    }
  }

/* results */
.search-results {
  grid-area: results;
  display: flex;
  flex-direction: column;
}
  .search-results-heading {
    flex: none;
    display: flex;
    align-items: center;
    padding-bottom: 10px;
    gap: 18px;

    & label {
      font-weight: 600;
    }
  }
    .search-results-heading-results {
      flex: auto;
      display: flex;
      gap: 12px;
      flex-wrap: wrap;

      & div {
        white-space: nowrap;
      }
    }
    .search-results-heading-sortBy {
      flex: auto;
      display: flex;
      flex-wrap: wrap;
      gap: 12px;

      & a {
        cursor: pointer;
      }
    }
    .search-results-heading-layoutButton {
      flex: none;
      font-size: 24px !important;
    }
  .search-results-heading2 {
    flex: none;
  }
  .search-results-list {
    flex: auto;
  }
  .search-results-grid {
    flex: auto;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    grid-template-columns: repeat(auto-fill, minmax(min(200px, 100%), 1fr)); 
    gap: 10px;
  }
    .search-results-list .search-results-product {
      display: grid;
      grid-template-columns: 1fr 1fr 1fr;
      grid-template-rows: auto;
      grid-template-areas: 
        "productHeading productHeading productHeading"
        "productIcon productDetails productPrice";
      width: 100%;
      padding: 10px 0;
      gap: 10px;

      transition: 200ms;
    }
    .search-results-grid .search-results-product {
      display: grid;
      grid-template-columns: 1fr;
      grid-template-rows: auto;
      grid-template-areas: 
        "productIcon"
        "productHeading"
        "productPrice";
      width: 100%;
      gap: 10px;

      transition: 200ms;
    }
      .search-results-productHeading {
        grid-area: productHeading;

        /* padding: 10px 0; */
        font-size: 20px;
        font-weight: bold;
      }
      .search-results-productIcon {
        grid-area: productIcon;

        & img {
          min-height: 100px;
          min-width: 100px;
          max-width: 100%;
          max-height: 100%;
        }
      }
      .search-results-productDetails {
        grid-area: productDetails;

        .search-results-grid & {
          display: none;
        }
      }
        .search-results-productDetails-title {
          grid-area: productDetails;
          font-size: 18px;
          font-weight: bold;
          padding-bottom: 10px;
        }
      .search-results-productPrice {
        grid-area: productPrice;

        .search-results-grid & {
          align-self: end;
        }
      }
        .search-results-productPrice-price {
          font-size: 18px;
          font-weight: bold;
          padding-bottom: 10px;
        }
        .search-results-productPrice-MSRP {
          font-weight: bold;
          text-decoration: line-through;
          padding-bottom: 10px;
        }
        .search-results-productLink {
          display: inline-block;
          width: 100%;
          font-size: 16px;
        }

@media only screen and (max-width: 960px) {
  .search-results-list .search-results-product {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto;
    grid-template-areas: 
      "productHeading productHeading"
      "productIcon productDetails"
      "productIcon productPrice";
    width: 100%;
    padding: 10px 0;
    gap: 10px;
  }
}

/* Search button */
.search-button {
  margin: 10px 0;
}

/* Checkbox */
.search-checkbox {
  display: flex;
  align-items: center;
  padding: 5px;

  & input {
    flex: none;
  }
  & label {
    flex: auto;
    margin-left: 6px;
  }
}

/* Checkbox */
.search-filterInput {
  display: flex;
  align-items: center;
  padding: 5px;

  & label {
    flex: none;
  }
  & input {
    flex: auto;
    margin-left: 6px;
  }
}


/* Dual Range */
.search-dualRange {
  display: flex;
  flex-direction: column;
}
  .search-dualRange-ranges {
    position: relative;
    min-height: 50px;
  }
    .search-dualRange-rangeLow, 
    .search-dualRange-rangeHigh {
      position: absolute;
      top: 20px;
      height: 3px;
      width: 100%;
      background-color: #C6C6C6;
      -webkit-appearance: none;
      appearance: none;
      pointer-events: none;
    }
    .search-dualRange-rangeLow::-webkit-slider-thumb, 
    .search-dualRange-rangeHigh::-webkit-slider-thumb {
      pointer-events: all;
      cursor: pointer;
    }
    .search-dualRange-rangeLow::-moz-range-thumb, 
    .search-dualRange-rangeHigh::-moz-range-thumb {
      pointer-events: all;
      cursor: pointer;
    }
    .search-dualRange-rangeLow {
      top: 21.5px;
      height: 0;
      z-index: 1;
    }
  .search-dualRange-inputs {
    position: relative;
    display: flex;
    justify-content: space-between;
  }
    .search-dualRange-inputLow, 
    .search-dualRange-inputHigh {
      max-width: 48%;

      & input {
        width: 100%;
      }
    }