/* V23 — keep the header; make party selection and ticket status immediate. */
:root {
  --party-paper: #f4f4ef;
  --party-ink: #1d1f20;
  --party-muted: #5d6265;
  --party-line: #c5c9c9;
}
body { background: var(--party-paper); color: var(--party-ink); }
html { scroll-padding-top: 78px; }
html:has(#tickets), html:has(#partys) { scroll-behavior: auto; }
.section, .light, .gallery-intro { background: var(--party-paper); color: var(--party-ink); }
.section h2, .home-upcoming h2, .archive-cover h2, .gallery-intro h1,
.location-card-caption h2 { font-family: 'DM Sans', Arial, sans-serif; font-weight: 600; }
.section h2 em, .home-upcoming h2 em, .archive-cover h2 em, .gallery-intro h1 em,
.location-card-caption h2 em {
  font-family: inherit;
  font-style: normal;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  text-transform: uppercase;
}
.section h2, .gallery-intro h1 { text-transform: uppercase; }
.detail-copy p, .section-head p, .light .section-head p,
.gallery-intro p, .location-card-count { color: var(--party-muted); }
.detail-copy h2 { font-size: clamp(32px, 3.8vw, 54px); line-height: 1.05; }
.detail-copy p { font-size: 16px; max-width: 57ch; }
.format-page .section { padding-block: 60px; }
.format-page .section-head { margin-bottom: 30px; }
.format-page .section-head h2 { font-size: 32px; }
.format-page .gallery { grid-template-columns: repeat(3, 1fr); gap: 18px; }
.format-page .gallery .photo-link img { aspect-ratio: 4 / 3; object-fit: cover; }
.format-page .special-intro ~ .section .gallery { grid-template-columns: repeat(2, 1fr); }

/* A compact shared lineup replaces the oversized format posters. */
.home-upcoming, .party-list-section {
  background: var(--party-paper);
  color: var(--party-ink);
  padding: 64px var(--gutter) 72px;
  --muted: var(--party-muted);
}
.home-upcoming .home-events-head, .party-list-head {
  max-width: 1440px;
  margin: 0 auto 35px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 35px;
}
.home-upcoming .home-events-head h2, .party-list-head h2 {
  font-size: clamp(32px, 3.8vw, 54px);
  line-height: 1.05;
  font-weight: 600;
  text-transform: uppercase;
  color: var(--party-ink);
}
.home-upcoming .home-events-head p, .party-list-head p {
  color: var(--party-muted);
  font-size: 14px;
  max-width: 31ch;
}
.party-list { max-width: 1440px; margin-inline: auto; border-top: 1px solid var(--party-ink); }
.party-row {
  display: grid;
  grid-template-columns: 180px minmax(0,1fr) auto;
  align-items: center;
  gap: clamp(25px, 3.5vw, 55px);
  padding-block: 25px;
  border-bottom: 1px solid var(--party-line);
}
.party-row:last-child { border-bottom: 0; padding-bottom: 0; }
.party-poster { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; }
.party-copy { min-width: 0; }
.party-copy h2, .party-copy h3 { font-size: clamp(25px, 2.8vw, 40px); font-weight: 600; line-height: 1.08; }
.party-format { color: var(--party-muted); font-size: 12px; margin-top: 12px; }
.party-meta { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-top: 20px; font-size: 11px; font-weight: 500; text-transform: uppercase; letter-spacing: .04em; }
.party-action { display: flex; flex-direction: column; align-items: flex-end; gap: 11px; }
.party-sale-status { font-size: 12px; color: var(--party-muted); }
.party-cta {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  min-height: 48px;
  padding: 12px 18px;
  color: var(--color-page);
  background: var(--color-accent);
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .03em;
  white-space: nowrap;
  transition: background .2s;
}
.party-cta .icon { width: 20px; height: 20px; }
.party-row:hover .party-cta { background: var(--color-accent-hover); }
.party-row:focus-visible, .home-upcoming .party-row:focus-visible { outline-color: var(--color-accent); }
.home-upcoming ::selection { background: var(--color-accent); color: var(--color-page); }
.party-list-section { scroll-margin-top: 0; }

/* An event link lands here with the selected party and its ticket state in view. */
.ticket-section { padding-block: 55px; scroll-margin-top: 0; }
.ticket-layout { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(280px, .75fr); gap: clamp(35px, 6vw, 90px); align-items: start; }
.ticket-overview h2 { font-size: clamp(32px, 4vw, 56px); line-height: 1.05; font-weight: 600; }
.ticket-overview > p { font-size: 16px; line-height: 1.65; max-width: 52ch; margin-top: 22px; color: var(--party-muted); }
.ticket-meta { display: flex; flex-wrap: wrap; gap: 18px 40px; margin: 28px 0 0; }
.ticket-meta div { display: flex; flex-direction: column; gap: 8px; }
.ticket-meta dt { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--party-muted); }
.ticket-meta dd { margin: 0; font-size: 17px; font-weight: 500; }
.ticket-overview .back { margin-top: 25px; font-size: 10px; }
.ticket-panel { padding: 28px; background: var(--party-ink); color: var(--party-paper); }
.ticket-panel h3 { font-size: 24px; line-height: 1.1; font-weight: 600; }
.ticket-panel .ticket-sale-state { margin-top: 24px; font-size: 18px; font-weight: 500; }
.ticket-panel .ticket-sale-note { margin-top: 15px; font-size: 14px; line-height: 1.6; color: #c6cbcd; }
.ticket-panel .other-parties { display: inline-flex; align-items: center; gap: 18px; min-height: 44px; margin-top: 23px; font-size: 11px; text-transform: uppercase; border-bottom: 1px solid currentColor; }
.ticket-panel :focus-visible { outline-color: var(--party-paper); }
.ticket-panel ::selection { background: var(--party-paper); color: var(--party-ink); }
.faq-section { padding-block: 55px; background: #e9ebe6; }
.faq-section .section-head { margin-bottom: 25px; }
.faq-section .section-head h2 { font-size: 32px; }
.faq-list { border-top-color: var(--party-line); }
.faq-list details { border-bottom-color: var(--party-line); }
.faq-list summary { font-size: 20px; padding-block: 21px; }
.faq-list p { color: var(--party-muted); }

.home-page .archive-cover { min-height: 340px; height: 40svh; max-height: 430px; padding-block: 35px 30px; }
.home-page .archive-cover-title h2 { font-family: 'DM Sans', Arial, sans-serif; font-size: 42px; line-height: 1; font-weight: 600; }
.gallery-intro { padding-bottom: 42px; }
.gallery-intro h1 { font-size: clamp(48px, 5.4vw, 76px); }
.gallery-intro h1 em { color: var(--party-ink); }
.location-card-caption h2 { font-size: 30px; }
.location-card-count { font-size: 11px; }
.site-footer.editorial-footer { --muted: #bbc0c2; --line: rgba(244,244,239,.24); background: var(--party-ink); color: var(--party-paper); }

@media (max-width: 900px) {
  .party-row { grid-template-columns: 128px minmax(0,1fr); gap: 12px 25px; }
  .party-poster { grid-row: span 2; aspect-ratio: 1; }
  .party-action { grid-column: 2; align-items: flex-start; gap: 8px; }
  .party-meta { margin-top: 15px; }
  .party-copy h2, .party-copy h3 { font-size: 28px; }
  .ticket-layout { grid-template-columns: minmax(0,1fr) minmax(270px,.8fr); gap: 30px; }
  .ticket-overview h2 { font-size: 36px; }
}
@media (max-width: 640px) {
  html { scroll-padding-top: 64px; }
  .home-upcoming, .party-list-section { padding-block: 42px 48px; }
  .home-upcoming .home-events-head, .party-list-head { display: flex; flex-direction: column; align-items: flex-start; gap: 17px; margin-bottom: 28px; }
  .home-upcoming .home-events-head h2, .party-list-head h2 { font-size: 32px; }
  .home-upcoming .home-events-head p, .party-list-head p { font-size: 14px; max-width: 33ch; }
  .party-row { grid-template-columns: 84px minmax(0,1fr); gap: 12px 18px; padding-block: 23px; align-items: start; }
  .party-poster { aspect-ratio: 3 / 4; }
  .party-copy h2, .party-copy h3 { font-size: clamp(21px, 5.7vw, 28px); }
  .party-format { font-size: 11px; line-height: 1.5; margin-top: 10px; }
  .party-meta { font-size: 9px; gap: 6px 12px; margin-top: 13px; }
  .party-action { gap: 10px; }
  .party-sale-status { font-size: 11px; }
  .party-cta { min-height: 46px; font-size: 10px; gap: 21px; padding-inline: 14px; }
  .party-cta .icon { width: 18px; height: 18px; }
  .ticket-section { padding-block: 38px; }
  .ticket-layout { grid-template-columns: 1fr; gap: 28px; }
  .ticket-overview h2 { font-size: 32px; }
  .ticket-overview > p { margin-top: 17px; font-size: 14px; }
  .ticket-meta { gap: 18px 35px; margin-top: 23px; }
  .ticket-meta dd { font-size: 16px; }
  .ticket-overview .back { margin-top: 17px; }
  .ticket-panel { padding: 25px; }
  .ticket-panel h3 { font-size: 22px; }
  .ticket-panel .ticket-sale-state { margin-top: 21px; font-size: 17px; }
  .ticket-panel .ticket-sale-note { font-size: 13px; }
  .faq-section { padding-block: 40px; }
  .faq-section .section-head h2 { font-size: 28px; }
  .faq-list summary { font-size: 18px; }
  .format-page .section { padding-block: 40px; }
  .format-page .gallery, .format-page .special-intro ~ .section .gallery { grid-template-columns: repeat(2,1fr); }
  .format-page .gallery .photo-link:first-child { grid-column: auto; }
  .format-page .gallery .photo-link img { aspect-ratio: 1; }
  .format-page .gallery .photo-link:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .format-page .gallery .photo-link:last-child:nth-child(odd) img { aspect-ratio: 2 / 1; }
  .home-page .archive-cover { min-height: 300px; height: 40svh; padding-block: 30px 25px; }
  .home-page .archive-cover-title h2 { font-size: 34px; }
  .gallery-intro h1 { font-size: clamp(34px, 9.2vw, 52px); }
  .location-card-caption h2 { font-size: 27px; }
}
@media (max-width: 359px) {
  .party-row { grid-template-columns: 65px minmax(0,1fr); gap: 12px 14px; }
  .party-copy h2, .party-copy h3 { font-size: 20px; }
  .party-meta { font-size: 8px; }
  .ticket-overview h2 { font-size: 29px; }
}
@media (prefers-reduced-motion: reduce) { .party-cta { transition: none; } }
