/*
 * Gradespace Music: the music school blocks. Mobile first; colours come
 * from the theme palette (the Gradespace Music theme's slugs), then Core's
 * tokens, then neutral fallbacks, so the blocks work with any theme.
 * Themes restyle them per design with the .gsmu-look-* body classes.
 */

:where(:root) {
	--gsmu-ink: var(--wp--preset--color--ink, var(--gsc-ink, #1f1d2b));
	--gsmu-muted: var(--wp--preset--color--muted, var(--gsc-muted, #5b5968));
	--gsmu-brand: var(--wp--preset--color--brand, var(--gsc-brand, #5a1784));
	--gsmu-brand-deep: var(--wp--preset--color--brand-deep, var(--gsmu-brand));
	--gsmu-tint: var(--wp--preset--color--brand-tint, var(--gsc-tint, #f2e8f6));
	--gsmu-accent: var(--wp--preset--color--accent, var(--gsmu-brand));
	--gsmu-accent-tint: var(--wp--preset--color--accent-tint, var(--gsmu-tint));
	--gsmu-gold: var(--wp--preset--color--gold, #c9953f);
	--gsmu-gold-tint: var(--wp--preset--color--gold-tint, #f6ecdb);
	--gsmu-night: var(--wp--preset--color--night, #16121d);
	--gsmu-surface: var(--wp--preset--color--white, var(--gsc-surface, #fff));
	--gsmu-soft: var(--wp--preset--color--soft, var(--gsc-soft, #f6f4f1));
	--gsmu-line: var(--wp--preset--color--line, var(--gsc-line, #e4e0e8));
	--gsmu-on-brand: #fff;
	--gsmu-on-gold: #1a1612;
	--gsmu-radius: var(--wp--custom--radius--md, 18px);
	--gsmu-radius-sm: var(--wp--custom--radius--sm, 10px);
	--gsmu-shadow: 0 1px 2px rgb(20 16 30 / 0.05), 0 12px 28px -18px rgb(20 16 30 / 0.28);
	--gsmu-font-display: var(--wp--preset--font-family--display, inherit);
}

[class*="wp-block-gsmu-"], [class*="wp-block-gsmu-"] *, [class*="wp-block-gsmu-"] *::before, [class*="wp-block-gsmu-"] *::after { box-sizing: border-box; }
.gsmu-booking .screen-reader-text, [class*="wp-block-gsmu-"] .screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
[class*="wp-block-gsmu-"] .gsc-icon { width: 1.15em; height: 1.15em; }

/* ---------- Shared bits ---------- */
.gsmu-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; min-height: 48px; padding: 0.7rem 1.35rem;
	border: 2px solid var(--gsmu-accent); border-radius: 999px; background: var(--gsmu-accent); color: var(--gsmu-on-brand);
	font: inherit; font-weight: 600; line-height: 1.2; text-decoration: none; cursor: pointer; transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.gsmu-btn:hover { background: var(--gsmu-brand-deep); border-color: var(--gsmu-brand-deep); color: var(--gsmu-on-brand); }
.gsmu-btn--ghost { background: transparent; color: var(--gsmu-ink); border-color: var(--gsmu-line); }
.gsmu-btn--ghost:hover { background: var(--gsmu-tint); color: var(--gsmu-ink); border-color: var(--gsmu-brand); }
.gsmu-btn--danger { background: transparent; color: #b3261e; border-color: #b3261e; }
.gsmu-btn--danger:hover { background: #b3261e; border-color: #b3261e; color: #fff; }
.gsmu-more { display: inline-flex; align-items: center; gap: 0.35rem; min-height: 44px; font-weight: 700; color: var(--gsmu-brand); text-decoration: none; }
.gsmu-more:hover { color: var(--gsmu-brand-deep); text-decoration: underline; text-underline-offset: 3px; }
.gsmu-more .gsc-icon { transition: transform 0.2s; }
.gsmu-more:hover .gsc-icon { transform: translateX(3px); }
.gsmu-badge { display: inline-block; padding: 0.1rem 0.6rem; border-radius: 999px; background: var(--gsmu-gold-tint); color: var(--gsmu-on-gold); font-size: 0.75rem; font-weight: 700; letter-spacing: 0.04em; vertical-align: middle; }
.gsmu-hint { margin: 0.25rem 0 0; color: var(--gsmu-muted); font-size: 0.9375rem; }
.gsmu-note { margin: 0 0 1rem; padding: 0.85rem 1rem; border-radius: var(--gsmu-radius-sm); background: var(--gsmu-soft); }
.gsmu-note.is-good { background: var(--gsmu-tint); }
.gsmu-note.is-error { background: #fdecea; color: #7a1a13; }
.gsmu-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: center; }
.gsmu-label { display: block; margin: 0 0 0.4rem; font-weight: 600; font-size: 0.9375rem; }
.gsmu-tags { display: flex; flex-wrap: wrap; gap: 0.35rem; margin: 0; padding: 0; list-style: none; }
.gsmu-tags li { margin: 0; padding: 0.15rem 0.65rem; border-radius: 999px; background: var(--gsmu-tint); color: var(--gsmu-brand-deep); font-size: 0.8125rem; font-weight: 600; }
.gsmu-empty { color: var(--gsmu-muted); }
.gsmu-facts-block { display: grid; gap: 1.1rem; }
.gsmu-tutor-details__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; margin: 0; }
.gsmu-facts-list { display: grid; gap: 0.7rem; margin: 0; padding: 0; list-style: none; }
.gsmu-facts-list li { display: flex; gap: 0.75rem; align-items: flex-start; margin: 0; line-height: 1.5; }
.gsmu-facts-list .gsc-icon { flex: none; width: 1.25rem; height: 1.25rem; margin-top: 0.15rem; color: var(--gsmu-brand); }
.gsmu-facts-list a { color: inherit; }

/* ---------- Booking form ---------- */
.gsmu-booking { color: var(--gsmu-ink); }
.gsmu-booking__form { display: grid; gap: 1rem; }
.gsmu-step {
	min-width: 0; margin: 0; padding: clamp(1rem, 3vw, 1.6rem); border: 1px solid var(--gsmu-line); border-radius: var(--gsmu-radius);
	background: var(--gsmu-surface); transition: opacity 0.2s;
}
.gsmu-step[disabled] { opacity: 0.55; }
.gsmu-step legend { display: flex; align-items: center; gap: 0.6rem; padding: 0 0.35rem; font-family: var(--gsmu-font-display); font-size: 1.25rem; font-weight: 700; }
.gsmu-step__n { display: inline-grid; place-items: center; width: 2rem; height: 2rem; border-radius: 999px; background: var(--gsmu-brand); color: var(--gsmu-on-brand); font-family: inherit; font-size: 0.9375rem; }
.gsmu-picks { display: grid; gap: 0.6rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 13rem), 1fr)); }
.gsmu-pick { position: relative; display: block; cursor: pointer; }
.gsmu-pick input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.gsmu-pick__body { display: grid; gap: 0.2rem; height: 100%; min-height: 4rem; padding: 0.85rem 1rem; border: 2px solid var(--gsmu-line); border-radius: var(--gsmu-radius-sm); background: var(--gsmu-surface); transition: border-color 0.15s, background 0.15s; }
.gsmu-pick__name { font-weight: 700; }
.gsmu-pick__meta { color: var(--gsmu-muted); font-size: 0.9rem; }
.gsmu-pick input:checked + .gsmu-pick__body { border-color: var(--gsmu-brand); background: var(--gsmu-tint); }
.gsmu-pick input:focus-visible + .gsmu-pick__body { outline: 3px solid var(--gsmu-brand); outline-offset: 2px; }
.gsmu-cal { max-width: 26rem; }
.gsmu-cal__head { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; margin: 0 0 0.6rem; }
.gsmu-cal__month { font-size: 1.05rem; }
.gsmu-cal__nav { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--gsmu-line); border-radius: 999px; background: var(--gsmu-surface); color: var(--gsmu-ink); font-size: 1.4rem; line-height: 1; cursor: pointer; }
.gsmu-cal__nav:disabled { opacity: 0.35; cursor: default; }
.gsmu-cal__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 0.3rem; }
.gsmu-cal__grid[aria-busy="true"] { opacity: 0.5; }
.gsmu-cal__dow { padding: 0.2rem 0; text-align: center; color: var(--gsmu-muted); font-size: 0.75rem; font-weight: 600; text-transform: uppercase; }
.gsmu-cal__day { aspect-ratio: 1; min-height: 40px; border: 1px solid var(--gsmu-line); border-radius: var(--gsmu-radius-sm); background: var(--gsmu-surface); color: var(--gsmu-ink); font: inherit; font-weight: 700; cursor: pointer; }
.gsmu-cal__day:disabled { border-color: transparent; background: transparent; color: var(--gsmu-muted); font-weight: 400; opacity: 0.5; cursor: default; }
.gsmu-cal__day:not(:disabled):hover { border-color: var(--gsmu-brand); }
.gsmu-cal__day[aria-pressed="true"] { border-color: var(--gsmu-brand); background: var(--gsmu-brand); color: var(--gsmu-on-brand); }
.gsmu-cal__none { grid-column: 1 / -1; margin: 0.5rem 0 0; color: var(--gsmu-muted); }
.gsmu-slots { margin-top: 1.1rem; }
.gsmu-times { display: flex; flex-wrap: wrap; gap: 0.45rem; }
.gsmu-time { position: relative; }
.gsmu-time input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.gsmu-time span { display: inline-flex; align-items: center; min-height: 44px; padding: 0 1rem; border: 2px solid var(--gsmu-line); border-radius: 999px; background: var(--gsmu-surface); font-weight: 700; font-variant-numeric: tabular-nums; }
.gsmu-time input:checked + span { border-color: var(--gsmu-brand); background: var(--gsmu-brand); color: var(--gsmu-on-brand); }
.gsmu-time input:focus-visible + span { outline: 3px solid var(--gsmu-brand); outline-offset: 2px; }
.gsmu-summary:not(:empty) { margin: 0 0 1rem; padding: 0.75rem 1rem; border-left: 4px solid var(--gsmu-brand); border-radius: 0 var(--gsmu-radius-sm) var(--gsmu-radius-sm) 0; background: var(--gsmu-tint); font-weight: 600; }
.gsmu-consent label { display: flex; gap: 0.6rem; align-items: flex-start; font-weight: 400; }
.gsmu-consent input { width: 1.25rem; height: 1.25rem; margin-top: 0.15rem; flex: none; accent-color: var(--gsmu-brand); }
.gsmu-done { padding: clamp(1.25rem, 4vw, 2rem); border-radius: var(--gsmu-radius); background: var(--gsmu-tint); }
.gsmu-done h3 { margin: 0 0 0.5rem; font-family: var(--gsmu-font-display); }
.gsmu-done__what { font-weight: 700; }
.gsmu-booking.is-closed { padding: 1.25rem; border-radius: var(--gsmu-radius); background: var(--gsmu-soft); }
.gsmu-manage { padding: clamp(1.25rem, 4vw, 2rem); border: 1px solid var(--gsmu-line); border-radius: var(--gsmu-radius); background: var(--gsmu-surface); }
.gsmu-manage__title { margin: 0 0 1rem; }
.gsmu-facts { display: grid; grid-template-columns: max-content 1fr; gap: 0.4rem 1.25rem; margin: 0 0 1.25rem; }
.gsmu-facts dt { color: var(--gsmu-muted); }
.gsmu-facts dd { margin: 0; font-weight: 600; }
.gsmu-cancel { margin: 0.75rem 0; }

/* ---------- Instrument picker ---------- */
.gsmu-picker { display: grid; gap: 1.1rem; justify-items: start; }
.gsmu-picker__chips { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.gsmu-picker__chip {
	display: inline-flex; align-items: center; gap: 0.45rem; min-height: 44px; padding: 0 1.1rem; border: 2px solid var(--gsmu-line); border-radius: 999px;
	background: var(--gsmu-surface); color: var(--gsmu-ink); font: inherit; font-weight: 700; cursor: pointer; transition: border-color 0.15s, background 0.15s;
}
.gsmu-picker__chip:hover { border-color: var(--gsmu-brand); }
.gsmu-picker__chip[aria-pressed="true"] { border-color: var(--gsmu-brand); background: var(--gsmu-brand); color: var(--gsmu-on-brand); }
.gsmu-picker.is-tiles .gsmu-picker__chips { display: grid; width: 100%; grid-template-columns: repeat(auto-fit, minmax(min(100%, 8.5rem), 11rem)); justify-content: inherit; gap: 0.75rem; }
.gsmu-picker.is-tiles { justify-items: stretch; }
.gsmu-picker.is-tiles .gsmu-picker__chip { flex-direction: column; justify-content: center; min-height: 7rem; border-radius: var(--gsmu-radius); padding: 1rem; }
.gsmu-picker.is-tiles .gsc-icon { width: 1.9rem; height: 1.9rem; }

/* ---------- Tutors ---------- */
.gsmu-tutors { display: grid; gap: clamp(1rem, 2.5vw, 1.5rem); margin: 0; padding: 0; list-style: none; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); }
.gsmu-tutor { display: flex; flex-direction: column; margin: 0; overflow: hidden; border: 1px solid var(--gsmu-line); border-radius: var(--gsmu-radius); background: var(--gsmu-surface); box-shadow: var(--gsmu-shadow); }
.gsmu-tutor__photo { display: grid; place-items: center; aspect-ratio: 4 / 3; overflow: hidden; background: var(--gsmu-tint); color: var(--gsmu-brand); text-decoration: none; }
.gsmu-tutor__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.gsmu-tutor__initials { font-family: var(--gsmu-font-display); font-size: clamp(2.5rem, 7vw, 3.5rem); font-weight: 700; letter-spacing: 0.02em; }
.gsmu-tutor__body { display: grid; gap: 0.5rem; align-content: start; padding: 1.1rem 1.25rem 1.25rem; }
.gsmu-tutor__name { margin: 0; font-size: 1.25rem; }
.gsmu-tutor__name a { color: inherit; text-decoration: none; }
.gsmu-tutor__name a:hover { color: var(--gsmu-brand); }
.gsmu-tutor__role, .gsmu-tutor__bio { margin: 0; color: var(--gsmu-muted); }
.gsmu-tutors.is-portraits .gsmu-tutor { align-items: center; text-align: center; border: 0; background: transparent; box-shadow: none; overflow: visible; }
.gsmu-tutors.is-portraits .gsmu-tutor__photo { width: min(12rem, 70%); aspect-ratio: 1; border-radius: 999px; box-shadow: 0 0 0 6px var(--gsmu-surface), 0 0 0 7px var(--gsmu-line); }
.gsmu-tutors.is-portraits .gsmu-tags { justify-content: center; }
.gsmu-tutors.is-list { grid-template-columns: 1fr; }
.gsmu-tutors.is-list .gsmu-tutor { flex-direction: row; align-items: stretch; }
.gsmu-tutors.is-list .gsmu-tutor__photo { flex: 0 0 clamp(6rem, 28%, 12rem); aspect-ratio: 1; }

/* ---------- Lesson types ---------- */
.gsmu-types { display: grid; gap: 1rem; margin: 0; padding: 0; list-style: none; }
.gsmu-type { position: relative; display: flex; gap: 1rem; align-items: flex-start; margin: 0; }
.gsmu-type__icon { display: inline-grid; place-items: center; flex: none; width: 3rem; height: 3rem; border-radius: 999px; background: var(--gsmu-tint); color: var(--gsmu-brand); }
.gsmu-type__icon .gsc-icon { width: 1.4rem; height: 1.4rem; }
.gsmu-type__body { display: grid; gap: 0.35rem; flex: 1; min-width: 0; }
.gsmu-type__name { margin: 0; font-size: 1.2rem; }
.gsmu-type__desc { margin: 0; color: var(--gsmu-muted); }
.gsmu-type__meta { display: flex; flex-wrap: wrap; gap: 0.3rem 0.9rem; align-items: center; margin: 0; font-weight: 600; font-size: 0.9375rem; }
.gsmu-type__price { color: var(--gsmu-brand); }
.gsmu-type__ask { color: var(--gsmu-muted); font-size: 0.9rem; }
.gsmu-types.is-cards { grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); }
.gsmu-types.is-cards .gsmu-type { flex-direction: column; padding: 1.4rem; border: 1px solid var(--gsmu-line); border-radius: var(--gsmu-radius); background: var(--gsmu-surface); box-shadow: var(--gsmu-shadow); }
.gsmu-types.is-cards .gsmu-type__go { margin-top: auto; }
.gsmu-types.is-rows .gsmu-type { align-items: center; padding: 1.1rem 0; border-bottom: 1px solid var(--gsmu-line); flex-wrap: wrap; }
.gsmu-types.is-rows .gsmu-type__n { flex: none; min-width: 2.5rem; font-family: var(--gsmu-font-display); font-size: 1.75rem; font-weight: 700; color: var(--gsmu-brand); font-variant-numeric: tabular-nums; }
.gsmu-types.is-programme { gap: 0; }
.gsmu-types.is-programme .gsmu-type { padding: 1rem 0; border-bottom: 1px dashed var(--gsmu-line); flex-direction: column; gap: 0.3rem; }
.gsmu-types.is-programme .gsmu-type__name { display: flex; align-items: baseline; gap: 0.6rem; width: 100%; font-family: var(--gsmu-font-display); }
.gsmu-type__dots { flex: 1; min-width: 1.5rem; border-bottom: 2px dotted var(--gsmu-line); transform: translateY(-0.3em); }
.gsmu-type__len { font-family: inherit; font-size: 0.95rem; color: var(--gsmu-muted); white-space: nowrap; }
.gsmu-types.is-tiles { grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); }
.gsmu-types.is-tiles .gsmu-type { flex-direction: column; min-height: 12rem; padding: 1.5rem; border-radius: calc(var(--gsmu-radius) * 1.4); background: var(--gsmu-brand); color: var(--gsmu-on-brand); }
.gsmu-types.is-tiles .gsmu-type.is-tone-accent { background: var(--gsmu-accent); }
.gsmu-types.is-tiles .gsmu-type.is-tone-gold { background: var(--gsmu-gold); color: var(--gsmu-on-gold); }
.gsmu-types.is-tiles .gsmu-type.is-tone-ink { background: var(--gsmu-ink); }
.gsmu-types.is-tiles .gsmu-type__icon { background: rgb(255 255 255 / 0.18); color: inherit; }
.gsmu-types.is-tiles .gsmu-type__desc, .gsmu-types.is-tiles .gsmu-type__price, .gsmu-types.is-tiles .gsmu-more, .gsmu-types.is-tiles .gsmu-type__ask { color: inherit; }
.gsmu-types.is-tiles .gsmu-badge { background: rgb(255 255 255 / 0.9); }
.gsmu-types.is-tiles .gsmu-type__go { margin-top: auto; }

/* ---------- Prices ---------- */
.gsmu-prices__table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.gsmu-prices__table th, .gsmu-prices__table td { padding: 0.85rem 0.5rem; border-bottom: 1px solid var(--gsmu-line); text-align: left; vertical-align: top; }
.gsmu-prices__table thead th { color: var(--gsmu-muted); font-size: 0.8125rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.gsmu-prices__table tbody th { font-weight: 700; }
.gsmu-prices__price { font-weight: 700; color: var(--gsmu-brand); white-space: nowrap; }
.gsmu-prices__note { margin: 0.9rem 0 0; color: var(--gsmu-muted); }
.gsmu-prices.is-hidden { padding: 1rem 1.2rem; border-radius: var(--gsmu-radius-sm); background: var(--gsmu-soft); }

/* ---------- Events ---------- */
.gsmu-events { display: grid; gap: 1rem; margin: 0; padding: 0; list-style: none; }
.gsmu-events.is-cards { grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); gap: 1.25rem; }
.gsmu-event { margin: 0; }
.gsmu-events.is-cards .gsmu-event { overflow: hidden; border: 1px solid var(--gsmu-line); border-radius: var(--gsmu-radius); background: var(--gsmu-surface); box-shadow: var(--gsmu-shadow); }
.gsmu-event__img { display: block; aspect-ratio: 16 / 9; overflow: hidden; }
.gsmu-event__img img { display: block; width: 100%; height: 100%; object-fit: cover; }
.gsmu-event__body { display: flex; gap: 1rem; align-items: flex-start; padding: 1.1rem 1.25rem; }
.gsmu-events.is-list .gsmu-event__body { padding: 0.9rem 0; border-bottom: 1px solid var(--gsmu-line); }
.gsmu-event__date { display: grid; flex: none; place-items: center; width: 3.6rem; padding: 0.45rem 0; border-radius: var(--gsmu-radius-sm); background: var(--gsmu-tint); color: var(--gsmu-brand-deep); line-height: 1.05; }
.gsmu-event__day { font-family: var(--gsmu-font-display); font-size: 1.6rem; font-weight: 700; }
.gsmu-event__month { font-size: 0.75rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.gsmu-event__title { margin: 0 0 0.25rem; font-size: 1.15rem; }
.gsmu-event__title a { color: inherit; text-decoration: none; }
.gsmu-event__title a:hover { color: var(--gsmu-brand); text-decoration: underline; }
.gsmu-event__meta { margin: 0; color: var(--gsmu-muted); font-size: 0.9375rem; }
.gsmu-programme { margin: 0; padding: 0; list-style: none; border-top: 2px solid var(--gsmu-ink); }
.gsmu-programme li { display: grid; grid-template-columns: 4.5rem 1fr; gap: 0.2rem 1rem; padding: 0.95rem 0; border-bottom: 1px solid var(--gsmu-line); }
.gsmu-programme time { font-family: var(--gsmu-font-display); font-weight: 700; color: var(--gsmu-brand); }
.gsmu-programme a { font-weight: 700; color: inherit; text-decoration: none; }
.gsmu-programme a:hover { color: var(--gsmu-brand); text-decoration: underline; }
.gsmu-programme span { grid-column: 2; color: var(--gsmu-muted); font-size: 0.9375rem; }
@media (min-width: 700px) { .gsmu-programme li { grid-template-columns: 5rem minmax(0, 1fr) minmax(0, 0.8fr); align-items: baseline; } .gsmu-programme span { grid-column: auto; text-align: right; } }
.gsmu-ticket {
	display: inline-flex; align-items: stretch; max-width: 100%; overflow: hidden; border-radius: var(--gsmu-radius-sm); background: rgb(255 255 255 / 0.9);
	color: var(--gsmu-ink); text-decoration: none; box-shadow: var(--gsmu-shadow); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
}
.gsmu-ticket__date { display: grid; place-content: center; padding: 0.5rem 0.9rem; background: var(--gsmu-accent); color: var(--gsmu-on-brand); text-align: center; line-height: 1; }
.gsmu-ticket__date span:first-child { font-family: var(--gsmu-font-display); font-size: 1.5rem; font-weight: 700; }
.gsmu-ticket__date span:last-child { font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; }
.gsmu-ticket__text { display: grid; align-content: center; padding: 0.55rem 1rem; min-width: 0; }
.gsmu-ticket__label { color: var(--gsmu-muted); font-size: 0.75rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.gsmu-ticket__title { font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---------- Gallery ---------- */
.gsmu-albums { display: grid; gap: 1.25rem; margin: 0; padding: 0; list-style: none; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); }
.gsmu-album { margin: 0; }
.gsmu-album a { display: grid; gap: 0.35rem; color: inherit; text-decoration: none; }
.gsmu-album__img { display: grid; place-items: center; aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--gsmu-radius); background: var(--gsmu-tint); color: var(--gsmu-brand); }
.gsmu-album__img img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s; }
.gsmu-album__img .gsc-icon { width: 2.5rem; height: 2.5rem; }
.gsmu-album a:hover img { transform: scale(1.03); }
.gsmu-album__title { font-weight: 700; font-size: 1.1rem; }
.gsmu-album__meta { color: var(--gsmu-muted); font-size: 0.9rem; }
.gsmu-photos__list { display: grid; gap: 0.75rem; margin: 0; padding: 0; list-style: none; grid-template-columns: repeat(auto-fill, minmax(min(100%, 12rem), 1fr)); }
.gsmu-photos__list li { margin: 0; }
.gsmu-photos__list a { display: block; aspect-ratio: 1; overflow: hidden; border-radius: var(--gsmu-radius-sm); }
.gsmu-photos__list img { display: block; width: 100%; height: 100%; object-fit: cover; }
.gsmu-photos.is-strip .gsmu-photos__list { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: thin; padding-bottom: 0.5rem; }
.gsmu-photos.is-strip .gsmu-photos__list li { flex: 0 0 clamp(11rem, 28%, 18rem); scroll-snap-align: start; }
@media (max-width: 640px) { .gsmu-photos.is-strip .gsmu-photos__list li { flex-basis: 70%; } }
.gsmu-photos__list:focus-visible { outline: 3px solid var(--gsmu-brand); outline-offset: 4px; }
.gsmu-photos__more { margin: 0.75rem 0 0; }

/* ---------- Testimonials ---------- */
.gsmu-quotes { display: grid; gap: 1.25rem; }
.gsmu-quote { margin: 0; }
.gsmu-quote blockquote { margin: 0; padding: 0; border: 0; }
.gsmu-quote blockquote p { margin: 0; }
.gsmu-quote figcaption { display: grid; gap: 0.1rem; margin-top: 0.9rem; }
.gsmu-quote figcaption span { color: var(--gsmu-muted); font-size: 0.9rem; }
.gsmu-quotes.is-cards { grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); }
.gsmu-quote.is-card { display: flex; flex-direction: column; padding: 1.5rem; border: 1px solid var(--gsmu-line); border-radius: var(--gsmu-radius); background: var(--gsmu-surface); box-shadow: var(--gsmu-shadow); }
.gsmu-quote.is-card figcaption { margin-top: auto; padding-top: 1rem; }
.gsmu-quote__stars { display: flex; gap: 0.15rem; margin-bottom: 0.8rem; color: var(--gsmu-gold); }
.gsmu-quote__stars .gsc-icon { width: 1rem; height: 1rem; fill: currentColor; }
.gsmu-quotes.is-featured { grid-template-columns: 1fr; }
@media (min-width: 860px) { .gsmu-quotes.is-featured { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); align-items: center; gap: 2rem; } }
.gsmu-quote.is-lead { position: relative; padding: clamp(1.5rem, 4vw, 2.5rem); border-radius: var(--gsmu-radius); background: var(--gsmu-tint); }
.gsmu-quote.is-lead blockquote p { font-family: var(--gsmu-font-display); font-size: clamp(1.35rem, 2.6vw, 1.9rem); line-height: 1.35; }
.gsmu-quote__mark { display: block; height: 2.5rem; font-family: var(--gsmu-font-display); font-size: 5rem; line-height: 1; color: var(--gsmu-accent); }
.gsmu-quotes__side { display: grid; gap: 1rem; }
.gsmu-quote.is-small { padding: 1.1rem 1.25rem; border: 1px solid var(--gsmu-line); border-radius: var(--gsmu-radius-sm); background: var(--gsmu-surface); }
.gsmu-quote.is-pull { max-width: 46rem; margin-inline: auto; text-align: center; }
.gsmu-quote.is-pull blockquote p { font-family: var(--gsmu-font-display); font-size: clamp(1.5rem, 3.4vw, 2.4rem); font-style: italic; line-height: 1.3; }
.gsmu-quote.is-pull figcaption { justify-items: center; }
.gsmu-quotes.is-bubbles { grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); }
.gsmu-quote.is-bubble blockquote { position: relative; padding: 1.25rem 1.4rem; border-radius: calc(var(--gsmu-radius) * 1.2); background: var(--gsmu-tint); }
.gsmu-quote.is-bubble blockquote::after { content: ""; position: absolute; left: 1.75rem; bottom: -0.7rem; width: 1.4rem; height: 1.4rem; background: inherit; transform: rotate(45deg); border-radius: 3px; }
.gsmu-quote.is-bubble.is-accent blockquote { background: var(--gsmu-gold-tint); }
.gsmu-quote.is-bubble figcaption { padding-left: 1.4rem; margin-top: 1.1rem; }

/* ---------- FAQs ---------- */
.gsmu-faqs { display: grid; gap: 0.6rem; }
.gsmu-faq { border: 1px solid var(--gsmu-line); border-radius: var(--gsmu-radius-sm); background: var(--gsmu-surface); }
.gsmu-faq summary { position: relative; display: block; min-height: 44px; padding: 1rem 3rem 1rem 1.2rem; font-weight: 700; cursor: pointer; list-style: none; }
.gsmu-faq summary::-webkit-details-marker { display: none; }
.gsmu-faq summary::after { content: "+"; position: absolute; right: 1.1rem; top: 50%; transform: translateY(-50%); font-size: 1.4rem; font-weight: 400; color: var(--gsmu-brand); }
.gsmu-faq[open] summary::after { content: "–"; }
.gsmu-faq summary:focus-visible { outline: 3px solid var(--gsmu-brand); outline-offset: 2px; border-radius: var(--gsmu-radius-sm); }
.gsmu-faq__body { padding: 0 1.2rem 1.1rem; color: var(--gsmu-muted); }
.gsmu-faq__body > :first-child { margin-top: 0; }
.gsmu-faq__body > :last-child { margin-bottom: 0; }

/* ---------- School details ---------- */
.gsmu-info.is-hours { display: grid; gap: 0.35rem; margin: 0; }
.gsmu-info.is-hours div { display: flex; justify-content: space-between; gap: 1rem; padding: 0.35rem 0; border-bottom: 1px dashed var(--gsmu-line); }
.gsmu-info.is-hours dt { font-weight: 600; }
.gsmu-info.is-hours dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }

/* ---------- Hero slideshow ---------- */
.gsmu-hero-slides { position: relative; display: grid; min-height: clamp(18rem, 42vw, 30rem); border-radius: calc(var(--gsmu-radius) * 1.3); overflow: hidden; background: var(--gsmu-night); color: #fff; isolation: isolate; }
.gsmu-hero-slides > .gsmu-slide { grid-area: 1 / 1; display: flex; flex-direction: column; justify-content: flex-end; gap: 0.5rem; margin: 0 !important; padding: clamp(1.25rem, 4vw, 2.25rem); min-width: 0; }
.gsmu-hero-slides.is-ready > .gsmu-slide { opacity: 0; transition: opacity var(--gsmu-fade, 700ms) ease; }
.gsmu-hero-slides.is-ready > .gsmu-slide.is-active { opacity: 1; z-index: 1; }
.gsmu-slide .wp-block-image, .gsmu-slide > figure { position: absolute; inset: 0; z-index: -1; margin: 0 !important; }
.gsmu-slide .wp-block-image img, .gsmu-slide > figure img { width: 100% !important; height: 100% !important; object-fit: cover; }
.gsmu-slide:has(> figure)::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, transparent 35%, rgb(0 0 0 / 0.62)); }
.gsmu-slide .gsc-badge { margin-bottom: auto; }
.gsmu-slide__tag { display: inline-flex; width: fit-content; margin: 0 !important; padding: 0.3rem 0.8rem; border-radius: 999px; background: rgb(255 255 255 / 0.16); font-size: 0.8125rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.gsmu-slide__title { margin: 0 !important; font-family: var(--gsmu-font-display); font-size: clamp(1.4rem, 3vw, 2.1rem); font-weight: 700; line-height: 1.15; }
.gsmu-hero-slides__dots { position: absolute; z-index: 2; right: 1rem; top: 1rem; display: flex; gap: 0.2rem; }
.gsmu-hero-slides__dots button { position: relative; width: 44px; height: 44px; padding: 0; border: 0; background: none; cursor: pointer; }
.gsmu-hero-slides__dots button::before { content: ""; position: absolute; inset: 50% auto auto 50%; width: 0.65rem; height: 0.65rem; border-radius: 999px; background: rgb(255 255 255 / 0.5); transform: translate(-50%, -50%); transition: width 0.2s, background 0.2s; }
.gsmu-hero-slides__dots button[aria-current="true"]::before { width: 1.6rem; background: #fff; }
.gsmu-hero-slides__dots button:focus-visible { outline: 2px solid #fff; outline-offset: -6px; border-radius: 999px; }
.gsmu-hero-slides.is-editing { display: block; min-height: 0; padding: 1rem; background: var(--gsmu-soft); color: var(--gsmu-ink); }
.gsmu-hero-slides__help { margin: 0 0 0.75rem; font-size: 0.875rem; color: var(--gsmu-muted); }
.gsmu-hero-slides.is-editing .gsmu-slide { position: relative; min-height: 12rem; margin: 0 0 0.75rem !important; border-radius: var(--gsmu-radius); background: var(--gsmu-night); color: #fff; }
@media (prefers-reduced-motion: reduce) { .gsmu-hero-slides.is-ready > .gsmu-slide { transition: none; } }

/* Touch screens: tappable things at least 44px. */
@media (pointer: coarse) {
	.gsmu-album a, .gsmu-programme a, .gsmu-event__title a, .gsmu-tutor__name a { display: inline-flex; align-items: center; min-height: 44px; }
}
/* Slides: everything sits on the left, above the bottom edge. */
.gsmu-hero-slides > .gsmu-slide > * { margin-left: 0 !important; margin-right: auto !important; max-width: none; }
