/* Readability overrides. Load after site.css and preferences.css.
   Small supporting text is increased by roughly 35–50%; large headings retain
   their existing hierarchy. The accessibility controls can scale these sizes. */

body {
  font-size: 18px;
  line-height: 1.65;
}

/* Let translated words and user-enlarged text use the space they need. */
:is(p, li, dd, label, button, .button, .text-link, .nav a,
    .footer a, .breadcrumbs, .partner-badge, .cs-pref-active) {
  overflow-wrap: anywhere;
  word-break: normal;
}

:is(button, input, select, .button) {
  max-inline-size: 100%;
}

:is(.header-inner, .header-controls, .nav, .card-bottom,
    .footer-links, .footer-languages, .footer-preferences) {
  min-inline-size: 0;
}

.header-inner {
  flex-wrap: wrap;
  padding-block: 12px;
  row-gap: 12px;
}

.header-controls,
.nav {
  flex-wrap: wrap;
}

.header-controls {
  max-inline-size: 100%;
}

.nav {
  column-gap: 22px;
  row-gap: 8px;
}

.nav a {
  display: inline-flex;
  align-items: center;
  min-block-size: 44px;
  font-size: 18px;
  line-height: 1.45;
}

.header-controls .language {
  max-width: 100%;
  max-inline-size: 100%;
  min-inline-size: 0;
  min-block-size: 48px;
  font-size: 16px;
  line-height: 1.5;
}

.js .menu-toggle {
  min-block-size: 48px;
  font-size: 16px;
  line-height: 1.45;
  white-space: normal;
}

.skip {
  font-size: 18px;
  line-height: 1.5;
}

/* Hero supporting copy and small editorial labels. */
.hero .intro,
.page-head .lead {
  font-size: 21px;
  line-height: 1.7;
}

.eyebrow,
.small-label {
  font-size: 15px;
  line-height: 1.55;
  letter-spacing: .06em;
}

.eyebrow:before,
.hero-chip span {
  flex-shrink: 0;
}

.hero-chip {
  font-size: 14px;
  line-height: 1.45;
  letter-spacing: .06em;
}

.feature-sticker strong {
  font-size: 22px;
  line-height: 1.35;
}

.feature-sticker small {
  font-size: 17px;
  line-height: 1.5;
  overflow-wrap: anywhere;
}

.intro-strip {
  font-size: 16px;
  line-height: 1.55;
  letter-spacing: .05em;
}

.intro-strip span {
  min-inline-size: 0;
  overflow-wrap: anywhere;
}

.intro-strip svg {
  flex-shrink: 0;
}

.section-head p,
.city-section p,
.booking-banner p {
  font-size: 18px;
  line-height: 1.7;
}

/* Controls remain comfortably readable and easy to tap. */
.button,
.filters button,
.cs-pref-button {
  min-block-size: 48px;
  font-size: 17px;
  line-height: 1.45;
  white-space: normal;
}

.text-link,
.reset-link {
  font-size: 17px;
  line-height: 1.55;
}

.text-link {
  display: inline-block;
  padding-block: 8px;
  min-block-size: 44px;
}

.filters label {
  font-size: 15px;
  line-height: 1.5;
  letter-spacing: .025em;
  margin-bottom: 7px;
}

.filters input,
.filters select {
  min-block-size: 48px;
  font-size: 18px;
  line-height: 1.5;
}

.result-count,
.meta-row {
  font-size: 17px;
  line-height: 1.6;
}

/* Cards and their venue/date metadata. */
.date-pill {
  max-inline-size: calc(100% - 28px);
  font-size: 15px;
  line-height: 1.45;
  white-space: normal;
  overflow-wrap: anywhere;
}

.show-card .location {
  font-size: 15px;
  line-height: 1.55;
  letter-spacing: .04em;
  overflow-wrap: anywhere;
}

.show-card h3 {
  font-size: 24px;
  line-height: 1.35;
}

.show-card .summary,
.partner-card p {
  font-size: 18px;
  line-height: 1.7;
}

.card-bottom small,
.card-bottom a {
  font-size: 16px;
  line-height: 1.55;
  overflow-wrap: anywhere;
}

.card-bottom a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-block-size: 44px;
  padding-block: 6px;
}

:is(.button, .nav a, .provider, .card-bottom a) > .icon {
  flex-shrink: 0;
}

.city-tile strong {
  font-size: 20px;
  line-height: 1.4;
}

.city-tile small {
  font-size: 15px;
  line-height: 1.5;
  overflow-wrap: anywhere;
}

.partner-badge {
  font-size: 16px;
  line-height: 1.5;
}

.partner-disclosure,
.prose .partner-disclosure {
  font-size: 18px;
  line-height: 1.7;
}

/* Reading text is enlarged without inflating already large page headings. */
.article-body > p,
.article-body section p,
.prose p {
  font-size: 21px;
  line-height: 1.8;
}

.article-body section h2,
.prose h2,
.ticket-card h2 {
  line-height: 1.3;
}

.breadcrumbs {
  font-size: 16px;
  line-height: 1.6;
}

.ticket-card > p {
  font-size: 18px;
  line-height: 1.7;
}

.provider strong {
  font-size: 18px;
  line-height: 1.5;
}

.provider small,
.ticket-card .disclosure {
  font-size: 15px;
  line-height: 1.6;
}

.details-box dt {
  font-size: 15px;
  line-height: 1.5;
  letter-spacing: .04em;
}

.details-box dd,
.side-note p {
  font-size: 18px;
  line-height: 1.7;
}

.details-box a,
.source-note,
.time-note {
  font-size: 17px;
  line-height: 1.7;
}

.details-box a {
  display: inline-block;
  min-block-size: 44px;
  padding-block: 8px;
}

/* Footer navigation should be as readable as the primary navigation. */
.footer p {
  font-size: 18px;
  line-height: 1.7;
}

.footer-links a {
  display: inline-flex;
  align-items: center;
  min-block-size: 44px;
  font-size: 16px;
  line-height: 1.6;
}

.footer-languages a,
.footer-preferences {
  font-size: 17px;
  line-height: 1.6;
}

.footer-languages a,
[data-open-cookie-settings],
[data-open-accessibility] {
  min-block-size: 48px;
}

.footer-bottom {
  font-size: 15px;
  line-height: 1.6;
}

/* Privacy choices and accessibility settings inherit the same readable scale. */
.cs-cookie-copy h2 {
  font-size: 24px;
  line-height: 1.35;
}

.cs-cookie-copy p,
.cs-pref-dialog p {
  font-size: 18px;
  line-height: 1.7;
}

.cs-pref-heading h2 {
  line-height: 1.35;
}

.cs-pref-section h3 {
  font-size: 22px;
  line-height: 1.4;
}

.cs-pref-active {
  font-size: 18px;
  line-height: 1.6;
}

.cs-pref-label,
.cs-pref-check {
  font-size: 18px;
  line-height: 1.6;
}

.cs-pref-check {
  min-block-size: 48px;
}

.cs-pref-dialog select {
  min-block-size: 48px;
  font-size: 18px;
  line-height: 1.5;
}

/* Avoid Latin-style tracking in scripts with joining or complex glyphs. */
html:lang(he) :is(.eyebrow, .small-label, .intro-strip, .show-card .location,
                  .details-box dt),
html:lang(ar) :is(.eyebrow, .small-label, .intro-strip, .show-card .location,
                  .details-box dt),
html:lang(hi) :is(.eyebrow, .small-label, .intro-strip, .show-card .location,
                  .details-box dt),
html:lang(ja) :is(.eyebrow, .small-label, .intro-strip, .show-card .location,
                  .details-box dt),
html:lang(zh) :is(.eyebrow, .small-label, .intro-strip, .show-card .location,
                  .details-box dt) {
  letter-spacing: 0;
}

@media (max-width: 760px) {
  .hero .intro,
  .page-head .lead,
  .article-body > p,
  .article-body section p,
  .prose p {
    font-size: 20px;
  }

  .hero .intro {
    max-inline-size: 100%;
  }

  .nav a {
    display: flex;
    font-size: 18px;
    min-block-size: 48px;
  }

  .cs-cookie-copy h2 {
    font-size: 24px;
  }
}

@media (max-width: 480px) {
  .filters {
    grid-template-columns: minmax(0, 1fr);
  }

  .filters > *,
  .filter-search,
  .filters button {
    grid-column: 1;
  }

  .details-box dl {
    grid-template-columns: minmax(0, 1fr);
  }

  .cs-pref-actions {
    flex-direction: column;
  }

  .cs-pref-actions .cs-pref-button {
    flex: auto;
  }
}
