/* Client round 2 (October 2026): larger copy and ticker, venue information,
   space cards, contact channels, quick enquiry, immersive reviews and mobile rails. */

:root {
  --cube-copy: clamp(1.1875rem, 1.12rem + 0.3vw, 1.375rem);
  --cube-card-copy: clamp(1.0625rem, 1.03rem + 0.15vw, 1.1875rem);
  --cube-small: 1rem;
}

/* ---- Body copy: larger everywhere; classed text (kickers, chips, buttons) keeps its own size ---- */
main :is(p, li, dd, blockquote):not([class]):not(.cube-chip-row *, .cube-ticker *, .cube-card-overlay *, .cube-hero-wrap *, .cube-header *),
.editor-styles-wrapper :is(p, li):not([class]) {
  font-size: var(--cube-copy);
}
main :is(.cube-card, .cube-photo-card, .cube-vip-perks, .cube-step-card, .cube-venue-info, .cube-travel-mode, .cube-faqs, .cube-jackpot, .cube-steps, .cube-editorial-section, .cube-contact-channel) :is(p, li, dd, dt):not([class]),
main .cube-editorial-content > p:not([class]) {
  font-size: var(--cube-card-copy);
}
main .cube-small-copy {
  font-size: var(--cube-small);
}
main .cube-faqs summary {
  font-size: clamp(1.125rem, 1.05rem + 0.35vw, 1.375rem);
}
@media (max-width: 760px) {
  :root {
    --cube-copy: 1.125rem;
    --cube-card-copy: 1.0625rem;
  }
}

/* ---- USP ticker: four times larger (client request) ---- */
.cube-ticker .cube-ticker-item,
.cube-venue-ticker .cube-ticker-item {
  font-size: clamp(2.25rem, 1.2rem + 4.4vw, 4.5rem);
  line-height: 1;
  gap: clamp(28px, 4vw, 64px);
  color: #fbfdfd;
}
.cube-ticker .cube-separator {
  width: clamp(22px, 2.6vw, 40px);
  height: clamp(22px, 2.6vw, 40px);
}
.cube-marquee-ticker {
  --cube-marquee-gap: clamp(28px, 4vw, 64px);
  padding-block: clamp(22px, 3.4vw, 44px);
}
.cube-ticker p {
  font-size: clamp(2.25rem, 1.2rem + 4.4vw, 4.5rem);
  line-height: 1;
}

/* ---- What's on link strip (venue pages) ---- */
.cube-whats-on-strip {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
}
.cube-whats-on-strip .cube-head {
  max-width: 760px;
}
.cube-whats-on-strip .wp-block-buttons {
  margin: 0 !important;
}

/* ---- Space cards: smallest to biggest ---- */
.cube-space-cards {
  counter-reset: cube-space;
}
.cube-space-card {
  display: flex;
  flex-direction: column;
  gap: 12px;
  position: relative;
}
.cube-space-card::before {
  counter-increment: cube-space;
  content: counter(cube-space, decimal-leading-zero);
  position: absolute;
  top: 34px;
  left: 34px;
  z-index: 1;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(6, 7, 10, 0.75);
  font-family: var(--wp--preset--font-family--ui);
  font-size: 0.9rem;
  letter-spacing: 0.1em;
}
.cube-space-card figure {
  margin: 0 !important;
  border-radius: 16px;
  overflow: hidden;
}
.cube-space-card img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.cube-space-card h3 {
  font-size: clamp(1.35rem, 1.2rem + 0.5vw, 1.65rem);
}
.cube-space-card .wp-block-buttons {
  margin-top: auto !important;
}

/* ---- Venue information: hours, getting here, contact, FAQs ---- */
.cube-venue-information > .cube-head {
  margin-bottom: 28px;
}
.cube-venue-information .cube-venue-info {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  align-items: start;
}
.cube-info-panel {
  border: 1px solid var(--cube-line, #3a4150);
  border-radius: var(--cube-radius, 22px);
  background: var(--cube-surface, #0e1016);
  padding: 0;
  margin: 0;
}
.cube-info-panel > summary {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 4px 12px;
  padding: 20px 56px 20px 24px;
  position: relative;
  cursor: pointer;
  list-style: none;
  font-family: var(--wp--preset--font-family--judge);
  font-size: clamp(1.25rem, 1.1rem + 0.5vw, 1.6rem);
  text-transform: uppercase;
  line-height: 1.1;
}
.cube-info-panel > summary::-webkit-details-marker {
  display: none;
}
.cube-info-panel > summary::after {
  content: "+";
  position: absolute;
  right: 22px;
  top: 50%;
  translate: 0 -50%;
  font-family: var(--wp--preset--font-family--ui);
  font-size: 1.6rem;
  transition: rotate 0.2s ease;
}
.cube-info-panel[open] > summary::after {
  rotate: 45deg;
}
/* "Common questions": the search and questions span the whole panel. */
.cube-info-faqs .cube-faqs,
.cube-info-faqs .cube-faq-list,
.cube-info-faqs .cube-faq-search {
  max-width: none !important;
  width: 100%;
}
/* Desktop: the panels are always open, so their headings are plain titles. */
.cube-info-panel.is-fixed-open > summary {
  cursor: default;
  padding-right: 24px;
}
.cube-info-panel.is-fixed-open > summary::after {
  display: none;
}
.cube-info-panel > summary:focus-visible {
  outline: 2px solid var(--cube-red, #e50138);
  outline-offset: 2px;
  border-radius: var(--cube-radius, 22px);
}
.cube-open-today {
  font-family: var(--wp--preset--font-family--ui);
  font-size: 1rem;
  letter-spacing: 0.06em;
  color: var(--cube-muted, #bcc1cc);
}
.cube-open-today.is-open {
  color: #6fe0a0;
}
.cube-info-body,
.cube-info-panel > :not(summary) {
  padding: 0 24px 24px;
}
.cube-info-body > :first-child {
  margin-top: 0;
}
.cube-info-body .cube-button,
.cube-info-body .cube-visit-phone,
.cube-info-body .cube-visit-email,
.cube-info-body .cube-visit-whatsapp {
  display: inline-block;
  margin: 8px 8px 0 0;
}
.cube-info-body .cube-visit-phone,
.cube-info-body .cube-visit-email,
.cube-info-body .cube-visit-whatsapp {
  display: block;
}
.cube-info-faqs {
  margin-top: 20px;
}
.cube-info-faqs > .cube-faqs {
  padding-top: 0;
}
@media (max-width: 1000px) {
  .cube-venue-information .cube-venue-info {
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .cube-info-faqs {
    margin-top: 12px;
  }
}

/* ---- Contact channels: Message / Call / Email ---- */
.cube-contact-channels {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 330px), 1fr));
  gap: 20px;
  margin-top: 28px;
}
.cube-contact-channel {
  min-width: 0;
  overflow-wrap: break-word;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: clamp(22px, 3vw, 32px);
  border: 1px solid var(--cube-line, #3a4150);
  border-radius: var(--cube-radius, 22px);
  background: var(--cube-surface, #0e1016);
}
.cube-contact-channel > * {
  margin: 0 !important;
}
.cube-contact-channel h3 {
  font-size: clamp(1.6rem, 1.3rem + 1vw, 2.2rem);
}
.cube-contact-channel a:not(.wp-block-button__link) {
  color: #fbfdfd;
  font-weight: 600;
}
.cube-contact-channel-featured {
  border-color: #25d366;
  background: linear-gradient(160deg, rgba(37, 211, 102, 0.16), var(--cube-surface, #0e1016) 60%);
}
.cube-contact-channel-featured .wp-block-button:first-child .wp-block-button__link {
  background: #25d366;
  color: #06070a;
}
.cube-contact-channel-actions {
  gap: 10px !important;
  margin-top: 8px !important;
}
@media (max-width: 900px) {
  .cube-contact-channels {
    grid-template-columns: 1fr;
  }
}

/* ---- Quick enquiry form ---- */
/* ---- Food: menu highlights and brand tiles ---- */
.cube-menu-highlight {
  margin: 0;
}
.cube-menu-highlight figure {
  margin: 0 !important;
  border-radius: 18px;
  overflow: hidden;
}
.cube-menu-highlight img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.cube-menu-highlight .cube-small-copy {
  margin-top: 8px;
  color: var(--cube-muted, #bcc1cc);
}
.cube-brand-grid .cube-editorial-source-card .cube-kicker {
  margin-top: 4px;
}
.cube-brand-grid .cube-small-copy {
  color: var(--cube-muted, #bcc1cc);
}

/* ---- Immersive Google reviews ---- */
.cube-reviews-immersive {
  display: grid;
  grid-template-columns: minmax(200px, 260px) minmax(0, 1fr);
  gap: clamp(20px, 3vw, 40px);
  align-items: center;
}
.cube-rv-summary > * {
  margin: 0 0 10px;
}
.cube-rv-score {
  display: flex;
  align-items: center;
  gap: 12px;
}
.cube-rv-score strong {
  font-family: var(--wp--preset--font-family--cube);
  font-size: clamp(3rem, 2rem + 3vw, 4.5rem);
  line-height: 1;
}
.cube-rv-stars {
  color: #fbbc04;
  letter-spacing: 0.12em;
}
.cube-rv-total {
  color: var(--cube-muted, #bcc1cc);
}
.cube-rv-stage {
  position: relative;
  min-width: 0;
}
.cube-rv-track {
  list-style: none;
  margin: 0;
  padding: 0 0 4px;
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: calc((100% - 40px) / 3);
  gap: 20px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}
.cube-rv-track::-webkit-scrollbar {
  display: none;
}
.cube-rv-card {
  scroll-snap-align: start;
  margin: 0;
}
.cube-rv-card figure {
  height: 100%;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 26px;
  border: 1px solid var(--cube-line, #3a4150);
  border-radius: var(--cube-radius, 22px);
  background: var(--cube-surface, #0e1016);
}
.cube-rv-card blockquote {
  margin: 0;
  padding: 0;
  border: 0;
}
.cube-rv-card blockquote p {
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 6;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.cube-rv-card figcaption {
  margin-top: auto;
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
  font-size: 0.95rem;
  color: var(--cube-muted, #bcc1cc);
}
.cube-rv-name {
  color: #fbfdfd;
  font-weight: 600;
}
.cube-rv-source {
  color: inherit;
}
.cube-rv-controls {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 14px;
}
.cube-rv-controls button {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 1px solid var(--cube-line, #3a4150);
  background: transparent;
  color: #fbfdfd;
  font-size: 1.2rem;
  cursor: pointer;
}
.cube-rv-controls button:focus-visible {
  outline: 2px solid var(--cube-red, #e50138);
  outline-offset: 2px;
}
.cube-rv-progress {
  display: none;
}
@media (max-width: 760px) {
  /* Story-style viewer: one review fills the screen, auto-advances, tap to move, hold to pause. */
  .cube-reviews-immersive {
    grid-template-columns: 1fr;
  }
  .cube-rv-summary {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 16px;
  }
  .cube-rv-summary > * {
    margin: 0;
  }
  .cube-rv-write {
    order: 5;
  }
  .cube-rv-stage {
    border-radius: 26px;
    overflow: hidden;
    background: radial-gradient(120% 90% at 20% 0%, rgba(229, 1, 56, 0.35), transparent 60%), #0e1016;
  }
  .cube-rv-track {
    grid-auto-columns: 100%;
    gap: 0;
    padding: 0;
    scroll-snap-type: x mandatory;
  }
  .cube-rv-card {
    scroll-snap-stop: always;
  }
  .cube-rv-card figure {
    min-height: min(56vh, 480px);
    justify-content: center;
    padding: 64px 28px 36px;
    border: 0;
    border-radius: 0;
    background: transparent;
  }
  .cube-rv-card .cube-rv-stars {
    font-size: 1.4rem;
  }
  .cube-rv-card blockquote p {
    font-family: var(--wp--preset--font-family--judge);
    text-transform: uppercase;
    font-size: clamp(1.6rem, 6.6vw, 2.2rem);
    line-height: 1.12;
    -webkit-line-clamp: 9;
  }
  .cube-rv-card blockquote p::before {
    content: "\201C";
  }
  .cube-rv-card blockquote p::after {
    content: "\201D";
  }
  .cube-rv-progress {
    position: absolute;
    top: 18px;
    left: 18px;
    right: 18px;
    display: flex;
    gap: 5px;
    z-index: 2;
    pointer-events: none;
  }
  .cube-rv-progress span {
    flex: 1;
    height: 3px;
    border-radius: 3px;
    background: rgba(251, 253, 253, 0.28);
    overflow: hidden;
  }
  .cube-rv-progress span::after {
    content: "";
    display: block;
    height: 100%;
    width: calc(var(--fill, 0) * 100%);
    background: #fbfdfd;
  }
  .cube-rv-controls {
    position: absolute;
    inset: auto 16px 16px auto;
    margin: 0;
  }
  .cube-rv-controls button {
    width: 42px;
    height: 42px;
    background: rgba(6, 7, 10, 0.5);
  }
  .cube-reviews-immersive.is-paused .cube-rv-progress {
    opacity: 0.55;
  }
}

/* ---- Mobile card rails: swipeable rows (about 40% of the next card peeks in) ---- */
@media (max-width: 760px) {
  .wp-site-blocks .cube-grid.cube-rail {
    display: flex !important;
    flex-wrap: nowrap;
    gap: 14px;
    grid-template-columns: none;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    padding-bottom: 4px;
  }
  .wp-site-blocks .cube-grid.cube-rail::-webkit-scrollbar {
    display: none;
  }
  .wp-site-blocks .cube-grid.cube-rail > * {
    flex: 0 0 calc((100% - 14px) / 1.42);
    min-width: 0;
    margin: 0 !important;
    scroll-snap-align: center;
  }
  .cube-rail img {
    aspect-ratio: 16 / 10 !important;
    max-height: 34vh;
    object-fit: cover;
  }
  .cube-rail .cube-editorial-source-card p:not([class]) {
    display: -webkit-box;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .cube-rail-dots {
    display: flex;
    justify-content: center;
    gap: 6px;
    margin-top: 14px;
  }
  .cube-rail-dots span {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: rgba(251, 253, 253, 0.3);
    transition: background 0.2s ease, width 0.2s ease;
  }
  .cube-rail-dots span.is-active {
    border-radius: 4px;
    background: var(--cube-red, #e50138);
  }
}

/* ---- Numbered steps: number | headline | detail. Headline and detail are separate
   editable paragraphs, so all styling lives here rather than in the copy. ---- */
.cube-step-list {
  counter-reset: steps;
  display: grid;
  gap: 12px;
}
.cube-step-list > .cube-step {
  counter-increment: steps;
  display: grid;
  grid-template-columns: 2.2em minmax(0, 1fr) minmax(0, 1.15fr);
  column-gap: 18px;
  align-items: baseline;
  margin: 0 !important;
  padding: 15px 20px;
  border-radius: 16px;
  background: var(--cube-surface, #0e1016);
}
.cube-step-list > .cube-step::before {
  content: "0" counter(steps);
  font-family: var(--wp--preset--font-family--cube);
  color: #ff6b8a;
  font-size: 20px;
}
main .cube-step > p {
  margin: 0 !important;
}
main .cube-step .cube-step-title {
  font-family: var(--wp--preset--font-family--judge);
  text-transform: uppercase;
  font-size: 19px;
  line-height: 1.6;
}
main .cube-step .cube-step-detail {
  font-family: var(--wp--preset--font-family--copy);
  font-size: 15px;
  line-height: 1.45;
  color: var(--cube-muted, #bcc1cc);
}
main .cube-step .cube-step-detail:empty {
  display: none;
}
@media (max-width: 760px) {
  .cube-step-list > .cube-step {
    grid-template-columns: 2.2em minmax(0, 1fr);
    row-gap: 4px;
  }
  main .cube-step .cube-step-detail {
    grid-column: 2;
  }
}

/* ---- Contact channel lines: label and link are separate editable paragraphs ---- */
main .cube-contact-channel .cube-channel-label {
  margin-top: 6px !important;
  font-family: var(--wp--preset--font-family--ui);
  font-size: 0.9rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--cube-muted, #bcc1cc);
}
main .cube-contact-channel .cube-channel-value {
  margin-top: -6px !important;
  font-size: 1.0625rem;
}

/* ---- Slider repeaters: one field per item; empty slots are spare and hidden on the site ---- */
/* The same height as the moving row it becomes (.cube-marquee-ticker), so nothing below it moves when the script runs. */
.cube-ticker:not(.cube-marquee) {
  display: flex;
  flex-wrap: nowrap;
  gap: clamp(28px, 4vw, 64px);
  overflow: hidden;
  white-space: nowrap;
  padding-block: clamp(22px, 3.4vw, 44px);
}
.cube-ticker .cube-ticker-text {
  margin: 0;
  font-family: var(--wp--preset--font-family--judge);
  text-transform: uppercase;
  white-space: nowrap;
}
.cube-ticker .cube-slot:empty,
.cube-confessional blockquote:has(> .cube-slot:empty) {
  display: none;
}

/* ---- Venue and menu choosers (open as dialogs; shown in place only when targeted without JavaScript) ---- */
.cube-chooser {
  display: none;
}
.cube-chooser:target,
.cube-chooser-dialog .cube-chooser {
  display: block;
}
.cube-chooser-dialog {
  width: min(560px, calc(100vw - 32px));
  padding: clamp(28px, 4vw, 44px);
  border: 1px solid var(--cube-line, #3a4150);
  border-radius: var(--cube-radius, 22px);
  background: var(--cube-surface, #0e1016);
  color: #fbfdfd;
}
.cube-chooser-dialog::backdrop {
  background: rgba(6, 7, 10, 0.78);
  backdrop-filter: blur(6px);
}
.cube-chooser > * {
  margin: 0 0 14px !important;
}
.cube-chooser h2 {
  font-size: clamp(1.8rem, 1.4rem + 1.6vw, 2.6rem);
}
.cube-chooser-options {
  display: grid !important;
  gap: 12px;
  margin-top: 22px !important;
}
.cube-chooser-options .wp-block-button,
.cube-chooser-options .wp-block-button__link {
  width: 100%;
}
.cube-chooser-options .wp-block-button__link {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 18px 24px;
  font-size: 1.05rem;
}
.cube-chooser-options .wp-block-button__link::after {
  content: "→";
}
.cube-chooser-close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid var(--cube-line, #3a4150);
  background: transparent;
  color: #fbfdfd;
  font-size: 1.6rem;
  line-height: 1;
  cursor: pointer;
}
.cube-chooser-close:focus-visible,
.cube-chooser-options a:focus-visible {
  outline: 2px solid #fbfdfd;
  outline-offset: 3px;
}

/* ---- Homepage Food & drink: two cards and a View menus button ---- */
.cube-food-types .cube-food-card img {
  aspect-ratio: 16 / 10;
  object-fit: cover;
}
.cube-food-types .cube-food-card-copy {
  margin: 14px 0 10px !important;
  color: var(--cube-muted, #bcc1cc);
}
/* Homepage sections: a "View menus" / "View events" link sits on the title's row, on the right;
   the intro runs full width below. */
.cube-head:has(> :is(.cube-food-menus, .cube-head-link)) {
  grid-template-columns: minmax(0, 1fr) auto;
  column-gap: 24px;
  align-items: center;
}
.cube-head:has(> :is(.cube-food-menus, .cube-head-link)) > * {
  grid-column: 1 / -1;
}
.cube-head:has(> :is(.cube-food-menus, .cube-head-link)) > h2 {
  grid-column: 1;
}
.cube-head > :is(.cube-food-menus, .cube-head-link) {
  grid-column: 2 !important;
  grid-row: 1;
  margin: 0 !important;
  white-space: nowrap;
}

/* Cards that are one link: the heading's link covers the whole card, and an arrow after the heading
   shows it can be clicked. */
.cube-card-link {
  position: relative;
  transition: transform 0.25s ease;
}
.cube-card-link h3 a {
  color: inherit;
  text-decoration: none;
}
/* The text follows the heading (photo cards otherwise push their last paragraph to the bottom for "Learn more"). */
.cube-card-link p:last-child {
  margin-top: 0 !important;
}
.cube-card-link h3 a::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: inherit;
}
.cube-card-link h3::after {
  content: "→";
  display: inline-block;
  margin-left: 10px;
  font-family: system-ui;
  color: #ff496e;
  transition: transform 0.3s;
}
.cube-card-link:hover h3::after,
.cube-card-link:focus-within h3::after {
  transform: translateX(6px);
}
.cube-card-link:hover {
  transform: translateY(-3px);
}
.cube-card-link:has(a:focus-visible) {
  outline: 2px solid #fbfdfd;
  outline-offset: 4px;
}
.cube-card-link h3 a:focus-visible {
  outline: none;
}
@media (prefers-reduced-motion: reduce) {
  .cube-card-link,
  .cube-card-link h3::after {
    transition: none;
  }
  .cube-card-link:hover {
    transform: none;
  }
}

/* ---- Groups intro: copy and photograph side by side ---- */
.cube-groups-intro .cube-editorial-feature {
  align-items: center;
}

/* ---- The Game: compact gallery strip and closing call to action ---- */
.cube-game-gallery {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px;
}
.cube-game-gallery figure {
  margin: 0 !important;
  border-radius: 14px;
  overflow: hidden;
}
.cube-game-gallery img {
  display: block;
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
}
.cube-game-explainer .cube-step-list {
  margin-top: 24px;
}
.cube-game-cta .cube-game-cta-actions {
  justify-content: center;
  margin-top: 20px !important;
}
@media (max-width: 1000px) {
  .cube-game-gallery {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 600px) {
  .cube-game-gallery {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
  }
  .cube-game-gallery figure {
    flex: 0 0 42%;
    scroll-snap-align: start;
  }
}

/* ---- Slider navigation: square controls instead of circles ---- */
.cube-game-scroll,
.cube-rv-controls button,
.cube-game-dialog [data-prev],
.cube-game-dialog [data-next] {
  border-radius: 4px !important;
}
.cube-rail-dots span,
.cube-rail-dots span.is-active {
  border-radius: 1px !important;
}

/* ---- Venue chooser mirrors the homepage venue cards ---- */
.cube-chooser-dialog:has(.cube-chooser-cards) {
  width: min(1080px, calc(100vw - 32px));
}
.cube-chooser-dialog:has(.cube-grid-2.cube-chooser-cards) {
  width: min(760px, calc(100vw - 32px));
}
.cube-chooser-cards {
  margin-top: 22px !important;
}
.cube-chooser-cards .cube-venue-card img {
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
@media (max-width: 760px) {
  .cube-chooser-cards {
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }
  .cube-chooser-cards .cube-venue-card img {
    aspect-ratio: 21 / 9;
  }
}
.cube-chooser .cube-reveal,
.cube-chooser .cube-grid > * {
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  transition: none !important;
}

/* ---- Homepage steps as four "cube" tiles that flip in one after another ---- */
.cube-about-intro:has(.cube-step-tiles),
.cube-split:has(> .cube-step-tiles) {
  display: block;
}
.cube-about-intro:has(.cube-step-tiles) .cube-head,
.cube-split:has(> .cube-step-tiles) > .cube-head {
  max-width: 720px;
}
@media (min-width: 1101px) {
  .cube-step-list.cube-step-tiles.cube-step-tiles-5 {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
}
.cube-step-list.cube-step-tiles {
  gap: 16px;
  margin-top: clamp(22px, 3vw, 34px) !important;
  perspective: 1200px;
}
.cube-step-list.cube-step-tiles > .cube-step {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: clamp(18px, 1.8vw, 24px);
  border: 1px solid rgba(251, 253, 253, 0.12);
  border-radius: 18px;
  background:
    linear-gradient(155deg, rgba(229, 1, 56, 0.18), rgba(14, 16, 22, 0) 55%),
    linear-gradient(0deg, rgba(14, 16, 22, 0.96), rgba(14, 16, 22, 0.96));
  box-shadow: inset 0 1px 0 rgba(251, 253, 253, 0.08), 0 18px 40px rgba(0, 0, 0, 0.35);
}
/* Number smallest, headline largest. */
.cube-step-list.cube-step-tiles > .cube-step::before {
  font-size: 1rem;
  line-height: 1;
  letter-spacing: 0.08em;
}
main .cube-step-tiles .cube-step .cube-step-title {
  font-size: clamp(1.45rem, 1.1rem + 0.9vw, 1.9rem);
  line-height: 1.1;
}
main .cube-step-tiles .cube-step .cube-step-detail {
  font-size: 15px;
}
/* The site's scroll reveal becomes a staggered flip for these tiles. */
.cube-step-tiles > .cube-step.cube-reveal {
  opacity: 0;
  transform: rotateY(-80deg);
  transform-origin: 0 50%;
  transition:
    transform 950ms cubic-bezier(0.16, 1, 0.3, 1) var(--cube-delay, 0ms),
    opacity 450ms ease var(--cube-delay, 0ms);
}
.cube-step-tiles > .cube-step:nth-child(2) { --cube-delay: 180ms !important; }
.cube-step-tiles > .cube-step:nth-child(3) { --cube-delay: 360ms !important; }
.cube-step-tiles > .cube-step:nth-child(4) { --cube-delay: 540ms !important; }
.cube-step-tiles > .cube-step.cube-reveal.cube-in {
  opacity: 1;
  transform: none;
}
html.cube-motion-paused .cube-step-tiles > .cube-step.cube-reveal {
  opacity: 1;
  transform: none;
  transition: none;
}
@media (prefers-reduced-motion: reduce) {
  .cube-step-tiles > .cube-step.cube-reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* ---- Homepage games showcase on phones: a swipeable row of full cards (no hover needed) ---- */
@media (max-width: 760px) {
  .cube-games-showcase .cube-game-rail {
    display: flex;
    height: auto;
    gap: 12px;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    padding: 0 20px 6px;
    margin-inline: -20px;
    scroll-padding-inline: 20px;
  }
  .cube-games-showcase .cube-game-rail::-webkit-scrollbar {
    display: none;
  }
  .cube-games-showcase .cube-game-card,
  .cube-games-showcase .cube-game-card:nth-child(n + 5) {
    display: block;
    flex: 0 0 62%;
    scroll-snap-align: start;
    transition: none;
  }
  .cube-games-showcase .cube-game-card[hidden] {
    display: none;
  }
  .cube-games-showcase .cube-game-card > button {
    position: relative;
    height: auto;
    width: 100%;
    aspect-ratio: 3 / 4;
    border-radius: 18px;
  }
  .cube-games-showcase .cube-game-card img,
  .cube-games-showcase .cube-game-active img {
    transform: none;
    filter: none;
  }
  .cube-games-showcase .cube-game-card button span {
    opacity: 1;
    font-size: 18px;
    padding: 70px 16px 14px;
    background: linear-gradient(transparent, #06070ad9);
    white-space: normal;
  }
}

/* ---- Game cards: a "View game →" line under the title, in the brand's "Learn more →" style ---- */
.cube-game-card .cube-game-name::after {
  content: "View game";
  display: block;
  width: max-content;
  margin-top: 8px;
  padding-right: 24px;
  font: 600 13px/1.2 var(--wp--preset--font-family--ui);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: #fbfdfd;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 10'%3E%3Cpath d='M0 5h14M10 1l4 4-4 4' fill='none' stroke='%23ff496e' stroke-width='1.6'/%3E%3C/svg%3E") right center / 15px 10px no-repeat;
  transition: padding-right 300ms ease;
}
.cube-game-card [data-game-open]:hover .cube-game-name::after,
.cube-game-card [data-game-open]:focus-visible .cube-game-name::after {
  padding-right: 30px;
}
.cube-games:not(.cube-games-showcase) .cube-game-card button > .cube-game-play {
  padding: 0;
  height: 36px;
  border-radius: 4px;
  background: rgba(6, 7, 10, 0.55);
}
/* The play mark sits bottom right beside "View game", clear of the clip's own title at the top (22 October). */
.cube-games:not(.cube-games-showcase) .cube-game-card button > .cube-game-play {
  top: auto;
  bottom: 14px;
}
.cube-games:not(.cube-games-showcase) .cube-game-card button > .cube-game-name {
  padding-right: 60px;
}

/* ---- Venue sub-navigation (Overview / Food & drink / Events / Venue info) sticks once scrolled past ---- */
.cube-venue-nav {
  position: sticky;
  top: 0;
  z-index: 30;
  transition: background-color 250ms ease;
}
/* The margin keeps the space this takes the same stuck or not, so the page below does not move as it sticks. It stands
   for the difference in padding (see the not-stuck rules further down), so it holds however many lines the row wraps to. */
.cube-venue-nav.is-stuck {
  padding-top: 10px;
  padding-bottom: 10px;
  margin-bottom: 9px !important;
  background: rgba(6, 7, 10, 0.88);
  backdrop-filter: blur(10px);
  /* Full-width backing while the content keeps its column. */
  box-shadow: 0 0 0 100vmax rgba(6, 7, 10, 0.88), 0 1px 0 100vmax rgba(251, 253, 253, 0.08);
  clip-path: inset(0 -100vmax);
}
body.admin-bar .cube-venue-nav {
  top: 32px;
}
.cube-design-page [id] {
  scroll-margin-top: 84px;
}
@media (max-width: 782px) {
  body.admin-bar .cube-venue-nav {
    top: 46px;
  }
}
@media (max-width: 760px) {
  .cube-venue-nav .cube-chip-row {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
    margin-inline: -20px;
    padding-inline: 20px;
  }
  .cube-venue-nav .cube-chip-row::-webkit-scrollbar {
    display: none;
  }
  .cube-venue-nav .cube-chip-row a {
    white-space: nowrap;
    min-height: 38px;
    padding: 0 16px;
  }
}

/* ---- Food & drink on phones: two compact cards side by side instead of a tall stack ---- */
@media (max-width: 760px) {
  .wp-site-blocks .cube-grid.cube-food-types,
  .wp-site-blocks .cube-grid-2:has(> .cube-kitchen-card:nth-child(2):last-child) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
  .cube-food-types .cube-food-card img,
  .cube-grid-2 > .cube-kitchen-card img {
    aspect-ratio: 1;
    object-fit: cover;
  }
  .cube-food-types .cube-card-title {
    font-size: 1rem;
  }
  .cube-food-types .cube-food-card-copy {
    margin: 10px 0 0 !important;
    font-size: 14px !important;
    line-height: 1.45;
    display: -webkit-box;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .cube-food-types .cube-chip-row {
    display: none;
  }
  .cube-grid-2 > .cube-kitchen-card h2 {
    font-size: 1.05rem;
    line-height: 1.15;
    margin-top: 10px !important;
  }
  .cube-grid-2 > .cube-kitchen-card .cube-more,
  .cube-grid-2 > .cube-kitchen-card .cube-more a {
    font-size: 12px;
  }
}

/* ---- Games showcase end card ("More about THE CUBE") ---- */
.cube-games-showcase .cube-game-card.cube-game-end-card {
  flex: 0 0 clamp(110px, 10vw, 150px);
  display: flex;
}
.cube-game-end-card .cube-game-end-link.wp-block-button__link {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: flex-start;
  gap: 14px;
  height: 100%;
  padding: 22px 18px;
  border-radius: 22px;
  border: 1px solid rgba(251, 253, 253, 0.14);
  background:
    linear-gradient(160deg, rgba(229, 1, 56, 0.55), rgba(229, 1, 56, 0.08) 60%),
    #0e1016;
  color: #fbfdfd;
  text-align: left;
  font: 600 14px/1.25 var(--wp--preset--font-family--ui);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  white-space: normal;
  transition: background-color 300ms ease;
}
.cube-game-end-card .cube-game-end-link::after {
  content: "";
  width: 30px;
  height: 18px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 10'%3E%3Cpath d='M0 5h14M10 1l4 4-4 4' fill='none' stroke='%23fbfdfd' stroke-width='1.4'/%3E%3C/svg%3E") left center / contain no-repeat;
  transition: transform 300ms ease;
}
.cube-game-end-card .cube-game-end-link:hover::after,
.cube-game-end-card .cube-game-end-link:focus-visible::after {
  transform: translateX(6px);
}
@media (max-width: 760px) {
  .cube-games-showcase .cube-game-card.cube-game-end-card {
    flex: 0 0 62%;
    aspect-ratio: 3 / 4;
  }
  .cube-game-end-card .cube-game-end-link.wp-block-button__link {
    font-size: 20px;
    border-radius: 18px;
  }
}

/* ---- Footer on phones: social links line up on the left with the legal links ---- */

.cube-chip-row a[aria-current="location"] {
  color: #06070a;
  background: #fbfdfd;
  border-color: #fbfdfd;
}

/* ---- LIVE banner on phones: one tidy row (LIVE · message · Watch now →) ---- */
@media (max-width: 760px) {
  .cube-onair-frame .cube-live-link {
    flex-wrap: nowrap;
    gap: 10px;
    min-height: 44px;
    padding: 8px 12px;
  }
  .cube-live-tag {
    flex: none;
    padding: 4px 10px;
    font-size: 12px;
  }
  .cube-live-message {
    flex: 1 1 auto;
    min-width: 0;
    font-size: 14px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .cube-live-watch {
    display: inline-flex !important;
    flex: none;
    font-size: 12px;
  }
}
@media (max-width: 380px) {
  .cube-live-message {
    white-space: normal;
    line-height: 1.2;
    font-size: 13px;
  }
  .cube-live-watch {
    font-size: 0 !important;
  }
  .cube-live-watch::after {
    content: "Watch →";
    font-size: 12px;
  }
}
/* LIVE banner on wider screens: content grouped in the centre rather than spread to the edges. */
@media (min-width: 761px) {
  .cube-onair-frame .cube-live-link {
    justify-content: center;
    gap: 16px;
  }
  .cube-live-message {
    flex: 0 1 auto;
  }
  .cube-live-watch {
    margin-left: 6px;
  }
}
/* ---- LIVE banner with more than one venue live: one at a time (Floom > Announcements, rotating), with Floom's
   previous, pause and next buttons at the end of the bar rather than on a line of their own. ---- */
.cube-onair-frame .cube-live-banner.is-rotating {
  display: flex;
  align-items: center;
}
.cube-onair-frame .cube-live-banner.is-rotating .cube-live-link {
  flex: 1 1 auto;
  min-width: 0;
}
.cube-onair-frame .cube-live-banner .fcore-ab__controls {
  flex: none;
  gap: 0;
  margin-right: 8px;
  color: #fbfdfd;
  font: 600 12px/1 var(--wp--preset--font-family--ui);
  letter-spacing: 0.08em;
}
.cube-onair-frame .cube-live-banner .fcore-ab__controls[hidden] {
  display: none;
}
.cube-onair-frame .cube-live-banner .fcore-ab__control {
  width: 32px;
  height: 32px;
}
.cube-onair-frame .cube-live-banner .fcore-ab__control svg {
  width: 16px;
  height: 16px;
}
@media (min-width: 761px) {
  /* Room on the left to match the buttons, so the message stays in the centre of the frame. With the buttons
     switched off (Floom > Announcement Bar) they show only when keyboard focus reaches them. */
  .cube-onair-frame .cube-live-banner.is-rotating:is(:not([data-controls="focus"]), :has(.fcore-ab__controls:focus-within))::before {
    content: "";
    flex: none;
    width: 134px;
  }
}
@media (max-width: 760px) {
  .cube-onair-frame .cube-live-banner .fcore-ab__count,
  .cube-onair-frame .cube-live-banner.is-rotating:is(:not([data-controls="focus"]), :has(.fcore-ab__controls:focus-within)) .cube-live-watch {
    display: none !important;
  }
  .cube-onair-frame .cube-live-banner .fcore-ab__controls {
    margin-right: 4px;
  }
  .cube-onair-frame .cube-live-banner .fcore-ab__control {
    width: 28px;
    height: 28px;
  }
}
/* The frame belongs to the bar: while no venue is live (all switched off, or one due later) the film stands alone. */
.cube-onair-frame:not(:has(.fcore-ab.has-visible)) {
  padding: 0;
}
.cube-onair-frame:not(:has(.fcore-ab.has-visible)) > .cube-onair-outline {
  display: none;
}

/* ---- Venue tabs: a bar attached to the bottom of the hero card (becomes the sticky bar on scroll) ---- */
.cube-venue-nav:not(.is-stuck) {
  padding-top: 0;
  padding-bottom: 6px;
  margin-top: -2px !important;
}
.cube-venue-nav:not(.is-stuck) .cube-chip-row {
  width: min(1100px, calc(100% - 60px));
  margin-inline: auto;
  justify-content: center;
  padding: 12px 18px;
  border: 1px solid rgba(251, 253, 253, 0.1);
  border-top: 0;
  border-radius: 0 0 22px 22px;
  background:
    linear-gradient(180deg, rgba(229, 1, 56, 0.12), rgba(229, 1, 56, 0) 70%),
    #0e1016;
  box-shadow: 0 18px 36px rgba(0, 0, 0, 0.35);
}
.cube-venue-nav.is-stuck .cube-chip-row {
  justify-content: center;
}
@media (max-width: 760px) {
  .cube-venue-nav:not(.is-stuck) .cube-chip-row {
    width: calc(100% - 28px);
    margin-inline: auto;
    justify-content: flex-start;
    padding: 10px 12px;
    border-radius: 0 0 18px 18px;
  }
  .cube-venue-nav.is-stuck .cube-chip-row {
    justify-content: flex-start;
  }
  .cube-venue-nav.is-stuck {
    margin-bottom: 5px !important;
  }
}

/* ---- Merged venue pages: Food & drink and Events sections ---- */
.cube-venue-part {
  margin: 0 !important;
}
.cube-venue-part > .cube-section:first-child {
  border-top: 1px solid rgba(251, 253, 253, 0.08);
}

/* ---- Venue game rows: no native scrollbar, progress dots, edge fade, arrow ends ---- */
.cube-games:not(.cube-games-showcase) .cube-game-rail {
  scrollbar-width: none;
}
.cube-games:not(.cube-games-showcase) .cube-game-rail::-webkit-scrollbar {
  display: none;
}
.cube-games.cube-games-more:not(.cube-games-showcase) .cube-game-rail {
  mask-image: linear-gradient(90deg, #000 85%, transparent);
}
.cube-game-dots {
  display: flex;
  justify-content: center;
  gap: 6px;
  margin-top: 18px;
}
.cube-game-dots span {
  width: 7px;
  height: 7px;
  border-radius: 1px;
  background: rgba(251, 253, 253, 0.3);
  transition: background 0.2s ease, width 0.2s ease;
}
.cube-game-dots span.is-active {
  background: var(--cube-red, #e50138);
}
.cube-game-scroll.is-end {
  opacity: 0.35;
  pointer-events: none;
}

/* ---- Step tiles: the number sits on the headline's line; the detail runs full width below.
   On wider screens headlines and details line up across every tile, whatever the text length. ---- */
.cube-step-list.cube-step-tiles > .cube-step {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: 12px;
  row-gap: 8px;
  align-items: baseline;
  align-content: start;
}
.cube-step-list.cube-step-tiles > .cube-step::before {
  grid-column: 1;
  grid-row: 1;
  margin-bottom: 0;
}
main .cube-step-tiles .cube-step .cube-step-title {
  grid-column: 2;
  grid-row: 1;
  font-size: clamp(1.1rem, 0.95rem + 0.45vw, 1.35rem);
}
main .cube-step-tiles .cube-step .cube-step-detail {
  grid-column: 1 / -1;
  grid-row: 2;
}
@media (min-width: 761px) {
  .cube-step-list.cube-step-tiles > .cube-step {
    grid-template-rows: subgrid;
    grid-row: span 2;
  }
}

/* ---- Venue game rows: swipe only (no arrows); the row runs off the right edge so the next card peeks in ---- */
.cube-games:not(.cube-games-showcase) ~ .cube-game-tools .cube-game-scroll,
.cube-section .cube-game-tools .cube-game-scroll {
  display: none;
}
.cube-games:not(.cube-games-showcase) .cube-game-rail {
  /* Runs to the page's right edge; --cube-page-width (set by round2.js) excludes the scrollbar, 100vw does not. */
  margin-right: calc(50% - var(--cube-page-width, 100vw) / 2);
  padding-right: clamp(40px, 8vw, 120px);
  scroll-padding-inline: clamp(20px, 4vw, 40px);
}
.cube-games.cube-games-more:not(.cube-games-showcase) .cube-game-rail {
  mask-image: none;
}
@media (min-width: 1101px) {
  .cube-games:not(.cube-games-showcase) .cube-game-rail {
    grid-auto-columns: calc((var(--cube-rail-visible, 1300px) - 3.6 * 14px) / 4.6);
  }
}
@media (min-width: 761px) and (max-width: 1100px) {
  .cube-games:not(.cube-games-showcase) .cube-game-rail {
    grid-auto-columns: calc((var(--cube-rail-visible, 760px) - 2.6 * 14px) / 3.6);
  }
}

/* ---- Full game library panel ---- */
.cube-game-library {
  width: min(1180px, calc(100vw - 24px));
  max-height: min(88vh, 960px);
  padding: 0;
  border: 1px solid var(--cube-line, #3a4150);
  border-radius: var(--cube-radius, 22px);
  background: var(--cube-surface, #0e1016);
  color: #fbfdfd;
  overflow: hidden;
}
.cube-game-library[open] {
  display: flex;
  flex-direction: column;
}
.cube-game-library::backdrop {
  background: rgba(6, 7, 10, 0.8);
  backdrop-filter: blur(6px);
}
.cube-game-library-head {
  position: relative;
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
  padding: clamp(22px, 3vw, 36px) clamp(20px, 3vw, 36px) 16px;
  border-bottom: 1px solid rgba(251, 253, 253, 0.08);
}
.cube-game-library-head .cube-kicker,
.cube-game-library-head h2 {
  margin: 0;
}
.cube-game-library-head h2 {
  font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.4rem);
}
.cube-game-library-head .cube-chooser-close {
  position: static;
  flex: none;
}
.cube-game-library-grid {
  list-style: none;
  margin: 0;
  padding: clamp(16px, 3vw, 32px);
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
  gap: 14px;
  overflow-y: auto;
}
.cube-game-library-tile {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 3 / 4;
  padding: 0;
  border: 0;
  border-radius: 16px;
  overflow: hidden;
  background: #06070a;
  cursor: pointer;
}
.cube-game-library-tile img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 400ms ease;
}
.cube-game-library-tile:hover img,
.cube-game-library-tile:focus-visible img {
  transform: scale(1.05);
}
.cube-game-library-tile:focus-visible {
  outline: 2px solid #fbfdfd;
  outline-offset: 3px;
}
.cube-game-library-name {
  position: absolute;
  inset: auto 0 0 0;
  display: grid;
  gap: 2px;
  padding: 48px 14px 12px;
  background: linear-gradient(transparent, rgba(6, 7, 10, 0.88));
  color: #fbfdfd;
  font: 400 1.05rem/1.1 var(--wp--preset--font-family--judge);
  text-transform: uppercase;
  text-align: left;
}
.cube-game-library-name small {
  font: 600 11px var(--wp--preset--font-family--ui);
  letter-spacing: 0.12em;
  color: #bcc1cc;
}
@media (max-width: 760px) {
  .cube-game-library {
    width: 100vw;
    max-width: 100vw;
    max-height: 100dvh;
    height: 100dvh;
    border-radius: 0;
    border: 0;
  }
  .cube-game-library-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }
}

/* ---- Venue game rows: "See all" becomes the row's end card ---- */
[data-all].cube-see-all-moved {
  display: none !important;
}
.cube-games:not(.cube-games-showcase) .cube-game-end-card {
  display: flex;
  border-radius: 18px;
}
.cube-games:not(.cube-games-showcase) .cube-game-end-card .cube-game-end-link.wp-block-button__link {
  width: 100%;
  min-height: 100%;
  aspect-ratio: 9 / 16;
  border-radius: 18px;
  font-size: 18px;
  cursor: pointer;
}
/* "Pick again" removed at the client's request. */
.cube-game-tools [data-pick] {
  display: none !important;
}

/* ---- "Inside [venue]" capacity ladder ---- */
.cube-ladder {
  display: grid;
  grid-template-columns: minmax(260px, 0.8fr) minmax(0, 1.4fr);
  gap: clamp(18px, 2.5vw, 32px);
  align-items: start;
  margin-top: 8px;
}
.cube-ladder-nav {
  min-width: 0;
}
.cube-ladder-hint {
  margin: 0 0 10px;
  font: 600 11px var(--wp--preset--font-family--ui);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #9ba0ae;
}
.cube-ladder-hint::before {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-right: 8px;
  border-radius: 50%;
  background: var(--cube-red, #e50138);
  vertical-align: 1px;
  animation: cube-ladder-pulse 1.8s ease-in-out infinite;
}
.cube-ladder-hint-narrow {
  display: none;
}
@keyframes cube-ladder-pulse {
  50% { opacity: 0.3; }
}
.cube-ladder-steps {
  display: grid;
  gap: 8px;
}
.cube-ladder-step {
  display: grid;
  grid-template-columns: 2.4em minmax(0, 1fr) auto;
  grid-template-areas: "num text go" "num bar go";
  align-items: center;
  gap: 6px 12px;
  width: 100%;
  padding: 12px 16px;
  border: 1px solid rgba(251, 253, 253, 0.12);
  border-radius: 14px;
  background: transparent;
  color: #c6c8cf;
  text-align: left;
  cursor: pointer;
  transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.cube-ladder-step:hover {
  border-color: rgba(251, 253, 253, 0.35);
  background: rgba(251, 253, 253, 0.04);
  color: #fbfdfd;
}
/* Chevron: says "open me"; points at the panel on wide screens, down to the card on narrow ones. */
.cube-ladder-go {
  grid-area: go;
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border: 1px solid rgba(251, 253, 253, 0.25);
  border-radius: 50%;
  color: #fbfdfd;
  transition: transform 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}
.cube-ladder-go svg {
  width: 12px;
  height: 12px;
  transition: transform 0.2s ease;
}
.cube-ladder-step:hover .cube-ladder-go {
  border-color: var(--cube-red, #e50138);
  transform: translateX(3px);
}
.cube-ladder-step[aria-selected="true"] .cube-ladder-go {
  border-color: var(--cube-red, #e50138);
  background: var(--cube-red, #e50138);
}
.cube-ladder-step[aria-selected="true"] {
  border-color: var(--cube-red, #e50138);
  background: linear-gradient(135deg, rgba(229, 1, 56, 0.2), rgba(229, 1, 56, 0.04));
  color: #fbfdfd;
}
.cube-ladder-step:focus-visible {
  outline: 2px solid #fbfdfd;
  outline-offset: 2px;
}
.cube-ladder-num {
  grid-area: num;
  font-family: var(--wp--preset--font-family--cube);
  font-size: 1.15rem;
  color: #ff6b8a;
}
.cube-ladder-text {
  grid-area: text;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 2px 12px;
  min-width: 0;
}
.cube-ladder-name {
  font-family: var(--wp--preset--font-family--judge);
  text-transform: uppercase;
  font-size: 1.05rem;
  line-height: 1.15;
}
.cube-ladder-cap {
  font: 600 11px var(--wp--preset--font-family--ui);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #9ba0ae;
}
.cube-ladder-bar {
  grid-area: bar;
  display: block;
  height: 3px;
  border-radius: 2px;
  background: rgba(251, 253, 253, 0.1);
  overflow: hidden;
}
.cube-ladder.no-bars .cube-ladder-bar {
  display: none;
}
.cube-ladder-bar i {
  display: block;
  height: 100%;
  background: var(--cube-red, #e50138);
}
/* Panel: only the selected space shows, laid out image beside text. */
.cube-ladder .cube-ladder-panel {
  display: block !important;
  margin: 0 !important;
}
.cube-ladder .cube-ladder-panel > .cube-space-card {
  display: none;
}
.cube-ladder .cube-ladder-panel > .cube-space-card.is-active {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  grid-template-rows: auto auto auto 1fr;
  column-gap: clamp(18px, 2.5vw, 30px);
  align-content: start;
  animation: cube-ladder-in 320ms ease;
}
.cube-ladder .cube-ladder-panel > .cube-space-card.is-active > figure {
  grid-row: 1 / span 4;
}
.cube-ladder .cube-ladder-panel > .cube-space-card.is-active > :not(figure) {
  grid-column: 2;
}
.cube-ladder .cube-ladder-panel .cube-space-card::before {
  display: none;
}
.cube-ladder .cube-ladder-panel .cube-space-card img {
  aspect-ratio: 4 / 3;
  height: 100%;
}
@keyframes cube-ladder-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .cube-ladder .cube-ladder-panel > .cube-space-card.is-active { animation: none; }
  .cube-ladder-hint::before { animation: none; }
}
@media (max-width: 1000px) {
  .cube-ladder {
    grid-template-columns: 1fr;
    gap: 0;
  }
  .cube-ladder.is-open {
    gap: 18px;
  }
  .cube-ladder-hint-wide {
    display: none;
  }
  .cube-ladder-hint-narrow {
    display: inline;
  }
  .cube-ladder-go svg {
    transform: rotate(90deg);
  }
  .cube-ladder-step:hover .cube-ladder-go {
    transform: none;
  }
  .cube-ladder-step[aria-selected="true"] .cube-ladder-go svg {
    transform: rotate(-90deg);
  }
  .cube-ladder-steps {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    scrollbar-width: none;
    margin-inline: -20px;
    padding: 2px 20px 4px;
  }
  .cube-ladder-steps::-webkit-scrollbar {
    display: none;
  }
  .cube-ladder-step {
    flex: 0 0 auto;
    width: auto;
    max-width: 270px;
    padding: 10px 14px;
  }
  .cube-ladder-text {
    flex-direction: column;
    flex-wrap: nowrap;
  }
  .cube-ladder-name {
    font-size: 0.95rem;
    white-space: nowrap;
  }
  .cube-ladder .cube-ladder-panel > .cube-space-card.is-active {
    grid-template-columns: 1fr;
    grid-template-rows: none;
  }
  .cube-ladder .cube-ladder-panel > .cube-space-card.is-active > figure {
    grid-row: auto;
  }
  .cube-ladder .cube-ladder-panel > .cube-space-card.is-active > :not(figure) {
    grid-column: 1;
  }
  .cube-ladder .cube-ladder-panel .cube-space-card img {
    height: auto;
  }
}
/* ---- Sideways scrollers scroll sideways only (no inner up/down scrolling).
   Each rule applies only where that element already scrolls sideways. ---- */
.wp-site-blocks .cube-grid.cube-rail,
.cube-games:not(.cube-games-showcase) .cube-game-rail,
.cube-rv-track {
  overflow-y: hidden !important;
  overscroll-behavior-x: contain;
}
@media (max-width: 1000px) {
  .cube-ladder-steps {
    overflow-y: hidden;
    overscroll-behavior-x: contain;
  }
}
@media (max-width: 760px) {
  .cube-games-showcase .cube-game-rail,
  .cube-venue-nav .cube-chip-row {
    overflow-y: hidden;
    overscroll-behavior-x: contain;
  }
}
@media (max-width: 600px) {
  .cube-game-gallery {
    overflow-y: hidden;
    overscroll-behavior-x: contain;
  }
}

/* ---- Swipe rows: back and forward arrows either side of the dots (desktop; hidden at the ends) ---- */
.cube-rail-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-top: 16px;
}
.cube-rail-nav > .cube-rail-dots,
.cube-rail-nav > .cube-game-dots {
  margin: 0;
}
.cube-rail-nav > .cube-rail-dots[hidden] {
  display: none;
}
.cube-rail-arrow {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  padding: 0;
  border: 1px solid rgba(251, 253, 253, 0.3);
  border-radius: 4px;
  background: transparent;
  color: #fbfdfd;
  cursor: pointer;
  transition: background-color 0.2s ease, border-color 0.2s ease, opacity 0.2s ease;
}
.cube-rail-arrow svg {
  width: 14px;
  height: 14px;
}
@media (hover: hover) {
  .cube-rail-arrow:hover:not(:disabled) {
    border-color: var(--cube-red, #e50138);
    background: var(--cube-red, #e50138);
  }
}
.cube-rail-arrow:focus-visible {
  outline: 2px solid #fbfdfd;
  outline-offset: 2px;
}
/* Nothing further that way: the arrow is hidden (its space is kept so the squares stay put). */
.cube-rail-arrow:disabled {
  visibility: hidden;
}
/* Phones and touch screens swipe; no arrows. */
@media (max-width: 760px), (hover: none) {
  .cube-rail-arrow {
    display: none;
  }
}

/* ---- Venue pages, Food & drink: one section - heading row (View menu on the right), the kitchen cards
   (one wide, two side by side, three or more a swipe row; round2.js) and the awards as a slim strip. ---- */
.cube-food-section > .cube-head {
  max-width: none;
}
/* Kitchen cards, like the homepage Food & drink cards: the name sits over the photo, the copy below. */
.wp-site-blocks .cube-vendor-grid {
  display: grid !important;
  gap: clamp(14px, 2vw, 24px);
  margin-top: 8px !important;
}
.cube-vendor-grid > .cube-kitchen-card {
  display: grid !important;
  grid-template-rows: auto 1fr;
  align-content: start;
  gap: 0;
  margin: 0 !important;
  padding: 0 !important;
  background: none !important;
  border: 0 !important;
}
.cube-vendor-grid > .cube-kitchen-card::before {
  display: none;
}
.cube-vendor-grid > .cube-kitchen-card > figure {
  grid-row: 1;
  grid-column: 1;
  position: relative;
  margin: 0 !important;
  border-radius: 22px;
  overflow: hidden;
}
.cube-vendor-grid > .cube-kitchen-card > figure::after {
  content: "";
  position: absolute;
  inset: 45% 0 0;
  background: linear-gradient(transparent, #06070acc);
  pointer-events: none;
}
.wp-site-blocks .cube-vendor-grid .cube-kitchen-card img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
  border-radius: 0;
}
.cube-vendor-grid > .cube-kitchen-card > :is(h2, h3) {
  grid-row: 1;
  grid-column: 1;
  align-self: end;
  position: relative;
  z-index: 1;
  margin: 0 !important;
  padding: 0 22px 20px;
  font: 400 clamp(1rem, 0.85rem + 0.6vw, 1.35rem)/1.1 var(--wp--preset--font-family--cube) !important;
  text-transform: uppercase;
  color: #fbfdfd;
}
.cube-vendor-grid > .cube-kitchen-card > p {
  grid-column: 1;
  margin: 14px 0 0 !important;
  color: var(--cube-muted, #bcc1cc);
}
/* One kitchen: a wide feature. Two: side by side. */
.wp-site-blocks .cube-vendor-grid.cube-vendors-1 {
  grid-template-columns: minmax(0, 1fr) !important;
}
.wp-site-blocks .cube-vendor-grid.cube-vendors-1 .cube-kitchen-card img {
  aspect-ratio: 21 / 9 !important;
}
.wp-site-blocks .cube-vendor-grid.cube-vendors-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
}
.wp-site-blocks .cube-vendor-grid.cube-vendors-2 .cube-kitchen-card img {
  aspect-ratio: 16 / 9 !important;
}
/* Three or more: a swipe row (arrows and squares below, as on the other rows). */
.wp-site-blocks .cube-vendor-grid.cube-vendor-rail {
  grid-auto-flow: column;
  grid-template-columns: none !important;
  grid-auto-columns: calc((100% - 3 * clamp(14px, 2vw, 24px)) / 3.45);
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  padding-bottom: 4px;
}
.cube-vendor-grid.cube-vendor-rail::-webkit-scrollbar {
  display: none;
}
.cube-vendor-grid.cube-vendor-rail > .cube-kitchen-card {
  scroll-snap-align: start;
}
.wp-site-blocks .cube-vendor-grid.cube-vendor-rail .cube-kitchen-card img {
  aspect-ratio: 4 / 3 !important;
}
@media (max-width: 760px) {
  .wp-site-blocks .cube-vendor-grid.cube-vendors-1 .cube-kitchen-card img {
    aspect-ratio: 16 / 9 !important;
  }
  .wp-site-blocks .cube-vendor-grid.cube-vendors-2 {
    gap: 12px;
  }
  .wp-site-blocks .cube-vendor-grid.cube-vendors-2 .cube-kitchen-card img {
    aspect-ratio: 1 !important;
  }
  .cube-vendor-grid.cube-vendors-2 > .cube-kitchen-card > :is(h2, h3) {
    padding: 0 14px 14px;
    font-size: 0.9rem !important;
  }
  .cube-vendor-grid.cube-vendors-2 > .cube-kitchen-card > p {
    margin-top: 10px !important;
    font-size: 14px;
    line-height: 1.45;
  }
  .wp-site-blocks .cube-vendor-grid.cube-vendor-rail {
    grid-auto-columns: calc((100% - 14px) / 1.42);
  }
}
/* Awards: one tidy row under the kitchens - an equal column per award
   (★ and the award on the first line, who gave it below). Phones: a short stacked list. */
.wp-site-blocks .cube-food-awards-strip {
  display: grid;
  grid-template-columns: none;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  align-items: start;
  gap: 8px clamp(18px, 3vw, 40px);
  margin-top: clamp(18px, 2.5vw, 28px) !important;
  padding: 18px 24px;
}
.cube-food-awards-strip .cube-food-award {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: 8px;
  row-gap: 2px;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
}
.cube-food-awards-strip .cube-food-award::before {
  content: "★";
  grid-row: 1;
  color: #ff6b8a;
  line-height: 1.3;
}
.cube-food-awards-strip .cube-food-award > p {
  grid-column: 2;
  margin: 0 !important;
}
.cube-food-awards-strip .cube-food-award-name {
  line-height: 1.3;
}
.cube-food-awards-strip .cube-food-award-by {
  font-size: 13px;
  color: #9ba0ae;
}
@media (max-width: 760px) {
  .wp-site-blocks .cube-food-awards-strip {
    grid-template-columns: minmax(0, 1fr);
    grid-auto-flow: row;
    gap: 12px;
    padding: 16px 18px;
  }
}
/* Placeholder notes, and menu highlights that are still all placeholders, stay hidden on the site. */
.cube-placeholder-note,
.cube-placeholder-section {
  display: none !important;
}

/* ---- Sticky "Book now": compact pill, smaller pulse ---- */
.cube-sticky {
  right: 24px;
  bottom: 24px;
  animation-name: cube-booking-ring-compact;
}
.cube-festive-page .cube-sticky {
  animation-name: cube-booking-gold-compact;
}
.cube-sticky .cube-button,
.cube-sticky a {
  font-size: 13px !important;
  line-height: 1.4 !important;
  letter-spacing: 0.12em;
  padding: 11px 20px !important;
}
.cube-sticky.cube-sticky-footer {
  bottom: calc(20px + env(safe-area-inset-bottom));
}
@media (max-width: 760px) {
  .cube-sticky {
    right: 14px;
    bottom: 14px;
  }
  .cube-sticky .cube-button,
  .cube-sticky a {
    font-size: 12px !important;
    padding: 10px 17px !important;
  }
}
@keyframes cube-booking-ring-compact {
  0% { box-shadow: 0 0 0 0 #e501388c, 0 10px 30px #0008; }
  100% { box-shadow: 0 0 0 10px #e5013800, 0 10px 30px #0008; }
}
@keyframes cube-booking-gold-compact {
  0% { box-shadow: 0 0 0 0 #d9b36c99, 0 10px 30px #0008; }
  100% { box-shadow: 0 0 0 10px #d9b36c00, 0 10px 30px #0008; }
}

/* ---- FAQs page: search and venue chips on top, a topic index beside the questions (round2.js), help panel below ---- */
.cube-editorial-masthead > p {
  max-width: 60ch;
  margin: 14px 0 0 !important;
  color: var(--cube-muted, #bcc1cc);
}
.cube-faq-tools {
  display: grid;
  gap: 14px;
  margin-block: 8px clamp(24px, 3vw, 36px) !important;
}
.cube-faq-tools .cube-faq-search-wrap {
  max-width: none;
}
.cube-faq-venues {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.cube-faq-venues button {
  padding: 8px 16px;
  border: 1px solid rgba(251, 253, 253, 0.25);
  border-radius: 999px;
  background: transparent;
  color: #c6c8cf;
  font: 600 12px var(--wp--preset--font-family--ui);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
}
.cube-faq-venues button:hover {
  border-color: rgba(251, 253, 253, 0.5);
  color: #fbfdfd;
}
.cube-faq-venues button[aria-pressed="true"] {
  border-color: var(--cube-red, #e50138);
  background: var(--cube-red, #e50138);
  color: #fbfdfd;
}
.cube-faq-tools .cube-faq-status {
  margin: 0 !important;
  font: 600 12px var(--wp--preset--font-family--ui);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #9ba0ae;
}
.cube-faq-layout {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: clamp(28px, 4vw, 56px);
  align-items: start;
}
.cube-faq-index {
  position: sticky;
  top: 110px;
}
.cube-faq-index ol {
  display: grid;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.cube-faq-index li[hidden] {
  display: none;
}
.cube-faq-index a {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  border-left: 2px solid transparent;
  border-radius: 0 10px 10px 0;
  color: #9ba0ae;
  font: 400 1.05rem/1.2 var(--wp--preset--font-family--judge);
  text-transform: uppercase;
  text-decoration: none;
}
.cube-faq-index a:hover {
  color: #fbfdfd;
}
.cube-faq-index a[aria-current] {
  border-left-color: var(--cube-red, #e50138);
  background: rgba(229, 1, 56, 0.12);
  color: #fbfdfd;
}
.cube-faq-index-count {
  font: 600 12px var(--wp--preset--font-family--ui);
  color: #868c9c;
}
.wp-site-blocks .cube-faq-hub .cube-faq-topic {
  width: auto !important;
  max-width: none !important;
  margin: 0 0 clamp(28px, 4vw, 44px) !important;
  padding: 0 !important;
  scroll-margin-top: 110px;
}
.cube-faq-hub .cube-faq-topic[hidden] {
  display: none !important;
}
.cube-faq-hub .cube-editorial-faqs {
  max-width: none !important;
  width: 100%;
}
.cube-faq-hub .cube-editorial-faqs > :is(h2, h3) {
  margin: 0 0 8px !important;
  font: 400 clamp(1.5rem, 1.2rem + 1vw, 2.1rem)/1.1 var(--wp--preset--font-family--judge);
}
.cube-faq-hub details[hidden] {
  display: none;
}
.cube-faq-hub .cube-faq-no-results {
  display: grid;
  justify-items: start;
  gap: 14px;
}
.cube-faq-hub .cube-faq-no-results[hidden] {
  display: none;
}
@media (max-width: 900px) {
  .cube-faq-layout {
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
  }
  .cube-faq-index {
    position: static;
  }
  .cube-faq-index ol {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
    margin-inline: -20px;
    padding: 2px 20px 4px;
  }
  .cube-faq-index ol::-webkit-scrollbar {
    display: none;
  }
  .cube-faq-venues {
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
    margin-inline: -20px;
    padding-inline: 20px;
  }
  .cube-faq-venues::-webkit-scrollbar {
    display: none;
  }
  .cube-faq-venues button {
    flex: none;
  }
  .cube-faq-index li {
    flex: none;
  }
  .cube-faq-index a {
    border: 1px solid rgba(251, 253, 253, 0.2);
    border-radius: 999px;
    padding: 8px 14px;
    font-size: 0.95rem;
    white-space: nowrap;
  }
  .cube-faq-index a[aria-current] {
    border-color: var(--cube-red, #e50138);
  }
}

/* ---- Venue copies of the Christmas, Large groups, VIP and Private hire pages: lists trimmed to the one venue ---- */
.wp-site-blocks .cube-grid.cube-grid-single:has(> .cube-contact-card) {
  grid-template-columns: minmax(0, 420px) !important;
  justify-content: center;
}
.wp-site-blocks .cube-grid.cube-grid-single:has(> .cube-christmas-venue) {
  grid-template-columns: minmax(0, 560px) !important;
}

/* ---- Venue pages: Offers strip in the Overview (compact cards: photo, name, line, Book) ---- */
.wp-site-blocks .cube-offer-cards {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 16px;
}
.cube-offer-cards > .cube-offer-card {
  display: grid !important;
  grid-template-columns: 120px minmax(0, 1fr);
  grid-template-rows: auto auto 1fr;
  column-gap: 18px;
  align-items: start;
  margin: 0 !important;
  padding: 14px !important;
  border: 1px solid rgba(251, 253, 253, 0.12);
  border-radius: 18px;
  background: var(--cube-surface, #0e1016);
}
.cube-offer-card::before {
  display: none;
}
.cube-offer-card > figure {
  grid-row: 1 / span 3;
  margin: 0 !important;
}
.wp-site-blocks .cube-offer-card img {
  width: 100%;
  height: auto;
  aspect-ratio: 1 !important;
  object-fit: cover;
  border-radius: 12px;
}
.cube-offer-card > :not(figure) {
  grid-column: 2;
}
.cube-offer-card > h3 {
  margin: 2px 0 4px !important;
  font-size: 1.25rem;
}
.cube-offer-card > p:not(.cube-more) {
  margin: 0 !important;
  font-size: 15px;
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.cube-offer-card > .cube-more {
  margin: 10px 0 0 !important;
  align-self: end;
}
@media (max-width: 760px) {
  .wp-site-blocks .cube-offer-cards {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 12px;
  }
  .cube-offer-cards > .cube-offer-card {
    grid-template-columns: 92px minmax(0, 1fr);
    column-gap: 14px;
    padding: 12px !important;
  }
}

/* ---- Venue pages: Events and groups - four tiles, then a slim contact strip ---- */
.wp-site-blocks .cube-group-options .cube-event-card img {
  aspect-ratio: 4 / 3 !important;
  object-fit: cover;
}
.cube-group-options .cube-event-card > p:not(.cube-more) {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.cube-hire-strip {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 14px 24px;
  padding: 18px 24px;
  border: 1px solid rgba(251, 253, 253, 0.12);
  border-radius: 18px;
  background: var(--cube-surface, #0e1016);
}
.cube-hire-strip > * {
  margin: 0 !important;
}
.cube-hire-strip-copy {
  font: 400 1.25rem/1.2 var(--wp--preset--font-family--judge);
  text-transform: uppercase;
  color: #fbfdfd;
}
.wp-site-blocks .cube-hire-strip-section {
  padding-top: 0 !important;
}

/* ---- Venue pages, "Planning something?": outline Call / Email / WhatsApp; Email opens the enquiry form in a pop-up ---- */
.cube-hire-strip-actions {
  gap: 10px;
}
.cube-email-dialog .cube-email-form {
  display: block;
}
/* The HubSpot enquiry form is taller than the window: the pop-up scrolls, with a dark scrollbar. */
.cube-email-dialog {
  scrollbar-color: #3a4150 transparent;
  scrollbar-width: thin;
}
.cube-email-dialog .cube-email-form > :is(h2, h3) {
  margin: 0 52px 18px 0 !important;
  font-size: clamp(1.6rem, 1.3rem + 1.2vw, 2.2rem);
}
.cube-email-dialog .cube-enquiry {
  margin: 0 !important;
}
/* Phones: the line above, then Call / Email / WhatsApp as one row of equal buttons. */
@media (max-width: 760px) {
  .cube-hire-strip {
    display: grid;
    gap: 14px;
    padding: 18px;
  }
  .cube-hire-strip-copy {
    font-size: 1.1rem;
  }
  .wp-site-blocks .cube-hire-strip-actions {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
  }
  .cube-hire-strip-actions .wp-block-button,
  .cube-hire-strip-actions .wp-block-button__link {
    width: 100%;
    margin: 0 !important;
  }
  .cube-hire-strip-actions .wp-block-button__link {
    padding: 12px 6px !important;
    font-size: 12px !important;
    letter-spacing: 0.08em;
    text-align: center;
    white-space: nowrap;
  }
}

/* ---- Homepage "Where?" on phones: all three venues as short, wide banners (no swiping); the photo links to the
   venue, so the "Learn more" line gives way to an arrow after the city name. ---- */
@media (max-width: 760px) {
  .wp-site-blocks #venues .cube-grid {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 10px;
  }
  #venues .cube-venue-card {
    margin: 0 !important;
  }
  .wp-site-blocks #venues .cube-venue-card img {
    aspect-ratio: 5 / 2 !important;
    max-height: none;
    object-fit: cover;
  }
  #venues .cube-venue-card .cube-card-overlay {
    padding: 40px 18px 14px;
  }
  #venues .cube-venue-card .cube-card-title::after {
    content: " →";
    font-family: system-ui;
    color: #ff6b8a;
  }
  #venues .cube-venue-card > .cube-more {
    display: none;
  }
}

/* ---- Round 3: homepage steps as a plain stacked list (no numbers, no tiles); headline, detail underneath ---- */
.cube-step-list.cube-step-stack > .cube-step {
  grid-template-columns: minmax(0, 1fr);
  row-gap: 2px;
}
.cube-step-list.cube-step-stack > .cube-step::before {
  content: none;
}
@media (max-width: 760px) {
  main .cube-step-stack .cube-step .cube-step-detail {
    grid-column: 1;
  }
}

/* ---- Round 3: "Inside [venue]" on phones: each space is a photo card in the swipe row; tap opens its details ---- */
.cube-ladder-thumb {
  display: none;
}
@media (max-width: 1000px) {
  .cube-ladder-step {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: "thumb thumb" "text go";
    align-items: start;
    width: 210px;
    max-width: none;
    padding: 0 0 12px;
    overflow: hidden;
  }
  .cube-ladder-thumb {
    display: block;
    grid-area: thumb;
    aspect-ratio: 16 / 10;
    margin-bottom: 6px;
    background: #0e1016;
  }
  .cube-ladder-thumb img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  .cube-ladder-num,
  .cube-ladder-bar {
    display: none;
  }
  .cube-ladder-text {
    grid-area: text;
    padding-left: 12px;
  }
  .cube-ladder-name {
    white-space: normal;
  }
  .cube-ladder-go {
    margin: 2px 12px 0 0;
  }
  /* The photo is already on the card above, so the opened details skip it. */
  .cube-ladder .cube-ladder-panel > .cube-space-card.is-active > figure {
    display: none;
  }
}

/* Groups "Special occasions" boxes: the text follows the photo (no "Learn more" to push to the bottom). */
.cube-occasion-card > p:last-child {
  margin-top: 0 !important;
}

/* ---- Round 3: no 01–04 numbering anywhere (client asked on the homepage steps; applied site-wide).
   Rankings (league table) and the Christmas countdown keep their numbers. ---- */
.cube-step-list > .cube-step::before,
.cube-space-card::before {
  content: none;
}
.cube-step-list > .cube-step {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
}
main .cube-step-tiles .cube-step .cube-step-title {
  grid-column: 1 / -1;
}
.cube-game-number,
.cube-ladder-num,
.cube-section p.cube-number {
  display: none;
}
/* Round 4: desktop shows the spaces as one sideways row of photo cards, smallest to biggest, with the
   site's slider arrows and squares (round2.js), instead of tabs and a single panel. Phones and tablets
   keep the swipe row of tabs. */
@media (min-width: 1001px) {
  .cube-ladder {
    display: block;
  }
  .cube-ladder-nav {
    display: none;
  }
  .cube-ladder .cube-ladder-panel {
    display: flex !important;
    gap: 16px;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
  }
  .cube-ladder .cube-ladder-panel::-webkit-scrollbar {
    display: none;
  }
  /* About three and a quarter cards in view: the next one peeks in to show the row moves. */
  .cube-ladder .cube-ladder-panel > .cube-space-card,
  .cube-ladder .cube-ladder-panel > .cube-space-card.is-active {
    display: flex;
    flex: 0 0 calc((100% - 48px) / 3.25);
    flex-direction: column;
    height: auto;
    gap: 10px;
    padding: 0 0 22px !important;
    overflow: hidden;
    scroll-snap-align: start;
    animation: none;
  }
  /* Photo edge to edge across the top of the card; the text sits in a tighter inset below. */
  .cube-ladder .cube-ladder-panel > .cube-space-card > :not(figure) {
    margin: 0 !important;
    padding-inline: 22px;
  }
  .cube-ladder .cube-ladder-panel > .cube-space-card > figure {
    margin: 0 0 6px !important;
  }
  .cube-ladder .cube-ladder-panel .cube-space-card img {
    aspect-ratio: 4 / 3;
    height: auto;
    border-radius: 0;
  }
  .cube-ladder .cube-ladder-panel > .cube-space-card > .wp-block-buttons {
    margin-top: auto !important;
    padding-top: 8px;
  }
  /* A row that fits without scrolling (three spaces or fewer) grows its cards to the full width: no gap at the end. */
  .cube-ladder .cube-ladder-panel > .cube-space-card,
  .cube-ladder .cube-ladder-panel > .cube-space-card.is-active {
    flex-grow: 1;
  }
}
/* Tablets and phones: space tabs keep their width when the row scrolls, and stretch to the edge when it fits. */
@media (max-width: 1000px) {
  .cube-ladder-steps > .cube-ladder-step {
    flex: 1 0 210px;
  }
}
@media (max-width: 760px) {
  .cube-step-list > .cube-step {
    grid-template-columns: minmax(0, 1fr);
  }
  main .cube-step .cube-step-detail {
    grid-column: 1;
  }
}

/* ---- Round 4: venue contact pop-ups (#contact-london etc.): one venue's Call / WhatsApp / Email ---- */
.cube-contact-panel .cube-contact-number {
  font-size: 1.15rem;
  color: var(--cube-muted, #bcc1cc);
}
.cube-contact-actions {
  display: flex !important;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 22px !important;
}
.cube-contact-actions .wp-block-button {
  flex: 1 1 120px;
}
.cube-contact-actions .wp-block-button__link {
  white-space: nowrap;
}
@media (max-width: 480px) {
  .cube-contact-actions .wp-block-button {
    flex-basis: 100%;
  }
}
/* The close button sits in the top corner: long dialog headings keep clear of it. */
.cube-chooser-dialog .cube-chooser > h2:first-child {
  padding-right: 48px;
}
.cube-contact-actions .wp-block-button__link {
  width: 100%;
  text-align: center;
}
.cube-contact-actions a:focus-visible {
  outline: 2px solid #fbfdfd;
  outline-offset: 3px;
}

/* ---- Venue sub-pages: compact "Back to {city}" bar (centred), slides in once the hero has scrolled away ---- */
.cube-back-bar {
  position: fixed;
  inset: 0 0 auto;
  z-index: 60;
  display: flex;
  justify-content: center;
  padding: 8px 20px;
  background: rgba(6, 7, 10, 0.88);
  backdrop-filter: blur(10px);
  box-shadow: 0 1px 0 rgba(251, 253, 253, 0.08);
  transform: translateY(-100%);
  visibility: hidden;
  transition: transform 250ms ease, visibility 0s 250ms;
}
.cube-back-bar.is-shown {
  transform: none;
  visibility: visible;
  transition: transform 250ms ease;
}
body.admin-bar .cube-back-bar {
  top: 32px;
}
.cube-back-bar a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 36px;
  padding: 0 12px;
  color: #fbfdfd;
  /* The site's button and link face (Barlow Condensed), as on Book now and "Learn more". */
  font-family: var(--wp--preset--font-family--ui);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  text-decoration: none;
}
.cube-back-bar svg {
  flex: none;
  box-sizing: content-box;
  padding: 6px;
  border-radius: 50%;
  background: #e50138;
  transition: transform 200ms ease;
}
.cube-back-bar a:hover svg,
.cube-back-bar a:focus-visible svg {
  transform: translateX(-3px);
}
.cube-back-bar a:focus-visible {
  outline: 2px solid #fbfdfd;
  outline-offset: 2px;
  border-radius: 999px;
}
@media (max-width: 782px) {
  body.admin-bar .cube-back-bar {
    top: 46px;
  }
}
@media (max-width: 600px) {
  body.admin-bar .cube-back-bar {
    top: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .cube-back-bar,
  .cube-back-bar.is-shown,
  .cube-back-bar svg {
    transition: none;
  }
}

/* ---- Venue Food & drink: one "Learn more ->" text link (the menu) centred under the kitchen cards ---- */
.cube-food-section .cube-food-more {
  justify-content: center;
  margin-top: clamp(24px, 3vw, 36px) !important;
}

/* ---- Inside [venue]: each space's description folds behind one "More detail" button on desktop (round2.js) ---- */
.cube-space-card:not(.is-detail-open) > .cube-space-desc {
  display: none;
}
.cube-space-more {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  gap: 8px;
  min-height: 32px;
  padding: 0;
  border: 0;
  background: none;
  color: #fbfdfd;
  font: 600 12px var(--wp--preset--font-family--ui);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  cursor: pointer;
}
.cube-space-more svg {
  width: 14px;
  height: 14px;
  color: #ff496e;
  transition: transform 200ms ease;
}
.cube-space-card.is-detail-open .cube-space-more svg {
  transform: rotate(180deg);
}
.cube-space-more:focus-visible {
  outline: 2px solid #fbfdfd;
  outline-offset: 4px;
  border-radius: 4px;
}
@media (min-width: 1001px) {
  /* Opening one space's detail does not stretch its neighbours (closed, the buttons line up along the row). */
  .cube-ladder .cube-ladder-panel:has(> .is-detail-open) {
    align-items: flex-start;
  }
  .cube-ladder .cube-ladder-panel > .cube-space-card > .cube-space-more {
    margin-inline: 22px !important;
    padding-inline: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .cube-space-more svg {
    transition: none;
  }
}
/* Round 5 (client): one arrow only. Phones and tablets: "More detail" sits by the space tab's arrow, and the
   card it opens shows the description straight away (no second button). */
.cube-ladder-label {
  display: none;
}
@media (max-width: 1000px) {
  .cube-ladder-step {
    grid-template-areas: "thumb thumb" "text text" "label go";
  }
  .cube-ladder-label {
    display: block;
    grid-area: label;
    justify-self: end;
    align-self: center;
    margin-top: 8px;
    padding-left: 12px;
    color: #fbfdfd;
    font: 600 11px var(--wp--preset--font-family--ui);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    white-space: nowrap;
  }
  .cube-ladder-step .cube-ladder-go {
    margin-top: 8px;
  }
  .cube-ladder .cube-space-card > .cube-space-desc {
    display: block;
  }
  .cube-ladder .cube-space-card > .cube-space-more {
    display: none;
  }
}

/* ---- Phones: no dots under swipe rows; the first row instead gets a "Swipe for more" pill (round2.js),
   frosted like a phone's setup screens in Cube red (follows --cube-red, so festive pages turn gold), with
   chevrons and a shine running in the swipe direction ---- */
@media (max-width: 760px) {
  .cube-rail-nav,
  .cube-rail-dots,
  .cube-game-dots {
    display: none;
  }
}
/* No height of its own: the pill floats across the row's bottom edge, so swiping (which dismisses it) moves nothing. */
.cube-swipe-cue {
  position: relative;
  z-index: 3;
  display: flex;
  justify-content: center;
  height: 0;
  pointer-events: none;
}
.cube-swipe-cue-pill {
  position: absolute;
  bottom: -22px;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  height: 44px;
  padding: 0 22px 0 18px;
  border: 1px solid color-mix(in srgb, var(--cube-red, #e50138) 70%, transparent);
  border-radius: 999px;
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--cube-red, #e50138) 34%, transparent), color-mix(in srgb, var(--cube-red, #e50138) 14%, transparent)),
    rgba(6, 7, 10, 0.55);
  -webkit-backdrop-filter: blur(18px) saturate(1.6);
  backdrop-filter: blur(18px) saturate(1.6);
  box-shadow: inset 0 1px 0 rgba(251, 253, 253, 0.16), 0 0 22px color-mix(in srgb, var(--cube-red, #e50138) 40%, transparent), 0 10px 28px rgba(0, 0, 0, 0.4);
  /* It can be swiped: sideways drags move the row, up and down still scrolls the page. */
  pointer-events: auto;
  cursor: grab;
  touch-action: pan-y;
  user-select: none;
  -webkit-user-select: none;
  transition: transform 0.25s ease, box-shadow 0.2s ease;
}
.cube-swipe-cue-pill.is-held {
  cursor: grabbing;
  transition: box-shadow 0.2s ease;
  box-shadow: inset 0 1px 0 rgba(251, 253, 253, 0.16), 0 0 30px color-mix(in srgb, var(--cube-red, #e50138) 60%, transparent), 0 10px 28px rgba(0, 0, 0, 0.4);
}
.cube-swipe-cue-arrows {
  display: flex;
  gap: 1px;
  color: #fbfdfd;
  filter: drop-shadow(0 0 4px color-mix(in srgb, var(--cube-red, #e50138) 90%, transparent));
}
.cube-swipe-cue-arrows svg {
  width: 8px;
  height: 14px;
  opacity: 0.25;
  animation: cube-cue-chevron 1500ms ease-in-out infinite;
}
/* The wave runs right to left: the rightmost chevron lights first. */
.cube-swipe-cue-arrows svg:nth-child(2) {
  animation-delay: -150ms;
}
.cube-swipe-cue-arrows svg:nth-child(1) {
  animation-delay: 0ms;
}
.cube-swipe-cue-arrows svg:nth-child(3) {
  animation-delay: -300ms;
}
.cube-swipe-cue-text {
  background: linear-gradient(90deg, rgba(251, 253, 253, 0.72) 40%, #fff 50%, rgba(251, 253, 253, 0.72) 60%) 0 0 / 250% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  font: 600 13px/1 var(--wp--preset--font-family--ui);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  white-space: nowrap;
  animation: cube-cue-shine 2600ms linear infinite;
}
@keyframes cube-cue-chevron {
  0%, 100% { opacity: 0.25; }
  30% { opacity: 1; }
  60% { opacity: 0.25; }
}
@keyframes cube-cue-shine {
  0% { background-position: 0 0; }
  100% { background-position: 100% 0; }
}

/* Christmas pages: the "Can you sleigh THE CUBE?" GIF heads the story copy, above its heading. */
.cube-christmas-story .cube-xmas-badge { margin: 0 0 clamp(18px, 2.4vw, 30px) !important; }
.cube-christmas-story .cube-xmas-badge img { display: block; width: min(100%, 400px); height: auto; border-radius: 18px; box-shadow: 0 18px 44px rgba(0, 0, 0, .45); }
@media (max-width: 760px) { .cube-christmas-story .cube-xmas-badge img { width: min(100%, 340px); } }

/* Rolled-out pages (tools/round4/rollout.py): a split's photo side with several photos. */
.cube-split-media { display: grid; gap: 16px; }
.cube-split-media > * { margin: 0 !important; }
.cube-split-media:has(> :nth-child(3)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cube-split-media:has(> :nth-child(3)) img { aspect-ratio: 4 / 3; object-fit: cover; }
.cube-restyled .cube-xmas-tiles { align-items: center; }
/* Gift vouchers on phones: the three venues as short banners like the homepage "Where?" (no swiping), Buy now kept. */
@media (max-width: 760px) {
  .wp-site-blocks .cube-voucher-cards { display: grid !important; grid-template-columns: minmax(0, 1fr) !important; gap: 14px; }
  .cube-voucher-cards .cube-venue-card { margin: 0 !important; }
  .wp-site-blocks .cube-voucher-cards .cube-venue-card img { aspect-ratio: 5 / 2 !important; max-height: none; object-fit: cover; }
  .cube-voucher-cards .cube-venue-card .cube-card-overlay { padding: 40px 18px 14px; }
}

/* ---- Round 5: hero titles wrap between words only; round2.js shrinks a title whose longest word is too wide ---- */
.cube-film-content h1.cube-title-fit {
  overflow-wrap: normal;
  word-break: normal;
}

/* ---- Round 6: a blog post's own closing photo sits in the 780px article column; it spans the page like every other
   closing photo (up to 1240px, centred) ---- */
.cube-prose .wp-block-post-content > .cube-page-closing {
  width: min(1240px, 100vw);
  max-width: none;
  margin-left: calc(50% - min(620px, 50vw)) !important;
  margin-right: calc(50% - min(620px, 50vw)) !important;
}
/* 100vw includes a desktop scrollbar: clip that sliver rather than scroll sideways (blog posts only). */
body.single .cube-main {
  overflow-x: clip;
}

/* ---- Round 7 (21 October 2026) ---- */
/* Venue food: "Food Vendors" and "Bars & Drinks", each with its own Learn more, on one line centred under the vendor
   cards with a small dash between (a narrow phone wraps the second pair under the first, still centred). */
.cube-food-section .cube-food-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px 28px;
  margin-top: clamp(24px, 3vw, 36px) !important;
}
.cube-food-section .cube-food-links > .cube-food-more {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 18px;
  margin: 0 !important;
}
/* A small dash between the two pairs; not on narrow phones, where the second pair wraps onto its own line. */
.cube-food-section .cube-food-links > .cube-food-more + .cube-food-more::before {
  content: "\2013";
  margin-right: 10px;
  color: #9ba0ae;
  font: 600 14px var(--wp--preset--font-family--ui);
}
@media (max-width: 600px) {
  .cube-food-section .cube-food-links > .cube-food-more + .cube-food-more::before {
    content: none;
  }
}
.cube-food-more-label {
  color: #c6c8cf;
  font: 600 14px var(--wp--preset--font-family--ui);
  text-transform: uppercase;
  letter-spacing: 0.14em;
}
/* London and Chicago: "Things to look out for at THE CUBE" sits right under the Events tiles; its two tiles fill the
   row (two columns, wider photos) instead of leaving two empty columns (phones: a sideways row like the Events). */
.cube-venue-events .cube-lookout {
  padding-top: 0;
}
@media (min-width: 761px) {
  .wp-site-blocks .cube-lookout-cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .wp-site-blocks .cube-lookout-cards .cube-event-card img {
    aspect-ratio: 16 / 9 !important;
  }
}
/* Venues pop-up on phones: the venue photo opens the venue, so no separate Learn more under each one. */
@media (max-width: 760px) {
  #choose-venue .cube-venue-card .cube-more {
    display: none;
  }
}
/* FAQs: an answer used by some venues only is labelled with them; where one venue's answers show, no label. */
.cube-faq-for {
  margin: 14px 0 6px !important;
  color: #ff496e !important;
  font: 600 12px var(--wp--preset--font-family--ui);
  text-transform: uppercase;
  letter-spacing: 0.12em;
}
.cube-faq-answer:first-child > .cube-faq-for,
.wp-block-details > summary + .cube-faq-answer > .cube-faq-for {
  margin-top: 0 !important;
}
.cube-faqs-venue .cube-faq-for {
  display: none;
}

/* ---- Venue food and drinks menus (the-cube/menu, /venue/{city}/food-menu/ and /drinks-menu/) ----
   Tabs flip between the menu's categories; the tab row sticks under the "Back to {city}" bar. */
.cube-menu-page {
  padding-top: clamp(28px, 4vw, 48px);
}
.cube-menu {
  --cube-menu-price: 86px;
  max-width: 1100px;
  margin-inline: auto;
}
.cube-menu-tabs {
  position: sticky;
  top: 0;
  z-index: 30;
  margin-bottom: clamp(24px, 3vw, 40px);
  transition: top 250ms ease;
}
body:has(.cube-back-bar.is-shown) .cube-menu-tabs {
  top: 52px;
}
body.admin-bar .cube-menu-tabs {
  top: 32px;
}
body.admin-bar:has(.cube-back-bar.is-shown) .cube-menu-tabs {
  top: 84px;
}
.cube-menu.is-stuck .cube-menu-tabs {
  background: rgba(6, 7, 10, 0.88);
  backdrop-filter: blur(10px);
  box-shadow: 0 0 0 100vmax rgba(6, 7, 10, 0.88), 0 1px 0 100vmax rgba(251, 253, 253, 0.08);
  clip-path: inset(0 -100vmax);
}
.cube-menu-tab-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  padding: 10px 0;
}
.cube-menu-tab {
  display: inline-flex;
  align-items: center;
  min-height: 42px;
  padding: 0 20px;
  border: 1px solid #3a4150;
  border-radius: 999px;
  color: #c6c8cf;
  font: 600 13px var(--wp--preset--font-family--ui);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
}
.cube-menu-tab:hover {
  color: #fbfdfd;
  border-color: #bcc1cc;
}
.cube-menu-tab[aria-selected="true"] {
  color: #06070a;
  background: #fbfdfd;
  border-color: #fbfdfd;
}
.cube-menu-tab:focus-visible {
  outline: 2px solid #fbfdfd;
  outline-offset: 3px;
}
.cube-menu-panel-head {
  display: grid;
  justify-items: center;
  gap: 10px;
  margin-bottom: clamp(20px, 3vw, 32px);
  text-align: center;
}
.cube-menu-panel-head > * {
  margin: 0 !important;
}
.cube-menu-brand {
  color: #ff496e;
  font: 600 13px var(--wp--preset--font-family--ui);
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.cube-menu-intro {
  max-width: 720px;
  color: #c6c8cf;
}
.cube-menu-photo {
  margin: 0 0 clamp(24px, 3vw, 36px);
  border-radius: 22px;
  overflow: hidden;
}
.cube-menu-photo img {
  display: block;
  width: 100%;
  aspect-ratio: 21 / 9;
  object-fit: cover;
}
/* Items with a photo: picture cards at the top of their tab. */
.cube-menu-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 18px;
  margin: 0 0 clamp(24px, 3vw, 40px);
  padding: 0;
  list-style: none;
}
.cube-menu-card {
  overflow: hidden;
  border: 1px solid rgba(251, 253, 253, 0.08);
  border-radius: 22px;
  background: #0e1016;
}
.cube-menu-card-photo {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.cube-menu-card .cube-menu-body {
  padding: 16px 18px 18px;
}
.cube-menu-card .cube-menu-prices {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 14px;
}
.cube-menu-card .cube-menu-price[data-col]:not(:empty)::before {
  content: attr(data-col) " ";
  color: #9ba0ae;
  font-size: 12px;
  letter-spacing: 0.08em;
}
.cube-menu-card .cube-menu-price:empty {
  display: none;
}
.cube-menu-section + .cube-menu-section {
  margin-top: clamp(28px, 4vw, 44px);
}
.cube-menu-section-title {
  margin: 0 0 6px !important;
  color: #ff496e;
  font: 600 18px var(--wp--preset--font-family--ui) !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase;
}
.cube-menu-note {
  margin: 0 0 8px !important;
  color: #9ba0ae;
  font-style: italic;
}
/* Price column headings (175ML / 250ML / BOTTLE) line up over the prices. */
.cube-menu-columns {
  display: grid;
  grid-template-columns: repeat(var(--cube-menu-cols, 1), var(--cube-menu-price));
  justify-content: end;
  padding-bottom: 4px;
  border-bottom: 1px solid rgba(251, 253, 253, 0.16);
  color: #9ba0ae;
  font: 600 12px var(--wp--preset--font-family--ui);
  letter-spacing: 0.1em;
  text-align: right;
  text-transform: uppercase;
}
/* One price column (50ML, BOTTLE): its heading sits under the section title, and the list can use two columns. */
.cube-menu-section:not(:has(.cube-menu-columns > span:nth-child(2))) .cube-menu-columns {
  display: block;
  border: 0;
  text-align: left;
}
.cube-menu-items {
  margin: 0 !important;
  padding: 0;
  list-style: none;
  columns: 2 340px;
  column-gap: 56px;
}
.cube-menu-section:has(.cube-menu-columns > span:nth-child(2)) .cube-menu-items {
  columns: 1;
}
.cube-menu-item {
  break-inside: avoid;
  margin: 0 !important;
  padding: 12px 0;
  border-bottom: 1px solid rgba(251, 253, 253, 0.08);
}
.cube-menu-line,
.cube-menu-option {
  display: flex;
  align-items: baseline;
  gap: 16px;
}
.cube-menu-label {
  flex: 1;
  min-width: 0;
}
.cube-menu-name {
  color: #fbfdfd;
  font: 600 18px/1.25 var(--wp--preset--font-family--ui);
  letter-spacing: 0.02em;
}
.cube-menu-kcal {
  margin-left: 8px;
  color: #9ba0ae;
  font-size: 13px;
  font-style: italic;
  white-space: nowrap;
}
.cube-menu-badge {
  display: inline-block;
  margin-left: 10px;
  padding: 2px 10px;
  border: 1px solid #e50138;
  border-radius: 999px;
  color: #ff496e;
  font: 600 11px var(--wp--preset--font-family--ui);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  vertical-align: 2px;
}
.cube-menu-prices {
  display: grid;
  flex: none;
  grid-template-columns: repeat(var(--cube-menu-cols, 1), var(--cube-menu-price));
  color: #fbfdfd;
  font: 600 18px/1.25 var(--wp--preset--font-family--ui);
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.cube-menu-desc {
  margin: 4px 0 0 !important;
  color: #c6c8cf;
  font-size: 15px;
  line-height: 1.45;
}
.cube-menu-options {
  margin: 6px 0 0 !important;
  padding: 0;
  list-style: none;
}
.cube-menu-option {
  margin: 0 !important;
  padding: 2px 0;
  line-height: 1.35;
}
/* A blank price column still holds the line, so the other prices stay level with the name. */
.cube-menu-price:empty::before {
  content: "\200b";
}
.cube-menu-panel {
  scroll-margin-top: 140px;
}
.cube-menu-option .cube-menu-name {
  color: #dfe1e6;
  font-size: 16px;
  font-weight: 500;
}
.cube-menu-option .cube-menu-name::before {
  content: "– ";
  color: #9ba0ae;
}
.cube-menu-option .cube-menu-prices {
  font-size: 16px;
  font-weight: 500;
}
.cube-menu-notes {
  margin-top: clamp(32px, 4vw, 48px);
  padding-top: 20px;
  border-top: 1px solid rgba(251, 253, 253, 0.1);
  color: #9ba0ae;
  font-size: 13px;
  text-align: center;
}
.cube-menu-notes p {
  margin: 0 0 6px !important;
}
.cube-menu-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px 32px;
  margin-top: clamp(28px, 4vw, 40px) !important;
}
.cube-menu-links > .cube-more {
  margin: 0 !important;
}
@media (max-width: 760px) {
  .cube-menu {
    --cube-menu-price: 64px;
  }
  .cube-menu-tab-row {
    flex-wrap: nowrap;
    justify-content: flex-start;
    overflow-x: auto;
    scrollbar-width: none;
    margin-inline: -20px;
    padding-inline: 20px;
  }
  .cube-menu-tab-row::-webkit-scrollbar {
    display: none;
  }
  .cube-menu-tab {
    min-height: 38px;
    padding: 0 16px;
  }
  .cube-menu-name,
  .cube-menu-prices {
    font-size: 17px;
  }
  .cube-menu-photo img {
    aspect-ratio: 16 / 9;
  }
}

/* ---- The hero's Live bar is a Floom announcement (Floom > Announcements, switched by the live_now token),
   shown as its message only with no bar styling. The notice and its paragraph take no part in the layout, so
   the bar keeps its own design. A page that drops the message (cube-live-banner-quiet) keeps the on-air frame
   without the bar. ---- */
.cube-live-banner .fcore-ab-notice,
.cube-live-banner .fcore-ab-notice > p {
  display: contents;
}
.cube-live-banner-quiet {
  display: none !important;
}

/* ---- Brochures open as page-turning books in Floom's viewer (Floom > Document Library), in THE CUBE's colours. ---- */
.fcore-brochure {
  --fcore-brochure-bg: #06070a;
  --fcore-brochure-fg: #fbfdfd;
  --fcore-brochure-muted: #9ba0ae;
  --fcore-brochure-hover: rgba(229, 1, 56, 0.18);
  --fcore-brochure-focus: #e50138;
  --fcore-brochure-page: #0e1016;
}

/* ---- Phones, until round2.js has run: card grids already sit as the rows they become, and venue information panels are
   already closed, so nothing moves when it does. Only ever applies before the script finishes (html.cube-js and not yet
   .cube-arranged), so it can't affect a finished page, and content edits need nothing here: each grid is judged by where it
   is and how many cards it has. Mirrors RAIL_SKIP and setupRails in round2.js. ---- */
@media (max-width: 760px) {
  html.cube-js:not(.cube-arranged) .wp-site-blocks main .cube-grid:not(.cube-grid-1, .cube-menu-category, .cube-ladder-panel, .cube-vendor-grid, .cube-voucher-cards):not(.cube-tab-panel .cube-grid, details .cube-grid, form .cube-grid, #venues .cube-grid):is(:has(> :nth-child(3)), .cube-lookout-cards) {
    display: flex !important;
    flex-wrap: nowrap;
    gap: 14px;
    grid-template-columns: none;
    overflow-x: auto;
    scrollbar-width: none;
    padding-bottom: 4px;
  }
  html.cube-js:not(.cube-arranged) .wp-site-blocks main .cube-grid:not(.cube-grid-1, .cube-menu-category, .cube-ladder-panel, .cube-vendor-grid, .cube-voucher-cards):not(.cube-tab-panel .cube-grid, details .cube-grid, form .cube-grid, #venues .cube-grid):is(:has(> :nth-child(3)), .cube-lookout-cards) > * {
    flex: 0 0 calc((100% - 14px) / 1.42);
    min-width: 0;
    margin: 0 !important;
  }
  html.cube-js:not(.cube-arranged) .wp-site-blocks main .cube-grid:not(.cube-grid-1, .cube-menu-category, .cube-ladder-panel, .cube-vendor-grid, .cube-voucher-cards):not(.cube-tab-panel .cube-grid, details .cube-grid, form .cube-grid, #venues .cube-grid):is(:has(> :nth-child(3)), .cube-lookout-cards) img {
    aspect-ratio: 16 / 10 !important;
    max-height: 34vh;
    object-fit: cover;
  }
  html.cube-js:not(.cube-arranged) .cube-venue-information .cube-info-panel:not(:target) > :not(summary) {
    display: none;
  }
}

/* ---- Food vendor cards, until round2.js has run: already laid out by how many there are (one is wide, two share the row,
   three or more are a swipe row). Mirrors .cube-vendors-1, .cube-vendors-2 and .cube-vendor-rail above, which round2.js sets
   by the same count, so adding or removing a vendor needs nothing here. ---- */
html.cube-js:not(.cube-arranged) .wp-site-blocks .cube-vendor-grid:not(:has(> .cube-kitchen-card:nth-child(2))) {
  grid-template-columns: minmax(0, 1fr) !important;
}
html.cube-js:not(.cube-arranged) .wp-site-blocks .cube-vendor-grid:not(:has(> .cube-kitchen-card:nth-child(2))) .cube-kitchen-card img {
  aspect-ratio: 21 / 9 !important;
}
html.cube-js:not(.cube-arranged) .wp-site-blocks .cube-vendor-grid:has(> .cube-kitchen-card:nth-child(2)):not(:has(> .cube-kitchen-card:nth-child(3))) {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
}
html.cube-js:not(.cube-arranged) .wp-site-blocks .cube-vendor-grid:has(> .cube-kitchen-card:nth-child(2)):not(:has(> .cube-kitchen-card:nth-child(3))) .cube-kitchen-card img {
  aspect-ratio: 16 / 9 !important;
}
html.cube-js:not(.cube-arranged) .wp-site-blocks .cube-vendor-grid:has(> .cube-kitchen-card:nth-child(3)) {
  grid-auto-flow: column;
  grid-template-columns: none !important;
  grid-auto-columns: calc((100% - 3 * clamp(14px, 2vw, 24px)) / 3.45);
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  padding-bottom: 4px;
}
html.cube-js:not(.cube-arranged) .wp-site-blocks .cube-vendor-grid:has(> .cube-kitchen-card:nth-child(3)) .cube-kitchen-card img {
  aspect-ratio: 4 / 3 !important;
}
@media (max-width: 760px) {
  html.cube-js:not(.cube-arranged) .wp-site-blocks .cube-vendor-grid:not(:has(> .cube-kitchen-card:nth-child(2))) .cube-kitchen-card img {
    aspect-ratio: 16 / 9 !important;
  }
  html.cube-js:not(.cube-arranged) .wp-site-blocks .cube-vendor-grid:has(> .cube-kitchen-card:nth-child(2)):not(:has(> .cube-kitchen-card:nth-child(3))) {
    gap: 12px;
  }
  html.cube-js:not(.cube-arranged) .wp-site-blocks .cube-vendor-grid:has(> .cube-kitchen-card:nth-child(2)):not(:has(> .cube-kitchen-card:nth-child(3))) .cube-kitchen-card img {
    aspect-ratio: 1 !important;
  }
  html.cube-js:not(.cube-arranged) .cube-vendor-grid:has(> .cube-kitchen-card:nth-child(2)):not(:has(> .cube-kitchen-card:nth-child(3))) > .cube-kitchen-card > :is(h2, h3) {
    padding: 0 14px 14px;
    font-size: 0.9rem !important;
  }
  html.cube-js:not(.cube-arranged) .cube-vendor-grid:has(> .cube-kitchen-card:nth-child(2)):not(:has(> .cube-kitchen-card:nth-child(3))) > .cube-kitchen-card > p {
    margin-top: 10px !important;
    font-size: 14px;
    line-height: 1.45;
  }
  html.cube-js:not(.cube-arranged) .wp-site-blocks .cube-vendor-grid:has(> .cube-kitchen-card:nth-child(3)) {
    grid-auto-columns: calc((100% - 14px) / 1.42);
  }
}

/* ---- Client feedback, 6 November ---- */
/* Venue "Contact and booking" panel: room between the contact lines and the buttons. */
.cube-info-body .cube-visit-actions {
  margin-top: 12px;
}
/* Live page: the "Book a live night" row keeps its gap below the cards above it. */
.cube-section > .cube-casting-action {
  margin-top: 28px !important;
}
/* Game cards: each clip already shows its large title, so the card only adds "View game". The name stays on the button's
   aria-label and in the pop-up. */
.cube-games:not(.cube-games-showcase) .cube-game-card:not(.cube-game-end-card) button > .cube-game-name {
  font-size: 0;
}
.cube-games:not(.cube-games-showcase) .cube-game-card:not(.cube-game-end-card) .cube-game-name::after {
  margin-top: 0;
}
/* Homepage Food card: the crop keeps every food brand's sign in view, which sit towards the left of the photo. */
.cube-food-types img.wp-image-1443 {
  object-position: 18% 50%;
}
@media (max-width: 760px) {
  .cube-food-types .cube-food-card img {
    aspect-ratio: 4 / 3;
  }
}
/* Holiday Parties Chicago: its "Special occasions" photo stands alone, without the heading beside it. */
.cube-occasions-photo figure {
  overflow: hidden;
  border-radius: 22px;
}
.cube-occasions-photo img {
  display: block;
  width: 100%;
  aspect-ratio: 21 / 9;
  object-fit: cover;
  border-radius: 22px;
}
@media (max-width: 760px) {
  .cube-occasions-photo img {
    aspect-ratio: 16 / 11;
  }
}
/* VIP has no closing photo (client, 5 November), so the footer's stand-in stays hidden there too. */
body:has(.cube-page-vip) .cube-closing-default {
  display: none;
}
/* Royale chart: the jackpot's maximum (client, 6 November). It can't be drawn to scale beside £250 steps, so a break
   separates it from the ladder, and its label sits inside the bar so the bar stays the tallest thing on the chart. */
.cube-royale-ladder {
  grid-template-columns: repeat(7, minmax(0, 1fr)) minmax(0, 1.9fr);
}
.cube-royale-ladder > div:nth-child(1) { --bar-height: 18%; }
.cube-royale-ladder > div:nth-child(2) { --bar-height: 27%; }
.cube-royale-ladder > div:nth-child(3) { --bar-height: 36%; }
.cube-royale-ladder > div:nth-child(4) { --bar-height: 45%; }
.cube-royale-ladder > div:nth-child(5) { --bar-height: 54%; }
.cube-royale-ladder > div:nth-child(6) { --bar-height: 63%; }
.cube-royale-ladder > div:nth-child(7) { --bar-height: 72%; }
.cube-royale-ladder .cube-ladder-amount {
  margin-inline: -10px;
}
.cube-royale-ladder > div:nth-child(7) .cube-ladder-bar {
  background: transparent;
  border: 1px dashed #fdd314;
}
.cube-royale-ladder > div:nth-child(7) .cube-ladder-amount {
  color: #fdd314;
}
.cube-royale-ladder > .cube-ladder-top {
  position: relative;
  margin-left: 18px;
}
.cube-royale-ladder > .cube-ladder-top::before {
  content: "//";
  content: "//" / "";
  position: absolute;
  left: -21px;
  bottom: 26px;
  color: #fdd314;
  font-weight: 700;
  font-size: 15px;
  line-height: 1;
  letter-spacing: -1px;
}
.cube-royale-ladder > .cube-ladder-top .cube-ladder-bar {
  flex: 1 1 0;
  margin-top: 0;
  background: #fdd31414;
}
.cube-royale-ladder > .cube-ladder-top .cube-ladder-amount {
  position: absolute;
  top: 12px;
  left: 6px;
  right: 6px;
  margin-inline: 0;
  white-space: normal;
  line-height: 1.3;
}
@media (max-width: 760px) {
  /* Too narrow for an eighth column to hold its label, so the maximum becomes a band below the ladder. */
  .cube-royale-ladder {
    height: auto;
    grid-auto-flow: row;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    grid-template-rows: 220px auto;
    row-gap: 16px;
  }
  .cube-royale-ladder > .cube-ladder-top {
    grid-column: 1 / -1;
    height: auto;
    margin-left: 0;
    margin-bottom: 12px;
  }
  .cube-royale-ladder > .cube-ladder-top::before {
    content: none;
  }
  .cube-royale-ladder > .cube-ladder-top .cube-ladder-bar {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 44px;
    flex: none;
  }
  .cube-royale-ladder > .cube-ladder-top .cube-ladder-amount {
    position: relative;
    top: auto;
    left: auto;
    right: auto;
    margin: 0;
    font-size: 14px;
    line-height: 44px;
    white-space: nowrap;
  }
  .cube-royale-ladder > .cube-ladder-top .cube-kicker {
    margin-top: 8px;
  }
}
/* FAQs: date groups. A Details block inside a question opens on its own, and the-cube-core lays out its list of days
   as rows of day, hours and note (.cube-hours). */
.cube-faq .wp-block-details {
  margin: 0;
  padding: 0;
  border: 0;
  border-top: 1px solid #2a2f3a;
  background: none;
}
.cube-faq .wp-block-details:last-of-type {
  border-bottom: 1px solid #2a2f3a;
  margin-bottom: 16px;
}
.cube-faq .wp-block-details > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 46px;
  padding: 8px 0;
  list-style: none;
  cursor: pointer;
  font: 600 16px/1.4 var(--wp--preset--font-family--ui);
  letter-spacing: 0.02em;
  text-transform: none;
}
.cube-faq .wp-block-details > summary::-webkit-details-marker {
  display: none;
}
.cube-faq .wp-block-details > summary::after {
  content: "+";
  display: grid;
  place-items: center;
  flex: none;
  width: 24px;
  height: 24px;
  font-size: 14px;
  border: 1px solid #3a4150;
  border-radius: 50%;
  color: #c6c8cf;
  transition: transform 400ms cubic-bezier(0.16, 1, 0.3, 1);
}
.cube-faq .wp-block-details[open] > summary::after {
  transform: rotate(45deg);
}
.cube-faq ul.cube-hours {
  display: grid;
  margin: 0 0 12px;
  padding: 0;
  list-style: none;
}
.cube-faq ul.cube-hours li {
  display: grid;
  grid-template-columns: 7.5em 10em minmax(0, 1fr);
  gap: 0 12px;
  margin: 0;
  padding: 4px 0;
  font-size: 15px;
  line-height: 1.5;
}
.cube-hours-day {
  font-weight: 600;
}
.cube-hours-note {
  color: #a4a9b4;
  font-size: 0.875em;
}
@media (max-width: 760px) {
  .cube-faq ul.cube-hours li {
    grid-template-columns: 6.5em minmax(0, 1fr);
  }
  .cube-hours-note {
    grid-column: 2;
  }
}

/* Red call-to-action buttons (Book now and the like) use the brighter CTA red, 10 Nov 2026. The plugin's .cube-button
   reads --cube-red, which every other red accent also uses, so the button is set here at the plugin's own weight (outline
   buttons that are made see-through elsewhere stay that way). Festive pages keep gold. */
.cube-button:where(:not(.cube-festive *)) {
  background: #ff305e;
}
