/* Entryvent Agenda Builder — front end.
   Everything is scoped under .evab; colours, radii and fonts come from the --evab-* tokens
   (defaults below, overridden from Agenda settings / each Faculty listing). Mobile-first. */

.evab {
	--evab-color-primary: #1f5eff;
	--evab-color-text: #1a1a1f;
	--evab-color-muted: #6b6f78;
	--evab-color-surface: #ffffff;
	--evab-color-surface-2: #f4f5f7;
	--evab-color-border: #e4e6ea;
	--evab-color-fav: #e5397a;
	--evab-color-now: #0f9d58;
	/* per-thing colours (Agenda settings); they follow the base colours unless set */
	--evab-filters-bg: var(--evab-color-surface-2);
	--evab-filters-text: var(--evab-color-text);
	--evab-days-bg: var(--evab-color-surface);
	--evab-days-text: var(--evab-color-text);
	--evab-days-border: var(--evab-color-border);
	--evab-days-active-bg: var(--evab-color-primary);
	--evab-days-active-text: #ffffff;
	--evab-session-bg: var(--evab-color-surface);
	--evab-session-border: var(--evab-color-border);
	--evab-card-bg: var(--evab-color-surface);
	--evab-card-border: var(--evab-color-border);
	--evab-radius: 12px;
	--evab-photo-radius: 50%;
	--evab-photo-size: 5.5rem;
	--evab-font-heading: inherit;
	--evab-font-body: inherit;
	--evab-font-size: 16px;
	--evab-accent: var(--evab-session-border);
	--evab-tag: #6b6f78;

	font-family: var(--evab-font-body);
	font-size: var(--evab-font-size);
	line-height: 1.45;
	color: var(--evab-color-text);
	box-sizing: border-box;
}
.evab *, .evab *::before, .evab *::after { box-sizing: inherit; }
.evab h2, .evab h3, .evab h4, .evab p { margin: 0; font-family: inherit; }
.evab h2, .evab h3, .evab h4 { font-family: var(--evab-font-heading); line-height: 1.25; }
.evab button { font: inherit; color: inherit; }
.evab [hidden] { display: none !important; }
.evab .evab-icon { width: 1.25em; height: 1.25em; flex: none; }

/* ---------- buttons & chips ---------- */
.evab .evab-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	padding: 0.55em 1em;
	border: 1px solid var(--evab-color-border);
	border-radius: 999px;
	background: var(--evab-color-surface);
	cursor: pointer;
	font-size: 0.9375em;
	font-weight: 600;
	line-height: 1.2;
	transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.evab .evab-btn:hover { border-color: var(--evab-color-text); }
.evab .evab-btn:focus-visible { outline: 2px solid var(--evab-color-primary); outline-offset: 2px; }
.evab .evab-btn--ghost { border-color: transparent; background: var(--evab-color-surface-2); }
.evab .evab-btn--ghost:hover { background: var(--evab-color-border); border-color: transparent; }
.evab .evab-btn[aria-expanded="true"] { background: var(--evab-color-text); color: var(--evab-color-surface); border-color: var(--evab-color-text); }
.evab .evab-btn__badge {
	min-width: 1.5em;
	padding: 0 0.4em;
	border-radius: 999px;
	background: var(--evab-color-primary);
	color: #fff;
	font-size: 0.75em;
	text-align: center;
}
.evab .evab-chip {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	padding: 0.4em 0.85em;
	border: 1px solid var(--evab-color-border);
	border-radius: 999px;
	background: var(--evab-color-surface);
	cursor: pointer;
	font-size: 0.875em;
	line-height: 1.2;
	transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.evab .evab-chip:hover { border-color: var(--evab-color-text); }
.evab .evab-chip[aria-pressed="true"] { background: var(--evab-color-text); color: var(--evab-color-surface); border-color: var(--evab-color-text); }
.evab .evab-chip__dot { width: 0.6em; height: 0.6em; border-radius: 50%; background: var(--evab-tag); }

/* ---------- toolbar ---------- */
.evab .evab-agenda__toolbar { display: flex; flex-direction: column; gap: 1rem; margin-bottom: 1.5rem; }
.evab .evab-days {
	display: flex;
	gap: 0.5rem;
	overflow-x: auto;
	padding-bottom: 0.25rem;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}
.evab .evab-days::-webkit-scrollbar { display: none; }
.evab .evab-days--center { justify-content: safe center; }
.evab .evab-days__day {
	flex: none;
	display: flex;
	flex-direction: column;
	align-items: center;
	min-width: 3.75rem;
	padding: 0.5rem 0.75rem 0.4rem;
	border: 1px solid var(--evab-days-border);
	border-radius: var(--evab-radius);
	background: var(--evab-days-bg);
	color: var(--evab-days-text);
	cursor: pointer;
	line-height: 1.1;
	transition: background 0.15s, border-color 0.15s, color 0.15s, transform 0.15s;
}
.evab .evab-days__day:hover { border-color: var(--evab-color-text); }
.evab .evab-days__day:focus-visible { outline: 2px solid var(--evab-color-primary); outline-offset: 2px; }
.evab .evab-days__day[aria-selected="true"] { background: var(--evab-days-active-bg); border-color: var(--evab-days-active-bg); color: var(--evab-days-active-text); }
.evab .evab-days__wd, .evab .evab-days__mon { font-size: 0.7em; text-transform: uppercase; letter-spacing: 0.04em; opacity: 0.75; }
.evab .evab-days__num { font-size: 1.5em; font-weight: 700; margin: 0.1em 0; }
.evab .evab-days__day--all .evab-days__num { font-size: 1em; margin: 0.45em 0 0.3em; }
.evab .evab-days__day.is-today::after { content: ""; width: 0.35em; height: 0.35em; border-radius: 50%; background: currentColor; margin-top: 0.25em; }

.evab .evab-agenda__controls { display: flex; gap: 0.6rem; align-items: stretch; width: 100%; }
.evab .evab-search {
	flex: 1;
	display: flex;
	align-items: center;
	gap: 0.6em;
	padding: 0 0.6em 0 1em;
	border: 1px solid transparent;
	border-radius: 999px;
	background: var(--evab-filters-bg);
	color: var(--evab-color-muted);
	transition: background 0.15s, border-color 0.15s, box-shadow 0.15s;
}
.evab .evab-search:hover { background: var(--evab-color-border); }
.evab .evab-search:focus-within { background: var(--evab-filters-bg); border-color: var(--evab-color-primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--evab-color-primary) 18%, transparent); color: var(--evab-color-text); }
/* !important on the metrics: themes style input[type="search"] with higher
   specificity than a class (The7: .content input[type="search"] sets font-size,
   padding, line-height, min-height and a 10px margin-bottom), which pushes the
   text off-centre and grows the pill. */
.evab .evab-search__input, .evab .evab-search__input:focus {
	flex: 1;
	min-width: 0;
	width: auto;
	height: auto !important;
	min-height: 0 !important;
	margin: 0 !important;
	padding: 0.5em 0 !important;
	border: 0 !important;
	border-radius: 0;
	background: transparent !important;
	box-shadow: none !important;
	outline: none !important;
	font: inherit !important;
	line-height: 1.3 !important;
	color: var(--evab-filters-text);
	-webkit-appearance: none;
	appearance: none;
}
.evab .evab-search__input::placeholder { color: var(--evab-color-muted); opacity: 1; }
.evab .evab-search__input:focus { outline: none; }
.evab .evab-search__input::-webkit-search-cancel-button { -webkit-appearance: none; }
.evab .evab-search__clear {
	display: none;
	width: 1.75em;
	height: 1.75em;
	align-items: center;
	justify-content: center;
	border: 0;
	border-radius: 50%;
	background: var(--evab-color-border);
	color: var(--evab-color-text);
	cursor: pointer;
	flex: none;
}
.evab .evab-search.has-value .evab-search__clear { display: inline-flex; }
.evab .evab-search__clear .evab-icon { width: 0.9em; height: 0.9em; }
.evab .evab-btn--filter { flex: none; background: var(--evab-filters-bg); border-color: transparent; color: var(--evab-filters-text); }
.evab .evab-btn--filter:hover { border-color: var(--evab-filters-text); }

.evab .evab-filters {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	padding: 1rem;
	border: 1px solid var(--evab-color-border);
	border-radius: var(--evab-radius);
	background: var(--evab-filters-bg);
	color: var(--evab-filters-text);
}
.evab .evab-filters__group { border: 0; padding: 0; margin: 0; min-width: 0; }
.evab .evab-filters__label { padding: 0; margin-bottom: 0.4rem; font-size: 0.75em; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--evab-color-muted); }
.evab .evab-filters__chips { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.evab .evab-filters__actions { display: flex; justify-content: flex-end; }

/* ---------- days & sessions ---------- */
.evab .evab-day { margin-bottom: 1.5rem; }
.evab .evab-day__title {
	font-size: 0.8em;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--evab-color-muted);
	margin: 0 0 0.6rem;
	padding: 0.25rem 0;
}
.evab .evab-day__title--small { margin-top: 0.75rem; }
.evab .evab-agenda__section { font-size: 0.8em; text-transform: uppercase; letter-spacing: 0.08em; color: var(--evab-color-muted); margin-top: 1rem; }

.evab .evab-session {
	position: relative;
	display: grid;
	grid-template-columns: auto 1fr auto;
	gap: 0.25rem 0.6rem;
	align-items: start;
	margin-bottom: 0.5rem;
	padding: 0.75rem 0.5rem 0.75rem 0.6rem;
	border: 1px solid var(--evab-session-border);
	border-left: 4px solid var(--evab-accent);
	border-radius: var(--evab-radius);
	background: var(--evab-session-bg);
	transition: box-shadow 0.15s, opacity 0.2s;
}
.evab .evab-session:hover { box-shadow: 0 2px 10px rgba(0, 0, 0, 0.06); }
.evab .evab-session.has-talks { cursor: pointer; }
.evab .evab-session__time { display: flex; flex-direction: column; align-items: center; align-self: stretch; min-width: 3.25rem; font-variant-numeric: tabular-nums; line-height: 1.2; text-align: center; }
.evab .evab-session__start { font-weight: 700; line-height: 1.6; }
.evab .evab-session__end { font-size: 0.8em; color: var(--evab-color-muted); }
.evab .evab-session.is-repeat .evab-session__time { visibility: hidden; }
.evab .evab-session__body { min-width: 0; }
.evab .evab-session__title { font-size: 1.1em; font-weight: 700; }
.evab .evab-session__subtitle { font-size: 0.9em; color: var(--evab-color-muted); margin-top: 0.1rem; }
.evab .evab-session__desc { font-size: 0.9em; margin-top: 0.35rem; color: var(--evab-color-muted); }
.evab .evab-session__desc p { margin: 0 0 0.35em; }
.evab .evab-session__people { font-size: 0.875em; margin-top: 0.35rem; }
.evab .evab-session__label { color: var(--evab-color-muted); }
.evab .evab-name.is-highlight { color: var(--evab-color-primary); }
.evab .evab-tags { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-top: 0.5rem; }
.evab .evab-tag {
	display: inline-block;
	padding: 0.15em 0.6em;
	border-radius: 999px;
	background: var(--evab-color-surface-2);
	color: var(--evab-color-muted);
	font-size: 0.72em;
	font-weight: 600;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	line-height: 1.6;
}
.evab .evab-tag--colored { background: var(--evab-tag); color: #fff; }
.evab .evab-session__actions { display: flex; align-items: center; gap: 0.1rem; margin: -0.35rem -0.2rem 0 0; }
.evab .evab-fav, .evab .evab-expand {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.2em;
	min-width: 2.1rem;
	height: 2.1rem;
	padding: 0 0.4rem;
	border: 0;
	border-radius: 999px;
	background: transparent;
	color: var(--evab-color-muted);
	cursor: pointer;
	transition: color 0.15s, background 0.15s, transform 0.15s;
}
.evab .evab-fav:hover, .evab .evab-expand:hover { background: var(--evab-color-surface-2); color: var(--evab-color-text); }
.evab .evab-fav:focus-visible, .evab .evab-expand:focus-visible { outline: 2px solid var(--evab-color-primary); outline-offset: 1px; }
.evab .evab-fav[aria-pressed="true"] { color: var(--evab-color-fav); }
.evab .evab-fav[aria-pressed="true"] .evab-icon { fill: currentColor; }
.evab .evab-fav.is-pop .evab-icon { animation: evab-pop 0.3s ease; }
@keyframes evab-pop { 0% { transform: scale(1); } 40% { transform: scale(1.35); } 100% { transform: scale(1); } }
.evab .evab-expand__count { font-size: 0.8em; font-weight: 700; }
.evab .evab-expand .evab-icon { transition: transform 0.2s; }
.evab .evab-expand[aria-expanded="true"] .evab-icon { transform: rotate(180deg); }

/* speaker agenda (collapsible) */
.evab.evab-agenda--speaker { margin-top: 0.75rem; }
.evab .evab-agenda__summary {
	display: flex;
	align-items: center;
	gap: 0.5em;
	padding: 0.6em 0.9em;
	border: 1px solid var(--evab-color-border);
	border-radius: 999px;
	background: var(--evab-color-surface-2);
	cursor: pointer;
	font-weight: 600;
	font-size: 0.9375em;
	list-style: none;
	width: fit-content;
	user-select: none;
}
.evab .evab-agenda__summary::-webkit-details-marker { display: none; }
.evab .evab-agenda__summary .evab-icon--chevron { transition: transform 0.2s; }
.evab.evab-agenda--speaker[open] .evab-agenda__summary .evab-icon--chevron { transform: rotate(180deg); }
.evab .evab-agenda__panel { margin-top: 0.75rem; }
.evab.evab-agenda--speaker .evab-expand { display: none; }

/* now / next: a small pill at the bottom of the time column (::before is the spacer that pushes it down) */
.evab .evab-session__time[data-marker]::before { content: ""; order: 1; flex: 1 0 0.4em; }
.evab .evab-session__time[data-marker]::after {
	content: attr(data-marker);
	order: 2;
	padding: 0.15em 0.55em;
	border-radius: 999px;
	background: var(--evab-color-now);
	color: #fff;
	font-size: 0.62em;
	font-weight: 700;
	line-height: 1.5;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	animation: evab-pulse 2.4s ease-out infinite;
}
.evab .evab-session.is-next .evab-session__time[data-marker]::after { background: transparent; color: var(--evab-color-muted); box-shadow: inset 0 0 0 1px var(--evab-color-border); animation: none; }
@keyframes evab-pulse {
	0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--evab-color-now) 45%, transparent); }
	70%, 100% { box-shadow: 0 0 0 0.55em transparent; }
}

/* talks */
.evab .evab-talks { grid-column: 1 / -1; display: grid; grid-template-rows: 0fr; transition: grid-template-rows 0.25s ease; }
.evab .evab-talks.is-open { grid-template-rows: 1fr; }
.evab .evab-talks__inner { min-height: 0; overflow: hidden; }
.evab .evab-talks.is-open .evab-talks__inner { overflow: visible; }
.evab .evab-talk {
	display: grid;
	grid-template-columns: 3.25rem 1fr auto;
	gap: 0.25rem 0.6rem;
	align-items: start;
	padding: 0.6rem 0;
	border-top: 1px dashed var(--evab-color-border);
	cursor: default;
}
.evab .evab-talks__inner > .evab-talk:first-child { margin-top: 0.6rem; border-top: 1px solid var(--evab-color-border); }
.evab .evab-talk.evab-talk--notime { grid-template-columns: 1fr auto; }
.evab .evab-talk--notime .evab-talk__time { display: none; }
.evab .evab-talk__time { display: flex; flex-direction: column; align-items: center; text-align: center; font-size: 0.85em; font-variant-numeric: tabular-nums; line-height: 1.25; color: var(--evab-color-muted); }
.evab .evab-talk__start { font-weight: 700; color: var(--evab-color-text); line-height: 1.54; }
.evab .evab-talk__title { font-size: 0.9em; font-weight: 600; }
.evab .evab-talk__speakers { font-size: 0.85em; color: var(--evab-color-muted); margin-top: 0.1rem; }
.evab .evab-talk__desc { font-size: 0.85em; margin-top: 0.25rem; color: var(--evab-color-muted); }
.evab .evab-talk.is-highlight { background: var(--evab-color-surface-2); border-radius: calc(var(--evab-radius) / 2); padding-left: 0.5rem; padding-right: 0.5rem; }
.evab .evab-talk.is-fav .evab-talk__title { color: var(--evab-color-fav); }
.evab .evab-fav--talk { min-width: 2rem; height: 2rem; }

.evab .evab-empty {
	padding: 2rem 1rem;
	text-align: center;
	color: var(--evab-color-muted);
	border: 1px dashed var(--evab-color-border);
	border-radius: var(--evab-radius);
}
.evab .evab-empty a { color: var(--evab-color-primary); }

/* favourites layout: a favourite session and only its favourite talks */
.evab.evab-agenda--favorites .evab-session:not(.is-fav):not(.has-fav-talk) { display: none; }
.evab.evab-agenda--favorites .evab-talk:not(.is-fav) { display: none; }
.evab.evab-agenda--favorites .evab-expand { display: none; }
.evab.evab-agenda--favorites .evab-session { cursor: default; }

/* kiosk: the agenda owns the screen. The body is hidden from <head>
   (Shortcodes::kiosk_head) so the theme never paints; the root sits fixed
   over the viewport at the highest z-index there is, and frontend.js
   re-parents it to <body> so no theme wrapper (transform, opacity,
   z-index) can trap it under a header. body.evab-kiosk is the hook for
   per-site CSS. */
body.evab-kiosk { overflow: hidden; }
.evab.evab-agenda--kiosk {
	--evab-font-size: 18px;
	position: fixed;
	inset: 0;
	z-index: 2147483647;
	overflow: auto;
	-webkit-overflow-scrolling: touch;
	margin: 0;
	padding: 1.5rem clamp(1rem, 4vw, 3rem) 3rem;
	background: var(--evab-color-surface);
	visibility: visible;
}
.evab.evab-agenda--kiosk > * { max-width: 1400px; margin-left: auto; margin-right: auto; }
.evab.evab-agenda--kiosk .evab-session__actions .evab-fav { display: none; }

/* ---------- faculty ---------- */
.evab.evab-faculty { container-type: inline-size; }
.evab .evab-faculty__grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
.evab .evab-card {
	display: grid;
	grid-template-columns: var(--evab-photo-size) 1fr;
	gap: 0.25rem 1rem;
	align-items: start;
	padding: 1rem;
	border: 1px solid var(--evab-card-border);
	border-radius: var(--evab-radius);
	background: var(--evab-card-bg);
}
.evab.evab-faculty--noborder .evab-card { border-color: transparent; padding: 0.75rem; }
.evab .evab-card__photo, .evab .evab-modal__photo {
	width: var(--evab-photo-size);
	aspect-ratio: 1;
	overflow: hidden;
	border-radius: var(--evab-photo-radius);
	background: var(--evab-color-surface-2);
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--evab-color-muted);
}
.evab .evab-card__img { width: 100%; height: 100%; object-fit: cover; display: block; }
.evab .evab-card__placeholder { display: flex; width: 100%; height: 100%; align-items: center; justify-content: center; }
.evab .evab-card__placeholder .evab-icon { width: 42%; height: 42%; stroke-width: 1.5; }
.evab.evab-faculty--photo-round { --evab-photo-radius: 50%; }
.evab.evab-faculty--photo-rounded { --evab-photo-radius: calc(var(--evab-radius) / 2); }
.evab.evab-faculty--photo-square { --evab-photo-radius: 0; }
.evab.evab-faculty--photo-s { --evab-photo-size: 4.25rem; }
.evab.evab-faculty--photo-l { --evab-photo-size: 7rem; }
.evab.evab-faculty--photo-none .evab-card { grid-template-columns: 1fr; }
.evab.evab-faculty--photo-none .evab-card__photo { display: none; }
.evab .evab-card__body { min-width: 0; }
/* each text line reads its own --evab-card-<line>-* (set per listing), else the defaults here */
.evab .evab-card__name { font-size: var(--evab-card-name-size, 1.05em); font-weight: var(--evab-card-name-weight, 700); font-style: var(--evab-card-name-style, normal); color: var(--evab-card-name-color, inherit); }
.evab .evab-card__position { font-size: var(--evab-card-position-size, 0.9em); font-weight: var(--evab-card-position-weight, 400); font-style: var(--evab-card-position-style, normal); color: var(--evab-card-position-color, inherit); margin-top: 0.15rem; }
.evab .evab-card__institution { font-size: var(--evab-card-institution-size, 0.875em); font-weight: var(--evab-card-institution-weight, 400); font-style: var(--evab-card-institution-style, normal); color: var(--evab-card-institution-color, var(--evab-color-muted)); }
.evab .evab-card__place { display: flex; align-items: center; gap: 0.3em; font-size: var(--evab-card-place-size, 0.8em); font-weight: var(--evab-card-place-weight, 400); font-style: var(--evab-card-place-style, normal); color: var(--evab-card-place-color, var(--evab-color-muted)); margin-top: 0.2rem; }
.evab .evab-card__agenda { grid-column: 1 / -1; min-width: 0; align-self: end; }
.evab .evab-card__agenda .evab-agenda--speaker { margin-top: 0.5rem; }
.evab .evab-card__agenda .evab-agenda__summary { white-space: nowrap; font-size: 0.875em; padding: 0.5em 0.85em; }
.evab .evab-card__agenda .evab-session { font-size: 0.9em; }
/* cards in one row share a height: the agenda pill sits at the bottom of every card */
.evab.evab-faculty--text-right .evab-card { grid-template-rows: 1fr auto; }
.evab.evab-faculty--text-bottom .evab-card { grid-template-rows: auto 1fr auto; }
.evab.evab-faculty--text-bottom .evab-card__agenda { text-align: left; justify-self: stretch; }
.evab.evab-faculty--text-bottom .evab-card__agenda .evab-agenda__summary { margin: 0 auto; }
.evab.evab-faculty--shadow .evab-card { box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04), 0 6px 16px rgba(16, 24, 40, 0.06); }
.evab .evab-faculty__toolbar { display: flex; margin-bottom: 1rem; }
.evab .evab-faculty__toolbar .evab-search { flex: 1; }
.evab .evab-card.is-hidden { display: none; }
.evab .evab-card__place .evab-icon { width: 1em; height: 1em; }
.evab .evab-card__more { margin-top: 0.6rem; }
.evab.evab-faculty--text-bottom .evab-card { grid-template-columns: 1fr; text-align: center; justify-items: center; }
.evab.evab-faculty--text-bottom .evab-card__photo { width: calc(var(--evab-photo-size) * 1.45); }
.evab.evab-faculty--text-bottom .evab-card__place { justify-content: center; }
.evab.evab-faculty--text-bottom .evab-card__more { justify-self: center; }
.evab.evab-faculty--single { grid-template-columns: 1fr; }
.evab .evab-bio { margin-top: 1rem; font-size: 0.95em; }
.evab .evab-bio p { margin: 0 0 0.75em; }

/* modal */
.evab .evab-modal {
	position: fixed;
	inset: 0;
	margin: auto;
	width: min(42rem, calc(100vw - 2rem));
	max-height: min(85vh, 60rem);
	padding: 0;
	border: 0;
	border-radius: var(--evab-radius);
	background: var(--evab-color-surface);
	color: var(--evab-color-text);
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
	font-family: var(--evab-font-body);
	font-size: var(--evab-font-size);
	line-height: 1.45;
}
.evab .evab-modal::backdrop { background: rgba(10, 10, 20, 0.5); backdrop-filter: blur(2px); }
.evab .evab-modal[open] { animation: evab-modal-in 0.2s ease; }
@keyframes evab-modal-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.evab .evab-modal__close {
	position: absolute;
	top: 0.6rem;
	right: 0.6rem;
	display: inline-flex;
	width: 2.25rem;
	height: 2.25rem;
	align-items: center;
	justify-content: center;
	border: 0;
	border-radius: 50%;
	background: var(--evab-color-surface-2);
	color: var(--evab-color-text);
	cursor: pointer;
}
.evab .evab-modal__body { padding: 1.5rem; overflow: auto; max-height: inherit; }
.evab .evab-modal__head { display: flex; gap: 1rem; align-items: center; padding-right: 2.5rem; margin-bottom: 1rem; padding-bottom: 1rem; border-bottom: 1px solid var(--evab-color-border); }
.evab .evab-modal__photo { width: 4.5rem; flex: none; --evab-photo-size: 4.5rem; }
.evab .evab-modal__name { font-size: 1.15em; font-weight: 700; }
.evab .evab-modal__position, .evab .evab-modal__place { font-size: 0.875em; color: var(--evab-color-muted); }
.evab .evab-modal .evab-agenda--speaker { margin-top: 1rem; }

/* ---------- wider screens ---------- */
@media (min-width: 640px) {
	.evab .evab-session { padding: 0.85rem 0.6rem 0.85rem 0.75rem; gap: 0.25rem 0.9rem; }
	.evab .evab-session__time { min-width: 3.75rem; }
	.evab .evab-session__end { font-size: 0.85em; }
	.evab .evab-talk { grid-template-columns: 3.75rem 1fr auto; gap: 0.25rem 0.9rem; }
}
/* faculty columns follow the container, not the viewport (shortcodes land in any column width) */
@container (min-width: 420px) {
	.evab.evab-faculty--cols-2 .evab-faculty__grid, .evab.evab-faculty--cols-3 .evab-faculty__grid, .evab.evab-faculty--cols-4 .evab-faculty__grid, .evab.evab-faculty--cols-5 .evab-faculty__grid, .evab.evab-faculty--cols-6 .evab-faculty__grid { grid-template-columns: repeat(2, 1fr); }
}
@container (min-width: 680px) {
	.evab.evab-faculty--cols-3 .evab-faculty__grid { grid-template-columns: repeat(3, 1fr); }
	.evab.evab-faculty--cols-4 .evab-faculty__grid, .evab.evab-faculty--cols-5 .evab-faculty__grid, .evab.evab-faculty--cols-6 .evab-faculty__grid { grid-template-columns: repeat(3, 1fr); }
}
@container (min-width: 900px) {
	.evab.evab-faculty--cols-4 .evab-faculty__grid { grid-template-columns: repeat(4, 1fr); }
	.evab.evab-faculty--cols-5 .evab-faculty__grid { grid-template-columns: repeat(5, 1fr); }
	.evab.evab-faculty--cols-6 .evab-faculty__grid { grid-template-columns: repeat(6, 1fr); }
}
@container (max-width: 419px) {
	.evab.evab-faculty--text-right:not(.evab-faculty--photo-none) .evab-card { grid-template-columns: calc(var(--evab-photo-size) * 0.82) 1fr; }
	.evab.evab-faculty--text-right .evab-card__photo { width: calc(var(--evab-photo-size) * 0.82); }
}
@media (prefers-reduced-motion: reduce) {
	.evab *, .evab *::before, .evab *::after { transition: none !important; animation: none !important; }
}
@media print {
	.evab .evab-agenda__controls, .evab .evab-filters, .evab .evab-fav, .evab .evab-expand { display: none !important; }
	.evab .evab-talks { grid-template-rows: 1fr !important; }
	.evab .evab-session { break-inside: avoid; }
}
