/* =========================================================
   LAB: shared scope + variables
========================================================= */

.lab-page,
.lab-page-wrapper,
.tax-lab,
.single-lab {
  --lab-max: 1800px;
  --lab-pad: 2rem;
  --lab-gap: 1.5rem;
  --lab-text-max: 1200px;

  width: 100%;
  overflow-wrap: anywhere;
}

.lab-page,
.lab-page *,
.lab-page-wrapper,
.lab-page-wrapper *,
.tax-lab,
.tax-lab *,
.single-lab,
.single-lab * {
  box-sizing: border-box;
}

/* =========================================================
   LAB: common inner widths
========================================================= */

.lab-page .issue-header .inner,
.lab-page .lab-posts-wrap .inner,
.lab-page .lab-description-row > div:last-child,
.lab-page-wrapper .issue-header .inner,
.lab-page-wrapper .lab-posts-wrap .inner,
.lab-page-wrapper .lab-description-row > div:last-child,
.tax-lab .issue-header .inner,
.tax-lab .lab-posts-wrap .inner,
.tax-lab .lab-description-row > div:last-child,
.single-lab .issue-header .inner,
.single-lab .lab-posts-wrap .inner,
.single-lab .lab-description-row > div:last-child {
  width: 100%;
  max-width: var(--lab-max);
  margin: 0 auto;
  padding: 0 var(--lab-pad);
}

.lab-page .article-grid > *,
.lab-page-wrapper .article-grid > *,
.tax-lab .article-grid > *,
.single-lab .article-grid > * {
  min-width: 0;
}

@media (min-width: 1024px) {
  .lab-page .article-grid,
  .lab-page-wrapper .article-grid,
  .tax-lab .article-grid,
  .single-lab .article-grid {
    justify-content: center;
  }

  .lab-page .article-grid > div:nth-child(2),
  .lab-page-wrapper .article-grid > div:nth-child(2),
  .tax-lab .article-grid > div:nth-child(2),
  .single-lab .article-grid > div:nth-child(2) {
    width: 100%;
    max-width: var(--lab-max);
    margin: 0 auto;
  }
}

/* =========================================================
   LAB: page intro
========================================================= */

.lab-description {
  width: 100%;
}

.lab-description > *:first-child {
  margin-top: 0;
}

.lab-description-row {
  padding: 3rem 0 2rem;
}

.lab-description-row .lab-title-column {
  width: 100%;
  padding: 0 var(--lab-pad);
}

.lab-description-row .lab-page-title {
  font-family: ModeratLight;
  font-size: clamp(3rem, 8vw, 9rem);
  line-height: 0.9;
  text-align: left;
  margin: 0;
}

.lab-description-row .lab-description {
  text-align: left;
}

/* =========================================================
   LAB: filter bar
========================================================= */

.lab-filter-row {
  padding: 1rem 0 1.25rem;
}

.lab-filter-grid > div:last-child {
  width: 100%;
}

.lab-filter-menus {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem 2rem;
  align-items: flex-start;
  width: 100%;
}

.lab-filter-menu {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  min-width: 0;
}

.lab-filter-menu-title,
.lab-filter-option,
.single-lab h4.dates,
.tax-lab h4.dates,
.lab-page h4.dates {
  font-size: 12px;
  line-height: 1.3;
  letter-spacing: 0.01em;
}

.lab-filter-menu-title {
  margin: 0;
}

.lab-filters,
.lab-type-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1.25rem;
  align-items: center;
  width: 100%;
  margin: 0;
  max-width: none;
}

.lab-filter-option {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  cursor: pointer;
}

.lab-filter-option input {
  margin: 0;
}

/* =========================================================
   LAB: outer posts wrapper
========================================================= */

.lab-posts-wrap,
.lab-posts-wrap .inner,
.lab-posts-list {
  width: 100%;
  max-width: none;
}

.lab-posts-list {
  display: block;
  width: 100% !important;
  max-width: none !important;
  margin: 0;
  padding: 2rem 0;
}

@media (min-width: 1024px) {
  .lab-posts-wrap .inner {
    padding-left: 3rem;
    padding-right: 3rem;
  }
}

@media (min-width: 1350px) {
  .lab-posts-wrap .inner {
    padding-left: 4rem;
    padding-right: 4rem;
  }
}

/* =========================================================
   LAB: masonry layout
========================================================= */

.lab-masonry {
  position: relative;
  width: 100%;
  min-height: 1px;
  margin: 0;
  padding: 0;
}

/* =========================================================
   LAB: cards
========================================================= */

.lab-entry {
  position: absolute;
  display: block;

  margin: 0;
  padding: 0.9rem;
  overflow: hidden;

  min-height: 0;
  height: auto;

  opacity: 1;
  transform: translate3d(0, 0, 0) scaleY(1);
  transform-origin: top left;

  transition:
    top 360ms ease,
    left 360ms ease,
    width 360ms ease,
    opacity 260ms ease,
    transform 260ms ease,
    padding 260ms ease;
}

.lab-entry-inner {
  display: flex;
  flex-direction: column;
  min-height: 0;
  height: auto;
}

.lab-snippet-item {
  width: auto;
}

/* =========================================================
   LAB: intro cards
========================================================= */

.lab-intro-card {
  padding: 1.5rem;
  border-top-width: 4px;
  border-right-width: 10px;
}

.lab-intro-card .lab-entry-inner {
  max-width: none;
}

.lab-intro-card .lab-entry-context {
  margin-bottom: 0.85rem;
}

.lab-intro-card .lab-entry-title {
  font-size: 1.55rem;
  line-height: 1.08;
  margin: 0 0 1rem;
  font-weight: normal;
}

.lab-intro-card .lab-entry-intro {
  max-width: 42rem;
  font-size: 1rem;
  line-height: 1.5;
}

.lab-intro-card .lab-entry-intro p {
  margin: 0 0 0.85em;
}

.lab-intro-card .lab-entry-intro > *:first-child {
  margin-top: 0;
}

.lab-intro-card .lab-entry-intro > *:last-child {
  margin-bottom: 0;
}

/* =========================================================
   LAB: entry typography
========================================================= */

.lab-entry-context,
.lab-entry-context * {
  font-size: 12px !important;
  line-height: 1.2 !important;
  font-family: inherit !important;
  font-weight: normal !important;
  letter-spacing: 0.01em;
}

.lab-entry-context {
  margin-bottom: 0.5rem;
}

.lab-entry-context a {
  text-decoration: none;
  border-bottom: 1px solid currentColor;
}

.lab-entry-title,
.lab-entry-subtitle {
  font-family: "ModeratLight", sans-serif;
  font-weight: normal;
  line-height: 1.1;
  margin: 0 0 0.6rem;
}

.lab-entry-title {
  font-size: 1.05rem;
}

.lab-entry-subtitle {
  font-size: 1rem;
  line-height: 1.275;
}

.lab-entry-title a {
  text-decoration: none;
}

.lab-entry .authors,
.lab-entry .author {
  display: none !important;
}

.lab-card-lab-title {
  margin-top: auto;
  padding-top: 1.25rem;
  font-size: 12px;
  line-height: 1.2;
  letter-spacing: 0.01em;
  text-align: left;
}

.lab-entry-intro,
.lab-entry-content {
  font-size: 0.9rem;
  line-height: 1.45;
}

.lab-entry-intro > *:first-child,
.lab-entry-content > *:first-child {
  margin-top: 0;
}

/* =========================================================
   LAB: filtering animation
========================================================= */

.lab-entry.is-hidden-by-filter {
  opacity: 0;
  pointer-events: none;
  transform: translate3d(-1rem, -0.5rem, 0) scaleY(0.05);
  transform-origin: top left;
  z-index: 0;
}

.lab-entry.is-hidden-by-filter.hide-to-right {
  transform: translate3d(1rem, -0.5rem, 0) scaleY(0.05);
}

.lab-entry.is-hidden-by-filter.hide-to-left {
  transform: translate3d(-1rem, -0.5rem, 0) scaleY(0.05);
}

/* =========================================================
   LAB: pagination
========================================================= */

.navigation.pagination {
  margin-top: 2rem;
  padding-top: 1.5rem;
  border-top: 1px solid currentColor;
}

.nav-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

/* =========================================================
   LAB: mobile
========================================================= */

@media (max-width: 768px) {
  .lab-filter-menus {
    flex-direction: column;
    gap: 1rem;
  }

  .lab-filter-menu {
    width: 100%;
  }

  .lab-filters,
  .lab-type-filters {
    gap: 0.65rem 1rem;
  }

  .lab-page,
  .lab-page-wrapper,
  .tax-lab,
  .single-lab {
    --lab-pad: 1rem;
    --lab-gap: 1rem;
  }

  .lab-intro-card {
    padding: 1.1rem;
  }
}

.lab-entry.lab-intro-card {
  background: transparent !important;
  background-color: transparent !important;
}

.article.lab-article .text-body.article-grid {
  background: var(--labhub-bg);
}

.article.lab-article .abstract.article-grid {
  background: var(--labhub-bg) !important;
}

body.single-parse_events main.event.lab-event {
  background-color: transparent !important;
}

.lab-page .lab-masonry {
	visibility: hidden;
}

body.lab-masonry-ready .lab-page .lab-masonry {
	visibility: visible;
}

body.single-lab .event,
body.single-lab .conference,
body.single-parse_events main.event.lab-event {
  background-color: transparent !important;
}

.single-lab main {
  background: none !important;
  background-image: none !important;
}

.single-lab .article-foot.lab-article-foot,
.single-lab .article-foot.lab-article-foot .article-bios,
.single-lab .article-foot.lab-article-foot .article-grid {
  background: var(--labhub-bg) !important;
}

/* =========================================================
   LAB: event schedule
========================================================= */

.lab-page .event-schedule,
.lab-page-wrapper .event-schedule,
.tax-lab .event-schedule,
.single-lab .event-schedule,
body.single-parse_events .event-schedule {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

.lab-page .event-schedule-day,
.lab-page-wrapper .event-schedule-day,
.tax-lab .event-schedule-day,
.single-lab .event-schedule-day,
body.single-parse_events .event-schedule-day {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

.lab-page .event-schedule-day .event-schedule-item,
.lab-page-wrapper .event-schedule-day .event-schedule-item,
.tax-lab .event-schedule-day .event-schedule-item,
.single-lab .event-schedule-day .event-schedule-item,
body.single-parse_events .event-schedule-day .event-schedule-item {
  position: relative;
  margin: 0;
  width: 100%;
  padding: 0 1em;

  display: grid;
  grid-template-columns: 96px auto;
  gap: 1em;

  border-top: 1px solid silver;

  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

.lab-page .event-schedule-day .event-schedule-item *,
.lab-page-wrapper .event-schedule-day .event-schedule-item *,
.tax-lab .event-schedule-day .event-schedule-item *,
.single-lab .event-schedule-day .event-schedule-item *,
body.single-parse_events .event-schedule-day .event-schedule-item * {
  background-color: transparent !important;
  background-image: none !important;
}

.lab-page .event-schedule-day .keynote,
.lab-page-wrapper .event-schedule-day .keynote,
.tax-lab .event-schedule-day .keynote,
.single-lab .event-schedule-day .keynote,
body.single-parse_events .event-schedule-day .keynote,
.lab-page .event-schedule-day .event-schedule-item.break,
.lab-page-wrapper .event-schedule-day .event-schedule-item.break,
.tax-lab .event-schedule-day .event-schedule-item.break,
.single-lab .event-schedule-day .event-schedule-item.break,
body.single-parse_events .event-schedule-day .event-schedule-item.break {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

/* LAB: schedule date headers transparent */

.lab-page .event-schedule-day .date,
.lab-page-wrapper .event-schedule-day .date,
.tax-lab .event-schedule-day .date,
.single-lab .event-schedule-day .date,
body.single-parse_events .event-schedule-day .date {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

.lab-page .event-schedule-day .date *,
.lab-page-wrapper .event-schedule-day .date *,
.tax-lab .event-schedule-day .date *,
.single-lab .event-schedule-day .date *,
body.single-parse_events .event-schedule-day .date * {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

/* =========================================================
   LAB: filter bar alignment fine-tune
========================================================= */

.lab-filter-row .lab-filter-menus {
  transform: translateX(2rem);
}

@media (max-width: 768px) {
  .lab-filter-row .lab-filter-menus {
    transform: translateX(1rem);
}
}

.lab-description-row {
  padding: 3rem 0;
  align-items: center;
}

.lab-description-row .lab-title-column {
  display: flex;
  align-items: center;
}

.lab-description-row .lab-page-title {
  font-family: inherit;
  font-weight: normal;
  font-size: clamp(4rem, 8vw, 9rem);
  line-height: 0.9;
  letter-spacing: -0.04em;
  margin: 0;
  text-align: left;
}

@media (max-width: 768px) {

  .lab-description-row {
    display: block;
    padding: 2rem 1rem;
  }

  .lab-description-row .lab-title-column {
    display: block;
    margin-bottom: 1rem;
  }

  .lab-description-row .lab-page-title {
    font-size: 3.5rem;
    line-height: 1;
    letter-spacing: -0.02em;
  }
}

@media (min-width: 1024px) {
  .article-head .inner .front-matter {
    padding-top: 3rem;
  }
}

body.single-parse_events header.event-head.article-grid > .inner {
  padding-top: 3rem !important;
}

.back-to-lab.article-context-lab {
  margin-bottom: 0 !important;
}

/* =========================================================
   LAB: override external .event background on inner header
========================================================= */

body.single-parse_events .inner.event,
body.single-parse_events header.event-head .inner.event,
body.single-parse_events .event-head.article-grid > .inner.event,
body.single-parse_events main.event .inner.event,
body.single-parse_events main.lab-event .inner.event {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

/* =========================================================
   LAB: auto-height event header
========================================================= */

body.single-parse_events main.lab-event header.event-head,
body.single-parse_events main.lab-event .event-head.article-grid,
body.single-parse_events main.lab-event .event-head.article-grid > .inner.event {
  height: auto !important;
  min-height: 0 !important;
}

.single-parse_events .event-body.grid-with-nav,
.single-parse_events .event-body.grid-with-nav > main,
.single-parse_events .event-body.grid-with-nav > main > div,
.single-parse_events .event-schedule,
.single-parse_events .side-nav {
  background: transparent !important;
}

/* =========================================================
   LAB: open call header/body shared alignment
========================================================= */

#primary.content-area.lab-event.lab-article .event-head.article-grid,
#primary.content-area.lab-event.lab-article .oc-body.article-grid {
  display: grid !important;
  grid-template-columns: minmax(2rem, 1fr) minmax(0, 1200px) minmax(2rem, 1fr) !important;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

#primary.content-area.lab-event.lab-article .event-head.article-grid > .inner.event,
#primary.content-area.lab-event.lab-article .oc-body.article-grid > .inner.event {
  grid-column: 2 !important;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

#primary.content-area.lab-event.lab-article .oc-body.article-grid {
  padding-top: 3rem !important;
  padding-bottom: 4rem !important;
}

/* =========================================================
   LAB: open call body text should align with title/tab column
========================================================= */

#primary.content-area.lab-event.lab-article .oc-body.article-grid > .inner.event {
  display: grid !important;
}

#primary.content-area.lab-event.lab-article .oc-body.article-grid > .inner.event > * {
  grid-column: 2 / -1 !important;
}

/* =========================================================
   LAB events only: force black text
========================================================= */

body.single-parse_events main.lab-event,
body.single-parse_events main.lab-event * {
  color: #000 !important;
}

body.single-parse_events main.lab-event a {
  color: #000 !important;
}

body.single-parse_events main.lab-event svg,
body.single-parse_events main.lab-event svg * {
  color: #000 !important;
  fill: currentColor !important;
  stroke: currentColor;
}

/* =========================================================
   LAB events only: black schedule lines
========================================================= */

body.single-parse_events main.lab-event .event-schedule-day .event-schedule-item,
body.single-parse_events main.lab-event .event-schedule-day .keynote,
body.single-parse_events main.lab-event .event-schedule-day .event-schedule-item.break {
  border-top-color: #000 !important;
  border-bottom-color: #000 !important;
}

body.single-parse_events main.lab-event .event-schedule-day .date {
  border-top-color: #000 !important;
  border-bottom-color: #000 !important;
}

body.single-parse_events main.lab-event .event-schedule,
body.single-parse_events main.lab-event .event-schedule-day,
body.single-parse_events main.lab-event .event-schedule-item,
body.single-parse_events main.lab-event .date {
  border-color: #000 !important;
}

/* =========================================================
   LAB: hide tip class
========================================================= */

.lab-page .tip,
.lab-page-wrapper .tip,
.tax-lab .tip,
.single-lab .tip,
body.single-parse_events main.lab-event .tip {
  display: none !important;
}

/* =========================================================
   LAB: explicit list support
========================================================= */

.lab-description ul,
.lab-description ol,
.lab-entry-intro ul,
.lab-entry-intro ol,
.lab-entry-content ul,
.lab-entry-content ol,
.article.lab-article .text-body ul,
.article.lab-article .text-body ol,
.article.lab-article .abstract ul,
.article.lab-article .abstract ol,
.single-lab .event-body ul,
.single-lab .event-body ol,
body.single-parse_events main.lab-event ul,
body.single-parse_events main.lab-event ol {
  margin-top: 0.75em;
  margin-bottom: 1em;
  padding-left: 1.4em;
}

.lab-description ul,
.lab-entry-intro ul,
.lab-entry-content ul,
.article.lab-article .text-body ul,
.article.lab-article .abstract ul,
.single-lab .event-body ul,
body.single-parse_events main.lab-event ul {
  list-style-type: disc;
}

.lab-description ol,
.lab-entry-intro ol,
.lab-entry-content ol,
.article.lab-article .text-body ol,
.article.lab-article .abstract ol,
.single-lab .event-body ol,
body.single-parse_events main.lab-event ol {
  list-style-type: decimal;
}

.lab-description li,
.lab-entry-intro li,
.lab-entry-content li,
.article.lab-article .text-body li,
.article.lab-article .abstract li,
.single-lab .event-body li,
body.single-parse_events main.lab-event li {
  margin-bottom: 0.45em;
}

.lab-description li::marker,
.lab-entry-intro li::marker,
.lab-entry-content li::marker,
.article.lab-article .text-body li::marker,
.article.lab-article .abstract li::marker,
.single-lab .event-body li::marker,
body.single-parse_events main.lab-event li::marker {
  color: currentColor;
}

.lab-description ul ul,
.lab-description ol ol,
.lab-description ul ol,
.lab-description ol ul,
.lab-entry-intro ul ul,
.lab-entry-intro ol ol,
.lab-entry-intro ul ol,
.lab-entry-intro ol ul,
.lab-entry-content ul ul,
.lab-entry-content ol ol,
.lab-entry-content ul ol,
.lab-entry-content ol ul,
.article.lab-article .text-body ul ul,
.article.lab-article .text-body ol ol,
.article.lab-article .text-body ul ol,
.article.lab-article .text-body ol ul,
.article.lab-article .abstract ul ul,
.article.lab-article .abstract ol ol,
.article.lab-article .abstract ul ol,
.article.lab-article .abstract ol ul,
.single-lab .event-body ul ul,
.single-lab .event-body ol ol,
.single-lab .event-body ul ol,
.single-lab .event-body ol ul,
body.single-parse_events main.lab-event ul ul,
body.single-parse_events main.lab-event ol ol,
body.single-parse_events main.lab-event ul ol,
body.single-parse_events main.lab-event ol ul {
  margin-top: 0.45em;
  margin-bottom: 0.45em;
}

/* =========================================================
   LAB: force visible list bullets / numbers
========================================================= */

.lab-page ul,
.lab-page ol,
.lab-page-wrapper ul,
.lab-page-wrapper ol,
.tax-lab ul,
.tax-lab ol,
.single-lab ul,
.single-lab ol,
body.single-parse_events main.lab-event ul,
body.single-parse_events main.lab-event ol {
  list-style-position: outside !important;
  padding-left: 1.5em !important;
  margin-left: 0 !important;
}

.lab-page ul,
.lab-page-wrapper ul,
.tax-lab ul,
.single-lab ul,
body.single-parse_events main.lab-event ul {
  list-style-type: disc !important;
}

.lab-page ol,
.lab-page-wrapper ol,
.tax-lab ol,
.single-lab ol,
body.single-parse_events main.lab-event ol {
  list-style-type: decimal !important;
}

.lab-page li,
.lab-page-wrapper li,
.tax-lab li,
.single-lab li,
body.single-parse_events main.lab-event li {
  display: list-item !important;
}

.lab-page li::marker,
.lab-page-wrapper li::marker,
.tax-lab li::marker,
.single-lab li::marker,
body.single-parse_events main.lab-event li::marker {
  color: currentColor !important;
  font-size: 1em !important;
}
