/* Gutenberg adapters: how core blocks and the editor canvas meet the design in design.css. */
.wp-site-blocks { padding: 0; }
.wp-site-blocks > *, .ts-home, .ts-home > .wp-block-post-content > *, .header-shell > * { margin-block-start: 0; }
.header-shell { display: contents; }

/* ---------- Header ---------- */
.site-header { width: 100%; }
.site-header .site-header__inner > * { margin: 0; }
.site-header .wp-block-site-logo { flex-shrink: 0; }
.site-header__meta { flex-shrink: 0; }
.site-header__inner .main-nav { margin-left: auto; }
.main-nav, .wp-block-navigation.main-nav { font: 700 1.1875rem/1 var(--font-display); letter-spacing: 0.01em; }
.today-bar a, .hero__title a, .ev__title a, .serie { color: inherit; }
.main-nav .wp-block-navigation__container { gap: 0; }
.main-nav .wp-block-navigation-item__content { position: relative; padding: 0.6rem 0.85rem; color: var(--text); }
/* The current page gets the logo's bar under its name; hovering shows a fainter one. */
.main-nav .wp-block-navigation-item__content::after { content: ""; position: absolute; left: 0.85rem; right: 0.85rem; bottom: 0.1rem; height: 0.3rem; background: var(--blue); opacity: 0; transition: opacity 0.15s; }
.main-nav .wp-block-navigation-item__content:hover::after { opacity: 0.5; }
.main-nav .current-menu-item > .wp-block-navigation-item__content::after { opacity: 1; }
.main-nav .wp-block-navigation-item__content:hover { text-decoration: none; }
.site-header .wp-block-buttons { flex-shrink: 0; }
.site-header .wp-block-button__link { min-height: var(--tap); padding: 0.55rem 1.1rem; font-size: 1.0625rem; border: 2px solid transparent; }

/* Mobile menu: a panel that unfolds from the header row. Logo and Tickets stay on top of it and the
   close button takes the menu button's place; --ts-header-top is set by frontend.ts on opening. */
.main-nav :is(.wp-block-navigation__responsive-container-open, .wp-block-navigation__responsive-container-close) { align-items: center; justify-content: center; width: 3rem; height: 3rem; border: 2px solid rgba(255, 255, 255, 0.3); color: var(--text); transition: border-color 0.2s; }
.main-nav :is(.wp-block-navigation__responsive-container-open, .wp-block-navigation__responsive-container-close):hover { border-color: var(--text); }
.site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open { inset: var(--ts-header-top, 0px) 0 0; z-index: 1; padding: 0; }
.site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-close { width: min(100% - 2 * var(--gutter), var(--wrap)); max-width: none; margin-inline: auto; }
html .site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog { margin-top: 0; }
.site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close { display: flex; top: calc((var(--header-h) - 3rem) / 2); }
.site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { align-items: stretch; padding: var(--header-h) 0 3rem; }
.site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { align-items: stretch; gap: 0; border-top: 1px solid var(--line); }
.site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item { align-items: stretch; animation: ts-menu-in 0.35s cubic-bezier(0.2, 0.7, 0.2, 1) both; }
.site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(2) { animation-delay: 40ms; }
.site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(3) { animation-delay: 80ms; }
.site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(n+4) { animation-delay: 120ms; }
.site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content { display: flex; align-items: center; gap: 1rem; padding: 1.1rem 0; border-bottom: 1px solid var(--line); color: var(--text); font: 800 clamp(2.25rem, 11vw, 3.5rem)/1 var(--font-display); text-decoration: none; }
.site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content::after { content: ""; position: static; width: 1.4rem; height: 0.55rem; margin-left: auto; background: var(--blue); opacity: 0.4; transition: opacity 0.2s; }
.site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .current-menu-item > .wp-block-navigation-item__content::after, .site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:hover::after { opacity: 1; }
@keyframes ts-menu-in { from { opacity: 0; transform: translateY(0.75rem); } }
.admin-bar .site-header { top: 32px; }
.admin-bar .month__head { top: calc(var(--header-h) + 32px); }

/* ---------- Page canvas ---------- */
.ts-main:not(.ts-home) { padding-block: var(--space-page) var(--space-section); }
.ts-main.ts-home { padding-top: 0; }
.ts-home > .wp-block-post-content { margin-block-start: 0; }
/* Full-width sections carry their own vertical spacing, so they join without a gap (frontend and editor). */
.wp-block-post-content > .alignfull + .alignfull { margin-block-start: 0; }
.ts-event-main { padding-block: 0 4rem !important; }
.hero-video.wp-block-video { margin-block: 0; }
.hero-video video { height: 100%; }
.hero__body > *, .club__body > *, .site-footer__grid > *, .sec-head > *, .festival__body > *, .poster-wall__item > * { margin-block: 0; }
.filters a, .view-switch a { text-decoration: none; }
.programme__more { gap: 1rem; align-items: center; flex-wrap: wrap; }
.programme[aria-busy="true"] .month { opacity: 0.5; }
/* Events without an image: a square like the artwork, with the club's logo on the dark surface (no_image()). */
.ts-no-image { display: grid; place-items: center; width: 100%; aspect-ratio: 1; padding: 20%; background: radial-gradient(90% 70% at 0% 100%, rgb(51 102 204 / 0.32), transparent 70%), var(--card); color: var(--text); font: 800 clamp(1.25rem, 12cqw, 2.5rem)/1 var(--font-display); text-align: center; }
:is(.hero__media, .ev__media) .ts-no-image__logo { position: static; width: 100%; height: auto; object-fit: contain; box-shadow: none; }
.hero__media .ts-no-image { box-shadow: 0 30px 80px -30px rgba(0, 0, 0, 0.8); }
/* In cards the square stays apart from the card's text area. */
.ev__media > .ts-no-image { position: absolute; inset: 0; background-color: #07080b; }
.ev__media, .hero__media { container-type: inline-size; }

.support__grid > *, .support__head > *, .support__body > * { margin-block: 0; }
.wp-site-blocks :is(.club__grid, .club__facts, .ts-facts, .site-footer__grid, .site-footer__legal, .festival__grid) > * { margin-block: 0; }
.editor-styles-wrapper :is(.club__grid, .club__facts, .ts-facts, .site-footer__grid, .site-footer__legal, .festival__grid) > * { margin-block: 0; }
.club__facts p, .ts-facts p, .site-footer__legal p { margin: 0; }

/* ---------- Footer blocks ---------- */
.site-footer .wp-block-site-logo img { margin: 0; }
.site-footer .wp-block-list { padding: 0; }
.site-footer__legal .wp-block-group { display: flex; gap: 1.5rem; }
.site-footer a { color: inherit; }

/* ---------- Section head fallback (heads written without a .sec-bar span) ---------- */
.sec-head::after { content: ""; flex: 1; height: var(--bar); margin-bottom: 0.4rem; margin-right: calc(-1 * var(--bleed)); background: var(--blue); }
.sec-head:has(.sec-bar)::after { display: none; }

/* ---------- Editor ---------- */
.ts-event-preview__canvas { max-height: 55rem; overflow: auto; pointer-events: none; }
.ts-stage-hint { margin: 0; padding: 1.5rem; background: var(--card); color: var(--text-2); }
.editor-styles-wrapper .site-header, .editor-styles-wrapper .month__head { position: static; }
.editor-styles-wrapper .site-header__inner { height: auto; min-height: var(--header-h); }
/* Events open in their template: the page's parts meet as on the site (.wp-site-blocks above). */
.editor-styles-wrapper .is-root-container > :is(.ts-main, .ts-main + *) { margin-block-start: 0; }
/* The editor runs no slider script: its controls show in their initial state, as on the page before scrolling. */
.editor-styles-wrapper :is(.ts-slider__controls, .stage-media__controls)[hidden] { display: flex; }
.editor-styles-wrapper .ts-slider__progress::before { content: ""; position: absolute; inset: 0; background: var(--blue); transform: scaleX(0.1); transform-origin: left top; }
.editor-styles-wrapper .ts-slider__button--prev { opacity: 0.35; }

/* ---------- Narrow screens ---------- */
@media (max-width: 380px) {
	.site-header__logo img, .site-header.is-scrolled .site-header__logo img { width: 7.5rem; }
	.site-header__inner { gap: 0.65rem; }
	.site-header .wp-block-button__link { padding-inline: 0.7rem; }
}
@media (max-width: 960px) {
	.site-header__inner { gap: 1rem; }
	.site-header__inner .main-nav { order: 3; margin-left: 0; }
	.site-header__inner > .wp-block-buttons { margin-left: auto; }
	.main-nav .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none !important; }
	.main-nav .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }
	.site-header__inner > :is(.wp-block-site-logo, .wp-block-buttons) { position: relative; z-index: 2; }
}
@media (max-width: 600px) {
	.main-nav :is(.wp-block-navigation__responsive-container-open, .wp-block-navigation__responsive-container-close) { width: var(--tap); height: var(--tap); }
	.site-header .main-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close { top: calc((var(--header-h) - var(--tap)) / 2); }
	.admin-bar .site-header { top: 0; }
	.admin-bar .month__head { top: var(--header-h); }
	.hero__when { gap: 0.85rem; }
	.hero__when .dateblock { min-width: 3.75rem; padding: 0.4rem 0.55rem 0.45rem; }
	.hero__when .dateblock b { font-size: 2.1rem; }
	.hero__when .dateblock span { font-size: 0.9rem; }
	.hero__when-text { gap: 0.2rem; }
	.hero__when-text strong { font-size: 1.25rem; }
	.hero__when-text span { font-size: 1.1rem; }
	.chip { white-space: normal; }
}
@media (prefers-reduced-motion: reduce) {
	.wp-site-blocks *, .wp-site-blocks *::before, .wp-site-blocks *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
