/*
 * LOT 101 Events — listing, cards and event pages.
 *
 * Written against the theme's design system rather than beside it:
 *
 * - Type comes from the theme's own component classes in the markup
 *   (type-display, type-headline-md, type-label-caps, btn-primary …), which
 *   are plain CSS in the theme's stylesheet and always compiled. Nothing here
 *   restates a font or a size the theme already owns.
 * - Colour comes from the theme's tokens, each with its value as a fallback
 *   — the tokens are declared `@theme inline`, so the theme's Tailwind build
 *   is free to inline them rather than emit them, and a fallback keeps this
 *   file correct either way.
 * - No Tailwind utility classes appear in the plugin's markup. The theme's
 *   build only scans the theme's own files, so a utility used only here would
 *   not exist in its compiled CSS — the stale-build trap that bit the theme
 *   three times in one week. Layout lives in this file instead, under an
 *   `l1e-` prefix so it cannot collide with anything the theme names.
 * - Hover rules are gated to real pointers, per the theme's 4–5 Sep 2026
 *   mobile bug bash (touch browsers leave simulated hover stuck on). Do not
 *   add a bare :hover here.
 */

/* ---- Shared frame ---------------------------------------------------- */

.l1e-wrap {
  max-width: 1280px;
  margin-inline: auto;
  padding-inline: 1.5rem;
}
.l1e-wrap--wide {
  max-width: 1600px;
}
.l1e-wrap--narrow {
  max-width: 880px;
}
@media (min-width: 1024px) {
  .l1e-wrap {
    padding-inline: 2rem;
  }
}

.l1e-eyebrow {
  display: block;
  color: var(--color-eyebrow, #334560);
}

/* The theme's .ph placeholder, made to fill whatever box it is in. */
.l1e-ph {
  position: absolute;
  inset: 0;
  display: block;
}

/* ---- Section header (the page section's eyebrow / heading / intro) ---- */

.l1e-section-head {
  max-width: 62ch;
  margin: 0 auto 3rem;
  text-align: center;
}
.l1e-section-head__title {
  margin-top: 1rem;
  text-wrap: balance;
}
.l1e-section-head .l1e-eyebrow + .l1e-section-head__title {
  margin-top: 1rem;
}
.l1e-section-head__intro {
  margin-top: 1rem;
  color: var(--color-on-surface-variant, #4a3d37);
  text-wrap: pretty;
}

/* ---- Controls: date links + type filter ------------------------------ */

.l1e-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1.25rem 2rem;
  margin-bottom: 3rem;
  padding-bottom: 1.25rem;
  border-bottom: 1px solid var(--color-outline-variant, rgba(74, 61, 55, 0.2));
}

.l1e-periods {
  /*
   * On a phone the strip scrolls sideways inside its own box rather than
   * wrapping into a ragged stack of month names; the page itself never
   * scrolls horizontally. From md it simply wraps.
   */
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}
.l1e-periods::-webkit-scrollbar {
  display: none;
}

.l1e-periods__list {
  display: flex;
  gap: 0.25rem 1.75rem;
  margin: 0;
  padding: 0;
  list-style: none;
  white-space: nowrap;
}
@media (min-width: 768px) {
  .l1e-periods__list {
    flex-wrap: wrap;
  }
}

.l1e-period {
  display: inline-block;
  padding-block: 0.625rem;
  color: var(--color-on-surface-variant, #4a3d37);
  text-decoration: none;
  border-bottom: 2px solid transparent;
  transition:
    color 0.2s,
    border-color 0.2s;
}
.l1e-period[aria-current='page'] {
  color: var(--color-eyebrow, #334560);
  border-bottom-color: currentColor;
}
@media (hover: hover) and (pointer: fine) {
  .l1e-period:hover {
    color: var(--color-link-hover, #89a7af);
  }
}

.l1e-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
}
.l1e-filter__label {
  color: var(--color-on-surface-variant, #4a3d37);
}
.l1e-filter__select {
  position: relative;
  display: inline-block;
}
.l1e-filter__select select {
  appearance: none;
  min-height: 2.75rem;
  min-width: 12rem;
  padding: 0.5rem 2.75rem 0.5rem 0.875rem;
  font: inherit;
  font-family: var(--font-body, 'Gotham', sans-serif), sans-serif;
  font-size: 1rem;
  color: var(--color-on-surface, #000);
  background-color: transparent;
  border: 1px solid var(--color-outline-variant, rgba(74, 61, 55, 0.2));
  border-radius: 0;
  cursor: pointer;
}
/* The chevron. Drawn as a pseudo-element so it follows the text colour on a dark band. */
.l1e-filter__select::after {
  content: '';
  position: absolute;
  top: 50%;
  right: 1rem;
  width: 0.5rem;
  height: 0.5rem;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: translateY(-70%) rotate(45deg);
  pointer-events: none;
}
.l1e-filter__submit {
  min-height: 2.75rem;
}

/* ---- Grid + cards ------------------------------------------------------ */

.l1e-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 3rem 2rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
@media (min-width: 640px) {
  .l1e-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  .l1e-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 3.5rem 3rem;
  }
}

.l1e-grid__item {
  display: flex;
}

.l1e-card {
  display: flex;
  width: 100%;
}
.l1e-card__link {
  display: flex;
  flex-direction: column;
  width: 100%;
  color: inherit;
  text-decoration: none;
}
.l1e-card__link:focus-visible {
  outline-offset: 6px;
}

.l1e-card__media {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  background-color: var(--color-surface-low, #fcf8f2);
}
.l1e-card__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.7s ease-out;
}
@media (hover: hover) and (pointer: fine) {
  .l1e-card__link:hover .l1e-card__img {
    transform: scale(1.05);
  }
  .l1e-card__link:hover .l1e-card__title {
    text-decoration: underline;
    text-underline-offset: 4px;
  }
}

.l1e-card__eyebrow {
  margin-top: 1.5rem;
  color: var(--color-eyebrow, #334560);
}
.l1e-card__title {
  margin: 0.25rem 0 0;
  text-wrap: balance;
}
/*
 * One colour whatever the heading level. The card is an h2 on the listing
 * page and an h3 under a section heading or in "Also on"; the theme colours
 * those two differently (h2 heading-brown, h3 navy), which would make the
 * same card change colour depending on whether a heading was typed above
 * it. Two classes to outrank the theme's unlayered h3[class] rule.
 */
.l1e-card .l1e-card__title {
  color: var(--color-heading, #31221e);
}
.section--dark .l1e-card .l1e-card__title {
  color: var(--color-on-ink, #fff);
}
.l1e-card__media + .l1e-card__title {
  margin-top: 1.5rem;
}
.l1e-card__when {
  margin-top: 0.875rem;
  color: var(--color-on-surface-variant, #4a3d37);
}
.l1e-card__schedule {
  margin-top: 0.25rem;
  color: var(--color-on-surface-variant, #4a3d37);
}

/*
 * The hover panel: title, intro and CTA over the photo, in navy at 90% so
 * white text holds its contrast over any image. Shown on a real pointer's
 * hover and on keyboard focus; never on touch, where it would stick on
 * after a tap. The theme's reduced-motion rule already stills the slide;
 * the plugin repeats it so it holds under another theme too.
 */
.l1e-card__panel {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 1rem;
  padding: 1.5rem;
  color: var(--color-on-ink, #fff);
  background-color: rgba(51, 69, 96, 0.9);
  opacity: 0;
  transition: opacity 0.3s ease-out;
}
@media (min-width: 1024px) {
  .l1e-card__panel {
    padding: 1.75rem;
  }
}
.l1e-card__panel > * {
  transform: translateY(0.75rem);
  transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.l1e-card__panel-title {
  color: inherit;
  text-wrap: balance;
}
.l1e-card__panel-intro {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 5;
  line-clamp: 5;
  overflow: hidden;
  text-wrap: pretty;
}
.l1e-card__panel-cta {
  align-self: flex-start;
  margin-top: 0.25rem;
  padding: 0.875rem 1.25rem;
  border: 1px solid rgba(255, 255, 255, 0.8);
  line-height: 1;
}
.l1e-card__link:focus-visible .l1e-card__panel {
  opacity: 1;
}
.l1e-card__link:focus-visible .l1e-card__panel > * {
  transform: none;
}
.l1e-card__link:focus-visible .l1e-badge {
  color: var(--color-link, #334560);
  background-color: var(--color-on-ink, #fff);
}
@media (hover: hover) and (pointer: fine) {
  .l1e-card__link:hover .l1e-card__panel {
    opacity: 1;
  }
  .l1e-card__link:hover .l1e-card__panel > * {
    transform: none;
  }
  /* The navy badge would vanish into the navy panel; it turns white there. */
  .l1e-card__link:hover .l1e-badge {
    color: var(--color-link, #334560);
    background-color: var(--color-on-ink, #fff);
  }
}
@media (prefers-reduced-motion: reduce) {
  .l1e-card__panel,
  .l1e-card__panel > * {
    transition: none;
    transform: none;
  }
}

/*
 * The warning badge: Sold out / Waitlist / Cancelled / Finished. Navy, the
 * site's "navigation blue", rather than a red — this is information, not an
 * error, and red would be the loudest thing on a cream page.
 */
.l1e-badge {
  position: absolute;
  z-index: 2;
  top: 0.75rem;
  left: 0.75rem;
  padding: 0.4375rem 0.625rem 0.375rem;
  color: var(--color-on-ink, #fff);
  background-color: var(--color-link, #334560);
  line-height: 1;
  transition:
    color 0.3s ease-out,
    background-color 0.3s ease-out;
}
.l1e-badge--inline {
  position: static;
  z-index: auto;
  display: inline-block;
  margin-left: 0.75rem;
  vertical-align: 0.1em;
}

/* ---- Homepage row ------------------------------------------------------ */

/*
 * A snap-scrolling row of cards: three across at full width, one per view on
 * a phone, from one piece of markup. The track's own scroll position is the
 * only state there is — assets/js/row.js scrolls it and reads it back, so
 * swipe, trackpad and the arrows can never disagree, and the row still works
 * with the script absent.
 *
 * Every card is a flex item in a single row, which means they stretch to the
 * tallest of them and the row's height is settled before anything moves. The
 * Next prototype solved the same problem by stacking pages of three in one
 * grid cell so the row could not shunt as it advanced; here there is only one
 * row, so there is nothing to shunt.
 *
 * The widths below are the only place the three-across count is decided; the
 * script reads them back rather than keeping its own copy.
 */
.l1e-row {
  position: relative;
}

.l1e-row__track {
  display: flex;
  gap: 1.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  overscroll-behavior-x: contain;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.l1e-row__track::-webkit-scrollbar {
  display: none;
}

/*
 * One card per view by default. `min-width: 0` so a long unbroken word in a
 * title cannot push a flex item past its basis and break the snap rhythm.
 */
.l1e-row__item {
  flex: 0 0 100%;
  min-width: 0;
  display: flex;
  scroll-snap-align: start;
}

@media (min-width: 640px) {
  .l1e-row__item {
    flex-basis: calc((100% - 1.5rem) / 2);
  }
}
@media (min-width: 1024px) {
  .l1e-row__track {
    gap: 3rem;
  }
  .l1e-row__item {
    /* Three across, flush to the container: a fourth card starts exactly at
       the track's right edge, so it is clipped rather than peeking. */
    flex-basis: calc((100% - 6rem) / 3);
  }
}

/* ---- Row cards --------------------------------------------------------- */

/*
 * The card here is not one wrapping anchor (see templates/card.php): the
 * title carries the link and a stretched overlay makes the whole card
 * clickable, so the CTA below can be a real button of its own.
 */
.l1e-card--row {
  position: relative;
  flex-direction: column;
  width: 100%;
}
.l1e-card--row .l1e-card__title-link {
  color: inherit;
  text-decoration: none;
}
.l1e-card--row .l1e-card__title-link::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
}
.l1e-card--row .l1e-card__title-link:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 6px;
}
.l1e-card__intro {
  margin: 1rem 0 0;
  color: var(--color-on-surface-variant, #4a3d37);
  text-wrap: pretty;
}

/*
 * The CTA sits above the stretched overlay so it is clickable in its own
 * right. Its wrapper takes `margin-top: auto`, which pushes it to the foot of
 * the card — with the cards stretched to a common height, that lines every
 * button up across the row however long the copy above it runs — and carries
 * the gap above the button, which cannot live on .btn-primary without
 * growing the button itself.
 */
.l1e-card__actions {
  position: relative;
  z-index: 2;
  display: flex;
  margin-top: auto;
  padding-top: 1.5rem;
}
.l1e-card__cta {
  align-self: flex-start;
}

@media (hover: hover) and (pointer: fine) {
  .l1e-card--row:hover .l1e-card__img {
    transform: scale(1.05);
  }
  .l1e-card--row:hover .l1e-card__title-link {
    text-decoration: underline;
    text-underline-offset: 4px;
  }
}

/* ---- Row arrows -------------------------------------------------------- */

/*
 * The disc pair the theme's carousels use, in plain CSS: navy on cream, the
 * gold #d7b43f on hover with an ink glyph (hardcoded, as in the theme —
 * there is no gold in the token set, and white on that gold is only ~2:1
 * against a 3:1 floor).
 */
.l1e-row__controls {
  display: flex;
  justify-content: center;
  gap: 0.75rem;
  margin-top: 2.5rem;
}
@media (min-width: 768px) {
  .l1e-row__controls {
    justify-content: flex-start;
  }
}
/*
 * The controls ship with the `hidden` attribute and assets/js/row.js takes it
 * off once it has found something to scroll to at this width — hidden rather
 * than disabled, because two permanently greyed discs read as a fault, and
 * because without the script there is nothing for them to do. `display: flex`
 * above would otherwise beat the browser's default `[hidden] { display: none }`.
 */
.l1e-row__controls[hidden] {
  display: none;
}

.l1e-row__arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  flex-shrink: 0;
  padding: 0;
  border: 0;
  border-radius: 9999px;
  color: var(--color-on-ink, #fff);
  background-color: var(--color-link, #334560);
  cursor: pointer;
  transition:
    color 0.3s ease-out,
    background-color 0.3s ease-out;
}
.l1e-row__arrow--prev svg {
  transform: scaleX(-1);
}
.l1e-row__arrow:focus-visible {
  outline: 2px solid var(--color-link, #334560);
  outline-offset: 2px;
}
.l1e-row__arrow:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
@media (hover: hover) and (pointer: fine) {
  .l1e-row__arrow:not(:disabled):hover {
    color: var(--color-ink, #31221e);
    background-color: #d7b43f;
  }
}

/* On a dark band a filled navy disc would vanish; outline it instead. */
.section--dark .l1e-row__arrow {
  color: var(--color-on-ink, #fff);
  background-color: transparent;
  border: 1px solid rgba(255, 255, 255, 0.6);
}
.section--dark .l1e-row__arrow:focus-visible {
  outline-color: var(--color-on-ink, #fff);
}
@media (hover: hover) and (pointer: fine) {
  .section--dark .l1e-row__arrow:not(:disabled):hover {
    color: var(--color-on-ink, #fff);
    background-color: rgba(255, 255, 255, 0.1);
    border-color: var(--color-on-ink, #fff);
  }
}

/*
 * The way through to everything else, under the row. inline-flex because the
 * theme's .btn-secondary is a flex item that would otherwise stretch to the
 * full width of this paragraph and read as a banner rather than a link.
 */
.l1e-row__cta {
  margin: 2.5rem 0 0;
  text-align: center;
}
.l1e-row__cta .btn-secondary {
  display: inline-flex;
}
@media (min-width: 768px) {
  .l1e-row__cta {
    text-align: left;
  }
}
/* With the arrows above it, the two would otherwise sit 40px apart and read
   as one stack of controls. */
.l1e-row + .l1e-row__cta {
  margin-top: 2rem;
}

@media (prefers-reduced-motion: reduce) {
  .l1e-row__track {
    scroll-behavior: auto;
  }
  .l1e-card--row .l1e-card__img {
    transition: none;
  }
}

/* ---- Empty state + pagination ---------------------------------------- */

.l1e-empty {
  max-width: 62ch;
  margin-inline: auto;
  padding-block: 2rem;
  text-align: center;
  color: var(--color-on-surface-variant, #4a3d37);
}
.l1e-empty__reset {
  display: inline-flex;
  margin-top: 1.5rem;
}

.l1e-pagination {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 1.5rem;
  margin-top: 4rem;
}
/* Newer / Older in the Past view: a little apart from the page numbers. */
.l1e-pagination__step:first-child {
  margin-right: 1rem;
}
.l1e-pagination__step:last-child {
  margin-left: 1rem;
}

/* ---- Listing page template (templates/page-whats-on.php) ------------- */

.l1e-page {
  background-color: var(--color-surface, #fdf4ee);
}
/* Title only, when the page has no sections of its own. */
.l1e-page__head .l1e-hero__text {
  padding-bottom: 0;
}
.l1e-page__listing {
  padding-block: 4rem 6rem;
}
@media (min-width: 1024px) {
  .l1e-page__listing {
    padding-block: 5rem 8rem;
  }
}

/* ---- Event page ------------------------------------------------------ */

.l1e-single {
  background-color: var(--color-surface, #fdf4ee);
}

/*
 * Clears the fixed nav: the same pt-28 / lg:pt-32 the theme's single
 * templates open with.
 */
.l1e-hero {
  padding-top: 7rem;
}
@media (min-width: 1024px) {
  .l1e-hero {
    padding-top: 8rem;
  }
}

.l1e-back a {
  color: var(--color-eyebrow, #334560);
  text-decoration: none;
}

.l1e-hero__text {
  padding-block: 4rem 3rem;
  text-align: center;
}
@media (min-width: 1024px) {
  .l1e-hero__text {
    padding-block: 6rem 4rem;
  }
}
.l1e-hero__title {
  max-width: 56rem;
  margin: 1.5rem auto 0;
  text-wrap: balance;
}
.l1e-hero__when {
  margin-top: 1.75rem;
  color: var(--color-on-surface-variant, #4a3d37);
}

.l1e-hero__media {
  position: relative;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background-color: var(--color-surface-low, #fcf8f2);
}
@media (min-width: 768px) {
  .l1e-hero__media {
    aspect-ratio: 21 / 9;
  }
}
.l1e-hero__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.l1e-body {
  padding-block: 4rem;
}
@media (min-width: 1024px) {
  .l1e-body {
    padding-block: 6rem;
  }
}
.l1e-body__grid {
  display: grid;
  gap: 3rem;
}
@media (min-width: 1024px) {
  .l1e-body__grid {
    grid-template-columns: minmax(0, 1fr) 20rem;
    gap: 5rem;
    align-items: start;
  }
}
.l1e-body__main {
  max-width: 68ch;
  color: var(--color-on-surface-variant, #4a3d37);
}

.l1e-aside {
  padding-top: 1.5rem;
  border-top: 1px solid var(--color-outline-variant, rgba(74, 61, 55, 0.2));
}
@media (min-width: 1024px) {
  .l1e-aside {
    position: sticky;
    top: calc(var(--nav-h, 65px) + 2rem);
  }
}

.l1e-facts {
  margin: 0;
}
.l1e-facts__row {
  padding-block: 0.875rem;
  border-bottom: 1px solid var(--color-outline-variant, rgba(74, 61, 55, 0.2));
}
.l1e-facts__row:first-child {
  padding-top: 0;
}
.l1e-facts dt {
  color: var(--color-on-surface-variant, #4a3d37);
}
.l1e-facts dd {
  margin: 0.375rem 0 0;
  color: var(--color-on-surface, #000);
}

.l1e-action {
  display: grid;
  gap: 1rem;
  margin-top: 2rem;
}
.l1e-action__note {
  color: var(--color-on-surface, #000);
}
.l1e-action__button {
  width: 100%;
  text-decoration: none;
}

.l1e-sessions {
  padding-block: 0 5rem;
}
.l1e-sessions__title {
  margin-bottom: 1.5rem;
  text-align: center;
  letter-spacing: 0.3em;
}
.l1e-sessions .l1e-sessions__title {
  color: var(--color-on-surface-variant, #4a3d37);
}
.l1e-sessions__list {
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--color-outline-variant, rgba(74, 61, 55, 0.2));
}
.l1e-sessions__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.25rem 1.5rem;
  align-items: baseline;
  padding-block: 1.25rem;
  border-bottom: 1px solid var(--color-outline-variant, rgba(74, 61, 55, 0.2));
}
.l1e-sessions__time {
  color: var(--color-eyebrow, #334560);
  text-align: right;
}
.l1e-sessions__note {
  grid-column: 1 / -1;
  color: var(--color-on-surface-variant, #4a3d37);
}
@media (min-width: 768px) {
  .l1e-sessions__row {
    grid-template-columns: minmax(0, 1.2fr) 10rem minmax(0, 1fr);
  }
  .l1e-sessions__time {
    text-align: left;
  }
  .l1e-sessions__note {
    grid-column: auto;
  }
}

.l1e-tickets {
  padding-block: 4rem 5rem;
  background-color: var(--color-surface-low, #fcf8f2);
  scroll-margin-top: calc(var(--nav-h, 65px) + 1rem);
}
.l1e-tickets__title {
  text-align: center;
}
.l1e-tickets__alt {
  margin-top: 0.75rem;
  text-align: center;
  color: var(--color-on-surface-variant, #4a3d37);
}
.l1e-tickets__embed {
  margin-top: 2.5rem;
}
/*
 * Humanitix's script sizes its own frame; min-height only stops the band
 * collapsing to nothing in the moment before it has.
 */
.l1e-tickets__embed iframe {
  display: block;
  width: 100%;
  min-height: 32rem;
  border: 0;
}

.l1e-more {
  padding-block: 4rem 6rem;
  background-color: var(--color-surface-low, #fcf8f2);
}
.l1e-tickets + .l1e-more {
  background-color: var(--color-surface, #fdf4ee);
}
.l1e-more__title {
  margin-bottom: 3rem;
  text-align: center;
}
.l1e-more__all {
  display: flex;
  justify-content: center;
  margin-top: 3.5rem;
}
.l1e-more__all .btn-secondary {
  text-decoration: none;
}

/* ---- Dark bands -------------------------------------------------------
 * An editor can put the listing section on navy or forest. The theme
 * inverts headings, body and buttons on `.section--dark`; these are the
 * plugin's own colours following suit.
 * ---------------------------------------------------------------------- */

.section--dark .l1e-eyebrow,
.section--dark .l1e-card__eyebrow,
.section--dark .l1e-period[aria-current='page'] {
  color: rgba(255, 255, 255, 0.75);
}
.section--dark .l1e-section-head__intro,
.section--dark .l1e-period,
.section--dark .l1e-filter__label,
.section--dark .l1e-card__when,
.section--dark .l1e-card__schedule,
.section--dark .l1e-card__intro,
.section--dark .l1e-empty {
  color: rgba(255, 255, 255, 0.85);
}
.section--dark .l1e-controls,
.section--dark .l1e-filter__select select {
  border-color: rgba(255, 255, 255, 0.25);
}
.section--dark .l1e-filter__select select {
  color: var(--color-on-ink, #fff);
}
.section--dark .l1e-filter__select select option {
  color: var(--color-on-surface, #000);
}
.section--dark .l1e-badge {
  color: var(--color-link, #334560);
  background-color: var(--color-on-ink, #fff);
}

/* ---- Without the LOT 101 theme -----------------------------------------
 * Enough for the listing and event pages to read properly under another
 * theme. Under LOT 101 none of this applies.
 * ---------------------------------------------------------------------- */

.l1e-standalone .type-label-caps {
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}
.l1e-standalone .type-display {
  font-size: clamp(2.5rem, 6vw, 4rem);
  line-height: 1.1;
}
.l1e-standalone .type-headline-md {
  font-size: 1.5rem;
  line-height: 1.3;
}
.l1e-standalone .btn-primary,
.l1e-standalone .btn-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.75rem;
  padding: 0 1.5rem;
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  text-decoration: none;
  border: 2px solid #2f4937;
}
.l1e-standalone .btn-primary {
  color: #fff;
  background: #828f7b;
  border-color: #828f7b;
}
.l1e-standalone .btn-secondary {
  color: #2f4937;
  background: transparent;
}
.l1e-standalone .ph {
  background: #fcf8f2;
}
.l1e-standalone .screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
