/* ==========================================================================
   Programme page · v5 presentation build
   Reading path: what + when (head) → the shape of a day (one picture) → pick a day → scan rows.
   Every row: time · pictogram + stop · title (+ one description line) · venue + who it is for.
   Scoped to body.p-programme; shared tokens and components come from fot.css.
   ========================================================================== */

/* ---------- head ---------- */
body.p-programme .pg-head { padding-top: calc(var(--edge) + 136px); }
body.p-programme .pg-head .h1 { font-size: clamp(46px, 5.6vw, 96px); max-width: 20ch; text-wrap: balance; }
body.p-programme .pg-head__t { gap: 26px; }
body.p-programme .pg-head .lead { max-width: 36ch; }
body.p-programme .pg-head__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 28px; margin-top: 6px; }
body.p-programme .pg-head__side { gap: 10px; }
body.p-programme .pg-note { font-size: 16px; line-height: 1.5; color: var(--fg-2); max-width: 32ch; }
body.p-programme .pg-head__side .more { margin-top: 6px; }

/* ---------- the shape of a day ---------- */
body.p-programme .ds { margin-top: clamp(40px, 4.4vw, 64px); padding: clamp(20px, 2.2vw, 32px); color: var(--fg); background: var(--bg); }
body.p-programme .ds__cap { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px 24px; margin-bottom: 26px; }
body.p-programme .ds__cap-r { font: 500 13px/1.3 var(--mono); letter-spacing: .04em; text-transform: uppercase; color: var(--fg-2); white-space: nowrap; }
/* 10:00 → 22:00 in half hours = 24 columns, shared by the axis and the blocks */
body.p-programme .ds__axis, body.p-programme .ds__grid { display: grid; grid-template-columns: repeat(24, minmax(0, 1fr)); }
body.p-programme .ds__axis { position: relative; margin-bottom: 14px; padding-bottom: 12px; }
body.p-programme .ds__axis::before { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--hair); }
body.p-programme .ds__axis span { grid-column: span 2; position: relative; padding-left: 7px; font: 500 12px/1 var(--mono); letter-spacing: .02em; color: var(--fg-2); font-variant-numeric: tabular-nums; }
body.p-programme .ds__axis span::before { content: ""; position: absolute; left: 0; top: -2px; bottom: -14px; width: 1px; background: var(--fg-3); }
body.p-programme .ds__run { position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--accent); transform-origin: left; }
body.p-programme .ds__grid { grid-template-rows: auto auto auto; row-gap: 8px; }
body.p-programme .ds__b { position: relative; display: flex; flex-direction: column; gap: 6px; min-width: 0; margin-right: 6px; padding: 14px 14px 16px; border: 1px solid var(--fg); background: var(--bg); }
body.p-programme .ds__b--learn { grid-column: 1 / 5; grid-row: 1 / 3; }
body.p-programme .ds__b--meet { grid-column: 5 / 13; grid-row: 1 / 3; }
body.p-programme .ds__b--think { grid-column: 15 / 21; grid-row: 1; }
body.p-programme .ds__b--watch { grid-column: 15 / 21; grid-row: 2; }
body.p-programme .ds__b--connect { grid-column: 22 / 25; grid-row: 1 / 3; margin-right: 0; border-right: 0; -webkit-mask-image: linear-gradient(90deg, #000 62%, transparent); mask-image: linear-gradient(90deg, #000 62%, transparent); }
/* access on the blocks: solid = the 20 selected projects (1:1 mentoring); accent outline = registered guests (the morning masterclass, the evening) */
body.p-programme .ds__b--meet { background: var(--fg); color: var(--bg); border-color: var(--fg); }
body.p-programme .ds__b--meet .ds__k { color: var(--bg); }
body.p-programme .ds__b--meet .ds__h { color: var(--bg); opacity: .78; }
body.p-programme .ds__b--learn, body.p-programme .ds__b--think, body.p-programme .ds__b--watch { border-color: var(--accent); }
body.p-programme .ds__k { display: inline-flex; align-items: center; gap: 8px; font: 700 12px/1 var(--mono); letter-spacing: .06em; text-transform: uppercase; color: var(--accent-t); }
body.p-programme .ds__k .pi { inline-size: 20px; block-size: 20px; flex: none; }
body.p-programme .ds__t { font: 700 clamp(17px, 1.35vw, 21px)/1.15 var(--sans); letter-spacing: -.01em; text-wrap: balance; }
body.p-programme .ds__h { font: 500 13px/1.35 var(--mono); color: var(--fg-2); font-variant-numeric: tabular-nums; }
body.p-programme .ds__ht::before { content: " · "; }
body.p-programme .ds__or { grid-column: 15 / 21; grid-row: 1 / 3; align-self: center; justify-self: end; z-index: 2; margin-right: -12px; inline-size: 38px; block-size: 38px; border-radius: 50%; display: grid; place-items: center; background: var(--accent); color: var(--on-accent); font: 700 13px/1 var(--mono); letter-spacing: .04em; text-transform: uppercase; }
body.p-programme .ds__walk { grid-column: 13 / 15; grid-row: 1 / 3; align-self: center; position: relative; display: flex; justify-content: center; padding: 0 2px; }
body.p-programme .ds__walk::before { content: ""; position: absolute; left: 0; right: 6px; top: 50%; border-top: 2px dashed var(--fg-3); }
body.p-programme .ds__walk span { position: relative; padding: 4px 6px; background: var(--bg); font: 500 12px/1.25 var(--mono); letter-spacing: .03em; text-transform: uppercase; color: var(--fg-2); text-align: center; }
body.p-programme .ds__g { grid-row: 3; display: flex; flex-direction: column; gap: 6px; padding-top: 10px; margin-right: 6px; border-top: 1px solid var(--fg); min-width: 0; }
body.p-programme .ds__g--learn { grid-column: 1 / 5; padding-right: 10px; }  /* keeps its chip clear of the next caption's chip; the rule above stays as wide as the block */
body.p-programme .ds__g--meet { grid-column: 5 / 13; }
body.p-programme .ds__g--pm { grid-column: 15 / 21; }
body.p-programme .ds__g--nt { grid-column: 22 / 25; margin-right: 0; }
body.p-programme .ds__v { font-size: 16px; line-height: 1.35; font-weight: 700; }
/* a chip under a narrow block may wrap (two columns on phones); its square never shrinks */
body.p-programme .ds__g .access { white-space: normal; }
body.p-programme .ds__g .access::before { flex: none; }
body.p-programme .ds__g--nt .ds__v { font-weight: 400; color: var(--fg-2); font-size: 15px; }
/* reveal (only added by js when motion is allowed) */
body.p-programme .ds.is-pre .ds__run { transform: scaleX(0); }
body.p-programme .ds.is-pre .ds__b, body.p-programme .ds.is-pre .ds__or, body.p-programme .ds.is-pre .ds__walk, body.p-programme .ds.is-pre .ds__g { opacity: 0; transform: translateY(14px); }
body.p-programme .ds.is-in .ds__run { transform: scaleX(1); transition: transform 2.2s cubic-bezier(.65, 0, .35, 1); }
body.p-programme .ds.is-in .ds__b, body.p-programme .ds.is-in .ds__or, body.p-programme .ds.is-in .ds__walk, body.p-programme .ds.is-in .ds__g { opacity: 1; transform: none; transition: opacity .7s var(--ease), transform .9s var(--ease); transition-delay: var(--d, 0s); }
body.p-programme .ds__b--learn { --d: .1s; } body.p-programme .ds__b--meet { --d: .35s; } body.p-programme .ds__g--learn { --d: .5s; } body.p-programme .ds__g--meet { --d: .62s; }
body.p-programme .ds__walk { --d: .8s; } body.p-programme .ds__b--think { --d: 1s; } body.p-programme .ds__b--watch { --d: 1.12s; } body.p-programme .ds__or { --d: 1.35s; }
body.p-programme .ds__g--pm { --d: 1.4s; } body.p-programme .ds__b--connect { --d: 1.7s; } body.p-programme .ds__g--nt { --d: 1.85s; }

/* ---------- sticky day bar: tabs only, lets go when the timetable ends ---------- */
body.p-programme .pg-tt { position: relative; margin-top: clamp(56px, 7vw, 104px); }
body.p-programme .daybar { padding: 12px 0; }
body.p-programme .daybar__in { display: block; }
body.p-programme .tabs button { min-height: 64px; }
body.p-programme .tab-t span { font: 500 12px/1.2 var(--mono); letter-spacing: .05em; }
body.p-programme .tab-t b { font-size: 17px; }

/* ---------- key + filter ---------- */
body.p-programme .pg-key { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 18px 40px; padding: 22px 0 6px; }
body.p-programme .pg-key__l { display: grid; grid-template-columns: repeat(2, minmax(0, auto)); gap: 10px 40px; }
body.p-programme .pg-key__l li { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; font-size: 16px; line-height: 1.4; color: var(--fg-2); }
body.p-programme .pg-key__or { font: 700 12px/1.3 var(--mono); letter-spacing: .05em; text-transform: uppercase; color: var(--accent-t); }
body.p-programme .pg-key__or i { font-style: normal; display: inline-grid; place-items: center; inline-size: 24px; block-size: 24px; margin: 0 4px; border-radius: 50%; background: var(--accent); color: var(--on-accent); font-size: 10px; }
body.p-programme .pg-key__t { font-size: 16px; color: var(--fg); }

/* ---------- day ---------- */
body.p-programme .day { scroll-margin-top: 190px; padding-top: clamp(40px, 5vw, 72px); }
/* the day bullet always sits left of the heading (a long theme wraps inside its column, never under the bullet) */
body.p-programme .day__h { flex-wrap: nowrap; gap: 14px 22px; }
body.p-programme .day__h > div { min-width: 0; }
body.p-programme .day__h .h2 { text-wrap: balance; }

/* bands */
body.p-programme .pg-band, body.p-programme .pg-eve { margin-top: 44px; }
body.p-programme .pg-band__h, body.p-programme .pg-eve__h { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 10px 24px; padding: 16px 0 14px; border-top: 2px solid var(--fg); }
body.p-programme .pg-band__t { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 16px; font: 700 var(--t-h3)/1.05 var(--sans); letter-spacing: -.015em; }
body.p-programme .pg-band__t span { font: 400 17px/1.35 var(--sans); letter-spacing: 0; color: var(--fg-2); }
body.p-programme .pg-eve__reg { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 22px; }
/* "Register by Mon 16 Nov, 23:59 ET": the deadline itself never splits; the line may wrap before it on a phone */
body.p-programme .pg-dl { font-size: 17px; text-wrap: balance; }
body.p-programme .pg-dl b { font-weight: 700; white-space: nowrap; }
/* the morning at ICR (registered guests): state + "Register for the morning" under its rows, on the right like the access column */
body.p-programme .pg-band__f { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 12px 20px; padding-top: 18px; border-top: 1px solid var(--hair); }

/* rows: time | stop | title + one line | venue + who */
body.p-programme .pg-rows li { display: grid; grid-template-columns: 136px 112px minmax(0, 1fr) 236px; gap: 6px 24px; align-items: baseline; padding: 22px 0; border-top: 1px solid var(--hair); }
body.p-programme .pg-rows li:first-child { border-top: 0; }
body.p-programme .pg-t { font: 500 17px/1.3 var(--mono); letter-spacing: -.02em; white-space: nowrap; font-variant-numeric: tabular-nums; }
body.p-programme .pg-k { display: inline-flex; align-items: center; gap: 8px; font: 700 12px/1.6 var(--mono); letter-spacing: .06em; text-transform: uppercase; color: var(--accent-t); white-space: nowrap; }
body.p-programme .pg-k .pi { inline-size: 22px; block-size: 22px; flex: none; align-self: center; }
body.p-programme .pg-k--n { color: var(--fg-2); }
body.p-programme .pg-x { display: flex; flex-direction: column; gap: 6px; min-width: 0; max-width: 62ch; }
body.p-programme .pg-title { font: 700 clamp(18px, 1.4vw, 21px)/1.25 var(--sans); letter-spacing: -.01em; }
body.p-programme .pg-who { font-size: 17px; line-height: 1.45; }
body.p-programme .nm { white-space: nowrap; }  /* "Dr." stays with the name */
body.p-programme .pg-w { font-size: 17px; line-height: 1.5; color: var(--fg-2); }
body.p-programme .pg-cross { align-self: flex-start; margin-top: 4px; padding: 5px 9px; border: 1px solid var(--accent); font: 500 12px/1.2 var(--mono); letter-spacing: .05em; text-transform: uppercase; color: var(--accent-t); }
body.p-programme .pg-cross i { font-style: normal; font-weight: 700; margin: 0 2px; }
body.p-programme .pg-a { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; text-align: right; min-width: 0; }
body.p-programme .pg-v { font-size: 16px; line-height: 1.35; color: var(--fg); }
body.p-programme .pg-a .access { white-space: nowrap; }

/* evening: two columns at the same hours, an "or" between them */
body.p-programme .pg-eve__cols { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 var(--gap); margin-top: 6px; }
body.p-programme .pg-or { position: absolute; left: 50%; top: 34px; transform: translateX(-50%); z-index: 2; inline-size: 44px; block-size: 44px; border-radius: 50%; display: grid; place-items: center; background: var(--accent); color: var(--on-accent); font: 700 13px/1 var(--mono); letter-spacing: .04em; text-transform: uppercase; box-shadow: 0 0 0 6px var(--bg); }
body.p-programme .pg-trk { display: flex; flex-direction: column; min-width: 0; border: 1px solid var(--fg-3); padding: 24px 26px 22px; transition: border-color .3s; }
body.p-programme .pg-trk:hover, body.p-programme .pg-trk:focus-within { border-color: var(--fg); }
body.p-programme .pg-trk__h { display: flex; flex-direction: column; gap: 8px; padding-bottom: 18px; border-bottom: 1px solid var(--hair); }
body.p-programme .pg-trk__t { margin: 0; font: 700 var(--t-h3)/1.05 var(--sans); letter-spacing: -.015em; font-size: clamp(22px, 2vw, 29px); text-wrap: balance; }
body.p-programme .pg-trk__v { font-size: 16px; color: var(--fg-2); }
body.p-programme .pg-rows--trk li { grid-template-columns: 124px minmax(0, 1fr); gap: 4px 18px; padding: 18px 0; }
/* 721–1280: the four-column row rules in the breakpoints below must not reach the two-column evening tracks
   (they squeezed the title and its line into a 100 px column) */
@media (min-width: 721px) { body.p-programme .pg-rows.pg-rows--trk li { grid-template-columns: 124px minmax(0, 1fr); } }
body.p-programme .pg-rows--trk .pg-t { font-size: 16px; }
body.p-programme .pg-rows--trk .pg-title { font-size: clamp(18px, 1.3vw, 20px); }
body.p-programme .pg-trk__f { margin-top: auto; padding-top: 18px; border-top: 1px solid var(--hair); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }

body.p-programme .pg-foot { font-size: 16px; }
body.p-programme .pg-still { position: relative; flex: 1 1 auto; min-height: 200px; margin: 18px 0 0; overflow: hidden; background: var(--soft); }
body.p-programme .pg-still img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: grayscale(.7) contrast(1.05); transition: filter .6s var(--ease), transform 1.2s var(--ease); }
body.p-programme .pg-trk:hover .pg-still img { filter: none; transform: scale(1.03); }
body.p-programme .pg-still figcaption { position: absolute; left: 10px; bottom: 10px; right: 10px; width: max-content; max-width: calc(100% - 20px); padding: 5px 8px; background: rgba(10, 10, 10, .8); color: #fff; font-size: 14px; line-height: 1.35; }


/* closing cards */
body.p-programme .way .h2 { font-size: clamp(36px, 4.2vw, 68px); max-width: 14ch; text-wrap: balance; }
body.p-programme .pg-cd { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; text-align: right; font-size: 16px; line-height: 1.35; color: var(--fg-2); }
body.p-programme .pg-cd b { font: 500 clamp(20px, 1.8vw, 26px)/1.1 var(--mono); letter-spacing: -.02em; color: var(--fg); white-space: nowrap; }

/* ---------- breakpoints ---------- */
@media (max-width: 1280px) {
  body.p-programme .pg-rows li { grid-template-columns: 128px 104px minmax(0, 1fr) 210px; gap: 6px 20px; }
}
@media (max-width: 1080px) {
  body.p-programme .pg-head .h1 { max-width: 20ch; }
  /* the day becomes a vertical strip; the evening keeps its two lanes side by side */
  body.p-programme .ds__axis { display: none; }
  body.p-programme .ds__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: none; gap: 8px 44px; }
  body.p-programme .ds__ht { display: block; }
  body.p-programme .ds__ht::before { content: none; }
  body.p-programme .ds__b { margin-right: 0; }
  body.p-programme .ds__b--learn { grid-column: 1; grid-row: 1; }
  body.p-programme .ds__b--meet { grid-column: 2; grid-row: 1; }
  body.p-programme .ds__g--learn { grid-column: 1; grid-row: 2; margin-right: 0; }
  body.p-programme .ds__g--meet { grid-column: 2; grid-row: 2; margin-right: 0; }
  body.p-programme .ds__walk { grid-column: 1 / -1; grid-row: 3; justify-content: flex-start; padding: 12px 0; }
  body.p-programme .ds__walk::before { left: 0; right: 0; }
  body.p-programme .ds__walk span br { display: none; }
  body.p-programme .ds__b--think { grid-column: 1; grid-row: 4; }
  body.p-programme .ds__b--watch { grid-column: 2; grid-row: 4; }
  body.p-programme .ds__or { grid-column: 1 / -1; grid-row: 4; justify-self: center; margin-right: 0; }
  body.p-programme .ds__g--pm { grid-column: 1 / -1; grid-row: 5; margin-right: 0; flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 16px; }
  body.p-programme .ds__b--connect { grid-column: 1 / -1; grid-row: 6; margin-top: 12px; border-right: 1px solid var(--fg); -webkit-mask-image: none; mask-image: none; }
  body.p-programme .ds__g--nt { grid-column: 1 / -1; grid-row: 7; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 6px 16px; }
  body.p-programme .pg-rows li { grid-template-columns: 124px 100px minmax(0, 1fr); }
  body.p-programme .pg-a { grid-column: 3; flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: flex-start; gap: 6px 16px; text-align: left; }
  body.p-programme .pg-eve__cols { grid-template-columns: 1fr; gap: 0; }
  body.p-programme .pg-or { position: relative; left: auto; top: auto; transform: none; justify-self: center; margin: -12px 0; }
  body.p-programme .pg-key__l { grid-template-columns: 1fr; }
  body.p-programme .pg-still { display: none; }
}
@media (max-width: 720px) {
  body.p-programme .pg-head { padding-top: calc(var(--edge) + 104px); }
  body.p-programme .pg-head .h1 { font-size: clamp(40px, 12vw, 64px); }
  body.p-programme .pg-head .lead { font-size: 19px; }
  body.p-programme .pg-head__cta .btn { width: 100%; }
  body.p-programme .ds { padding: 18px 14px; }
  body.p-programme .ds__cap { margin-bottom: 18px; }
  body.p-programme .ds__b { padding: 12px 12px 14px; }
  body.p-programme .ds__t { font-size: 17px; }
  body.p-programme .ds__h { font-size: 12px; }
  /* one-row sticky day bar: three chips */
  body.p-programme .daybar { padding: 8px 0; top: calc(var(--edge) + 52px); }
  body.p-programme .tabs { gap: 6px; }
  body.p-programme .tabs button { flex-direction: row; align-items: center; gap: 8px; min-height: 48px; padding: 4px 8px 4px 5px; }
  body.p-programme .tabs .bullet { inline-size: 36px; block-size: 36px; font-size: 14px; }
  body.p-programme .tab-t b, body.p-programme .pg-tab-x { display: none; }
  body.p-programme .tab-t span { font-size: 13px; }
  body.p-programme .day { scroll-margin-top: 140px; }
  body.p-programme .day__h { gap: 12px 14px; flex-wrap: nowrap; align-items: flex-start; }
  body.p-programme .day__h > div { min-width: 0; }
  body.p-programme .day__h .bullet--l { inline-size: 40px; block-size: 40px; font-size: 16px; margin-top: 2px; }
  body.p-programme .day__h .h2 { font-size: clamp(28px, 8.6vw, 42px); overflow-wrap: anywhere; }
  body.p-programme .pg-band__t { font-size: 24px; }
  body.p-programme .pg-band__t span { font-size: 16px; }
  body.p-programme .pg-rows li, body.p-programme .pg-rows--trk li { grid-template-columns: auto minmax(0, 1fr); gap: 8px 14px; padding: 18px 0; }
  body.p-programme .pg-t { font-size: 15px; }
  body.p-programme .pg-k { grid-column: 2; grid-row: 1; justify-self: end; }
  body.p-programme .pg-x, body.p-programme .pg-a { grid-column: 1 / -1; }
  body.p-programme .pg-rows--trk .pg-x { grid-column: 1 / -1; }
  body.p-programme .pg-trk { padding: 18px 16px; }
  body.p-programme .pg-trk__f .btn { width: 100%; }
  body.p-programme .pg-band__f { justify-content: space-between; }
  body.p-programme .pg-band__f .btn { width: 100%; }
  body.p-programme .pg-key { padding-top: 18px; }
  body.p-programme .pg-key__l li { font-size: 15px; }
  body.p-programme .pg-cd { align-items: flex-start; text-align: left; }
  body.p-programme .way__f { flex-direction: column; align-items: stretch; }
  body.p-programme .way__f .btn { width: 100%; }
}
@media (max-width: 380px) {
  body.p-programme .ds__grid { grid-template-columns: 1fr; }
  body.p-programme .ds__b--learn, body.p-programme .ds__b--meet, body.p-programme .ds__b--think, body.p-programme .ds__b--watch { grid-column: 1; grid-row: auto; }
  body.p-programme .ds__g--learn, body.p-programme .ds__g--meet, body.p-programme .ds__walk, body.p-programme .ds__g--pm, body.p-programme .ds__b--connect, body.p-programme .ds__g--nt { grid-column: 1; grid-row: auto; }
  body.p-programme .ds__or { grid-column: 1; grid-row: auto; margin: -16px 0; }
  body.p-programme .ds__b--learn { order: 1; } body.p-programme .ds__g--learn { order: 2; } body.p-programme .ds__b--meet { order: 3; margin-top: 10px; } body.p-programme .ds__g--meet { order: 4; } body.p-programme .ds__walk { order: 5; }
  body.p-programme .ds__b--think { order: 6; } body.p-programme .ds__or { order: 7; } body.p-programme .ds__b--watch { order: 8; } body.p-programme .ds__g--pm { order: 9; }
  body.p-programme .ds__b--connect { order: 10; } body.p-programme .ds__g--nt { order: 11; }
  body.p-programme .tab-t span { font-size: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  body.p-programme .ds.is-pre .ds__run, body.p-programme .ds.is-pre .ds__b, body.p-programme .ds.is-pre .ds__or, body.p-programme .ds.is-pre .ds__walk, body.p-programme .ds.is-pre .ds__g { opacity: 1; transform: none; }
}

/* mono floor: the "or" bubble at 12 px */
body.p-programme .pg-key__or i { font-size: 12px; }
/* "Plan all four days" beside each evening's register line */
body.p-programme .pg-plan { min-height: 44px; color: var(--accent-t); text-decoration: underline; text-underline-offset: 4px; }

/* ---------- four days (17–20 Nov) ---------- */
/* the day bar holds four tabs; the theme shows in full from 1081 px (two lines at most), below that the panel heading carries it */
body.p-programme .tabs { grid-template-columns: repeat(4, minmax(0, 1fr)); }
body.p-programme .tab-t b { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
@media (min-width: 1081px) and (max-width: 1300px) { body.p-programme .tab-t b { font-size: 15px; } }
@media (max-width: 1080px) {
  body.p-programme .tab-t b { display: none; }
  body.p-programme .tabs button { min-height: 56px; }
}
@media (max-width: 720px) {
  body.p-programme .tabs button { gap: 6px; padding: 4px 6px 4px 4px; }
  body.p-programme .tabs .bullet { inline-size: 32px; block-size: 32px; font-size: 13px; }
}
@media (max-width: 380px) {
  body.p-programme .tabs button { flex-direction: column; justify-content: center; align-items: center; gap: 4px; padding: 6px 2px; min-height: 0; }
  body.p-programme .tabs .bullet { inline-size: 30px; block-size: 30px; }
  body.p-programme .tab-t { align-items: center; }
}

/* the day shape: Friday runs differently, one line under it */
body.p-programme .ds__fri { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; margin-top: 22px; padding-top: 16px; border-top: 1px dashed var(--fg-3); font-size: 17px; line-height: 1.45; }
body.p-programme .ds__fri .bullet { inline-size: 34px; block-size: 34px; font-size: 14px; }
body.p-programme .ds__fri-t { flex: 1 1 20ch; min-width: 0; color: var(--fg-2); }
body.p-programme .ds__fri-t b { color: var(--fg); font-weight: 700; }
body.p-programme .ds__fri .more { min-height: 44px; }
body.p-programme .ds.is-pre .ds__fri { opacity: 0; transform: translateY(14px); }
body.p-programme .ds.is-in .ds__fri { opacity: 1; transform: none; transition: opacity .7s var(--ease) 2s, transform .9s var(--ease) 2s; }
@media (prefers-reduced-motion: reduce) { body.p-programme .ds.is-pre .ds__fri { opacity: 1; transform: none; } }

/* two films in one screening (Wed 18): the second title sits a step lower */
body.p-programme .pg-title--then { margin-top: 10px; }
body.p-programme .pg-title .wip { margin-left: 2px; }

/* Fri 20: one screening, no "or": the card and, beside it, a still and a line about the last evening */
body.p-programme .pg-eve__cols--one { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
body.p-programme .pg-solo { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
body.p-programme .pg-solo__img { margin: 0; min-height: 240px; }
body.p-programme .pg-solo:hover .pg-still img { filter: none; transform: scale(1.03); }
body.p-programme .pg-solo__t { display: flex; flex-direction: column; gap: 10px; padding-top: 14px; border-top: 1px solid var(--fg); font-size: 17px; line-height: 1.5; color: var(--fg-2); }
body.p-programme .pg-solo__t .lbl { color: var(--fg); }
@media (max-width: 1080px) {
  body.p-programme .pg-eve__cols--one { grid-template-columns: 1fr; gap: 22px; }
}

/* key: five entries, two columns from 1081 px */
body.p-programme .pg-key__l .wip { vertical-align: 0; margin-left: 0; }
