/**
 * @file
 * Reusable typographic roles.
 */

/* Eyebrow / kicker above a heading — replaces the old uppercase 14px spans. */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2xs);
  margin: 0 0 var(--space-2xs);
  color: var(--text-accent);
  font-size: var(--step--2);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-wider);
  text-transform: uppercase;
}

.eyebrow::before {
  content: "";
  inline-size: 1.5rem;
  block-size: 2px;
  background: currentColor;
  flex: none;
}

.eyebrow--plain::before {
  display: none;
}

/* Section heading with an optional trailing link. */
.section-head {
  display: flex;
  flex-wrap: wrap;
  align-items: last baseline;
  justify-content: space-between;
  gap: var(--space-s) var(--space-m);
  margin-block-end: var(--space-m);
}

.section-head__title {
  font-size: var(--step-3);
  margin: 0;
}

.section-head__link {
  color: var(--text-accent);
  font-size: var(--step--1);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
}

.section-head__link:hover {
  text-decoration: underline;
}

/* Metadata line: date, venue, price. */
.meta {
  color: var(--text-secondary);
  font-size: var(--step--1);
}

.meta--strong {
  color: var(--text-primary);
  font-weight: var(--weight-medium);
}

/* Small, all-caps label used on cards and detail panels. */
.label {
  display: block;
  margin: 0 0 var(--space-3xs);
  color: var(--text-muted);
  font-size: var(--step--2);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-wider);
  text-transform: uppercase;
}

.lede {
  font-size: var(--step-1);
  line-height: var(--leading-snug);
  color: var(--text-secondary);
  max-inline-size: var(--wrapper-prose);
}

.visually-hidden {
  position: absolute !important;
  inline-size: 1px;
  block-size: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.visually-hidden.focusable:focus,
.visually-hidden.focusable:active {
  position: static !important;
  inline-size: auto;
  block-size: auto;
  overflow: visible;
  clip-path: none;
  white-space: normal;
}

/* Clamp helpers used by cards. */
.clamp-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.clamp-3 {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
