:root {
  /* Listing - Container */
  --listing--container--margin: 0;
  --listing--container--padding: 0;
  --listing--container--item_gap: 22px;
  /* Listing - Container - Filter */
  --listing--filter--background_colour: var(--dark_1, #1d42a6);
  --listing--filter--text_colour: var(--light_1, #ffffff);
  --listing--filter--padding: 22px;
  --listing--filter--font_family: 'Roboto';
  --listing--filter--font_size: 1.375rem;
  --listing--filter--font_style: normal;
  --listing--filter--line_height: 120%;
  --listing--filter--border_radius: 6px;
  /* Listing - Container - Filter - Icon */
  --listing--filter--icon--text_colour: var(--light_3, #b9d6f2);
  /* Listing - Container - Filter - Apply */
  --listing--filter--apply--background_colour: var(--dark_3, #002147);
  --listing--filter--apply--text_colour: var(--light_1, #ffffff);
  --listing--filter--apply--border_radius: 6px;
  --listing--filter--apply--padding: 22px;
  /* Listing - Container - Filter - Option */
  --listing--filter--option--text_colour: var(--dark_2, #61655f);
  /* Listing - Container - Filter - Tags */
  --listing--filter--tag--background_colour: var(--dark_1, #1d42a6);
  --listing--filter--tag--text_colour: var(--light_1, #ffffff);
  --listing--filter--tag--margin: 10px 10px 0 0;
  --listing--filter--tag--padding: 5px 10px;
  --listing--filter--tag--border_size: 1px;
  --listing--filter--tag--border_style: solid;
  --listing--filter--tag--border_colour: var(--light_1, #ffffff);
  --listing--filter--tag--border_radius: 6px;
  --listing--filter--tag--font_family: 'Roboto';
  --listing--filter--tag--font_size: 1.125rem;
  --listing--filter--tag--font_weight: 500;
  --listing--filter--tag--font_style: normal;
  --listing--filter--tag--line_height: 120%;
  /* Listing - Container - Filter - Tags - Close */
  --listing--filter--tag--close--font_size: 1.125rem;
}
/* Main styling */
.oxfcms-listing {
  margin: var(--listing--container--margin);
  padding: var(--listing--container--padding);
  /* Filters */
  form, .views-exposed-form {
    .form--inline {
      display: flex;
      flex-direction: row;
      flex-wrap: wrap;
      align-items: flex-start;
      width: 100%;
      gap: 20px;
      margin-bottom: 46px;
      .form-item {
        display: flex;
        flex: 1 0 23%;
        flex-direction: column;
        max-width: 24%;
        padding: 0;
        /* Hide native select before TomSelect initializes to prevent FOUC */
        select.tomselect {
          opacity: 0;
          position: absolute;
          pointer-events: none;
        }
        label {
          padding: var(--listing--filter--padding);
          background-color: var(--listing--filter--background_colour);
          color: var(--listing--filter--text_colour);
          font-family: var(--listing--filter--font_family);
          font-style: var(--listing--filter--font_style);
          font-size: var(--listing--filter--font_size);
          line-height: var(--listing--filter--line_height);
          border-radius: var(--listing--filter--border_radius);
          cursor: pointer;
        }
        .ts-control {
          background-color: transparent;
          border: 0;
          margin: 0;
          padding: 0;
          overflow: visible;
          cursor: pointer;
          &::before {
            content: "chevron_right";
            font-family: "Material Icons";
            position: absolute;
            top: -40px;
            right: 20px;
            font-size: 26px;
            transform: rotate(90deg);
            color: var(--listing--filter--icon--text_colour);
          }
          .item {
            color: var(--listing--filter--tag--text_colour);
            background-color: var(--listing--filter--tag--background_colour);
            margin: var(--listing--filter--tag--margin);
            padding: var(--listing--filter--tag--padding);
            font-family: var(--listing--filter--tag--font_family);
            font-size: var(--listing--filter--tag--font_size);
            font-weight: var(--listing--filter--tag--font_weight);
            font-style: var(--listing--filter--tag--font_style);
            line-height: var(--listing--filter--tag--line_height);
            border-width: var(--listing--filter--tag--border_size);
            border-style: var(--listing--filter--tag--border_style);
            border-color: var(--listing--filter--tag--border_colour);
            border-radius: var(--listing--filter--tag--border_radius);
            .remove {
              border: 0;
              padding: 0 10px;
              margin-left: 10px;
              font-size: var(--listing--filter--tag--close--font_size);
            }
          }
          input {
            min-width: unset;
            display: none !important;
          }
          .clear-button {
            color: var(--listing--filter--background_colour);
            border: 0;
            right: 10px;
            font-size: 20px;
          }
        }
        .ts-dropdown {
          .ts-dropdown-content {
            padding: 12px;
            .option {
              display: flex;
              align-items: flex-end;
              min-height: 30px;
              color: var(--listing--filter--option--text_colour);
              background-color: transparent;
              margin: 0 0 15px;
              padding: 0;
              white-space: normal;
              font-family: var(--listing--filter--tag--font_family);
              font-size: var(--listing--filter--tag--font_size);
              font-weight: var(--listing--filter--tag--font_weight);
              font-style: var(--listing--filter--tag--font_style);
              line-height: var(--listing--filter--tag--line_height);
              .tomselect-checkbox {
                flex-shrink: 0;
                margin-right: 15px;
                border-width: 1px;
                border-style: solid;
                border-color: var(--listing--filter--tag--background_colour);
                &::before {
                  content: "";
                  font-family: "Material Icons";
                }
              }
              &.selected {
                color: var(--listing--filter--tag--background_colour);
                .tomselect-checkbox {
                  &::before {
                    content: "check";
                    font-family: "Material Icons";
                    border: 0;
                    height: 100%;
                    width: 100%;
                    transform: none;
                    box-sizing: border-box;
                    padding: 2px;
                    color: var(--listing--filter--tag--text_colour);
                    background-color: var(--listing--filter--tag--background_colour);
                  }
                }
              }
              &:last-of-type {
                margin: 0;
              }
            }
          }
        }
      }
      .form-actions {
        .form-submit {
          padding: var(--listing--filter--apply--padding);
          background-color: var(--listing--filter--apply--background_colour);
          color: var(--listing--filter--apply--text_colour);
          font-family: var(--listing--filter--font_family);
          font-style: var(--listing--filter--font_style);
          font-size: var(--listing--filter--font_size);
          line-height: var(--listing--filter--line_height);
          border-radius: var(--listing--filter--apply--border_radius);
          border: 0;
          height: auto;
          cursor: pointer;
        }
      }
    }
  }
  /* Grid */
  .views-view-responsive-grid {
    --views-responsive-grid--layout-gap: var(--listing--container--item_gap);
    column-gap: var(--listing--container--item_gap);
    row-gap: 66px;
    align-items: stretch;
    /* Make all wrapper divs flex containers that stretch to full height */
    .views-view-responsive-grid__item {
      display: flex;
      flex-direction: column;
      align-self: stretch;
      .views-view-responsive-grid__item-inner {
        display: flex;
        flex-direction: column;
        flex: 1;
        min-height: 100%;
        .oxfcms-listing-item {
          display: flex;
          flex-direction: column;
          flex: 1;
          position: relative;
          .listing-item-listing-link {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: 1;
            .screen-reader-only {
              clip: rect(1px, 1px, 1px, 1px);
              clip-path: inset(50%);
              height: 1px;
              width: 1px;
              margin: -1px;
              overflow: hidden;
              padding: 0;
              position: absolute;
            }
          }
          .oxfcms-button {
            a {
              position: relative;
              z-index: 2;
            }
          }
        }
      }
    }
  }
}
/* Breakpoint - Small Desktop */
@media (width < 1280px) {
  :root {
    --listing--filter--font_size: 1.25rem;
    --listing--filter--tag--font_size: 1rem;
    --listing--filter--tag--close--font_size: 1rem;
  }
  .oxfcms-listing {
    --listing--container--item_gap: 10px;
    /* Filters */
    form {
      .form--inline {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: flex-start;
        width: 100%;
        column-gap: 20px;
        row-gap: 0;

        .form-item {
          flex: 1 0 48%;
          max-width: 50%;
        }
      }
    }
    /* Grid responsive layout for medium screens */
    .views-view-responsive-grid {
      --views-responsive-grid--gap-count: calc(var(--views-responsive-grid--column-count) - 1);
      --views-responsive-grid--total-gap-width: calc(var(--views-responsive-grid--gap-count) * var(--views-responsive-grid--layout-gap));
      --views-responsive-grid-item--max-width: calc((100% - var(--views-responsive-grid--total-gap-width)) / var(--views-responsive-grid--column-count));
      --views-responsive-grid-item--calculated-min-width: min(100%, 100px);
      grid-template-columns: repeat(auto-fill, minmax(max(var(--views-responsive-grid-item--calculated-min-width), var(--views-responsive-grid-item--max-width)), 1fr));
    }
  }
}
/* Breakpoint - Tablet */
@media (width < 768px) {
  :root {
    --listing--filter--font_size: 1.125rem;
    --listing--filter--tag--font_size: 0.875rem;
    --listing--filter--tag--close--font_size: 0.875rem;
  }
  .oxfcms-listing {
    --listing--container--item_gap: 10px;
    --listing--pagination-item-container--padding: 16px;
    --listing--pagination-item-container--border_size: 1px;
    --listing--pagination-item-container--border_style: solid;
    --listing--pagination-item-container--border_colour: var(--dark_2);
    margin: var(--listing--container--margin);
    padding: var(--listing--container--padding);
    /* Filters */
    form {
      .form--inline {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: flex-start;
        width: 100%;
        column-gap: 20px;
        row-gap: 0;

        .form-item {
          flex: 1 0 100%;
          max-width: 100%;
        }
      }
    }
    /* Grid responsive layout for mobile */
    .views-view-responsive-grid {
      --views-responsive-grid--gap-count: 1;
      --views-responsive-grid--total-gap-width: 10px;
      --views-responsive-grid-item--max-width: calc((100% - 10px));
      --views-responsive-grid-item--calculated-min-width: min(100%, 100px);
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(max(var(--views-responsive-grid-item--calculated-min-width), var(--views-responsive-grid-item--max-width)), 1fr));
    }
  }
}

/* No results message styling */
.no-listings-results, .loading-overlay {
  font-family: var(--core--body-font_family);
}
