/*
 * Proticket theme, v1.0 design system.
 *
 * Loads after tokens.css and the plugin's platform.css, so it owns page layout
 * and the public discovery pages, and maps third-party markup (WooCommerce,
 * the WordPress sign-in form) onto the same tokens. Every colour, size and
 * radius comes from tokens.css. Inventory and rules: docs/DESIGN.md.
 *
 * Breakpoints: 1050px tablet, 900px two-column collapse, 760px header wrap,
 * 600px phone.
 *
 * Sections
 *   1. Base            6. Home
 *   2. Layout          7. Event cards
 *   3. Header          8. Event and venue detail
 *   4. Page titles     9. What's on and archive
 *   5. Footer         10. Organiser portal and sign-in form
 *                     11. WooCommerce
 */

/* ========== 1. Base ========== */
*,
*:where(:not([class*="pt-c-"], [class*="pt-c-"] *))::before,
*:where(:not([class*="pt-c-"], [class*="pt-c-"] *))::after {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
  scroll-padding-top: var(--pt-space-5);
}
body {
  margin: 0;
  background: var(--pt-paper);
  color: var(--pt-ink);
  font-family: var(--pt-font-body);
  font-size: var(--pt-text-md);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
a:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  color: inherit;
  text-decoration: none;
}
button:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
input:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
select:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
textarea:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  font: inherit;
}
:focus-visible:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  outline: var(--pt-focus-width) solid var(--pt-focus);
  outline-offset: 4px;
}
img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  max-width: 100%;
}
.screen-reader-text {
  position: absolute !important; /* must win over any layout rule */
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}
.pt-skip {
  position: absolute;
  left: var(--pt-space-5);
  top: -100px;
  z-index: 1000;
  padding: var(--pt-space-3) var(--pt-space-4);
  border-radius: var(--pt-radius-s);
  background: var(--pt-white);
  color: var(--pt-ink);
  font-weight: 700;
}
.pt-skip:focus {
  top: var(--pt-space-3);
}

/* ========== 2. Layout ========== */
.site-container {
  width: min(var(--pt-container), calc(100% - 2 * var(--pt-gutter)));
  margin-inline: auto;
}
.page-content {
  min-height: 65vh;
  padding-block: var(--pt-space-12) var(--pt-space-20);
}
.page-content p:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  line-height: 1.75;
}

/* ========== 3. Header ========== */
.site-preview {
  padding: var(--pt-space-2) var(--pt-space-4);
  background: var(--pt-sage);
  color: var(--pt-forest-deep);
  font-size: var(--pt-text-xs);
  letter-spacing: 0.02em;
  text-align: center;
}
.site-header {
  background: var(--pt-paper);
  border-bottom: 1px solid var(--pt-line);
}
.header-inner {
  display: flex;
  align-items: center;
  gap: var(--pt-space-12);
  min-height: 94px;
}
.site-logo {
  display: flex;
  flex-shrink: 0;
  width: 210px;
}
.site-logo img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  width: 100%;
  height: auto;
}
.header-inner nav:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  display: flex;
  gap: var(--pt-space-8);
  font-size: var(--pt-text-sm);
}
.header-inner nav a:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.account-link {
  color: var(--pt-ink);
}
.header-inner nav a:hover:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.account-link:hover {
  color: var(--pt-ticket-ink);
}
.header-inner nav a[aria-current="page"]:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  color: var(--pt-ticket-ink);
  font-weight: 700;
}
.account-link {
  display: flex;
  align-items: center;
  gap: var(--pt-space-3);
  margin-left: auto;
  font-size: var(--pt-text-sm);
  font-weight: 600;
}
.account-icon {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border: 1px solid var(--pt-line-strong);
  border-radius: 50%;
}

/* ========== 4. Page titles and display type ==========
   Every public page title uses the display face. Transaction screens keep
   their headings in the body face; only the page's own h1 is display. */
.page-content h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.pt-portal h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.pt-history h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.pt-detail-copy h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.pt-venue-header h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.culture-copy h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.section-heading h2:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.culture-story h2:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.host-band h2:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  font-family: var(--pt-font-display);
  font-weight: 400;
  font-synthesis: none;
  letter-spacing: 0.005em;
  text-transform: uppercase;
  text-wrap: balance;
}
.page-content h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: 0 0 var(--pt-space-6);
  font-size: var(--pt-display-l);
  line-height: 1.02;
}
/* The expression face sets one warm phrase inside a display headline. */
.culture-copy h1 em:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.section-heading h2 em:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.culture-story h2 em:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.host-band h2 em:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.page-content h1 em:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  display: inline-block;
  font-family: var(--pt-font-expression);
  font-style: normal;
  font-weight: 400;
  letter-spacing: -0.025em;
  line-height: 1.02;
  text-transform: none;
  color: var(--pt-clay);
}
.pt-back {
  display: inline-block;
  margin-bottom: var(--pt-space-8);
  color: var(--pt-muted);
  font-size: var(--pt-text-sm);
}
.pt-back:hover {
  color: var(--pt-ink);
}

/* ========== 5. Footer ========== */
.site-footer {
  padding-block: var(--pt-space-10) var(--pt-space-6);
  background: var(--pt-sand);
}
.footer-top {
  display: flex;
  align-items: center;
  gap: var(--pt-space-8);
  padding-bottom: var(--pt-space-8);
}
.footer-top img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  width: 180px;
  height: auto;
}
.footer-top p:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: 0;
  color: var(--pt-muted);
  font-size: var(--pt-text-sm);
}
.footer-top > a:last-child:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin-left: auto;
  font-size: var(--pt-text-sm);
  font-weight: 600;
}
.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--pt-space-6);
  padding-top: var(--pt-space-6);
  border-top: 1px solid var(--pt-line);
  color: var(--pt-muted);
  font-size: var(--pt-text-xs);
}
.footer-bottom nav:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--pt-space-6);
}
.footer-bottom a:hover:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.footer-top > a:last-child:hover:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  color: var(--pt-ink);
}
/* Consent sits in the footer navigation and opens as a small panel. */
.site-footer .pt-consent {
  position: relative;
  padding: 0;
  font-size: var(--pt-text-xs);
}
.site-footer .pt-consent summary:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  cursor: pointer;
  list-style: none;
}
.site-footer .pt-consent summary:where(:not([class*="pt-c-"], [class*="pt-c-"] *))::-webkit-details-marker {
  display: none;
}
.site-footer .pt-consent summary:hover:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  color: var(--pt-ink);
}
.site-footer .pt-consent[open] > div:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  position: absolute;
  bottom: calc(100% + var(--pt-space-3));
  left: 50%;
  z-index: 20;
  width: min(360px, calc(100vw - 2 * var(--pt-gutter)));
  padding: var(--pt-space-5);
  transform: translateX(-50%);
  border: 1px solid var(--pt-line);
  border-radius: var(--pt-radius-m);
  background: var(--pt-surface);
  box-shadow: var(--pt-shadow-pop);
  color: var(--pt-ink);
  font-size: var(--pt-text-sm);
}
.site-footer .pt-consent p:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: 0 0 var(--pt-space-4);
  line-height: 1.55;
}
.site-footer .pt-consent .pt-actions {
  margin: 0;
}

/* ========== 6. Home ========== */
.culture-hero {
  display: grid;
  grid-template-columns: 0.85fr 1.15fr;
  align-items: center;
  gap: var(--pt-space-12);
  padding-block: var(--pt-space-12) var(--pt-space-16);
}
.culture-copy h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: var(--pt-space-5) 0 var(--pt-space-6);
  font-size: var(--pt-display-xl);
  line-height: 1.12;
}
.culture-intro {
  max-width: 370px;
  color: var(--pt-ink-soft);
  font-size: var(--pt-text-lg);
  line-height: 1.7;
}
.culture-copy .pt-button {
  margin-top: var(--pt-space-3);
}
.culture-note {
  display: block;
  margin-top: var(--pt-space-6);
  color: var(--pt-muted);
  font-size: var(--pt-text-xs);
}
.culture-photo {
  position: relative;
  min-width: 0;
  padding-bottom: var(--pt-space-8);
}
.culture-photo > img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  width: 100%;
  height: 580px;
  object-fit: cover;
  object-position: 53% center;
  border-radius: var(--pt-radius-arch);
}
.culture-sticker {
  position: absolute;
  bottom: 95px;
  left: -30px;
  padding: var(--pt-space-6) var(--pt-space-8);
  transform: rotate(-8deg);
  background: var(--pt-lime);
  box-shadow: var(--pt-shadow-sticker);
  color: var(--pt-forest);
  font-family: var(--pt-font-expression);
  font-size: var(--pt-text-xl);
  letter-spacing: 0.015em;
  line-height: 1.1;
}
.culture-sticker span:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  display: inline-block;
  margin-left: var(--pt-space-6);
  font-size: 42px;
  vertical-align: middle;
}
.culture-caption {
  margin: var(--pt-space-3) 0;
  color: var(--pt-muted);
  font-size: 10px; /* decorative photo credit; the photo has its own alt text */
  letter-spacing: 1.7px;
  text-align: right;
}
.culture-ticker {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--pt-space-10);
  overflow: hidden;
  padding: var(--pt-space-5);
  background: var(--pt-coral);
  color: var(--pt-ink);
  font-size: var(--pt-text-xs);
  font-weight: 700;
  letter-spacing: 1.5px;
}
.culture-ticker span:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  white-space: nowrap;
}
.culture-ticker b:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  font-size: 25px;
}
.experiences {
  padding-block: var(--pt-space-20);
}
.section-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--pt-space-6);
  margin-bottom: var(--pt-space-8);
}
.section-heading h2:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: var(--pt-space-3) 0 0;
  font-size: var(--pt-display-m);
  line-height: 1.07;
}
.section-heading > p:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.section-heading > span:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  max-width: 320px;
  color: var(--pt-muted);
  font-size: var(--pt-text-sm);
  line-height: 1.7;
}
.discovery-search {
  display: flex;
  align-items: center;
  gap: var(--pt-space-2);
  margin: var(--pt-space-8) 0;
  padding: var(--pt-space-2);
  border: 1px solid var(--pt-line);
  border-radius: var(--pt-radius-l);
  background: var(--pt-surface);
}
.discovery-search:focus-within {
  border-color: var(--pt-line-strong);
}
.search-field {
  flex: 1;
}
.discovery-search input[type="search"]:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  width: 100%;
  min-width: 0;
  padding: var(--pt-space-3) var(--pt-space-4);
  border: 0;
  background: transparent;
  color: var(--pt-ink);
}
.discovery-search input[type="search"]:where(:not([class*="pt-c-"], [class*="pt-c-"] *))::placeholder {
  color: var(--pt-muted);
}
.discovery-search select:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  padding: var(--pt-space-3);
  border: 0;
  background: transparent;
  color: inherit;
}
.free-filter {
  display: flex;
  align-items: center;
  gap: var(--pt-space-2);
  padding: 0 var(--pt-space-3);
  font-size: var(--pt-text-sm);
  white-space: nowrap;
}
.free-filter input:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  accent-color: var(--pt-forest);
}
.culture-story {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  padding-bottom: var(--pt-space-20);
}
.culture-story-photo {
  position: relative;
}
.culture-story-photo img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  display: block;
  width: 100%;
  height: 470px;
  object-fit: cover;
  border-radius: var(--pt-radius-l) 0 0 var(--pt-radius-l);
}
.culture-story-photo > span:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  position: absolute;
  bottom: var(--pt-space-5);
  left: var(--pt-space-6);
  padding: var(--pt-space-2) var(--pt-space-3);
  border-radius: var(--pt-radius-pill);
  background: color-mix(in srgb, var(--pt-ink) 65%, transparent);
  color: var(--pt-white);
  font-size: var(--pt-text-xs);
  letter-spacing: 1.2px;
}
.culture-story-copy {
  padding: 56px var(--pt-space-12);
  border-radius: 0 var(--pt-radius-l) var(--pt-radius-l) 0;
  background: var(--pt-pink);
}
.culture-story-copy .pt-eyebrow {
  color: var(--pt-forest);
}
.culture-story h2:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: var(--pt-space-5) 0;
  font-size: clamp(38px, 3.5vw, 49px);
  line-height: 1.05;
}
.culture-story h2 em:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  font-size: 1.08em;
}
.culture-story-copy p:not(.pt-eyebrow):where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  max-width: 300px;
  font-size: var(--pt-text-md);
  line-height: 1.8;
}
.culture-story-copy > a:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  display: inline-block;
  margin-top: var(--pt-space-5);
  color: var(--pt-plum);
  font-weight: 700;
}
.venue-section {
  padding-bottom: var(--pt-space-20);
}
.venue-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--pt-space-6);
}
.venue-card {
  display: flex;
  align-items: center;
  gap: var(--pt-space-5);
  padding: var(--pt-space-6);
  border-radius: var(--pt-radius-l);
  background: var(--pt-sand-strong);
  color: inherit;
  transition: background-color var(--pt-duration-fast) var(--pt-ease);
}
.venue-card:hover {
  background: var(--pt-sand);
}
.venue-card > span:last-child:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin-left: auto;
}
.venue-monogram {
  display: grid;
  flex-shrink: 0;
  place-items: center;
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--pt-sage);
  color: var(--pt-forest);
  font-family: var(--pt-font-expression);
  font-size: 32px;
}
.venue-monogram.has-image {
  overflow: hidden;
  background: var(--pt-sand);
}
.venue-monogram.has-image img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.venue-card h3:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: 0;
  font-size: var(--pt-text-xl);
  line-height: 1.25;
}
.venue-card p:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: var(--pt-space-1) 0 0;
  color: var(--pt-muted);
  font-size: var(--pt-text-xs);
}
.host-band {
  padding-block: var(--pt-space-20);
  background: var(--pt-plum);
  color: var(--pt-on-dark);
}
.host-band > .site-container {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  align-items: center;
  gap: 100px;
}
.host-band h2:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: var(--pt-space-5) 0;
  font-size: clamp(46px, 4.4vw, 63px);
  line-height: 1.05;
}
.host-band h2 em:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  color: var(--pt-rose);
}
.host-band .pt-eyebrow {
  color: var(--pt-on-dark-soft);
}
.host-band p:not(.pt-eyebrow):where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  max-width: 330px;
  color: var(--pt-on-dark-soft);
  font-size: var(--pt-text-lg);
  line-height: 1.8;
}
.host-band .pt-button {
  margin-top: var(--pt-space-5);
}
.host-band :focus-visible:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  outline-color: var(--pt-focus-on-dark);
}

/* ========== 7. Event cards ==========
   Cards fill a fixed three-column track from the left, so a short list sits
   on the same edge as its heading. */
/* Listing cards, four across on desktop like the kit's home (design 03, 3a). */
.pt-discovery-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--pt-space-8);
}
@media (max-width: 1200px) { .pt-discovery-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.pt-event-card {
  min-width: 0;
}
.pt-event-art {
  position: relative;
  display: block;
  overflow: hidden;
  aspect-ratio: 1 / 1;
  border-radius: var(--pt-radius-l);
  background: var(--pt-coral-soft);
}
.pt-event-art img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--pt-duration-base) var(--pt-ease);
}
.pt-event-art:hover img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  transform: scale(1.025);
}
.pt-event-tag {
  position: absolute;
  top: var(--pt-space-4);
  left: var(--pt-space-4);
  padding: var(--pt-space-2) var(--pt-space-3);
  border-radius: var(--pt-radius-pill);
  background: var(--pt-surface);
  color: var(--pt-ink);
  font-size: var(--pt-text-xs);
  font-weight: 700;
}
.pt-event-info {
  display: flex;
  align-items: flex-start;
  gap: var(--pt-space-4);
  padding: var(--pt-space-5) 0;
}
.pt-date-tile {
  min-width: 48px;
  padding-right: var(--pt-space-4);
  border-right: 1px solid var(--pt-line);
  text-align: center;
}
.pt-date-tile span:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  color: var(--pt-clay);
  font-size: var(--pt-text-xs);
  font-weight: 750;
  letter-spacing: 1px;
}
.pt-date-tile strong:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  display: block;
  font-family: var(--pt-font-display);
  font-size: 32px;
  font-weight: 400;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
}
.pt-event-info h3:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: var(--pt-space-1) 0 var(--pt-space-2);
  font-size: var(--pt-title-s);
  letter-spacing: -0.01em;
  line-height: 1.2;
}
.pt-event-info h3 a:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  color: inherit;
}
.pt-event-info h3 a:hover:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  color: var(--pt-ticket-ink);
}
.pt-event-info p:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: 0;
  color: var(--pt-muted);
  font-size: var(--pt-text-xs);
  line-height: 1.6;
}
.pt-event-info .pt-event-venue {
  color: var(--pt-muted);
  font-size: var(--pt-eyebrow-size);
  font-weight: 700;
  letter-spacing: 1.4px;
  text-transform: uppercase;
}
.pt-art-fallback {
  display: flex;
  align-items: center;
  height: 100%;
  padding: var(--pt-space-8);
  color: var(--pt-plum);
  font-family: var(--pt-font-expression);
  font-size: 40px;
  line-height: 1.05;
}

/* ========== 8. Event and venue detail ========== */
.pt-detail {
  padding-block: var(--pt-space-10) var(--pt-space-20);
}
.pt-detail-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--pt-space-16);
}
.pt-detail-art img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  width: 100%;
  height: auto;
  border-radius: var(--pt-radius-l);
}
.pt-detail-copy {
  min-width: 0;
  padding-top: var(--pt-space-6);
}
.pt-detail-copy h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: var(--pt-space-4) 0 var(--pt-space-5);
  font-size: var(--pt-display-m);
  line-height: 1.02;
}
.pt-detail-date {
  font-size: var(--pt-title-s);
}
.pt-venue-link {
  color: var(--pt-clay);
  font-size: var(--pt-text-xl);
}
.pt-venue-link:hover {
  color: var(--pt-ink);
}
.pt-detail-copy > p:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  color: var(--pt-muted);
}
.pt-lineup {
  margin: var(--pt-space-8) 0;
  padding: var(--pt-space-6) 0;
  border-block: 1px solid var(--pt-line);
}
.pt-lineup p:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin-bottom: 0;
  font-size: var(--pt-title-s);
  font-weight: 600;
}
.pt-event-description {
  color: var(--pt-ink-soft);
  line-height: 1.8;
}
.pt-detail-note {
  padding: var(--pt-space-5);
  border-radius: var(--pt-radius-m);
  background: var(--pt-sand-strong);
  line-height: 1.6;
}
.pt-detail-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--pt-space-3);
  margin-top: var(--pt-space-8);
}
.pt-venue-header {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--pt-space-10);
  margin-bottom: var(--pt-space-12);
  padding: var(--pt-space-12);
  border-radius: var(--pt-radius-xl);
  background: var(--pt-sage);
}
.pt-venue-header:not(:has(img)) {
  grid-template-columns: minmax(0, 760px);
}
.pt-venue-header h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: var(--pt-space-4) 0;
  font-size: var(--pt-display-l);
  line-height: 1.02;
}
.pt-venue-header img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  width: 100%;
  border-radius: var(--pt-radius-l);
}
.pt-venue-header p:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  line-height: 1.7;
}

/* ========== 9. What's on and archive ========== */
.pt-history {
  padding-block: var(--pt-space-4) var(--pt-space-16);
}
.pt-history > h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: var(--pt-space-3) 0 var(--pt-space-4);
  font-size: var(--pt-display-l);
  line-height: 1.02;
}
.pt-history > p:not(.pt-eyebrow):where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  max-width: 620px;
  color: var(--pt-ink-soft);
  font-size: var(--pt-text-lg);
}
.pt-history-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: var(--pt-space-8);
  margin-top: var(--pt-space-8);
}
.pt-history-card {
  min-width: 0;
  overflow: hidden;
  border: 1px solid var(--pt-line);
  border-radius: var(--pt-radius-l);
  background: var(--pt-surface);
}
.pt-history-card img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  width: 100%;
  height: 270px;
  object-fit: contain;
  background: var(--pt-sand-strong);
}
.pt-history-card .pt-history-copy {
  padding: var(--pt-space-5);
}
.pt-history-card h3:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: var(--pt-space-3) 0;
  font-size: var(--pt-title-s);
  line-height: 1.2;
}
.pt-history-card p:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  font-size: var(--pt-text-sm);
  line-height: 1.6;
}
.pt-archive-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--pt-space-3);
  margin: var(--pt-space-6) 0;
}
.pt-archive-tabs a:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.pt-archive-tabs .page-numbers {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: var(--pt-space-2) var(--pt-space-4);
  border: 1px solid var(--pt-line);
  border-radius: var(--pt-radius-pill);
}
.pt-archive-tabs a:hover:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  background: var(--pt-sand);
}
.pt-archive-tabs a[aria-current="page"]:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.pt-archive-tabs .page-numbers.current {
  border-color: var(--pt-forest);
  background: var(--pt-forest);
  color: var(--pt-white);
}

/* ========== 10. Organiser portal and sign-in form ========== */
.pt-portal {
  padding-block: var(--pt-space-12) var(--pt-space-16);
}
.page-content .pt-portal {
  padding-block: 0;
}
.pt-portal h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  font-size: var(--pt-display-l);
  line-height: 1.02;
}
.pt-portal h2:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  font-size: var(--pt-title-m);
  line-height: 1.2;
}
.pt-portal-intro {
  max-width: 720px;
  margin-bottom: var(--pt-space-10);
}
.pt-portal-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 330px), 1fr));
  gap: var(--pt-space-6);
}
.pt-portal-panel {
  min-width: 0;
  margin-bottom: var(--pt-space-6);
  padding: var(--pt-space-8);
  border: 1px solid var(--pt-line);
  border-radius: var(--pt-radius-l);
  background: var(--pt-surface);
}
.pt-portal-panel > h2:first-child:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.pt-portal-panel > h3:first-child:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin-top: 0;
}
.pt-portal label:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  display: block;
  margin: var(--pt-space-4) 0 var(--pt-space-2);
  font-weight: 650;
}
.pt-portal input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="submit"]):where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.pt-portal select:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.pt-portal textarea:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  width: 100%;
  min-height: var(--pt-control-height);
  margin-top: var(--pt-space-2);
  padding: var(--pt-space-3);
  border: 1px solid var(--pt-line-strong);
  border-radius: var(--pt-radius-s);
  background: var(--pt-white);
  color: var(--pt-ink);
  font: inherit;
}
.pt-portal textarea:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  min-height: 110px;
}
.pt-portal input[type="checkbox"]:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  width: 19px;
  height: 19px;
  margin: 0 var(--pt-space-2) 0 0;
  vertical-align: -3px;
  accent-color: var(--pt-forest);
}
.pt-portal .pt-button {
  margin-top: var(--pt-space-5);
}
.pt-portal .pt-help {
  color: var(--pt-muted);
  font-size: var(--pt-text-sm);
}
.pt-portal .pt-message {
  margin-block: var(--pt-space-6);
  padding: var(--pt-space-5);
  border-left: 4px solid var(--pt-success-ink);
  border-radius: var(--pt-radius-s);
  background: var(--pt-success-bg);
}
.pt-portal .pt-error {
  border-color: var(--pt-danger-ink);
  background: var(--pt-danger-bg);
}
.pt-portal .pt-field-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: var(--pt-space-4);
}
.pt-portal .pt-honey {
  position: absolute;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.pt-portal .pt-portal-list {
  padding: 0;
  list-style: none;
}
.pt-portal-list li:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--pt-space-4);
  padding: var(--pt-space-5) 0;
  border-bottom: 1px solid var(--pt-line);
}
.pt-portal-panel a:not([class]):where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.pt-help a:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  color: var(--pt-ticket-ink);
  text-decoration: underline;
  text-underline-offset: 3px;
}
/* WordPress's wp_login_form(), as used on /sell-tickets/. */
.pt-portal #loginform p:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: 0 0 var(--pt-space-4);
}
.pt-portal #loginform label:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: 0;
}
.pt-portal #loginform .login-remember label:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  display: flex;
  align-items: center;
  font-weight: 500;
}
.pt-portal #loginform .login-submit {
  margin-top: var(--pt-space-5);
}
.pt-portal #loginform .button {
  min-height: var(--pt-control-height);
  padding: var(--pt-space-3) var(--pt-space-6);
  border: 0;
  border-radius: var(--pt-radius-pill);
  background: var(--pt-forest);
  color: var(--pt-white);
  font: 650 var(--pt-text-md) / 1.2 var(--pt-font-body);
  cursor: pointer;
}
.pt-portal #loginform .button:hover {
  background: var(--pt-forest-deep);
}
.pt-signin-links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--pt-space-4);
  margin-top: var(--pt-space-5);
  font-size: var(--pt-text-sm);
}

/* ========== 11. WooCommerce ==========
   Account, cart, checkout and order pages. Woo's own stylesheet still loads
   on these pages for layout; this section maps its controls onto the tokens.
   Selectors start at .page-content so they outrank woocommerce-general.css. */
.page-content .woocommerce {
  color: var(--pt-ink);
}
.page-content .woocommerce h2:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin: 0 0 var(--pt-space-5);
  font-size: var(--pt-title-m);
  line-height: 1.2;
}
.page-content .woocommerce h3:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  font-size: var(--pt-text-xl);
}
.page-content .woocommerce form.login,
.page-content .woocommerce form.register,
.page-content .woocommerce form.lost_reset_password,
.page-content .woocommerce form.checkout_coupon {
  margin: 0 0 var(--pt-space-6);
  padding: var(--pt-space-8);
  border: 1px solid var(--pt-line);
  border-radius: var(--pt-radius-l);
  background: var(--pt-surface);
}
.page-content .woocommerce form .form-row {
  margin: 0 0 var(--pt-space-4);
  padding: 0;
}
.page-content .woocommerce form .form-row label:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  margin-bottom: var(--pt-space-2);
  font-weight: 600;
  line-height: 1.4;
}
.page-content .woocommerce form .form-row .required {
  color: var(--pt-danger-ink);
  text-decoration: none;
}
.page-content .woocommerce form .form-row .input-text,
.page-content .woocommerce form .form-row select:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.page-content .woocommerce form .form-row textarea:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.page-content .woocommerce input[type="text"]:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.page-content .woocommerce input[type="email"]:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.page-content .woocommerce input[type="password"]:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.page-content .woocommerce input[type="tel"]:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.page-content .woocommerce input[type="number"]:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  min-height: var(--pt-control-height);
  padding: var(--pt-space-3);
  border: 1px solid var(--pt-line-strong);
  border-radius: var(--pt-radius-s);
  background: var(--pt-white);
  color: var(--pt-ink);
  line-height: 1.4;
}
.page-content .woocommerce form .form-row .input-text:focus,
.page-content .woocommerce form .form-row select:focus:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.page-content .woocommerce form .form-row textarea:focus:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  outline: var(--pt-focus-width) solid var(--pt-focus);
  outline-offset: 1px;
}
.page-content .woocommerce input[type="checkbox"]:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  width: 18px;
  height: 18px;
  accent-color: var(--pt-forest);
}
/* A lone login form (registration closed) stays at a readable width. */
.page-content .woocommerce > form.login,
.page-content .woocommerce > form.lost_reset_password {
  max-width: 560px;
}
.page-content .woocommerce form.login .form-row:has(.woocommerce-form-login__submit) {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--pt-space-4);
}
.page-content .woocommerce form.login .form-row:has(.woocommerce-form-login__submit)::before,
.page-content .woocommerce form.login .form-row:has(.woocommerce-form-login__submit)::after {
  display: none; /* Woo's clearfix would otherwise become a flex item */
}
.page-content .woocommerce .woocommerce-form-login__rememberme {
  display: inline-flex;
  align-items: center;
  gap: var(--pt-space-2);
  order: 2;
  margin: 0;
  font-weight: 500;
}
.page-content .woocommerce .woocommerce-form-login .woocommerce-form-login__submit {
  float: none;
}
.page-content .woocommerce a.button,
.page-content .woocommerce button.button,
.page-content .woocommerce input.button,
.page-content .woocommerce a.button.alt,
.page-content .woocommerce button.button.alt,
.page-content .woocommerce input.button.alt,
.page-content .woocommerce #respond input#submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--pt-control-height);
  padding: var(--pt-space-3) var(--pt-space-6);
  border: 0;
  border-radius: var(--pt-radius-pill);
  background: var(--pt-forest);
  color: var(--pt-white);
  font: 650 var(--pt-text-md) / 1.2 var(--pt-font-body);
  text-decoration: none;
}
.page-content .woocommerce a.button:hover,
.page-content .woocommerce button.button:hover,
.page-content .woocommerce input.button:hover,
.page-content .woocommerce a.button.alt:hover,
.page-content .woocommerce button.button.alt:hover,
.page-content .woocommerce input.button.alt:hover,
.page-content .woocommerce #respond input#submit:hover {
  background: var(--pt-forest-deep);
  color: var(--pt-white);
}
.page-content .woocommerce button.button:disabled,
.page-content .woocommerce button.button.alt:disabled,
.page-content .woocommerce button.button.disabled {
  background: var(--pt-forest);
  color: var(--pt-white);
  opacity: 0.6;
}
.page-content .woocommerce a:not([class]):where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.page-content .woocommerce .woocommerce-LostPassword a:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.page-content .woocommerce-privacy-policy-text a:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  color: var(--pt-ticket-ink);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.page-content .woocommerce-message,
.page-content .woocommerce-info,
.page-content .woocommerce-error {
  margin: 0 0 var(--pt-space-6);
  padding: var(--pt-space-4) var(--pt-space-5) var(--pt-space-4) 3.2em;
  border: 1px solid var(--pt-success-line);
  border-radius: var(--pt-radius-m);
  background: var(--pt-success-bg);
  color: var(--pt-ink);
}
.page-content .woocommerce-message::before,
.page-content .woocommerce-info::before {
  color: var(--pt-success-ink);
}
.page-content .woocommerce-info {
  border-color: var(--pt-line);
  background: var(--pt-sand);
}
.page-content .woocommerce-info::before {
  color: var(--pt-forest);
}
.page-content .woocommerce-error {
  border-color: var(--pt-danger-line);
  background: var(--pt-danger-bg);
}
.page-content .woocommerce-error::before {
  color: var(--pt-danger-ink);
}
.page-content .woocommerce table.shop_table {
  border: 1px solid var(--pt-line);
  border-collapse: separate;
  border-radius: var(--pt-radius-m);
  background: var(--pt-surface);
}
.page-content .woocommerce table.shop_table th:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.page-content .woocommerce table.shop_table td:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  padding: var(--pt-space-3) var(--pt-space-4);
  border-color: var(--pt-line);
}
.page-content .woocommerce-MyAccount-navigation ul:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  display: grid;
  gap: var(--pt-space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}
.page-content .woocommerce-MyAccount-navigation a:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  display: block;
  padding: var(--pt-space-3) var(--pt-space-4);
  border-radius: var(--pt-radius-s);
  font-weight: 600;
}
.page-content .woocommerce-MyAccount-navigation a:hover:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  background: var(--pt-sand);
}
.page-content .woocommerce-MyAccount-navigation .is-active a:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
  background: var(--pt-forest);
  color: var(--pt-white);
}
.page-content .woocommerce-account .addresses .title h3:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
.page-content .woocommerce-order-details__title,
.page-content .woocommerce-column__title {
  font-size: var(--pt-text-xl);
}

/* ========== Responsive ========== */
@media (max-width: 1050px) {
  .header-inner {
    gap: var(--pt-space-8);
  }
  .footer-top {
    flex-wrap: wrap;
  }
  .footer-top > a:last-child:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    margin-left: 0;
  }
}
@media (max-width: 900px) {
  .culture-hero {
    gap: var(--pt-space-6);
  }
  .culture-copy h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    font-size: 58px;
  }
  .culture-photo > img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    height: 510px;
  }
  .culture-sticker {
    left: -10px;
    padding: var(--pt-space-5);
    font-size: var(--pt-text-lg);
  }
  .culture-ticker {
    justify-content: flex-start;
  }
  .pt-discovery-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .culture-story-copy {
    padding: var(--pt-space-10) var(--pt-space-8);
  }
  .culture-story h2:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    font-size: 38px;
  }
  .venue-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .host-band > .site-container {
    gap: var(--pt-space-10);
  }
  .pt-detail-grid {
    gap: var(--pt-space-8);
  }
  .discovery-search {
    flex-wrap: wrap;
  }
  .search-field {
    flex-basis: 55%;
  }
}
@media (max-width: 760px) {
  .header-inner {
    flex-wrap: wrap;
    gap: var(--pt-space-3);
    min-height: 0;
    padding-block: var(--pt-space-4);
  }
  .site-logo {
    width: 155px;
  }
  .header-inner nav:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    order: 3;
    flex-basis: 100%;
    justify-content: space-between;
    gap: var(--pt-space-3);
  }
  .account-link {
    margin-left: auto;
  }
  .account-icon {
    display: none;
  }
}
@media (max-width: 600px) {
  .page-content {
    padding-block: var(--pt-space-8) var(--pt-space-12);
  }
  .culture-hero {
    grid-template-columns: 1fr;
    gap: var(--pt-space-8);
    padding-block: var(--pt-space-8) var(--pt-space-6);
  }
  .culture-copy h1:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    margin-top: var(--pt-space-4);
    font-size: clamp(46px, 13.6vw, 66px);
  }
  .culture-copy h1 br:nth-child(3):where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    display: none;
  }
  .culture-intro {
    max-width: 330px;
    font-size: var(--pt-text-md);
  }
  .culture-photo > img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    height: 390px;
    border-radius: 120px 120px 12px 12px;
    object-position: 54% center;
  }
  .culture-sticker {
    bottom: 65px;
    left: 0;
  }
  .culture-ticker {
    gap: var(--pt-space-6);
    padding: var(--pt-space-4);
  }
  .experiences {
    padding-block: var(--pt-space-12) var(--pt-space-8);
  }
  .section-heading {
    display: block;
  }
  .section-heading h2:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    font-size: 42px;
  }
  .section-heading > p:where(:not([class*="pt-c-"], [class*="pt-c-"] *)),
  .section-heading > span:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    display: block;
    margin-top: var(--pt-space-4);
  }
  .discovery-search {
    gap: 0;
    padding: var(--pt-space-2);
    border-radius: var(--pt-radius-m);
  }
  .search-field {
    flex-basis: 100%;
    border-bottom: 1px solid var(--pt-line);
  }
  .discovery-search select:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    padding: var(--pt-space-3) var(--pt-space-1);
    font-size: var(--pt-text-sm);
  }
  .free-filter {
    margin-left: auto;
    padding: 0 var(--pt-space-2);
    font-size: var(--pt-text-sm);
  }
  .discovery-search .pt-button {
    min-height: 44px;
    margin-left: var(--pt-space-1);
    padding: var(--pt-space-2) var(--pt-space-4);
    font-size: var(--pt-text-sm);
  }
  .pt-discovery-grid {
    grid-template-columns: 1fr;
    gap: var(--pt-space-5);
  }
  .pt-event-art {
    border-radius: var(--pt-radius-m);
  }
  .pt-event-info h3:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    font-size: 24px;
  }
  .culture-story {
    grid-template-columns: 1fr;
    padding-bottom: var(--pt-space-12);
  }
  .culture-story-photo img:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    height: 300px;
    border-radius: var(--pt-radius-m) var(--pt-radius-m) 0 0;
  }
  .culture-story-copy {
    padding: var(--pt-space-8);
    border-radius: 0 0 var(--pt-radius-m) var(--pt-radius-m);
  }
  .culture-story h2:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    font-size: clamp(34px, 10.5vw, 45px);
  }
  .venue-grid {
    grid-template-columns: 1fr;
  }
  .venue-section {
    padding-bottom: var(--pt-space-12);
  }
  .host-band {
    padding-block: var(--pt-space-12);
  }
  .host-band > .site-container {
    grid-template-columns: 1fr;
    gap: var(--pt-space-1);
  }
  .host-band h2:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    font-size: 46px;
  }
  .host-band p:not(.pt-eyebrow):where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    font-size: var(--pt-text-md);
  }
  .pt-detail {
    padding-block: var(--pt-space-6) var(--pt-space-12);
  }
  .pt-detail-grid {
    grid-template-columns: 1fr;
    gap: var(--pt-space-3);
  }
  .pt-venue-header {
    grid-template-columns: 1fr;
    padding: var(--pt-space-6);
    border-radius: var(--pt-radius-l);
  }
  .pt-detail-actions .pt-button,
  .pt-detail-actions .pt-outline {
    font-size: var(--pt-text-sm);
  }
  .pt-portal-panel,
  .page-content .woocommerce form.login,
  .page-content .woocommerce form.register {
    padding: var(--pt-space-5);
  }
  .footer-top {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--pt-space-4);
    padding-bottom: var(--pt-space-6);
  }
  .footer-bottom {
    flex-wrap: wrap;
    gap: var(--pt-space-4);
  }
  .footer-bottom nav:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    gap: var(--pt-space-4);
  }
  .footer-bottom > span:last-child:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    width: 100%;
  }
  .site-footer .pt-consent[open] > div:where(:not([class*="pt-c-"], [class*="pt-c-"] *)) {
    left: 0;
    transform: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  *,
  *:where(:not([class*="pt-c-"], [class*="pt-c-"] *))::before,
  *:where(:not([class*="pt-c-"], [class*="pt-c-"] *))::after {
    transition: none !important;
    animation: none !important;
  }
}

/* Header actions (design system 2.0 shell): search and My tickets are components;
   phones show the icon-only versions beside the Menu disclosure. */
.pt-header-actions { display: flex; align-items: center; gap: var(--pt-space-2); margin-left: auto; }
.pt-header-actions .pt-c-button { font-size: 15px; }
.pt-header-actions .pt-header-search { border-color: transparent; }
.pt-header-actions .pt-header-tickets-phone { display: none; border-color: transparent; }
@media (max-width: 760px) {
  .pt-header-actions { gap: 0; }
  .pt-header-actions .pt-header-tickets { display: none; }
  .pt-header-actions .pt-header-tickets-phone { display: inline-flex; }
}

/* Public discovery destinations and compact tablet navigation. */
.pt-public-header .pt-public-links a{white-space:nowrap}
.pt-discover-filters.pt-collection-filters{grid-template-columns:minmax(0,2fr) repeat(2,minmax(0,1fr)) auto}
.pt-discover-filters.pt-collection-filters button{grid-column:4}
.pt-collection-venues{margin:32px 0}
@media(max-width:1050px){.pt-public-header .pt-public-links{display:none!important}.pt-public-header .pt-public-menu{display:block}.pt-public-header .header-inner{flex-wrap:nowrap!important}.pt-header-actions{margin-left:auto}}
@media(max-width:700px){.pt-discover-filters.pt-collection-filters{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.pt-discover-filters.pt-collection-filters>label:first-child{grid-column:1/-1}.pt-discover-filters.pt-collection-filters>label:nth-child(2){grid-column:auto}.pt-discover-filters.pt-collection-filters button{grid-column:1/-1;width:100%}}

/* Visitor cookie preferences. */
.pt-cookie-panel{padding:24px;border:1px solid var(--pt-line);border-radius:16px;background:var(--pt-paper);color:var(--pt-ink)}
.pt-cookie-banner{position:fixed;bottom:20px;left:20px;right:20px;max-width:640px;margin:0 auto;z-index:1000;box-shadow:var(--pt-shadow-pop)}
.pt-cookie-panel h2{font:700 22px/1.3 var(--pt-font-body);margin:0 0 12px}.pt-cookie-panel p{font:400 15px/1.5 var(--pt-font-body);margin:0 0 16px}.pt-cookie-actions{display:flex;flex-wrap:wrap;gap:12px}.pt-cookie-actions button{flex:1;min-height:48px;min-width:150px;padding:12px;border:1px solid var(--pt-forest);border-radius:24px;background:var(--pt-forest);color:var(--pt-paper);font:600 14px/1.4 var(--pt-font-body);cursor:pointer}.pt-cookie-panel [role=status]{margin-top:12px}.pt-cookie-panel[hidden]{display:none!important}
@media(max-width:500px){.pt-cookie-banner{bottom:12px;left:12px;right:12px;padding:20px}.pt-cookie-actions{gap:8px}.pt-cookie-actions button{min-width:0}}

body.home .experiences{padding-bottom:24px}


/* Section hand-offs: the homepage lists events, and points to Transport and Film & Theater. */
.pt-section-links{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:32px 0 0}
.pt-collection-tours{margin-top:48px}

/* Organiser band (design 03, 3a). Opted out of the older generic rules by its pt-c-band class. */
.pt-organiser-band { margin-top: var(--pt-space-12); background: var(--pt-forest-deep); color: var(--pt-paper); }
.pt-organiser-band__inner { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--pt-space-12); align-items: center; max-width: 1344px; margin: 0 auto; padding: calc(var(--pt-space-12) + var(--pt-space-4)) var(--pt-space-12); box-sizing: border-box; }
.pt-organiser-band__copy { display: flex; flex-direction: column; align-items: flex-start; gap: var(--pt-space-4); }
.pt-organiser-band__eyebrow { margin: 0; color: var(--pt-lime); font-size: var(--pt-label); font-weight: 700; letter-spacing: var(--pt-label-tracking); }
.pt-organiser-band h2 { margin: 0; color: var(--pt-paper); font: 400 var(--pt-display-m) / 1 var(--pt-font-display); text-transform: uppercase; }
.pt-organiser-band__copy > p:not(.pt-organiser-band__eyebrow) { max-width: 460px; margin: 0; font-size: var(--pt-lead); line-height: 1.5; }
.pt-organiser-band__visual { display: block; width: 100%; height: 340px; border-radius: var(--pt-radius-m); object-fit: cover; }
.pt-organiser-band__poster { display: flex; flex-direction: column; justify-content: space-between; padding: var(--pt-space-6); box-sizing: border-box; background: var(--pt-lime); color: var(--pt-forest-deep); }
.pt-organiser-band__poster span:last-child { font: 400 var(--pt-display-m) / 1 var(--pt-font-display); text-transform: uppercase; }
@media (max-width: 760px) {
  .pt-organiser-band__inner { grid-template-columns: 1fr; gap: var(--pt-space-6); padding: var(--pt-space-12) var(--pt-space-4); }
  .pt-organiser-band h2 { font-size: var(--pt-display-s); }
  .pt-organiser-band__visual { height: 220px; }
}

/* Transport search (Proticket\Transport): operators first, then journey rows once a date is chosen. */
.pt-trip-search { display: flex; flex-direction: column; gap: var(--pt-space-4); padding: var(--pt-space-6); border: 1px solid var(--pt-line); border-radius: var(--pt-radius-m); background: var(--pt-surface); }
.pt-trip-search [hidden] { display: none; }
.pt-trip-search__type { display: inline-flex; align-self: flex-start; gap: 4px; margin: 0; padding: 4px; border: 0; border-radius: var(--pt-radius-pill); background: var(--pt-sand); }
.pt-trip-search__type label { position: relative; cursor: pointer; }
.pt-trip-search__type input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.pt-trip-search__type span { display: inline-flex; align-items: center; min-height: 40px; padding: 0 var(--pt-space-4); border: 1px solid transparent; border-radius: var(--pt-radius-pill); font-weight: 700; }
.pt-trip-search__type input:checked + span { border-color: var(--pt-line); background: var(--pt-white); color: var(--pt-ink); }
.pt-trip-search__type input:focus-visible + span { outline: var(--pt-focus-width) solid var(--pt-focus); outline-offset: 2px; }
.pt-trip-search__fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: var(--pt-space-4); align-items: end; }
.pt-trip-search:not(:has(input[value="return"]:checked)) .pt-trip-search__return { display: none; }
.pt-trip-section { margin-top: var(--pt-space-12); }
.pt-trip-section__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--pt-space-2); margin-bottom: var(--pt-space-6); }
.pt-trip-section__head h2, .pt-trip-head h2 { margin: 0; font: 400 var(--pt-display-s) / 1.05 var(--pt-font-display); text-transform: uppercase; }
.pt-trip-section__head p, .pt-trip-head p { margin: 0; color: var(--pt-muted); }
.pt-operator-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: var(--pt-space-6); }
.pt-operator { display: flex; flex-direction: column; gap: var(--pt-space-4); padding: var(--pt-space-6); border: 1px solid var(--pt-line); border-radius: var(--pt-radius-m); background: var(--pt-white); }
.pt-operator .pt-c-button { align-self: flex-start; margin-top: auto; }
.pt-operator__head { display: flex; align-items: center; gap: var(--pt-space-4); }
.pt-operator__head h3 { margin: 0; font: 700 var(--pt-heading) / 1.25 var(--pt-font-body); }
.pt-operator__head span:not(.pt-operator__mark) { color: var(--pt-muted); font-size: var(--pt-small); }
.pt-operator__mark { display: grid; flex-shrink: 0; place-items: center; width: 56px; height: 56px; border-radius: 50%; background: var(--pt-forest-deep); color: var(--pt-paper); font: 400 26px / 1 var(--pt-font-display); }
.pt-operator__routes { display: flex; flex-direction: column; gap: var(--pt-space-2); margin: 0; padding: 0; list-style: none; }
.pt-operator__routes a { display: flex; flex-direction: column; gap: 2px; padding: 12px var(--pt-space-4); border-radius: var(--pt-radius-s); background: var(--pt-sand); color: var(--pt-ink); text-decoration: none; }
.pt-operator__routes a:hover { background: var(--pt-line); }
.pt-operator__routes a span { color: var(--pt-muted); font-size: var(--pt-small); }
.pt-trip-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: var(--pt-space-4); margin-bottom: var(--pt-space-6); }
.pt-trip-head a { color: var(--pt-ticket-ink); font-weight: 700; }
.pt-trip-strip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--pt-space-2); margin-bottom: var(--pt-space-6); }
.pt-trip-strip a { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 12px 8px; border: 1px solid var(--pt-line); border-radius: var(--pt-radius-s); background: var(--pt-white); color: var(--pt-ink); text-align: center; text-decoration: none; }
.pt-trip-strip a span, .pt-trip-strip a small { color: var(--pt-muted); font-size: var(--pt-small); }
.pt-trip-strip a[aria-current] { border: 2px solid var(--pt-forest); padding: 11px 7px; }
.pt-trip-strip a[aria-current] small { color: var(--pt-forest); font-weight: 700; }
.pt-trip-filters { display: flex; flex-wrap: wrap; gap: var(--pt-space-4); margin-bottom: var(--pt-space-6); }
.pt-trip-filters__group { display: flex; flex-wrap: wrap; gap: var(--pt-space-2); }
.pt-chip { display: inline-flex; align-items: center; gap: var(--pt-space-2); min-height: 40px; padding: 0 var(--pt-space-4); border: 1px solid var(--pt-line-strong); border-radius: var(--pt-radius-pill); background: var(--pt-surface); color: var(--pt-ink); font-weight: 650; text-decoration: none; }
.pt-chip span { color: var(--pt-muted); font-weight: 400; }
.pt-chip[aria-current] { border-color: var(--pt-forest); background: var(--pt-forest); color: var(--pt-white); }
.pt-chip[aria-current] span { color: var(--pt-white); }
.pt-trip-picks { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--pt-space-4); margin-bottom: var(--pt-space-6); }
.pt-trip-pick { display: flex; align-items: center; gap: var(--pt-space-4); padding: var(--pt-space-4); border-radius: var(--pt-radius-m); background: var(--pt-success-bg); color: var(--pt-success-ink); text-decoration: none; }
.pt-trip-pick > span:nth-child(2) { display: flex; flex: 1; flex-direction: column; min-width: 0; }
.pt-trip-pick > span:nth-child(2) span { color: var(--pt-ink); font-size: var(--pt-small); }
.pt-trip-pick__value { display: flex; flex-direction: column; align-items: flex-end; text-align: right; }
.pt-trip-pick__value b { font-size: var(--pt-heading); color: var(--pt-ink); }
.pt-trip-pick__value small { font-size: var(--pt-small); }
.pt-trip-count { margin: 0 0 var(--pt-space-4); font: 700 var(--pt-heading) / 1.25 var(--pt-font-body); }
.pt-trips { display: flex; flex-direction: column; gap: var(--pt-space-4); }
.pt-trip { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "top buy" "times buy" "stops buy"; gap: var(--pt-space-4) var(--pt-space-6); padding: var(--pt-space-6); border: 1px solid var(--pt-line); border-radius: var(--pt-radius-m); background: var(--pt-white); }
.pt-trip:hover { border-color: var(--pt-line-strong); }
.pt-trip__top { grid-area: top; display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--pt-space-2) var(--pt-space-4); color: var(--pt-muted); font-size: var(--pt-small); }
.pt-trip__link { color: var(--pt-ink); font-size: var(--pt-heading); font-weight: 700; text-decoration: none; }
.pt-trip__link::after { content: ""; position: absolute; inset: 0; border-radius: var(--pt-radius-m); }
.pt-trip__link:focus-visible { outline: none; }
.pt-trip__link:focus-visible::after { outline: var(--pt-focus-width) solid var(--pt-focus); outline-offset: 2px; }
.pt-trip__seats { margin-left: auto; color: var(--pt-ink); font-weight: 700; }
.pt-trip__times { grid-area: times; display: grid; grid-template-columns: auto minmax(60px, 1fr) auto; align-items: center; gap: var(--pt-space-4); }
.pt-trip__times > div:not(.pt-trip__line) { display: flex; flex-direction: column; }
.pt-trip__times b { font: 400 var(--pt-display-s) / 1 var(--pt-font-display); }
.pt-trip__times small { color: var(--pt-muted); font-size: var(--pt-small); }
.pt-trip__end { text-align: right; align-items: flex-end; }
.pt-trip__line { position: relative; display: flex; justify-content: center; align-items: center; gap: 6px; height: 32px; color: var(--pt-muted); font-size: var(--pt-small); }
.pt-trip__line::before { content: ""; position: absolute; left: 0; right: 0; top: 50%; border-top: 2px dotted var(--pt-line-strong); }
.pt-trip__line > * { position: relative; padding: 0 6px; background: var(--pt-white); }
.pt-trip__stops { grid-area: stops; display: flex; flex-wrap: wrap; gap: var(--pt-space-2) var(--pt-space-6); color: var(--pt-muted); font-size: var(--pt-small); }
.pt-trip__stops span { display: inline-flex; align-items: center; gap: 6px; }
.pt-trip__buy { grid-area: buy; display: flex; flex-direction: column; align-items: flex-end; justify-content: center; gap: var(--pt-space-2); text-align: right; }
.pt-trip__buy b { font-size: var(--pt-title); }
.pt-trip__buy small { display: block; color: var(--pt-muted); font-size: var(--pt-small); }
.pt-trip__buy .pt-c-button { position: relative; z-index: 1; }
.pt-trip-return { margin-top: var(--pt-space-12); }
@media (max-width: 760px) {
  .pt-trip-search { padding: var(--pt-space-4); }
  .pt-trip-strip { grid-template-columns: repeat(5, minmax(64px, 1fr)); overflow-x: auto; }
  .pt-trip { grid-template-columns: 1fr; grid-template-areas: "top" "times" "stops" "buy"; padding: var(--pt-space-4); }
  .pt-trip__buy { flex-direction: row; align-items: center; justify-content: space-between; text-align: left; }
  .pt-trip__times b { font-size: var(--pt-title); }
}


/* Shared footer payment marks; preserve each provider's artwork and proportions. */
.pt-footer-payments{display:flex;align-items:center;justify-content:flex-end;gap:var(--pt-space-4);padding-block:var(--pt-space-6);color:var(--pt-muted);font-size:14px}.pt-footer-payments ul{display:flex;flex-wrap:wrap;align-items:center;gap:var(--pt-space-2);list-style:none;margin:0;padding:0}.pt-footer-payments li{display:flex;align-items:center;justify-content:center;width:88px;height:48px;background:var(--pt-white);border:1px solid var(--pt-line);border-radius:var(--pt-radius-s)}.pt-footer-payments img{display:block;width:72px;height:36px;object-fit:contain}@media(max-width:600px){.pt-footer-payments{align-items:flex-start;justify-content:flex-start;flex-direction:column}.pt-footer-payments li{width:72px;height:44px}.pt-footer-payments img{width:60px;height:32px}}

/* KESC Global payment-badge treatment: clearspace on wrapper, original SVG proportions. */
.pt-footer-payments ul{gap:10px}.pt-footer-payments li{box-sizing:border-box;flex:0 0 auto;width:72px;height:44px;padding:9px 10px;border-radius:5px;overflow:hidden}.pt-footer-payments li>img{display:block;float:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;background:transparent;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain}

/* Footer icons supplement the visible link labels. */
.pt-footer-grid nav>a{display:flex;align-items:flex-start;gap:var(--pt-space-2)}.pt-footer-grid nav>a .pt-c-icon{flex:0 0 16px;margin-top:3px;color:var(--pt-muted)}.pt-footer-grid nav>a:hover .pt-c-icon{color:var(--pt-ticket-ink)}.pt-footer-payment-label{display:inline-flex;align-items:center;gap:var(--pt-space-2)}.pt-footer-payment-label .pt-c-icon{flex-shrink:0}

/* Block-backed pages retain the shared brand geometry. */
.pt-signup-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.pt-signup-fields>:nth-child(n+3){grid-column:1/-1}.pt-signup-story ol{list-style:none;counter-reset:steps;padding:0}.pt-signup-story li{position:relative;padding-left:44px;counter-increment:steps}.pt-signup-story li::before{content:counter(steps);position:absolute;left:0;top:0;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#e3edaa;color:#173b32;font-weight:700}.pt-signup-login{background:transparent!important;padding:0!important}@media(max-width:600px){.pt-signup-fields{grid-template-columns:1fr}.pt-signup-fields>*{grid-column:1}}

/* Signup is a full-viewport split, not the inset public content container. */
body:has(.pt-signup-layout) #main.site-container{width:100%;max-width:none;margin-inline:0;padding-inline:0}

/* Kit 6a: explicit separation between story photograph, heading and steps. */
body.pt-design-system .pt-signup-story > h2{margin:24px 0 0!important}
body.pt-design-system .pt-signup-story > ol{margin:24px 0 0!important}

/* Discovery spacing and secondary date shortcuts use the shared spacing scale. */
.pt-home-types{display:flex;flex-wrap:wrap;gap:var(--pt-space-2);margin-bottom:var(--pt-space-6)}
.pt-quick-dates{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:var(--pt-space-4);align-items:center;font-size:var(--pt-small)}
.pt-quick-dates span{color:var(--pt-muted)}
.pt-quick-dates a{display:inline-flex;align-items:center;min-height:var(--pt-control-height);text-decoration:underline;text-underline-offset:var(--pt-space-1);color:var(--pt-ticket-ink)}
