@font-face {
  font-family: 'Caxton BT';
  src: url('font/CaxtonBT-Book.woff2') format('woff2'),
       url('font/CaxtonBT-Book.woff') format('woff');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

:root {
  --ink: #8a8a86;
  --ink-dark: #656560;
  --paper: #fff;
  --pad: clamp(18px, 2.2vw, 36px);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: 'Caxton BT', Georgia, serif;
  font-size: 12px;
  line-height: 1.2;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

a { color: inherit; text-decoration: none; }
a:hover, a:focus-visible { color: var(--ink-dark); }

.site-header {
  width: 100%;
  min-height: 56vh;
  padding: 28px var(--pad) 28px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  position: relative;
  z-index: 20;
}

.social-icons {
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: center;
  margin-bottom: 18px;
}

.social-icons a {
  width: 13px;
  height: 13px;
  display: grid;
  place-items: center;
  opacity: .68;
  transition: opacity 180ms ease, transform 180ms ease;
}
.social-icons a:hover,
.social-icons a:focus-visible { opacity: 1; transform: translateY(-1px); }
.social-icons svg { width: 100%; height: 100%; fill: currentColor; }

.logo {
  display: block;
  width: clamp(210px, 31vw, 455px);
}
.logo img { display: block; width: 100%; height: auto; }

.primary-nav {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  text-transform: lowercase;
  letter-spacing: .02em;
}

.primary-nav {
  gap: 22px;
  margin-top: 22px;
  font-size: 15px;
}

.primary-nav a { transition: opacity 180ms ease; }
.primary-nav a:hover { opacity: .55; }

main { position: relative; }
.gallery {
  position: relative;
  height: 9500px;
  width: 100%;
  margin-top: -4vh;
}

.media-item {
  position: absolute;
  left: var(--x);
  top: var(--y);
  width: var(--w);
  margin: 0;
  transform: translate3d(0, 0, 0);
  will-change: transform;
  contain: layout paint;
  mix-blend-mode: multiply;
}

.media-item img,
.media-item video {
  display: block;
  width: 100%;
  height: auto;
  border: 0;
  background: #f7f7f5;
}

.video-item {
  cursor: pointer;
  outline: none;
}
.video-item::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.12);
  opacity: 0;
  pointer-events: none;
  transition: opacity 180ms ease;
}
.video-item:hover::after,
.video-item:focus-visible::after { opacity: 1; }
.video-item video {
  transition: filter 180ms ease, transform 180ms ease;
}
.video-item:hover video,
.video-item:focus-visible video {
  filter: brightness(.84);
}

.play-mark {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 34px;
  height: 34px;
  transform: translate(-50%, -50%) scale(.95);
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.72);
  background: rgba(0,0,0,.18);
  display: grid;
  place-items: center;
  font-size: 12px;
  line-height: 1;
  color: rgba(255,255,255,.96);
  opacity: 0;
  pointer-events: none;
  transition: opacity 180ms ease, transform 180ms ease;
}
.video-item:hover .play-mark,
.video-item:focus-visible .play-mark {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}

.nav-anchor {
  position: absolute;
  left: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
}
#tour-dates { top: 30%; }
#sign-up { top: 58%; }
#store { top: 82%; }

.site-footer {
  min-height: 220px;
  padding: 50px var(--pad) 32px;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  font-size: 10px;
  opacity: .72;
}

.lightbox {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: grid;
  place-items: center;
  padding: clamp(18px, 4vw, 60px);
  background: rgba(255,255,255,.94);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 220ms ease, visibility 220ms ease;
}
.lightbox.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}
.lightbox-inner {
  width: min(1040px, 92vw);
  aspect-ratio: 16 / 9;
  background: #000;
  transform: translateY(6px);
  transition: transform 220ms ease;
}
.lightbox.is-open .lightbox-inner { transform: none; }
.lightbox iframe { width: 100%; height: 100%; border: 0; display: block; }
.lightbox-close {
  position: absolute;
  top: 20px;
  right: 22px;
  padding: 5px 0;
  border: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-size: 11px;
  cursor: pointer;
}
body.lightbox-open { overflow: hidden; }

@media (max-width: 760px) {
  .site-header {
    min-height: 50vh;
    padding-top: 24px;
    padding-bottom: 18px;
  }
  .logo { width: min(72vw, 330px); }
  .primary-nav { gap: 18px; margin-top: 18px; font-size: 15px; }

  .gallery {
    height: 7900px;
    margin-top: 0;
  }
  .media-item {
    top: var(--ym);
    width: var(--mw);
    max-width: 72vw;
  }

  /* Keep the deliberately scattered feel without allowing wide items to escape. */
  .media-item:nth-child(3n) { left: 7%; }
  .media-item:nth-child(3n + 1) { left: auto; right: 7%; }
  .media-item:nth-child(3n + 2) { left: 27%; }

  .site-footer { min-height: 150px; }
  .lightbox { padding: 16px; }
  .lightbox-inner { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .media-item { transform: none !important; }
  .social-icons a,
  .lightbox,
  .lightbox-inner { transition: none; }
}


/* Minimal menu lightboxes */
.content-modal {
  position: fixed;
  inset: 0;
  z-index: 120;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(18px, 4vw, 54px);
  background: #eeeeee;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 180ms ease, visibility 180ms ease;
}

.content-modal.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.content-modal-panel {
  position: relative;
  width: min(760px, 92vw);
  max-height: min(82vh, 820px);
  overflow: auto;
  padding: 48px 40px 34px;
  background: transparent;
  color: #7d7d79;
  font-family: 'Caxton BT', Georgia, serif;
  font-size: 12px;
  line-height: 1.35;
  -webkit-overflow-scrolling: touch;
}

.signup-modal-panel {
  width: min(430px, 92vw);
  max-height: none;
  overflow: visible;
  padding: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.signup-modal-panel .content-modal-close {
  position: fixed;
  top: 28px;
  right: 32px;
}

.content-modal-title {
  margin: 0 0 32px;
  color: #777773;
  font-family: 'Caxton BT', Georgia, serif;
  font-size: 18px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: .02em;
  text-align: center;
  text-transform: lowercase;
}

.content-modal-close {
  position: absolute;
  top: 14px;
  right: 16px;
  padding: 4px 0;
  border: 0;
  background: transparent;
  color: #9a9a95;
  font-family: 'Caxton BT', Georgia, serif;
  font-size: 10px;
  line-height: 1;
  text-transform: lowercase;
  cursor: pointer;
}

.content-modal-close:hover,
.content-modal-close:focus-visible {
  color: #656560;
}

body.content-modal-open {
  overflow: hidden;
}

#signup-modal {
  align-items: center;
}

.tour-widget-wrap,
.signup-widget-wrap {
  width: 100%;
  margin: 0 auto;
}

.signup-widget-wrap {
  max-width: 350px;
}

.signup-widget-wrap iframe {
  display: block;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 350px !important;
  height: 235px !important;
  min-height: 0 !important;
  margin: 0 auto;
  border: 0;
}

/* Bandsintown: deliberately restrained and lowercase. */
.bit-follow-section-wrapper, .bit-play-my-city-wrapper, .bit-nav-bar-container, .bit-logo-link {
    display: none !important;
}
.tour-widget-wrap,
.tour-widget-wrap * {
  font-family: 'Caxton BT', Georgia, serif !important;
  text-transform: lowercase !important;
  letter-spacing: .01em !important;
    text-align: center;
}

.tour-widget-wrap .bit-widget,
.tour-widget-wrap .bit-widget-container,
.tour-widget-wrap .bit-event,
.tour-widget-wrap .bit-event-list-title,
.tour-widget-wrap .bit-follow-section,
.tour-widget-wrap .bit-play-my-city-wrapper {
  background: transparent !important;
  color: #7d7d79 !important;
}

.tour-widget-wrap .bit-widget,
.tour-widget-wrap .bit-widget-container {
  font-size: 12px !important;
}

.tour-widget-wrap a,
.tour-widget-wrap button,
.tour-widget-wrap .bit-button,
.tour-widget-wrap [class*="button"] {
  color: #777773 !important;
  background: transparent !important;
  border-color: #c9c9c5 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  font-weight: 400 !important;
}

.tour-widget-wrap a {
    text-decoration: underline;
}

.tour-widget-wrap a:hover,
.tour-widget-wrap button:hover,
.tour-widget-wrap .bit-button:hover,
.tour-widget-wrap [class*="button"]:hover {
  color: #5f5f5b !important;
  border-color: #8f8f8a !important;
}

.tour-widget-wrap .bit-event,
.tour-widget-wrap [class*="event"] {
  border-color: #e6e6e2 !important;
}

.tour-widget-wrap svg,
.tour-widget-wrap svg * {
  fill: #9b9b96 !important;
  color: #9b9b96 !important;
}

.bit-widget .bit-event, .bit-widget .bit-event:hover {
    border: none !important;
}

.bit-widget .bit-event:hover {
    background: rgba(0,0,0,0.02) !important;
}

@media (max-width: 760px) {
  .content-modal {
    padding: 12px;
    align-items: flex-start;
  }
  .content-modal-panel {
    width: 100%;
    max-height: calc(100vh - 24px);
    margin-top: 0;
    padding: 46px 18px 26px;
  }
    
    
  .content-modal-title {
    margin-bottom: 24px;
    font-size: 18px;
  }
  #tour-modal,
  #signup-modal {
    align-items: center;
  }

  .tour-modal-panel,
  .signup-modal-panel {
    max-height: none;
    margin-top: 0;
    padding: 0;
  }
  .tour-modal-panel .content-modal-close,
  .signup-modal-panel .content-modal-close {
    position: fixed !important;
    top: max(18px, env(safe-area-inset-top)) !important;
    right: max(18px, env(safe-area-inset-right)) !important;
    margin: 0 !important;
    z-index: 9999;
  }
  .signup-widget-wrap iframe {
    height: 260px !important;
    min-height: 0 !important;
  }
}
