:root {
  --blue: #27477f;
  --black: #231f20;
  --red: #c1282d;
  --paper: #f7f4ee;
  --white: #fffdf8;
  --ink-soft: #5f5a55;
  --line: rgba(35, 31, 32, 0.16);
  --focus: #f6c445;
  --category-visual-arts-bg: #73479C;
  --category-visual-arts-text: #FFFFFF;
  --category-visual-arts-tint: #F2EDF6;
  --category-film-club-bg: #58B947;
  --category-film-club-text: #FFFFFF;
  --category-film-club-tint: #EEF8EB;
  --category-theatre-bg: #D2232A;
  --category-theatre-text: #FFFFFF;
  --category-theatre-tint: #FCEBEC;
  --category-youth-theatre-bg: #FFF200;
  --category-youth-theatre-text: #FFFFFF;
  --category-youth-theatre-tint: #FFFDE1;
  --category-music-bg: #25408F;
  --category-music-text: #FFFFFF;
  --category-music-tint: #E9EDF8;
  --category-comedy-bg: #EF7C22;
  --category-comedy-text: #FFFFFF;
  --category-comedy-tint: #FFF0E4;
  --category-lecture-bg: #EC008C;
  --category-lecture-text: #FFFFFF;
  --category-lecture-tint: #FDEAF5;
  --category-literature-bg: #6ECCE0;
  --category-literature-text: #FFFFFF;
  --category-literature-tint: #EAF9FC;
  --category-family-bg: #B8A237;
  --category-family-text: #FFFFFF;
  --category-family-tint: #F5F2E5;
  --category-workshop-bg: #B9614B;
  --category-workshop-text: #FFFFFF;
  --category-workshop-tint: #FAEEEA;
  --space: clamp(20px, 5vw, 72px);
  --measure: 68rem;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--black);
  background: var(--white);
  font-family: "Roboto Condensed", sans-serif;
  font-size: 18px;
  line-height: 1.5;
  text-rendering: optimizeLegibility;
}

img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration-thickness: 0.08em; text-underline-offset: 0.18em; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 4px; }

h1, h2, h3 {
  font-family: Montserrat, sans-serif;
  font-weight: 900;
  line-height: 0.96;
  letter-spacing: 0;
  margin: 0;
}

h1 { font-size: clamp(42px, 7vw, 88px); max-width: 13ch; }
h2 { font-size: clamp(34px, 6vw, 76px); }
h1, h2 { color: var(--blue); }
h3 { font-size: clamp(24px, 3vw, 38px); }
p { margin: 0; }

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
}

.skip-link {
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 20;
  transform: translateY(-140%);
  background: var(--black);
  color: white;
  padding: 10px 14px;
}
.skip-link:focus { transform: translateY(0); }

.preview-banner {
  position: sticky;
  top: 0;
  z-index: 30;
  display: flex;
  justify-content: center;
  gap: 18px;
  padding: 9px var(--space);
  background: var(--black);
  color: white;
  font-family: Montserrat, sans-serif;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
}
.preview-banner a {
  color: white;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(22px, 4vw, 62px);
  min-height: 96px;
  padding: 16px clamp(20px, 4vw, 68px);
  background: #fff;
  border-bottom: 1px solid var(--line);
  transition: background-color 200ms ease, border-color 200ms ease, box-shadow 200ms ease;
}
.brand {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  line-height: 0;
  text-decoration: none;
}
.site-logo {
  display: block;
  inline-size: min(407px, 48vw);
  block-size: auto;
  max-inline-size: 100%;
  object-fit: contain;
  shape-rendering: geometricPrecision;
  text-rendering: geometricPrecision;
}
.site-header.is-scrolled {
  background: rgba(255, 255, 255, 0.94);
  border-bottom-color: rgba(35, 31, 32, 0.24);
  box-shadow: 0 5px 14px rgba(35, 31, 32, 0.06);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.nav-open .site-header,
.nav-open .site-header.is-scrolled {
  background: #fff;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
.site-nav {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex: 1 1 auto;
  gap: clamp(14px, 2.2vw, 34px);
  font-family: Montserrat, sans-serif;
  font-size: clamp(12px, 0.9vw, 14px);
  font-weight: 900;
  text-transform: uppercase;
}
.site-nav a, .text-button {
  background: none;
  border: 0;
  color: var(--blue);
  cursor: pointer;
  font: inherit;
  text-decoration: none;
}
.site-nav [aria-current="page"] { color: var(--red); }
.icon-button {
  display: none;
  width: 46px;
  height: 46px;
  border: 1px solid var(--line);
  background: var(--white);
}
.icon-button span:not(.sr-only) {
  display: block;
  width: 18px;
  height: 2px;
  margin: 4px auto;
  background: var(--black);
}

.search-panel {
  display: none;
  position: sticky;
  top: 96px;
  z-index: 9;
  padding: 22px var(--space);
  background: var(--blue);
  color: white;
}
.search-panel[data-open] { display: block; }
.search-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  max-width: var(--measure);
  margin-bottom: 16px;
}
.search-panel .kicker { color: #d9e5ff; }
.search-panel-close {
  min-height: 44px;
  padding: 8px 0;
  border: 0;
  background: transparent;
  color: white;
  cursor: pointer;
  font: inherit;
  font-weight: 700;
  text-decoration: underline;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.18em;
}
.search-panel form,
.search-page-form { max-width: var(--measure); }
label { display: grid; gap: 8px; font-weight: 700; }
input, textarea, select {
  width: 100%;
  min-height: 48px;
  border: 1px solid var(--line);
  border-radius: 0;
  padding: 12px 14px;
  background: var(--white);
  color: var(--black);
  font: inherit;
}
textarea { min-height: 132px; }
.search-panel form div,
.search-page-form div {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 10px;
  margin-top: 10px;
}

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 12px 20px;
  border: 1px solid var(--red);
  background: var(--red);
  color: white;
  font-family: Montserrat, sans-serif;
  font-size: 13px;
  font-weight: 900;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
}
.button.secondary {
  background: transparent;
  color: var(--white);
  border-color: currentColor;
}
.button.secondary.dark {
  color: var(--black);
}
.button.small { min-height: 38px; padding: 8px 14px; }
.text-link, .arrow-link { color: var(--red); font-weight: 700; }

.hero {
  position: relative;
  min-height: clamp(420px, 55svh, 600px);
  display: grid;
  align-items: end;
  overflow: hidden;
  background: var(--black);
}
.hero-media {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
}
.hero::after {
  content: "";
  position: absolute;
  z-index: 1;
  inset: 0;
  background: linear-gradient(0deg, rgba(35,31,32,0.86), transparent 62%);
  pointer-events: none;
}
.hero-slide {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--hero-focal-desktop-x, 50%) var(--hero-focal-desktop-y, 50%) !important;
  opacity: 0;
  will-change: opacity;
  transform: translateZ(0);
  transition: opacity 1200ms cubic-bezier(0.22, 1, 0.36, 1);
}
.hero-slide.is-active {
  z-index: 1;
  opacity: 1;
}
.hero-copy {
  position: relative;
  z-index: 2;
  max-width: min(960px, 76vw);
  padding: clamp(28px, 4vw, 44px) var(--space) clamp(30px, 4vw, 46px);
  color: white;
}
.hero-copy h1 {
  max-width: 20ch;
  font-size: clamp(40px, 4.3vw, 64px);
  line-height: 1;
}
.hero-copy h1,
.newsletter h2,
.events-hero h1,
.podcasts-hero h1,
.detail-hero h1,
.artist-resource-panel h2,
.artist-resource-facts h2,
.archive-strip h2 {
  color: white;
}
.hero-copy p:last-of-type {
  max-width: 34rem;
  margin: 14px 0 20px;
  font-size: clamp(19px, 2vw, 24px);
}
.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 14px;
}
.hero-actions .button {
  border-color: var(--blue);
  background: var(--blue);
}
.kicker {
  color: var(--red);
  font-family: Montserrat, sans-serif;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.hero .kicker, .detail-hero .kicker { color: #ffdadb; }
.hero .kicker {
  display: inline-block;
  font-size: 8px;
  transform: scale(0.5);
  transform-origin: left center;
}

@media (min-width: 861px) {
  .hero-actions { margin-top: 28px; }
}

.section, .newsletter, .archive-strip, .podcast-index, .search-results {
  padding: clamp(54px, 9vw, 128px) var(--space);
}
.programme-listing { scroll-margin-top: 112px; }
.programme-listing--homepage { padding-block: clamp(34px, 3vw, 48px); }
#homepage-future-events { overflow-anchor: none; }
.section-heading {
  max-width: var(--measure);
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 24px;
  margin-bottom: clamp(28px, 5vw, 58px);
}
.section-heading h2 { max-width: 10ch; }
.related-events-heading h2 {
  max-width: none;
  font-size: clamp(26px, 7vw, 48px);
  white-space: nowrap;
}
.related-events-heading {
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  gap: 8px;
}
.programme-heading {
  max-width: none;
  margin-top: 10px;
  font-size: clamp(30px, 3.25vw, 48px);
}
.programme-heading__full { display: none; }
.programme-heading__compact { display: inline; white-space: nowrap; }
.programme-filter-header {
  display: grid;
  gap: 24px;
  margin-bottom: clamp(24px, 3vw, 38px);
}
.programme-filter-header > div { min-width: 0; }
.programme-listing .programme-filter-header .event-filter { margin: 0; }
.programme-explore-link {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
  white-space: nowrap;
}

dl { margin: 0; }
dt {
  color: var(--ink-soft);
  font-family: Montserrat, sans-serif;
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}
dd { margin: 0 0 14px; font-size: 22px; }

.event-list {
  border-top: 1px solid var(--line);
  max-width: 1180px;
}
.programme-listing .event-list { width: 100%; max-width: none; }
.programme-empty {
  max-width: 42rem;
  padding: 24px 0;
  border-top: 1px solid var(--line);
  color: var(--ink-soft);
  font-size: 21px;
}
[data-event-filter-region] {
  transition: opacity 160ms ease;
}
[data-event-filter-region][aria-busy="true"] {
  opacity: 0.62;
}
.event-filter {
  display: grid;
  gap: 12px;
  margin-bottom: clamp(32px, 5vw, 58px);
}
.programme-listing .event-filter { margin-bottom: clamp(22px, 3vw, 36px); }
.event-filter-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.event-filter-all,
.event-filter-category {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 5px 9px;
  text-decoration: none;
}
.event-filter-all {
  border: 1px solid var(--line);
  background: var(--white);
  color: var(--black);
  font-family: Montserrat, sans-serif;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.04em;
  line-height: 1.15;
  text-transform: uppercase;
}
.event-filter-all.is-active {
  border-color: var(--black);
  box-shadow: inset 0 0 0 1px var(--black);
}
.event-filter-category.is-active {
  border-color: var(--black);
  box-shadow: inset 0 0 0 1px var(--black);
}
.events-results-heading { margin-bottom: 22px; }
.events-results-heading h2 { font-size: clamp(30px, 4vw, 54px); }
.event-row {
  display: grid;
  grid-template-columns: minmax(130px, 260px) minmax(0, 1fr) auto;
  gap: clamp(18px, 4vw, 48px);
  align-items: center;
  padding: 22px clamp(18px, 3vw, 36px);
  border-bottom: 1px solid var(--line);
  background: var(--event-row-tint, var(--paper));
}
.event-image {
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--paper);
}
.event-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 480ms ease; }
.event-row:hover img { transform: scale(1.04); }
.event-copy { display: grid; gap: 8px; max-width: 44rem; }
.event-copy a { text-decoration: none; }
.event-summary {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  line-height: 1.45;
  min-block-size: 2.9em;
  max-block-size: 2.9em;
}
.event-copy h3,
.podcast-grid h3 { color: var(--blue); }
.event-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 10px 16px;
}
.event-icon-action {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 44px;
  inline-size: 44px;
  block-size: 44px;
  min-height: 44px;
  padding: 0;
  border: 1px solid transparent;
  background: transparent;
  text-decoration: none;
  transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease;
}
.event-icon-action::before {
  content: '';
  inline-size: 18px;
  block-size: 18px;
  background: currentColor;
  -webkit-mask: center / contain no-repeat;
  mask: center / contain no-repeat;
}
.event-icon-action::after {
  position: absolute;
  inset-block-end: calc(100% + 7px);
  inset-inline-start: 50%;
  z-index: 2;
  content: attr(data-tooltip);
  padding: 6px 8px;
  background: var(--black);
  color: var(--white);
  font-family: Roboto Condensed, sans-serif;
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, 4px);
  transition: opacity 180ms ease, transform 180ms ease;
}
.event-icon-action:hover::after,
.event-icon-action:focus-visible::after {
  opacity: 1;
  transform: translate(-50%, 0);
}
.event-read-link {
  border-color: rgba(39, 71, 127, 0.35);
  color: var(--blue);
}
.event-read-link::before {
  -webkit-mask-image: url('/assets/images/ui/lucide-info.svg');
  mask-image: url('/assets/images/ui/lucide-info.svg');
}
.event-read-link:hover,
.event-read-link:focus-visible {
  border-color: var(--blue);
  background: var(--blue);
  color: var(--white);
}
.event-podcast-link {
  border-color: rgba(30, 215, 96, 0.64);
}
.event-podcast-link::before { display: none; }
.event-podcast-link .spotify-mark {
  inline-size: 22px;
  block-size: 22px;
  margin: 0;
}
.event-podcast-link:hover,
.event-podcast-link:focus-visible {
  border-color: #1ed760;
  background: #effbed;
}
.event-ticket-link {
  border-color: rgba(193, 40, 45, 0.55);
  color: var(--red);
}
.event-ticket-link::before {
  -webkit-mask-image: url('/assets/images/ui/lucide-ticket.svg');
  mask-image: url('/assets/images/ui/lucide-ticket.svg');
}
.event-ticket-link:hover,
.event-ticket-link:focus-visible {
  border-color: var(--red);
  background: var(--red);
  color: var(--white);
}
.event-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  color: var(--ink-soft);
  font-family: Montserrat, sans-serif;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.event-meta time {
  text-transform: none;
}
.category-badge {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  min-height: 28px;
  padding: 5px 9px;
  border: 0;
  border-radius: 3px;
  font-family: Montserrat, sans-serif;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.04em;
  line-height: 1.15;
  text-transform: uppercase;
}
.category-badge--visual-arts { background: var(--category-visual-arts-bg); color: var(--category-visual-arts-text); }
.category-badge--film-club { background: var(--category-film-club-bg); color: var(--category-film-club-text); }
.category-badge--theatre { background: var(--category-theatre-bg); color: var(--category-theatre-text); }
.category-badge--youth-theatre { background: var(--category-youth-theatre-bg); color: var(--category-youth-theatre-text); }
.category-badge--music { background: var(--category-music-bg); color: var(--category-music-text); }
.category-badge--comedy { background: var(--category-comedy-bg); color: var(--category-comedy-text); }
.category-badge--lecture { background: var(--category-lecture-bg); color: var(--category-lecture-text); }
.category-badge--literature { background: var(--category-literature-bg); color: var(--category-literature-text); }
.category-badge--family { background: var(--category-family-bg); color: var(--category-family-text); }
.category-badge--workshop { background: var(--category-workshop-bg); color: var(--category-workshop-text); }
.category-badge--uncategorised { background: #4B4F55; color: #FFFFFF; }
.event-row--visual-arts { --event-row-tint: var(--category-visual-arts-tint); }
.event-row--film-club { --event-row-tint: var(--category-film-club-tint); }
.event-row--theatre { --event-row-tint: var(--category-theatre-tint); }
.event-row--youth-theatre { --event-row-tint: var(--category-youth-theatre-tint); }
.event-row--music { --event-row-tint: var(--category-music-tint); }
.event-row--comedy { --event-row-tint: var(--category-comedy-tint); }
.event-row--lecture { --event-row-tint: var(--category-lecture-tint); }
.event-row--literature { --event-row-tint: var(--category-literature-tint); }
.event-row--family { --event-row-tint: var(--category-family-tint); }
.event-row--workshop { --event-row-tint: var(--category-workshop-tint); }
.event-row--uncategorised { --event-row-tint: #F1F2F3; }
.event-filter-category {
  border: 1px solid transparent;
  transition: border-color 180ms ease, filter 180ms ease, box-shadow 180ms ease;
}
.event-filter-category:hover { filter: brightness(0.88); }
.event-filter-category:focus-visible,
.event-filter-all:focus-visible {
  outline: 3px solid var(--black);
  outline-offset: 2px;
}
a.event-filter-category { min-height: 28px; padding: 5px 9px; }

@media (min-width: 861px) {
  .programme-filter-header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 32px;
  }
  .programme-filter-header > div {
    flex: 1 1 auto;
  }
  .programme-filter-header .event-filter {
    flex: 0 1 680px;
  }
  .programme-filter-header .event-filter-controls {
    justify-content: flex-end;
  }
}
@media (min-width: 1000px) {
  .programme-filter-header .programme-heading {
    white-space: nowrap;
  }
  .programme-heading__full { display: inline; }
  .programme-heading__compact { display: none; }
}
@media (min-width: 1200px) {
  #events-programme .programme-filter-header {
    align-items: flex-start;
    gap: clamp(32px, 4vw, 64px);
  }
  #events-programme .programme-filter-header > div {
    flex: 0 1 auto;
  }
  #events-programme .programme-filter-header .event-filter {
    flex: 1 1 auto;
    max-width: 1100px;
  }
}

.editorial-split {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(280px, 0.85fr);
  align-items: center;
  gap: clamp(28px, 6vw, 90px);
  padding: clamp(54px, 9vw, 128px) var(--space);
  background: var(--paper);
}
.editorial-split > img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.editorial-split--visit {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}
.editorial-split--visit > :not(.editorial-split-backdrop) {
  position: relative;
  z-index: 1;
}
.editorial-split-backdrop {
  position: absolute;
  inset: -32px;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}
.editorial-split-backdrop img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.13;
  filter: blur(18px);
  transform: scale(1.08);
}
.editorial-split p:not(.kicker) { margin: 22px 0; font-size: 24px; max-width: 31rem; }

.podcast-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
  background: var(--line);
}
.podcast-grid article {
  display: grid;
  align-content: start;
  gap: 14px;
  padding: clamp(24px, 4vw, 44px);
  background: var(--white);
}
.podcast-grid a { text-decoration: none; }
.podcast-title-link,
.podcast-title {
  display: inline-flex;
  align-items: flex-start;
  gap: 0.32em;
  color: inherit;
}
.podcast-title-link > span,
.podcast-title > span { min-width: 0; }
.spotify-mark {
  flex: 0 0 auto;
  inline-size: 0.72em;
  block-size: 0.72em;
  margin-top: 0.14em;
}
.podcasts-preview {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: #eef3fb;
  border-block: 1px solid rgba(39, 71, 127, 0.18);
}
.podcasts-preview > :not(.podcasts-preview-backdrop) {
  position: relative;
  z-index: 1;
}
.podcasts-preview-backdrop {
  position: absolute;
  inset: -32px;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}
.podcasts-preview-backdrop img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.1;
  filter: blur(18px);
  transform: scale(1.08);
}
.podcasts-preview .podcast-grid {
  background: rgba(39, 71, 127, 0.22);
}

.google-reviews {
  display: grid;
  grid-template-columns: minmax(260px, 0.72fr) minmax(0, 1.28fr);
  gap: clamp(28px, 6vw, 90px);
  padding: clamp(54px, 9vw, 128px) var(--space);
  background: var(--white);
  border-top: 1px solid var(--line);
  scroll-margin-top: 108px;
}
.google-reviews-summary {
  display: grid;
  align-content: start;
  gap: 20px;
}
.google-reviews-summary h2 {
  max-width: 9ch;
}
.google-reviews-summary > p:not(.kicker):not(.google-attribution) {
  max-width: 32rem;
  font-size: 23px;
}
.rating-lockup {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 0 14px;
  align-items: end;
  padding-top: 10px;
}
.rating-lockup strong {
  grid-row: span 2;
  font-family: Montserrat, sans-serif;
  font-size: clamp(58px, 10vw, 116px);
  font-weight: 900;
  line-height: 0.82;
  color: var(--blue);
}
.rating-lockup span,
.review-rating span {
  color: var(--red);
  letter-spacing: 0.04em;
}
.rating-lockup small,
.google-attribution,
.review-date,
.review-note {
  color: var(--ink-soft);
  font-size: 15px;
}
.review-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.review-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: start;
  gap: 1px;
  background: var(--line);
}
.review-card,
.reviews-empty {
  display: grid;
  align-content: start;
  gap: 16px;
  padding: clamp(22px, 3vw, 34px);
  background: var(--paper);
}
.review-card header {
  display: flex;
  gap: 12px;
  align-items: center;
}
.review-card header img {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  object-fit: cover;
  background: var(--white);
}
.review-author {
  font-weight: 700;
}
.review-rating {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: Montserrat, sans-serif;
  font-size: 13px;
  font-weight: 900;
}
.review-text {
  font-size: 20px;
}
.reviews-empty {
  border: 1px solid var(--line);
}

@media (min-width: 1051px) {
  .review-grid {
    align-items: stretch;
  }
  .review-card {
    min-height: 100%;
  }
}

.newsletter {
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: clamp(24px, 6vw, 80px);
  background: var(--blue);
  color: white;
}
.newsletter .kicker { color: #ffdadb; }
.newsletter-signup,
.newsletter-signup__form,
.newsletter-signup__form [data-form],
.newsletter-signup__form .inline-container,
.newsletter-signup__form .form-container,
.newsletter-signup__form .emailoctopus-form-wrapper {
  width: 100%;
}
.newsletter-signup { max-width: var(--measure); }
.newsletter-signup__form [data-form] {
  color: var(--white);
}
.newsletter-signup__form .emailoctopus-form {
  --eo-form-placeholder: #6c757d;
  --eo-form-font-color: var(--black);
  --eo-form-label-colour: var(--white);
  --eo-form-field-colour: var(--white);
  --eo-form-field-border-colour: rgba(255, 255, 255, 0.7);
  --eo-form-button-colour: var(--red);
  --eo-form-button-text-colour: var(--white);
  margin: 0;
}
.newsletter-signup__form .emailoctopus-form .main-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: end;
}
.newsletter-signup__form .emailoctopus-form-row { margin: 0; }
.newsletter-signup__form .emailoctopus-form input[type='email'] {
  width: 100%;
  min-height: 48px;
  border: 1px solid rgba(255, 255, 255, 0.7);
  border-radius: 0;
  padding: 12px 14px;
  background: var(--white);
  color: var(--black);
  font: inherit;
}
.newsletter-signup__form .emailoctopus-form input[type='submit'] {
  width: auto;
  min-height: 48px;
  border: 1px solid var(--red);
  border-radius: 0;
  padding: 12px 20px;
  background: var(--red);
  color: var(--white);
  cursor: pointer;
  font-family: Montserrat, sans-serif;
  font-size: 14px;
  font-weight: 900;
  line-height: 1;
  text-transform: uppercase;
}
.newsletter-signup__form .emailoctopus-form input[type='checkbox'] {
  width: auto;
  min-height: auto;
  padding: 0;
}
.newsletter-signup__form .emailoctopus-form input:focus-visible,
.newsletter-signup__form .emailoctopus-form a:focus-visible {
  outline: 3px solid var(--white);
  outline-offset: 3px;
}
.newsletter-signup__form .emailoctopus-form input[type='submit']:hover,
.newsletter-signup__form .emailoctopus-form input[type='submit']:focus-visible {
  border-color: var(--white);
  background: var(--black);
}
.newsletter-signup__form .emailoctopus-success-message:not(:empty),
.newsletter-signup__form .emailoctopus-error-message:not(:empty) {
  margin: 0 0 12px;
  font-weight: 700;
}
.newsletter-signup__form .emailoctopus-error-message { color: #ffdadb; }
.newsletter-signup__form .mastfoot {
  margin-top: 12px;
  color: rgba(255, 255, 255, 0.86);
  font-size: 14px;
}
.newsletter-signup__form .mastfoot a { color: var(--white); }

.site-footer {
  display: grid;
  grid-template-columns: minmax(210px, 1.2fr) minmax(170px, 0.85fr) minmax(150px, 0.8fr) minmax(172px, 0.8fr) minmax(150px, 0.7fr);
  align-items: start;
  gap: clamp(24px, 3.5vw, 64px);
  padding: clamp(42px, 7vw, 82px) var(--space);
  background: var(--paper);
  color: var(--black);
  border-top: 1px solid var(--line);
}
.footer-brand {
  display: grid;
  gap: 22px;
}
.footer-address {
  display: grid;
  gap: 4px;
}
.footer-address p,
.footer-registration {
  margin: 0;
}
.footer-registration {
  color: var(--muted);
  font-size: 0.9em;
}
.footer-logo {
  display: block;
  inline-size: min(120px, 48vw);
  block-size: auto;
  max-inline-size: 100%;
  object-fit: contain;
  shape-rendering: geometricPrecision;
  text-rendering: geometricPrecision;
}
.site-footer nav {
  display: grid;
  justify-content: start;
  gap: 12px;
  align-content: start;
}
.site-footer nav h2 {
  margin: 0 0 4px;
  color: var(--blue);
  font-family: Montserrat, sans-serif;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 0.12em;
  line-height: 1.2;
  text-transform: uppercase;
}
.site-footer a {
  color: var(--black);
}
.footer-hours {
  display: grid;
  justify-items: start;
  gap: 8px;
}
.footer-hours h2 {
  margin: 0 0 4px;
  font-family: Montserrat, sans-serif;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 0.12em;
  line-height: 1.2;
  text-transform: uppercase;
}
.footer-hours p { line-height: 1.45; }
.footer-hours a { font-weight: 700; }
.footer-supporters {
  display: grid;
  align-content: start;
  gap: 18px;
}
.footer-supporters h2 {
  margin: 0;
  color: var(--blue);
  font-family: Montserrat, sans-serif;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 0.12em;
  line-height: 1.2;
  text-transform: uppercase;
}
.footer-supporter-logos {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 18px 22px;
}
.footer-supporter-link {
  display: block;
  line-height: 0;
}
.footer-supporter-link:focus-visible {
  outline: 3px solid var(--red);
  outline-offset: 5px;
}
.footer-supporter-logo {
  display: block;
  inline-size: auto;
  max-inline-size: 100%;
  object-fit: contain;
}
.footer-arts-council-logo { block-size: 60px; }
.footer-kerry-council-logo { block-size: 58px; }
.footer-social {
  display: grid;
  align-content: start;
  gap: 18px;
}
.footer-social-links {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.footer-social-links a {
  display: grid;
  place-items: center;
  inline-size: 44px;
  block-size: 44px;
  border-radius: 50%;
  line-height: 0;
}
.footer-social-links a:focus-visible {
  outline: 3px solid var(--red);
  outline-offset: 3px;
}
.footer-social-links img {
  display: block;
  inline-size: 34px;
  block-size: 34px;
  object-fit: contain;
}
.footer-credit {
  grid-column: 1 / -1;
  margin: 4px 0 0;
  padding-top: 20px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
  text-align: center;
}
.footer-credit a {
  color: inherit;
  font-weight: 700;
}
.footer-credit a:focus-visible {
  outline: 3px solid var(--red);
  outline-offset: 3px;
}

.page-intro {
  padding: clamp(72px, 12vw, 160px) var(--space) clamp(48px, 8vw, 96px);
  background: var(--paper);
}
.page-intro p:not(.kicker) { max-width: 45rem; margin-top: 22px; font-size: 25px; }
.page-intro.narrow { max-width: 960px; background: var(--white); }

.events-hero {
  display: grid;
  min-height: min(64svh, 760px);
  position: relative;
  align-items: end;
  overflow: hidden;
  background: var(--black);
  color: white;
}
.events-hero img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.events-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(35,31,32,0.86) 0%, rgba(35,31,32,0.58) 48%, rgba(35,31,32,0.12) 100%), linear-gradient(0deg, rgba(35,31,32,0.52), transparent 58%);
}
.events-hero > div {
  position: relative;
  z-index: 1;
  max-width: 780px;
  padding: clamp(52px, 8vw, 112px) var(--space);
}
.events-hero .kicker { color: #ffdadb; }
.events-hero p:last-child {
  max-width: 42rem;
  margin-top: 18px;
  font-size: clamp(21px, 2vw, 27px);
}

.podcasts-hero {
  display: grid;
  min-height: min(64svh, 760px);
  position: relative;
  align-items: end;
  overflow: hidden;
  background: var(--blue);
  color: white;
}
.podcasts-hero img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.podcasts-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(17,40,82,0.9) 0%, rgba(22,57,111,0.58) 48%, rgba(17,40,82,0.16) 100%), linear-gradient(0deg, rgba(17,40,82,0.52), transparent 58%);
}
.podcasts-hero > div {
  position: relative;
  z-index: 1;
  max-width: 780px;
  padding: clamp(52px, 8vw, 112px) var(--space);
}
.podcasts-hero .kicker { color: #dce7ff; }
.podcasts-hero p:last-child {
  max-width: 42rem;
  margin-top: 18px;
  font-size: clamp(21px, 2vw, 27px);
}

.detail-hero {
  display: grid;
  min-height: 78svh;
  position: relative;
  align-items: end;
  background: var(--black);
  color: white;
}
.detail-hero img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.72;
}
.detail-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(35,31,32,0.86), transparent 62%);
}
.detail-hero > div {
  position: relative;
  z-index: 1;
  padding: 0 var(--space) clamp(50px, 8vw, 110px);
}
.detail-hero p:last-child { max-width: 38rem; margin-top: 18px; font-size: 26px; }
.artist-resource-introduction,
.artist-resource-documents,
.artist-resource-facts,
.artist-resource-contact {
  padding: clamp(58px, 9vw, 128px) var(--space);
}
.artist-resource-introduction {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(280px, 0.7fr);
  gap: clamp(40px, 8vw, 128px);
  align-items: start;
}
.artist-resource-copy { max-width: 740px; }
.artist-resource-copy p {
  font-size: clamp(21px, 2vw, 28px);
  line-height: 1.35;
}
.artist-resource-copy p + p { margin-top: 26px; }
.artist-resource-panel {
  padding: clamp(26px, 4vw, 44px);
  background: var(--blue);
  color: white;
}
.artist-resource-panel .kicker { color: #dce7ff; }
.artist-resource-panel h2 { font-size: clamp(27px, 3vw, 42px); line-height: 1.08; }
.artist-resource-panel ul { margin: 26px 0 0; padding: 0; list-style: none; }
.artist-resource-panel li { padding: 16px 0; border-top: 1px solid rgba(255,255,255,0.32); }
.artist-resource-documents { padding-top: 0; }
.resource-document-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(28px, 5vw, 72px);
  margin-top: clamp(28px, 5vw, 52px);
}
.resource-document { padding-top: 22px; border-top: 2px solid var(--blue); }
.resource-document-meta { color: var(--blue); font-family: Montserrat, sans-serif; font-size: 12px; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; }
.resource-document h3 { margin-top: 14px; font-size: clamp(26px, 3vw, 40px); line-height: 1.08; }
.resource-document p:not(.resource-document-meta) { max-width: 34rem; margin-top: 16px; color: var(--ink-soft); font-size: 20px; }
.resource-document .button { margin-top: 26px; }
.artist-resource-facts { background: var(--blue); color: white; }
.artist-resource-facts .kicker { color: #dce7ff; }
.artist-resource-facts h2 { margin-top: 10px; }
.artist-resource-facts dl { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: clamp(34px, 5vw, 64px); }
.artist-resource-facts dl > div { padding: 0 clamp(18px, 3vw, 42px); border-left: 1px solid rgba(255,255,255,0.32); }
.artist-resource-facts dl > div:first-child { padding-left: 0; border-left: 0; }
.artist-resource-facts dt { color: #dce7ff; font-family: Montserrat, sans-serif; font-size: 12px; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; }
.artist-resource-facts dd { margin: 12px 0 0; font-size: clamp(20px, 2vw, 27px); line-height: 1.2; }
.artist-resource-contact { max-width: 950px; }
.artist-resource-contact h2 { margin-top: 12px; font-size: clamp(36px, 5vw, 64px); line-height: 1.05; }
.artist-resource-contact > p:not(.kicker) { max-width: 45rem; margin-top: 18px; font-size: 24px; }
.artist-resource-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 18px 28px; margin-top: 30px; }
.visit-listowel {
  padding: clamp(58px, 9vw, 128px) var(--space);
}
.visit-listowel { display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(280px, 0.75fr); gap: clamp(40px, 8vw, 128px); background: var(--paper); }
.visit-listowel h2 { margin-top: 10px; max-width: 10ch; font-size: clamp(36px, 5vw, 64px); line-height: 1.05; }
.visit-listowel > div:last-child > p { max-width: 39rem; font-size: clamp(21px, 2vw, 27px); line-height: 1.35; }
.visit-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 18px 28px; margin-top: 30px; }
.visit-local-guide { padding: clamp(58px, 9vw, 128px) var(--space); background: var(--blue); color: var(--white); }
.visit-local-guide .kicker { color: #ffdadb; }
.visit-local-guide .section-heading { align-items: end; }
.visit-local-guide .section-heading h2 { max-width: 13ch; color: var(--white); }
.visit-local-guide .section-heading > p { max-width: 22rem; color: #dce7ff; font-size: 18px; }
.visit-local-guide-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 clamp(34px, 7vw, 112px); margin-top: clamp(36px, 6vw, 72px); }
.visit-local-guide-link { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 24px; min-height: 142px; padding: 24px 0; border-top: 2px solid rgba(255, 255, 255, 0.48); color: var(--white); text-decoration: none; }
.visit-local-guide-link h3 { color: var(--white); font-size: clamp(26px, 3vw, 40px); line-height: 1.04; transition: color 180ms ease; }
.visit-local-guide-link p { max-width: 30rem; margin-top: 14px; color: rgba(255, 255, 255, 0.9); font-size: 20px; line-height: 1.35; }
.visit-local-guide-link:hover h3 { color: #ffdadb; }
.visit-local-guide-mark { color: #ffdadb; font-family: Montserrat, sans-serif; font-size: 30px; font-weight: 900; line-height: 1; }
.visit-local-guide-link:last-child { grid-column: 1 / -1; }
.detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 380px);
  gap: clamp(36px, 7vw, 90px);
  padding: clamp(54px, 9vw, 128px) var(--space);
}
.prose { max-width: 720px; }
.prose p + p, .prose h2 + p { margin-top: 22px; }
.support-donation {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: clamp(30px, 6vw, 96px);
  padding: clamp(54px, 9vw, 128px) var(--space);
  background: var(--blue);
  color: var(--white);
}
.support-donation > div:first-child { max-width: 48rem; }
.support-donation .kicker { color: #dce7ff; }
.support-donation h2 { margin-top: 12px; color: var(--white); max-width: 14ch; }
.support-donation > div:first-child > p:not(.kicker) { max-width: 34rem; margin-top: 20px; font-size: clamp(21px, 2vw, 27px); }
.support-donation-action { display: grid; gap: 14px; justify-items: start; min-width: min(100%, 210px); }
.support-donation .button { background: var(--white); border-color: var(--white); color: var(--blue); }
.support-donation .button:hover { background: transparent; color: var(--white); }
.support-donation-action p { max-width: 22ch; color: #dce7ff; font-size: 16px; line-height: 1.35; }
.lead { font-size: 28px; color: var(--blue); }
.privacy-policy { background: var(--white); }
.privacy-policy .page-intro.narrow,
.privacy-policy .policy-content { max-width: none; }
.policy-updated {
  color: var(--ink-soft);
  font-size: 16px !important;
}
.policy-content {
  padding: 0 var(--space) clamp(72px, 11vw, 148px);
}
.policy-links {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 24px;
  margin-bottom: clamp(48px, 7vw, 88px);
  padding-block: 18px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.policy-links a { font-weight: 700; }
.policy-content section {
  scroll-margin-top: 118px;
}
.policy-content section + section {
  margin-top: clamp(48px, 7vw, 80px);
  padding-top: clamp(40px, 6vw, 64px);
  border-top: 1px solid var(--line);
}
.policy-content h2 {
  font-size: clamp(28px, 4vw, 44px);
  line-height: 1.08;
}
.policy-data { margin-top: 28px; }
.policy-data > div {
  display: grid;
  grid-template-columns: minmax(150px, 0.7fr) minmax(0, 1.8fr);
  gap: 18px;
  padding-block: 22px;
  border-top: 1px solid var(--line);
}
.policy-data > div:last-child { border-bottom: 1px solid var(--line); }
.policy-data dt { font-family: Montserrat, sans-serif; font-size: 14px; font-weight: 900; }
.policy-data dd { margin: 0; color: var(--ink-soft); }
.cookie-table { margin-top: 28px; overflow-x: auto; border-block: 1px solid var(--line); }
.cookie-table table { width: 100%; min-width: 600px; border-collapse: collapse; }
.cookie-table th,
.cookie-table td { padding: 18px 16px; text-align: left; vertical-align: top; }
.cookie-table th { font-family: Montserrat, sans-serif; font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; }
.cookie-table td { border-top: 1px solid var(--line); color: var(--ink-soft); }
.cookie-table code { color: var(--black); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 14px; }
.policy-consent-control {
  min-height: 44px;
  padding: 8px 0;
  border: 0;
  border-bottom: 2px solid var(--red);
  background: transparent;
  color: var(--red);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.cookie-consent {
  position: fixed;
  z-index: 40;
  inset: auto auto max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
  width: min(420px, calc(100vw - 32px));
  padding: 24px;
  border: 1px solid var(--line);
  background: var(--white);
  box-shadow: 0 14px 36px rgba(35, 31, 32, 0.18);
}
.cookie-consent[hidden] { display: none; }
.cookie-consent h2 { color: var(--blue); font-size: 23px; font-weight: 700; line-height: 1.08; }
.cookie-consent p { margin-top: 14px; color: var(--ink-soft); font-size: 15px; line-height: 1.52; }
.cookie-consent p a { color: var(--blue); font-weight: 700; }
.cookie-consent-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 18px; }
.cookie-consent .button { min-width: 0; min-height: 44px; padding: 9px 10px; font-size: 12px; font-weight: 700; line-height: 1.1; }
.cookie-consent-choice { border-color: var(--blue); background: var(--blue); color: var(--white); }
.cookie-consent-choice:hover { border-color: var(--black); background: var(--black); }
@media (max-width: 700px) {
  .cookie-consent {
    inset-inline: 12px;
    width: auto;
    padding: 20px 18px 18px;
  }
  .cookie-consent h2 { font-size: 22px; }
  .cookie-consent p { font-size: 14px; }
  .cookie-consent-actions { gap: 6px; margin-top: 16px; }
  .cookie-consent .button { min-height: 42px; padding-inline: 6px; font-size: 11px; }
}
.booking-panel {
  align-self: start;
  border-left: 4px solid var(--red);
  padding-left: 26px;
}
.ticket-button { width: 100%; margin-top: 18px; }
.ticket-note {
  margin-top: 10px;
  color: var(--ink-soft);
  font-size: 15px;
}
.ticket-status {
  margin-top: 18px;
  color: var(--ink-soft);
  font-family: Montserrat, sans-serif;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.ticket-embed {
  width: 100%;
  min-height: 420px;
  margin: 24px 0;
  border: 1px solid var(--line);
  background: var(--white);
}

.archive-strip {
  background: var(--black);
  color: white;
  display: grid;
  gap: 14px;
}
.archive-strip a { color: white; }
.archive-events { display: grid; gap: 1px; margin-top: 24px; background: rgba(255,255,255,0.28); }
.archive-event {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px 18px;
  padding: 14px 0;
  color: white;
  text-decoration: none;
}
.archive-event time { color: rgba(255,255,255,0.82); font-size: 15px; }

@media (min-width: 701px) {
  .archive-event { padding-inline: 18px; }
}

.podcast-index {
  display: grid;
  gap: 1px;
  background: var(--line);
}
.podcast-index article {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: clamp(18px, 4vw, 44px);
  padding: clamp(22px, 5vw, 54px);
  background: var(--white);
}
.podcast-index img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
}
.podcast-index h2 { font-size: clamp(28px, 3vw, 44px); }
.podcast-index article > div { align-self: center; }
.podcast-index article > div > p:not(.kicker):not(.podcast-index-meta) { max-width: 58ch; margin-top: 12px; font-size: 20px; }
.podcast-index-meta { margin-top: 14px; color: var(--ink-soft); font-size: 16px; }
.podcast-index-empty { padding: clamp(48px, 8vw, 96px) var(--space); background: var(--white); }

.podcast-episode { padding: clamp(56px, 10vw, 132px) var(--space); }
.podcast-episode-intro { display: grid; gap: clamp(34px, 6vw, 88px); }
.podcast-episode-header { max-width: 800px; }
.podcast-episode-header h1 { margin-top: 12px; color: var(--blue); }
.podcast-episode-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px 28px; margin-top: 32px; padding-top: 22px; border-top: 1px solid var(--line); }
.podcast-episode-meta dt { color: var(--ink-soft); font-family: Montserrat, sans-serif; font-size: 11px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.podcast-episode-meta dd { margin: 7px 0 0; font-size: 19px; line-height: 1.25; }
.podcast-episode-image { margin: 0; background: var(--paper); }
.podcast-episode-image img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; }
.podcast-episode-copy { margin-top: clamp(34px, 5vw, 58px); }
.podcast-episode-copy p:first-child { color: var(--blue); font-size: clamp(23px, 3vw, 30px); line-height: 1.28; }
.podcast-player { display: grid; gap: 18px; margin-top: clamp(36px, 6vw, 64px); }
.podcast-player iframe { width: 100%; min-height: 152px; border: 0; border-radius: 0; }
.podcast-player .button { justify-self: start; }
.podcast-related-event { margin-top: clamp(54px, 8vw, 92px); padding: clamp(26px, 5vw, 46px); background: #eef3fb; border-left: 4px solid var(--blue); }
.podcast-related-event-body { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 20px; margin-top: 16px; }
.podcast-related-event-image { display: block; }
.podcast-related-event-image img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; }
.podcast-related-event h2 { margin-top: 0; font-size: clamp(28px, 4vw, 46px); }
.podcast-related-event-body > div > p { margin-top: 12px; color: var(--ink-soft); }
.podcast-related-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 18px 24px; margin-top: 24px; }
.podcast-transcript { max-width: none; margin-top: clamp(62px, 10vw, 120px); }
.podcast-transcript h2 { margin-top: 10px; }
.podcast-transcript-entry { padding-block: 20px; border-top: 1px solid var(--line); }
.podcast-transcript-entry:first-of-type { margin-top: 28px; }
.podcast-transcript-entry strong { color: var(--blue); font-family: Montserrat, sans-serif; font-size: 15px; }
.podcast-back-link { margin-top: 46px; }

@media (min-width: 861px) {
  .podcast-episode-intro {
    grid-template-columns: minmax(0, 1.12fr) minmax(300px, 0.88fr);
    align-items: start;
  }
  .podcast-episode-header { max-width: none; }
  .podcast-related-event-body { grid-template-columns: 240px minmax(0, 1fr); gap: 32px; }
  .podcast-related-event-image img { aspect-ratio: 4 / 3; }
}
.search-results article {
  max-width: 820px;
  padding: 26px 0;
  border-bottom: 1px solid var(--line);
}
.search-result-link {
  display: block;
  margin: -4px;
  padding: 4px;
  color: inherit;
  text-decoration: none;
}
.search-result-link h3 { color: var(--blue); transition: color 160ms ease; }
.search-result-link:hover h3 { color: var(--red); }
.search-result-link:focus-visible { outline: 3px solid var(--blue); outline-offset: 4px; }
.search-results > .kicker + h2 { margin-top: 10px; }
.search-results .search-page-form { margin-bottom: clamp(42px, 6vw, 76px); }
.search-results article h3 { margin-bottom: 12px; }
.search-results article p:last-child { max-width: 58ch; color: var(--ink-soft); }
.search-results h2,
.search-results article h3,
.search-results article p { overflow-wrap: anywhere; }
.search-panel-live-results {
  max-width: var(--measure);
  margin-top: 26px;
  padding-top: 24px;
  border-top: 1px solid rgba(255,255,255,0.35);
}
.search-panel-live-results .kicker { color: #d9e5ff; }
.search-panel-live-results h2,
.search-panel-live-results .search-result-link,
.search-panel-live-results .search-result-link h3,
.search-panel-live-results .search-result-link p { color: var(--white); }
.search-panel-live-results .search-result-link .kicker { color: #d9e5ff; }
.search-panel-live-results .search-result-link:hover h3 { color: #d9e5ff; }
.search-panel-live-results .search-result-link:focus-visible { outline-color: var(--white); }
.search-panel-live-results article { padding: 18px 0; border-bottom: 1px solid rgba(255,255,255,0.28); }
.search-panel-live-results article h3 { margin: 8px 0; }
.search-panel-live-results .search-result-link p:last-child { color: #e8efff; }

[data-reveal] {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 650ms ease, transform 650ms ease;
}
[data-reveal][data-visible] {
  opacity: 1;
  transform: translateY(0);
}

.admin-shell {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  min-height: 100vh;
  background: #f4f5f7;
  font-size: 16px;
}
.admin-sidebar {
  position: sticky;
  top: 0;
  height: 100vh;
  display: flex;
  flex-direction: column;
  gap: 34px;
  padding: 24px;
  background: var(--white);
  border-right: 1px solid var(--line);
}
.admin-brand {
  display: inline-flex;
  line-height: 0;
}
.admin-brand img {
  inline-size: min(100%, 210px);
}
.admin-sidebar nav {
  display: grid;
  gap: 7px;
}
.admin-sidebar a {
  text-decoration: none;
  font-weight: 700;
}
.logout-form {
  margin-top: auto;
}
.logout-form button {
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
  font: inherit;
}
.admin-main { padding: clamp(24px, 5vw, 56px); }
.admin-top { margin-bottom: 28px; }
.admin-top h1 { font-size: clamp(36px, 5vw, 64px); }
.admin-role {
  margin-top: 8px;
  color: var(--ink-soft);
}
.metric-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 1px;
  background: var(--line);
  margin-bottom: 28px;
}
.metric-grid article {
  background: var(--white);
  padding: 24px;
}
.metric-grid span {
  display: block;
  font-family: Montserrat, sans-serif;
  font-size: 42px;
  font-weight: 900;
  color: var(--blue);
}
.admin-columns {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(260px, 0.6fr);
  gap: 24px;
}
.admin-columns > div, .empty-state, .login-panel {
  background: var(--white);
  padding: 24px;
}
.cms-preview {
  display: grid;
  grid-template-columns: 180px 1fr;
  gap: 20px;
  align-items: center;
}
.cms-preview img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.media-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1px;
  background: var(--line);
}
.media-grid article {
  background: var(--white);
}
.media-grid img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.media-grid div {
  padding: 16px;
}
.media-grid h3 {
  font-size: 18px;
  overflow-wrap: anywhere;
}
.media-meta-form {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}
.media-meta-form label {
  gap: 5px;
  font-size: 13px;
}
.media-meta-form input[type="range"] {
  width: 100%;
  accent-color: var(--blue);
}
.settings-list {
  display: grid;
  gap: 1px;
  background: var(--line);
}
.analytics-policy {
  margin-bottom: 28px;
}
.settings-list article {
  background: var(--white);
  padding: 24px;
}
.settings-list h2 {
  font-size: 28px;
  margin-bottom: 12px;
}
.admin-section-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 18px;
}
.admin-section-heading h2, .admin-columns h2 { font-size: 28px; }
table {
  width: 100%;
  border-collapse: collapse;
  background: var(--white);
}
th, td {
  padding: 14px 12px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
  overflow-wrap: anywhere;
}
th {
  font-family: Montserrat, sans-serif;
  font-size: 12px;
  text-transform: uppercase;
}
.admin-auth {
  min-height: 100vh;
  display: grid;
  place-items: center;
  background: var(--paper);
}
.login-panel {
  width: min(100% - 32px, 440px);
  display: grid;
  gap: 20px;
}
.login-logo {
  inline-size: min(100%, 240px);
}
.login-panel h1 { font-size: 40px; }
.login-panel form, .editor-form {
  display: grid;
  gap: 16px;
}
.editor-actions {
  margin-bottom: 18px;
}
.form-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}
.form-grid.three {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.form-error {
  padding: 12px;
  border-left: 4px solid var(--red);
  background: #fff1f1;
}
.form-success {
  padding: 12px;
  border-left: 4px solid var(--blue);
  background: #eef3fb;
}
.inline-admin-action {
  margin: 18px 0;
}
.notice {
  margin-bottom: 18px;
  padding: 12px;
  border-left: 4px solid var(--blue);
  background: #eef3fb;
}
.status-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 18px;
}
.status-tabs a {
  padding: 8px 12px;
  border: 1px solid var(--line);
  background: var(--white);
  color: var(--black);
  text-decoration: none;
  font-weight: 700;
}
.status-tabs a[aria-current="page"] {
  border-color: var(--blue);
  color: var(--blue);
}
.status-pill {
  font-family: Montserrat, sans-serif;
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
  white-space: nowrap;
  overflow-wrap: normal;
  word-break: normal;
}
.status-published { color: var(--blue); }
.status-draft { color: var(--black); }
.status-archived { color: var(--red); }
.event-library-table th:nth-child(4),
.event-library-table td:nth-child(4) {
  width: 104px;
  min-width: 104px;
}
.action-stack {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.inline-form {
  display: inline;
}
.inline-form button {
  border: 0;
  background: none;
  cursor: pointer;
  font: inherit;
  padding: 0;
}
.admin-delete-action {
  color: #8a171b;
}
.upload-form {
  display: grid;
  grid-template-columns: minmax(180px, 0.9fr) minmax(220px, 1.1fr) minmax(180px, 0.8fr) auto;
  gap: 14px;
  align-items: end;
  margin-bottom: 24px;
  padding: 20px;
  background: var(--white);
}
.check {
  display: flex;
  align-items: center;
  gap: 10px;
}
.check input { width: auto; min-height: 0; }

@media (min-width: 1600px) {
  .site-header {
    min-height: 100px;
    padding-inline: clamp(70px, 6vw, 112px);
  }
  .site-logo {
    inline-size: min(435px, 34vw);
  }
  .site-nav {
    gap: clamp(28px, 2vw, 44px);
  }
}

@media (min-width: 861px) {
  .footer-logo {
    inline-size: min(180px, 48vw);
  }
}

@media (max-width: 1180px) {
  .search-panel { top: 88px; }
  .site-header {
    min-height: 88px;
    padding-block: 15px;
  }
  .site-logo {
    inline-size: min(351px, 55vw);
  }
  .site-nav {
    gap: clamp(12px, 1.6vw, 22px);
  }
}

@media (max-width: 1100px) {
  .site-footer { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 1050px) {
  .google-reviews {
    grid-template-columns: 1fr;
    gap: clamp(38px, 6vw, 64px);
  }
  .review-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .review-card:nth-child(3):last-child {
    grid-column: 1 / -1;
  }
}

@media (max-width: 860px) {
  .events-hero {
    min-height: min(58svh, 620px);
  }
  .events-hero::after {
    background: linear-gradient(0deg, rgba(35,31,32,0.84) 0%, rgba(35,31,32,0.38) 72%, rgba(35,31,32,0.16) 100%);
  }
  .podcasts-hero {
    min-height: min(58svh, 620px);
  }
  .podcasts-hero::after {
    background: linear-gradient(0deg, rgba(17,40,82,0.86) 0%, rgba(22,57,111,0.42) 72%, rgba(17,40,82,0.16) 100%);
  }
  .icon-button { display: block; }
  .site-nav {
    position: fixed;
    inset: 82px 0 auto 0;
    display: none;
    padding: 24px var(--space);
    background: #fff;
    border-bottom: 1px solid var(--line);
  }
  .nav-open .site-nav { display: grid; }
  .site-header {
    min-height: 82px;
    padding-block: 14px;
    padding-inline: clamp(16px, 5vw, 34px);
  }
  .site-logo {
    inline-size: min(295px, calc(100vw - 120px));
  }
  .search-panel { top: 82px; padding-block: 18px 22px; }
  .hero { min-height: clamp(340px, 46svh, 480px); }
  .hero::after {
    background: linear-gradient(0deg, rgba(35,31,32,0.92) 0%, rgba(35,31,32,0.64) 58%, rgba(35,31,32,0.30) 100%);
  }
  .hero-slide {
    object-position: var(--hero-focal-mobile-x, 50%) var(--hero-focal-mobile-y, 50%) !important;
  }
  h1 { font-size: clamp(38px, 12vw, 58px); }
  .hero-copy {
    width: 100%;
    max-width: none;
    padding-top: 28px;
    padding-bottom: 32px;
  }
  .hero-copy h1 {
    max-width: 16ch;
    font-size: clamp(32px, 8.4vw, 43px);
  }
  .hero-copy p:last-of-type {
    margin: 12px 0 18px;
    font-size: clamp(18px, 5vw, 21px);
  }
  .hero-actions .button {
    flex: 1 1 0;
    min-width: 0;
    padding-inline: 8px;
    font-size: clamp(10px, 2.9vw, 12px);
    white-space: nowrap;
  }
  .section-heading {
    display: grid;
    justify-content: start;
    align-items: start;
  }
  .editorial-split,
  .google-reviews,
  .newsletter,
  .support-donation,
  .visit-local-guide .section-heading,
  .artist-resource-introduction,
  .visit-listowel,
  .detail-grid,
  .admin-shell,
  .admin-columns {
    grid-template-columns: 1fr;
  }
  .event-row {
    grid-template-columns: 112px 1fr;
  }
  .event-row .event-actions {
    grid-column: 2;
    justify-content: flex-start;
  }
  .podcast-grid,
  .metric-grid,
  .form-grid,
  .form-grid.three,
  .upload-form {
    grid-template-columns: 1fr;
  }
  .podcast-index article {
    grid-template-columns: 96px 1fr;
  }
  .podcast-episode-meta { grid-template-columns: 1fr; gap: 16px; }
  .podcast-episode-image { margin-inline: calc(var(--space) * -1); }
  .podcast-player iframe { min-height: 152px; }
  .artist-resource-facts dl { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 0; }
  .visit-local-guide .section-heading > p { margin-top: 20px; }
  .artist-resource-facts dl > div:nth-child(3) { padding-left: 0; border-left: 0; }
  .site-footer {
    display: grid;
    grid-template-columns: 1fr;
    align-items: start;
  }
  .site-footer nav {
    justify-content: flex-start;
  }
  .support-donation { align-items: start; }
  .policy-data > div { grid-template-columns: 1fr; gap: 8px; }
  .admin-sidebar {
    position: relative;
    height: auto;
  }
  .newsletter-signup__form .emailoctopus-form .main-form {
    grid-template-columns: 1fr;
    align-items: stretch;
  }
  .newsletter-signup__form .emailoctopus-form input[type='submit'] { width: 100%; }
}

@media (max-width: 360px) {
  .hero-actions .button { flex-basis: 100%; }
}

@media (min-width: 601px) and (max-width: 860px) {
  .event-row {
    grid-template-columns: minmax(144px, 160px) minmax(0, 1fr);
    align-items: start;
  }
  .event-row .event-actions { margin-top: 2px; }
}

@media (max-width: 700px) {
  .resource-document-grid,
  .visit-local-guide-grid { grid-template-columns: 1fr; }
  .artist-resource-facts dl { grid-template-columns: 1fr; }
  .artist-resource-facts dl > div,
  .artist-resource-facts dl > div:nth-child(3) { padding: 22px 0; border-top: 1px solid rgba(255,255,255,0.32); border-left: 0; }
  .artist-resource-facts dl > div:first-child { padding-top: 0; border-top: 0; }
  .visit-local-guide-link { min-height: 0; padding-block: 22px; }
  .visit-local-guide-link:last-child { grid-column: auto; }
  .footer-supporter-logos { gap: 22px; }
  .footer-arts-council-logo { block-size: 50px; }
  .footer-kerry-council-logo { block-size: 48px; }
  .event-filter-controls { gap: 7px; }
  .google-reviews {
    gap: 30px;
    scroll-margin-top: 94px;
  }
  .review-grid {
    grid-template-columns: 1fr;
  }
  .review-card:nth-child(3):last-child {
    grid-column: auto;
  }
  .google-reviews-summary > p:not(.kicker):not(.google-attribution) {
    font-size: 19px;
    line-height: 1.45;
  }
  .review-card,
  .reviews-empty {
    gap: 14px;
    padding: 20px;
  }
  .review-text {
    font-size: 18px;
  }
  .review-actions {
    display: grid;
    grid-template-columns: 1fr;
  }
  .review-actions .button {
    width: 100%;
    justify-content: center;
  }
  .archive-event {
    grid-template-columns: auto minmax(0, 1fr);
  }
  .archive-event time {
    grid-column: 2;
  }
}

@media (max-width: 600px) {
  .nav-open .site-nav {
    grid-template-columns: minmax(0, 1fr);
    justify-content: stretch;
    justify-items: center;
    gap: 8px;
    text-align: center;
  }
  .site-nav a,
  .site-nav .text-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    font-size: 16px;
  }
  .event-row {
    grid-template-columns: minmax(0, 1fr) 44px;
    align-items: start;
    column-gap: 16px;
    row-gap: 16px;
    padding-block: 28px;
  }
  .event-row {
    margin-inline: calc(var(--space) * -1);
    padding-inline: var(--space);
  }
  .event-image {
    grid-column: 1 / -1;
    grid-row: 1;
    aspect-ratio: 3 / 2;
    margin-block-end: 8px;
  }
  .event-copy { display: contents; }
  .event-copy .event-meta {
    grid-column: 1 / -1;
    grid-row: 2;
    inline-size: 100%;
    align-items: center;
  }
  .event-copy h3 {
    grid-column: 1;
    grid-row: 3;
  }
  .event-row .event-summary {
    grid-column: 1;
    grid-row: 4;
    display: block;
    overflow: visible;
    -webkit-line-clamp: unset;
    line-clamp: unset;
    min-block-size: 0;
    max-block-size: none;
  }
  .event-meta {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    flex-wrap: nowrap;
    column-gap: 8px;
  }
  .event-meta time {
    display: grid;
    align-items: center;
    min-inline-size: 0;
    line-height: 1.15;
    overflow: visible;
  }
  .event-meta time span {
    display: block;
    overflow: visible;
  }
  .event-row .event-actions {
    grid-column: 2;
    grid-row: 3;
    align-self: start;
    inline-size: 44px;
    block-size: 0;
    min-block-size: 0;
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: stretch;
    justify-content: flex-start;
    gap: 8px;
    margin: 0;
    overflow: visible;
  }
  .event-icon-action::after {
    display: none;
  }
  .review-card:nth-child(n + 3) {
    display: none;
  }
}

@media (max-width: 430px) {
  .site-header {
    min-height: 78px;
    gap: 12px;
  }
  .site-logo {
    inline-size: min(267px, calc(100vw - 112px));
  }
  .site-nav {
    inset-block-start: 78px;
  }
  .search-panel { top: 78px; }
  .search-panel form div {
    grid-template-columns: 1fr;
  }
  .search-panel form .button { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
  .hero-slide:not(.is-active) { display: none; }
}
