/*
Font sizes based on the 9-times table

unused small size, 9px = 0.5rem
Small intermediate, 13.5px = 0.75rem
Base size, grid gutter, 18px = 1rem
Body text, 27px = 1.5rem
Large size, 45px = 2.5rem
unused intermediate, 63px = 3.5rem
Title size, 72px = 4rem
*/

:root {
  --font-stack--main: "Favorit Std", sans-serif;
  --font-stack--header: "Favorit Std", sans-serif;
  --font-stack--monospace: monospace;
  --font-stack--article: "BradfordLL", "Times New Roman", serif;
  --font-size--smaller: 0.65rem;
  --font-size--small: 0.75rem;
  --font-size--base: 1rem;
  --font-size--body: 1.5rem;
  --font-size--large: 2.2rem;
  --font-size--title: 2.7rem;
  --line-height: 1.35;
  --line-height--compact: 1;
  --margin--text: calc((1em * var(--line-height)) * 0.5);
  --padding--horizontal: 0.6rem;
  --padding--vertical: 0.3rem;
  --padding--grid-gutter: 1rem;
  --height--header: 3.4rem;
  --height--header--negative: -3.4rem;
  --height--header-open: 0rem;
  --height--footer: 17rem;
  --width--header-program: 42vw;
  --color--active-link: gray;
  --color--text: #121212;
  --color--text-light: white;
  --color--text--page-navigation: #e0e0e0;
  --color--background: #f7f7f7;
  --color--background--page-navigation: #222;
  --color--background--main: hsl(16deg 56% 53%);
  --color--background--main--light: hsl(16deg 56% 73%);
  --color--background--secondary: rgb(151, 208, 157);
  --color--header-text--main: var(--color--text);
  --color--header-text--secondary: var(--color--text);
}

@media all and (min-width: 700px) {
  :root {
    --font-size--title: 4rem;
  }
}

::selection {
  background: yellow;
}

* {
  box-sizing: border-box;
}

body,
html {
  font-size: var(--font-size--base);
}

body {
  font-family: var(--font-stack--main);
  font-feature-settings: "ss04" on, "ss05" on;
  line-height: var(--line-height);
  background: var(--color--background);
  position: relative;
  margin: 0;
}

a {
  color: inherit;
  text-decoration: none;
}

a.external::after {
  content: "\00A0↗︎";
}

a.current {
  opacity: 0.5;
}

h1,
h2,
h3,
h4 {
  font-weight: 400;
}

h1 {
  font-size: var(--font-size--large);
  line-height: 1;
}

h2 {
  font-size: var(--font-size--base);
}

h3 {
  font-size: var(--font-size--base);
}

h1:first-child {
  margin-top: 0;
}

figure {
  margin-top: 0;
  margin-bottom: 0;
}

.hide {
  display: none;
}

.text-link {
  border-bottom: 1px dotted;
}

.text-link:hover {
  border-bottom: 1px solid;
}

.text-link:active {
  color: var(--color--active-link);
}

.symbol {
  display: block;
  float: left;
  width: 0.9em;
  height: 0.9em;
}

.link--internal {
  /* background: var(--color--background--main--light); */
}

.link--file {
  /* background: green; */
}

.ticket-scroller > * + * {
  margin-left: var(--margin--text);
}

.ticket-scroller__item {
  min-width: calc(66.7vw - var(--margin--text));
}

.main-content {
  background-color: var(--color--background);
  position: relative;
  z-index: 1;
  padding: var(--padding--vertical) var(--padding--horizontal)
    calc(var(--font-size--title) * 1.5);
  min-height: 80vh;
}

.main-content > * + * {
  margin-top: calc(var(--margin--text) * 2);
}

.main-content h2 {
  font-size: var(--font-size--body);
}

.main-content > *:first-child {
  margin-top: 0;
}

.main-content--front-page {
  background: white;
}

.main-content--event {
  background: var(--color--background--main--light);
}

.main-content--event__details {
  font-size: var(--font-size--body);
}

.main-content--context {
  background: var(--color--text);
  color: var(--color--background);
}

.main-content--article {
  font-family: var(--font-stack--article);
}

.main-content--product .credits-list__credit__for {
  flex-basis: 7em;
  flex-shrink: 0;
}

.carousel {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  overflow-x: scroll;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x mandatory;
}

.carousel .media-figure {
  flex-shrink: 0;
  max-width: 90vw;
  scroll-snap-align: start;
  padding-left: var(--padding--horizontal);
  padding-right: var(--padding--horizontal);
}

.carousel .media-figure__image {
  max-height: 70vh;
  width: 100%;
}

.text--compact {
  line-height: var(--line-height--compact);
}

.text--small {
  font-size: var(--font-size--small);
}

.text--normal {
  font-size: var(--font-size--base);
}

.text--body {
  font-size: var(--font-size--body);
}

.text--large {
  font-size: var(--font-size--large);
}

.text--title {
  font-size: var(--font-size--title);
}

.text__note {
  counter-increment: reference;
  display: flex;
  font-size: var(--font-size--base);
  max-width: 80%;
}

.text__note--footnote:target {
  background: yellow;
}

.text__note__reference-number {
  flex-basis: 2em;
}

.text__note__reference-number__link span {
  display: none;
}

.text__note__reference-number__link::after {
  content: counter(reference);
}

.text__note *:first-of-type {
  margin-top: 0;
}

.text__reference:target {
  background: yellow;
}

.text__reference span {
  display: none;
}

.text__reference::after {
  counter-increment: note;
  content: counter(note);
}

.text__introduction {
  font-size: calc(var(--font-size--large) * 0.9);
  line-height: var(--line-height--compact);
}

.text__review {
  margin-top: calc(var(--margin--text) * 4);
  margin-bottom: calc(var(--margin--text) * 4);
  margin-right: 0;
  margin-left: calc(var(--margin--text) * 4);
  border-top: 2px solid;
}

* > .text__review:first-child {
  margin-top: calc(var(--margin--text) * 2);
}

* + .text__review:last-of-type {
  margin-bottom: calc(var(--margin--text) * 4);
}

.text__review__quote {
  margin: var(--margin--text) 0 0 0;
}

.text__review__byline {
  margin: 0;
  font-style: italic;
}

.text__figure__image {
  margin: 0 auto;
}

.footer {
  background-color: var(--color--text);
  font-family: var(--font-stack--main);
  padding: var(--padding--vertical) var(--padding--horizontal);
  color: var(--color--text-light);
  min-height: var(--height--footer);
}

.footer__nav-list {
  padding: 0;
  list-style: none;
  columns: 2;
}

.footer__social-media {
  margin-top: 12rem;
  margin-bottom: 1rem;
}

.footer__social-media__link {
  margin-right: 0.3em;
}

.newsletter-form {
  display: flex;
}

.form-input,
.form-button {
  background: transparent;
  color: inherit;
  font-family: inherit;
  font-size: inherit;
  border: 2px solid;
  padding: 0.3em 0.6em;
  display: inline-block;
}

.form-input {
  border-top: none;
  border-left: none;
  border-right: none;
  min-width: 13em;
  padding: 0.3em 0.1em;
  flex-grow: 1;
  margin-right: 0.4em;
}

.form-button {
  border-radius: 1em;
}

.form-input:focus,
.form-button:focus {
  outline: none;
  border-color: #7684ff;
  color: #7684ff;
}

.navigation-link:hover {
  opacity: 0.6;
}

.navigation-link:active {
  opacity: 0.2;
}

.main-navigation {
  list-style: none;
  line-height: var(--line-height--compact);
  margin: 0;
  padding: var(--padding--vertical) 0;
  font-size: var(--font-size--large);
  font-family: var(--font-stack--main);
}

.main-navigation a {
  display: block;
}

.main-navigation__item {
  border-top: 1px solid;
  padding: 0.1em 0;
}

/* .main-navigation__item:first-child {
  border-top: none;
} */

.main-navigation__item__link {
  text-indent: -0.9em;
  margin-left: 0.9em;
}

.main-navigation__item__sub-nav {
  list-style: none;
  padding: 0.1em 0 0.5em 0.92em;
}

.main-navigation__item__sub-nav__item {
  font-size: var(--font-size--body);
}

.main-navigation__item__symbol::after {
  content: "";
}

.main-navigation__item--has-children .main-navigation__item__sub-nav {
  display: none;
}

.main-navigation__item--has-children .main-navigation__item__symbol::after {
  content: "→";
}

.main-navigation__item--has-children.open
  .main-navigation__item__symbol::after {
  content: "↓";
}

.main-navigation__item--has-children.open .main-navigation__item__sub-nav {
  display: block;
}

.header-sections.mini {
  height: var(--height--header);
  /* transition: height 100ms ease; */
  overflow-y: hidden;
}

/* .header-sections:not(.open).mini:hover {
  height: calc(0.2rem + var(--height--header));
} */

.header-sections {
  background-color: var(--color--text);
  color: var(--color--text-light);
  position: relative;
  z-index: 1;
  height: calc(var(--height--header-open) + var(--height--header));
}

.header-sections.open {
  height: calc(100vh + calc(var(--height--header) * -2));
}

.header-section {
  position: absolute;
  top: var(--height--header);
}

.header-section__heading {
  line-height: 1;
  position: absolute;
  width: 33.3333%;
  font-size: var(--font-size--body);
  font-family: var(--font-stack--header);
  margin-top: 0;
  height: calc(var(--height--header));
  top: var(--height--header--negative);
  background: transparent;
}

.header-section__heading a {
  display: block;
  height: calc(var(--height--header-open) + var(--height--header));
  width: 100%;
  padding: var(--padding--vertical) var(--padding--horizontal);
}

.header-section__heading a:active {
  opacity: 0.7;
}

.header-section__content {
  padding: var(--padding--vertical) var(--padding--horizontal);
  background: rgba(255, 0, 0, 0.5);
  min-height: 100%;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

.header-section:not(.open) .header-section__content {
  pointer-events: none;
}

.header-sections.open .header-section:not(.open) .header-section__content {
  display: none;
}

.header-sections.open .header-section__heading a,
.header-section--menu.open .header-section__heading a {
  height: var(--height--header);
}

.header-section .header-section__content {
  display: block;
  overflow: hidden;
  height: var(--height--header-open);
}

.header-section.open .header-section__content {
  height: 100%;
  width: 100%;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

.header-section.open .header-section__heading {
  /* text-decoration: underline; */
}

.header-section.open .header-section__heading a {
  /* text-decoration: underline; */
  font-weight: 200;
}

.header-section--calendar {
  width: 33.3333%;
  z-index: 3;
}

.header-section--calendar.open {
  height: calc(100vh + calc(var(--height--header) * -3));
  width: 100%;
  z-index: 2;
}

.home-page .header-section--calendar.open {
  height: calc(100vh + calc(var(--height--header) * -3));
}

.header-section--calendar .header-section__heading {
  width: 100%;
}

.header-section--calendar .header-section__heading,
.header-section--calendar .header-section__content {
  background: var(--color--background--main);
  color: var(--color--header-text--main);
}

.header-section--program.open {
  height: 100%;
  height: calc(100vh + calc(var(--height--header) * -3));
}

.home-page .header-section--program.open {
  height: calc(100vh + calc(var(--height--header) * -3));
}

.header-section--program {
  width: 100%;
  z-index: 2;
}

.header-section--program .header-section__heading {
  width: 33.3333%;
  left: 33.3333%;
}

.header-section--program .header-section__heading,
.header-section--program .header-section__content {
  background: var(--color--background--secondary);
  color: var(--color--header-text--secondary);
}

.header-section--menu {
  background: var(--color--text);
  width: 33.3333%;
  margin-left: 66.6666%;
  z-index: 3;
}

.header-section--menu .header-section__content {
  height: var(--height--header-open);
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}

.header-section--menu .header-section__heading,
.header-section--menu .header-section__content {
  background: var(--color--text);
  width: 100%;
}

.header-section--menu.open {
  z-index: 10;
  height: calc(100vh + calc(var(--height--header) * -3));
}

.header-section--menu.open .header-section__content {
  bottom: 0;
  height: 100%;
  width: 300%;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  margin-left: -200%;
}

.wrapper {
  display: flex;
  flex-direction: column;
  position: relative;
  z-index: 2;
}

.logo-bar {
  display: flex;
  justify-content: space-between;
  padding: var(--padding--vertical) var(--padding--horizontal);
  line-height: 1;
  background: white;
  font-size: var(--font-size--large);
  font-family: var(--font-stack--header);
}

.logo-bar__link {
  color: var(--color--text);
}

body:not(.home-page) .logo-bar {
  width: 100%;
  position: sticky;
  bottom: 0;
  z-index: 10;
  order: 2;
}

.header-program {
  display: flex;
  overflow-x: scroll;
  -webkit-overflow-scrolling: touch;
  flex-direction: row;
  align-items: flex-start;
  margin: 0 calc(var(--padding--horizontal) * -1);
  padding: var(--padding--vertical) var(--padding--horizontal);
}

.header-program__item {
  min-width: 11vw;
  flex-basis: var(--width--header-program);
  font-size: var(--font-size--base);
  position: relative;
  height: 100%;
  display: flex;
  flex-direction: column;
  margin: 0 var(--padding--horizontal);
  flex-shrink: 0;
}

.header-program__item a {
  display: block;
}

.header-program__item a:active {
  opacity: 0.7;
}

.header-program::after {
  display: block;
  content: "\00a0";
  min-width: 10vw;
  height: 100%;
}

.header-program__item__dates {
  margin-bottom: 0.3rem;
  font-size: var(--font-size--small);
}

.header-program__item--program-title {
  font-size: var(--font-size--body);
  margin: 0;
  line-height: var(--line-height--compact);
  margin-top: -0.18em;
}

.header-program__item__image {
  object-fit: cover;
  height: 27vh;
  width: 100%;
  margin-bottom: calc(var(--margin--text) * 0.75);
  filter: grayscale(1);
  mix-blend-mode: multiply;
  z-index: 1;
  display: block;
}

.header-program__item:hover .header-program__item__image {
  filter: grayscale(0);
  mix-blend-mode: normal;
}

.header-calendar {
  line-height: 1.4;
  padding: var(--padding--vertical) 0;
}

.header-calendar > * + * {
  margin: 1rem 0;
}

.header-calendar__entry {
  border-top: 2px solid;
  padding-left: 0.1rem;
}

.header-calendar__entry__day {
  padding: 0.3rem 0.1rem 0.8rem 0.1rem;
  margin: 0;
}

.header-calendar__entry__event {
  padding: 0 0.1rem;
  display: flex;
  flex-wrap: wrap;
  position: relative;
  z-index: 1;
}

.header-calendar__entry__event__meta {
  font-size: var(--font-size--small);
}

.header-calendar__entry__event--link {
  color: inherit;
  border-top: 1px solid;
}

.header-calendar__entry__event--link:hover {
  background: var(--color--background--main--light);
  border-top-style: solid;
  z-index: 10;
}

.header-calendar__entry__event--link:active {
  opacity: 0.7;
}

.header-calendar__entry__event__time {
  padding: 0.3rem 0 0.1rem 0;
  width: 4rem;
  flex-shrink: 0;
  z-index: 1;
  font-feature-settings: "tnum";
}

.event__meta__date--cancelled,
.event__meta__time--cancelled,
.event__time--cancelled,
.production__period--cancelled {
  text-decoration: line-through;
}

.header-calendar__entry__event__title {
  padding: 0.3rem 0.2rem 0.1rem 0;
  flex-grow: 1;
  flex-basis: calc(100% - 4rem);
  z-index: 1;
}

.header-calendar__entry__event__location {
  padding-bottom: 0.5rem;
  flex-basis: calc(100% - 4rem);
  margin-left: 4rem;
  font-size: var(--font-size--small);
  z-index: 1;
}

.location__symbol::after {
  content: "";
}

.event__symbol::after {
  content: "";
}

.event__meta {
  display: flex;
  flex-direction: column;
}

.event__meta__tickets {
  font-style: italic;
}

.event-type {
  white-space: nowrap;
}

.event__connected-to__node {
  font-style: italic;
}

.event__connected-to__node:not(:last-child)::after {
  content: ", ";
}

.event-connections + .event-types::before {
  content: " \2013 ";
}

.content__title {
  line-height: 1;
  font-size: var(--font-size--title);
  font-family: var(--font-stack--header);
  padding-top: 0.08em;
  margin-top: 0;
  margin-left: -0.04em;
  margin-bottom: 0.5em;
}

.content__title h1 {
  font-size: var(--font-size--title);
  margin-bottom: 0;
}

.content__title--article {
  font-family: var(--font-stack--serif);
}

.article__text {
  margin-left: 0.08rem;
  font-size: var(--font-size--body);
  counter-reset: reference;
  counter-reset: note;
}

.article__text p {
  margin: calc(var(--line-height) * 0.667em) 0;
}

.article__text h2 {
  font-weight: normal;
  margin-top: calc(var(--line-height) * 1em);
  margin-bottom: 0;
  font-size: var(--font-size--large);
}

.article__text h3 {
  font-weight: bold;
  margin-top: calc(var(--line-height) * 1.5em);
  margin-bottom: 0;
  font-size: var(--font-size--body);
  font-family: var(--font-stack--main);
}

.embed {
  margin-top: calc(var(--line-height) * 1em);
}

.article__text b,
.article__text strong {
  font-weight: bold;
  font-family: var(--font-stack--main);
}

.article__text h2 + h3 {
  margin-top: calc(var(--line-height) * 1em);
}

.article__meta__categories {
  display: flex;
}

.article__meta__category {
  margin-right: 1ch;
}

.credits-list {
  list-style: none;
  padding: 0;
  margin-bottom: 0;
}

.credits-list:not(:first-of-type) {
  margin-top: var(--margin--text);
}

.credits-list__credit {
  display: flex;
}

.credits-list__credit__for {
  flex-basis: 12em;
  padding-right: var(--margin--text);
}

.pagination__link:not(:last-child)::after {
  content: " | ";
}

.ticket-scroller {
  display: flex;
  overflow-x: scroll;
  -webkit-overflow-scrolling: touch;
}

.person__countries__country::before {
  content: "(";
}

.person__countries__country::after {
  content: ")";
}

* + .premiere {
  display: block;
}

.production__periods {
  font-size: var(--font-size--body);
  margin: var(--margin--text) 0;
  line-height: 1.3;
}

.production__collaborations {
  font-size: var(--font-size--base);
  margin: var(--margin--text) 0;
  line-height: 1.3;
}

.production__events {
  margin: var(--margin--text) 0;
  padding-left: var(--padding--horizontal);
  padding-right: calc(var(--padding--horizontal) * 2);
}

.production__event {
  background: var(--color--background--main--light);
  background: white;
  position: relative;
  padding: var(--margin--text);
  padding-left: calc(var(--margin--text) * 3);
}

.production__event::before {
  content: "";
  position: absolute;
  top: var(--margin--text);
  left: var(--margin--text);
}

.production__event > * + * {
  margin-top: var(--margin--text);
}

.production__showings {
  padding-left: var(--padding--horizontal);
  padding-right: calc(var(--padding--horizontal) * 2);
}

.production__showings__separator {
  padding: var(--margin--text);
}

.production__showings__separator:first-child {
  padding-left: 0;
}

.production__showing {
  padding-top: var(--margin--text);
  padding-right: var(--margin--text);
  padding-bottom: calc(var(--margin--text) * 1.5);
  padding-left: calc(var(--margin--text) * 3);
  position: relative;
  background: white;
}

.production__showing::before {
  content: "";
  position: absolute;
  top: var(--margin--text);
  left: var(--margin--text);
}

.production__showing--past {
  /* text-decoration: line-through; */
  opacity: 0.5;
}

.production__showing--past::before {
  content: "";
}

.production__showing__date {
  margin-top: 0;
  margin-bottom: 0;
}

.production__showing__time {
  margin-top: 0.25em;
}

.production__showing__ticket {
  margin-top: var(--margin--text);
}

.main-content .production__orbit {
  margin-top: 3rem;
}

.production__credits {
  margin-top: calc(var(--margin--text) * 4);
}

/* .production__credits .credits-list:first-child .credits-list__credit:first-child {
  border-color: var(--color--text);
} */

.production__credits .credits-list__credit {
  background: white;
  padding: var(--margin--text);
  /* margin-top: calc(var(--margin--text) * 0.5); */
}

.production__credits .credits-list__credit__for {
  flex-basis: 33.333%;
}

.production__credits .credits-list__credit__to {
  flex-basis: 66.666%;
}

.production__main-media img {
  max-height: 100vh;
  width: 100%;
}

.production__media {
  padding-top: 3rem;
  padding-bottom: 3rem;
  margin-bottom: calc(var(--margin--text) * 4);
}

.production-archive__year-header {
  position: sticky;
  top: 0;
  left: 0;
  background: var(--color--background);
}

.production-archive__production {
  border-top: 2px solid;
  display: grid;
  grid-template-columns: 1fr 4fr;
  grid-template-rows: auto;
  margin-top: calc(var(--margin--text) * 1.5);
  padding-top: calc(var(--margin--text) * 1.5);
}

.production-archive__production__media {
  grid-row-start: span 2;
  margin-right: var(--margin--text);
}

.production-archive__image {
  aspect-ratio: 1;
}

.letter-list__person {
  text-indent: -1ch;
  margin-left: 1ch;
}

.media-figure {
  padding: 0;
  margin-left: 0;
  margin-right: 0;
}

.media-figure__image {
  display: block;
  max-width: 100%;
  object-fit: cover;
  max-height: 70vh;
  width: 100%;
}

.media-figure__embed-container {
  position: relative;
  padding-bottom: 56.25%;
  height: 0;
  overflow: hidden;
  width: 100%;
  max-width: 100%;
  min-width: 80vw;
}

.media-figure__embed-container iframe,
.media-figure__embed-container object,
.media-figure__embed-container embed {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.media-figure__caption {
  font-size: var(--font-size--small);
  display: flex;
  gap: var(--padding--grid-gutter);
}

.media-figure__caption__credits {
  flex-grow: 0;
}

.media-figure__caption__download {
  flex-grow: 0;
  margin: var(--margin--text) 0;
  opacity: 0.3;
}

@supports not (gap: 0) {
  .media-figure__caption__download:not(:first-child) {
    margin-left: var(--padding--grid-gutter);
  }
}

.media-figure__caption__download:hover {
  /* text-decoration: underline; */
  opacity: 0.6;
}

.media-figure__caption__download-link {
  font-size: var(--font-size--smaller);
}

.media-figure__caption__credits .credits-list {
  list-style: none;
  margin: var(--margin--text) 0;
  padding: 0;
}

.media-figure__caption__credits .credits-list__credit {
  display: block;
}

.page-navigation {
  font-size: var(--font-size--body);
  border: 2px solid var(--color--background--page-navigation);
  border-left: none;
  border-right: none;
  background: white;
  padding: calc(var(--padding--vertical) + 0.3rem)
    calc(var(--padding--horizontal) + 0.08rem);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  list-style: none;
  white-space: nowrap;
  padding-right: 4rem;
  margin: 0;
}

.page-navigation__item {
  margin-right: 1em;
  display: inline-block;
}

.page-navigation__item__link.current {
  opacity: 0.5;
}

.page-navigation__item__link:not(.current):hover {
  color: var(--color--text);
}

.anchor-navigation {
  font-size: var(--font-size--body);
  font-feature-settings: "tnum";
  padding: calc(var(--padding--vertical) + 0.3rem) 0;
  list-style: none;
  padding-right: 2rem;
  margin: 0;
}

/* Components */

.front-page-card {
  padding: 0 0 0.5rem 0;
  margin-bottom: 2rem;
}

.front-page-card .media-figure__image {
  width: 100%;
}

.front-page-card * + * {
  margin-top: 0.5rem;
  margin-bottom: 0;
}

.front-page-card > *:first-child {
  margin: 0;
}

.front-page-card__title {
  padding-right: 1em;
  margin-top: calc(var(--margin--text) / 7);
  line-height: var(--line-height--compact);
}

.card--light {
  border-color: white;
  color: var(--color--text);
}

.card--preview {
  background: white;
  margin-top: var(--margin--text);
  padding: calc(var(--margin--text) * 2);
  min-height: 10rem;
  display: flex;
  flex-direction: column;
  line-height: calc(var(--line-height) * 0.85);
}

.card--event {
  background: var(--color--background--main--light);
}

.card--preview__media {
  order: 1;
  margin-bottom: 0.4em;
}

.card--preview__media__caption {
  display: none;
}

.card--preview__type {
  margin-top: 0.3rem;
  order: 3;
  font-size: var(--font-size--base);
}

.card--preview__title {
  margin-top: 0.2rem;
  font-size: var(--font-size--body);
  order: 3;
}

.card__link {
  display: block;
}

.card__link:hover {
  opacity: 0.7;
}

.card__link:active {
  opacity: 0.9;
  color: var(--color--active-link);
}

.ticker {
  font-size: var(--font-size--title);
  width: auto;
  margin: 2rem calc(var(--padding--horizontal) * -1);
  overflow: hidden;
}

.ticker + .ticker {
  margin-top: 0;
}

.ticker__symbol {
  text-align: center;
  margin: 0 0.5rem;
}

.ticker__symbol::after {
  content: "";
}

.ticker__inner {
  width: max-content;
  display: flex;
  flex-wrap: nowrap;
  transform: translate3d(0%, 0, 0);
  animation: marquee 5s linear infinite;
  animation-play-state: running;
}

.ticker__inner:hover {
  animation-play-state: paused;
}

.ticker__inner__item {
  white-space: nowrap;
}

@keyframes marquee {
  0% {
    transform: translate3d(0%, 0, 0);
  }

  100% {
    transform: translate3d(-20%, 0, 0);
  }
}

/* Grid */
:root {
  --grid-column-base-count: 18;
  --grid-gutter-width: 1.2rem;
  --grid-cell-size: calc((100% - 20.4rem) / var(--grid-column-base-count));
  --grid-cell-with-gutter: calc(
    var(--grid-cell-size) + var(--grid-gutter-width)
  );
}

.grid {
  display: grid;
  grid-template-columns: repeat(18, var(--grid-cell-size));
  grid-gap: var(--grid-gutter-width);
}

.grid--compact {
  grid-row-gap: calc(var(--margin--text) / 2);
}

.g-item {
  grid-area: span 9 / span 15;
  margin: 0;
  display: flex;
  flex-direction: column;
}

.g-item--full-width {
  grid-column-start: 1;
  grid-column-end: -1;
}

/* Utility classes */

.full-width {
  margin-right: calc(var(--padding--horizontal) * -1);
  margin-left: calc(var(--padding--horizontal) * -1);
}

.span-col-6 {
  grid-column: span 6;
}

.span-col-9 {
  grid-column: span 9;
}

.span-col-18 {
  grid-column: span 18;
}

.list-style-none {
  list-style: none;
  padding: 0;
}

@media (max-width: 40em) {
  :root {
    --font-size--base: 0.85rem;
  }

  .g-item:nth-child(even) {
    grid-column-end: -1;
    grid-column-start: 3;
  }

  .locale-switcher__link {
    font-size: var(--font-size--body);
    vertical-align: top;
    margin-top: 0.35em;
    display: inline-block;
  }
}

@media (min-width: 40em) {
  :root {
    --font-size--large: 2.5rem;
    --font-size--title: 3.5rem;
    --width--header-program: 22vw;
  }

  .ticket-scroller__item {
    min-width: 30%;
  }

  .header-program__item--program-title {
    font-size: var(--font-size--large);
    flex-basis: calc(var(--width--header-program) * 2);
  }

  .header-calendar__entry__event {
    padding-bottom: 0.3rem;
    flex-wrap: nowrap;
  }

  .header-calendar__entry__event__title {
    padding-bottom: 0.3rem;
    flex-grow: 1;
    flex-basis: auto;
  }

  .header-calendar__entry__event__location {
    padding: 0.3rem 0;
    flex-basis: auto;
    font-size: var(--font-size--base);
    min-width: calc(33.333vw - 1.4rem);
  }

  .production-archive__production {
    grid-template-columns: 1fr 5fr 3fr;
    grid-template-rows: auto;
  }

  .production-archive__production__media {
    grid-row: span 1;
    grid-column: span 1;
  }

  .production-archive__production__title {
    grid-column: span 1;
  }

  .production-archive__production__dates {
    grid-column: span 1;
  }

  .sm-show {
    display: block;
  }

  .sm-span-row-2 {
    grid-row: span 2;
  }

  .sm-span-row-3 {
    grid-row: span 3;
  }

  .sm-span-row-4 {
    grid-row: span 4;
  }

  .sm-span-row-5 {
    grid-row: span 5;
  }

  .sm-span-col-6 {
    grid-column: span 6;
  }

  .sm-span-col-9 {
    grid-column: span 9;
  }

  .sm-span-col-12 {
    grid-column: span 12;
  }

  .sm-col-1-2 {
    width: calc(100% / 2);
  }

  .sm-col-1-3 {
    width: calc(100% / 3);
  }

  .sm-col-2-3 {
    width: calc((100% / 3) * 2);
  }

  .header-section__heading {
    font-size: var(--font-size--large);
  }

  /* x-large */
  .g-item--x-large {
    grid-area: span 7 / span 13;
  }

  /* large */
  .g-item--large {
    grid-area: span 4 / span 10;
  }

  /* medium */
  .g-item--medium {
    grid-area: span 5 / span 7;
  }

  /* small */
  .g-item--small {
    grid-area: span 4 / span 5;
  }

  /* tiny */
  .g-item--tiny {
    grid-area: span 3 / span 4;
  }
}

@media (min-width: 60em) {
  :root {
    --width--header-program: 18vw;
    --font-size--base: 1.1rem;
  }

  .text__review {
    margin-right: 3em;
    margin-left: 3em;
  }

  .md-show {
    display: block;
  }

  .md-col-1-4 {
    width: calc(100% / 4);
  }

  .md-col-1-3 {
    width: calc((100% / 3) * 2);
  }

  .md-span-col-6 {
    grid-column: span 6;
  }

  .md-span-col-9 {
    grid-column: span 9;
  }

  .md-span-col-12 {
    grid-column: span 12;
  }

  .header-section--menu:not(.open) .header__contact {
    display: none;
  }

  .header__contact div > p:first-child {
    margin-top: var(--padding--vertical);
  }

  .header-section--menu.open .header-section__content {
    display: grid;
  }
}

@media (min-width: 80em) {
  :root {
    --width--header-program: 15vw;
    --font-size--base: 1.2rem;
  }
}

@media (min-width: 100em) {
  .xl-span-col-3 {
    grid-column: span 3;
  }

  .xl-span-col-4 {
    grid-column: span 4;
  }

  .xl-span-col-6 {
    grid-column: span 6;
  }
}

@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
  /* IE10+ CSS styles go here */
  .media-figure__image,
  .front-page-card .media-figure__image {
    width: auto;
  }

  .header-sections {
    overflow-y: scroll;
  }

  .header__contact {
    display: none;
  }

  .header-sections.open {
    height: 600px;
  }

  .header-section--program.open {
    height: 600px;
  }
}
