/**
 * Session front end styles.
 *
 * Everything is namespaced under .dci-session so the theme's own
 * rules are left alone. Barlow and Barlow Condensed are already
 * loaded by the theme; the stacks below name fallbacks so the page
 * still sets correctly if that ever changes.
 *
 * @package DCIEVENTS
 */

/* .dci-session-embed wraps session parts rendered by a shortcode on
   another page, so they get the same palette and type without the
   full page's background and padding. */
.dci-session,
.dci-session-embed {
	--dci-navy: #0d2349;
	--dci-blue: #1c4499;
	--dci-orange: #f7941d;
	--dci-ink: #3f4a5a;
	--dci-quiet: #6b7a90;
	--dci-faint: #8a97ab;
	--dci-rule: #e3e7ed;
	--dci-wash: #f4f6f9;

	/* The site loads Outfit and Bebas Neue. Bebas is condensed and
	   caps only, so it carries the structure - the clock numerals and
	   the section labels - while Outfit carries the content, where a
	   long session title has to stay scannable. */
	--dci-display: "Bebas Neue", "Haettenschweiler", "Arial Narrow", sans-serif;
	--dci-body: "Outfit", "Helvetica Neue", Arial, sans-serif;

	color: var(--dci-ink);
	font-family: var(--dci-body);
}

.dci-session {
	background: #fff;
	padding: 48px 20px 72px;
}

/* The agenda's own top margin separates it from the session header
   above it, which an embedded agenda doesn't have. */
.dci-session-embed > .dci-session-agenda {
	margin-top: 0;
}

.dci-session__inner {
	max-width: 940px;
	margin: 0 auto;
}

/* ── Crumbs ─────────────────────────────────────────── */

.dci-session__crumbs {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 16px;
	margin-bottom: 26px;
}

.dci-session__back {
	color: var(--dci-blue);
	font-size: 14px;
	font-weight: 500;
	text-decoration: none;
}

.dci-session__back:hover,
.dci-session__back:focus-visible {
	text-decoration: underline;
}

.dci-session__day {
	background: var(--dci-navy);
	color: #fff;
	font-size: 12px;
	font-weight: 500;
	letter-spacing: .12em;
	text-transform: uppercase;
	text-decoration: none;
	padding: 5px 11px;
	border-radius: 3px;
}

.dci-session__day:hover,
.dci-session__day:focus-visible {
	background: var(--dci-blue);
	color: #fff;
}

/* ── Head + rail ────────────────────────────────────── */

.dci-session__head {
	display: flex;
	gap: 26px;
	align-items: flex-start;
}

.dci-session-rail {
	flex: 0 0 auto;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	text-align: right;
	border-right: 2px solid var(--dci-rule);
	font-variant-numeric: tabular-nums;
	color: var(--dci-navy);
}

/* An element selector on `p` in the theme's inline CSS outranks
   inheritance from the rail, so these set the face themselves. */
.dci-session-rail p,
.dci-session-rail__face,
.dci-session-rail__meridiem {
	font-family: var(--dci-display);
	font-variant-numeric: tabular-nums;
}

.dci-session-rail--lg {
	flex-basis: 104px;
	padding-right: 18px;
}

.dci-session-rail--sm {
	flex-basis: 74px;
	padding-right: 14px;
}

.dci-session-rail p {
	margin: 0;
	line-height: .95;
}

.dci-session-rail__face {
	font-weight: 400;
	letter-spacing: .01em;
}

.dci-session-rail__meridiem {
	font-weight: 400;
	letter-spacing: .04em;
	margin-left: 3px;
}

.dci-session-rail--lg .dci-session-rail__start .dci-session-rail__face { font-size: 52px; }
.dci-session-rail--lg .dci-session-rail__start .dci-session-rail__meridiem { font-size: 17px; }
.dci-session-rail--lg .dci-session-rail__end { color: var(--dci-faint); }
.dci-session-rail--lg .dci-session-rail__end .dci-session-rail__face { font-size: 26px; }
.dci-session-rail--lg .dci-session-rail__end .dci-session-rail__meridiem { font-size: 12px; }

.dci-session-rail--sm .dci-session-rail__start .dci-session-rail__face { font-size: 29px; }
.dci-session-rail--sm .dci-session-rail__start .dci-session-rail__meridiem { font-size: 12px; }
.dci-session-rail--sm .dci-session-rail__end { color: var(--dci-faint); }
.dci-session-rail--sm .dci-session-rail__end .dci-session-rail__face { font-size: 18px; }
.dci-session-rail--sm .dci-session-rail__end .dci-session-rail__meridiem { font-size: 10px; }

/* --dci-bar is set inline, in proportion to the session's length.
   Vertically it profiles the shape of the day down a listing;
   horizontally, on a phone, it reads as a length along the strip. */
.dci-session-rail__bar {
	display: block;
	width: 4px;
	height: var(--dci-bar, 14px);
	background: var(--dci-orange);
	margin: 10px 0;
}

.dci-session-rail__tba {
	font-family: var(--dci-body);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--dci-faint);
}

/* ── Headline ───────────────────────────────────────── */

.dci-session__headline {
	flex: 1 1 auto;
	min-width: 0;
}

.dci-session__title {
	font-family: var(--dci-body);
	font-size: clamp(28px, 3.9vw, 40px);
	font-weight: 600;
	line-height: 1.1;
	letter-spacing: -.005em;
	color: var(--dci-navy);
	margin: 0 0 16px;
}

.dci-session__meta {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: 6px 26px;
	margin: 0 0 16px;
	padding: 0;
	font-size: 15px;
	color: var(--dci-ink);
}

.dci-session__meta li { margin: 0; }

.dci-session__meta a {
	color: var(--dci-blue);
	text-decoration: none;
}

.dci-session__meta a:hover,
.dci-session__meta a:focus-visible {
	text-decoration: underline;
}

.dci-session__meta-label {
	display: block;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--dci-faint);
	margin-bottom: 1px;
}

/* ── Topic chips ────────────────────────────────────── */

.dci-session-topics {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: 7px;
	margin: 0;
	padding: 0;
}

.dci-session-topics li { margin: 0; }

.dci-session-topic {
	display: inline-block;
	border: 1px solid var(--dci-orange);
	background: #fef4e8;
	color: #8a4d05;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .07em;
	text-transform: uppercase;
	text-decoration: none;
	padding: 4px 10px;
	border-radius: 3px;
}

.dci-session-topic:hover,
.dci-session-topic:focus-visible {
	background: var(--dci-orange);
	color: #fff;
}

/* ── Body copy ──────────────────────────────────────── */

.dci-session__body {
	border-top: 1px solid var(--dci-rule);
	margin-top: 34px;
	padding-top: 26px;
	max-width: 68ch;
	font-size: 17px;
	line-height: 1.65;
}

.dci-session__lead {
	font-size: 18px;
	line-height: 1.6;
	color: var(--dci-navy);
}

.dci-session__lead > * { margin: 0 0 12px; }
.dci-session__lead > *:last-child { margin-bottom: 0; }
.dci-session__lead a { color: var(--dci-blue); }

.dci-session__lead ul,
.dci-session__lead ol { padding-left: 22px; }

.dci-session__lead + * { margin-top: 20px; }

.dci-session__body > *:first-child { margin-top: 0; }
.dci-session__body > *:last-child { margin-bottom: 0; }

.dci-session__body a { color: var(--dci-blue); }

/* ── Speakers ───────────────────────────────────────── */

.dci-session-eyebrow {
	display: inline-block;
	font-family: var(--dci-display);
	font-size: 16px;
	font-weight: 400;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--dci-faint);
	border-bottom: 2px solid var(--dci-navy);
	padding-bottom: 6px;
	margin: 0 0 20px;
}

.dci-session-speakers {
	margin-top: 44px;
}

.dci-session-speakers__grid {
	list-style: none;
	display: grid;
	/* Capped rather than 1fr: a stretched column would blow the
	   circles up to whatever width was left over. */
	grid-template-columns: repeat(auto-fill, minmax(136px, 160px));
	justify-content: start;
	gap: 28px 18px;
	margin: 0;
	padding: 0;
}

.dci-session-speaker { margin: 0; }

.dci-session-speaker__link {
	display: block;
	text-decoration: none;
	text-align: center;
}

.dci-session-speaker__photo {
	display: block;
	width: 104px;
	height: 104px;
	aspect-ratio: 1;
	object-fit: cover;
	object-position: center 20%;
	background: var(--dci-wash);
	border-radius: 50%;
	margin: 0 auto 12px;
	box-shadow: inset 0 0 0 1px rgba(13, 35, 73, .1);
}

.dci-session-speaker__photo--empty {
	border: 1px solid var(--dci-rule);
}

.dci-session-speaker__name {
	display: block;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.25;
	color: var(--dci-blue);
}

.dci-session-speaker__link:hover .dci-session-speaker__name,
.dci-session-speaker__link:focus-visible .dci-session-speaker__name {
	text-decoration: underline;
}

.dci-session-speaker__role {
	margin: 3px 0 0;
	font-size: 13px;
	line-height: 1.35;
	text-align: center;
	color: var(--dci-quiet);
}

/* The session's speakers, under the room and length in the header.
   The meta list above already leaves 16px. */
.dci-session__headline .dci-session__lineup {
	margin: 0 0 16px;
}

/* ── Agenda ─────────────────────────────────────────── */

.dci-session-agenda {
	margin-top: 44px;
}

.dci-session-agenda__list {
	list-style: none;
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--dci-rule);
}

.dci-session-agenda__item {
	display: grid;
	grid-template-columns: 170px 1fr;
	gap: 6px 24px;
	margin: 0;
	padding: 18px 0;
	border-bottom: 1px solid var(--dci-rule);
}

.dci-session-agenda__when {
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.dci-session-agenda__date {
	font-size: 13px;
	color: var(--dci-quiet);
}

.dci-session-agenda__time {
	font-family: var(--dci-display);
	font-size: 24px;
	line-height: 1;
	letter-spacing: .02em;
	color: var(--dci-navy);
}

.dci-session-agenda__detail {
	grid-column: 2;
	min-width: 0;
}

.dci-session-agenda__name {
	margin: 0 0 6px;
	font-family: var(--dci-body);
	font-size: 18px;
	font-weight: 600;
	line-height: 1.3;
	color: var(--dci-navy);
}

/* Sits under the item's name, above the speakers. The pin carries the
   meaning for anyone skimming, so the text is never on its own. */
.dci-session-agenda__location {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0 0 4px;
	font-size: 13px;
	color: var(--dci-quiet);
}

.dci-session-agenda__pin {
	flex: none;
}

/* The headshots come from .dci-session-lineup; this only spaces it
   between the item's name and its description. */
.dci-session-agenda__detail .dci-session-agenda__speakers {
	margin: 8px 0 12px;
}

.dci-session-agenda__description {
	font-size: 15px;
	line-height: 1.55;
}

.dci-session-agenda__description > * { margin: 0 0 10px; }
.dci-session-agenda__description > *:last-child { margin-bottom: 0; }
.dci-session-agenda__description a { color: var(--dci-blue); }

@media (max-width: 640px) {
	.dci-session-agenda__item { grid-template-columns: 1fr; }
	.dci-session-agenda__when { flex-direction: row; align-items: baseline; gap: 10px; }
	.dci-session-agenda__detail { grid-column: 1; }
}

/* ── Taxonomy listing ───────────────────────────────── */

.dci-session-list__head {
	border-bottom: 2px solid var(--dci-navy);
	padding-bottom: 18px;
	margin-bottom: 6px;
}

.dci-session-list__head .dci-session-eyebrow {
	border-bottom: 0;
	padding-bottom: 0;
	margin-bottom: 6px;
}

.dci-session-list__title {
	font-family: var(--dci-display);
	font-size: clamp(38px, 6vw, 62px);
	font-weight: 400;
	letter-spacing: .01em;
	line-height: 1;
	color: var(--dci-navy);
	margin: 0;
}

.dci-session-list__intro {
	max-width: 68ch;
	margin-top: 12px;
	font-size: 16px;
	line-height: 1.6;
}

.dci-session-list__count {
	margin: 10px 0 0;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--dci-faint);
}

/* Two levels of grouping on the archive: the event owns the band,
   the day is a lighter rule inside it. The weight difference is
   what keeps a long multi-event program readable. */
.dci-session-event {
	margin: 56px 0 0;
	padding: 14px 0 12px 16px;
	border-left: 5px solid var(--dci-orange);
	background: var(--dci-wash);
}

.dci-session-event:first-of-type {
	margin-top: 26px;
}

.dci-session-event__name {
	font-family: var(--dci-display);
	font-size: 34px;
	font-weight: 400;
	letter-spacing: .03em;
	line-height: 1;
	color: var(--dci-navy);
	margin: 0;
}

.dci-session-event__name a {
	color: inherit;
	text-decoration: none;
}

.dci-session-event__name a:hover,
.dci-session-event__name a:focus-visible {
	color: var(--dci-blue);
}

.dci-session-event__dates {
	margin: 4px 0 0;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--dci-quiet);
}

/* ── Topic sidebar ──────────────────────────────────── */

.dci-session-layout__main { min-width: 0; }

.dci-session-layout--sidebar {
	display: grid;
	grid-template-columns: 232px minmax(0, 1fr);
	gap: 34px;
	align-items: start;
}

/* Belt and braces: with no sidebar beside it the listing spans both
   columns rather than being squeezed into the narrow one. */
.dci-session-layout__main:only-child {
	grid-column: 1 / -1;
}

.dci-session-topicnav {
	padding-top: 26px;
}

.dci-session-topicnav__all {
	display: block;
	padding: 12px 16px;
	background: var(--dci-wash);
	border-left: 4px solid transparent;
	font-family: var(--dci-display);
	font-size: 17px;
	letter-spacing: .09em;
	color: var(--dci-navy);
	text-decoration: none;
}

.dci-session-topicnav__all:hover,
.dci-session-topicnav__all:focus-visible {
	background: #e8edf4;
	color: var(--dci-navy);
}

.dci-session-topicnav__all.is-current {
	background: var(--dci-navy);
	border-left-color: var(--dci-orange);
	color: #fff;
}

.dci-session-topicnav__label {
	margin: 20px 0 8px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--dci-faint);
}

.dci-session-topicnav__list {
	list-style: none;
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--dci-rule);
}

.dci-session-topicnav__list li { margin: 0; }

.dci-session-topicnav__topic {
	display: block;
	padding: 10px 16px 10px 12px;
	border-bottom: 1px solid var(--dci-rule);
	border-left: 4px solid transparent;
	font-family: var(--dci-display);
	font-size: 16px;
	letter-spacing: .07em;
	line-height: 1.25;
	color: var(--dci-ink);
	text-decoration: none;
}

.dci-session-topicnav__topic:hover,
.dci-session-topicnav__topic:focus-visible {
	background: var(--dci-wash);
	color: var(--dci-blue);
}

.dci-session-topicnav__topic.is-current {
	border-left-color: var(--dci-orange);
	background: var(--dci-wash);
	color: var(--dci-navy);
	font-weight: 500;
}

/* ── Schedule day tabs ──────────────────────────────── */

.dci-session-days__tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 2px;
	margin-top: 22px;
	border-bottom: 2px solid var(--dci-rule);
}

.dci-session-days__tab {
	display: inline-flex;
	align-items: baseline;
	gap: 7px;
	padding: 9px 15px;
	margin-bottom: -2px;
	border: 0;
	border-bottom: 3px solid transparent;
	background: none;
	font-family: var(--dci-display);
	font-size: 21px;
	font-weight: 400;
	letter-spacing: .07em;
	line-height: 1.1;
	color: var(--dci-faint);
	text-decoration: none;
	cursor: pointer;
	transition: color .12s ease, border-color .12s ease;
}

.dci-session-days__tab:hover {
	color: var(--dci-blue);
	background: var(--dci-wash);
}

.dci-session-days__tab[aria-selected="true"] {
	color: var(--dci-navy);
	border-bottom-color: var(--dci-orange);
}

.dci-session-days__tab-count {
	font-family: var(--dci-body);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0;
	color: var(--dci-faint);
	background: var(--dci-wash);
	border-radius: 10px;
	padding: 1px 7px;
}

.dci-session-days__tab[aria-selected="true"] .dci-session-days__tab-count {
	color: #8a4d05;
	background: #fef4e8;
}

/* Each panel keeps its own day heading for the stacked, no-script
   reading. Once the tabs run they label the panels themselves, so
   the heading goes to screen readers only rather than being shown
   twice. */
.dci-session-days--live .dci-session-list__day {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.dci-session-days--live .dci-session-days__panel {
	padding-top: 4px;
}

/* Day heading, subordinate to the event band above it. */
.dci-session-list__day {
	font-family: var(--dci-display);
	font-size: 22px;
	font-weight: 400;
	letter-spacing: .08em;
	line-height: 1;
	color: var(--dci-blue);
	margin: 30px 0 0;
	padding-bottom: 7px;
	border-bottom: 1px solid var(--dci-rule);
}

.dci-session-list__day a {
	color: inherit;
	text-decoration: none;
}

.dci-session-list__day a:hover,
.dci-session-list__day a:focus-visible {
	color: var(--dci-navy);
}

/* The line saying how the listing is narrowed. */
.dci-session-filter {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 4px 12px;
	margin: 10px 0 0;
	font-size: 14px;
	color: var(--dci-quiet);
}

.dci-session-filter strong {
	color: var(--dci-navy);
	font-weight: 600;
}

.dci-session-filter__label,
.dci-session-filter--upcoming {
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--dci-faint);
}

.dci-session-filter__clear {
	color: var(--dci-blue);
	text-decoration: underline;
}

.dci-session-filter--missing {
	color: var(--dci-ink);
}

.dci-session-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.dci-session-list__item {
	display: flex;
	gap: 20px;
	align-items: stretch;
	border-bottom: 1px solid var(--dci-rule);
	padding: 20px 0;
	margin: 0;
}

.dci-session-list__detail {
	flex: 1 1 auto;
	min-width: 0;
}

.dci-session-list__name {
	font-family: var(--dci-body);
	font-size: 21px;
	font-weight: 600;
	line-height: 1.2;
	margin: 0 0 4px;
	color: var(--dci-navy);
}

.dci-session-list__name a {
	color: inherit;
	text-decoration: none;
}

.dci-session-list__name a:hover,
.dci-session-list__name a:focus-visible {
	color: var(--dci-blue);
	text-decoration: underline;
}

.dci-session-list__where {
	display: flex;
	flex-wrap: wrap;
	gap: 2px 16px;
	margin: 0;
	font-size: 14px;
	color: var(--dci-quiet);
}

.dci-session-meta {
	display: inline-flex;
	align-items: center;
	gap: 5px;
}

.dci-session-meta__icon {
	flex: 0 0 auto;
	color: var(--dci-orange);
}

/* The blurb under a session's name in a listing. Held to a reading
   measure so a long one does not run the width of the page. It
   carries editor markup, so its own blocks are spaced here rather
   than relying on a single paragraph. */
.dci-session-list__summary {
	max-width: 66ch;
	margin: 7px 0 0;
	font-size: 14.5px;
	line-height: 1.55;
	color: var(--dci-ink);
}

.dci-session-list__summary > * {
	margin: 0 0 8px;
}

.dci-session-list__summary > *:last-child {
	margin-bottom: 0;
}

.dci-session-list__summary a {
	color: var(--dci-blue);
}

.dci-session-list__summary ul,
.dci-session-list__summary ol {
	padding-left: 20px;
}

.dci-session-list__summary li {
	margin: 0 0 3px;
}

/* The speaker line in a listing row: headshot, name, and the one
   role line. Wraps to as many people as the session has. */
.dci-session-lineup {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: 10px 22px;
	margin: 10px 0 0;
	padding: 0;
}

.dci-session-lineup__person {
	display: flex;
	align-items: center;
	gap: 9px;
	margin: 0;
	max-width: 100%;
}

.dci-session-lineup__photo {
	flex: 0 0 auto;
	width: 38px;
	height: 38px;
	border-radius: 50%;
	object-fit: cover;
	object-position: center 20%;
	background: var(--dci-wash);
	box-shadow: inset 0 0 0 1px rgba(13, 35, 73, .1);
}

.dci-session-lineup__photo--empty {
	display: block;
	border: 1px solid var(--dci-rule);
}

.dci-session-lineup__text {
	display: flex;
	flex-direction: column;
	min-width: 0;
	line-height: 1.3;
}

.dci-session-lineup__name {
	font-size: 14px;
	font-weight: 600;
	color: var(--dci-navy);
	text-decoration: none;
}

a.dci-session-lineup__name {
	color: var(--dci-blue);
}

/* Scoped to the anchor: the same class is a span when the name does
   not link, and underlining that on hover made it look like one. */
a.dci-session-lineup__name:hover,
a.dci-session-lineup__name:focus-visible {
	text-decoration: underline;
}

.dci-session-lineup__role {
	font-size: 12.5px;
	color: var(--dci-quiet);
}

/* Capped on both axes: logos arrive in every shape, and a wide
   wordmark should not dwarf a square badge beside it. */
.dci-session-lineup__logo {
	flex: 0 0 auto;
	display: block;
	width: auto;
	height: auto;
	max-width: 84px;
	max-height: 30px;
	object-fit: contain;
	margin-left: 3px;
	padding-left: 12px;
	border-left: 1px solid var(--dci-rule);
}

.dci-session-list__detail .dci-session-topics {
	margin-top: 10px;
}

.dci-session-list__detail .dci-session-topic {
	font-size: 11px;
	padding: 2px 8px;
}

.dci-session-list__empty {
	padding: 40px 0;
	font-size: 17px;
	color: var(--dci-quiet);
}

.dci-session-pagination {
	margin-top: 32px;
	font-size: 15px;
}

.dci-session-pagination a { color: var(--dci-blue); }

/* ── Focus ──────────────────────────────────────────── */

.dci-session a:focus-visible {
	outline: 3px solid var(--dci-orange);
	outline-offset: 2px;
	border-radius: 2px;
}

/* ── Small screens ──────────────────────────────────── */

/* The theme's .gt-mobile-header is position:absolute, so it reserves
   no space of its own and would sit on top of the crumbs row. Below
   the theme's mobile breakpoint, hold that height open. */
@media (max-width: 1024px) {
	.dci-session { padding-top: 88px; }
}

@media (max-width: 640px) {
	.dci-session { padding: 88px 16px 56px; }

	/* The rail turns into a strip above the title, so the headline
	   keeps the full width on a phone. */
	.dci-session__head,
	.dci-session-list__item {
		flex-direction: column;
		gap: 12px;
	}

	.dci-session-rail {
		flex-direction: row;
		align-items: baseline;
		gap: 10px;
		text-align: left;
		border-right: 0;
		border-bottom: 2px solid var(--dci-rule);
		padding: 0 0 8px;
		flex-basis: auto;
		width: 100%;
	}

	.dci-session-rail__bar {
		height: 4px;
		width: var(--dci-bar, 14px);
		max-width: 84px;
		margin: 0 2px;
		align-self: center;
	}

	.dci-session-rail--lg .dci-session-rail__start .dci-session-rail__face { font-size: 38px; }
	.dci-session-rail--lg .dci-session-rail__end .dci-session-rail__face { font-size: 21px; }

	.dci-session-speakers__grid {
		grid-template-columns: repeat(auto-fill, minmax(104px, 132px));
		gap: 22px 12px;
	}

	.dci-session-speaker__photo {
		width: 84px;
		height: 84px;
	}

	.dci-session-event {
		margin-top: 40px;
		padding: 12px 0 10px 12px;
		border-left-width: 4px;
	}

	.dci-session-event__name { font-size: 27px; }
	.dci-session-list__day { font-size: 19px; margin-top: 24px; }

	.dci-session-days__tabs {
		flex-wrap: nowrap;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}

	.dci-session-days__tabs::-webkit-scrollbar { display: none; }

	.dci-session-days__tab {
		flex: 0 0 auto;
		font-size: 18px;
		padding: 8px 12px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.dci-session * {
		transition: none !important;
		animation: none !important;
	}
}

/* The theme defines .screen-reader-text, but these templates must
   not depend on it: without this the label leaks into the row. */
.dci-session .screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

/* Below the sidebar breakpoint the topics sit above the listing as
   wrapping chips. Ten stacked rows would push the programme itself
   off the first screen. */
@media (max-width: 900px) {
	.dci-session-layout--sidebar {
		display: block;
	}

	.dci-session-topicnav {
		padding-top: 20px;
		margin-bottom: 26px;
	}

	.dci-session-topicnav__all {
		display: inline-block;
		padding: 8px 14px;
		font-size: 16px;
	}

	.dci-session-topicnav__label {
		margin: 16px 0 8px;
	}

	.dci-session-topicnav__list {
		display: flex;
		flex-wrap: wrap;
		gap: 6px;
		border-top: 0;
	}

	.dci-session-topicnav__topic {
		padding: 5px 11px;
		border: 1px solid var(--dci-rule);
		border-left-width: 1px;
		border-radius: 3px;
		font-size: 14px;
	}

	.dci-session-topicnav__topic.is-current {
		border-color: var(--dci-orange);
		border-left-color: var(--dci-orange);
	}
}

/* ---------------------------------------------------------------
   Agenda cards

   Items sharing a date and time share a block, three across before
   they wrap onto a new row. One alone in its slot takes the full
   width, and with the room to do it lays every speaker out in columns.
   --------------------------------------------------------------- */

/* --dci-agenda-cols carries the per_row setting. It is set inline, so
   it can't be the variable the grid reads: an inline value would beat
   the phone rule below and keep three columns on a narrow screen. */
.dci-agenda {
	--dci-agenda-per-row: var(--dci-agenda-cols, 3);
	--dci-agenda-gap: 22px;
}

/* Days are only hidden once the script has run, so an agenda stays
   whole if it never does. */
.dci-agenda.is-tabbed .dci-agenda__day {
	display: none;
}

.dci-agenda.is-tabbed .dci-agenda__day.is-current {
	display: block;
}

.dci-agenda__days {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-bottom: 30px;
}

.dci-agenda__day-tab {
	padding: 10px 20px;
	border: 1px solid var(--dci-rule);
	border-radius: 12px;
	background: #fff;
	color: var(--dci-ink);
	font: inherit;
	text-align: left;
	cursor: pointer;
}

.dci-agenda__day-tab.is-current {
	background: var(--dci-navy);
	border-color: var(--dci-navy);
	color: #fff;
}

.dci-agenda__day-tab-weekday {
	display: block;
	font-size: 11px;
	letter-spacing: .14em;
	text-transform: uppercase;
	opacity: .72;
}

.dci-agenda__day-tab-date {
	display: block;
	margin-top: 2px;
	font-family: var(--dci-display);
	font-size: 21px;
	letter-spacing: .03em;
}

.dci-agenda__day-heading {
	margin: 0 0 20px;
	font-family: var(--dci-display);
	font-size: 32px;
	letter-spacing: .02em;
	color: var(--dci-navy);
}

.dci-agenda__slot {
	margin-bottom: 42px;
}

.dci-agenda__slot-head {
	display: flex;
	align-items: baseline;
	gap: 16px;
	margin-bottom: 16px;
}

.dci-agenda__slot-time {
	margin: 0;
	font-family: var(--dci-display);
	font-size: 27px;
	letter-spacing: .03em;
	color: var(--dci-navy);
	white-space: nowrap;
}

.dci-agenda__slot-meridiem {
	margin-left: 4px;
	font-size: .62em;
}

.dci-agenda__slot-rule {
	flex: 1;
	height: 1px;
	background: var(--dci-rule);
}

.dci-agenda__slot-count {
	color: var(--dci-faint);
	font-size: 12px;
	letter-spacing: .1em;
	text-transform: uppercase;
	white-space: nowrap;
}

/* The track is a grid of equal columns that wraps; the count is how
   many sit side by side before the next card starts a new row. */
.dci-agenda__track {
	display: grid;
	grid-template-columns: repeat(var(--dci-agenda-per-row), minmax(0, 1fr));
	gap: var(--dci-agenda-gap);
	align-items: stretch;
}

.dci-agenda__track.is-single {
	display: block;
}

.dci-agenda__card {
	display: flex;
	flex-direction: column;
	gap: 15px;
	width: 100%;
	padding: 22px;
	background: #fff;
	border: 1px solid var(--dci-rule);
	border-radius: 16px;
	font: inherit;
	color: inherit;
	text-align: left;
	cursor: pointer;
	transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

/* The card is a <button>, and themes routinely shout at those. A
   session title is a sentence, not a label. */
.dci-agenda__card,
.dci-agenda__card span {
	text-transform: none;
	letter-spacing: normal;
}

.dci-agenda__card:hover {
	border-color: #c9d0de;
	box-shadow: 0 6px 20px rgba(13, 35, 73, .09);
	transform: translateY(-2px);
}

.dci-agenda__card-title {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
	min-height: 68px;
	font-size: 17px;
	font-weight: 600;
	line-height: 1.34;
	color: var(--dci-navy);
}

.dci-agenda__track.is-single .dci-agenda__card-title {
	-webkit-line-clamp: 2;
	min-height: 0;
	font-size: 19px;
}

.dci-agenda__card-location,
.dci-agenda__dialog-location {
	display: flex;
	align-items: center;
	gap: 7px;
	font-size: 12.5px;
	color: var(--dci-quiet);
}

.dci-agenda__pin {
	flex: none;
}

.dci-agenda__card-speakers {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

/* Across the full width there is room for columns, so a long panel
   costs one row rather than five. */
.dci-agenda__track.is-single .dci-agenda__card-speakers {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 16px 24px;
}

.dci-agenda__speaker {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	min-width: 0;
}

.dci-agenda__speaker-photo {
	flex: none;
	width: 42px;
	height: 42px;
	border-radius: 50%;
	object-fit: cover;
	background: var(--dci-rule);
}

.dci-agenda__speaker-who {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}

.dci-agenda__speaker-name {
	font-size: 13.5px;
	font-weight: 600;
	line-height: 1.3;
	color: var(--dci-navy);
}

.dci-agenda__speaker-role {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	font-size: 11.5px;
	line-height: 1.35;
	color: var(--dci-quiet);
}

.dci-agenda__speaker-logo {
	width: auto;
	max-width: 88px;
	max-height: 18px;
	margin-top: 5px;
	object-fit: contain;
}

.dci-agenda__card-more {
	align-self: flex-start;
	padding: 5px 12px;
	border-radius: 99px;
	background: var(--dci-wash);
	color: var(--dci-ink);
	font-size: 12px;
	font-weight: 600;
}

.dci-agenda__card-cue {
	margin-top: auto;
	font-size: 13px;
	font-weight: 600;
	color: var(--dci-blue);
}

/* ---------------------------------------------------------------
   The details dialog
   --------------------------------------------------------------- */

.dci-agenda__dialog {
	width: min(640px, calc(100vw - 48px));
	max-height: 84vh;
	padding: 34px 36px 36px;
	border: 0;
	border-radius: 20px;
	color: var(--dci-ink);
	box-shadow: 0 24px 60px rgba(13, 35, 73, .3);
}

.dci-agenda__dialog::backdrop {
	background: rgba(13, 35, 73, .58);
}

.dci-agenda__dialog-dismiss {
	margin: 0;
}

.dci-agenda__dialog-close {
	position: absolute;
	top: 18px;
	right: 18px;
	box-sizing: border-box;
	/* The theme gives buttons padding and a minimum width, which
	   stretches a round one into a pill. */
	width: 38px;
	min-width: 0;
	height: 38px;
	padding: 0;
	border: 1px solid var(--dci-rule);
	border-radius: 50%;
	background: #fff;
	color: var(--dci-ink);
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
}

.dci-agenda__dialog-when {
	margin: 0 0 10px;
	font-family: var(--dci-display);
	font-size: 20px;
	letter-spacing: .08em;
	color: var(--dci-blue);
}

.dci-agenda__dialog-title {
	margin: 0 0 12px;
	padding-right: 36px;
	/* Matches the card it was opened from, rather than the site's
	   condensed heading face. */
	font-family: var(--dci-body);
	text-transform: none;
	letter-spacing: normal;
	font-size: 25px;
	font-weight: 700;
	line-height: 1.26;
	color: var(--dci-navy);
}

.dci-agenda__dialog-location {
	margin: 0 0 22px;
	font-size: 13.5px;
}

.dci-agenda__dialog-description {
	margin-bottom: 26px;
	font-size: 15px;
	line-height: 1.6;
}

.dci-agenda__dialog-label {
	margin: 0 0 14px;
	color: var(--dci-faint);
	font-size: 12px;
	letter-spacing: .12em;
	text-transform: uppercase;
}

/* ---------------------------------------------------------------
   Phones: one card per row, stacked.
   --------------------------------------------------------------- */

@media (max-width: 782px) {
	.dci-agenda {
		--dci-agenda-per-row: 1;
	}

	.dci-agenda__day-heading {
		font-size: 26px;
	}
}
