/*
 * WooCommerce Events Manager - front stylesheet.
 * Tokens come from wcem-dynamic.css (--wcem-*); every use has a fallback.
 * Typography is inherited from the theme. Colours derive from currentColor so dark themes work.
 */

/* ---- tokens ---- */
:where(.wcem, .wcem-cart-details, .wcem-modal) {
	--wcem-_p: var(--wcem-primary, #6046ff);
	--wcem-_pr: var(--wcem-primary-rgb, 96 70 255);
	--wcem-_on: var(--wcem-on-primary, #fff);
	--wcem-_s: var(--wcem-ok, #0f766e);
	--wcem-_warn: var(--wcem-caution, #b45309);
	--wcem-_bad: var(--wcem-cal-sold-out, #dc3545);
	--wcem-_line: color-mix(in srgb, currentColor 18%, transparent);
	--wcem-_soft: var(--wcem-section-bg, color-mix(in srgb, currentColor 5%, transparent));
	--wcem-_r: .5rem;
	--wcem-_gap: clamp(.75rem, 2cqi, 1.5rem);
	--wcem-_shadow: 0 1px 2px rgb(0 0 0 / .08), 0 4px 14px rgb(0 0 0 / .06);
	color: var(--wcem-text, inherit);
	font-size: var(--wcem-fs, inherit);
	line-height: 1.5;
	box-sizing: border-box;
}
:where(.wcem, .wcem-cart-details, .wcem-modal) *,
:where(.wcem, .wcem-cart-details, .wcem-modal) *::before,
:where(.wcem, .wcem-cart-details, .wcem-modal) *::after { box-sizing: inherit; }
.wcem [hidden], .wcem-modal[hidden] { display: none !important; }
.wcem { container-type: inline-size; }
.wcem :is(h1, h2, h3, h4, h5, h6) { margin-block: 0 .5em; line-height: 1.25; }
.wcem h1 { font-size: var(--wcem-fs-h1, 2rem); }
.wcem h2 { font-size: var(--wcem-fs-h2, 1.5rem); }
.wcem h3 { font-size: var(--wcem-fs-h3, 1.25rem); }
.wcem h4 { font-size: var(--wcem-fs-h4, 1.125rem); }
.wcem h5 { font-size: var(--wcem-fs-h5, 1rem); }
.wcem h6 { font-size: var(--wcem-fs-h6, .875rem); }
.wcem :is(ul, ol) { margin: 0; padding: 0; list-style: none; }
.wcem img { max-inline-size: 100%; block-size: auto; }
.wcem :is(a, button, input, select, textarea, summary):focus-visible,
.wcem-modal :is(a, button):focus-visible {
	outline: 2px solid var(--wcem-_p); outline-offset: 2px;
}
.wcem .screen-reader-text, .wcem-hp {
	position: absolute !important; inline-size: 1px; block-size: 1px; margin: -1px; padding: 0;
	overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}
.wcem-icon { inline-size: 1.1em; block-size: 1.1em; flex: none; vertical-align: -.2em; fill: currentColor; }

/* ---- buttons ---- */
.wcem-button, .wcem-card__button {
	display: inline-flex; align-items: center; justify-content: center; gap: .5em;
	min-block-size: 2.75rem; padding: .5em 1.25em; border: 1px solid transparent; border-radius: var(--wcem-_r);
	background: var(--wcem-btn-bg, var(--wcem-_p)); color: var(--wcem-btn-color, var(--wcem-_on));
	font: inherit; font-size: var(--wcem-btn-fs, inherit); font-weight: 600; line-height: 1.2; text-decoration: none; cursor: pointer;
	transition: filter .15s, background-color .15s, border-color .15s;
}
.wcem-button:hover, .wcem-card__button:hover { filter: brightness(1.1); color: var(--wcem-btn-color, var(--wcem-_on)); }
.wcem-button:active { filter: brightness(.95); }
.wcem-button[disabled], .wcem-button[aria-disabled="true"] { opacity: .55; cursor: not-allowed; filter: none; }
.wcem-button--primary { background: var(--wcem-_p); color: var(--wcem-_on); }
.wcem-button--ghost {
	background: transparent; color: inherit; border-color: var(--wcem-_line);
}
.wcem-button--ghost:hover { background: var(--wcem-_soft); color: inherit; filter: none; border-color: currentColor; }

/* ---- form controls ---- */
.wcem-field { display: block; margin-block-end: .9rem; }
.wcem-field__label { display: block; margin-block-end: .3em; font-size: var(--wcem-fs-label, .9em); font-weight: 600; }
.wcem-required { color: var(--wcem-_bad); }
.wcem-input, .wcem-select, .wcem-qty__input, .wcem .wcem-field textarea {
	display: block; inline-size: 100%; min-block-size: 2.75rem; padding: .5em .75em;
	border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r);
	background: color-mix(in srgb, canvas 92%, currentColor); color: inherit; font: inherit;
}
.wcem-select { appearance: auto; }
.wcem-input:focus, .wcem-select:focus { border-color: var(--wcem-_p); }
.wcem-input:user-invalid, .wcem-select:user-invalid, .wcem-input[aria-invalid="true"], .wcem-select[aria-invalid="true"] { border-color: var(--wcem-_bad); }
.wcem-check { display: flex; align-items: center; gap: .5em; margin-block-end: .4rem; cursor: pointer; }
.wcem-check input { inline-size: 1.15em; block-size: 1.15em; accent-color: var(--wcem-_p); margin: 0; }
.wcem-choice { display: flex; flex-wrap: wrap; gap: .25rem 1.25rem; }
.wcem-form { display: grid; gap: .25rem; max-inline-size: 36rem; }
.wcem-form__message {
	margin: .5rem 0; padding: .6em .9em; border-radius: var(--wcem-_r);
	background: color-mix(in srgb, var(--wcem-_bad) 14%, transparent); border-inline-start: 4px solid var(--wcem-_bad);
}
.wcem-form__message.wcem-success, .wcem-success { background: var(--wcem-secondary, color-mix(in srgb, var(--wcem-_s) 16%, transparent)); border-inline-start-color: var(--wcem-_s); }
.wcem-form__message.wcem-error, .wcem-error { border-inline-start-color: var(--wcem-_bad); }
.wcem-form.is-busy { opacity: .7; pointer-events: none; }
.wcem-enquiry__title, .wcem-booking__subtitle { margin-block: 1rem .6rem; font-size: var(--wcem-fs-h3, 1.15rem); }

/* ---- badges, ribbons, notices ---- */
.wcem-badge {
	display: inline-block; padding: .1em .6em; border-radius: 99px; font-size: .78em; font-weight: 600; line-height: 1.6;
	background: color-mix(in srgb, var(--wcem-_p) 15%, transparent); color: inherit; vertical-align: middle;
}
.wcem-badge--online { background: var(--wcem-secondary, color-mix(in srgb, var(--wcem-_s) 18%, transparent)); }
.wcem-badge--inperson { background: color-mix(in srgb, var(--wcem-_p) 15%, transparent); }
.wcem-ribbon {
	display: inline-block; padding: .2em .75em; border-radius: 99px; font-size: .78em; font-weight: 700; line-height: 1.5;
	background: var(--wcem-_warn); color: #fff; text-transform: uppercase; letter-spacing: .03em;
}
.wcem-ribbon--soldout { background: var(--wcem-_bad); }
.wcem-ribbon--limited { background: var(--wcem-_warn); }
.wcem-notice {
	display: flex; gap: .75rem; align-items: flex-start; margin-block: 1rem; padding: .9rem 1.1rem;
	border-radius: var(--wcem-_r); border-inline-start: 4px solid var(--wcem-_warn);
	background: var(--wcem-warning, color-mix(in srgb, var(--wcem-_warn) 12%, transparent));
}
.wcem-notice--soldout, .wcem-notice--expired, .wcem-notice--date_expired, .wcem-notice--unavailable, .wcem-notice--off {
	border-inline-start-color: var(--wcem-_bad); background: color-mix(in srgb, var(--wcem-_bad) 10%, transparent);
}
.wcem-notice--announcement, .wcem-notice--members { border-inline-start-color: var(--wcem-_p); background: color-mix(in srgb, var(--wcem-_p) 10%, transparent); }
.wcem-notice__icon { inline-size: 1.5rem; block-size: 1.5rem; margin-block-start: .1rem; }
.wcem-notice__body { flex: 1; min-inline-size: 0; }
.wcem-notice__title { display: block; }
.wcem-notice__text > :last-child, .wcem-notice__text { margin-block: .25rem 0; }
.wcem-notice__meta { display: block; margin-block-start: .25rem; font-size: .9em; opacity: .8; }
.wcem-announcement { display: grid; gap: 1rem; }

/* ---- single event layout ---- */
.wcem-single { display: block; max-inline-size: 76rem; margin-inline: auto; padding-block: 1rem; }
.wcem-single__layout { display: grid; gap: calc(var(--wcem-_gap) * 1.5); grid-template-columns: minmax(0, 1fr); }
@container (min-width: 56rem) {
	.wcem-single__layout { grid-template-columns: minmax(0, 1fr) minmax(16rem, 22rem); align-items: start; }
	.wcem-single__side { position: sticky; inset-block-start: 1rem; }
}
.wcem-single__main, .wcem-single__side { display: grid; gap: var(--wcem-_gap); min-inline-size: 0; align-content: start; }
.wcem-title__text { margin: 0; font-size: var(--wcem-fs-h1, clamp(1.6rem, 4cqi, 2.4rem)); }
.wcem-section, .wcem-widget, .wcem-booking, .wcem-enquiry, .wcem-rsvp {
	padding: clamp(.9rem, 2.5cqi, 1.4rem); border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r); background: var(--wcem-_soft);
}
.wcem-enquiry, .wcem-rsvp { margin-block-start: .75rem; }
.wcem-section__title, .wcem-widget__title, .wcem-booking__title {
	display: flex; align-items: center; gap: .5em; margin-block: 0 .8rem; font-size: var(--wcem-fs-h3, 1.2rem);
}
.wcem-summary { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; margin: 0; }
.wcem-summary__item { display: inline-flex; align-items: center; gap: .4em; }
.wcem-description__content { overflow-wrap: anywhere; }
.wcem-description__content > :first-child { margin-block-start: 0; }
.wcem-description--collapsible.is-collapsed .wcem-description__content {
	max-block-size: var(--wcem-_rm, 12rem); overflow: hidden;
	mask-image: linear-gradient(#000 60%, transparent);
}
.wcem-description__toggle { margin-block-start: .75rem; }
.wcem-description__less, .wcem-description__toggle[aria-expanded="true"] .wcem-description__more { display: none; }
.wcem-description__toggle[aria-expanded="true"] .wcem-description__less { display: inline; }

/* ---- gallery / scroll-snap track ---- */
.wcem-gallery { position: relative; }
.wcem-gallery__track, .wcem-related__track, .wcem-list--carousel .wcem-list__items {
	display: grid; grid-auto-flow: column; grid-auto-columns: 100%; gap: .75rem;
	overflow-x: auto; overscroll-behavior-inline: contain; scroll-snap-type: x mandatory; scrollbar-width: thin;
}
.wcem-gallery__item { margin: 0; scroll-snap-align: start; }
.wcem-gallery__img { display: block; inline-size: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--wcem-_r); }
.wcem-gallery__nav {
	position: absolute; inset-block-start: 50%; translate: 0 -50%; z-index: 2; display: grid; place-items: center;
	inline-size: 2.5rem; block-size: 2.5rem; padding: 0; border: 0; border-radius: 50%;
	background: rgb(0 0 0 / .55); color: #fff; cursor: pointer;
}
.wcem-gallery__nav:hover { background: rgb(0 0 0 / .8); }
.wcem-gallery__nav--prev { inset-inline-start: .5rem; }
.wcem-gallery__nav--next { inset-inline-end: .5rem; }

/* ---- sidebar widgets ---- */
.wcem-dates { display: grid; gap: .35rem; }
.wcem-dates__item a { display: block; padding: .4em .6em; border-radius: calc(var(--wcem-_r) - .15rem); text-decoration: none; background: color-mix(in srgb, currentColor 6%, transparent); }
.wcem-dates__item a:hover { background: color-mix(in srgb, var(--wcem-_p) 18%, transparent); }
.wcem-dates__more { margin-block-start: .5rem; }
.wcem-dates__more > summary { cursor: pointer; font-weight: 600; padding-block: .25rem; }
.wcem-tags, .wcem-share, .wcem-calendar-links, .wcem-organizers { display: flex; flex-wrap: wrap; gap: .5rem; }
.wcem-organizers { flex-direction: column; }
.wcem-tag, .wcem-tags__item a { display: inline-block; padding: .2em .7em; border-radius: 99px; border: 1px solid var(--wcem-_line); font-size: .9em; text-decoration: none; }
.wcem-share__link {
	display: inline-flex; align-items: center; gap: .4em; padding: .4em .85em; border-radius: 99px;
	border: 1px solid var(--wcem-_line); text-decoration: none; font-size: .9em; background: transparent; color: inherit; cursor: pointer;
}
.wcem-share__link:hover { border-color: var(--wcem-_p); color: var(--wcem-_p); }
.wcem-share__link--facebook:hover { color: #1877f2; border-color: currentColor; }
.wcem-share__link--linkedin:hover { color: #0a66c2; border-color: currentColor; }
.wcem-share__link--whatsapp:hover { color: #1fa855; border-color: currentColor; }
.wcem-share__link.is-copied { border-color: var(--wcem-_s); color: var(--wcem-_s); }
.wcem-location__name { display: block; font-weight: 700; }
.wcem-location__address { display: block; opacity: .85; }
.wcem-speakers__list { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 9rem), 1fr)); }
.wcem-speakers__item { text-align: center; }
.wcem-speakers__link { display: grid; justify-items: center; gap: .35rem; color: inherit; text-decoration: none; }
.wcem-speakers__avatar {
	display: grid; place-items: center; inline-size: 5rem; block-size: 5rem; overflow: hidden; border-radius: 50%;
	background: color-mix(in srgb, var(--wcem-_p) 18%, transparent); font-weight: 700; font-size: 1.5rem;
}
.wcem-speakers__img { inline-size: 100%; block-size: 100%; object-fit: cover; }
.wcem-speakers__name { font-weight: 700; }
.wcem-speakers__role { font-size: .85em; opacity: .75; }

/* ---- faq ---- */
.wcem-documents__list { display: grid; gap: .4rem; margin: 0; padding-inline-start: 1.2rem; }
.wcem-faq__intro { margin-block: 0 .75rem; }
.wcem-faq__items { display: grid; gap: .5rem; }
.wcem-faq__item { border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r); background: color-mix(in srgb, canvas 96%, currentColor); }
.wcem-faq__question {
	display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .8rem 1rem;
	font-weight: 600; cursor: pointer; list-style: none;
}
.wcem-faq__question::-webkit-details-marker { display: none; }
.wcem-faq__chevron { transition: rotate .2s; }
.wcem-faq__item[open] > .wcem-faq__question .wcem-faq__chevron { rotate: 180deg; }
.wcem-faq__answer { padding: 0 1rem 1rem; }
.wcem-faq__answer > :last-child { margin-block-end: 0; }

/* ---- timeline ---- */
.wcem-timeline__list { counter-reset: wcem-tl; position: relative; display: grid; gap: 1.25rem; }
.wcem-timeline__list::before {
	content: ""; position: absolute; inset-block: .5rem; inset-inline-start: 1.1rem; inline-size: 2px; background: var(--wcem-_line);
}
.wcem-timeline__item { position: relative; display: grid; grid-template-columns: 2.25rem minmax(0, 1fr); gap: 1rem; counter-increment: wcem-tl; }
.wcem-timeline__counter {
	z-index: 1; display: grid; place-items: center; inline-size: 2.25rem; block-size: 2.25rem; border-radius: 50%;
	background: var(--wcem-_p); color: var(--wcem-_on); font-weight: 700; font-size: .9rem;
}
.wcem-timeline__counter:empty::before { content: counter(wcem-tl); }
.wcem-timeline__content { padding: .8rem 1rem; border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r); background: color-mix(in srgb, canvas 96%, currentColor); }
.wcem-timeline__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .25rem .75rem; }
.wcem-timeline__title { margin: 0; font-size: 1.05em; }
.wcem-timeline__time { font-size: .85em; opacity: .75; }
.wcem-timeline__body { margin-block-start: .4rem; }
.wcem-timeline__body > :last-child { margin-block-end: 0; }

/* ---- booking form ---- */
.wcem-booking--closed, .wcem-booking--rsvp { padding: 0; border: 0; background: none; }
.wcem-booking--rsvp .wcem-rsvp { margin: 0; }
.wcem-booking__form { display: grid; gap: 1rem; }
.wcem-date-select, .wcem-time-select { display: block; }
.wcem-booking__tickets { display: grid; gap: 1rem; min-block-size: 3rem; }
.wcem-booking__tickets.is-loading { opacity: .5; pointer-events: none; }
.wcem-booking__tickets.is-loading::after { content: attr(data-wcem-wait); display: block; text-align: center; padding: .5rem; }
.wcem-ticket-form { display: grid; gap: 1rem; }
.wcem-tickets, .wcem-extras { display: grid; gap: .6rem; }
.wcem-ticket {
	display: grid; gap: .5rem 1rem; align-items: center; padding: .85rem 1rem; border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r);
	background: color-mix(in srgb, canvas 96%, currentColor); grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas: "info price" "qty qty";
}
@container (min-width: 30rem) {
	.wcem-ticket { grid-template-columns: minmax(0, 1fr) auto auto; grid-template-areas: "info qty price"; }
}
.wcem-ticket__info { grid-area: info; min-inline-size: 0; }
.wcem-ticket__qty { grid-area: qty; justify-self: start; }
.wcem-ticket__price { grid-area: price; display: grid; justify-items: end; gap: .25rem; font-weight: 700; text-align: end; }
@container (min-width: 30rem) { .wcem-ticket__qty { justify-self: center; } }
.wcem-ticket__name { font-weight: 700; display: flex; flex-wrap: wrap; align-items: center; gap: .4em; }
.wcem-ticket__desc { font-size: .9em; opacity: .8; }
.wcem-ticket__note { font-size: .9em; opacity: .8; }
.wcem-ticket__note--soldout { color: var(--wcem-_bad); font-weight: 700; opacity: 1; }
.wcem-ticket--unavailable { opacity: .65; }
.wcem-remaining { font-size: .85em; }
.wcem-remaining--high { color: var(--wcem-_s); }
.wcem-remaining--medium { color: var(--wcem-_warn); }
.wcem-remaining--low, .wcem-low-stock { color: var(--wcem-_bad); }
.wcem-low-stock { font-size: .85em; font-weight: 600; }
.wcem-qty { display: inline-flex; align-items: stretch; border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r); overflow: hidden; }
.wcem-qty__btn {
	display: grid; place-items: center; inline-size: 2.75rem; padding: 0; border: 0; background: color-mix(in srgb, currentColor 8%, transparent);
	color: inherit; font: inherit; cursor: pointer;
}
.wcem-qty__btn:hover:not(:disabled) { background: color-mix(in srgb, var(--wcem-_p) 22%, transparent); }
.wcem-qty__btn:disabled { opacity: .35; cursor: not-allowed; }
.wcem-qty__input {
	inline-size: 3.5rem; min-block-size: 2.75rem; padding: .25em; border: 0; border-radius: 0; text-align: center; background: transparent; appearance: textfield;
}
.wcem-qty__input::-webkit-inner-spin-button, .wcem-qty__input::-webkit-outer-spin-button { appearance: none; margin: 0; }
.wcem-qty__select { inline-size: auto; min-inline-size: 5rem; }
.wcem-attendees { display: grid; gap: .75rem; }
.wcem-attendees__same { margin: 0; }
.wcem-attendees__list { display: grid; gap: .75rem; }
.wcem-attendee { margin: 0; padding: .9rem 1rem; border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r); min-inline-size: 0; }
.wcem-attendee__title { padding-inline: .4rem; font-weight: 700; }
.wcem-attendee__ticket { margin-inline-start: .5em; font-weight: 400; opacity: .75; }
.wcem-attendee__heading { margin-block: .5rem; }
.wcem-attendee .wcem-field:last-child { margin-block-end: 0; }
.wcem-booking__summary {
	display: grid; gap: .75rem; padding: 1rem; border-radius: var(--wcem-_r);
	background: color-mix(in srgb, var(--wcem-_p) 8%, transparent);
}
.wcem-total { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; font-size: 1.15em; font-weight: 700; }
.wcem-total__amount { color: var(--wcem-_p); }
.wcem-booking__error { margin: 0; color: var(--wcem-_bad); font-weight: 600; }
.wcem-booking__submit { inline-size: 100%; }
.wcem-seat-status { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; margin-block-end: .5rem; }
.wcem-seat-status__item { display: inline-flex; gap: .4em; align-items: baseline; }
.wcem-seat-status__label { opacity: .8; }
.wcem-seat-status__item--available.wcem-remaining--low .wcem-seat-status__value { color: var(--wcem-_bad); }
.wcem-seat-status__item--available.wcem-remaining--medium .wcem-seat-status__value { color: var(--wcem-_warn); }
.wcem-seat-status__item--available.wcem-remaining--high .wcem-seat-status__value { color: var(--wcem-_s); }

/* ---- cart / checkout details ---- */
.wcem-cart-details { margin-block-start: .5rem; font-size: .9em; }
.wcem-cart-section { margin-block-end: .5rem; }
.wcem-cart-title { margin: 0 0 .25rem; font-weight: 700; }
.wcem-cart-table { inline-size: 100%; border-collapse: collapse; }
.wcem-cart-table td { padding: .2em .4em .2em 0; border: 0; border-block-end: 1px solid var(--wcem-_line); vertical-align: top; }
.wcem-cart-unit, .wcem-cart-line { text-align: end; white-space: nowrap; }
.wcem-cart-name { overflow-wrap: anywhere; }

/* ---- list ---- */
.wcem-list { display: grid; gap: var(--wcem-_gap); }
.wcem-list__items { display: grid; gap: var(--wcem-_gap); grid-template-columns: minmax(0, 1fr); }
@container (min-width: 36rem) { .wcem-list--grid .wcem-list__items { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@container (min-width: 56rem) {
	.wcem-list--grid.wcem-cols-3 .wcem-list__items, .wcem-list--grid.wcem-cols-4 .wcem-list__items,
	.wcem-list--grid.wcem-cols-5 .wcem-list__items, .wcem-list--grid.wcem-cols-6 .wcem-list__items { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@container (min-width: 76rem) {
	.wcem-list--grid.wcem-cols-4 .wcem-list__items { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.wcem-list--grid.wcem-cols-5 .wcem-list__items { grid-template-columns: repeat(5, minmax(0, 1fr)); }
	.wcem-list--grid.wcem-cols-6 .wcem-list__items { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
.wcem-list--grid.wcem-cols-1 .wcem-list__items { grid-template-columns: minmax(0, 1fr); }
.wcem-list--list .wcem-card { grid-template-columns: minmax(0, 1fr); }
@container (min-width: 36rem) {
	.wcem-list--list .wcem-card { grid-template-columns: minmax(10rem, 14rem) minmax(0, 1fr); }
	.wcem-list--list .wcem-card__media { aspect-ratio: auto; block-size: 100%; }
}
.wcem-list--large .wcem-card__title { font-size: var(--wcem-fs-h2, 1.5rem); }
.wcem-list--carousel .wcem-list__items { grid-auto-columns: min(85%, 20rem); }
.wcem-list--carousel .wcem-card, .wcem-related__track > * { scroll-snap-align: start; }
.wcem-related__track { grid-auto-columns: min(85%, 20rem); padding-block-end: .5rem; }
@container (min-width: 40rem) { .wcem-related__track { grid-auto-columns: calc((100% - 1.5rem) / 3); } }
.wcem-related__head { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: .5rem 1rem; margin-block-end: .75rem; }
.wcem-related__sub { margin: 0; opacity: .75; }
.wcem-related__nav { display: flex; gap: .5rem; }
.wcem-related__nav .wcem-button { min-block-size: 2.5rem; padding-inline: .75em; }
.wcem-list__empty { margin: 0; padding: 2rem 1rem; text-align: center; border: 1px dashed var(--wcem-_line); border-radius: var(--wcem-_r); }
.wcem-list__more-wrap { margin: 0; text-align: center; }
.wcem-list.is-loading .wcem-list__items { opacity: .5; }

/* ---- card ---- */
.wcem-card {
	position: relative; display: grid; grid-template-rows: auto 1fr; min-inline-size: 0; overflow: hidden;
	border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r); background: color-mix(in srgb, canvas 97%, currentColor);
	box-shadow: var(--wcem-_shadow); transition: translate .15s, box-shadow .15s;
}
.wcem-card:hover { translate: 0 -2px; box-shadow: 0 2px 4px rgb(0 0 0 / .1), 0 10px 24px rgb(0 0 0 / .1); }
.wcem-card--expired { opacity: .8; }
.wcem-card--soldout .wcem-card__img { filter: grayscale(.6); }
.wcem-card__media { position: relative; display: block; aspect-ratio: 16 / 10; overflow: hidden; background: var(--wcem-_soft); }
.wcem-card__img { display: block; inline-size: 100%; block-size: 100%; object-fit: cover; }
.wcem-card__media .wcem-ribbon { position: absolute; inset-block-start: .6rem; inset-inline-start: .6rem; }
.wcem-card__media .wcem-ribbon + .wcem-ribbon { inset-block-start: 2.4rem; }
.wcem-card__body { display: flex; flex-direction: column; gap: .35rem; padding: .9rem 1rem 1rem; }
.wcem-card__date { display: flex; align-items: center; flex-wrap: wrap; gap: .4em; color: var(--wcem-_p); font-weight: 600; font-size: .9em; }
.wcem-card__title { margin: 0; font-size: var(--wcem-fs-h4, 1.15rem); }
.wcem-card__title a { color: inherit; text-decoration: none; }
.wcem-card__title a:hover { color: var(--wcem-_p); }
.wcem-card__meta { display: flex; align-items: center; gap: .4em; font-size: .9em; opacity: .85; }
.wcem-card__notice { margin: 0; color: var(--wcem-_bad); font-weight: 600; font-size: .9em; }
.wcem-card__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem; margin-block-start: auto; padding-block-start: .6rem; }
.wcem-card__price { font-weight: 700; font-size: 1.1em; }
.wcem-card__button { min-block-size: 2.4rem; padding: .35em 1em; }
.wcem-card__more-dates {
	min-block-size: 2.25rem;
	padding: .2em .75rem; border: 0; background: none; color: var(--wcem-_p); font: inherit; font-size: .9em; text-decoration: underline; cursor: pointer;
}
.wcem-card__dates { inline-size: 100%; }
.wcem-card__dates .wcem-dates { margin-block-start: .4rem; }

/* ---- filters / chips / pagination ---- */
.wcem-filters { display: grid; gap: .75rem 1rem; align-items: end; grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr)); padding: 1rem; border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r); background: var(--wcem-_soft); }
.wcem-filters__field { margin: 0; }
.wcem-filters__actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.wcem-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.wcem-chip {
	display: inline-block; padding: .3em .9em; border: 1px solid var(--wcem-_line); border-radius: 99px;
	color: inherit; text-decoration: none; font-size: .9em; transition: background-color .15s;
}
.wcem-chip:hover { border-color: var(--wcem-_p); }
.wcem-chip.is-active { background: var(--wcem-_p); border-color: var(--wcem-_p); color: var(--wcem-_on); }
.wcem-pagination ul, .wcem-pagination .page-numbers:is(ul) { display: flex; flex-wrap: wrap; justify-content: center; gap: .35rem; }
.wcem-pagination { text-align: center; }
.wcem-pagination .page-numbers {
	display: inline-grid; place-items: center; min-inline-size: 2.5rem; min-block-size: 2.5rem; padding: 0 .6em;
	border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r); color: inherit; text-decoration: none;
}
.wcem-pagination a.page-numbers:hover { border-color: var(--wcem-_p); }
.wcem-pagination .page-numbers.current { background: var(--wcem-_p); border-color: var(--wcem-_p); color: var(--wcem-_on); }
.wcem-pagination .page-numbers.dots { border-color: transparent; }

/* ---- speakers / cities / archive ---- */
.wcem-speakers { display: block; }
.wcem-cities__grid { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 12rem), 1fr)); }
.wcem-cities__cell, .wcem-cities__item { display: block; padding: .75rem 1rem; border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r); color: inherit; text-decoration: none; }
.wcem-cities__item:hover { border-color: var(--wcem-_p); }
.wcem-cities__name { font-weight: 700; }
.wcem-cities__hint { display: block; font-size: .85em; opacity: .7; }
.wcem-city-page, .wcem-archive { max-inline-size: 76rem; margin-inline: auto; padding-block: 1rem; }
.wcem-city-page__title, .wcem-archive__title { margin-block: 0 .5rem; }
.wcem-archive__header { margin-block-end: 1.25rem; }
.wcem-archive__desc { opacity: .85; }

/* ---- calendar ---- */
.wcem-calendar { display: grid; gap: .75rem; }
.wcem-calendar.is-loading { opacity: .6; }
.wcem-cal__toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; }
.wcem-cal__title { margin: 0; flex: 1; text-align: center; font-size: var(--wcem-fs-h3, 1.25rem); }
.wcem-cal__nav {
	display: grid; place-items: center; inline-size: 2.75rem; block-size: 2.75rem; border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r);
	color: inherit; font-size: 1.5rem; line-height: 1; text-decoration: none;
}
.wcem-cal__nav:hover { background: var(--wcem-_soft); border-color: currentColor; }
.wcem-cal__filter { display: flex; align-items: center; gap: .5rem; flex-basis: 100%; }
.wcem-cal__filter .wcem-field { margin: 0; flex: 1; max-inline-size: 18rem; }
.wcem-cal__grid {
	inline-size: 100%; table-layout: fixed; border-collapse: collapse; margin: 0;
	border: 1px solid var(--wcem-cal-border, #ddd);
}
.wcem-cal__grid :is(th, td) { padding: 0; border: 1px solid var(--wcem-cal-border, #ddd); vertical-align: top; }
.wcem-cal__dow {
	padding: .5rem .25rem; background: var(--wcem-cal-header-bg, #2c3e50); color: var(--wcem-cal-header-text, #fff);
	font-size: .8em; font-weight: 600; text-align: center; text-transform: uppercase;
}
.wcem-cal__dow abbr { text-decoration: none; }
.wcem-cal__day { min-block-size: 4.5rem; padding: .25rem; overflow: hidden; }
.wcem-cal__day--dow-0 { background: var(--wcem-cal-dow-0, transparent); }
.wcem-cal__day--dow-1 { background: var(--wcem-cal-dow-1, transparent); }
.wcem-cal__day--dow-2 { background: var(--wcem-cal-dow-2, transparent); }
.wcem-cal__day--dow-3 { background: var(--wcem-cal-dow-3, transparent); }
.wcem-cal__day--dow-4 { background: var(--wcem-cal-dow-4, transparent); }
.wcem-cal__day--dow-5 { background: var(--wcem-cal-dow-5, transparent); }
.wcem-cal__day--dow-6 { background: var(--wcem-cal-dow-6, transparent); }
.wcem-cal__day--out { opacity: .4; }
.wcem-cal__day--today { background: var(--wcem-cal-today, #fcf8e3); color: #222; }
.wcem-cal__num { display: block; font-size: .85em; font-weight: 600; text-align: end; }
.wcem-cal__day--today .wcem-cal__num { color: var(--wcem-_p); }
.wcem-cal__events { display: grid; gap: .2rem; margin-block-start: .15rem; }
.wcem-cal__chip, .wcem-cal__event a {
	display: block; padding: .1rem .35rem; overflow: hidden; border-radius: .25rem; font-size: .75em; line-height: 1.35;
	background: var(--wcem-cal-event-bg, #3a87ad); color: var(--wcem-cal-event-text, #fff);
	text-decoration: none; text-overflow: ellipsis; white-space: nowrap;
}
.wcem-cal__chip:hover { filter: brightness(1.12); color: var(--wcem-cal-event-text, #fff); }
.wcem-cal__chip--expired { background: var(--wcem-cal-expired-bg, #999); color: var(--wcem-cal-expired-text, #fff); opacity: var(--wcem-cal-expired-opacity, .6); }
.wcem-cal__chip--soldout { background: var(--wcem-cal-sold-out, #dc3545); color: #fff; }
.wcem-cal__chip--low { background: var(--wcem-cal-low-stock, #ffc107); color: #222; }
.wcem-cal__chip--cont { border-start-start-radius: 0; border-end-start-radius: 0; opacity: .85; }
.wcem-cal__time { font-weight: 700; margin-inline-end: .3em; }
@container (max-width: 40rem) {
	.wcem-cal__day { min-block-size: 3rem; }
	.wcem-cal__name, .wcem-cal__time { display: none; }
	.wcem-cal__chip { block-size: .5rem; padding: 0; border-radius: 99px; }
	.wcem-cal__day--has-events .wcem-cal__num { color: var(--wcem-_p); }
}

/* ---- account tickets ---- */
.wcem-account { display: grid; gap: 1rem; }
.wcem-account__stats { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr)); }
.wcem-account__stat { padding: .75rem 1rem; border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r); text-align: center; }
.wcem-account__stat strong { display: block; font-size: 1.6em; color: var(--wcem-_p); }
.wcem-account__order { padding: 1rem; border: 1px solid var(--wcem-_line); border-radius: var(--wcem-_r); }
.wcem-account__order-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; margin-block-end: .75rem; }
.wcem-account__order-title { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: .5em; }
.wcem-account__order-date, .wcem-account__order-total { font-size: .9em; opacity: .85; }
.wcem-account__order-total { font-weight: 700; opacity: 1; }
.wcem-account__empty { padding: 2rem 1rem; text-align: center; border: 1px dashed var(--wcem-_line); border-radius: var(--wcem-_r); }
.wcem-account__back { text-decoration: none; }
.wcem-table { inline-size: 100%; border-collapse: collapse; }
.wcem-table :is(th, td) { padding: .55rem .6rem; border: 0; border-block-end: 1px solid var(--wcem-_line); text-align: start; vertical-align: top; }
.wcem-table th { font-size: .85em; text-transform: uppercase; letter-spacing: .03em; opacity: .75; }
.wcem-table .is-past { opacity: .6; }
.wcem-account__tickets { display: block; overflow-x: auto; }
@container (max-width: 34rem) {
	.wcem-account__tickets :is(thead) { display: none; }
	.wcem-account__tickets :is(tbody, tr, td) { display: block; }
	.wcem-account__tickets tr { padding-block: .5rem; border-block-end: 1px solid var(--wcem-_line); }
	.wcem-account__tickets td { border: 0; padding: .15rem 0; }
}

/* ---- modal (native dialog) ---- */
.wcem-modal {
	inline-size: min(92vw, 36rem); max-block-size: 90vh; padding: 1.25rem 1.5rem; border: 0; border-radius: var(--wcem-_r);
	background: canvas; color: canvastext; box-shadow: 0 20px 60px rgb(0 0 0 / .4);
}
.wcem-modal::backdrop { background: rgb(0 0 0 / .55); }
.wcem-modal[open] { animation: wcem-pop .18s ease-out; }
.wcem-modal__close { position: absolute; inset-block-start: .5rem; inset-inline-end: .5rem; padding: .4em; border: 0; background: none; color: inherit; cursor: pointer; }
@keyframes wcem-pop { from { opacity: 0; translate: 0 .75rem; } }

/* ---- remaining hooks (structural classes that need a small rule) ---- */
.wcem-widget--dates, .wcem-widget--tags, .wcem-widget--share, .wcem-widget--location, .wcem-widget--organizer, .wcem-widget--speakers { min-inline-size: 0; }
.wcem-widget--location .wcem-location { display: grid; gap: .15rem; }
.wcem-widget--calendar .wcem-calendar-links { display: flex; flex-wrap: wrap; gap: .5rem; }
.wcem-summary__item--date { font-weight: 600; }
.wcem-summary__item--time, .wcem-summary__item--location { opacity: .9; }
.wcem-share__item, .wcem-organizers__item { min-inline-size: 0; }
.wcem-gallery--multi .wcem-gallery__track { grid-auto-columns: 100%; }
.wcem-speakers__initial { text-transform: uppercase; line-height: 1; }
.wcem-ticket__amount { font-variant-numeric: tabular-nums; white-space: nowrap; }
.wcem-total__label { font-weight: 600; }
.wcem-seat-status__item--total .wcem-seat-status__value { color: inherit; }
.wcem-card__time { font-weight: 400; opacity: .85; }
.wcem-card__cats, .wcem-card__organizer, .wcem-card__location { overflow-wrap: anywhere; }
.wcem-cal__apply { min-block-size: 2.5rem; }
.wcem-cal__week > td { block-size: 1px; }
.wcem-account__status { text-transform: capitalize; }
.wcem-account__filters { margin-block-end: .5rem; }
.wcem-list__more { min-inline-size: 10rem; }
.wcem-list__more[aria-busy="true"] { opacity: .6; pointer-events: none; }

/* ---- motion / print ---- */
@media (prefers-reduced-motion: reduce) {
	.wcem *, .wcem-modal, .wcem-modal * { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
	.wcem-card:hover { translate: none; }
}
@media (forced-colors: active) {
	.wcem-button, .wcem-chip.is-active, .wcem-timeline__counter { border: 1px solid ButtonText; }
}
@media print {
	.wcem-gallery__nav, .wcem-related__nav, .wcem-share, .wcem-booking, .wcem-filters { display: none !important; }
}
