.programme-book-stage {
  touch-action: pan-y pinch-zoom;
}

.programme-book-reader [hidden] {
  display: none !important;
}

/* A calm spread transition replaces the former fake 3D page rotation. */
.programme-book-pages.turn-next figure,
.programme-book-pages.turn-previous figure {
  animation: none;
}

.programme-book-pages.turn-next {
  animation: programmeSpreadNext 440ms cubic-bezier(.22, .72, .24, 1);
}

.programme-book-pages.turn-previous {
  animation: programmeSpreadPrevious 440ms cubic-bezier(.22, .72, .24, 1);
}

@keyframes programmeSpreadNext {
  0% {
    opacity: .18;
    transform: translateX(18px) scale(.992);
    filter: brightness(.86);
  }
  60% {
    opacity: 1;
    transform: translateX(-2px) scale(1);
    filter: brightness(1);
  }
  100% {
    opacity: 1;
    transform: none;
    filter: none;
  }
}

@keyframes programmeSpreadPrevious {
  0% {
    opacity: .18;
    transform: translateX(-18px) scale(.992);
    filter: brightness(.86);
  }
  60% {
    opacity: 1;
    transform: translateX(2px) scale(1);
    filter: brightness(1);
  }
  100% {
    opacity: 1;
    transform: none;
    filter: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .programme-book-pages.turn-next,
  .programme-book-pages.turn-previous {
    animation: none;
  }
}

.programme-book-section {
  padding: clamp(76px, 10vw, 150px) clamp(20px, 5vw, 80px);
  border-top: 1px solid #242424;
  background: radial-gradient(circle at 80% 5%, rgba(212, 175, 55, .11), transparent 28%), #080808;
}

.landing-programme-book {
  margin: 0;
  padding: 80px 0 100px;
  background: transparent;
}

.programme-book-heading {
  width: min(1320px, 100%);
  margin: 0 auto 46px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 40px;
}

.programme-book-heading > div { max-width: 790px; }
.programme-book-kicker { color: #d4af37; font-size: 10px; font-weight: 800; letter-spacing: .17em; }
.programme-book-heading h2 { margin: 13px 0 18px; color: #f4f1e8; font: 800 clamp(38px, 5.8vw, 76px)/.98 var(--display); letter-spacing: -.06em; }
.programme-book-heading h2 em { color: #d4af37; font-style: normal; }
.programme-book-heading p { max-width: 690px; margin: 0; color: #85847e; font-size: 14px; line-height: 1.75; }
.programme-book-download { min-width: 190px; height: 54px; padding: 0 17px; border: 1px solid #6b581d; border-radius: 5px; background: rgba(212,175,55,.07); color: #d9b83f; display: flex; align-items: center; justify-content: space-between; gap: 28px; font-size: 10px; font-weight: 800; letter-spacing: .04em; text-decoration: none; }
.programme-book-download:hover { background: #d4af37; color: #090909; }
.programme-book-reader { width: min(1320px, 100%); margin: 0 auto; border: 1px solid #3c3420; border-radius: 14px; background: #0e0e0e; box-shadow: 0 45px 120px rgba(0,0,0,.5); overflow: hidden; outline: none; }
.programme-book-reader:focus-visible { box-shadow: 0 0 0 3px rgba(212,175,55,.25), 0 45px 120px rgba(0,0,0,.5); }
.programme-book-toolbar { min-height: 62px; padding: 0 20px; border-bottom: 1px solid #302a1c; background: linear-gradient(90deg,#17150e,#111); display: flex; align-items: center; justify-content: space-between; }
.programme-book-toolbar > div { display: flex; align-items: center; gap: 10px; }
.programme-book-dot { width: 7px; height: 7px; border-radius: 50%; background: #d4af37; box-shadow: 0 0 14px rgba(212,175,55,.65); }
.programme-book-toolbar strong { font-size: 8px; letter-spacing: .15em; }
.programme-book-toolbar button { padding: 8px 10px; border: 1px solid #383326; border-radius: 4px; background: #121212; color: #aaa; display: flex; align-items: center; gap: 10px; font-size: 8px; font-weight: 700; cursor: pointer; }
.programme-book-toolbar button:hover { border-color: #7d6720; color: #d4af37; }
.programme-book-stage { min-height: 680px; padding: clamp(24px,4vw,54px); background: radial-gradient(circle at 50% 0,rgba(212,175,55,.08),transparent 35%), linear-gradient(135deg,#141414,#090909); display: grid; place-items: center; position: relative; overflow: auto; }
.programme-book-pages { width: min(1120px,100%); display: grid; grid-template-columns: minmax(0,1fr) 12px minmax(0,1fr); align-items: center; perspective: 1600px; }
.programme-book-pages figure { margin: 0; min-width: 0; position: relative; transition: transform .32s ease, filter .32s ease; }
.programme-book-pages figure[data-page-slot=left] { transform-origin: right center; }
.programme-book-pages figure[data-page-slot=right] { transform-origin: left center; }
.programme-book-pages figure[data-page-slot=single] { grid-column: 1/-1; width: min(560px,100%); margin: auto; }
.programme-book-pages canvas { max-width: 100%; height: auto !important; margin: auto; background: #fff; display: block; box-shadow: 0 18px 55px rgba(0,0,0,.55); }
.programme-book-pages figure[data-page-slot=left] canvas { border-radius: 5px 0 0 5px; }
.programme-book-pages figure[data-page-slot=right] canvas { border-radius: 0 5px 5px 0; }
.programme-book-pages figcaption { position: absolute; right: 10px; bottom: 8px; padding: 3px 6px; border-radius: 3px; background: rgba(8,8,8,.72); color: #d4af37; font-size: 7px; font-weight: 800; }
.programme-book-spine { width: 12px; height: 94%; background: linear-gradient(90deg,rgba(0,0,0,.65),rgba(255,255,255,.08),rgba(0,0,0,.7)); box-shadow: 0 0 15px rgba(0,0,0,.45); z-index: 2; }
.programme-book-loading, .programme-book-error { display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 14px; color: #aaa; font-size: 10px; }
.programme-book-loading span { width: 34px; height: 34px; border: 2px solid #3e3825; border-top-color: #d4af37; border-radius: 50%; animation: programmeBookLoading .8s linear infinite; }
@keyframes programmeBookLoading { to { transform: rotate(360deg); } }
.programme-book-error a { padding: 10px 14px; border: 1px solid #5b4d1d; border-radius: 4px; color: #d4af37; }
.programme-book-controls { min-height: 70px; padding: 0 20px; border-top: 1px solid #2d291e; background: #111; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; }
.programme-book-controls button { width: max-content; min-height: 38px; padding: 0 12px; border: 1px solid #39352a; border-radius: 5px; background: #151515; color: #bbb; display: flex; align-items: center; gap: 12px; font-size: 9px; font-weight: 700; cursor: pointer; }
.programme-book-controls button:last-child { justify-self: end; }
.programme-book-controls button:hover:not(:disabled) { border-color: #735f1f; color: #d4af37; }
.programme-book-controls button:disabled { opacity: .3; cursor: default; }
.programme-book-controls > div { display: flex; align-items: center; gap: 9px; color: #d4af37; font: 800 10px var(--display); }
.programme-book-controls i { color: #555; font-style: normal; }
.programme-book-reader.is-fullscreen { width: 100vw; height: 100vh; border: 0; border-radius: 0; display: grid; grid-template-rows: auto 1fr auto; }
.programme-book-reader.is-fullscreen .programme-book-stage { min-height: 0; }
.programme-book-reader.is-fullscreen .programme-book-pages { height: 100%; width: auto; }
.programme-book-reader.is-fullscreen canvas { max-height: calc(100vh - 180px); width: auto !important; }

@media (max-width: 760px) {
  .programme-book-heading { align-items: flex-start; flex-direction: column; }
  .programme-book-download { width: 100%; }
  .programme-book-stage { min-height: 530px; padding: 20px 12px; }
  .programme-book-pages { display: block; }
  .programme-book-pages figure[data-page-slot=single] { width: 100%; }
  .programme-book-pages canvas { max-height: 70vh; }
  .programme-book-spine { display: none; }
  .programme-book-controls { padding: 0 10px; }
  .programme-book-controls button { min-width: 42px; justify-content: center; }
  .programme-book-controls button span, .programme-book-toolbar button span { display: none; }
}
