/* ==========================================================
   Towne Hall WPBakery Elements
   Intentionally minimal: the existing thp-calendar.css remains
   the source of truth. Instance-specific design overrides are
   emitted inline and scoped to each WPBakery element.
========================================================== */

.thwpb-calendar {
  width: 100%;
}

.thwpb-calendar > .thp-public-calendar {
  box-sizing: border-box;
}

.thwpb-missing-dependency {
  padding: 16px;
  border: 1px dashed #d6d8dc;
  color: #6f7378;
  background: #fafafa;
  font-size: 13px;
}


/* ==========================================================
   v0.2 — interaction enhancements
========================================================== */

.thwpb-clickable-card {
  cursor: pointer;
}

.thwpb-clickable-card:focus {
  outline: 2px solid currentColor;
  outline-offset: 3px;
}

.thwpb-date-time-stacked {
  display: block;
}

.thwpb-date-time-stacked .thwpb-date-line,
.thwpb-date-time-stacked .thwpb-time-line,
.thwpb-date-time-stacked .thwpb-location-line {
  display: block;
}

.thwpb-date-time-stacked .thwpb-time-line {
  margin-top: 2px;
}

.thwpb-date-time-stacked .thwpb-location-line {
  margin-top: 2px;
}

.thwpb-date-time-stacked .thwpb-start-label {
  font-weight: inherit;
}

/*
 * Month view mobile behavior.
 *
 * Core Towne Hall intentionally makes the raw shortcode calendar
 * horizontally scroll at <=640px by assigning a 760px min-width.
 * The WPBakery Month element instead opts into a true responsive
 * 7-column layout.
 */
@media screen and (max-width: 640px) {
  .thwpb-calendar--month,
  .thwpb-calendar--month .thp-public-calendar-month {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow-x: hidden;
  }

  .thwpb-calendar--month .thp-calendar-month-weekdays,
  .thwpb-calendar--month .thp-calendar-month-grid {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    grid-template-columns: repeat(7, minmax(0, 1fr));
  }

  .thwpb-calendar--month .thp-calendar-month-weekdays span,
  .thwpb-calendar--month .thp-calendar-month-day {
    min-width: 0;
    box-sizing: border-box;
  }

  .thwpb-calendar--month .thp-calendar-month-weekdays span {
    padding: 7px 2px;
    font-size: 9px;
  }

  .thwpb-calendar--month .thp-calendar-month-day {
    min-height: 72px;
    padding: 5px 3px;
    overflow: hidden;
  }

  .thwpb-calendar--month .thp-calendar-month-number {
    margin-bottom: 4px;
    font-size: 9px;
  }

  .thwpb-calendar--month .thp-calendar-month-event {
    margin-bottom: 3px;
    padding: 4px 3px;
    border-left-width: 2px;
    overflow: hidden;
  }

  .thwpb-calendar--month .thp-calendar-month-event strong,
  .thwpb-calendar--month .thp-calendar-month-event span {
    min-width: 0;
    overflow-wrap: anywhere;
    word-break: break-word;
  }

  .thwpb-calendar--month .thp-calendar-month-event strong {
    font-size: 8px;
    line-height: 1.15;
  }

  .thwpb-calendar--month .thp-calendar-month-event span {
    font-size: 8px;
    line-height: 1.15;
  }
}

@media (prefers-reduced-motion: reduce) {
  .thwpb-calendar .thp-calendar-card-image {
    transition: none !important;
  }
}


/* ==========================================================
   v0.2.1 — Auto Fill Available Row
========================================================== */

.thwpb-calendar--grid .thp-public-calendar-grid.thwpb-auto-columns,
.thwpb-calendar--upcoming .thp-public-calendar-grid.thwpb-auto-columns {
  grid-template-columns: repeat(var(--thwpb-auto-columns, 1), minmax(0, 1fr));
}

@media screen and (max-width: 900px) {
  .thwpb-calendar--grid .thp-public-calendar-grid.thwpb-auto-columns,
  .thwpb-calendar--upcoming .thp-public-calendar-grid.thwpb-auto-columns {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .thwpb-calendar--grid .thp-public-calendar-grid.thwpb-auto-columns > .thp-calendar-card:only-child,
  .thwpb-calendar--upcoming .thp-public-calendar-grid.thwpb-auto-columns > .thp-calendar-card:only-child {
    grid-column: 1 / -1;
  }
}

@media screen and (max-width: 640px) {
  .thwpb-calendar--grid .thp-public-calendar-grid.thwpb-auto-columns,
  .thwpb-calendar--upcoming .thp-public-calendar-grid.thwpb-auto-columns {
    grid-template-columns: 1fr;
  }
}


/* ==========================================================
   v0.2.2 — Visibility Controls
========================================================== */

/* ----------------------------------------------------------
   Grid / Upcoming
---------------------------------------------------------- */

.thwpb-calendar--grid.thwpb-hide-title
  .thp-calendar-card-body h3,
.thwpb-calendar--upcoming.thwpb-hide-title
  .thp-calendar-card-body h3 {
  display: none;
}

.thwpb-calendar--grid.thwpb-hide-date-time
  .thp-calendar-card-date,
.thwpb-calendar--upcoming.thwpb-hide-date-time
  .thp-calendar-card-date {
  display: none;
}

.thwpb-calendar--grid.thwpb-hide-location
  .thp-calendar-card-body p,
.thwpb-calendar--upcoming.thwpb-hide-location
  .thp-calendar-card-body p {
  display: none;
}

.thwpb-calendar--grid.thwpb-hide-image
  .thp-calendar-card-media,
.thwpb-calendar--upcoming.thwpb-hide-image
  .thp-calendar-card-media {
  display: none;
}

/* ----------------------------------------------------------
   Agenda
---------------------------------------------------------- */

.thwpb-calendar--agenda.thwpb-hide-title
  .thp-calendar-agenda-content h3 {
  display: none;
}

.thwpb-calendar--agenda.thwpb-hide-date-time
  .thwpb-agenda-date-time,
.thwpb-calendar--agenda.thwpb-hide-date-time
  .thwpb-date-line,
.thwpb-calendar--agenda.thwpb-hide-date-time
  .thwpb-time-line {
  display: none;
}

.thwpb-calendar--agenda.thwpb-hide-location
  .thwpb-location-line {
  display: none;
}

.thwpb-calendar--agenda.thwpb-hide-date-tile
  .thp-calendar-agenda-date {
  display: none;
}

.thwpb-calendar--agenda.thwpb-hide-date-tile
  .thp-calendar-agenda-item {
  grid-template-columns: minmax(0, 1fr);
}

.thwpb-calendar--agenda.thwpb-hide-date-tile-month
  .thp-calendar-agenda-date strong {
  display: none;
}

.thwpb-calendar--agenda.thwpb-hide-date-tile-day
  .thp-calendar-agenda-date span {
  display: none;
}

.thwpb-calendar--agenda
  .thwpb-agenda-meta
  .thwpb-location-line {
  display: block;
  margin-top: 2px;
}

/* ----------------------------------------------------------
   Month
---------------------------------------------------------- */

.thwpb-calendar--month.thwpb-hide-month-heading
  .thp-calendar-month-heading {
  display: none;
}

.thwpb-calendar--month.thwpb-hide-weekday-labels
  .thp-calendar-month-weekdays {
  display: none;
}

.thwpb-calendar--month.thwpb-hide-day-numbers
  .thp-calendar-month-number {
  display: none;
}

.thwpb-calendar--month.thwpb-hide-event-time
  .thp-calendar-month-event strong {
  display: none;
}

.thwpb-calendar--month.thwpb-hide-event-title
  .thp-calendar-month-event span {
  display: none;
}

/*
 * When only one line remains inside a Month event pill,
 * remove the spacing intended for the two-line state.
 */
.thwpb-calendar--month.thwpb-hide-event-title
  .thp-calendar-month-event strong {
  margin-bottom: 0;
}

.thwpb-calendar--month.thwpb-hide-event-time
  .thp-calendar-month-event span {
  margin-top: 0;
}



/* ==========================================================
   v0.2.3 — Grid / Upcoming Title Typography Normalization
========================================================== */

/*
 * The core Towne Hall calendar intentionally leaves h3 sizing largely
 * to the active theme. Inside WPBakery widgets that can allow Pofo/theme
 * heading rules to produce visually inconsistent card titles.
 *
 * Establish one stable baseline here. Any explicit WPBakery Event Title
 * typography settings emitted for the individual instance still override
 * these defaults because the instance-scoped rules are more specific and
 * are rendered after the shared stylesheet.
 */
.thwpb-calendar--grid .thp-calendar-card-body h3,
.thwpb-calendar--upcoming .thp-calendar-card-body h3 {
  margin: 0;
  font-size: 30px;
  font-weight: 700;
  line-height: 1.08;
}

.thwpb-calendar--grid .thp-calendar-card-body h3 a,
.thwpb-calendar--upcoming .thp-calendar-card-body h3 a {
  font: inherit;
  line-height: inherit;
  letter-spacing: inherit;
  color: inherit;
}

/* Prevent theme-specific link states from changing title sizing/weight. */
.thwpb-calendar--grid .thp-calendar-card-body h3 a:hover,
.thwpb-calendar--grid .thp-calendar-card-body h3 a:focus,
.thwpb-calendar--upcoming .thp-calendar-card-body h3 a:hover,
.thwpb-calendar--upcoming .thp-calendar-card-body h3 a:focus {
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
}

/* Sensible responsive baseline when no explicit title size is supplied. */
@media screen and (max-width: 900px) {
  .thwpb-calendar--grid .thp-calendar-card-body h3,
  .thwpb-calendar--upcoming .thp-calendar-card-body h3 {
    font-size: 26px;
  }
}

@media screen and (max-width: 640px) {
  .thwpb-calendar--grid .thp-calendar-card-body h3,
  .thwpb-calendar--upcoming .thp-calendar-card-body h3 {
    font-size: 24px;
  }
}


/* ==========================================================
   v0.2.5 — Custom Row Pattern
========================================================== */

.thwpb-calendar--grid
  .thp-public-calendar-grid.thwpb-fixed-columns,
.thwpb-calendar--upcoming
  .thp-public-calendar-grid.thwpb-fixed-columns {
  grid-template-columns:
    repeat(
      var(--thwpb-fixed-columns, 3),
      minmax(0, 1fr)
    );
}

.thwpb-calendar--grid
  .thp-public-calendar-grid.thwpb-custom-pattern,
.thwpb-calendar--upcoming
  .thp-public-calendar-grid.thwpb-custom-pattern {
  display: flex;
  flex-direction: column;
  width: 100%;
}

.thwpb-calendar .thwpb-custom-row {
  display: grid;
  grid-template-columns:
    repeat(
      var(--thwpb-row-columns, 1),
      minmax(0, 1fr)
    );
  width: 100%;
  gap: inherit;
}

@media screen and (max-width: 900px) {
  .thwpb-calendar--grid
    .thp-public-calendar-grid.thwpb-fixed-columns,
  .thwpb-calendar--upcoming
    .thp-public-calendar-grid.thwpb-fixed-columns {
    grid-template-columns:
      repeat(
        min(var(--thwpb-fixed-columns, 2), 2),
        minmax(0, 1fr)
      );
  }

  .thwpb-calendar .thwpb-custom-row {
    grid-template-columns:
      repeat(
        min(var(--thwpb-row-columns, 1), 2),
        minmax(0, 1fr)
      );
  }
}

@media screen and (max-width: 640px) {
  .thwpb-calendar--grid
    .thp-public-calendar-grid.thwpb-fixed-columns,
  .thwpb-calendar--upcoming
    .thp-public-calendar-grid.thwpb-fixed-columns,
  .thwpb-calendar .thwpb-custom-row {
    grid-template-columns: 1fr;
  }
}


/* ==========================================================
   v0.2.6 — Agenda Title Typography Normalization
========================================================== */

.thwpb-calendar--agenda .thp-calendar-agenda-content h3 {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 30px;
  font-weight: 700;
  line-height: 1.08;
}

.thwpb-calendar--agenda .thp-calendar-agenda-content h3 a {
  font: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  letter-spacing: inherit;
  color: inherit;
}

.thwpb-calendar--agenda .thp-calendar-agenda-content h3 a:hover,
.thwpb-calendar--agenda .thp-calendar-agenda-content h3 a:focus {
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
}

@media screen and (max-width: 900px) {
  .thwpb-calendar--agenda .thp-calendar-agenda-content h3 {
    font-size: 26px;
  }
}

@media screen and (max-width: 640px) {
  .thwpb-calendar--agenda .thp-calendar-agenda-content h3 {
    font-size: 24px;
  }
}


/* ==========================================================
   v0.2.9 — Month Interactive Pass
========================================================== */

.thwpb-month-navigation {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
  margin: 0 0 18px;
}

.thwpb-month-navigation[hidden] {
  display: none;
}

.thwpb-month-navigation-actions {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.thwpb-month-nav-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 38px;
  padding: 7px 12px;
  border: 1px solid #d7dadd;
  border-radius: 8px;
  background: #fff;
  color: #34383c;
  cursor: pointer;
  font: inherit;
  font-size: 13px;
  line-height: 1;
  transition:
    background-color 160ms ease,
    border-color 160ms ease,
    transform 160ms ease;
}

.thwpb-month-nav-button:hover {
  background: #f6f7f8;
  border-color: #b8bec4;
}

.thwpb-month-nav-button:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}

.thwpb-month-nav-button:disabled {
  cursor: wait;
  opacity: .55;
}

.thwpb-month-status {
  min-width: 0;
  color: #6f7378;
  font-size: 12px;
}

.thwpb-month-calendar-target {
  transition: opacity 140ms ease;
}

.thwpb-month-calendar-target.is-loading {
  opacity: .48;
}

.thwpb-calendar--month[data-thwpb-month-event-click="yes"]
  .thp-calendar-month-event {
  cursor: pointer;
}

.thwpb-calendar--month[data-thwpb-month-event-hover="yes"]
  .thp-calendar-month-event {
  transition:
    transform 160ms ease,
    box-shadow 160ms ease,
    filter 160ms ease;
}

@media (hover: hover) and (pointer: fine) {
  .thwpb-calendar--month[data-thwpb-month-event-hover="yes"]
    .thp-calendar-month-event:hover {
    transform: translateY(-2px);
    box-shadow: 0 5px 12px rgba(29, 35, 39, .12);
    filter: brightness(.985);
  }
}

.thwpb-calendar--month[data-thwpb-month-event-hover="yes"]
  .thp-calendar-month-event:focus,
.thwpb-calendar--month[data-thwpb-month-event-hover="yes"]
  .thp-calendar-month-event:focus-within {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}

@media screen and (max-width: 640px) {
  .thwpb-month-navigation {
    justify-content: stretch;
  }

  .thwpb-month-navigation-actions {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    width: 100%;
  }

  .thwpb-month-prev {
    justify-self: start;
  }

  .thwpb-month-next {
    justify-self: end;
  }

  .thwpb-month-nav-button {
    min-height: 44px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .thwpb-month-nav-button,
  .thwpb-month-calendar-target,
  .thwpb-calendar--month .thp-calendar-month-event {
    transition: none !important;
  }

  .thwpb-calendar--month .thp-calendar-month-event:hover {
    transform: none !important;
  }
}


/* ==========================================================
   v0.2.10 — Month Link-Aware Interaction
========================================================== */

.thwpb-calendar--month a.thp-calendar-month-event,
.thwpb-calendar--month a.thp-calendar-month-event:visited,
.thwpb-calendar--month a.thp-calendar-month-event:hover,
.thwpb-calendar--month a.thp-calendar-month-event:focus {
  color: inherit;
  text-decoration: none;
}

.thwpb-calendar--month a.thp-calendar-month-event {
  display: block;
}

.thwpb-calendar--month a.thp-calendar-month-event:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}


/* ==========================================================
   v0.2.11 — Month Navigation Activation + Placement
========================================================== */

/*
 * Keep the controls visually attached to the calendar rather than
 * floating above it. This deliberately uses a small bottom gap.
 */
.thwpb-calendar--month .thwpb-month-navigation {
  justify-content: flex-end;
  margin: 0 0 8px;
  gap: 8px;
}

.thwpb-calendar--month .thwpb-month-navigation-actions {
  gap: 6px;
}

.thwpb-calendar--month .thwpb-month-nav-button {
  min-height: 34px;
  padding: 6px 10px;
  border-radius: 7px;
  font-size: 12px;
}

/*
 * Keep AJAX replacement visually stable and prevent the navigation
 * from shifting when status text appears.
 */
.thwpb-calendar--month .thwpb-month-status {
  min-height: 1px;
}

@media screen and (max-width: 640px) {
  .thwpb-calendar--month .thwpb-month-navigation {
    margin-bottom: 6px;
  }

  .thwpb-calendar--month .thwpb-month-nav-button {
    min-height: 40px;
    padding: 7px 9px;
  }
}


/* ==========================================================
   v0.2.12 — Month Header Row
========================================================== */

.thwpb-calendar--month .thwpb-month-header-row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  margin: 0 0 16px;
}

.thwpb-calendar--month
  .thwpb-month-header-row
  .thp-calendar-month-heading {
  flex: 1 1 auto;
  margin: 0;
}

.thwpb-calendar--month
  .thwpb-month-header-row
  .thwpb-month-navigation {
  flex: 0 0 auto;
  margin: 0;
  justify-content: flex-end;
}

.thwpb-calendar--month.thwpb-hide-month-heading
  .thwpb-month-header-row
  .thp-calendar-month-heading {
  display: none;
}

.thwpb-calendar--month.thwpb-hide-month-heading
  .thwpb-month-header-row {
  justify-content: flex-end;
}

.thwpb-calendar--month .thwpb-month-calendar-target {
  margin-top: 0;
}

@media screen and (max-width: 640px) {
  .thwpb-calendar--month .thwpb-month-header-row {
    display: block;
    margin-bottom: 10px;
  }

  .thwpb-calendar--month
    .thwpb-month-header-row
    .thp-calendar-month-heading {
    margin-bottom: 10px;
  }

  .thwpb-calendar--month
    .thwpb-month-header-row
    .thwpb-month-navigation {
    width: 100%;
    justify-content: stretch;
  }
}


/* ==========================================================
   v0.2.13 — Month Header Vertical Alignment
========================================================== */

/*
 * Keep the established header-to-calendar spacing from v0.2.12,
 * but vertically center the month heading and navigation controls
 * against one another.
 */
.thwpb-calendar--month .thwpb-month-header-row {
  align-items: center;
}

/* ==========================================================
   v0.2.14 — Event Directory
========================================================== */

.thwpb-event-directory {
  width: 100%;
}

.thwpb-event-directory-jump {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin: 0 0 42px;
}

.thwpb-event-directory-jump a {
  color: inherit;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.3;
  text-decoration: none;
  border-bottom: 1px solid currentColor;
}

.thwpb-event-directory-jump a:hover,
.thwpb-event-directory-jump a:focus {
  opacity: .7;
  text-decoration: none;
}

.thwpb-event-directory-sections {
  display: grid;
  gap: var(--thwpb-dir-section-gap, 64px);
}

.thwpb-event-directory-section {
  scroll-margin-top: 120px;
}

.thwpb-event-directory-section-header {
  margin: 0 0 22px;
}

.thwpb-event-directory-section-header h2 {
  margin: 0;
  color: var(--thwpb-dir-section-title-color, inherit);
  font-family: var(--thwpb-dir-section-title-family, inherit);
  font-size: var(--thwpb-dir-section-title-size, 34px);
  font-weight: var(--thwpb-dir-section-title-weight, 600);
  line-height: 1.15;
}

.thwpb-event-directory-section-header p {
  max-width: 720px;
  margin: 8px 0 0;
  color: var(--thwpb-dir-section-desc-color, #6f7378);
  font-size: var(--thwpb-dir-section-desc-size, 15px);
  line-height: 1.55;
}

.thwpb-event-directory-grid {
  display: grid;
  grid-template-columns: repeat(var(--thwpb-dir-columns, 3), minmax(0, 1fr));
  gap: var(--thwpb-dir-card-gap, 22px);
}

.thwpb-event-directory-card {
  min-width: 0;
  overflow: hidden;
  border-radius: var(--thwpb-dir-card-radius, 18px);
  background: var(--thwpb-dir-card-bg, #fff);
  box-shadow: var(--thwpb-dir-card-shadow, 0 10px 28px rgba(29,35,39,.08));
}

.thwpb-event-directory-card-link,
.thwpb-event-directory-card-link:visited,
.thwpb-event-directory-card-link:hover,
.thwpb-event-directory-card-link:focus {
  display: block;
  height: 100%;
  color: inherit;
  text-decoration: none;
}

.thwpb-event-directory-image-wrap {
  height: var(--thwpb-dir-image-height, 220px);
  overflow: hidden;
  background: #202228;
}

.thwpb-event-directory-image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 280ms ease;
}

.thwpb-event-directory-image--placeholder {
  background:
    radial-gradient(circle at 50% 15%, rgba(255,255,255,.04), transparent 40%),
    #202228;
}

@media (hover: hover) and (pointer: fine) {
  .thwpb-event-directory-card:hover .thwpb-event-directory-image {
    transform: scale(1.035);
  }
}

.thwpb-event-directory-card-body {
  padding: 20px 20px 22px;
}

.thwpb-event-directory-card h3 {
  margin: 0;
  color: var(--thwpb-dir-event-title-color, inherit);
  font-family: var(--thwpb-dir-event-title-family, inherit);
  font-size: var(--thwpb-dir-event-title-size, 24px);
  font-weight: 600;
  line-height: 1.15;
}

.thwpb-event-directory-subtitle {
  margin: 8px 0 0;
  color: var(--thwpb-dir-meta-color, #6f7378);
  font-size: var(--thwpb-dir-meta-size, 12px);
  line-height: 1.45;
}

.thwpb-event-directory-meta,
.thwpb-event-directory-location {
  margin-top: 12px;
  color: var(--thwpb-dir-meta-color, #6f7378);
  font-size: var(--thwpb-dir-meta-size, 12px);
  line-height: 1.4;
}

.thwpb-event-directory-location {
  margin-top: 4px;
}

.thwpb-event-directory-empty {
  padding: 24px;
  border: 1px solid #e2e4e7;
  border-radius: 12px;
  background: #fff;
}

@media screen and (max-width: 980px) {
  .thwpb-event-directory-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media screen and (max-width: 640px) {
  .thwpb-event-directory-jump {
    margin-bottom: 30px;
  }

  .thwpb-event-directory-grid {
    grid-template-columns: 1fr;
  }

  .thwpb-event-directory-image-wrap {
    height: min(62vw, var(--thwpb-dir-image-height, 220px));
  }
}

@media (prefers-reduced-motion: reduce) {
  .thwpb-event-directory-image {
    transition: none;
  }
}


/* ==========================================================
   v0.2.15 — Event Directory Typography + Hover Refinement
========================================================== */

.thwpb-event-directory-section-header p {
  font-family: var(--thwpb-dir-section-desc-family, inherit);
  font-size: var(--thwpb-dir-section-desc-size, 15px);
  font-weight: var(--thwpb-dir-section-desc-weight, 400);
  line-height: var(--thwpb-dir-section-desc-line-height, 1.55);
  letter-spacing: var(--thwpb-dir-section-desc-letter-spacing, 0);
  color: var(--thwpb-dir-section-desc-color, #6f7378);
}

.thwpb-event-directory-card {
  transition:
    transform 180ms ease,
    box-shadow 180ms ease;
}

.thwpb-event-directory-card h3 {
  font-family: var(--thwpb-dir-event-title-family, inherit);
  font-size: var(--thwpb-dir-event-title-size, 24px);
  font-weight: var(--thwpb-dir-event-title-weight, 600);
  line-height: var(--thwpb-dir-event-title-line-height, 1.15);
  letter-spacing: var(--thwpb-dir-event-title-letter-spacing, 0);
  color: var(--thwpb-dir-event-title-color, inherit);
}

.thwpb-event-directory-subtitle {
  margin-top: var(--thwpb-dir-title-description-gap, 8px);
  margin-bottom: 0;
  font-family: var(--thwpb-dir-short-desc-family, inherit);
  font-size: var(--thwpb-dir-short-desc-size, 12px);
  font-weight: var(--thwpb-dir-short-desc-weight, 400);
  line-height: var(--thwpb-dir-short-desc-line-height, 1.45);
  letter-spacing: var(--thwpb-dir-short-desc-letter-spacing, 0);
  color: var(--thwpb-dir-short-desc-color, #6f7378);
}

.thwpb-event-directory-meta {
  margin-top: var(--thwpb-dir-description-meta-gap, 12px);
  font-family: var(--thwpb-dir-meta-family, inherit);
  font-size: var(--thwpb-dir-meta-size, 12px);
  font-weight: var(--thwpb-dir-meta-weight, 400);
  line-height: var(--thwpb-dir-meta-line-height, 1.4);
  letter-spacing: var(--thwpb-dir-meta-letter-spacing, 0);
  color: var(--thwpb-dir-meta-color, #6f7378);
}

/* When no short description exists, use the title spacing before metadata. */
.thwpb-event-directory-card h3 + .thwpb-event-directory-meta {
  margin-top: var(--thwpb-dir-title-description-gap, 8px);
}

.thwpb-event-directory-location {
  margin-top: 4px;
  font-family: var(--thwpb-dir-meta-family, inherit);
  font-size: var(--thwpb-dir-meta-size, 12px);
  font-weight: var(--thwpb-dir-meta-weight, 400);
  line-height: var(--thwpb-dir-meta-line-height, 1.4);
  letter-spacing: var(--thwpb-dir-meta-letter-spacing, 0);
  color: var(--thwpb-dir-meta-color, #6f7378);
}

@media (hover: hover) and (pointer: fine) {
  .thwpb-event-directory-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 16px 36px rgba(29,35,39,.13);
  }

  .thwpb-event-directory-card:hover .thwpb-event-directory-image {
    transform: scale(1.035);
  }
}

.thwpb-event-directory-card:focus-within {
  transform: translateY(-2px);
}

@media (prefers-reduced-motion: reduce) {
  .thwpb-event-directory-card,
  .thwpb-event-directory-image {
    transition: none !important;
  }

  .thwpb-event-directory-card:hover,
  .thwpb-event-directory-card:focus-within {
    transform: none !important;
  }
}


/* ==========================================================
   v0.2.16 — Event Directory Layout + Interaction Pass
========================================================== */

.thwpb-event-directory,
.thwpb-event-directory-sections,
.thwpb-event-directory-section {
  overflow: visible;
}

.thwpb-event-directory-grid {
  overflow: visible;
  padding: 12px;
  margin: -12px;
}

.thwpb-event-directory-section {
  scroll-margin-top: 120px;
  padding-bottom: 8px;
}

.thwpb-event-directory-meta--split {
  display: grid;
  gap: 2px;
}

.thwpb-event-directory-meta--split > span {
  display: block;
}

.thwpb-event-directory-meta-time-label {
  margin-right: .35em;
}


/* ==========================================================
   v0.2.17 — Directory Editorial Controls
========================================================== */

.thwpb-event-directory-section-header {
  margin-bottom: var(--thwpb-dir-category-cards-gap, 22px);
}

.thwpb-event-directory-section[style*="background"] {
  box-sizing: border-box;
}

.thwpb-event-directory-section[style*="--thwpb-dir-category-accent"] .thwpb-event-directory-section-header h2,
.thwpb-event-directory-section[style*="--thwpb-dir-category-accent"] .thwpb-event-directory-section-header p {
  color: var(--thwpb-dir-category-accent) !important;
}

.thwpb-event-directory-jump {
  column-gap: var(--thwpb-dir-jump-gap, 18px);
}

.thwpb-event-directory-jump a {
  font-family: var(--thwpb-dir-jump-family, inherit);
  font-size: var(--thwpb-dir-jump-size, 13px);
  font-weight: var(--thwpb-dir-jump-weight, 600);
  line-height: var(--thwpb-dir-jump-line-height, 1.3);
  letter-spacing: var(--thwpb-dir-jump-letter-spacing, 0);
  color: var(--thwpb-dir-jump-color, inherit);
  border-bottom: 0;
  text-decoration: var(--thwpb-dir-jump-decoration, underline);
  text-underline-offset: .22em;
}

.thwpb-event-directory-jump a:hover,
.thwpb-event-directory-jump a:focus {
  color: var(--thwpb-dir-jump-hover-color, var(--thwpb-dir-jump-color, inherit));
  opacity: 1;
  text-decoration: var(--thwpb-dir-jump-decoration, underline);
}

.thwpb-event-directory-jump--pills a {
  padding: var(--thwpb-dir-jump-pill-padding, 8px 12px);
  border-radius: var(--thwpb-dir-jump-pill-radius, 999px);
  background: var(--thwpb-dir-jump-pill-bg, #f3f1f7);
  text-decoration: none;
}

.thwpb-event-directory-jump--pills a:hover,
.thwpb-event-directory-jump--pills a:focus {
  background: var(--thwpb-dir-jump-pill-hover-bg, #e9e4f2);
  text-decoration: none;
}


/* ==========================================================
   v0.2.18 — Event Category Full-Width Background
========================================================== */

/*
 * Category content remains in the normal Event Directory column.
 * Only the visual background is allowed to break out to viewport width.
 */
.thwpb-event-directory-section--has-background {
  position: relative;
  z-index: 0;
  padding: var(--thwpb-dir-category-padding, 36px);
}

.thwpb-event-directory-section--contained-background {
  background: var(--thwpb-dir-category-background, transparent);
  border-radius: var(--thwpb-dir-category-radius, 20px);
}

.thwpb-event-directory-section--full-background {
  background: transparent !important;
  border-radius: 0;
}

.thwpb-event-directory-section--full-background::before {
  content: "";
  position: absolute;
  z-index: -1;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 100vw;
  transform: translateX(-50%);
  background: var(--thwpb-dir-category-background, transparent);
  border-radius: var(--thwpb-dir-category-radius, 0);
  pointer-events: none;
}



/* ==========================================================
   v0.2.19 — Full-Width Category Background Breakout Fix
========================================================== */

/*
 * The Directory itself must allow the category background layer to escape
 * its normal content column. Do not clip horizontally at this level.
 */
.thwpb-event-directory,
.thwpb-event-directory-sections,
.thwpb-event-directory-section {
  overflow: visible !important;
}

/*
 * Full-width category background:
 * - section content remains in the normal Directory width
 * - JavaScript measures the section's actual viewport position
 * - only the ::before background layer expands edge-to-edge
 */
.thwpb-event-directory-section--full-background {
  position: relative;
  z-index: 0;
  background: transparent !important;
  border-radius: 0 !important;
  isolation: isolate;
}

.thwpb-event-directory-section--full-background::before {
  content: "";
  position: absolute;
  z-index: -1;
  top: 0;
  bottom: 0;

  /*
   * These values are populated from getBoundingClientRect().
   * This does not assume that the Directory is centered in the page.
   */
  left: calc(-1 * var(--thwpb-dir-fullbleed-left, 0px));
  right: auto;
  width: var(--thwpb-dir-viewport-width, 100vw);
  margin-left: 0;

  background: var(--thwpb-dir-category-background, transparent);
  border-radius: var(--thwpb-dir-category-radius, 0);
  pointer-events: none;
}

/*
 * Keep the category's own padding applied to the constrained content.
 * The visual background extends beyond it independently.
 */
.thwpb-event-directory-section--full-background,
.thwpb-event-directory-section--contained-background {
  box-sizing: border-box;
}


/* ==========================================================
   v0.2.20 — Full-Width Category Background Correction
========================================================== */

/*
 * Keep overflow behavior scoped to the Directory.
 * Do not alter global POFO/html/body overflow behavior.
 */
.thwpb-event-directory,
.thwpb-event-directory-sections,
.thwpb-event-directory-section {
  overflow: visible !important;
}


/* ==========================================================
   v0.2.21 — Measured Full-Bleed Background
========================================================== */

.thwpb-event-directory-section--full-background {
  --thwpb-dir-fullbleed-left: 0px;
  --thwpb-dir-viewport-width: 100vw;
}


/* ==========================================================
   v0.2.22 — Body-Level Full-Bleed Category Background Layers
========================================================== */

/*
 * Full-width categories no longer rely on a pseudo-element escaping
 * through WPBakery/POFO ancestors. Disable that visual layer.
 */
.thwpb-event-directory-section--full-background::before {
  display: none !important;
}

/*
 * Keep the actual Event Directory content above the body-level
 * background portals created by JavaScript.
 */
.thwpb-event-directory {
  position: relative;
  z-index: 2;
}

/*
 * A direct child of <body>, intentionally outside WPBakery's
 * clipping/transform hierarchy.
 */
.thwpb-event-directory-fullbleed-layer {
  position: absolute;
  left: 0;
  width: 100%;
  margin: 0;
  padding: 0;
  pointer-events: none;
  z-index: 1;
  box-sizing: border-box;
}

/*
 * Full-width category sections keep their content padding but no longer
 * paint a local background. The portal behind them supplies the visual.
 */
.thwpb-event-directory-section--full-background {
  background: transparent !important;
  border-radius: 0 !important;
}


/* ==========================================================
   v0.2.23 — Category Inner Padding Behavior
========================================================== */

/*
 * Treat category padding as a true inner inset around all category content.
 * This applies equally to contained and full-width category treatments.
 */
.thwpb-event-directory-section--has-background {
  box-sizing: border-box;
  padding: var(--thwpb-dir-category-padding, 36px);
}

/*
 * Full-width categories no longer depend on any local background painting.
 * The body-level portal supplies the visual band; this section supplies
 * the content inset that determines the portal's measured height.
 */
.thwpb-event-directory-section--full-background {
  background: transparent !important;
  border-radius: 0 !important;
}

/*
 * Contained categories continue to paint normally.
 */
.thwpb-event-directory-section--contained-background {
  background: var(--thwpb-dir-category-background, transparent);
  border-radius: var(--thwpb-dir-category-radius, 20px);
}

/*
 * Avoid accidental margin collapse making top/bottom padding appear smaller
 * than configured.
 */
.thwpb-event-directory-section--has-background
  > .thwpb-event-directory-section-header {
  margin-top: 0;
}

.thwpb-event-directory-section--has-background
  > .thwpb-event-directory-grid {
  margin-bottom: 0;
}


/* ==========================================================
   v0.2.24 — Authoritative Category Inner Padding
========================================================== */

/*
 * Inline category padding now carries !important and is authoritative.
 * This rule remains only as a fallback/default for categories that do not
 * provide a saved padding value.
 */
.thwpb-event-directory-section--has-background {
  box-sizing: border-box;
  padding: var(--thwpb-dir-category-padding, 36px);
}

/* Public Community Recognition — v0.2.26 */
.thwpb-community-recognition {
    --thwpb-community-columns: 4;
    width: 100%;
}

.thwpb-community-heading {
    margin: 0 0 30px;
}

.thwpb-community-heading h2 {
    margin: 0 0 10px;
}

.thwpb-community-heading p {
    max-width: 760px;
    margin: 0;
}

.thwpb-community-impact__grid,
.thwpb-community-name-grid {
    display: grid;
    grid-template-columns: repeat(var(--thwpb-community-columns), minmax(0, 1fr));
    gap: 18px;
}

.thwpb-community-stat {
    padding: 28px;
    border: 1px solid rgba(38, 48, 43, 0.12);
    border-radius: 16px;
    background: rgba(255, 255, 255, 0.48);
}

.thwpb-community-stat__value {
    margin-bottom: 6px;
    font-size: clamp(28px, 4vw, 46px);
    line-height: 1;
    font-weight: 600;
}

.thwpb-community-stat__label {
    font-size: 14px;
    line-height: 1.4;
    opacity: 0.72;
}

.thwpb-funding-members__groups {
    display: grid;
    gap: 42px;
}

.thwpb-funding-level {
    padding-top: 24px;
    border-top: 1px solid rgba(38, 48, 43, 0.14);
}

.thwpb-funding-level__header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 18px;
}

.thwpb-funding-level__header h3 {
    margin: 0;
}

.thwpb-funding-level__threshold {
    flex: 0 0 auto;
    font-size: 13px;
    opacity: 0.62;
}

.thwpb-community-name {
    padding: 4px 0;
    line-height: 1.45;
}

.thwpb-supporter-roll__grid {
    column-gap: 28px;
    row-gap: 10px;
}

.thwpb-community-empty__message {
    padding: 22px 24px;
    border: 1px dashed rgba(38, 48, 43, 0.22);
    border-radius: 12px;
    opacity: 0.7;
}

@media (max-width: 991px) {
    .thwpb-community-impact__grid,
    .thwpb-community-name-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 575px) {
    .thwpb-community-impact__grid,
    .thwpb-community-name-grid {
        grid-template-columns: 1fr;
    }

    .thwpb-community-stat {
        padding: 22px;
    }

    .thwpb-funding-level__header {
        align-items: flex-start;
        flex-direction: column;
        gap: 6px;
    }
}


/* Recognition heading clipping + heading/intro spacing — v0.2.29 */
/*
 * Some display fonts extend above their nominal em box. The previous fix
 * compensated the added breathing room with a negative top margin; when a
 * WPBakery/Pofo ancestor clips overflow, that can move the glyphs back across
 * the clipping boundary. Keep the heading entirely inside its own box and add
 * real internal headroom instead.
 */
.thwpb-funding-members .thwpb-community-heading,
.thwpb-supporter-roll .thwpb-community-heading {
    overflow: visible;
    padding-top: 0.18em;
}

.thwpb-funding-members .thwpb-community-heading h2,
.thwpb-supporter-roll .thwpb-community-heading h2 {
    display: block;
    height: auto;
    max-height: none;
    margin-top: 0;
    margin-bottom: var(--thwpb-heading-intro-gap, 10px);
    padding-top: 0.08em;
    padding-bottom: 0.04em;
    overflow: visible;
    clip: auto;
    clip-path: none;
}

/* Public Community Recognition controls — v0.2.27 */
.thwpb-community-recognition {
    --thwpb-community-tablet-columns: 2;
    --thwpb-community-mobile-columns: 1;
    --thwpb-community-text-align: left;
}

.thwpb-community-recognition .thwpb-community-heading h2 {
    font-family: var(--thwpb-heading-font-family, inherit);
    font-size: var(--thwpb-heading-font-size, inherit);
    font-weight: var(--thwpb-heading-font-weight, inherit);
    line-height: var(--thwpb-heading-line-height, inherit);
    letter-spacing: var(--thwpb-heading-letter-spacing, inherit);
    color: var(--thwpb-heading-color, inherit);
}

.thwpb-community-recognition .thwpb-community-heading p {
    font-family: var(--thwpb-intro-font-family, inherit);
    font-size: var(--thwpb-intro-font-size, inherit);
    font-weight: var(--thwpb-intro-font-weight, inherit);
    line-height: var(--thwpb-intro-line-height, inherit);
    letter-spacing: var(--thwpb-intro-letter-spacing, inherit);
    color: var(--thwpb-intro-color, inherit);
}

.thwpb-community-impact__grid,
.thwpb-community-name-grid {
    grid-template-columns: repeat(var(--thwpb-community-columns, 4), minmax(0, 1fr));
    text-align: var(--thwpb-community-text-align, left);
}

.thwpb-community-impact__grid {
    gap: var(--thwpb-community-gap, 18px);
}

.thwpb-community-stat {
    padding: var(--thwpb-stat-padding, 28px);
    border-width: var(--thwpb-stat-border-width, 1px);
    border-style: solid;
    border-color: var(--thwpb-stat-border-color, rgba(38,48,43,.12));
    border-radius: var(--thwpb-stat-radius, 16px);
    background: var(--thwpb-stat-background, rgba(255,255,255,.48));
    text-align: var(--thwpb-community-text-align, left);
}

.thwpb-community-impact--minimal .thwpb-community-stat {
    padding: var(--thwpb-stat-padding, 0);
    border-color: transparent;
    border-radius: 0;
    background: transparent;
}

.thwpb-community-stat__value {
    font-family: var(--thwpb-value-font-family, inherit);
    font-size: var(--thwpb-value-font-size, clamp(28px,4vw,46px));
    font-weight: var(--thwpb-value-font-weight, 600);
    line-height: var(--thwpb-value-line-height, 1);
    letter-spacing: var(--thwpb-value-letter-spacing, inherit);
    color: var(--thwpb-value-color, inherit);
}

.thwpb-community-stat__label {
    font-family: var(--thwpb-label-font-family, inherit);
    font-size: var(--thwpb-label-font-size, 14px);
    font-weight: var(--thwpb-label-font-weight, inherit);
    line-height: var(--thwpb-label-line-height, 1.4);
    letter-spacing: var(--thwpb-label-letter-spacing, inherit);
    color: var(--thwpb-label-color, inherit);
}

.thwpb-funding-members__groups { gap: var(--thwpb-level-gap, 42px); }
.thwpb-funding-level {
    padding-top: var(--thwpb-level-padding, 24px);
    border-top-color: var(--thwpb-level-divider-color, rgba(38,48,43,.14));
}
.thwpb-funding-members--no-divider .thwpb-funding-level { border-top: 0; }
.thwpb-funding-level__header h3 {
    font-family: var(--thwpb-level-font-family, inherit);
    font-size: var(--thwpb-level-font-size, inherit);
    font-weight: var(--thwpb-level-font-weight, inherit);
    line-height: var(--thwpb-level-line-height, inherit);
    letter-spacing: var(--thwpb-level-letter-spacing, inherit);
    color: var(--thwpb-level-color, inherit);
}
.thwpb-funding-level__threshold {
    font-family: var(--thwpb-threshold-font-family, inherit);
    font-size: var(--thwpb-threshold-font-size, 13px);
    font-weight: var(--thwpb-threshold-font-weight, inherit);
    line-height: var(--thwpb-threshold-line-height, inherit);
    letter-spacing: var(--thwpb-threshold-letter-spacing, inherit);
    color: var(--thwpb-threshold-color, inherit);
}

.thwpb-funding-members .thwpb-community-name-grid,
.thwpb-supporter-roll .thwpb-community-name-grid {
    column-gap: var(--thwpb-community-column-gap, 28px);
    row-gap: var(--thwpb-community-row-gap, 10px);
}

.thwpb-community-name {
    font-family: var(--thwpb-name-font-family, inherit);
    font-size: var(--thwpb-name-font-size, inherit);
    font-weight: var(--thwpb-name-font-weight, inherit);
    line-height: var(--thwpb-name-line-height, 1.45);
    letter-spacing: var(--thwpb-name-letter-spacing, inherit);
    color: var(--thwpb-name-color, inherit);
    text-align: var(--thwpb-community-text-align, left);
}

.thwpb-supporter-roll .thwpb-community-name {
    padding-top: var(--thwpb-name-padding, 4px);
    padding-bottom: var(--thwpb-name-padding, 4px);
}
.thwpb-supporter-roll--name-dividers .thwpb-community-name {
    border-bottom: 1px solid var(--thwpb-name-divider-color, rgba(38,48,43,.14));
}

@media (max-width: 991px) {
    .thwpb-community-recognition .thwpb-community-impact__grid,
    .thwpb-community-recognition .thwpb-community-name-grid {
        grid-template-columns: repeat(var(--thwpb-community-tablet-columns, 2), minmax(0, 1fr));
    }
}

@media (max-width: 575px) {
    .thwpb-community-recognition .thwpb-community-impact__grid,
    .thwpb-community-recognition .thwpb-community-name-grid {
        grid-template-columns: repeat(var(--thwpb-community-mobile-columns, 1), minmax(0, 1fr));
    }
}

/* ==========================================================
   Funding Member Spotlight — v0.2.31
========================================================== */
.thwpb-funding-spotlight {
    --thwpb-community-text-align: left;
    box-sizing: border-box;
    width: 100%;
    min-height: var(--thwpb-spot-min-height, 0);
    display: flex;
    align-items: center;
    border-width: var(--thwpb-spot-border-width, 0);
    border-style: solid;
    border-color: var(--thwpb-spot-border-color, rgba(38,48,43,.14));
    border-radius: var(--thwpb-spot-radius, 0);
    background: var(--thwpb-spot-background, transparent);
    text-align: var(--thwpb-community-text-align, left);
}

.thwpb-funding-spotlight--card {
    border-width: var(--thwpb-spot-border-width, 1px);
    border-radius: var(--thwpb-spot-radius, 18px);
    background: var(--thwpb-spot-background, rgba(255,255,255,.55));
}

.thwpb-funding-spotlight--band {
    background: var(--thwpb-spot-background, rgba(38,48,43,.055));
}

.thwpb-funding-spotlight--card .thwpb-funding-spotlight__inner {
    padding-top: var(--thwpb-spot-padding-top, clamp(28px, 4vw, 54px));
    padding-right: var(--thwpb-spot-padding-right, clamp(28px, 4vw, 54px));
    padding-bottom: var(--thwpb-spot-padding-bottom, clamp(28px, 4vw, 54px));
    padding-left: var(--thwpb-spot-padding-left, clamp(28px, 4vw, 54px));
}

.thwpb-funding-spotlight--band .thwpb-funding-spotlight__inner {
    padding-top: var(--thwpb-spot-padding-top, clamp(28px, 4vw, 52px));
    padding-right: var(--thwpb-spot-padding-right, clamp(24px, 5vw, 68px));
    padding-bottom: var(--thwpb-spot-padding-bottom, clamp(28px, 4vw, 52px));
    padding-left: var(--thwpb-spot-padding-left, clamp(24px, 5vw, 68px));
}

.thwpb-funding-spotlight__inner {
    box-sizing: border-box;
    width: 100%;
    max-width: 980px;
    margin-left: auto;
    margin-right: auto;
    padding-top: var(--thwpb-spot-padding-top, 0);
    padding-right: var(--thwpb-spot-padding-right, 0);
    padding-bottom: var(--thwpb-spot-padding-bottom, 0);
    padding-left: var(--thwpb-spot-padding-left, 0);
}

.thwpb-funding-spotlight[style*="--thwpb-community-text-align:left"] .thwpb-funding-spotlight__inner {
    margin-left: 0;
}

.thwpb-funding-spotlight[style*="--thwpb-community-text-align:right"] .thwpb-funding-spotlight__inner {
    margin-right: 0;
}

.thwpb-funding-spotlight__eyebrow {
    margin: 0 0 var(--thwpb-spot-eyebrow-name-gap, 12px);
    font-family: var(--thwpb-spot_eyebrow-font-family, inherit);
    font-size: var(--thwpb-spot_eyebrow-font-size, 12px);
    font-weight: var(--thwpb-spot_eyebrow-font-weight, 700);
    line-height: var(--thwpb-spot_eyebrow-line-height, 1.35);
    letter-spacing: var(--thwpb-spot_eyebrow-letter-spacing, .13em);
    color: var(--thwpb-spot_eyebrow-color, inherit);
    text-transform: uppercase;
    opacity: .72;
}

.thwpb-funding-spotlight__accent {
    width: var(--thwpb-spot-accent-width, 72px);
    height: var(--thwpb-spot-accent-thickness, 2px);
    margin: 0 0 18px;
    background: var(--thwpb-spot-accent-color, currentColor);
    opacity: .45;
}

.thwpb-funding-spotlight[style*="--thwpb-community-text-align:center"] .thwpb-funding-spotlight__accent {
    margin-left: auto;
    margin-right: auto;
}

.thwpb-funding-spotlight[style*="--thwpb-community-text-align:right"] .thwpb-funding-spotlight__accent {
    margin-left: auto;
}

.thwpb-funding-spotlight--no-accent .thwpb-funding-spotlight__accent {
    display: none;
}

.thwpb-funding-spotlight__name {
    height: auto;
    max-height: none;
    margin: 0;
    padding: .08em 0 .04em;
    overflow: visible;
    clip: auto;
    clip-path: none;
    font-family: var(--thwpb-spot_name-font-family, inherit);
    font-size: var(--thwpb-spot_name-font-size, clamp(38px, 5vw, 72px));
    font-weight: var(--thwpb-spot_name-font-weight, 500);
    line-height: var(--thwpb-spot_name-line-height, 1.05);
    letter-spacing: var(--thwpb-spot_name-letter-spacing, inherit);
    color: var(--thwpb-spot_name-color, inherit);
}

.thwpb-funding-spotlight__level {
    margin-top: var(--thwpb-spot-name-level-gap, 9px);
    font-family: var(--thwpb-spot_level-font-family, inherit);
    font-size: var(--thwpb-spot_level-font-size, 14px);
    font-weight: var(--thwpb-spot_level-font-weight, 700);
    line-height: var(--thwpb-spot_level-line-height, 1.35);
    letter-spacing: var(--thwpb-spot_level-letter-spacing, .08em);
    color: var(--thwpb-spot_level-color, inherit);
    text-transform: uppercase;
}

.thwpb-funding-spotlight__body {
    max-width: 760px;
    margin-top: var(--thwpb-spot-level-body-gap, 18px);
    font-family: var(--thwpb-spot_body-font-family, inherit);
    font-size: var(--thwpb-spot_body-font-size, 18px);
    font-weight: var(--thwpb-spot_body-font-weight, inherit);
    line-height: var(--thwpb-spot_body-line-height, 1.5);
    letter-spacing: var(--thwpb-spot_body-letter-spacing, inherit);
    color: var(--thwpb-spot_body-color, inherit);
}

.thwpb-funding-spotlight[style*="--thwpb-community-text-align:center"] .thwpb-funding-spotlight__body {
    margin-left: auto;
    margin-right: auto;
}

.thwpb-funding-spotlight[style*="--thwpb-community-text-align:right"] .thwpb-funding-spotlight__body {
    margin-left: auto;
}

.thwpb-funding-spotlight__date {
    margin-top: var(--thwpb-spot-body-date-gap, 16px);
    font-family: var(--thwpb-spot_date-font-family, inherit);
    font-size: var(--thwpb-spot_date-font-size, 12px);
    font-weight: var(--thwpb-spot_date-font-weight, inherit);
    line-height: var(--thwpb-spot_date-line-height, 1.4);
    letter-spacing: var(--thwpb-spot_date-letter-spacing, .04em);
    color: var(--thwpb-spot_date-color, inherit);
    opacity: .65;
}

.thwpb-funding-spotlight__date time {
    white-space: nowrap;
}

.thwpb-funding-spotlight__link {
    display: inline-block;
    margin-top: 20px;
    font-family: var(--thwpb-spot_link-font-family, inherit);
    font-size: var(--thwpb-spot_link-font-size, 14px);
    font-weight: var(--thwpb-spot_link-font-weight, 600);
    line-height: var(--thwpb-spot_link-line-height, 1.4);
    letter-spacing: var(--thwpb-spot_link-letter-spacing, inherit);
    color: var(--thwpb-spot_link-color, inherit);
    text-decoration: underline;
    text-underline-offset: .2em;
}

@media (max-width: 575px) {
    .thwpb-funding-spotlight--card .thwpb-funding-spotlight__inner,
    .thwpb-funding-spotlight--band .thwpb-funding-spotlight__inner {
        padding-top: var(--thwpb-spot-padding-top, 28px);
        padding-right: var(--thwpb-spot-padding-right, 22px);
        padding-bottom: var(--thwpb-spot-padding-bottom, 28px);
        padding-left: var(--thwpb-spot-padding-left, 22px);
    }
}

/* Public recognition alignment controls — v0.2.32 */
.thwpb-funding-members .thwpb-community-heading h2,
.thwpb-supporter-roll .thwpb-community-heading h2 {
    text-align: var(--thwpb-heading-align, left);
}

.thwpb-funding-members .thwpb-community-heading p,
.thwpb-supporter-roll .thwpb-community-heading p {
    text-align: var(--thwpb-intro-align, left);
}

/* Keep threshold values independently anchored to the right while allowing
   the Funding Level title itself to align left, center, or right. */
.thwpb-funding-members .thwpb-funding-level__header {
    position: relative;
    display: block;
}

.thwpb-funding-members .thwpb-funding-level__header h3 {
    width: 100%;
    text-align: var(--thwpb-level-align, left);
}

.thwpb-funding-members .thwpb-funding-level__threshold {
    position: absolute;
    top: 0;
    right: 0;
}


/* Recognition alignment polish + optional Funding Level title divider — v0.2.33 */
.thwpb-funding-members .thwpb-community-heading p,
.thwpb-supporter-roll .thwpb-community-heading p {
    width: 100%;
}

/* The intro copy has a max-width. Center/right alignment must move the block
   itself as well as aligning the text inside it. */
.thwpb-funding-members[style*="--thwpb-intro-align:center"] .thwpb-community-heading p,
.thwpb-supporter-roll[style*="--thwpb-intro-align:center"] .thwpb-community-heading p {
    margin-left: auto;
    margin-right: auto;
}

.thwpb-funding-members[style*="--thwpb-intro-align:right"] .thwpb-community-heading p,
.thwpb-supporter-roll[style*="--thwpb-intro-align:right"] .thwpb-community-heading p {
    margin-left: auto;
    margin-right: 0;
}

.thwpb-funding-members .thwpb-funding-level__header {
    text-align: var(--thwpb-level-align, left);
}

.thwpb-funding-members .thwpb-funding-level__title-divider {
    display: inline-block;
    width: var(--thwpb-level-title-divider-width, 80px);
    height: var(--thwpb-level-title-divider-thickness, 1px);
    margin-top: var(--thwpb-level-title-divider-gap, 10px);
    background: var(--thwpb-level-title-divider-color, currentColor);
    vertical-align: top;
}

/* Supporter Roll intro/list divider controls — v0.2.34 */
.thwpb-supporter-roll--list-divider .thwpb-community-heading {
    margin-bottom: 0;
}

.thwpb-supporter-roll__list-divider {
    box-sizing: border-box;
    display: block;
    width: var(--thwpb-list-divider-width, 100%);
    max-width: 100%;
    height: var(--thwpb-list-divider-thickness, 1px);
    margin-top: var(--thwpb-list-divider-gap-above, 24px);
    margin-right: auto;
    margin-bottom: var(--thwpb-list-divider-gap-below, 30px);
    margin-left: auto;
    background: var(--thwpb-list-divider-color, rgba(38,48,43,.14));
}
