/**
 * @file        webinar.css
 * @description Webinars & events index and detail pages (Story 5.3)
 *
 * @author      Thomas Dobler - SYNTHETIXMIND LTD
 * @email       tom@synthetixmind.com
 * @company     SYNTHETIXMIND LTD, Paphos, Cyprus
 * @url         https://synthetixmind.com
 *
 * @uid         d5f83b21-7a06-4e94-b18c-6209ae7d3f50
 * @version     0.0.0.1
 * @created     2026-09-12
 * @updated     2026-09-12
 *
 * @copyright   (c) 2026 by SYNTHETIXMIND LTD
 * @license     Proprietary — All rights reserved
 */

/* Semantic aliases only — never a raw brand token or a hex value (DESIGN.md). */

/* --- Index listing -------------------------------------------------------- */

.webinar-list {
  list-style: none;
  margin: var(--space-6) 0 0;
  padding: 0;
  display: grid;
  gap: var(--space-6);
}

/* 375px is the design target; wider viewports are the enhancement, so the
   multi-column form is the media query rather than the default. */
@media (min-width: 48rem) {
  .webinar-list {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* The "coming up next" list on a past event's page is a footnote to the page
   the reader actually asked for, so it stays one column at every width. */
.webinar-list--compact {
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

@media (min-width: 48rem) {
  .webinar-list--compact {
    grid-template-columns: 1fr;
  }
}

.webinar-card__title {
  font-size: var(--text-lg);
  margin: 0 0 var(--space-2);
}

.webinar-card__meta {
  margin: 0;
  font-size: var(--text-sm);
  color: var(--text-secondary);
}

.webinar-card__summary {
  margin: var(--space-3) 0 0;
}

/* --- The facts list ------------------------------------------------------- */

/* A <dl>, laid out as label/value pairs. The LABELS STAY VISIBLE at every
   width: "CHF 450.00" with no adjacent word is ambiguous, and SC 1.3.3 forbids
   leaning on position to supply the meaning. So this is a two-column grid, not
   a row of bare values. */
.webinar-card__facts,
.webinar__facts {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--space-2) var(--space-4);
  margin: 0 0 var(--space-4);
  font-size: var(--text-sm);
}

.webinar-card__facts dt,
.webinar__facts dt {
  color: var(--text-secondary);
}

.webinar-card__facts dd,
.webinar__facts dd {
  margin: 0;
}

/* --- Detail page ---------------------------------------------------------- */

/* Stated, not merely implied by a missing button. `role="status"` in the
   template announces it to a screen reader on load. */
.webinar__past {
  margin: 0 0 var(--space-4);
  font-weight: 600;
}

.webinar__body {
  max-width: 70ch;
}

.webinar__body p,
.webinar__body ul,
.webinar__body ol {
  margin: 0 0 var(--space-5);
}

.webinar__topics {
  margin-top: var(--space-4);
}

/* --- Agenda (A02) --------------------------------------------------------- */

/* A real <ul> of <li>, per WCAG-Concept.md C-16. The marker is kept rather than
   removed: these are bullets in the requirement's own words ("public
   agenda/outline preview (bullets)"), and a list that does not look like one
   loses the scanability that makes it worth showing before the booking link. */
.webinar-agenda {
  margin: var(--space-4) 0 0;
  padding-inline-start: var(--space-6);
  max-width: 70ch;
}

.webinar-agenda__item {
  margin-bottom: var(--space-3);
}

/* --- Booking (E02) -------------------------------------------------------- */

.webinar__book {
  display: inline-block;
  margin-top: var(--space-5);
}

/* The three no-booking states read as a sentence rather than a disabled
   control: a greyed-out button invites clicking and explains nothing. */
.webinar__booking-note {
  margin: var(--space-5) 0 0;
  max-width: 60ch;
}
