/* ------------------------------------------------------------------ *
 * CHASE 2026 conference program page
 * Presentation only. All schedule content comes from src/data/*.json.
 * ------------------------------------------------------------------ */

/* In-page jump navigation */
.program-jump {
	list-style: none;
	margin: 0 0 2em 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.5em;
}
.program-jump li { margin: 0; padding: 0; }
.program-jump a {
	display: inline-block;
	padding: 0.4em 0.9em;
	border: 1px solid #d0d0d0;
	border-radius: 999px;
	background: #f5f5f7;
	color: #333 !important;
	font-size: 0.85em;
	text-decoration: none;
	white-space: nowrap;
}
.program-jump a:hover { background: #e9e9ef; }

.program-note {
	color: #666;
	font-size: 0.9em;
	margin: -0.5em 0 1.5em 0;
}

/* ---- Program at a glance: native HTML grid ---- *
 * Three day columns on wide screens, stacking to one column on narrow.
 * Room labels keep the original Program-at-a-Glance PDF color assignment
 * (Forbes = purple, Schenley = blue, Oakland = green, Carnegie = red). */
.glance {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1em;
	margin: 0 0 1em 0;
}
.glance-day {
	border: 1px solid #e2e2e2;
	border-radius: 10px;
	overflow: hidden;
	background: #fff;
}
.glance-day-head {
	margin: 0;
	padding: 0.55em 0.8em;
	background: #2a3f54;
	color: #fff;
	font-size: 0.95em;
	text-align: center;
}
.glance-slots { list-style: none; margin: 0; padding: 0; }
.glance-slot {
	display: flex;
	gap: 0.6em;
	padding: 0.5em 0.7em;
	border-top: 1px solid #eef0f2;
}
.glance-slot:first-child { border-top: none; }
.glance-time {
	flex: 0 0 4.6em;
	font-size: 0.72em;
	line-height: 1.25;
	color: #5a6b7b;
	font-variant-numeric: tabular-nums;
}
.glance-time .dash { display: block; text-align: left; opacity: 0.6; }
.glance-events { flex: 1 1 auto; display: flex; flex-direction: column; gap: 0.5em; }
.glance-event { display: flex; flex-direction: column; gap: 0.1em; }
.glance-title { font-size: 0.82em; line-height: 1.3; color: #1a1a1a; font-weight: 600; }
a.glance-link { color: #1a1a1a !important; text-decoration: none; border-bottom: 1px solid rgba(26,26,26,0.3); }
a.glance-link:hover { border-bottom-color: #1a1a1a; }
.glance-room { font-size: 0.72em; line-height: 1.2; font-weight: 600; }
/* Non-session rows (meals, breaks, remarks, banquet): italic only. */
.glance-meal .glance-title,
.glance-break .glance-title,
.glance-remarks .glance-title,
.glance-social .glance-title {
	font-weight: 400;
	font-style: italic;
}

/* Room color assignment (shared by grid, session meta, and workshop cards). */
.room-schenley { color: #1f5f9e; }
.room-forbes   { color: #6f4fc4; }
.room-oakland  { color: #0b8a34; }
.room-carnegie { color: #c41230; }

/* Legend under the grid */
.glance-legend {
	list-style: none;
	margin: 0 0 1.5em 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.4em 1.2em;
	font-size: 0.8em;
	color: #555;
}
.glance-legend li { display: flex; align-items: center; gap: 0.4em; margin: 0; }
.room-dot { display: inline-block; width: 0.75em; height: 0.75em; border-radius: 50%; background: currentColor; }

@media screen and (max-width: 760px) {
	/* Single column: the grid stacks to one full-width day card. Scale text
	   and spacing up so the schedule fills the wider row and stays readable
	   instead of looking sparse. Desktop (3-column) sizing is unaffected. */
	.glance { grid-template-columns: 1fr; gap: 1.25em; }
	.glance-day-head { font-size: 1.15em; padding: 0.75em 0.9em; }
	.glance-slot { gap: 1.1em; padding: 0.85em 1.1em; }
	.glance-time { flex-basis: 6.5em; font-size: 0.92em; line-height: 1.3; }
	.glance-events { gap: 0.85em; }
	.glance-title { font-size: 1.08em; line-height: 1.4; }
	.glance-room { font-size: 0.92em; }
	.glance-legend { font-size: 0.95em; gap: 0.5em 1.4em; }
}

/* ---- Technical program: sessions with papers ---- */
.tp-group-title {
	margin-top: 1.5em;
	padding-bottom: 0.3em;
	border-bottom: 2px solid #2a3f54;
	color: #2a3f54;
}
.session-block {
	margin: 1.2em 0;
	border: 1px solid #e6e6e6;
	border-left-width: 4px;
	border-radius: 8px;
	overflow: hidden;
}
/* Left accent distinguishes the two tracks at a glance. */
.session-block-regular { border-left-color: #2f6fb0; }
.session-block-short   { border-left-color: #1f8a8a; }
.session-head {
	margin: 0;
	padding: 0.6em 0.9em 0.4em 0.9em;
	background: #eef2f6;
	color: #23384c;
	font-size: 1.02em;
	line-height: 1.35;
}
.session-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.4em 0.9em;
	padding: 0 0.9em 0.6em 0.9em;
	background: #eef2f6;
	border-bottom: 1px solid #dde5ed;
	font-size: 0.82em;
	color: #4a5b6b;
}
.session-meta .session-date { font-weight: 600; color: #23384c; }
.session-meta .session-time { font-variant-numeric: tabular-nums; }
.session-meta .session-room::before { content: "\1F4CD\00A0"; }

/* Short paper sessions: teal palette so they don't read as regular sessions. */
.session-block-short .session-head {
	background: #e3f1f0;
	color: #14514f;
}
.session-block-short .session-meta {
	background: #e3f1f0;
	border-bottom-color: #c9e5e2;
	color: #3d6866;
}
.session-block-short .session-meta .session-date { color: #14514f; }

/* Per-type themes for non-paper sessions. Each type gets a distinct accent
   (left border + header/meta tint) so keynotes, panels, and featured sessions
   read differently at a glance. */
.session-block-keynote  { border-left-color: #b8860b; }
.session-block-panel    { border-left-color: #b83232; }
.session-block-featured { border-left-color: #7a4fbf; }
.session-block-poster   { border-left-color: #8a6a3a; }

.session-block-keynote .session-head,
.session-block-keynote .session-meta { background: #f8f0da; }
.session-block-keynote .session-head { color: #6b5108; }
.session-block-keynote .session-meta { border-bottom-color: #ecdcb0; color: #6b5108; }
.session-block-keynote .session-meta .session-date { color: #6b5108; }

.session-block-panel .session-head,
.session-block-panel .session-meta { background: #f8e7e7; }
.session-block-panel .session-head { color: #7a1f1f; }
.session-block-panel .session-meta { border-bottom-color: #ecc9c9; color: #7a1f1f; }
.session-block-panel .session-meta .session-date { color: #7a1f1f; }

.session-block-featured .session-head,
.session-block-featured .session-meta { background: #efe8f9; }
.session-block-featured .session-head { color: #4a2f78; }
.session-block-featured .session-meta { border-bottom-color: #ddd0f0; color: #4a2f78; }
.session-block-featured .session-meta .session-date { color: #4a2f78; }

.session-block-poster .session-head,
.session-block-poster .session-meta { background: #f4eee2; }
.session-block-poster .session-head { color: #5c4620; }
.session-block-poster .session-meta { border-bottom-color: #e4d8c0; color: #5c4620; }
.session-block-poster .session-meta .session-date { color: #5c4620; }

/* Body of a non-paper session block (speaker/topic/panelists/links). */
.session-body { padding: 0.7em 0.9em; }
.sb-line { margin: 0 0 0.45em 0; color: #333; font-size: 0.92em; line-height: 1.5; }
.sb-line:last-child { margin-bottom: 0; }
.sb-label { font-weight: 600; color: #23384c; }
.sb-people { list-style: disc outside; margin: 0.2em 0 0.6em 1.6em; padding: 0; }
.sb-people li { color: #1a1a1a; font-size: 0.92em; line-height: 1.5; margin: 0.1em 0; }
.sb-people .affil, .sb-line .affil { color: #888; font-style: italic; }
.sb-more { font-weight: 600; }

.paper-list { list-style: none; margin: 0; padding: 0; }
.paper {
	padding: 0.7em 0.9em;
	border-top: 1px solid #f0f0f0;
}
.paper:first-child { border-top: none; }
.paper-title {
	color: #1a1a1a;
	font-weight: 600;
	line-height: 1.4;
}
.paper-id {
	display: inline-block;
	font-size: 0.72em;
	color: #888;
	font-weight: normal;
	margin-right: 0.4em;
	font-variant-numeric: tabular-nums;
}
.paper-authors { margin: 0.25em 0 0 0; color: #333; font-size: 0.92em; line-height: 1.5; }
.paper-authors .affil { color: #888; font-style: italic; }

/* ---- Workshops ----
   Each workshop is rendered as a full-width detailed block (green theme) with
   the workshop name/room in the header and one row per schedule item. The
   title links to the workshop's Call-for-Papers page. */
.session-block-workshop { border-left-color: #3f9142; }
.session-block-workshop .session-head,
.session-block-workshop .session-meta { background: #f0f7f0; }
.session-block-workshop .session-head { color: #2c5f2e; }
.session-block-workshop .session-head a { color: #2c5f2e !important; text-decoration: underline; }
.session-block-workshop .session-meta { border-bottom-color: #d7e9d8; color: #4a6b4c; }
.session-block-workshop .session-meta .session-date { color: #2c5f2e; }

/* One schedule item (time + label, then optional chair/speaker/papers). */
.ws-item {
	padding: 0.7em 0.9em;
	border-top: 1px solid #eef2ee;
}
.ws-item:first-child { border-top: none; }
.ws-item-head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.3em 0.8em;
}
.ws-time {
	flex: 0 0 8.5em;
	font-size: 0.82em;
	color: #3f6b41;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}
.ws-session { flex: 1 1 12em; color: #1a1a1a; font-weight: 600; font-size: 0.95em; }
.ws-detail { margin-top: 0.4em; margin-left: 8.8em; }
.ws-note { color: #666; font-style: italic; font-size: 0.86em; }
.ws-item .sb-people { margin-left: 10.4em; }
/* Nested paper list inside a workshop schedule item. */
.ws-papers { margin: 0.45em 0 0 8.8em; border-left: 2px solid #e2efe3; }
.ws-papers .paper { padding: 0.45em 0 0.45em 0.9em; border-top: none; }
.ws-papers .paper-title { font-weight: 600; font-size: 0.95em; }

@media screen and (max-width: 600px) {
	.ws-detail, .ws-papers, .ws-item .sb-people { margin-left: 0; }
	.ws-time { flex-basis: auto; }
}
