/* 04-agenda (design sections/{desktop,mobile}/04-agenda.jpg): two-column schedule, speaker photo strip on the right. */
.cv25-agenda { padding-bottom: 80px; }
.cv25-agenda-stage { margin: 50px 0 14px; font-size: clamp(1.375rem, 2.4vw, 2.25rem); font-weight: 600; }
.cv25-agenda-list { list-style: none; margin: 0; padding: 0; border-top: 2px solid #1E8FD8; }
.cv25-agenda-row {
    position: relative; display: grid; grid-template-columns: 220px minmax(0, 1fr); column-gap: 18px;
    border-bottom: 2px solid #1E8FD8;
}
.cv25-agenda-time { position: relative; padding: 26px 0 26px 50px; border-right: 2px solid #1E8FD8; }
.cv25-agenda-time:has(strong)::before {
    content: ''; position: absolute; left: 0; top: 26px; border-style: solid;
    border-width: 14px 0 14px 26px; border-color: transparent transparent transparent var(--cv25-red);
}
.cv25-agenda-time strong { display: block; font-size: 1.5rem; font-weight: 600; line-height: 1.2; }
.cv25-agenda-time span { display: block; margin-top: 4px; font-size: .9375rem; font-weight: 300; opacity: .85; }
.cv25-agenda-body { padding: 26px 0; min-width: 0; }
/* Photo sits inside the body grid. One speaker: photo beside the whole text (design).
   Group: heading runs full width, photo strip beside the speaker list. */
.cv25-agenda-body:has(.cv25-agenda-photo) {
    display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 24px;
    grid-template-areas: "en photo" "h4 photo" "spk photo";
    grid-template-rows: auto auto 1fr; /* a tall photo stretches the speaker row, so the text stays top-aligned */
}
.cv25-agenda-body:has(.cv25-agenda-photo--group) { grid-template-areas: "en en" "h4 h4" "spk photo"; }
.cv25-agenda-en { grid-area: en; }
.cv25-agenda-body h4 { grid-area: h4; }
.cv25-agenda-speakers { grid-area: spk; align-self: start; }
.cv25-agenda-photo { grid-area: photo; }
.cv25-agenda-en { margin: 0; font-size: 1.125rem; font-weight: 300; }
.cv25-agenda-body h4 { margin: 4px 0 0; font-size: clamp(1.25rem, 2vw, 1.75rem); font-weight: 600; line-height: 1.3; }
.cv25-agenda-row--break .cv25-agenda-body { padding: 22px 0; }
.cv25-agenda-speakers { list-style: none; margin: 18px 0 0; padding: 0; display: grid; gap: 10px; font-size: .9375rem; font-weight: 300; line-height: 1.4; }
.cv25-agenda-speakers strong { font-weight: 600; }
.cv25-agenda-photo { align-self: center; height: 150px; width: auto; max-width: none; }
.cv25-agenda-note { margin: 18px 0 0; font-size: .9375rem; font-weight: 300; }

@media (max-width: 1199px) { .cv25-agenda-photo--group { height: 115px; } }
@media (max-width: 1023px) {
    .cv25-agenda-row { grid-template-columns: 170px minmax(0, 1fr); }
    .cv25-agenda-body:has(.cv25-agenda-photo--group) { grid-template-columns: minmax(0, 1fr); grid-template-areas: "en" "h4" "spk" "photo"; }
    .cv25-agenda-photo--group { justify-self: end; height: 120px; margin-top: 16px; }
}
@media (max-width: 767px) {
    .cv25-agenda-row { grid-template-columns: 112px minmax(0, 1fr); column-gap: 10px; }
    .cv25-agenda-time { padding: 14px 0 14px 26px; }
    .cv25-agenda-time:has(strong)::before { top: 15px; border-width: 9px 0 9px 17px; }
    .cv25-agenda-time strong { font-size: .9375rem; white-space: nowrap; }
    .cv25-agenda-time span { font-size: .75rem; }
    .cv25-agenda-body { padding: 14px 0; }
    .cv25-agenda-row--break .cv25-agenda-body { padding: 14px 0; }
    .cv25-agenda-en { font-size: .875rem; }
    .cv25-agenda-body h4 { font-size: 1.0625rem; }
    .cv25-agenda-body h4 br { display: none; } /* desktop line breaks wrap badly at phone width */
    .cv25-agenda-speakers { margin-top: 10px; gap: 6px; font-size: .75rem; }
    .cv25-agenda-body:has(.cv25-agenda-photo) { grid-template-columns: minmax(0, 1fr); grid-template-areas: "en" "h4" "spk" "photo"; }
    .cv25-agenda-photo { justify-self: end; height: 76px; margin-top: 10px; }
    .cv25-agenda-photo--group { height: auto; width: 100%; max-width: 100%; }
    .cv25-agenda-note { font-size: .75rem; }
}
