/* ========================================================================================
 * speaker-single.css - single-anchor_speaker.php's own parts (L2 layer).
 * Task 7. Not ported from the design source (no faculty bio page exists there); built
 * from the kit's own primitives (.hero--page, .section, table.css, --cd-* tokens) to match
 * their conventions rather than introducing new ones. Redesigned 2026-09-25 (owner: compact
 * header, credentials as a condensed table). The theme's
 * assets/css/features/speakers.css (inc/speakers/) also enqueues on every singular
 * speaker view, but it only targets the [anchor_speakers] .anchor-speaker__* classes;
 * nothing here collides with it.
 * ======================================================================================== */

/* --- header: a fixed, modest headshot beside the text column. The text column takes the
   rest of the width and nothing stretches to equal heights, so a short bio still reads as
   a deliberate layout rather than an empty column. ------------------------------------ */
.speaker-single__head{
	position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--cd-5);
	align-items:start;max-width:var(--cd-container);margin-inline:auto;
}
@media (min-width:900px){
	.speaker-single__head{grid-template-columns:240px minmax(0,1fr);gap:var(--cd-7)}
	.speaker-single__head--solo{grid-template-columns:minmax(0,1fr)}
}
.speaker-single__media{width:180px}
@media (min-width:900px){.speaker-single__media{width:240px;position:sticky;top:var(--cd-6)}}
.speaker-single__photo{
	display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;
	border-radius:var(--cd-r-lg);box-shadow:var(--cd-shadow-1);
}
.speaker-single__body{display:flex;flex-direction:column;gap:var(--cd-2);min-width:0;max-width:72ch}
.speaker-single__name{margin:0}
/* Credentials string can run long; small muted type, wraps. */
.speaker-single__credentials{font-size:var(--cd-small);font-weight:600;letter-spacing:.02em;color:var(--cd-ink-muted)}
.speaker-single__role{font-weight:700;color:var(--cd-ink-strong)}
.speaker-single__location{color:var(--cd-ink-muted);font-size:var(--cd-small)}

.speaker-single__links{
	display:flex;flex-wrap:wrap;gap:var(--cd-3);list-style:none;margin:0;padding:0;
}
.speaker-single__links a{font-weight:700}

/* --- bio prose: base.css resets p{margin:0} globally, so the_content()'s paragraphs need
   their own rhythm restored here. --------------------------------------------------- */
.speaker-single__bio{display:flex;flex-direction:column;gap:var(--cd-3);margin-top:var(--cd-3)}
.speaker-single__bio p,
.speaker-single__bio ul,
.speaker-single__bio ol{line-height:1.65;color:var(--cd-ink)}
.speaker-single__bio > *:first-child{margin-top:0}
.speaker-single__actions{display:flex;flex-wrap:wrap;gap:var(--cd-3);margin-top:var(--cd-4)}

/* --- credentials: one compact table per group (table.css), on the site's standard container
   width like every other section (owner, 2026-09-29). */
.speaker-single__cv > .container{gap:var(--cd-6)}

/* --- testimonials: a static grid of whole quotes (no line clamp, unlike the slider). - */
.speaker-single__testimonials .anchor-testimonial__quote{display:block;-webkit-line-clamp:unset;line-clamp:none;overflow:visible}
