.phase-copy--live { display: none; }
.live-calendar { display: none; position: relative; overflow: hidden; color: var(--ink); background: var(--paper); }
.phase-live .phase-copy--before { display: none !important; }
.phase-live .phase-copy--live { display: revert; }
.phase-live .live-calendar { display: block; }
.phase-live .hero, .phase-live .programme { display: none; }
.phase-live .status-dot { animation: live-status-pulse 1.7s ease-out infinite; }

@keyframes live-status-pulse {
  55% { box-shadow: 0 0 0 8px rgba(232,119,34,0); }
  0% { box-shadow: 0 0 0 0 rgba(232,119,34,.52); }
}

.live-calendar__backdrop { position: absolute; right: -260px; top: -280px; width: 720px; opacity: .045; pointer-events: none; animation: live-calendar-spin 42s linear infinite; }
.live-calendar__backdrop img { width: 100%; display: block; }
@keyframes live-calendar-spin { to { transform: rotate(360deg); } }

.live-calendar__shell { position: relative; z-index: 1; padding-block: 62px 78px; }
.live-calendar__heading { display: grid; grid-template-columns: 1.2fr .8fr; align-items: end; gap: 80px; margin-bottom: 42px; }
.live-calendar__heading .eyebrow { display: flex; align-items: center; gap: 10px; }
.live-calendar__heading h1 { margin: 0; font: 650 clamp(58px,7vw,104px)/.86 var(--display); letter-spacing: -.075em; text-wrap: balance; }
.live-calendar__heading > p { max-width: 520px; margin: 0 0 8px; color: var(--muted); font-size: 17px; line-height: 1.7; text-wrap: pretty; }
.live-calendar__pulse { width: 7px; height: 7px; display: inline-block; flex: 0 0 auto; border-radius: 50%; background: var(--orange); box-shadow: 0 0 0 0 rgba(232,119,34,.48); animation: live-status-pulse 1.7s ease-out infinite; }

.live-calendar__days { display: grid; grid-template-columns: repeat(var(--available-days,3),1fr); border: 1px solid var(--line); background: var(--white); }
.live-calendar__day { min-height: 108px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 17px; padding: 18px 24px; border: 0; border-right: 1px solid var(--line); color: var(--muted); background: transparent; text-align: left; cursor: pointer; transition: color .22s ease, background .22s ease; }
.live-calendar__day:last-child { border-right: 0; }
.live-calendar__day:hover { color: var(--ink); background: var(--sky); }
.live-calendar__day.is-active { color: var(--white); background: var(--navy); }
.live-calendar__day > span { font: 800 9px var(--display); letter-spacing: .1em; }
.live-calendar__day strong { font: 650 49px/.8 var(--display); letter-spacing: -.07em; }
.live-calendar__day small { justify-self: end; font: 700 8px/1.4 var(--display); letter-spacing: .07em; }

.live-calendar__workspace { min-height: 690px; border: 1px solid var(--line); border-top: 0; background: var(--white); }
.live-calendar__programme { min-width: 0; padding: 0 28px 30px; }
.live-calendar__toolbar { min-height: 78px; display: grid; grid-template-columns: 1fr 220px; align-items: end; border-bottom: 1px solid var(--line); }
.live-calendar__toolbar label { display: grid; gap: 7px; padding: 0 18px 17px 0; }
.live-calendar__toolbar label + label { padding-left: 18px; border-left: 1px solid var(--line); }
.live-calendar__toolbar label span { color: var(--muted); font: 800 7px var(--display); letter-spacing: .13em; }
.live-calendar__toolbar input, .live-calendar__toolbar select { width: 100%; min-height: 28px; border: 0; outline: 0; color: var(--ink); background: transparent; font-size: 12px; }
.live-calendar__list-head { display: grid; grid-template-columns: 95px 95px 1fr 155px; gap: 15px; padding: 19px 12px 11px; color: var(--muted); font: 800 7px var(--display); letter-spacing: .13em; }
.live-calendar__list { max-height: 590px; overflow-y: auto; border-top: 1px solid var(--line); scrollbar-width: thin; scrollbar-color: var(--orange) var(--paper); }
.live-calendar__event { position: relative; min-height: 102px; display: grid; grid-template-columns: 95px 95px minmax(190px,1fr) 155px; align-items: center; gap: 15px; padding: 18px 12px; border-bottom: 1px solid var(--line); cursor: pointer; animation: live-event-in .45s both; animation-delay: calc(var(--event-index) * 30ms); transition: transform .22s ease, background .22s ease; }
@keyframes live-event-in { from { opacity: 0; transform: translateY(12px); } }
.live-calendar__event:hover { z-index: 2; transform: translateX(5px); background: var(--paper); }
.live-calendar__event time { font: 800 9px var(--display); }
.live-calendar__status { width: max-content; max-width: 90px; padding: 6px 7px; color: var(--muted); background: var(--paper); font: 800 7px var(--display); letter-spacing: .06em; }
.live-calendar__copy p, .live-calendar__venue p { margin: 0 0 5px; color: var(--muted); font-size: 8px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.live-calendar__copy h2 { margin: 0; font: 700 clamp(14px,1.4vw,19px)/1.2 var(--display); letter-spacing: -.03em; text-wrap: pretty; }
.live-calendar__venue strong { display: block; font-size: 10px; line-height: 1.4; text-wrap: pretty; }
.live-calendar__details { grid-column: 3/5; max-height: 0; overflow: hidden; padding-top: 0; color: var(--muted); font-size: 11px; line-height: 1.55; opacity: 0; transition: max-height .3s ease, opacity .25s ease, padding .3s ease; }
.live-calendar__event:hover .live-calendar__details, .live-calendar__event.is-open .live-calendar__details { max-height: 100px; padding-top: 10px; opacity: 1; }
.live-calendar__event.is-live { overflow: hidden; color: var(--white); background: var(--navy); }
.live-calendar__event.is-live::before { content: ''; position: absolute; inset: 0 auto 0 0; width: 4px; background: var(--orange); box-shadow: 0 0 28px rgba(232,119,34,.8); }
.live-calendar__event.is-live::after { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 1px; background: linear-gradient(90deg,transparent,var(--orange),transparent); animation: live-calendar-scan 3.1s ease-in-out infinite; }
@keyframes live-calendar-scan { 0%,100% { transform: translateX(-55%); opacity: 0; } 50% { transform: translateX(55%); opacity: 1; } }
.live-calendar__event.is-live .live-calendar__status { color: var(--deep); background: var(--orange); }
.live-calendar__event.is-live .live-calendar__copy p, .live-calendar__event.is-live .live-calendar__venue p, .live-calendar__event.is-live .live-calendar__details { color: rgba(255,255,255,.64); }
.live-calendar__event.is-live .live-calendar__venue strong { color: var(--white); }
.live-calendar__empty { padding: 70px 20px; color: var(--muted); text-align: center; }

.live-calendar__desk { display: grid; grid-template-columns: 160px minmax(280px,1.15fr) minmax(270px,.85fr) 210px; align-items: stretch; color: var(--white); background: var(--deep); }
.live-calendar__desk-head { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto 1fr; align-items: start; gap: 9px; padding: 28px 24px; border-right: 1px solid rgba(255,255,255,.18); }
.live-calendar__desk-head b { font: 800 8px var(--display); letter-spacing: .12em; }
.live-calendar__desk-head time { grid-column: 1/3; align-self: end; color: rgba(255,255,255,.48); font: 700 22px var(--display); }
.live-calendar__now { padding: 28px 32px; border-right: 1px solid rgba(255,255,255,.18); }
.live-calendar__now > span { display: block; margin-bottom: 12px; color: var(--orange); font: 800 8px var(--display); letter-spacing: .13em; }
.live-calendar__now time { display: block; margin-bottom: 9px; font: 700 20px/.95 var(--display); letter-spacing: -.04em; }
.live-calendar__now h2 { margin: 0; font: 650 clamp(21px,2vw,31px)/1.04 var(--display); letter-spacing: -.05em; text-wrap: pretty; }
.live-calendar__now p { margin: 14px 0 0; color: rgba(255,255,255,.58); font-size: 9px; line-height: 1.45; }
.live-calendar__now strong { display: block; margin-top: 11px; color: var(--orange); font: 700 9px/1.4 var(--display); }
.live-calendar__next { padding: 28px 30px; }
.live-calendar__next > p { margin: 0 0 10px; color: rgba(255,255,255,.4); font: 800 7px var(--display); letter-spacing: .13em; }
.live-calendar__next-card { display: grid; grid-template-columns: 48px 1fr; gap: 10px; padding: 9px 0; border-bottom: 1px solid rgba(255,255,255,.12); }
.live-calendar__next-card time { color: var(--orange); font: 800 9px var(--display); }
.live-calendar__next-card h3 { margin: 0; font: 650 11px/1.35 var(--display); }
.live-calendar__next-card p { grid-column: 2; margin: -4px 0 0; color: rgba(255,255,255,.44); font-size: 8px; }
.live-calendar__next-empty { max-width: 220px; margin: 18px 0 0; color: rgba(255,255,255,.5); font-size: 10px; line-height: 1.5; }
.live-calendar__desk > a { min-height: 52px; display: flex; align-items: center; justify-content: space-between; padding: 24px; color: var(--deep); background: var(--orange); font: 800 8px var(--display); letter-spacing: .06em; transition: background .2s ease; }
.live-calendar__desk > a:hover { background: var(--sky); }

@media (max-width: 1050px) {
  .live-calendar__desk { grid-template-columns: 140px 1.1fr 1fr; }
  .live-calendar__desk > a { grid-column: 1/4; min-height: 58px; padding-block: 0; }
}

@media (max-width: 760px) {
  .live-calendar__shell { padding-block: 45px 60px; }
  .live-calendar__heading { grid-template-columns: 1fr; align-items: start; gap: 22px; }
  .live-calendar__heading h1 { font-size: clamp(53px,17vw,78px); }
  .live-calendar__heading > p { font-size: 15px; }
  .live-calendar__days { grid-template-columns: repeat(var(--available-days,3),1fr); }
  .live-calendar__day { min-height: 82px; grid-template-columns: 1fr; gap: 4px; padding: 10px; }
  .live-calendar__day > span { display: none; }
  .live-calendar__day strong { font-size: 34px; }
  .live-calendar__day small { justify-self: start; font-size: 6px; }
  .live-calendar__programme { padding-inline: 14px; }
  .live-calendar__toolbar { grid-template-columns: 1fr; padding-top: 16px; }
  .live-calendar__toolbar label { padding: 10px 0; }
  .live-calendar__toolbar label + label { display: none; }
  .live-calendar__list-head { display: none; }
  .live-calendar__list { max-height: none; }
  .live-calendar__event { min-height: 142px; grid-template-columns: 88px 1fr; align-content: center; gap: 9px 14px; padding: 20px 10px; }
  .live-calendar__event time { grid-column: 1; grid-row: 1; }
  .live-calendar__status { grid-column: 2; grid-row: 1; }
  .live-calendar__copy { grid-column: 1/3; }
  .live-calendar__venue { display: block; grid-column: 1/3; grid-row: auto; }
  .live-calendar__details { display: none; }
  .live-calendar__desk { display: block; }
  .live-calendar__desk-head { grid-template-columns: auto 1fr auto; grid-template-rows: auto; align-items: center; padding: 20px; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.18); }
  .live-calendar__desk-head time { grid-column: auto; align-self: auto; font-size: 10px; }
  .live-calendar__now { padding: 28px 20px; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.18); }
  .live-calendar__next { padding: 24px 20px; }
  .live-calendar__desk > a { min-height: 58px; padding: 0 20px; }
}

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