* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}


body {
  font-family:
    Arial,
    Helvetica,
    sans-serif;

  background: #111;

  color: #fff;

  line-height: 1.5;
}


.container {
  width:
    min(1200px, 92%);

  margin:
    0 auto;
}


/* =========================================
   HEADER
========================================= */

.header {
  background: #000;

  border-bottom:
    2px solid #e10600;

  padding:
    40px 0;

  margin-bottom:
    30px;
}


.header h1 {
  font-size:
    42px;

  margin-bottom:
    5px;
}


.header p {
  color:
    #aaa;
}



/* =========================================
   FILTERS
========================================= */

.filters {

  background:
    #1b1b1b;

  padding:
    25px;

  border-radius:
    10px;

  display:
    grid;

  grid-template-columns:
    repeat(3, 1fr);

  gap:
    20px;

  margin-bottom:
    20px;
}


.filter {

  position:
    relative;

  display:
    flex;

  flex-direction:
    column;

  gap:
    7px;

}


.filter label {

  font-size:
    14px;

  font-weight:
    bold;

  color:
    #ddd;

}


.filter input,
.filter select {

  width:
    100%;

  padding:
    11px 12px;

  border:
    1px solid #444;

  border-radius:
    6px;

  background:
    #111;

  color:
    #fff;

  font-size:
    15px;

}


.filter input:focus,
.filter select:focus {

  outline:
    none;

  border-color:
    #e10600;

}



/* =========================================
   SUGGESTIONS
========================================= */

.suggestions {

  display:
    none;

  position:
    absolute;

  top:
    calc(100% + 2px);

  left:
    0;

  right:
    0;

  z-index:
    1000;

  background:
    #222;

  border:
    1px solid #444;

  border-radius:
    0 0 6px 6px;

  max-height:
    220px;

  overflow-y:
    auto;

  box-shadow:
    0 8px 20px
    rgba(0,0,0,.5);

}


.suggestion-item {

  padding:
    10px 12px;

  cursor:
    pointer;

  color:
    #ddd;

}


.suggestion-item:hover {

  background:
    #e10600;

  color:
    #fff;

}



/* =========================================
   ACTIONS
========================================= */

.filter-actions {

  display:
    flex;

  justify-content:
    space-between;

  align-items:
    center;

  margin-bottom:
    25px;

}


#clearFilters {

  background:
    #e10600;

  color:
    #fff;

  border:
    none;

  border-radius:
    6px;

  padding:
    11px 18px;

  cursor:
    pointer;

  font-weight:
    bold;

}


#clearFilters:hover {

  background:
    #ff1a14;

}


#resultCount {

  color:
    #aaa;

}



/* =========================================
   SHOWS
========================================= */

.shows {

  display:
    grid;

  grid-template-columns:
    repeat(3, 1fr);

  gap:
    20px;

  padding-bottom:
    50px;

}


.show-card {

  background:
    #1b1b1b;

  border-radius:
    10px;

  overflow:
    hidden;

  border:
    1px solid #333;

  transition:
    transform .2s,
    border-color .2s;

}


.show-card:hover {

  transform:
    translateY(-3px);

  border-color:
    #e10600;

}


.show-content {

  padding:
    20px;

}


.show-date {

  display:
    inline-block;

  background:
    #e10600;

  padding:
    5px 9px;

  border-radius:
    5px;

  font-size:
    13px;

  font-weight:
    bold;

  margin-bottom:
    12px;

}


.show-card h2 {

  font-size:
    22px;

  margin-bottom:
    10px;

}


.show-info {

  color:
    #bbb;

  margin-bottom:
    6px;

}


.show-bands {

  margin-top:
    15px;

  padding-top:
    15px;

  border-top:
    1px solid #333;

}


.show-bands strong {

  color:
    #fff;

}


.instagram {

  display:
    inline-block;

  margin-top:
    12px;

  color:
    #ff5b5b;

  text-decoration:
    none;

}


.instagram:hover {

  text-decoration:
    underline;

}



/* =========================================
   LOADING
========================================= */

#loading {

  text-align:
    center;

  padding:
    50px;

  color:
    #aaa;

}



/* =========================================
   NO RESULTS
========================================= */

.no-results {

  text-align:
    center;

  padding:
    50px;

  color:
    #aaa;

}


.hidden {

  display:
    none;

}



/* =========================================
   RESPONSIVE
========================================= */

@media (max-width: 900px) {

  .filters {

    grid-template-columns:
      repeat(2, 1fr);

  }


  .shows {

    grid-template-columns:
      repeat(2, 1fr);

  }

}



@media (max-width: 600px) {

  .header h1 {

    font-size:
      32px;

  }


  .filters {

    grid-template-columns:
      1fr;

    padding:
      18px;

  }


  .shows {

    grid-template-columns:
      1fr;

  }


  .filter-actions {

    flex-direction:
      column;

    align-items:
      flex-start;

    gap:
      15px;

  }

}


/* =========================================
   DATE RANGE
========================================= */

.date-filter {
  position: relative;
}


.date-range-button {

  width: 100%;

  min-height: 43px;

  padding: 11px 12px;

  border:
    1px solid #444;

  border-radius:
    6px;

  background:
    #111;

  color:
    #fff;

  font-size:
    15px;

  text-align:
    left;

  cursor:
    pointer;

}


.date-range-button:hover {

  border-color:
    #e10600;

}



/* =========================================
   DATE PICKER
========================================= */

.date-picker {

  position:
    absolute;

  z-index:
    2000;

  top:
    calc(100% + 8px);

  left:
    0;

  width:
    330px;

  padding:
    15px;

  background:
    #1b1b1b;

  border:
    1px solid #444;

  border-radius:
    10px;

  box-shadow:
    0 12px 35px
    rgba(0, 0, 0, 0.6);

}


.date-picker.hidden {

  display:
    none;

}



/* =========================================
   CALENDAR HEADER
========================================= */

.calendar-header {

  display:
    flex;

  justify-content:
    space-between;

  align-items:
    center;

  margin-bottom:
    15px;

}


.calendar-header strong {

  font-size:
    16px;

}


.calendar-nav {

  width:
    34px;

  height:
    34px;

  border:
    none;

  border-radius:
    6px;

  background:
    #333;

  color:
    #fff;

  font-size:
    24px;

  line-height:
    1;

  cursor:
    pointer;

}


.calendar-nav:hover {

  background:
    #e10600;

}



/* =========================================
   CALENDAR
========================================= */

.calendar {

  display:
    grid;

  grid-template-columns:
    repeat(7, 1fr);

  gap:
    4px;

}


.calendar-weekday {

  text-align:
    center;

  color:
    #888;

  font-size:
    12px;

  font-weight:
    bold;

  padding:
    6px 0;

}


.calendar-empty {

  height:
    38px;

}


.calendar-day {

  height:
    38px;

  border:
    none;

  border-radius:
    5px;

  background:
    transparent;

  color:
    #fff;

  cursor:
    pointer;

  font-size:
    14px;

}


.calendar-day:hover {

  background:
    #444;

}


.calendar-day.today {

  border:
    1px solid #e10600;

}


.calendar-day.in-range {

  background:
    rgba(225, 6, 0, 0.35);

  border-radius:
    0;

}


.calendar-day.selected-start,
.calendar-day.selected-end {

  background:
    #e10600;

  color:
    #fff;

  font-weight:
    bold;

}


.calendar-day.selected-start {

  border-radius:
    5px 0 0 5px;

}


.calendar-day.selected-end {

  border-radius:
    0 5px 5px 0;

}


.calendar-day.selected-start.selected-end {

  border-radius:
    5px;

}



/* =========================================
   CALENDAR FOOTER
========================================= */

.calendar-footer {

  display:
    flex;

  justify-content:
    space-between;

  align-items:
    center;

  margin-top:
    15px;

  padding-top:
    12px;

  border-top:
    1px solid #333;

}


#dateSelectionStatus {

  color:
    #aaa;

  font-size:
    12px;

}


#clearDateRange {

  border:
    none;

  background:
    transparent;

  color:
    #e10600;

  cursor:
    pointer;

  font-size:
    13px;

}


#clearDateRange:hover {

  text-decoration:
    underline;

}



/* =========================================
   MOBILE CALENDAR
========================================= */

@media (max-width: 600px) {

  .date-picker {

    position:
      fixed;

    left:
      50%;

    top:
      50%;

    transform:
      translate(-50%, -50%);

    width:
      min(330px, 92vw);

  }

}




/* =========================================
   PRICE FILTER
========================================= */

.price-filter {
  min-width: 0;
}


.price-inputs {

  display:
    grid;

  grid-template-columns:
    1fr 1fr;

  gap:
    10px;

  margin-bottom:
    15px;

}


.price-inputs > div {

  display:
    flex;

  flex-direction:
    column;

  gap:
    4px;

}


.price-inputs span {

  font-size:
    11px;

  color:
    #888;

}


.price-inputs input {

  width:
    100%;

  padding:
    9px;

}



/* =========================================
   PRICE SLIDER
========================================= */

.price-slider {
  position: relative;
  width: 100%;
  height: 32px;
  margin: 2px 0 0;
}


/* Background bar */

.price-slider::before {
  content: "";
  position: absolute;

  left: 9px;
  right: 9px;

  top: 50%;
  transform: translateY(-50%);

  height: 5px;

  background: #444;
  border-radius: 5px;

  z-index: 1;
}


/* Selected range */

.slider-track {
  position: absolute;

  left: 9px;
  width: 0;

  top: 50%;
  transform: translateY(-50%);

  height: 5px;

  background: #e10600;
  border-radius: 5px;

  z-index: 2;

  pointer-events: none;
}


/* Both sliders */

.price-slider input[type="range"] {
  position: absolute;

  left: 0;
  top: 0;

  width: 100%;
  height: 32px;

  margin: 0;

  pointer-events: none;

  appearance: none;
  -webkit-appearance: none;

  background: transparent;

  z-index: 3;
}


/* Chrome / Safari */

.price-slider input[type="range"]::-webkit-slider-runnable-track {
  height: 5px;
  background: transparent;
  border: none;
}


.price-slider input[type="range"]::-webkit-slider-thumb {
  appearance: none;
  -webkit-appearance: none;

  width: 18px;
  height: 18px;

  margin-top: -6.5px;

  border-radius: 50%;

  background: #e10600;

  border: 2px solid #fff;

  cursor: pointer;

  pointer-events: auto;
}


/* Firefox */

.price-slider input[type="range"]::-moz-range-track {
  height: 5px;
  background: transparent;
  border: none;
}


.price-slider input[type="range"]::-moz-range-progress {
  background: transparent;
}


.price-slider input[type="range"]::-moz-range-thumb {
  width: 18px;
  height: 18px;

  border-radius: 50%;

  background: #e10600;

  border: 2px solid #fff;

  cursor: pointer;

  pointer-events: auto;
}




/* =========================================
   PRICE LABELS
========================================= */

.price-labels {

  display:
    flex;

  justify-content:
    space-between;

  color:
    #aaa;

  font-size:
    12px;

}



/* =========================================
   SHOW PRICE
========================================= */

/* =========================================
   SHOW PRICE
========================================= */

.show-price {
  display: block;
  width: 100%;
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid #333;

  color: #ff5b5b;
  font-size: 16px;
  font-weight: bold;
  line-height: 1.4;

  visibility: visible;
  opacity: 1;
}




@media (max-width: 600px) {

  .show-price {
    display: block;
    width: 100%;
    margin-top: 12px;
    padding-top: 10px;

    color: #ff5b5b;
    font-size: 16px;
    font-weight: bold;

    visibility: visible;
    opacity: 1;
  }

}


/* =========================================
   GOOGLE FORM LINK
========================================= */

.venue-registration,
.venue-registration:visited,
.venue-registration:hover,
.venue-registration:active {
  display: inline-block;

  margin-top: 18px;

  padding: 11px 18px;

  background-color: #e10600 !important;

  color: #ffffff !important;

  text-decoration: none !important;

  border: 1px solid #e10600;

  border-radius: 6px;

  font-family:
    Arial,
    Helvetica,
    sans-serif;

  font-size: 14px;

  font-weight: bold;

  line-height: 1.4;

  cursor: pointer;

  -webkit-appearance: none;
  appearance: none;

  -webkit-tap-highlight-color: transparent;

  transition:
    background-color .2s,
    transform .2s;
}


.venue-registration:hover {
  background-color: #ff1a14 !important;

  border-color: #ff1a14;

  transform:
    translateY(-2px);
}


/* =========================================
   MOBILE
========================================= */

@media (max-width: 600px) {

  .venue-registration,
  .venue-registration:visited,
  .venue-registration:hover,
  .venue-registration:active {

    display: block;

    width: 100%;

    box-sizing: border-box;

    text-align: center;

    background-color: #e10600 !important;

    color: #ffffff !important;

    text-decoration: none !important;

    border: 1px solid #e10600;

  }

}


/* testing below */

.venue-registration {

  display: inline-block;

  margin-top: 18px;

  padding: 11px 18px;

  background: #e10600 !important;

  color: #fff !important;

  -webkit-text-fill-color: #fff !important;

  text-decoration: none !important;

  border: 1px solid #e10600 !important;

  border-radius: 6px;

  font-family: Arial, Helvetica, sans-serif;

  font-size: 14px;

  font-weight: bold;

  line-height: 1.4;

  text-align: center;

  -webkit-appearance: none;

  appearance: none;

}


@media (max-width: 600px) {

  .venue-registration {

    display: block;

    width: 100%;

  }

}


/* =========================================
   CREDITS
========================================= */

.credits {
  width: 100%;
  max-width: 100%;
  margin: 30px 0 40px;
  padding: 25px 0;

  border-top: 1px solid #333;

  color: #999;
  font-size: 14px;
  line-height: 1.6;

  overflow-wrap: break-word;
  word-wrap: break-word;
}

.credits h2 {
  margin: 0 0 15px;

  color: #ddd;
  font-size: 20px;
}

.credits p {
  margin: 0 0 15px;
}

.credits strong {
  color: #ddd;
}

.credits em {
  color: #bbb;
}

.credits a {
  display: inline-block;

  max-width: 100%;

  color: #ff5b5b;
  font-weight: bold;
  text-decoration: none;

  overflow-wrap: break-word;
}

.credits a:hover {
  text-decoration: underline;
}


@media (max-width: 600px) {

  .credits {
    width: 100%;
    max-width: 100%;

    margin: 20px 0 35px;
    padding: 20px 0;

    font-size: 14px;
    line-height: 1.6;

    overflow: hidden;
  }

  .credits h2 {
    font-size: 19px;
  }

  .credits a {
    display: block;

    width: 100%;
    max-width: 100%;

    padding: 11px 12px;

    border: 1px solid #444;
    border-radius: 6px;

    background: #1b1b1b;

    text-align: center;

    overflow-wrap: break-word;
  }

}



/* =========================================
   INSTAGRAM CONTACT
========================================= */

.instagram-contact {
  display: inline-block;

  width: auto;
  max-width: 100%;

  margin-top: 10px;
  padding: 11px 18px;

  box-sizing: border-box;

  background: #1b1b1b;

  color: #ff5b5b !important;

  border: 1px solid #444;
  border-radius: 6px;

  text-decoration: none !important;

  font-family: Arial, Helvetica, sans-serif;
  font-size: 14px;
  font-weight: bold;
  line-height: 1.4;

  text-align: center;

  -webkit-appearance: none;
  appearance: none;

  -webkit-text-fill-color: #ff5b5b;

  cursor: pointer;

  transition:
    background-color .2s,
    border-color .2s,
    transform .2s;
}

.instagram-contact:hover {
  background: #222;

  border-color: #ff5b5b;

  color: #ff7777 !important;

  -webkit-text-fill-color: #ff7777;

  transform: translateY(-2px);
}


/* =========================================
   INSTAGRAM CONTACT - MOBILE
========================================= */

@media (max-width: 600px) {

  .instagram-contact {
    display: block;

    width: 100%;
    max-width: 100%;

    margin-top: 10px;

    padding: 11px 12px;

    box-sizing: border-box;

    text-align: center;

    white-space: normal;

    overflow-wrap: break-word;
  }

}
