:root {
  --ink: #11152a;
  --ink-soft: #252945;
  --paper: #f3efe6;
  --paper-bright: #fffdf8;
  --mist: #dce5e6;
  --violet: #6e58d9;
  --violet-dark: #4932b5;
  --acid: #d8ff57;
  --cyan: #70e8e1;
  --coral: #ff826d;
  --line: rgba(17, 21, 42, 0.2);
  --line-light: rgba(255, 255, 255, 0.24);
  --shadow: 0 22px 60px rgba(17, 21, 42, 0.14);
  --serif: "Newsreader", Georgia, serif;
  --sans: "Manrope", Arial, sans-serif;
  --mono: "DM Mono", "Courier New", monospace;
  --shell: 1280px;
  --gutter: clamp(1rem, 3vw, 2.5rem);
  --section: clamp(4rem, 8vw, 8rem);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  min-width: 0;
  background: var(--paper);
  color: var(--ink);
  font: 400 1rem/1.65 var(--sans);
  text-rendering: optimizeLegibility;
}
body.nav-open { overflow: hidden; }
main, section, article, aside, header, footer, nav, div, form, fieldset { min-width: 0; }
img, picture, svg, video, canvas { display: block; max-width: 100%; height: auto; }
iframe { max-width: 100%; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 0.2em; }
a:hover { text-decoration-thickness: 2px; }
button, input, select, textarea { font: inherit; }
button, input, select, textarea { max-width: 100%; }
button { color: inherit; }
p, h1, h2, h3, h4, li, dd, dt, figcaption, address, label, a { overflow-wrap: anywhere; }
h1, h2, h3, h4, p, ul, ol, dl, figure, blockquote { margin-top: 0; }
h1, h2, h3, h4 { line-height: 1.05; }
h1, h2 { font-family: var(--serif); font-weight: 400; letter-spacing: -0.035em; }
h1 { font-size: clamp(3rem, 7.4vw, 7rem); }
h2 { font-size: clamp(2.2rem, 4.7vw, 4.8rem); }
h3 { font-size: clamp(1.25rem, 2vw, 1.8rem); }
::selection { background: var(--acid); color: var(--ink); }
:focus-visible { outline: 3px solid var(--coral); outline-offset: 4px; }
[hidden] { display: none !important; }

.shell,
.page-hero__inner,
.content-section__inner,
.program-section__inner,
.journal-section__inner,
.schedule-section__inner,
.event-detail,
.article-detail,
.breadcrumbs,
.not-found {
  width: min(calc(100% - (2 * var(--gutter))), var(--shell));
  margin-inline: auto;
}

.visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
.skip-link {
  position: fixed;
  z-index: 2000;
  top: 0.75rem;
  left: 0.75rem;
  padding: 0.75rem 1rem;
  background: var(--acid);
  color: var(--ink);
  font-weight: 700;
  transform: translateY(-180%);
}
.skip-link:focus { transform: none; }
.eyebrow, .section-label, .section-number, .event-card__discipline, .footer-heading {
  margin-bottom: 0.8rem;
  font: 500 0.72rem/1.35 var(--mono);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.lede, .page-hero__lede { font: 400 clamp(1.2rem, 2vw, 1.55rem)/1.5 var(--sans); }
.prose { max-width: 52rem; }
.prose > * + * { margin-top: 1.2rem; }
.prose h2, .prose h3 { margin-top: 2.5rem; }

/* Shared header and navigation */
.site-header {
  position: relative;
  z-index: 1000;
  color: var(--paper-bright);
  background: var(--ink);
  border-bottom: 1px solid var(--line-light);
}
.site-header__inner {
  min-height: 94px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
}
.brand {
  display: inline-grid;
  grid-template-columns: 32px auto auto;
  align-items: center;
  gap: 0.75rem;
  flex: 0 0 auto;
  text-decoration: none;
}
.brand__mark {
  position: relative;
  width: 32px;
  height: 32px;
  border: 1px solid currentColor;
  border-radius: 50%;
}
.brand__mark::before, .brand__mark::after, .brand__mark span {
  content: "";
  position: absolute;
  inset: 50% auto auto 50%;
  width: 1px;
  height: 42px;
  background: currentColor;
  transform-origin: center;
  transform: translate(-50%, -50%) rotate(45deg);
}
.brand__mark::after { transform: translate(-50%, -50%) rotate(-45deg); }
.brand__mark span { height: 28px; transform: translate(-50%, -50%) rotate(90deg); }
.brand__wordmark { font: 400 1.55rem/1 var(--serif); letter-spacing: -0.03em; }
.brand__edition { padding-left: 0.75rem; border-left: 1px solid currentColor; font: 400 0.61rem/1.35 var(--mono); text-transform: uppercase; }
.primary-nav { display: flex; align-items: center; gap: clamp(0.8rem, 1.6vw, 1.5rem); }
.primary-nav ul { display: flex; align-items: center; gap: clamp(0.65rem, 1.35vw, 1.25rem); margin: 0; padding: 0; list-style: none; }
.primary-nav a { font-size: 0.82rem; font-weight: 600; text-decoration: none; white-space: nowrap; }
.primary-nav a:hover, .primary-nav a[aria-current="page"], .primary-nav a.is-current { color: var(--acid); }
.schedule-link { display: inline-flex; align-items: center; gap: 0.55rem; padding-left: 1rem; border-left: 1px solid var(--line-light); }
.schedule-count { min-width: 1.65rem; height: 1.65rem; display: inline-grid; place-items: center; border-radius: 50%; background: var(--acid); color: var(--ink); font: 500 0.7rem/1 var(--mono); }
.nav-toggle { display: none; border: 0; background: none; }
.nav-toggle__icon { display: grid; gap: 5px; width: 24px; }
.nav-toggle__icon i { display: block; height: 1px; background: currentColor; }

/* Shared footer */
.site-footer { padding: clamp(4rem, 7vw, 7rem) 0 1.5rem; background: #090c1d; color: var(--paper-bright); }
.brand--footer { color: var(--paper-bright); }
.site-footer__top { display: flex; justify-content: space-between; align-items: flex-start; gap: 2rem; padding-bottom: 3rem; border-bottom: 1px solid var(--line-light); }
.site-footer__statement { max-width: 31rem; font: 400 clamp(1.65rem, 3vw, 2.9rem)/1.08 var(--serif); letter-spacing: -0.03em; }
.site-footer__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(1.5rem, 4vw, 4rem); padding-block: 3rem; }
.site-footer__grid ul { margin: 0; padding: 0; list-style: none; }
.site-footer__grid li + li { margin-top: 0.45rem; }
.site-footer__grid a { color: inherit; }
.site-footer__contact p { margin-bottom: 0.8rem; }
.site-footer__bottom { display: grid; grid-template-columns: 1fr 2fr auto; gap: 1.5rem; align-items: end; padding-top: 1.25rem; border-top: 1px solid var(--line-light); font: 400 0.68rem/1.5 var(--mono); text-transform: uppercase; }
.site-footer__bottom p { margin-bottom: 0; }

/* Buttons and utility elements */
.button, .button-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.55rem;
  min-height: 48px;
  padding: 0.75rem 1.1rem;
  border: 1px solid var(--ink);
  background: var(--ink);
  color: var(--paper-bright);
  font-size: 0.82rem;
  font-weight: 700;
  line-height: 1.25;
  text-decoration: none;
  cursor: pointer;
}
.button:hover, .button-link:hover { background: var(--violet-dark); border-color: var(--violet-dark); }
.button--light { border-color: var(--paper-bright); background: var(--paper-bright); color: var(--ink); }
.button--light:hover { border-color: var(--acid); background: var(--acid); color: var(--ink); }
.button--acid { border-color: var(--acid); background: var(--acid); color: var(--ink); }
.button--dark, .button--ink { background: var(--ink); color: white; }
.button--quiet, .button--secondary { background: transparent; color: var(--ink); }
.button-row { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem; }
.text-link { display: inline-flex; gap: 0.55rem; align-items: center; font-weight: 700; }
.text-link--light { color: var(--paper-bright); }
.pill { display: inline-flex; padding: 0.35rem 0.65rem; border: 1px solid currentColor; border-radius: 999px; font: 500 0.64rem/1 var(--mono); text-transform: uppercase; }
.pill--free { background: var(--acid); color: var(--ink); border-color: var(--acid); }
.pill--sold { color: var(--coral); }
.notice, .empty-state, .not-found { padding: clamp(1.5rem, 4vw, 3rem); border: 1px solid var(--line); background: var(--paper-bright); }
.notice--error { border-left: 5px solid #b92c36; }
.notice--warning { border-left: 5px solid #c77a00; background: #fff8dc; }
.empty-state, .not-found { text-align: center; }
.not-found { margin-block: var(--section); }
.page-status { padding: 1rem 0; font-family: var(--mono); font-size: 0.78rem; }

/* Home hero */
.home-hero { position: relative; overflow: clip; min-height: min(860px, calc(100vh - 60px)); padding: clamp(3.5rem, 7vw, 7.5rem) 0 0; background: var(--ink); color: var(--paper-bright); }
.home-hero__wash { position: absolute; inset: 0; background: radial-gradient(circle at 72% 25%, rgba(112,232,225,.25), transparent 32%), radial-gradient(circle at 10% 75%, rgba(110,88,217,.38), transparent 36%); pointer-events: none; }
.home-hero__grid { position: relative; display: grid; grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr); grid-template-rows: auto auto; gap: 2rem clamp(2rem, 6vw, 6rem); align-items: center; }
.home-hero__copy { position: relative; z-index: 2; }
.home-hero h1 { max-width: 9ch; margin-bottom: 1.5rem; font-size: clamp(3.7rem, 7vw, 7.5rem); }
.home-hero h1 em { color: var(--acid); font-weight: 300; }
.home-hero__intro { max-width: 40rem; font-size: clamp(1rem, 1.5vw, 1.25rem); }
.home-hero__media { position: relative; margin: 0; align-self: stretch; }
.home-hero__media img { width: 100%; height: clamp(420px, 58vw, 700px); object-fit: cover; box-shadow: var(--shadow); }
.home-hero__media figcaption { display: flex; justify-content: space-between; gap: 1rem; padding-top: 0.75rem; font: 400 0.64rem/1.35 var(--mono); text-transform: uppercase; }
.home-hero__index { display: flex; gap: 0.65rem; align-self: end; font: 400 0.7rem/1 var(--mono); }
.home-hero__marquee { position: relative; margin-top: clamp(2.5rem, 5vw, 5rem); border-block: 1px solid var(--line-light); overflow: clip; }
.home-hero__marquee div { width: max-content; padding: 1rem 0; white-space: nowrap; font: 400 clamp(0.78rem, 1.4vw, 1rem)/1 var(--mono); letter-spacing: 0.1em; color: var(--acid); }
.section { padding-block: var(--section); }
.section--paper { background: var(--paper); }
.section--ink { background: var(--ink); color: var(--paper-bright); }
.section--acid { background: var(--acid); }
.section--mist { background: var(--mist); }
.section--violet { background: var(--violet); color: white; }
.manifesto__grid { display: grid; grid-template-columns: minmax(120px, .28fr) minmax(0, 1fr); gap: 2rem 5vw; }
.display-copy { max-width: 13ch; margin-bottom: 2rem; }
.manifesto__body { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2rem; align-items: end; max-width: 58rem; }
.manifesto__body p { max-width: 42rem; font-size: 1.15rem; }
.section-heading { display: flex; justify-content: space-between; align-items: end; gap: 2rem; margin-bottom: clamp(2.5rem, 5vw, 4.5rem); }
.section-heading h2 { margin-bottom: 0; }
.section-heading--light { color: white; }
.feature-editorial { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(300px, .75fr); gap: clamp(2rem, 5vw, 5rem); }
.feature-lead__image { position: relative; display: block; }
.feature-lead__image img { width: 100%; aspect-ratio: 1.35; object-fit: cover; }
.event-card__status { position: absolute; left: 1rem; bottom: 1rem; padding: .5rem .7rem; background: var(--acid); color: var(--ink); font: 500 .68rem/1 var(--mono); text-transform: uppercase; }
.feature-lead__meta { display: grid; grid-template-columns: minmax(0, 1fr) minmax(160px, .36fr); gap: 1.5rem; padding-top: 1.5rem; }
.feature-lead__meta h3 { font-family: var(--serif); font-size: clamp(2rem, 3.8vw, 3.5rem); font-weight: 400; }
.feature-lead__meta a, .feature-row a { text-decoration: none; }
.compact-meta { margin: 0; }
.compact-meta > div { padding: .65rem 0; border-top: 1px solid var(--line-light); }
.compact-meta dt { font: 500 .62rem/1.3 var(--mono); text-transform: uppercase; }
.compact-meta dd { margin: .25rem 0 0; }
.feature-stack { display: grid; gap: 1.5rem; align-content: start; }
.feature-row { display: grid; grid-template-columns: minmax(110px, .43fr) minmax(0, .57fr); gap: 1rem; padding-bottom: 1.5rem; border-bottom: 1px solid var(--line-light); }
.feature-row__image img { width: 100%; aspect-ratio: 1; object-fit: cover; }
.feature-row__body h3 { margin-bottom: .4rem; }
.feature-row__foot { display: flex; justify-content: space-between; gap: .8rem; align-items: center; font-size: .78rem; }
.calendar-band__intro { display: grid; grid-template-columns: minmax(0, .65fr) minmax(240px, .35fr); gap: 3rem; align-items: end; }
.date-ribbon { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); margin-top: 3rem; border-top: 1px solid var(--ink); border-left: 1px solid var(--ink); }
.date-ribbon a { min-width: 0; padding: 1rem .3rem; border-right: 1px solid var(--ink); border-bottom: 1px solid var(--ink); text-align: center; text-decoration: none; }
.date-ribbon a:hover { background: var(--ink); color: white; }
.date-ribbon span { display: block; }
.date-ribbon span:first-child { font: 500 .65rem/1 var(--mono); text-transform: uppercase; }
.date-ribbon span:last-child { margin-top: .35rem; font: 400 clamp(1.3rem, 2.5vw, 2.1rem)/1 var(--serif); }
.portrait-triptych { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1.2rem, 3vw, 3rem); margin-top: 3rem; align-items: start; }
.portrait-card { margin: 0; }
.portrait-card--offset { margin-top: 5rem; }
.portrait-card img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; filter: saturate(.85); }
.portrait-card--tall img { aspect-ratio: 3 / 4; }
.portrait-card figcaption { padding-top: .85rem; }
.portrait-card figcaption span { display: block; }
.portrait-card figcaption span:first-child { font: 400 1.6rem/1.1 var(--serif); }
.portrait-card figcaption span:last-child { margin-top: .35rem; font-size: .78rem; }
.venue-feature__grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: clamp(2rem, 6vw, 6rem); align-items: center; }
.venue-feature__image { margin: 0; }
.venue-feature__image img { width: 100%; aspect-ratio: 1.25; object-fit: cover; }
.venue-feature__copy { max-width: 36rem; }
.venue-feature__copy h2 { margin-bottom: 1.5rem; }
.access-callout__grid, .closing-cta__inner { display: grid; grid-template-columns: minmax(0, 1fr) minmax(240px, .36fr); gap: 2rem 5vw; align-items: end; }
.check-list { padding: 0; list-style: none; }
.check-list li { padding: .65rem 0 .65rem 1.6rem; border-top: 1px solid var(--line); position: relative; }
.check-list li::before { content: "↳"; position: absolute; left: 0; }
.journal-duo { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(260px, .65fr); gap: clamp(1.5rem, 4vw, 4rem); }
.story-card__image { display: block; margin-bottom: 1.2rem; }
.story-card__image img { width: 100%; aspect-ratio: 1.4; object-fit: cover; }
.story-card--lead .story-card__image img { aspect-ratio: 1.55; }
.story-card h3 { font-family: var(--serif); font-size: clamp(1.7rem, 3vw, 2.8rem); font-weight: 400; }
.story-card a { text-decoration: none; }
.story-card__meta { font: 400 .7rem/1.4 var(--mono); text-transform: uppercase; }
.closing-cta h2 { max-width: 12ch; }

/* Interior page headings and content */
.page-hero { padding: clamp(4rem, 8vw, 8rem) 0; background: var(--ink); color: white; }
.page-hero__inner { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(240px, .6fr); gap: 2rem 6vw; align-items: end; }
.page-hero__inner h1 { margin-bottom: 0; }
.page-hero__inner > p:not(.eyebrow) { max-width: 42rem; margin-bottom: 0; }
.page-hero__inner .eyebrow { grid-column: 1 / -1; }
.page-hero--directory { width: min(calc(100% - (2 * var(--gutter))), var(--shell)); margin-inline: auto; background: transparent; color: var(--ink); display: block; }
.page--directory { background: var(--paper); }
.page--detail { background: var(--paper); }
.page--artists .page-hero--directory { border-bottom: 1px solid var(--line); }
.page--venues .page-hero--directory { border-bottom: 1px solid var(--line); }
.page--artist .detail-hero__media img { aspect-ratio: 4 / 5; }
.page--venue .detail-hero__media img { aspect-ratio: 4 / 3; }
.page-hero--directory h1 { max-width: 12ch; }
.page-hero--directory .page-hero__lede { max-width: 54rem; }
.page-hero--access { background: var(--violet-dark); }
.page-hero--contact { background: #172f3a; }
.page-hero--partners { background: #3f3278; }
.page-hero--practical { background: #183d3d; }
.content-section, .program-section, .journal-section, .schedule-section { padding-block: var(--section); }
.content-section--tinted { background: var(--mist); }
.content-section__inner { display: grid; grid-template-columns: minmax(55px, .15fr) minmax(0, .85fr); gap: 2rem 4vw; }
.content-section__inner > :last-child { min-width: 0; }
.content-section h2 { max-width: 15ch; }
.section-number { color: var(--violet-dark); }
.two-column { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(1.5rem, 5vw, 5rem); }
.info-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.info-card, .contact-card, .partner-card { padding: clamp(1.25rem, 3vw, 2.25rem); background: var(--paper-bright); }
.info-card h3, .contact-card h3, .partner-card h3 { font-family: var(--serif); font-weight: 400; font-size: clamp(1.5rem, 2.5vw, 2.25rem); }
.definition-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 3rem; }
.definition-grid > div, .fact-list > div { padding-block: 1rem; border-top: 1px solid var(--line); }
.definition-grid dt, .fact-list dt { font: 500 .68rem/1.3 var(--mono); text-transform: uppercase; }
.definition-grid dd, .fact-list dd { margin: .4rem 0 0; }
.accordion-list details { border-top: 1px solid var(--line); }
.accordion-list details:last-child { border-bottom: 1px solid var(--line); }
.accordion-list summary { padding: 1.25rem 2.5rem 1.25rem 0; cursor: pointer; font-weight: 700; }
.accordion-list details > div { max-width: 50rem; padding-bottom: 1.5rem; }
.steps-list { counter-reset: steps; padding: 0; list-style: none; }
.steps-list li { counter-increment: steps; position: relative; padding: 1.1rem 0 1.1rem 3.4rem; border-top: 1px solid var(--line); }
.steps-list li::before { content: counter(steps, decimal-leading-zero); position: absolute; left: 0; font: 500 .72rem/1.5 var(--mono); }
.callout { padding: 0 var(--gutter) var(--section); }
.callout__inner { width: min(100%, var(--shell)); margin-inline: auto; padding: clamp(2rem, 5vw, 4rem); background: var(--acid); }
.callout__inner h2 { max-width: 13ch; }
.link-list { padding-left: 1.2rem; }
.choice-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }

/* Forms */
form { min-width: 0; }
label { display: block; margin-bottom: .45rem; font-size: .82rem; font-weight: 700; }
input, select, textarea {
  width: 100%;
  min-width: 0;
  border: 1px solid rgba(17,21,42,.45);
  border-radius: 0;
  background: var(--paper-bright);
  color: var(--ink);
  padding: .8rem .9rem;
}
textarea { min-height: 10rem; resize: vertical; }
input:focus, select:focus, textarea:focus { border-color: var(--violet-dark); box-shadow: 0 0 0 2px var(--violet-dark); outline: none; }
.field-hint, .field-error, .field-optional { display: block; margin-top: .35rem; font-size: .72rem; }
.field-error { color: #9d1825; font-weight: 700; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
.form-field--full { grid-column: 1 / -1; }
.form-field--checkbox { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .75rem; align-items: start; }
.form-field--checkbox input { width: 1.2rem; height: 1.2rem; margin-top: .25rem; }
.form-field--checkbox label { margin: 0; }
.form-actions { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; }
.form-errors { margin-bottom: 1.5rem; padding: 1rem 1.2rem; border-left: 4px solid #9d1825; background: #fff0f1; }
.form-status { min-height: 1.5em; }
.contact-form { max-width: 56rem; }
.contact-route-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.page-contact .contact-route-grid > *,
.page-contact .form-grid > *,
.page-contact .choice-list > *,
.page-contact .submission-preview > *,
.page-contact .test-controls,
.page-contact .submission-result { min-width: 0; max-width: 100%; }
.page-contact .test-controls summary { overflow-wrap: anywhere; }
.submission-result { margin-top: 2rem; padding: 1.5rem; }
.submission-result--success { background: #e1f5df; border-left: 4px solid #347a31; }
.submission-result--error { background: #fff0f1; border-left: 4px solid #9d1825; }

/* Directories and cards */
.directory { padding-bottom: var(--section); }
.directory__header { display: grid; grid-template-columns: minmax(240px, .4fr) minmax(0, .6fr); gap: 2rem 5vw; align-items: end; margin-bottom: 3rem; }
.directory__header h2 { font-size: clamp(2rem, 3.5vw, 3.5rem); }
.directory-filters { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(150px, .7fr) auto; gap: 1rem; align-items: end; }
.field { min-width: 0; }
.card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1.2rem, 2.5vw, 2.5rem); }
.card-grid--artists { align-items: start; }
.card-grid--venues { align-items: stretch; }
.card { min-width: 0; background: var(--paper-bright); }
.card__media, .event-card__image, .journal-card__image { display: block; }
.card__media img, .card > a img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.card__body { padding: 1.25rem; }
.card__body h2, .card__body h3 { font-family: var(--serif); font-size: clamp(1.5rem, 2.4vw, 2.2rem); font-weight: 400; }
.card__body a { text-decoration: none; }
.card--placeholder { border: 1px solid var(--line); }
.placeholder-block { min-height: 20rem; background: linear-gradient(110deg, var(--mist) 20%, var(--paper-bright) 40%, var(--mist) 60%); background-size: 200% 100%; animation: shimmer 1.5s linear infinite; }
@keyframes shimmer { to { background-position-x: -200%; } }

/* Programme */
.filter-panel { display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(2, minmax(150px, .6fr)) auto; gap: 1rem; align-items: end; padding: clamp(1.25rem, 3vw, 2rem); background: var(--mist); }
.filter-panel__field { min-width: 0; }
.filter-panel__actions { display: flex; flex-wrap: wrap; gap: .65rem; }
.program-results-header { display: flex; justify-content: space-between; align-items: end; gap: 1rem; margin: 3rem 0 1.5rem; }
.program-results-count { font: 400 .75rem/1.4 var(--mono); text-transform: uppercase; }
.event-grid, .card-grid--events { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.event-card { display: flex; min-width: 0; flex-direction: column; background: var(--paper-bright); }
.event-card__image img { width: 100%; aspect-ratio: 1.4; object-fit: cover; }
.event-card__body { display: flex; flex: 1; flex-direction: column; min-width: 0; padding: 1.4rem; }
.event-card__title { margin-bottom: .8rem; font-family: var(--serif); font-weight: 400; font-size: clamp(1.65rem, 2.6vw, 2.5rem); }
.event-card__title a, .event-card__link a { text-decoration: none; }
.event-card__meta { display: grid; gap: .25rem; margin-bottom: 1rem; font-size: .8rem; }
.event-card__meta dd { margin: 0; }
.event-card__summary { margin-bottom: 1.2rem; }
.event-card__ticket-status { width: fit-content; padding: .3rem .55rem; background: var(--acid); font: 500 .65rem/1 var(--mono); text-transform: uppercase; }
.event-card__link { margin-top: auto; margin-bottom: 0; font-weight: 700; }

/* Detail pages */
.breadcrumbs { padding-top: 1.5rem; }
.breadcrumbs ol, .breadcrumb { display: flex; flex-wrap: wrap; gap: .45rem .8rem; margin: 0; padding: 0; list-style: none; font: 400 .69rem/1.5 var(--mono); text-transform: uppercase; }
.breadcrumbs li:not(:last-child)::after { content: "/"; margin-left: .8rem; opacity: .5; }
.detail, .event-detail, .article-detail { padding-bottom: var(--section); }
.detail-hero, .event-hero { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(2rem, 6vw, 6rem); align-items: center; padding-block: clamp(3rem, 6vw, 6rem); }
.detail-hero__media, .event-hero__media { margin: 0; }
.detail-hero__media img, .event-hero__media img { width: 100%; aspect-ratio: 1.15; object-fit: cover; }
.detail-hero h1, .event-hero h1 { font-size: clamp(3.4rem, 7vw, 7rem); }
.detail-hero__lede, .event-hero__subtitle { font-size: clamp(1.15rem, 2vw, 1.45rem); }
.detail-hero__meta { display: flex; flex-wrap: wrap; gap: .6rem 1rem; font: 400 .72rem/1.5 var(--mono); text-transform: uppercase; }
.detail-layout, .event-detail__layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, .37fr); gap: clamp(2.5rem, 7vw, 7rem); align-items: start; }
.detail-copy, .event-detail__main { min-width: 0; }
.detail-copy > *, .event-detail__main > * { margin-bottom: 3rem; }
.detail-sidebar, .event-detail__aside { position: sticky; top: 1.5rem; min-width: 0; }
.information-panel, .ticket-panel, .schedule-panel { padding: 1.5rem; background: var(--paper-bright); border: 1px solid var(--line); }
.information-panel + .information-panel, .ticket-panel + .schedule-panel { margin-top: 1rem; }
.event-meta > div, .event-details-list > div { padding: .8rem 0; border-top: 1px solid var(--line); }
.event-meta dt, .event-details-list dt { font: 500 .66rem/1.35 var(--mono); text-transform: uppercase; }
.event-meta dd, .event-details-list dd { margin: .3rem 0 0; }
.event-meta__address { display: block; margin-top: .3rem; font-size: .8rem; }
.event-description__lead { font: 400 clamp(1.25rem, 2vw, 1.55rem)/1.5 var(--serif); }
.event-artists__list { padding: 0; list-style: none; }
.event-artists__list li { padding: .75rem 0; border-top: 1px solid var(--line); }
.event-artists__role { display: block; font-size: .78rem; opacity: .7; }
.ticket-panel h2, .schedule-panel h2 { font-family: var(--sans); font-size: 1rem; font-weight: 700; letter-spacing: 0; }
.ticket-panel__price, .ticket-panel__status { font: 400 1.8rem/1.1 var(--serif); }
.ticket-panel__note, .ticket-panel__details, .schedule-panel__feedback { font-size: .8rem; }
.related-events, .related-programme { padding-top: 2rem; border-top: 1px solid var(--line); }
.related-programme > div, .related-programme ul { min-width: 0; }
.detail-loading { padding-block: var(--section); text-align: center; }

/* Journal and article */
.journal-feature { margin-bottom: clamp(4rem, 8vw, 7rem); }
.journal-card { min-width: 0; background: var(--paper-bright); }
.journal-card--featured { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); }
.journal-card__image img { width: 100%; height: 100%; min-height: 360px; object-fit: cover; }
.journal-card__body { padding: clamp(1.5rem, 4vw, 3.5rem); }
.journal-card__title { font: 400 clamp(2rem, 4.5vw, 4rem)/1.04 var(--serif); }
.journal-card__title a, .journal-card__link a { text-decoration: none; }
.journal-card__deck { font-size: 1.05rem; }
.journal-card__meta { display: flex; flex-wrap: wrap; gap: .5rem 1rem; font: 400 .67rem/1.4 var(--mono); text-transform: uppercase; }
.journal-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(1.2rem, 3vw, 3rem); }
.journal-grid .journal-card__image img { min-height: 0; aspect-ratio: 1.45; }
.article-detail__header { max-width: 62rem; padding: clamp(4rem, 8vw, 8rem) 0 3rem; }
.article-detail__header h1 { font-size: clamp(3.3rem, 7.5vw, 7.5rem); }
.article-detail__deck { max-width: 46rem; font: 400 clamp(1.25rem, 2.5vw, 1.8rem)/1.4 var(--sans); }
.article-detail__meta { display: flex; flex-wrap: wrap; gap: .8rem 2rem; font: 400 .72rem/1.4 var(--mono); text-transform: uppercase; }
.article-detail__meta dd { margin: 0; }
.article-detail__hero { margin: 0 0 clamp(3rem, 6vw, 6rem); }
.article-detail__hero img { width: 100%; max-height: 720px; object-fit: cover; }
.article-detail__layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(240px, .32fr); gap: clamp(3rem, 7vw, 7rem); align-items: start; }
.article-detail__body { max-width: 48rem; font-family: var(--serif); font-size: clamp(1.1rem, 1.6vw, 1.28rem); line-height: 1.72; }
.article-section + .article-section { margin-top: 3rem; }
.article-section h2 { font-size: clamp(2rem, 3.5vw, 3.3rem); }
.article-related { padding: 1.5rem; border-top: 4px solid var(--violet); background: var(--mist); }
.article-related h2 { font-family: var(--sans); font-size: 1.25rem; font-weight: 700; letter-spacing: 0; }
.article-related__group + .article-related__group { margin-top: 1.5rem; }
.article-related__group h3 { font-size: .78rem; }
.article-related__group ul { padding-left: 1.1rem; }

/* Partners */
.partner-feature { display: grid; grid-template-columns: minmax(0, .35fr) minmax(0, .65fr); gap: 2rem 5vw; padding: clamp(2rem, 5vw, 4rem); background: var(--ink); color: white; }
.partner-mark { width: 86px; height: 86px; display: grid; place-items: center; border: 1px solid currentColor; border-radius: 50%; font: 500 .75rem/1 var(--mono); }
.partner-card { border-top: 1px solid var(--line); }
.partner-card + .partner-card { margin-top: 1px; }

/* Schedule */
.schedule-section__inner { max-width: 1040px; }
.schedule-toolbar { display: flex; justify-content: space-between; gap: 1rem; align-items: center; margin-bottom: 2rem; padding-bottom: 1rem; border-bottom: 1px solid var(--line); }
.schedule-toolbar p { margin: 0; }
.schedule-days { display: grid; gap: 3rem; }
.schedule-day__heading { display: grid; grid-template-columns: 70px minmax(0, 1fr); gap: 1rem; align-items: baseline; margin-bottom: 1rem; }
.schedule-day__date { font: 400 3.5rem/1 var(--serif); color: var(--violet-dark); }
.schedule-day__heading h2 { margin: 0; font-family: var(--sans); font-size: clamp(1.2rem, 2vw, 1.55rem); font-weight: 700; letter-spacing: 0; }
.schedule-day__events { display: grid; gap: 1px; background: var(--line); border: 1px solid var(--line); }
.schedule-event { display: grid; grid-template-columns: 120px minmax(0, 1fr) auto; gap: 1.25rem; align-items: center; padding: 1.25rem; background: var(--paper-bright); }
.schedule-event__time { font: 500 .78rem/1.45 var(--mono); }
.schedule-event__time span { display: block; opacity: .65; }
.schedule-event__body h3 { margin-bottom: .35rem; font-family: var(--serif); font-weight: 400; font-size: clamp(1.45rem, 2.3vw, 2rem); }
.schedule-event__body h3 a { text-decoration: none; }
.schedule-event__meta { margin: 0; font-size: .82rem; }
.schedule-event__actions { display: flex; flex-wrap: wrap; gap: .6rem; justify-content: end; }
.schedule-event__actions .button { min-height: 40px; padding: .55rem .75rem; }
.schedule-conflicts { margin-bottom: 2rem; }
.schedule-conflicts ul { margin-bottom: 0; }

/* Reveals */
.image-reveal { overflow: clip; }
.image-reveal img { transition: transform .7s ease, opacity .6s ease; }
.image-reveal:hover img { transform: scale(1.015); }
.will-reveal { opacity: 0; transform: translateY(18px); transition: opacity .65s ease, transform .65s ease; }
.will-reveal.is-visible, .reveal-ready .will-reveal { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

@media (max-width: 1079px) {
  .site-header__inner { min-height: 78px; }
  .nav-toggle { display: inline-flex; align-items: center; gap: .75rem; padding: .6rem 0; color: white; cursor: pointer; }
  .primary-nav {
    position: fixed;
    z-index: 999;
    inset: 78px 0 0;
    display: none;
    align-items: stretch;
    flex-direction: column;
    gap: 1.5rem;
    overflow-y: auto;
    padding: 2rem var(--gutter) 3rem;
    background: var(--ink);
    color: white;
  }
  .nav-open .primary-nav { display: flex; }
  .primary-nav ul { display: grid; gap: 0; }
  .primary-nav li { border-top: 1px solid var(--line-light); }
  .primary-nav li:last-child { border-bottom: 1px solid var(--line-light); }
  .primary-nav a { display: block; padding: .9rem 0; font-size: clamp(1.35rem, 4vw, 2.3rem); font-family: var(--serif); font-weight: 400; white-space: normal; }
  .schedule-link { display: flex !important; justify-content: space-between; padding-left: 0; border-left: 0; }
}

@media (max-width: 900px) {
  .home-hero__grid, .detail-hero, .event-hero { grid-template-columns: 1fr; }
  .home-hero h1 { max-width: 11ch; }
  .home-hero__media img { height: min(110vw, 620px); }
  .feature-editorial, .venue-feature__grid, .journal-card--featured { grid-template-columns: 1fr; }
  .feature-stack { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .feature-row { grid-template-columns: 1fr; }
  .feature-row__image img { aspect-ratio: 1.35; }
  .feature-row__foot { display: grid; }
  .date-ribbon { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .detail-layout, .event-detail__layout, .article-detail__layout { grid-template-columns: 1fr; }
  .detail-sidebar, .event-detail__aside { position: static; }
  .filter-panel { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .filter-panel__field--keyword { grid-column: 1 / -1; }
  .filter-panel__actions { grid-column: 1 / -1; }
  .card-grid, .event-grid, .card-grid--events { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .contact-route-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* The 800px breakpoint deliberately stacks every content/media, form/summary and filter layout. */
@media (max-width: 800px) {
  :root { --gutter: 1.2rem; --section: clamp(3.5rem, 13vw, 5.5rem); }
  .brand { grid-template-columns: 27px auto; gap: .6rem; }
  .brand__mark { width: 27px; height: 27px; }
  .brand__edition { display: none; }
  .site-footer__top, .section-heading, .manifesto__body, .calendar-band__intro, .access-callout__grid, .closing-cta__inner, .page-hero__inner, .directory__header, .partner-feature { grid-template-columns: 1fr; display: grid; }
  .site-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .site-footer__bottom { grid-template-columns: 1fr; align-items: start; }
  .manifesto__grid, .content-section__inner { grid-template-columns: 1fr; }
  .section-number { margin-bottom: 0; }
  .home-hero__copy { max-width: 100%; }
  .feature-lead__meta { grid-template-columns: 1fr; }
  .portrait-card--offset { margin-top: 0; }
  .two-column, .definition-grid, .choice-list, .form-grid, .directory-filters, .filter-panel { grid-template-columns: minmax(0, 1fr); }
  .form-field--full, .filter-panel__field--keyword, .filter-panel__actions { grid-column: auto; }
  .page-contact .contact-route-grid, .page-contact .form-grid, .page-contact .choice-list, .page-contact .form-field--checkbox { grid-template-columns: minmax(0, 1fr); }
  .page-contact .form-field--checkbox { gap: .5rem; }
  .directory-filters .button { width: 100%; }
  .journal-grid { grid-template-columns: 1fr; }
  .journal-card__image img { min-height: 0; aspect-ratio: 1.35; }
  .article-detail__header { padding-top: 3.5rem; }
  .schedule-event { grid-template-columns: 88px minmax(0, 1fr); }
  .schedule-event__actions { grid-column: 2; justify-content: start; }
}

@media (max-width: 620px) {
  h1 { font-size: clamp(2.8rem, 15vw, 4.4rem); }
  .home-hero { padding-top: 3rem; }
  .home-hero h1 { font-size: clamp(3.1rem, 15vw, 4.8rem); }
  .home-hero__media img { height: 118vw; }
  .home-hero__index { display: none; }
  .home-hero__media figcaption { display: grid; }
  .feature-stack, .portrait-triptych, .card-grid, .event-grid, .card-grid--events, .contact-route-grid, .info-grid { grid-template-columns: 1fr; }
  .feature-row { grid-template-columns: 110px minmax(0, 1fr); }
  .date-ribbon { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .date-ribbon a:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .site-footer__grid { grid-template-columns: 1fr; }
  .site-footer__statement br { display: none; }
  .page-hero--directory { padding-top: 3.5rem; }
  .program-results-header, .schedule-toolbar { display: grid; align-items: start; }
  .event-card__image img { aspect-ratio: 1.3; }
  .detail-hero h1, .event-hero h1, .article-detail__header h1 { font-size: clamp(3rem, 15vw, 4.8rem); }
  .detail-hero__media, .event-hero__media { order: -1; }
  .schedule-day__heading { grid-template-columns: 54px minmax(0, 1fr); }
  .schedule-day__date { font-size: 2.7rem; }
  .schedule-event { grid-template-columns: 1fr; gap: .65rem; }
  .schedule-event__actions { grid-column: auto; }
  .schedule-event__time span { display: inline; margin-left: .4rem; }
  .button-row > * { width: 100%; }
}
