:root {
  --sky-top: #6f95ad;
  --sky-mid: #82a2b2;
  --sky-low: #aebdbb;
  --sky-horizon: #d2c29f;
  --sky-deep: #315a70;
  --navy: #183b50;
  --navy-dark: #102f42;
  --cream: #f3ecdc;
  --cream-dim: rgba(243, 236, 220, .76);
  --gold: #d99c31;
  --gold-light: #e8b65a;
  --line: rgba(243, 236, 220, .18);
  --glass: rgba(19, 55, 74, .58);
  --shadow: 0 24px 65px rgba(9, 25, 35, .28);
  --ease-out: cubic-bezier(.18, .78, .23, 1);
  --ease-soft: cubic-bezier(.45, .05, .55, .95);
  --page: min(1180px, calc(100vw - 40px));
}

* { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  scroll-padding-top: 92px;
  overflow-x: clip;
}

body {
  margin: 0;
  min-width: 320px;
  font-family: "Poppins", system-ui, sans-serif;
  color: var(--cream);
  background: var(--sky-deep);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

button,
select,
a { font: inherit; }

button,
a { -webkit-tap-highlight-color: transparent; }

a { color: inherit; text-decoration: none; }

.skip-link {
  position: fixed;
  z-index: 1000;
  top: 12px;
  left: 12px;
  padding: 10px 14px;
  color: var(--navy-dark);
  background: var(--cream);
  border-radius: 8px;
  transform: translateY(-160%);
}

.skip-link:focus { transform: translateY(0); }

:focus-visible {
  outline: 3px solid var(--gold-light);
  outline-offset: 4px;
}

.scroll-progress {
  position: fixed;
  inset: 0 0 auto;
  height: 3px;
  z-index: 100;
}

.scroll-progress span {
  display: block;
  width: 100%;
  height: 100%;
  background: var(--gold-light);
  transform: scaleX(0);
  transform-origin: left;
}

.sky {
  position: fixed;
  inset: 0;
  z-index: -2;
  overflow: hidden;
  pointer-events: none;
}

.sky__gradient {
  position: absolute;
  inset: -8% 0;
  background: linear-gradient(
    180deg,
    var(--sky-top) 0%,
    var(--sky-mid) 34%,
    var(--sky-low) 68%,
    var(--sky-horizon) 100%
  );
}

.sky__grain {
  position: absolute;
  inset: -20%;
  opacity: .16;
  mix-blend-mode: soft-light;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.clouds {
  position: absolute;
  left: -10%;
  width: 120%;
  height: 60vh;
  will-change: translate;
  background-image: url("assets/cloud.webp");
  background-repeat: repeat-x;
}

.clouds--far {
  top: 5vh;
  height: 38vh;
  background-size: 360px auto;
  opacity: .3;
  filter: blur(1.4px);
  animation: drift-far 140s linear infinite;
}

.clouds--mid {
  top: 28vh;
  height: 46vh;
  background-size: 520px auto;
  opacity: .44;
  animation: drift-mid 105s linear infinite;
}

.clouds--near {
  top: 54vh;
  height: 60vh;
  background-size: 760px auto;
  opacity: .6;
  filter: blur(.5px);
  animation: drift-near 74s linear infinite;
}

@keyframes drift-far { to { background-position-x: -360px; } }
@keyframes drift-mid { to { background-position-x: 520px; } }
@keyframes drift-near { to { background-position-x: -760px; } }

.sky__vignette {
  position: absolute;
  inset: 0;
  background: radial-gradient(120% 88% at 50% 36%, transparent 60%, rgba(18, 46, 60, .22) 100%);
}

.nav {
  position: fixed;
  z-index: 80;
  inset: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 76px;
  padding: 12px clamp(18px, 4vw, 58px);
  transition: background .25s ease, box-shadow .25s ease, min-height .25s ease;
}

.nav.is-stuck {
  min-height: 66px;
  background: rgba(43, 82, 101, .65);
  backdrop-filter: blur(14px);
  box-shadow: 0 1px 0 rgba(255, 255, 255, .08);
}

.nav__brand {
  font-family: "Anton", sans-serif;
  font-size: 1.55rem;
  letter-spacing: .025em;
}

.nav__brand span,
.footer__brand span { color: var(--gold-light); }

.nav__links {
  display: flex;
  align-items: center;
  gap: clamp(14px, 2.2vw, 30px);
  font-size: .9rem;
  font-weight: 600;
}

.nav__links > a:not(.nav__cta) {
  position: relative;
  padding: 8px 0;
}

.nav__links > a:not(.nav__cta)::after {
  content: "";
  position: absolute;
  left: 0;
  right: 100%;
  bottom: 3px;
  height: 2px;
  background: var(--gold-light);
  transition: right .22s ease;
}

.nav__links > a:not(.nav__cta):hover::after { right: 0; }

.nav__language { position: relative; }

.nav__lang {
  display: flex;
  align-items: center;
  gap: 7px;
  min-height: 38px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(38, 75, 94, .34);
  backdrop-filter: blur(8px);
}

.nav__lang-icon { flex: none; opacity: .82; }

.nav__select {
  max-width: 176px;
  color: var(--cream);
  background: transparent;
  border: 0;
  outline: 0;
  cursor: pointer;
  font-size: .82rem;
  font-weight: 600;
}

.nav__select option { color: #15384c; background: #f3ecdc; }

.nav__language-note {
  position: absolute;
  top: calc(100% + 4px);
  right: 2px;
  white-space: nowrap;
  font-size: .55rem;
  letter-spacing: .025em;
  opacity: .66;
}

.nav__cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 42px;
  padding: 0 16px;
  color: var(--navy-dark);
  background: var(--gold-light);
  border-radius: 999px;
  box-shadow: 0 8px 22px rgba(18, 42, 55, .2);
  transition: transform .2s ease, background .2s ease;
}

.nav__cta:hover { transform: translateY(-2px); background: #f0c571; }
.nav__cta svg { width: 15px; fill: none; stroke: currentColor; stroke-width: 1.8; }

.hero {
  position: relative;
  display: grid;
  place-items: start center;
  min-height: 100svh;
  padding: clamp(108px, 12vh, 142px) 20px 120px;
  overflow: clip;
}

.hero__inner {
  position: relative;
  z-index: 4;
  width: min(1240px, 96vw);
  text-align: center;
}

.kicker {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(16px, 2.2vw, 28px);
  width: auto;
  margin: 0 auto clamp(10px, 1.5vh, 18px);
  font-size: clamp(.82rem, 1.25vw, 1.06rem);
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  translate: 0 -22px;
}

.kicker__rule {
  width: clamp(38px, 6vw, 74px);
  height: 2px;
  background: var(--cream);
  border-radius: 2px;
  transform: scaleX(0);
}

.kicker__rule:first-child { transform-origin: right; }
.kicker__rule:last-child { transform-origin: left; }
.is-revealed .kicker__rule { transform: scaleX(1); transition: transform .9s .12s var(--ease-out); }

.title {
  margin: 0;
  color: var(--cream);
  font-family: "Anton", sans-serif;
  font-size: clamp(5rem, 21vw, 18rem);
  font-weight: 400;
  line-height: .77;
  letter-spacing: .008em;
  text-shadow: 0 9px 32px rgba(10, 25, 35, .35);
}

.title .char { display: inline-block; }

.title__dot {
  display: inline-block;
  width: .17em;
  height: .17em;
  margin-left: .04em;
  color: transparent;
  background: var(--gold-light);
  border-radius: 2px;
  overflow: hidden;
}

.subtitle {
  margin: .28em 0 0;
  color: var(--cream);
  font-family: "Archivo Black", "League Spartan", sans-serif;
  font-size: clamp(1.75rem, 6vw, 5rem);
  font-weight: 400;
  line-height: .92;
  letter-spacing: -.045em;
  text-shadow: 0 6px 22px rgba(10, 25, 35, .3);
}

.subtitle .word,
.panel__title .word { display: inline-block; margin: 0 .09em; }

.js .reveal,
.js .char,
.js .word {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .72s var(--ease-out), transform .72s var(--ease-out);
}

.js .reveal.is-revealed,
.js .is-revealed .char,
.js .is-revealed .word,
.js .char.is-revealed,
.js .word.is-revealed {
  opacity: 1;
  transform: translateY(0);
}

.vlaai-rig {
  position: absolute;
  z-index: 3;
  top: clamp(505px, 52vh, 540px);
  bottom: auto;
  left: 50%;
  width: clamp(230px, min(18vw, calc((100svh - 545px) * .6667)), 270px);
  transform: translateX(-50%);
  pointer-events: none;
  will-change: translate;
}

.vlaai-drop { transform: translateY(-120vh); }
.js .vlaai-drop { animation: vlaai-fall 1.5s cubic-bezier(.31, .71, .36, 1) .3s forwards; }

@keyframes vlaai-fall {
  0% { transform: translateY(-120vh); }
  72% { transform: translateY(1.4vh); }
  88% { transform: translateY(-.45vh); }
  100% { transform: translateY(0); }
}

.vlaai-swing {
  position: relative;
  transform-origin: 50% -150px;
  animation: bungel 7.4s ease-in-out 1.35s infinite;
}

/* The cord is drawn from gradients rather than tiled from a plate. The
   29x500 rope-extension.png repeated roughly twice inside the string and
   its two ends don't meet — 3px of lateral jump and a dark band — so it
   left a visible kink about halfway down (51% at desktop, clear of the
   mask fade). Gradients have no loop point, so there is nothing to seam.

   Every number below is measured off the cord in vlaai-clean.webp, so the
   drawn rope and the photographed one meet without a step:
     left  50.45%  cord centroid, ~4.7px right of the 1023px plate centre
     width  1.09%  cord is ~11px wide where it leaves the top of the plate
     63deg         twist rake, down-right (the old -68deg leaned the wrong
                   way — the real cord climbs to the right, not the left)
     1.34px        band spacing, i.e. the cord's 3px vertical period here
     11px          ply beat, deliberately incommensurate with the twist so
                   the two never line back up into a repeating pattern
   The body stops are the cord's own cross-section, taken from full-alpha
   columns only: dark rim at the left, highlight at 76%, right-hand rim
   falling away. It is lit from the right, not down the middle.

   --string-overlap tucks the cord into the slice as a % of the plate, so
   it holds at every breakpoint instead of drifting the way a fixed px
   value does; z-index keeps it behind the vlaai, hiding the bottom cut. */
.string {
  --string-overlap: 16%;
  position: absolute;
  z-index: -1;
  left: 50.45%;
  bottom: calc(100% - var(--string-overlap));
  width: clamp(2px, 1.09%, 3.4px);
  height: calc(clamp(135px, 18vh, 175px) + var(--string-overlap));
  transform: translateX(-50%);
  background-image:
    repeating-linear-gradient(63deg,
      rgba(58, 42, 22, .46)    0     .38px,  rgba(58, 42, 22, 0)    .38px  .78px,
      rgba(255, 248, 228, .46) .78px 1.08px, rgba(255, 248, 228, 0) 1.08px 1.34px),
    repeating-linear-gradient(180deg,
      rgba(52, 38, 20, .18)    0     1.6px, rgba(52, 38, 20, 0)    1.6px 5.4px,
      rgba(255, 246, 224, .16) 5.4px 7.2px, rgba(255, 246, 224, 0) 7.2px 11px),
    linear-gradient(90deg,
      #82593d 0%, #986641 12%, #a57b51 21%, #bc9468 30%, #c9a378 39%,
      #cdae7f 48%, #ceb380 57%, #d5b685 66%, #e3c198 76%, #dfc498 85%,
      #b7915a 94%, #8f6d43 100%);
  filter: drop-shadow(1px 0 1px rgba(42, 34, 25, .22));
  mask-image: linear-gradient(to bottom, transparent 0%, rgba(0, 0, 0, .18) 28%, #000 45%);
}

.vlaai {
  display: block;
  width: 100%;
  height: auto;
  filter: drop-shadow(0 25px 30px rgba(12, 26, 34, .38));
}

@keyframes bungel {
  0%, 100% { transform: rotate(-2.8deg); }
  50% { transform: rotate(2.8deg); }
}

.hero__facts {
  position: absolute;
  z-index: 5;
  bottom: clamp(54px, 7vh, 82px);
  display: flex;
  flex-direction: column;
  gap: 11px;
  max-width: 270px;
  text-shadow: 0 3px 14px rgba(10, 25, 35, .48);
}

.hero__facts p {
  display: flex;
  flex-direction: column;
  margin: 0;
  line-height: 1.18;
}

.hero__facts strong,
.hero__facts span {
  font-family: "League Spartan", sans-serif;
  font-size: clamp(1rem, 1.65vw, 1.38rem);
  font-weight: 700;
}

.hero__fact-label {
  margin-bottom: 3px;
  font-weight: 700;
  letter-spacing: 0;
  opacity: .86;
}

.hero__facts--times { left: clamp(20px, 5vw, 82px); text-align: left; }
.hero__facts--where { right: clamp(20px, 5vw, 82px); gap: 6px; text-align: right; }

.scroll-hint {
  position: absolute;
  z-index: 6;
  bottom: 30px;
  left: 50%;
  display: none;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  transform: translateX(-50%);
  font-size: .62rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  opacity: .7;
}

.scroll-hint__arrow {
  width: 10px;
  height: 10px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(45deg);
  animation: arrow-bob 1.8s ease-in-out infinite;
}

@keyframes arrow-bob {
  0%, 100% { translate: 0 -2px; }
  50% { translate: 0 4px; }
}

.panel {
  position: relative;
  z-index: 2;
  width: var(--page);
  margin: 0 auto;
  padding: clamp(86px, 12vw, 148px) 0;
}

.panel__head { max-width: 870px; margin-bottom: clamp(52px, 8vw, 88px); }

.eyebrow,
.program-block__kicker {
  margin: 0 0 12px;
  color: var(--gold-light);
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.panel__title {
  margin: 0;
  font-family: "League Spartan", sans-serif;
  font-size: clamp(3rem, 8.2vw, 6.9rem);
  font-weight: 700;
  line-height: .88;
  letter-spacing: -.045em;
}

.program .panel__title {
  font-family: "Anton", sans-serif;
  font-weight: 400;
  letter-spacing: .008em;
  line-height: 1.04;
  text-transform: uppercase;
}

.panel__intro {
  max-width: 650px;
  margin: 24px 0 0;
  color: var(--cream-dim);
  font-size: clamp(1rem, 1.8vw, 1.24rem);
  line-height: 1.62;
}

.program,
.info {
  width: min(1240px, calc(100vw - 32px));
}

.program::before,
.info::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 44px -4vw;
  background: linear-gradient(145deg, rgba(35, 78, 98, .46), rgba(243, 236, 220, .075));
  border: 1px solid rgba(243, 236, 220, .22);
  border-radius: clamp(26px, 4vw, 48px);
  box-shadow: var(--shadow);
  backdrop-filter: blur(9px) saturate(112%);
}

.program-block + .program-block { margin-top: 88px; }

.program-block__head {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 32px;
  margin-bottom: 28px;
}

.program-block__head h3 {
  margin: 0;
  font-family: "League Spartan", sans-serif;
  font-size: clamp(2.3rem, 5.2vw, 4.6rem);
  font-weight: 700;
  line-height: .95;
  text-transform: none;
}

.program-block__head > p {
  max-width: 350px;
  margin: 0 0 4px;
  color: var(--cream-dim);
  font-size: .88rem;
  line-height: 1.5;
  text-align: right;
}

.schedule-list {
  display: grid;
  gap: 12px;
}

.schedule-card {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(243, 236, 220, .24);
  border-radius: 20px;
  background: linear-gradient(135deg, rgba(243, 236, 220, .105), rgba(44, 84, 103, .2));
  backdrop-filter: blur(7px);
  transition: border-color .35s ease, background .35s ease, transform .35s var(--ease-out), box-shadow .35s ease;
}

.schedule-card:hover {
  transform: translateY(-3px);
  border-color: rgba(232, 182, 90, .5);
}

.schedule-card.is-open {
  transform: translateY(-3px);
  border-color: var(--gold-light);
  background: linear-gradient(135deg, rgba(46, 88, 106, .72), rgba(243, 236, 220, .09));
  box-shadow: 0 18px 44px rgba(7, 24, 33, .26), inset 4px 0 0 var(--gold-light);
}

.schedule-card__trigger {
  display: grid;
  grid-template-columns: 118px minmax(0, 1fr) 42px;
  align-items: center;
  gap: clamp(14px, 2.5vw, 34px);
  width: 100%;
  min-height: 118px;
  padding: 20px clamp(18px, 3vw, 34px);
  color: var(--cream);
  text-align: left;
  background: none;
  border: 0;
  cursor: pointer;
}

.schedule-card__time {
  align-self: stretch;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 10px;
  padding-right: 12px;
  color: var(--gold-light);
  border-right: 1px solid var(--line);
  font-family: "Anton", sans-serif;
  font-size: 1.1rem;
  line-height: 1;
  text-transform: uppercase;
}

.schedule-card__slot {
  display: flex;
  align-items: center;
  gap: 3px;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.activity-note {
  margin: 20px 4px 0;
  max-width: 650px;
  color: var(--cream-dim);
  font-size: .8rem;
  line-height: 1.6;
}

.schedule-card__summary {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.schedule-card__type {
  margin-bottom: 3px;
  color: var(--gold-light);
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.schedule-card__summary strong {
  font-family: "League Spartan", sans-serif;
  font-size: clamp(1.45rem, 3.6vw, 2.65rem);
  line-height: .98;
  letter-spacing: -.025em;
}

.schedule-card__summary > span:last-child {
  margin-top: 7px;
  color: var(--cream-dim);
  font-size: clamp(.82rem, 1.5vw, .98rem);
  line-height: 1.45;
}

.schedule-card__chevron {
  position: relative;
  display: block;
  width: 36px;
  height: 36px;
  border: 1px solid var(--line);
  border-radius: 50%;
  transition: transform .4s var(--ease-out), border-color .25s ease, background .25s ease;
}

.schedule-card__chevron::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 9px;
  height: 9px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translate(-50%, -70%) rotate(45deg);
}

.schedule-card.is-open .schedule-card__chevron {
  color: var(--navy-dark);
  background: var(--gold-light);
  border-color: var(--gold-light);
  transform: rotate(180deg);
}

.schedule-card__detail {
  display: grid;
  grid-template-rows: 0fr;
  visibility: hidden;
  transition: grid-template-rows .5s var(--ease-out), visibility 0s .5s;
}

.schedule-card.is-open .schedule-card__detail {
  grid-template-rows: 1fr;
  visibility: visible;
  transition: grid-template-rows .5s var(--ease-out), visibility 0s;
}

.schedule-card__detail-inner {
  overflow: hidden;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 22px;
  margin: 0 clamp(18px, 3vw, 34px);
  padding: 0 54px 0 152px;
  border-top: 1px solid transparent;
  opacity: 0;
  transform: translateY(-10px);
  transition: padding .5s var(--ease-out), opacity .22s ease, transform .35s ease, border-color .35s ease;
}

.schedule-card.is-open .schedule-card__detail-inner {
  padding-top: 28px;
  padding-bottom: 32px;
  border-color: var(--line);
  opacity: 1;
  transform: translateY(0);
  transition-delay: 0s, .16s, .12s, .1s;
}

.schedule-card__detail p {
  flex: 1 1 520px;
  max-width: 780px;
  margin: 0;
  color: var(--cream-dim);
  font-size: .96rem;
  line-height: 1.7;
}

[data-i18n-paragraphs] { flex: 1 1 520px; }
[data-i18n-paragraphs] p + p { margin-top: 1.1em; }
.info__lead p { margin: 0; }
.info__lead p + p { margin-top: 1.1em; }

.detail-status {
  display: inline-flex;
  align-items: center;
  min-height: 38px;
  padding: 0 13px;
  color: var(--cream);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: .67rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.detail-status--pending { border-style: dashed; color: var(--gold-light); }

.spotify-link,
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  min-height: 46px;
  padding: 0 18px;
  color: var(--navy-dark);
  background: var(--gold-light);
  border: 0;
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 700;
  transition: transform .2s ease, background .2s ease;
}

.spotify-link:hover { transform: translateY(-2px); background: #f0c571; }
.spotify-link span:first-child { font-size: .68rem; }
.btn--small { min-height: 42px; }
.btn--placeholder { opacity: .56; cursor: not-allowed; }

.program-divider {
  position: relative;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 20px;
  margin: clamp(68px, 10vw, 110px) 0;
}

.program-divider > span { height: 1px; background: var(--line); }
.program-divider i { width: 12px; height: 12px; background: var(--gold-light); border-radius: 2px; transform: rotate(45deg); }
.program-divider__note {
  position: absolute;
  left: 0;
  bottom: calc(100% + 14px);
  max-width: 100%;
  margin: 0;
  color: var(--cream-dim);
  font-size: .8rem;
  line-height: 1.5;
}

.show-block-label,
.pause-row {
  justify-content: flex-start;
  gap: 42px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin: 30px 4px 13px;
  color: var(--gold-light);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .15em;
  text-transform: uppercase;
}

.show-block-label strong,
.pause-row strong { font-family: "League Spartan", sans-serif; font-size: .9rem; letter-spacing: .05em; }

.pause-row {
  margin: 18px 0;
  padding: 17px 24px;
  color: var(--cream);
  border: 1px dashed rgba(243, 236, 220, .28);
  border-radius: 14px;
  background: rgba(243, 236, 220, .075);
  backdrop-filter: blur(6px);
}


.schedule-card--tba { border-style: dashed; }

.schedule-card--artist.is-open::after {
  content: "";
  position: absolute;
  z-index: 8;
  inset: -1px;
  pointer-events: none;
  border: 2px solid var(--gold-light);
  border-radius: inherit;
  box-shadow: inset 4px 0 0 var(--gold-light);
}

.schedule-card__detail-inner--artist {
  display: block;
  margin: 0;
  padding: 0;
  border-top: 0;
}

.schedule-card.is-open .schedule-card__detail-inner--artist {
  padding: 0;
  border-color: transparent;
}

.artist-detail__copy {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  min-height: 158px;
  margin: 0 clamp(18px, 3vw, 34px);
  padding: 30px 54px 34px 152px;
  border-top: 1px solid var(--line);
}

.artist-detail__copy p,
.artist-detail__copy > [data-i18n-paragraphs] {
  flex: 1 1 560px;
  max-width: 820px;
}

.artist-photo {
  position: relative;
  display: flex;
  align-items: end;
  width: 100%;
  height: clamp(300px, 48vw, 620px);
  margin: 0;
  overflow: hidden;
  border-top: 1px solid rgba(243, 236, 220, .24);
  background: #315a70;
}

.artist-photo--placeholder {
  isolation: isolate;
  background:
    radial-gradient(circle at 74% 26%, rgba(232, 182, 90, .28), transparent 25%),
    linear-gradient(135deg, rgba(19, 56, 74, .18), rgba(16, 47, 66, .82)),
    url("assets/cloud.webp") center / cover no-repeat,
    #668fa5;
}

.artist-photo--limbo { background-position: center, center, 20% 42%, center; }
.artist-photo--riethamer { background-position: center, center, 70% 55%, center; }
.artist-photo--basement { background-position: center, center, 45% 30%, center; }

.artist-photo--placeholder::before {
  content: attr(data-artist);
  position: absolute;
  z-index: -1;
  top: 50%;
  left: 50%;
  max-width: 92%;
  color: rgba(243, 236, 220, .14);
  font-family: "Anton", sans-serif;
  font-size: clamp(5rem, 14vw, 12rem);
  line-height: .86;
  text-align: center;
  text-transform: uppercase;
  white-space: nowrap;
  transform: translate(-50%, -50%);
}

.artist-photo--placeholder::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, transparent 45%, rgba(12, 39, 54, .78));
}

.artist-photo--real { isolation: isolate; }
.artist-photo--real::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(180deg, transparent 55%, rgba(12, 39, 54, .74));
}
.artist-photo--real .artist-photo__caption { position: relative; z-index: 2; }
.artist-photo--sophie .artist-photo__image { object-position: 50% 50%; }
.artist-photo--troubadours .artist-photo__image { object-position: 50% 28%; }
.artist-photo--melton .artist-photo__image { object-position: 50% 32%; }
.artist-photo--limbo .artist-photo__image { object-position: 50% 0%; }
.artist-photo--riethamer .artist-photo__image { object-position: 50% 0%; }
.artist-photo--basement .artist-photo__image { object-position: 48% 0%; }

.artist-photo__image {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.artist-photo__caption {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 4px 24px;
  width: 100%;
  padding: clamp(24px, 4vw, 48px);
}

.artist-photo__caption span,
.artist-photo__caption small {
  color: var(--gold-light);
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .15em;
  text-transform: uppercase;
}

.artist-photo__caption strong {
  grid-column: 1;
  font-family: "League Spartan", sans-serif;
  font-size: clamp(2.2rem, 6vw, 5.2rem);
  line-height: .92;
  letter-spacing: -.035em;
}

.artist-photo__caption small {
  grid-column: 2;
  grid-row: 1 / span 2;
  align-self: end;
  color: var(--cream-dim);
}

.host-note {
  margin: 28px 4px 0;
  color: var(--cream-dim);
  font-size: .92rem;
}

.host-note strong { color: var(--cream); }
.host-note summary { cursor: pointer; line-height: 1.6; }
.host-note p { max-width: 780px; line-height: 1.7; }
.host-note__intro { color: var(--cream); font-weight: 600; }

.info { padding-top: clamp(110px, 15vw, 180px); }

.info::before {
  background: linear-gradient(145deg, rgba(34, 77, 97, .48), rgba(243, 236, 220, .085));
}

.info__story { max-width: 900px; margin-bottom: 60px; }

/* Keep every line of the longer About heading flush with its eyebrow and body. */
#info-title { display: flex; flex-wrap: wrap; column-gap: .18em; line-height: 1.02; }
#info-title .word { margin: 0; }

.info__lead {
  max-width: 850px;
  margin: 30px 0 0;
  color: var(--cream-dim);
  font-size: clamp(1.05rem, 2.2vw, 1.45rem);
  line-height: 1.72;
}

.info__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}

.info-card {
  position: relative;
  min-height: 290px;
  padding: clamp(24px, 3.4vw, 38px);
  border: 1px solid rgba(243, 236, 220, .24);
  border-radius: 22px;
  background: linear-gradient(155deg, rgba(243, 236, 220, .115), rgba(42, 81, 100, .18));
  backdrop-filter: blur(7px);
}

.info-card__num {
  position: absolute;
  top: 23px;
  right: 26px;
  color: var(--gold-light);
  font-family: "Anton", sans-serif;
  font-size: 1rem;
}

.info-card h3 {
  margin: 0 0 45px;
  color: var(--gold-light);
  font-size: .7rem;
  letter-spacing: .15em;
  text-transform: uppercase;
}

.info-card__big {
  margin: 0 0 12px;
  font-family: "League Spartan", sans-serif;
  font-size: clamp(1.8rem, 3.1vw, 2.65rem);
  font-weight: 700;
  line-height: 1.02;
  letter-spacing: -.03em;
}

.info-card p:last-child { margin: 0; color: var(--cream-dim); line-height: 1.65; }

.mission-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  margin-top: 16px;
  border: 1px solid var(--line);
  border-radius: 22px;
  overflow: hidden;
  background: rgba(243, 236, 220, .065);
  backdrop-filter: blur(7px);
}

.mission-strip p {
  display: flex;
  align-items: baseline;
  gap: 13px;
  min-height: 110px;
  margin: 0;
  padding: 24px clamp(20px, 3vw, 34px);
}

.mission-strip p + p { border-left: 1px solid var(--line); }
.mission-strip strong { color: var(--gold-light); font-family: "Anton", sans-serif; font-size: clamp(2.3rem, 5vw, 4rem); font-weight: 400; }
.mission-strip span { font-size: .78rem; font-weight: 600; line-height: 1.35; }

.partners { width: var(--page); margin: 70px auto 0; }
.partners__list { display: flex; flex-wrap: wrap; gap: 18px 30px; align-items: start; }
.partner { display: flex; flex-direction: column; align-items: center; gap: 12px; }
.partner span { padding: 10px 14px; border: 1px solid var(--line); border-radius: 999px; font-size: .75rem; font-weight: 600; }
.partner img { width: 104px; height: 44px; object-fit: contain; }
.partner img[src$="tekstverslaafd.webp"] { filter: invert(1); }
.partners__note { margin-top: 24px; color: var(--cream-dim); font-size: .8rem; }
.partner--combined { max-width: 100%; }
.partner__names { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.partner__names a { display: flex; }
.partner--combined img { width: 270px; max-width: 100%; }
.partners__list--secondary { gap: 18px 26px; }
.partners__list--secondary .partner span { font-size: .68rem; padding: 8px 12px; }
.partners__list--secondary .partner img { width: 88px; height: 34px; }
.partners__list--secondary .partner img { filter: brightness(0) invert(1); }
.partners__list--secondary .partner img[src$="veldeke-remunj.png"],
.partners__list--secondary .partner img[src$="bibliorura.jpg"] {
  /* Black ink becomes white; the original white paper blends into the sky.
     Keep the source artwork untouched and preserve its antialiased edges. */
  filter: grayscale(1) contrast(5) invert(1);
  mix-blend-mode: screen;
}
.partner img[src$="bibliorura.jpg"] { border-radius: 3px; }
.footer__contact { width: 100%; margin-top: 12px; font-size: .8rem; }
.footer__contact a { text-decoration: underline; text-underline-offset: 3px; }
.partners__potential { opacity: .62; border-style: dashed !important; }

.footer {
  position: relative;
  z-index: 2;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: baseline;
  gap: 9px 22px;
  width: var(--page);
  margin: 90px auto 0;
  padding: 55px 20px 70px;
  text-align: center;
  border-top: 1px solid var(--line);
}

.footer__brand { font-family: "Anton", sans-serif; font-size: 1.5rem; }
.footer__tag { font-family: "League Spartan", sans-serif; font-size: 1.1rem; font-weight: 700; }
.footer__meta { width: 100%; margin-top: 3px; font-size: .78rem; opacity: .62; }
.footer__translation { width: 100%; max-width: 650px; margin-top: 12px; font-size: .68rem; line-height: 1.5; opacity: .48; }

@media (max-width: 900px) {
  .nav { align-items: flex-start; }
  .nav__links { gap: 16px; }
  .nav__language-note { display: none; }
  .nav__select { max-width: 135px; }
  .hero { min-height: 920px; }
  .vlaai-rig { top: 54%; bottom: auto; width: clamp(175px, 28vw, 220px); transform: translate(-50%, -1%); }
  .info__grid { grid-template-columns: 1fr; }
  .info-card { min-height: 230px; }
  .mission-strip { grid-template-columns: 1fr; }
  .mission-strip p { min-height: 86px; }
  .mission-strip p + p { border-left: 0; border-top: 1px solid var(--line); }
}

@media (min-width: 901px) and (max-height: 860px) {
  html { scroll-padding-top: 72px; }
  .hero { padding-top: clamp(96px, calc(8.6vh + 34px), 108px); }
  .kicker { margin-bottom: clamp(8px, 1.5vh, 13px); translate: 0 -19px; }
  .title { font-size: clamp(15.2rem, calc(32vh + 12px), 18rem); }
  .subtitle {
    margin-top: .2em;
    font-size: clamp(4.3rem, calc(12.4vh - 20px), 5.4rem);
  }
  .vlaai-rig {
    top: auto;
    bottom: 30px;
    width: clamp(180px, calc((100svh - 445px) * .6667), 220px);
  }
}

@media (max-width: 720px) {
  :root { --page: min(100% - 26px, 1180px); }

  html { scroll-padding-top: 126px; }

  .nav {
    flex-wrap: wrap;
    gap: 9px 16px;
    min-height: 106px;
    padding: 13px 15px 12px;
    background: rgba(40, 79, 98, .66);
    backdrop-filter: blur(12px);
  }

  .nav.is-stuck { min-height: 101px; }
  .nav__links { order: 2; width: 100%; justify-content: space-between; gap: 10px; font-size: .76rem; }
  .nav__language { margin-left: auto; }
  .nav__lang { min-height: 34px; padding: 0 8px; }
  .nav__select { max-width: 140px; font-size: .74rem; }
  .nav__cta { min-height: 35px; padding: 0 12px; }
  .nav__cta svg { display: none; }

  .hero {
    display: block;
    min-height: 880px;
    padding: 154px 13px 190px;
  }

  .kicker { gap: 8px; margin-bottom: 15px; font-size: .67rem; letter-spacing: .045em; translate: 0 -10px; }
  .kicker__rule { width: clamp(20px, 7vw, 34px); flex-shrink: 0; }
  .hero__inner { width: 100%; transform: translateY(-22px); }
  .title { font-size: clamp(4.65rem, 22.6vw, 8rem); }
  .subtitle { margin-top: .38em; font-size: clamp(1.8rem, 10vw, 3rem); }
  .vlaai-rig { top: 39%; bottom: auto; width: clamp(180px, 50vw, 225px); transform: translate(-50%, -1%); }

  .hero__facts {
    bottom: 75px;
    max-width: 45%;
    gap: 10px;
  }

  .hero__facts--times { left: 18px; }
  .hero__facts--where { right: 18px; gap: 5px; }
  .hero__facts strong,
  .hero__facts span { font-size: .94rem; }
  .scroll-hint { display: none; }

  .panel { padding: 88px 0; }
  .program,
  .info { width: min(100% - 20px, 1240px); }
  .program::before,
  .info::before { inset: 24px -3px; border-radius: 25px; }
  .panel__head { margin-bottom: 54px; }
  .panel__title { font-size: clamp(2.85rem, 15vw, 4.8rem); }

  .program-block__head { display: block; }
  .program-block__head > p { margin-top: 14px; text-align: left; }

  .schedule-card__trigger {
    grid-template-columns: 84px minmax(0, 1fr) 30px;
    gap: 12px;
    min-height: 108px;
    padding: 17px 15px;
  }

  .schedule-card__time { padding-right: 9px; font-size: .84rem; }
  .schedule-card__slot { gap: 2px; }
  .schedule-card__summary strong { font-size: clamp(1.2rem, 5.8vw, 1.9rem); overflow-wrap: anywhere; }
  .schedule-card__summary > span:last-child { font-size: .73rem; }
  .schedule-card__chevron { width: 30px; height: 30px; }
  .schedule-card__detail-inner { margin: 0 15px; padding-left: 10px; padding-right: 10px; }
  .schedule-card.is-open .schedule-card__detail-inner { padding-top: 22px; padding-bottom: 26px; }
  .schedule-card__detail p { font-size: .84rem; line-height: 1.62; }
  .schedule-card__detail-inner--artist,
  .schedule-card.is-open .schedule-card__detail-inner--artist { margin: 0; padding: 0; }
  .artist-detail__copy {
    display: block;
    min-height: 0;
    margin: 0 15px;
    padding: 22px 10px 26px;
  }
  .artist-detail__copy .spotify-link,
  .artist-detail__copy .detail-status { margin-top: 20px; }
  .artist-photo { height: clamp(250px, 78vw, 340px); }
  .artist-photo--placeholder::before { font-size: clamp(3.5rem, 19vw, 6rem); white-space: normal; }
  .artist-photo__caption { display: block; padding: 24px 20px; }
  .artist-photo__caption strong { display: block; margin-top: 5px; font-size: clamp(2rem, 11vw, 3.2rem); }
  .artist-photo__caption small { display: block; margin-top: 10px; }

  .show-block-label,
  .pause-row { font-size: .62rem; }
  .host-note { font-size: .8rem; }
  .info__lead { font-size: 1rem; }
  .partners { margin-top: 54px; }
}

@media (max-width: 390px) {
  .nav__links { font-size: .68rem; }
  .nav__lang-icon { display: none; }
  .nav__select { max-width: 98px; }
  .title { font-size: 4.45rem; }
  .hero__facts { max-width: 47%; }
}

@media (max-width: 360px) {
  /* The longer "Over DIALEK" label needs room on very narrow phones. */
  .nav__language { position: absolute; top: 13px; right: 15px; }
  .nav__select { max-width: 155px; }
  .nav__links { gap: 12px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .js .vlaai-drop { transform: none !important; }
  .js .reveal,
  .js .char,
  .js .word { opacity: 1 !important; transform: none !important; }
  .clouds,
  .vlaai-rig { translate: none !important; }
}
