/*
 * satnews/agenda — block styles.
 *
 * Tokens come from the theme's theme.json (custom.agendaCard.* and standard
 * preset colors/spacing). Editors can override per-instance via standard
 * block controls or globally via the Site Editor's Global Styles.
 */

/* ============================================================
 * Wrapper
 * ============================================================ */
.satnews-agenda {
	--satnews-card-radius:   14px;
	--satnews-card-padding:  1.75rem;
	--satnews-card-gap:      2rem;
	--satnews-card-border:   var(--wp--preset--color--border);
	--satnews-card-bg:       var(--wp--preset--color--base);
	--satnews-card-bg-alt:   var(--wp--preset--color--base-2);
	/* Default ribbon color when a format has no color set, and when no format applies. */
	--satnews-format-accent: var(--wp--preset--color--primary);
}

/* ============================================================
 * Header — slim layout
 *   .satnews-agenda__header          flex row: day-tabs on left, Filter btn on right
 *   .satnews-agenda__day-tabs        prominent tab strip across the top
 *   .satnews-agenda__filter-disclosure  native <details> with chip panel inside
 * ============================================================ */
.satnews-agenda__header {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem 1rem;
	margin-bottom: var(--wp--preset--spacing--30);
	padding-bottom: var(--wp--preset--spacing--20);
	border-bottom: 1px solid var(--satnews-card-border);
}

.satnews-agenda__day-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 0;
	flex: 1 1 auto;
	min-width: 0;
}
.satnews-agenda__day-tab {
	appearance: none;
	background: transparent;
	border: 0;
	border-bottom: 2px solid transparent;
	font: inherit;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
	padding: 0.6em 1em;
	cursor: pointer;
	transition: color 120ms ease, border-color 120ms ease;
	white-space: nowrap;
}
.satnews-agenda__day-tab:hover { color: var(--wp--preset--color--contrast-2); }
.satnews-agenda__day-tab.is-active {
	color: var(--wp--preset--color--contrast);
	border-bottom-color: var(--wp--preset--color--primary);
}

/* Disclosure-style Filter button (uses native <details>/<summary>). */
.satnews-agenda__filter-disclosure {
	position: relative;
	flex: 0 0 auto;
}
.satnews-agenda__filter-disclosure[open] .satnews-agenda__filter-button { background: var(--wp--preset--color--base-2); }

.satnews-agenda__filter-button {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	list-style: none;
	cursor: pointer;
	font-size: 0.82rem;
	font-weight: 600;
	color: var(--wp--preset--color--contrast-2);
	padding: 0.45em 1em;
	border: 1px solid var(--satnews-card-border);
	border-radius: 999px;
	user-select: none;
	transition: background 120ms ease, border-color 120ms ease;
}
.satnews-agenda__filter-button::-webkit-details-marker { display: none; }
.satnews-agenda__filter-button::marker { content: ''; }
.satnews-agenda__filter-button:hover { background: var(--wp--preset--color--base-2); }
.satnews-agenda__filter-button::after {
	content: '▾';
	display: inline-block;
	margin-left: 0.2em;
	font-size: 0.7em;
	color: var(--wp--preset--color--muted);
	transition: transform 160ms ease;
}
.satnews-agenda__filter-disclosure[open] .satnews-agenda__filter-button::after { transform: rotate(180deg); }
.satnews-agenda__filter-badge {
	display: none;
	color: var(--wp--preset--color--primary);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}
.satnews-agenda__filter-badge.has-active { display: inline; }

/* Popover panel anchored below the button. */
.satnews-agenda__filter-panel {
	position: absolute;
	right: 0;
	top: calc(100% + 0.5em);
	background: var(--satnews-card-bg);
	border: 1px solid var(--satnews-card-border);
	border-radius: 12px;
	box-shadow: 0 8px 24px rgba(15, 20, 25, 0.12);
	padding: 1rem 1.1rem;
	min-width: 22rem;
	max-width: min(28rem, calc(100vw - 2rem));
	z-index: 10;
	display: flex;
	flex-direction: column;
	gap: 0.85rem;
}

/* Filter rows inside the popover. Two-column layout, smaller chips. */
.satnews-agenda__filter-row {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
}
.satnews-agenda__filter-label {
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}
.satnews-agenda__chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
}

.satnews-chip {
	appearance: none;
	border: 1px solid var(--satnews-card-border);
	background: var(--satnews-card-bg);
	color: var(--wp--preset--color--contrast-2);
	font: inherit;
	font-size: 0.82rem;
	font-weight: 500;
	letter-spacing: 0.01em;
	padding: 0.4em 0.95em;
	border-radius: 999px;
	cursor: pointer;
	transition: background 120ms ease, color 120ms ease, border-color 120ms ease;
}

.satnews-chip:hover { background: var(--satnews-card-bg-alt); }

.satnews-chip.is-active {
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--primary);
}

/* ============================================================
 * View toggle
 * ============================================================ */
.satnews-agenda__view-toggle {
	display: inline-flex;
	gap: 0;
	margin-bottom: var(--wp--preset--spacing--30);
	border-radius: 999px;
	background: var(--satnews-card-bg-alt);
	padding: 0.25rem;
}
.satnews-agenda__view-button {
	appearance: none;
	background: transparent;
	border: 0;
	font: inherit;
	font-size: 0.85rem;
	font-weight: 600;
	padding: 0.4em 1.1em;
	border-radius: 999px;
	cursor: pointer;
	color: var(--wp--preset--color--contrast-2);
}
.satnews-agenda__view-button.is-active {
	background: var(--satnews-card-bg);
	color: var(--wp--preset--color--contrast);
	box-shadow: 0 1px 2px rgba(15,20,25,0.06);
}

/* ============================================================
 * Days
 * ============================================================ */
.satnews-agenda__days {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40);
}

.satnews-agenda__day { position: relative; }

.satnews-agenda__day.is-hidden { display: none; }

.satnews-agenda__day-header {
	display: flex;
	align-items: baseline;
	gap: 0.75rem;
	margin-bottom: var(--wp--preset--spacing--20);
	padding-bottom: 0.5em;
	border-bottom: 1px solid var(--satnews-card-border);
	cursor: pointer;
	user-select: none;
}
.satnews-agenda__day-title {
	margin: 0;
	font-size: 1.25rem;
	font-weight: 700;
	letter-spacing: -0.01em;
}
.satnews-agenda__day-count {
	font-size: 0.8rem;
	color: var(--wp--preset--color--muted);
}
.satnews-agenda__day-toggle-icon {
	margin-left: auto;
	color: var(--wp--preset--color--muted);
	transition: transform 160ms ease;
	display: none; /* desktop hidden; shown on mobile */
}
.satnews-agenda__day.is-collapsed .satnews-agenda__day-toggle-icon { transform: rotate(-90deg); }
.satnews-agenda__day.is-collapsed .satnews-agenda__entries { display: none; }

.satnews-agenda__entries {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
}

/* View visibility — list vs swimlane */
.satnews-agenda__entries--swimlane { display: none; }
.satnews-agenda--view-swimlane .satnews-agenda__entries--list     { display: none; }
.satnews-agenda--view-swimlane .satnews-agenda__entries--swimlane { display: block; }

/* ============================================================
 * Card
 * ============================================================ */
.satnews-agenda-card {
	display: grid;
	grid-template-columns: 6.5rem 1fr 16rem;
	gap: var(--satnews-card-gap);
	align-items: start;
	/* `--satnews-format-color` and `--satnews-format-bg-color` are set inline by
	   render.php when the session-format term has those term-meta values.
	   Both fall back to theme defaults when unset. */
	background: var(--satnews-format-bg-color, var(--satnews-card-bg));
	border: 1px solid var(--satnews-card-border);
	border-left: 4px solid var(--satnews-format-color, var(--satnews-format-accent));
	border-radius: var(--satnews-card-radius);
	padding: var(--satnews-card-padding);
	box-shadow: 0 1px 2px rgba(15, 20, 25, 0.04);
	transition: box-shadow 160ms ease, transform 160ms ease;
}
.satnews-agenda-card:hover {
	box-shadow: 0 2px 4px rgba(15, 20, 25, 0.06), 0 12px 28px rgba(15, 20, 25, 0.07);
}
.satnews-agenda-card.is-hidden { display: none !important; }

/* `is-focused` is applied by the Interactivity store when the page loads
   with ?focus=<post_id>. The pulse fades the highlight out cleanly. */
.satnews-agenda-card.is-focused {
	animation: satnews-agenda-focus-pulse 2.4s ease-out 1;
	position: relative;
	z-index: 1;
}
@keyframes satnews-agenda-focus-pulse {
	0%   { box-shadow: 0 0 0 3px var(--satnews-format-color, var(--wp--preset--color--primary, #0e7490)), 0 0 0 9px rgba(14, 116, 144, 0.18); }
	60%  { box-shadow: 0 0 0 3px var(--satnews-format-color, var(--wp--preset--color--primary, #0e7490)), 0 0 0 9px rgba(14, 116, 144, 0.10); }
	100% { box-shadow: 0 0 0 0 transparent, 0 0 0 0 transparent; }
}

/* Structural session-types override the format color where the visual signal
   is conceptually distinct from the format taxonomy. Paper cards inherit the
   format color from the configured Talks / Posters format term. */
.satnews-agenda-card--type-mission_briefing { border-left-color: var(--wp--preset--color--highlight); }
.satnews-agenda-card--type-interlude        { border-left-color: var(--wp--preset--color--muted); background: var(--satnews-card-bg-alt); }

/* ============================================================
 * Announcement / PSA card — slim full-width banner, no time column.
 * Always visible regardless of filter chips (bypassed in JS).
 * ============================================================ */
.satnews-agenda-card--type-announcement {
	display: grid;
	grid-template-columns: auto 1fr auto;
	gap: 1rem;
	align-items: center;
	background: var(--wp--preset--color--highlight);
	border: 1px solid var(--wp--preset--color--border);
	border-left: 4px solid var(--wp--preset--color--contrast);
	border-radius: 8px;
	padding: 0.85rem 1.25rem;
	box-shadow: none;
}
.satnews-agenda-card--type-announcement:hover { box-shadow: none; transform: none; }
.satnews-agenda-card__announcement-icon {
	font-size: 1.2rem;
	line-height: 1;
}
.satnews-agenda-card__announcement-body { min-width: 0; }
.satnews-agenda-card__announcement-title {
	margin: 0;
	font-size: 0.95rem;
	font-weight: 700;
	line-height: 1.3;
	color: var(--wp--preset--color--contrast);
}
.satnews-agenda-card__announcement-text {
	margin: 0.2em 0 0;
	font-size: 0.85rem;
	line-height: 1.45;
	color: var(--wp--preset--color--contrast-2);
}
.satnews-agenda-card__announcement-time {
	font-variant-numeric: tabular-nums;
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--wp--preset--color--contrast-2);
	white-space: nowrap;
}

/* ===== Time column ===== */
.satnews-agenda-card__time {
	display: flex;
	flex-direction: column;
	font-variant-numeric: tabular-nums;
}
.satnews-agenda-card__time-start {
	font-size: 1.5rem;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	line-height: 1.1;
}
.satnews-agenda-card__time-end {
	font-size: 0.85rem;
	color: var(--wp--preset--color--muted);
	margin-top: 0.2em;
}

/* ===== Body column ===== */
.satnews-agenda-card__body { min-width: 0; }

.satnews-agenda-card__type {
	margin: 0 0 0.5em;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent);
}

.satnews-agenda-card__title {
	margin: 0 0 0.85em;
	font-size: 1.2rem;
	line-height: 1.35;
	font-weight: 650;
}
.satnews-agenda-card__title a {
	color: inherit;
	text-decoration: none;
}
.satnews-agenda-card__title a:hover { text-decoration: underline; }

.satnews-agenda-card__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1rem;
	font-size: 0.82rem;
	color: var(--wp--preset--color--muted);
	margin-bottom: 1.1em;
	align-items: center;
}

.satnews-agenda-card__format-pill {
	display: inline-flex;
	background: var(--satnews-format-color, var(--satnews-format-accent));
	color: var(--wp--preset--color--base);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	padding: 0.25em 0.65em;
	border-radius: 4px;
}

.satnews-agenda-card__excerpt {
	margin: 0 0 1.5em;
	font-size: 0.92rem;
	line-height: 1.55;
	color: var(--wp--preset--color--contrast-2);
}

/* ===== Speakers list ===== */
.satnews-agenda-card__speakers {
	display: flex;
	flex-wrap: wrap;
	gap: 1.4rem 1.75rem;
	list-style: none;
	margin: 1em 0 0;
	padding: 1em 0 0;
	border-top: 1px solid var(--satnews-card-border);
}
.satnews-agenda-card__speaker { min-width: 9.5rem; max-width: 12rem; }

.satnews-agenda-card__speaker-link {
	display: grid;
	grid-template-columns: 56px 1fr;
	gap: 0.85rem;
	align-items: start;
	text-decoration: none;
	color: inherit;
}
.satnews-agenda-card__speaker:not(:has(.satnews-agenda-card__speaker-link)) {
	display: grid;
	grid-template-columns: 56px 1fr;
	gap: 0.85rem;
	align-items: start;
}

.satnews-agenda-card__speaker-photo {
	display: block;
	width: 56px;
	height: 56px;
	border-radius: 8px;
	overflow: hidden;
	background: var(--satnews-card-bg-alt);
}
.satnews-agenda-card__speaker-photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.satnews-agenda-card__speaker-photo-placeholder {
	display: flex;
	width: 100%;
	height: 100%;
	align-items: center;
	justify-content: center;
	font-size: 1.5rem;
	color: var(--wp--preset--color--muted);
}

.satnews-agenda-card__speaker-info {
	display: flex;
	flex-direction: column;
	gap: 0.35em;
	min-width: 0;
}
.satnews-agenda-card__speaker-name {
	font-size: 0.9rem;
	font-weight: 650;
	line-height: 1.35;
}
.satnews-agenda-card__speaker-role {
	display: inline-block;
	width: max-content;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--base);
	background: var(--wp--preset--color--contrast-2);
	padding: 0.2em 0.55em;
	border-radius: 3px;
}
.satnews-agenda-card__speaker-role[data-role="keynote"]   { background: var(--wp--preset--color--accent); }
.satnews-agenda-card__speaker-role[data-role="moderator"] { background: var(--wp--preset--color--primary); }
.satnews-agenda-card__speaker-role[data-role="panelist"]  { background: var(--wp--preset--color--muted); }
.satnews-agenda-card__speaker-role[data-role="presenter"] { background: var(--wp--preset--color--success); }

.satnews-agenda-card__speaker-title-at {
	font-size: 0.78rem;
	color: var(--wp--preset--color--muted);
	line-height: 1.4;
}

/* ===== Briefing children ===== */
.satnews-agenda-card__briefing-papers {
	margin-top: 0.85em;
	padding-top: 0.6em;
	border-top: 1px dashed var(--satnews-card-border);
}
.satnews-agenda-card__briefing-toggle {
	cursor: pointer;
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--wp--preset--color--primary);
}
.satnews-agenda-card__paper-list {
	list-style: none;
	margin: 0.6em 0 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0.4em;
}
.satnews-agenda-card__paper-link {
	display: block;
	padding: 0.4em 0.6em;
	border-radius: 6px;
	text-decoration: none;
	color: inherit;
	background: var(--satnews-card-bg-alt);
}
.satnews-agenda-card__paper-link:hover { background: var(--wp--preset--color--border); }
.satnews-agenda-card__paper-title { display: block; font-weight: 600; font-size: 0.9rem; }
.satnews-agenda-card__paper-presenter { display: block; font-size: 0.78rem; color: var(--wp--preset--color--muted); margin-top: 0.15em; }
.satnews-agenda-card__paper-qa {
	display: block;
	margin-top: 0.25em;
	font-size: 0.72rem;
	font-weight: 600;
	color: var(--wp--preset--color--contrast-2);
	font-variant-numeric: tabular-nums;
}

/* ============================================================
 * Abstract entry treatment — minimal presenter line + inline Q&A
 * ============================================================ */
.satnews-agenda-card__presenter {
	margin: 0.4em 0 0;
	font-size: 0.92rem;
	line-height: 1.45;
	color: var(--wp--preset--color--contrast);
}
.satnews-agenda-card__presenter-name { font-weight: 650; }
.satnews-agenda-card__presenter-title-at { color: var(--wp--preset--color--muted); font-weight: 400; }

.satnews-agenda-card__qa-slot {
	display: inline-flex;
	align-items: baseline;
	gap: 0.6em;
	margin: 0.8em 0 0;
	padding: 0.45em 0.85em;
	border-radius: 6px;
	background: var(--wp--preset--color--base-2);
	font-size: 0.82rem;
	font-variant-numeric: tabular-nums;
}
.satnews-agenda-card__qa-eyebrow {
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--success);
}
.satnews-agenda-card__qa-when { color: var(--wp--preset--color--contrast-2); font-weight: 500; }

/* ===== Sponsor column ===== */
.satnews-agenda-card__sponsor {
	display: flex;
	flex-direction: column;
	align-items: end;
	gap: 0.4em;
	text-align: right;
}
.satnews-agenda-card__sponsor-eyebrow {
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}
.satnews-agenda-card__sponsor-link { display: inline-block; }
.satnews-agenda-card__sponsor-logo {
	max-width: 160px;
	max-height: 60px;
	height: auto;
	object-fit: contain;
}
.satnews-agenda-card__sponsor-name {
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--wp--preset--color--contrast-2);
}

/* ===== Interlude ===== */
.satnews-agenda-card--interlude { grid-template-columns: 6rem 1fr 16rem; }
.satnews-agenda-card--interlude .satnews-agenda-card__title { font-weight: 500; color: var(--wp--preset--color--contrast-2); font-style: italic; }
.satnews-agenda-card--interlude .satnews-agenda-card__sponsor-logo { max-height: 80px; }

/* ============================================================
 * Swimlane mode — time-aligned grid
 *   column 1     time gutter (HH:MM markers)
 *   columns 2..N lanes (Technical Stage, Auditorium, Innovation Exchange, …)
 *   row 1        lane headers
 *   rows 2..N    one row per unique start time. Cards at the same time across
 *                different lanes share a row, so attendees can read across.
 * ============================================================ */
.satnews-agenda__swimlane-grid {
	display: grid;
	grid-template-columns: 4rem repeat(var(--satnews-lane-count, 4), minmax(220px, 1fr));
	column-gap: 0.75rem;
	row-gap: 0.85rem;
	align-items: start;
	padding-bottom: 0.5rem;
	/* Intentionally NOT setting overflow-x: auto here — doing so makes the
	   grid its own scroll container and breaks position:sticky on the lane
	   headers (sticky would scope to the grid, which isn't tall enough to
	   scroll vertically, so headers just stay in row 1 instead of pinning).
	   The page handles horizontal overflow on narrow viewports; swimlane
	   collapses to a single column under 782px (see media query below). */
}
.satnews-agenda__time-marker {
	font-variant-numeric: tabular-nums;
	font-size: 0.85rem;
	font-weight: 700;
	color: var(--wp--preset--color--muted);
	padding-top: 0.55em;
	padding-right: 0.5em;
	text-align: right;
	border-right: 1px dashed var(--satnews-card-border);
}
.satnews-agenda__lane-header {
	/* Pin to top so attendees can always tell which column is which while
	   scrolling through the time grid. Sticks within the day's grid container
	   and unsticks naturally when scrolling past it (each day's grid has its
	   own header row, so they take over as you scroll between days). */
	position: sticky;
	top: 0;
	z-index: 2;
	background: var(--satnews-card-bg);
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
	border-bottom: 1px solid var(--satnews-card-border);
	padding: 0.6em 0.4em 0.4em;
	margin-bottom: 0;
	text-align: center;
}
.satnews-agenda__swimlane-cell {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	min-width: 0;
}
.satnews-agenda-card--swimlane {
	grid-template-columns: 1fr;
	padding: 0.85rem;
}
.satnews-agenda-card--swimlane .satnews-agenda-card__sponsor { display: none; }
.satnews-agenda-card--swimlane .satnews-agenda-card__time { flex-direction: row; gap: 0.5em; align-items: baseline; }
.satnews-agenda-card--swimlane .satnews-agenda-card__time-start { font-size: 1rem; }
.satnews-agenda-card--swimlane .satnews-agenda-card__excerpt { display: none; }
.satnews-agenda-card--swimlane .satnews-agenda-card__speakers { gap: 0.4rem 0.7rem; }
.satnews-agenda-card--swimlane .satnews-agenda-card__speaker { min-width: 0; max-width: none; }

/* ============================================================
 * Empty state
 * ============================================================ */
.satnews-agenda__empty {
	text-align: center;
	color: var(--wp--preset--color--muted);
	padding: var(--wp--preset--spacing--50);
	font-style: italic;
}

/* ============================================================
 * Mobile
 * ============================================================ */
@media (max-width: 782px) {
	.satnews-agenda__header { gap: 0.5rem; }
	.satnews-agenda__day-tabs { overflow-x: auto; flex-wrap: nowrap; }
	.satnews-agenda__day-tab { padding: 0.5em 0.75em; }
	.satnews-agenda__filter-panel {
		position: fixed;
		left: 0.75rem;
		right: 0.75rem;
		top: auto;
		min-width: 0;
		max-width: none;
	}
	.satnews-agenda-card {
		grid-template-columns: 1fr;
		gap: 0.85rem;
		padding: 1rem;
	}
	.satnews-agenda-card__time {
		flex-direction: row;
		align-items: baseline;
		gap: 0.5em;
	}
	.satnews-agenda-card__time-start { font-size: 1.15rem; }
	.satnews-agenda-card__sponsor {
		align-items: start;
		text-align: left;
		padding-top: 0.6em;
		border-top: 1px dashed var(--satnews-card-border);
	}
	.satnews-agenda-card__sponsor-logo { max-width: 120px; max-height: 50px; }
	.satnews-agenda__day-toggle-icon { display: inline-block; }
	.satnews-agenda__swimlane-grid { grid-template-columns: 1fr; }
}

/* Speaker company — own line, bold (patch-agenda-speaker-company.sh) */
.satnews-agenda-card__speaker-company {
	display: block;
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--wp--preset--color--muted);
	line-height: 1.4;
}
