/* biome-ignore-all lint/style/noDescendingSpecificity: rules are grouped by component, not by specificity; the flagged pairs never match the same element. */
/* Programme layout pieces theme.json can't express (WS-15 canvas, 03 Patterns and 05 Event pages). */

/* Brand kit: the 18 colour roles as --amx-color-*. An organizer brand restyles the site by
   overriding the brand role presets; the status roles (success, warning, danger and their "on"
   colours) are fixed and never follow the brand (D-180). */
:root {
  --amx-color-background: var(--wp--preset--color--background);
  --amx-color-surface: var(--wp--preset--color--surface);
  --amx-color-text: var(--wp--preset--color--text);
  --amx-color-text-muted: var(--wp--preset--color--text-muted);
  --amx-color-primary: var(--wp--preset--color--primary);
  --amx-color-on-primary: var(--wp--preset--color--on-primary);
  --amx-color-primary-text: var(--wp--preset--color--primary-text);
  --amx-color-primary-border: var(--wp--preset--color--primary-border);
  --amx-color-accent: var(--wp--preset--color--accent);
  --amx-color-on-accent: var(--wp--preset--color--on-accent);
  --amx-color-border: var(--wp--preset--color--border);
  --amx-color-border-strong: var(--wp--preset--color--border-strong);
  --amx-color-success: #17703f;
  --amx-color-on-success: #fff;
  --amx-color-warning: #8a5300;
  --amx-color-on-warning: #fff;
  --amx-color-danger: #c0262d;
  --amx-color-on-danger: #fff;
  --amx-section: var(--wp--preset--spacing--80);
}

/* Header A: menu left, name centred, price and button right; on phones name, button, menu. */
.amx-header {
  position: sticky;
  top: 0;
  z-index: 5;
  background: var(--amx-color-background);
  border-bottom: 1px solid var(--amx-color-text);
}
.amx-header-row {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 1rem;
  min-height: 4.5rem;
}
.amx-header-row.is-centered {
  grid-template-columns: 1fr auto 1fr;
}
.amx-header-row.is-centered .amx-nav {
  order: 0;
}
.amx-header-row.is-centered .amx-wordmark {
  text-align: center;
}
.amx-header-row .wp-block-amx-ticket-button {
  justify-self: end;
}
.amx-header-row > * {
  margin: 0;
}
.amx-wordmark a,
.amx-header-row .amx-nav a {
  color: inherit;
  text-decoration: none;
}
.amx-header-row .amx-nav a:hover {
  text-decoration: underline;
}
.amx-header-row .amx-from {
  display: none;
}
@media (min-width: 64rem) {
  .amx-header-row .amx-from {
    display: inline;
  }
}
@media (max-width: 781px) {
  .amx-header-row.is-centered {
    grid-template-columns: 1fr auto auto;
  }
  .amx-header-row.is-centered .amx-wordmark {
    order: -1;
    text-align: left;
  }
  .amx-header-row.is-centered .amx-nav {
    order: 2;
  }
  .amx-header-row {
    gap: 0.5rem;
  }
  .amx-header-row automatrix-tickets::part(caption) {
    display: none;
  }
}
.amx-header-row.is-minimal {
  grid-template-columns: 1fr auto auto;
}
.amx-header.is-over-cover {
  position: relative;
  border-bottom: 0;
}

/* Sections and bands touch: rhythm comes from their own padding, not the block gap. */
.amx-hero,
.amx-section,
.amx-footer,
.amx-page {
  margin-block: 0;
}
.amx-main-area > * {
  margin-block-start: 0;
}
.amx-section {
  padding-top: var(--amx-section);
  padding-bottom: var(--amx-section);
}
.amx-section.is-compact {
  padding-top: var(--wp--preset--spacing--60);
  padding-bottom: var(--wp--preset--spacing--60);
}
/* A section whose event block has nothing to show hides with it (03 Patterns, status C). */
.amx-needs-data:not(:has([class*="wp-block-amx-"])) {
  display: none;
}

/* Section heading: number, title and a "see all" link over a rule. */
.wp-block-group.amx-section-head {
  flex-wrap: wrap;
  gap: 1rem 2rem;
  border-bottom: 1px solid currentColor;
  padding-bottom: 1.25rem;
  margin-bottom: 1.5rem;
}
.amx-section-head > * {
  margin: 0;
}
.amx-section-head .amx-section-number {
  font: italic 400 var(--wp--preset--font-size--large) / 1 var(--wp--preset--font-family--heading);
  color: var(--amx-color-primary-text);
  min-width: 4rem;
}
.amx-section-head .amx-more {
  margin-left: auto;
  font-size: var(--wp--preset--font-size--small);
  white-space: nowrap;
}
.amx-subsection {
  margin-top: var(--wp--preset--spacing--70);
}
.amx-subsection .amx-section-head h2 {
  font-size: var(--wp--preset--font-size--xx-large);
}
.amx-kicker {
  font: 600 var(--wp--preset--font-size--x-small) / 1.3 var(--wp--preset--font-family--body);
  color: var(--amx-color-text-muted);
}

/* Hero A */
.amx-hero {
  padding-top: clamp(2rem, 1rem + 4vw, 4rem);
  padding-bottom: var(--wp--preset--spacing--70);
}
.amx-hero-meta {
  gap: 0.5rem 1.5rem;
  border-bottom: 1px solid var(--amx-color-border);
  padding-bottom: 0.75rem;
}
.amx-hero-meta > * {
  margin: 0;
}
.amx-hero .amx-event-title {
  font-size: var(--wp--preset--font-size--hero);
  line-height: var(--wp--custom--line-height--hero);
  letter-spacing: -0.035em;
  max-width: 14ch;
  overflow-wrap: anywhere;
  margin-block: 2rem;
}
/* Names over 60 characters step down from display size and never truncate (HANDOVER §3). */
.amx-hero .amx-event-title.is-long,
.amx-event-title.is-long {
  font-size: var(--wp--preset--font-size--xx-large);
  max-width: none;
}
.amx-hero-cols {
  gap: 2rem 3rem;
  border-bottom: 1px solid var(--amx-color-text);
  padding-bottom: 2rem;
}
.amx-hero .amx-event-description {
  font: 400 var(--wp--preset--font-size--large) / 1.45 var(--wp--preset--font-family--heading);
}
.amx-buy .amx-ticket-button {
  flex-direction: column;
  align-items: stretch;
}
.amx-hero .wp-block-amx-cover-art {
  margin-top: 2rem;
}
.amx-hero.is-cover {
  position: relative;
  overflow: hidden;
  padding-top: var(--wp--preset--spacing--80);
}
.amx-hero.is-cover .wp-block-amx-cover-art {
  position: absolute;
  inset: 0;
  margin: 0;
  opacity: 0.35;
  z-index: 0;
}
.amx-hero.is-cover .wp-block-amx-cover-art svg {
  height: 100%;
  aspect-ratio: auto;
  background: none;
}
.amx-hero.is-cover > :not(.wp-block-amx-cover-art) {
  position: relative;
}
.amx-hero.is-cover .amx-event-title,
.amx-hero.is-cover .amx-tag,
.amx-hero.is-cover .amx-zone {
  color: inherit;
}
.amx-hero.is-minimal .amx-event-title {
  font-size: var(--wp--preset--font-size--display);
}

/* Pages: title and lead over a rule */
.amx-page {
  padding-top: var(--wp--preset--spacing--70);
  padding-bottom: var(--amx-section);
}
.amx-page-head {
  border-bottom: 1px solid var(--amx-color-text);
  padding-bottom: 2rem;
  margin-bottom: 2rem;
}
.amx-page-head > * {
  max-width: 48rem;
}
.amx-page-head .amx-page-title,
.amx-page > .amx-page-title {
  font-size: var(--wp--preset--font-size--display);
  margin-bottom: 1rem;
}
.amx-lead {
  font: 400 var(--wp--preset--font-size--x-large) / 1.35 var(--wp--preset--font-family--heading);
}

/* Two columns with a sidebar that comes first on phones (WS-15 decision 5). */
.amx-details-cols {
  gap: 2rem 4rem;
}
@media (max-width: 781px) {
  .amx-details-cols > .amx-aside {
    order: -1;
  }
}
@media (min-width: 782px) {
  .amx-details-cols > .amx-aside > * {
    position: sticky;
    top: 6rem;
  }
}
.amx-event-details .amx-event-title {
  font-size: var(--wp--preset--font-size--display);
}
.amx-event-details .wp-block-amx-cover-art {
  border-top: 1px solid var(--amx-color-text);
  margin-bottom: 2rem;
}
.amx-summary > * + * {
  margin-top: 1.25rem;
}
.amx-event-details .amx-event-description {
  font-size: var(--wp--preset--font-size--medium);
}
.amx-event-details .amx-event-description > p:first-child {
  font: 400 var(--wp--preset--font-size--large) / 1.45 var(--wp--preset--font-family--heading);
}

/* Label and text rows (venue page) */
.amx-row {
  display: grid;
  gap: 0.25rem 2rem;
  padding: 1rem 0;
  border-bottom: 1px solid var(--amx-color-border);
  font-size: var(--wp--preset--font-size--small);
}
.amx-row > * {
  margin: 0;
}
.amx-row-label {
  font-weight: 600;
}
@media (min-width: 48rem) {
  .amx-row {
    grid-template-columns: 10rem 1fr;
  }
}
.amx-rows {
  border-top: 1px solid var(--amx-color-border);
}
.amx-map .wp-block-amx-cover-art svg {
  aspect-ratio: 4 / 3;
}
@media (max-width: 781px) {
  .amx-venue > .amx-map {
    order: -1;
  }
}

/* Packages (sponsors page) */
.amx-packages > .wp-block-column {
  border-left: 1px solid var(--amx-color-border);
  padding-left: 2rem;
}
.amx-packages > .wp-block-column:first-child {
  border-left: 0;
  padding-left: 0;
}
.amx-packages .wp-block-button,
.amx-packages .wp-block-button__link {
  width: 100%;
}

/* Legal: contents beside numbered sections */
.amx-toc {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid var(--amx-color-text);
  font-size: var(--wp--preset--font-size--small);
}
.amx-toc li {
  border-bottom: 1px solid var(--amx-color-border);
}
.amx-toc a {
  display: block;
  padding: 0.75rem 0;
  color: inherit;
  text-decoration: none;
}
.amx-toc a:hover {
  color: var(--amx-color-primary-text);
}
.amx-legal-h {
  font-size: var(--wp--preset--font-size--x-large);
  scroll-margin-top: 6rem;
}

/* Quote */
.amx-quote {
  text-align: center;
}
.amx-quote-text {
  font:
    italic 400 var(--wp--preset--font-size--xx-large) / 1.15 var(--wp--preset--font-family--heading);
  max-width: 22ch;
  margin-inline: auto;
}
.amx-quote-cite {
  font-size: var(--wp--preset--font-size--small);
}

/* Calls to action */
.amx-cta h2 {
  font-size: var(--wp--preset--font-size--display);
  max-width: 14ch;
}
.amx-cta .amx-zone {
  color: inherit;
}
.amx-cta-box {
  margin-top: var(--wp--preset--spacing--70);
  padding: 2rem;
  gap: 1rem 2rem;
}
.amx-cta-text {
  font: 400 var(--wp--preset--font-size--x-large) / 1.35 var(--wp--preset--font-family--heading);
  max-width: 28ch;
  margin: 0;
}
.amx-box {
  border: 1px solid var(--amx-color-text);
  padding: 1.25rem;
}
.amx-free-card {
  max-width: 32rem;
}

/* Questions */
.wp-block-details {
  border-top: 0;
  border-bottom: 1px solid var(--amx-color-border);
  padding: 1.1rem 0;
}
.wp-block-details summary {
  font: 400 var(--wp--preset--font-size--large) / 1.3 var(--wp--preset--font-family--heading);
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  cursor: pointer;
  list-style: none;
}
.wp-block-details summary::-webkit-details-marker {
  display: none;
}
.wp-block-details summary::after {
  content: "+";
  color: var(--amx-color-primary-text);
}
.wp-block-details[open] summary::after {
  content: "–";
}
.wp-block-details p {
  color: var(--amx-color-text-muted);
  max-width: 60ch;
}

/* Search and lists of results */
.amx-search-form {
  max-width: 32rem;
  margin-block: 2rem;
}
.amx-search-form .wp-block-search__input {
  border-radius: 999px;
}
.amx-results .wp-block-post {
  border-bottom: 1px solid var(--amx-color-border);
  padding-block: 1.25rem;
}
.amx-results .wp-block-post-title {
  font-size: var(--wp--preset--font-size--x-large);
  margin: 0.25rem 0;
}
.amx-results .wp-block-post-title a {
  color: inherit;
  text-decoration: none;
}
.amx-results .wp-block-post-excerpt {
  color: var(--amx-color-text-muted);
  font-size: var(--wp--preset--font-size--small);
}

/* Footer */
.amx-footer {
  padding-top: 2.5rem;
  padding-bottom: 2.5rem;
  font-size: var(--wp--preset--font-size--small);
}
.amx-footer-row {
  gap: 1rem 2rem;
}
.amx-footer-row > * {
  margin: 0;
}
.amx-footer :where(a) {
  color: var(--amx-color-text);
}
.amx-footer-links {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.25rem;
}
.amx-footer.is-large .amx-footer-links {
  display: grid;
}
.amx-footer-wordmark {
  font: 400 var(--wp--preset--font-size--display) / 1 var(--wp--preset--font-family--heading);
  margin-bottom: 2rem;
}
.amx-footer-wordmark a {
  text-decoration: none;
}
.amx-mark {
  color: var(--amx-color-text-muted);
}
.amx-footer.is-large .amx-mark {
  border-top: 1px solid var(--amx-color-border);
  padding-top: 1.5rem;
}

/* The embed caption on strong bands takes the band's text colour. */
.is-style-section-ink automatrix-tickets::part(caption),
.is-style-section-primary automatrix-tickets::part(caption) {
  color: inherit;
}
.is-style-section-primary automatrix-tickets::part(button),
.is-style-section-ink automatrix-tickets::part(button) {
  background: var(--amx-color-background);
  color: var(--amx-color-text);
  border-color: var(--amx-color-background);
}
