/* Basic constants */
:root {
    /* Colours */
    --ae--color--white: rgba(255, 255, 255, 1);
    --ae--color--gray-light: rgba(238, 238, 238, 1);
    --ae--color--gray-dark: rgba(118, 118, 110, 1);
    --ae--color--black: rgba(0, 0, 0, 1);
    --ae--color--blue: rgba(70, 87, 196, 1);
    --ae--color--red-dark: rgba(226, 43, 16, 1);
    --ae--color--yellow-light: rgba(254, 252, 234, 1);
    --ae--color--yellow: rgba(255, 224, 102, 1);

    /* Font sizes */
    --ae--font-size--small: .85rem;
    --ae--font-size--base: 1rem;
    --ae--font-size--emphasis: clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem);
    --ae--font-size--medium: clamp(1.25rem, 1.1477rem + 0.4545vw, 1.5rem);
    --ae--font-size--large: clamp(1.5rem, 1.2955rem + 0.9091vw, 2rem);

    /* Other */
    --ae-transition: 0.3s ease-out;
    --ar--line--minimal: 1px;
    --ar--line--base: 2px;
}

/* Box-sizing reset, scoped to this plugin's own markup */
.atze-events,
.atze-events *,
.atze-events *::before,
.atze-events *::after {
    box-sizing: border-box;
}

/* Results markup (atze-events block) */

.atze-events {
    font-size: var(--ae--font-size--base);
    max-inline-size: unset;
}

.atze-events__container {
    display: flex;
    flex-direction: column;
}

.atze-events__month:not(:first-child) {
    border-block-start: var(--ar--line--minimal) solid var(--ae--color--gray-light);
}

/* Animates native <details> open/close; browsers without ::details-content
   or interpolate-size support just keep the current instant toggle. */
.atze-events__month {
    interpolate-size: allow-keywords;
    margin-inline: -1rem;
}
.atze-events__month::details-content {
    height: 0;
    overflow: hidden;
    transition: height 0.3s ease-out, content-visibility 0.3s ease-out allow-discrete;
}
.atze-events__month[open]::details-content {
    height: auto;
}

.atze-events__month-title {
    align-items: center;
    background-color: var(--ae--color--white);
    cursor: pointer;
    display: flex;
    gap: .5rem 1rem;
    justify-content: space-between;
    list-style: none;
    padding: 1rem;
    position: sticky;
    top: 5.5rem;
    transition: background var(--ae-transition);
    z-index: 10;
}
.atze-events__month-title:hover {
    background-color: color-mix(in oklch, var(--ae--color--white) 98%, #000 2%);
}
.atze-events__month-title::-webkit-details-marker {
    display: none;
}
.atze-events__month-title:focus-visible {
    outline: var(--ar--line--base) solid currentColor;
    outline-offset: -2px;
}
.atze-events__month-title::after {
    aspect-ratio: 1;
    background-color: currentColor;
    content: "";
    flex-shrink: 0;
    height: 1lh;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='5 8 14 8'%3E%3Cpath d='M6 9l6 6 6-6' stroke='%23000' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='5 8 14 8'%3E%3Cpath d='M6 9l6 6 6-6' stroke='%23000' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    mask-size: contain;
    transform: rotate(0deg);
    transition: transform var(--ae-transition);
}
.atze-events__month[open] > .atze-events__month-title::after {
    transform: rotate(180deg);
}
@media (prefers-reduced-motion: reduce) {
    .atze-events__month::details-content,
    .atze-events__month-title::after {
        transition: none;
    }
}

.atze-events__month-title-text {
    font-size: var(--ae--font-size--large);
    margin: 0;
}

.atze-events__month-list {
    display: flex;
    flex-direction: column;
    list-style: none;
    margin: .5rem 0 1rem;
    padding: 0;
}

/* Keeps keyboard-focused links/buttons from scrolling in underneath the
   sticky month title (its top offset plus its own height). */
.atze-events__month-list :is(a, button) {
    scroll-margin-block-start: 11rem;
}

.atze-events__month-list-item {
    container-name: atze-event-item;
    container-type: inline-size;
}
.atze-events__month-list-item:not(:first-child) {
    border-block-start: var(--ar--line--minimal) solid var(--ae--color--gray-light);
}

.atze-event {
    align-items: start;
    background-color: transparent;
    display: grid;
    gap: .5rem clamp(1rem, 0.7955rem + 0.9091vw, 1.5rem);;
    grid-template-areas: "datetime details location actions";
    grid-template-columns: 5rem 1fr 12rem 12rem;
    padding: 1rem;
    position: relative;
    transition: background var(--ae-transition);
}
.atze-event:hover {
    background-color: color-mix(in oklch, var(--ae--color--white) 98%, #000 2%);
}
.atze-event--compact {
    grid-template-areas: "datetime location actions";
    grid-template-columns: 8rem 1fr 10rem;
}

.atze-event--guest-performance {
    background-color: var(--ae--color--yellow-light);
}
.atze-event--guest-performance:hover {
    background-color: color-mix(in oklch, var(--ae--color--yellow-light) 98%, #000 2%);
}

.atze-event__datetime {
    align-items: center;
    display: flex;
    flex-direction: column;
    font-size: var(--ae--font-size--medium);
    font-weight: bold;
    grid-area: datetime;
    line-height: 1.3;
}

.atze-event__time {
    font-size: 80%;
}

.atze-event__details {
    grid-area: details;
}
.atze-event__title {
    font-size: var(--ae--font-size--medium);
    line-height: 1.3;
    margin: 0;
    text-wrap: balance;
}
.atze-event__title a {
    color: currentColor;
    line-height: 1.3;
    text-decoration-color: currentColor;
    text-decoration-line: underline;
    transition: text-decoration-color var(--ae-transition);
}
.atze-event__title a:hover {
    text-decoration-color: transparent;
}
.atze-event__title a::after {
    content: "";
    inset: 0;
    position: absolute;
}
.atze-event__description,
.atze-event__info {
    margin: 0;
}

.atze-event__location {
    align-self: center;
    display: flex;
    flex-direction: column;
    grid-area: location;
    text-wrap: balance;
}
.atze-event__location-name {
    line-height: 1.3;
    white-space: normal;
}
.atze-event__category {
    color: var(--ae--color--blue);
    font-weight: bold;
}

.atze-event__actions {
    align-self: center;
    display: grid;
    gap: 1em;
    grid-area: actions;
    place-content: center;
    position: relative;
    z-index: 1;
}

.atze-events__empty {
    padding: 1.5rem;
}

@container atze-event-item (max-width: 62em) {
    .atze-event {
        grid-template-areas:
            "datetime details actions"
            "datetime location actions";
        grid-template-columns: 4.5rem 1fr minmax(8rem, auto);
    }
    .atze-event--compact {
        grid-template-areas: "datetime location actions";
        grid-template-columns: 4.5rem 1fr minmax(8rem, auto);
    }
}

@container atze-event-item (max-width: 600px) {
    .atze-event {
        grid-template-areas:
            "datetime details"
            "datetime location"
            ".        actions";
        grid-template-columns: 4rem 1fr;
    }
    .atze-event--compact {
        grid-template-areas:
            "datetime location"
            ".        actions";
        grid-template-columns: 4rem 1fr;
    }
    .atze-event__actions {
        justify-content: start;
    }
}

@container atze-event-item (max-width: 400px) {
    .atze-event {
        grid-template-areas:
            "datetime"
            "details"
            "location"
            "actions";
        grid-template-columns: 1fr;
    }
    .atze-event--compact {
        grid-template-areas:
            "datetime"
            "location"
            "actions";
        grid-template-columns: 1fr;
    }
    .atze-event__datetime {
        align-items: baseline;
        flex-direction: row;
        gap: .5rem;
        justify-content: flex-start;
    }
}


/* Event Modal (.atze-event-modal) - BEM-named ticket-booking dialog, kept in one section */

html.atze-event-modal-is-open {
    overflow: hidden;
}

.atze-event-modal {
    border: none;
    padding: 0;
    margin: auto;
    max-width: none;
    max-height: none;
    background: transparent;
}
.atze-event-modal::backdrop {
    background-color: rgba(0,0,0,0.5);
}

.atze-event-modal__container {
    background: #fff;
    border-radius: 0.75rem;
    box-shadow: 0 1rem 3rem rgba(0,0,0,0.25);
    box-sizing: border-box;
    max-height: min(96vh, calc(100vh - 2rem));
    overflow-y: auto;
    padding-block-end: 2rem;
    padding-inline: 2.5rem;
    width: min(48rem, calc(100vw - 2rem));
}

.atze-event-modal__close {
    position: absolute;
    top: 1rem;
    right: 1rem;
    z-index: 10;
    background: none;
    border: none;
    padding: 0;
    color: var(--ae--color--gray-dark);
    cursor: pointer;
    outline: var(--ar--line--base) solid transparent;
    outline-offset: 0;
    transition: color var(--ae-transition), outline-offset 0.15s ease-out, outline-color 0.15s ease-out;
}
.atze-event-modal__close:hover {
    color: #000;
    text-decoration: none;
}
.atze-event-modal__close:focus-visible {
    outline-color: var(--ae--color--gray-dark);
    outline-offset: 2px;
}

.atze-event-modal__close-text {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.atze-event-modal__close-icon {
    display: block;
    width: 1.5rem;
    height: 1.5rem;
}

.atze-event-modal__header {
    background: var(--ae--color--white);
    border-block-end: var(--ar--line--base) solid var(--ae--color--gray-light);
    display: flex;
    flex-direction: column;
    gap: 0;
    margin: 0 auto;
    padding-block: 2rem .75rem;
    position: sticky;
    top: 0;
    z-index: 1;
}
.atze-event-modal__title,
.atze-event-modal__datetime,
.atze-event-modal__location {
    margin: 0;
}
.atze-event-modal__title {
    line-height: 1.3;
}
.atze-event-modal__datetime,
.atze-event-modal__location {
    font-size: var(--ae--font-size--medium);
    font-weight: bold;
}

.atze-event-modal__content {
    display: grid;
    grid-template-columns: 1fr;
    justify-content: center;
}
.atze-event-modal__content:not(:first-child) {
    margin-block-start: 1.5rem;
}

.atze-event-modal__form {
    display: grid;
    gap: 1.5rem;
}
.atze-event-modal__form > * { margin: 0; }
.atze-event-modal__form[hidden] {
    display: none;
}

.atze-event-modal__form-header {
    align-items: center;
    display: flex;
    gap: 1rem;
}
.atze-event-modal__form-title {
    font-size: var(--ae--font-size--medium);
    font-weight: bold;
    margin: 0;
}
.atze-event-modal__button--back {
    background: none;
    border: none;
    color: var(--ae--color--red-dark);
    cursor: pointer;
    font-size: var(--ae--font-size--base);
    padding: 0;
    text-decoration: underline;
}
.atze-event-modal__button--back:hover {
    color: color-mix(in oklch, var(--ae--color--red-dark) 80%, #000 20%);
}

.atze-event-modal fieldset:disabled,
.atze-event-modal label.atze-event-modal__honeypot {
    display: none;
}

.atze-event-modal__info p { margin: 0; }
.atze-event-modal__info p:not(:first-child) { margin-block-start: 1em; }

.atze-event-modal__success > * { margin: 0; }
.atze-event-modal__success > * + * { margin-block-start: 1em; }

.atze-event-modal__info-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    justify-content: end;
    margin-block-start: 1.5em;
}

.atze-event-modal__form-group > * {
    margin: 0;
}
.atze-event-modal__form-group > * + * {
    margin-block-start: 1rem;
}
.atze-event-modal__fieldset-private > *,
.atze-event-modal__fieldset-group > * {
    margin: 0;
}
.atze-event-modal__fieldset-private > * + *,
.atze-event-modal__fieldset-group > * + * {
    margin-block-start: 1.5rem;
}
.atze-event-modal__fieldset-request {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}
.atze-event-modal__fieldset-request > * {
    margin: 0;
}
.atze-event-modal__form-group-legend {
    font-weight: bold;
    float: unset;
    font-size: var(--ae--font-size--emphasis);
    inline-size: 100%;
}
.atze-event-modal__info-text {
    text-wrap: balance;
}

.atze-event-modal__info-hotline {
    font-size: var(--ae--font-size--medium);
}

.atze-event-modal__fieldset-price {
    background: var(--ae--color--yellow-light);
    padding: 1rem;
}
.atze-event-modal__price-display {
    margin: 0;
}
.atze-event-modal__price-display-label {
    font-weight: bold;
}
.atze-event-modal__price-display-amount {
    font-weight: 400;
    font-size: var(--ae--font-size--base);
}
.atze-event-modal__price-display-amount--calculated {
    font-weight: bold;
    font-size: var(--ae--font-size--medium);
}

.atze-event-modal label {
    display: block;
    text-align: left;
}
.atze-event-modal__label-private-reduced[hidden] {
    display: none;
}
.atze-event-modal textarea,
.atze-event-modal input:not([type=radio]) {
    display: block;
    width: 100%;
    padding: 0.6rem;

    font-size: var(--ae--font-size--base);
}
.atze-event-modal textarea,
.atze-event-modal input:not([type=radio]),
.atze-event-modal input[type="email"],
.atze-event-modal input[type="number"],
.atze-event-modal input[type="tel"] {
    border: var(--ar--line--base) solid var(--ae--color--gray-dark);
    border-radius: 0.5rem;
    outline: var(--ar--line--base) solid transparent;
    outline-offset: 0;
    transition: outline-offset 0.15s ease-out, outline-color 0.15s ease-out, background-color 0.15s ease-out;
}
.atze-event-modal textarea:focus,
.atze-event-modal input:not([type=radio]):focus {
    background-color: var(--ae--color--gray-light);
    outline-color: var(--ae--color--gray-dark);
    outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
    .atze-event-modal textarea,
    .atze-event-modal input,
    .atze-event-modal__button {
        transition: none;
    }
}
.atze-event-modal textarea {
    width: 100%;
    height: 10rem;
    resize: vertical;
}

.atze-event-modal__radio-group-title-audience span,
.atze-event-modal__radio-group-title-reduction span {
    color: var(--ae--color--red-dark);
    margin-inline-start: .25em;
}

.atze-event-modal__radio-group-title {
    float: unset;
    inline-size: 100%;
    font-size: var(--ae--font-size--base);
    margin-block-end: .5em;
    font-weight: normal;
}
.atze-event-modal__required-mark {
    color: var(--ae--color--red-dark);
    margin-inline-start: .25em;
}

.atze-event-modal input:invalid {
    color: var(--ae--color--red-dark);
}
.atze-event-modal input:user-invalid {
    border-color: var(--ae--color--red-dark);
}
.atze-event-modal ::placeholder {
    color: var(--ae--color--gray-dark);
    opacity: 1;
}

.atze-event-modal__radio-group {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem 1rem;
    width: 100%;
}
.atze-event-modal__radio-group .atze-event-modal__radio-option {
    align-items: flex-start;
    border-radius: 0.5rem;
    cursor: pointer;
    display: inline-flex;
    gap: .5em;
    outline: var(--ar--line--base) solid transparent;
    outline-offset: 0;
    padding-block: .25em;
    transition: outline-offset 0.15s ease-out, outline-color 0.15s ease-out;
    user-select: none;
}
.atze-event-modal__radio-group .atze-event-modal__radio-option:has(input:focus-visible) {
    outline-color: var(--ae--color--gray-dark);
    outline-offset: 2px;
}
.atze-event-modal input[type=radio] {
    accent-color: var(--ae--color--red-dark);
    block-size: 1lh;
    flex-shrink: 0;
    font: inherit;
    inline-size: 1lh;
    margin: 0;
}
.atze-event-modal input[type=radio]:focus-visible {
    outline: none;
}
.atze-event-modal__radio-group .atze-event-modal__radio-option span {
    margin-block-start: 0.05em;
}
.atze-event-modal__radio-group .atze-event-modal__radio-option:hover {
    color: color-mix(in oklch, var(--ae--color--red-dark) 80%, #000 20%);
}
.atze-event-modal__button {
    border-radius: 10rem;
    border: var(--ar--line--base) solid var(--ae--color--red-dark);
    display: inline-block;
    font-size: 1rem;
    font-weight: 600;
    line-height: 1.6;
    margin: 0;
    min-width: 10rem;
    outline: var(--ar--line--base) solid transparent;
    outline-offset: 0;
    padding: .5em 1.5em;
    text-align: center;
    transition: all 0.3s ease-out;
    user-select: none;
}
.atze-event-modal__button--send {
    justify-self: end;
}
.atze-event-modal__button:focus-visible {
    outline-color: var(--ae--color--gray-dark);
    outline-offset: 2px;
}
.atze-event-modal__button:disabled,
.atze-event-modal__button[aria-disabled="true"] {
    opacity: .333;
}
.atze-event-modal__button:not(:disabled):hover {
    cursor: pointer;
}
.atze-event-modal__button {
    background-color: var(--ae--color--red-dark);
    color: hsl(60, 100%, 100%);
}
.atze-event-modal__button:not(.atze-event-modal__button--secondary):not(:disabled):hover {
    background-color: color-mix(in oklch, var(--ae--color--red-dark) 80%, #000 20%);
    border-color: color-mix(in oklch, var(--ae--color--red-dark) 80%, #000 20%);
}
.atze-event-modal__button {
    font-weight: bold;
}

.atze-event-modal__button--secondary {
    background-color: transparent;
    color: var(--ae--color--red-dark);
}
.atze-event-modal__button--secondary:not(:disabled):hover {
    background-color: color-mix(in oklch, var(--ae--color--red-dark) 80%, #000 20%);
    border-color: color-mix(in oklch, var(--ae--color--red-dark) 80%, #000 20%);
    color: hsl(60, 100%, 100%);
}

.atze-event-modal__button--noop {
    display: none;
}

.atze-events__visually-hidden,
.atze-event-modal__visually-hidden {
    border: 0;
    clip: rect(1px, 1px, 1px, 1px);
    clip-path: inset(50%);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute !important;
    width: 1px;
    word-wrap: normal !important;
}

.atze-event-modal__columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-gap: 1rem;
}
.atze-event-modal__quantity-per-class-group {
    display: contents;
}

.atze-event-modal__confirmation {
    margin: 0;;
}
/* Takes no space in the form grid while empty, but is never display: none -
   a live region has to stay in the accessibility tree before its content
   changes, or screen readers won't announce that change. */
.atze-event-modal__confirmation:empty {
    position: absolute;
}

@media (max-width: 52rem) {
    .atze-event-modal__columns {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 37rem) {
    .atze-event-modal__content {
        display: block;
    }

    .atze-event-modal__radio-group {
        flex-direction: column;
    }
}


body .anna-ticket-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;

	padding: 0.65rem 1.75rem;
	width: 100%;

	background-color: var(--ae--color--red-dark);
	border: 1px solid var(--ae--color--red-dark);
	border-radius: 9999px;
	color: white;

	font-size: 1rem;
	font-weight: 600;
	line-height: 1.4;
	white-space: nowrap;
	hyphens: none;
	text-decoration: none;

	transition: background-color 0.15s ease-out, box-shadow 0.15s ease-out;
}
body .anna-ticket-button:hover {
	background-color: color-mix(in oklch, var(--ae--color--red-dark) 80%, #000 20%);
	color: white;
	box-shadow: 0 0.2rem 0.6rem rgba(0, 0, 0, 0.2);
}
body .anna-ticket-button:focus-visible {
	outline: 2px solid var(--ae--color--red-dark);
	outline-offset: 0.2rem;
}
@media (max-width: 62em) {
    body .atze-event__actions .anna-ticket-button {
        max-width: 24rem;
    }
}

.atze-ticket-status {
	background: none;
	border: none;
	padding: 0;
	font-size: 0.95rem;
	font-weight: 600;
	white-space: nowrap;
}
.atze-ticket-status--unavailable {
	position: relative;
	display: inline-block;
	color: var(--ae--color--red-dark);
}
.atze-ticket-status--unavailable::after {
	content: "";
	position: absolute;
	left: -0.35em;
	right: -0.45em;
	bottom: -0.1em;
	height: 0.5em;
	background: var(--ae--color--yellow);
	transform: rotate(-2deg);
	border-radius: 1px;
	z-index: -1;
}
.atze-ticket-status--info {
	color: var(--ae--color--gray-dark);
}
.atze-event--guest-performance .atze-ticket-status--info {
	color: rgba(100, 100, 92, 1);
}
