/*
 * Gradespace Events blocks: structure only (grids, the fit-to-count layouts,
 * form layout, hidden helpers). Colours, type and spacing come from the theme.
 */
.gsev-events, .gsev-albums, .gsev-crew { display: grid; gap: var(--wp--style--block-gap, 20px); }

/* Fit to count: one = a feature, two = a pair, three or more = a grid led by the first. */
.gsev-events--two, .gsev-albums--two { grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); }
.gsev-events--many, .gsev-albums--many, .gsev-events--one.has-filler { grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.gsev-events--one.has-filler { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
.gsev-events--two.has-filler { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.gsev-card--lead, .gsev-album--lead { grid-column: span 2; }
.gsev-card { display: flex; flex-direction: column; min-width: 0; overflow: hidden; }
.gsev-card__media { display: block; aspect-ratio: 3 / 2; overflow: hidden; }
.gsev-card__media img, .gsev-album__cover img, .gsev-crew__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.gsev-card__body { display: flex; flex-direction: column; gap: .35em; flex: 1; padding: 1.25em; }
.gsev-card__title { margin: 0; }
.gsev-card__title a { color: inherit; text-decoration: none; }
.gsev-card__date, .gsev-card__where, .gsev-card__state { margin: 0; }
.gsev-card__foot { display: flex; align-items: center; justify-content: space-between; gap: 1em; margin: auto 0 0; padding-top: .75em; }
.gsev-card--feature { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); }
.gsev-card--feature .gsev-card__media { aspect-ratio: auto; min-height: 340px; }
.gsev-card--feature .gsev-card__body { justify-content: center; padding: 2em; }
.gsev-card--filler { justify-content: space-between; padding: 1.5em; gap: 1em; }
.gsev-card--filler .gsev-card__cta { align-self: flex-start; }

.gsev-album { min-width: 0; }
.gsev-album__link { position: relative; display: block; height: 100%; color: inherit; text-decoration: none; overflow: hidden; }
.gsev-album__cover { display: block; aspect-ratio: 4 / 3; }
.gsev-album__body { display: flex; flex-direction: column; gap: .35em; padding: 1em 0; }
.gsev-album__title { font-size: 1.25em; font-weight: 700; }
.gsev-album--feature .gsev-album__link { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); }
.gsev-album--feature .gsev-album__cover { aspect-ratio: auto; min-height: 380px; }
.gsev-album--feature .gsev-album__body { justify-content: center; padding: 2em; }
.gsev-album__thumbs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: .5em 0; }
.gsev-album__thumbs img { width: 100%; aspect-ratio: 1; object-fit: cover; display: block; }

.gsev-crew { grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); }
.gsev-crew--one { grid-template-columns: minmax(0, 420px); }
.gsev-crew__member a { color: inherit; text-decoration: none; display: block; }
.gsev-crew__photo { display: block; aspect-ratio: 4 / 5; overflow: hidden; margin-bottom: .6em; }
.gsev-crew__name { font-weight: 700; font-size: 1.2em; }
.gsev-crew__role { margin: .2em 0 0; }

.gsev-lineup__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .6em; grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); }
.gsev-lineup--one .gsev-lineup__list { grid-template-columns: 1fr; }
.gsev-lineup__act { display: flex; flex-direction: column; gap: .15em; padding: .8em 1em; }
.gsev-lineup__name { font-weight: 700; }

.gsev-facts__list { display: grid; gap: .5em 2em; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); margin: 0 0 1em; }
.gsev-facts__row dt { font-size: .85em; opacity: .8; }
.gsev-facts__row dd { margin: 0; }
.gsev-countdown { display: flex; flex-wrap: wrap; gap: .5em; margin: 1em 0; }
.gsev-countdown__cell { display: flex; flex-direction: column; align-items: center; min-width: 4.2em; padding: .6em .7em; }
.gsev-countdown__n { font-size: 1.8em; line-height: 1; font-variant-numeric: tabular-nums; }
.gsev-countdown__label { font-size: .75em; text-transform: uppercase; letter-spacing: .08em; }

.gsev-tickets__types { list-style: none; margin: 0 0 1em; padding: 0; display: grid; gap: .6em; }
.gsev-tickets__type { display: flex; align-items: center; justify-content: space-between; gap: 1em; padding: .9em 1em; }
.gsev-tickets__type--ended, .gsev-tickets__type--sold_out, .gsev-tickets__type--soon { opacity: .6; }
.gsev-tickets__about { display: flex; flex-direction: column; gap: .15em; min-width: 0; }
.gsev-tickets__name { font-weight: 700; }
.gsev-tickets__qty { min-width: 4.5em; min-height: 44px; font: inherit; }
.gsev-tickets__buyer { display: grid; gap: .8em; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); border: 0; margin: 1em 0; padding: 0; }
.gsev-tickets__buyer legend { font-weight: 700; margin-bottom: .4em; }
.gsev-tickets__buyer label, .gsev-tickets__code label, .gsev-booking label, .gsev-mine__form label { display: flex; flex-direction: column; gap: .3em; }
.gsev-tickets input, .gsev-booking input, .gsev-booking select, .gsev-booking textarea, .gsev-mine__form input { min-height: 44px; font: inherit; padding: 0 .75em; box-sizing: border-box; max-width: 100%; }
.gsev-booking textarea { padding: .6em .75em; }
.gsev-tickets__sum { display: grid; grid-template-columns: 1fr auto; gap: .3em 1em; margin: 1em 0; }
.gsev-tickets__sum dd { margin: 0; text-align: right; }
.gsev-tickets__sum .is-total { font-weight: 700; font-size: 1.15em; }
.gsev-tickets__go { width: 100%; min-height: 52px; }
.gsev-tickets__go:disabled { opacity: .55; cursor: not-allowed; }

.gsev-booking__form fieldset { display: grid; gap: .8em; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); border: 0; margin: 0 0 1em; padding: 0; }
.gsev-booking__form legend { font-weight: 700; margin-bottom: .4em; }
.gsev-booking__wide { grid-column: 1 / -1; }
.gsev-booking__consent { flex-direction: row !important; align-items: flex-start; gap: .5em !important; margin: 0 0 1em; }
.gsev-booking__consent input { min-height: 0; }

.gsev-mine__list { list-style: none; margin: 0 0 1.5em; padding: 0; display: grid; gap: .6em; }
.gsev-mine__order { display: flex; flex-wrap: wrap; gap: .3em 1em; align-items: baseline; padding: .8em 1em; }
.gsev-mine__qr { display: flex; flex-direction: column; align-items: center; width: 100%; }
.gsev-mine__qr svg { width: min(100%, 240px); height: auto; }
.gsev-mine__code { font-family: ui-monospace, monospace; letter-spacing: .08em; }

@media (max-width: 700px) {
	.gsev-card--lead, .gsev-album--lead { grid-column: auto; }
	.gsev-events--one.has-filler, .gsev-events--two.has-filler { grid-template-columns: 1fr; }
}

/* Albums as a wall: even 3:2 tiles, the name and date under each (newest first). */
.gsev-albums--wall.gsev-albums--many { grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); }
.gsev-albums--wall.gsev-albums--many .gsev-album__cover { aspect-ratio: 3 / 2; }
.gsev-albums--wall .gsev-album__cover { overflow: hidden; }
.gsev-albums--wall .gsev-album__title { text-transform: uppercase; letter-spacing: .02em; }

/* Points (Pro). */
.gsev-points__balance strong { font-size: 2.2em; line-height: 1; }
.gsev-points__tasks, .gsev-points__rewards, .gsev-points__codes { list-style: none; margin: 0 0 1em; padding: 0; display: grid; gap: .5em; }
.gsev-points__task, .gsev-points__reward { display: flex; flex-wrap: wrap; align-items: center; gap: .5em 1em; padding: .7em 1em; }
.gsev-points__plus, .gsev-points__cost { font-weight: 700; min-width: 3.5em; }
.gsev-points__what { flex: 1 1 12em; }
.gsev-points__claim { display: flex; gap: .4em; }
.gsev-points__claim input { width: 9em; min-height: 40px; }
.gsev-points__link { width: min(100%, 26em); min-height: 40px; }

/* Core's spam trap (the "leave this empty" field) stays hidden even where Core's forms sheet isn't loaded. */
.gsev-tickets .gsc-hp, .gsev-booking .gsc-hp, .gsev-mine .gsc-hp, .gsev-reps .gsc-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
/* Earn, grouped: cards under each platform; rewards as cards. */
.gsev-earn--grouped .gsev-points__group { margin: 0 0 2em; }
.gsev-earn--grouped .gsev-points__group-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1em; margin-bottom: .75em; }
.gsev-earn--grouped .gsev-points__group-head h3 { margin: 0; }
.gsev-earn--grouped .gsev-points__cards, .gsev-earn--grouped .gsev-points__reward-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; }
.gsev-earn--grouped .gsev-points__card, .gsev-earn--grouped .gsev-points__reward-card { display: flex; flex-direction: column; gap: .5em; padding: 1.1em 1.2em; border: 1px solid currentColor; border-color: color-mix(in srgb, currentColor 18%, transparent); border-radius: 14px; }
.gsev-earn--grouped h4 { margin: 0; font-size: 1.05em; }
.gsev-earn--grouped .gsev-points__card p, .gsev-earn--grouped .gsev-points__reward-card p { margin: 0; opacity: .8; }
.gsev-earn--grouped .gsev-points__did { margin-top: auto; align-self: flex-start; }
.gsev-earn--grouped .gsev-points__reward-cards { margin-top: 1.5em; }
.gsev-booking__form fieldset.gsev-booking__choices { display: flex; flex-wrap: wrap; gap: .5em 1.4em; border: 0; margin: 0; padding: 0; }
.gsev-booking__form .gsev-booking__choices legend { width: 100%; margin-bottom: .45em; font-weight: 600; }
.gsev-booking__choice { display: inline-flex !important; flex-direction: row !important; align-items: center; gap: .45em; font-weight: 400; }
.gsev-booking__opt { font-weight: 400; opacity: .7; }
/* Venue and map. */
.gsev-venue__where { display: flex; flex-direction: column; gap: .2em; margin: .5em 0 1em; }
.gsev-venue__map { position: relative; aspect-ratio: 16 / 10; margin: 0 0 1em; overflow: hidden; border-radius: 10px; background: repeating-linear-gradient(45deg, rgb(127 127 127 / .12) 0 12px, rgb(127 127 127 / .2) 12px 24px); }
.gsev-venue__map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.gsev-venue__show { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .4em; width: 100%; border: 0; background: none; color: inherit; font: inherit; cursor: pointer; }
.gsev-venue__show span { padding: .7em 1.2em; border-radius: 999px; background: currentColor; }
.gsev-venue__show span { color: inherit; background: rgb(0 0 0 / .55); color: #fff; font-weight: 700; }
.gsev-venue__show small { opacity: .75; }
.gsev-earn--cards .gsev-points__cards { grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 16px; }
.gsev-earn--cards .gsev-points__platform { display: inline-flex; align-items: center; gap: .5em; font-size: .78em; letter-spacing: .12em; text-transform: uppercase; }
.gsev-earn--cards .gsev-points__worth { display: flex; align-items: baseline; justify-content: space-between; gap: 1em; padding-top: .6em; border-top: 1px solid color-mix(in srgb, currentColor 18%, transparent); }
.gsev-earn--cards .gsev-points__plus { font-size: 2em; font-weight: 700; line-height: 1; }
.gsev-earn--cards .gsev-points__often { font-size: .75em; letter-spacing: .12em; text-transform: uppercase; opacity: .7; }
.gsev-earn--grouped .gsev-points__buttons { display: flex; flex-wrap: wrap; gap: 8px; margin-top: auto; }
.gsev-earn--cards .gsev-points__buttons { display: grid; grid-template-columns: 1fr 1fr; }
.gsev-earn--grouped .gsev-points__buttons .gsev-points__did { margin-top: 0; }
.gsev-earn--cards .gsev-points__buttons a { display: flex; align-items: center; justify-content: center; min-height: 44px; padding: .5em .8em; text-align: center; }
.gsev-earn--grouped .gsev-points__open { border: 1px solid color-mix(in srgb, currentColor 35%, transparent); border-radius: 8px; padding: .4em .9em; text-decoration: none; color: inherit; }
.gsev-tickets__news { display: flex !important; align-items: flex-start; gap: .6em; font-weight: 400 !important; font-size: .9375em; line-height: 1.4; }
.gsev-tickets__news input { flex: none; width: 1.15em; height: 1.15em; margin: .15em 0 0; }
