/* Agenda — session-card interaction states (hover-expand).

   ============================================================
   Hover-expand (pointer devices only)

   Cards WITH speakers (.has-speakers) hide their speaker list and
   reveal it on hover by lifting the card out of flow and growing
   ~40rem in every direction. The grid cell (.programme-cell) keeps
   the original footprint via the row's `align-items: stretch`, so
   neighbours don't reflow; z-index brings the card to the front.

   Touch / no-hover devices skip this entirely (the list stays hidden
   and tapping the card opens the detail page, which lists speakers).
   ============================================================ */

/* Footprint cell. display:grid stretches the base card to the cell (equal-height
   rows as before); position:relative makes it the offset parent for the expanded
   card. No min-height needed — session-card.js pins the cell height on hover. */
.programme-cell {
	display: grid;
	position: relative;
}

/* Hover-expand. The expanded state is toggled by a JS class (.is-expanded),
   NOT :hover: session-card.js freezes the cell's current height FIRST, then adds
   the class, so the card can go position:absolute without collapsing its grid
   row → no reflow, no flicker, and cards may stay any (non-uniform) height. The
   JS only adds the class on pointer devices (hover+fine), so touch keeps the
   list hidden and relies on the detail page. */
.programme-item.has-speakers {
	transition: box-shadow 0.15s ease;
}

.programme-item.has-speakers.is-expanded {
	position: absolute;
	top: -20rem;
	left: -20rem;
	right: -20rem;
	bottom: auto;
	/* At least 20rem taller top+bottom; grows further to fit the list. */
	min-height: calc(100% + 40rem);
	z-index: 20;
	box-shadow: 0 10rem 36rem rgba(0, 0, 0, 0.35);
}

.programme-item.has-speakers.is-expanded .programme-item__speakers {
	display: block;
}
