/* HikaShop calendar module: neutral styles, a template restyles the classes (colours through the variables). */
.hk-cal {
	--hk-cal-accent: var(--accent, #1f3a5f);
	--hk-cal-line: var(--line, rgba(128, 128, 128, .3));
	--hk-cal-mute: var(--mute, rgba(128, 128, 128, .9));
	--hk-cal-free-bg: #e2f1e6; --hk-cal-free-fg: #14532d; --hk-cal-free-bar: #2f7d4f;
	--hk-cal-few-bg: #fdefd0; --hk-cal-few-fg: #6b4200; --hk-cal-few-bar: #d98e04;
	--hk-cal-soldout-bg: #f6dcdc; --hk-cal-soldout-fg: #7a1c1c; --hk-cal-soldout-bar: #b23a3a;
	--hk-cal-cancelled-bg: #ececec; --hk-cal-cancelled-fg: #555; --hk-cal-cancelled-bar: #888;
	font-size: 15px;
}
.hk-cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .5em; }
.hk-cal__title { margin: 0; font-size: 1.1em; }
.hk-cal__nav { display: inline-flex; width: 2.5em; height: 2.5em; align-items: center; justify-content: center; border: 1px solid var(--hk-cal-line); border-radius: 50%; text-decoration: none; color: inherit; font-size: 1.3em; line-height: 1; }
.hk-cal__nav:hover, .hk-cal__nav:focus-visible { border-color: var(--hk-cal-accent); color: var(--hk-cal-accent); }
.hk-cal__grid { width: 100%; border-collapse: collapse; table-layout: fixed; }
.hk-cal__caption, .hk-cal__sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.hk-cal__grid th { font-size: .75em; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--hk-cal-mute); padding: .4em 0; text-align: center; }
.hk-cal__grid th abbr { text-decoration: none; }
.hk-cal__grid td { padding: 2px; vertical-align: top; text-align: center; }
.hk-cal__cell--past { opacity: .6; }
.hk-cal__day { display: block; width: 100%; padding: .25em 0; font: inherit; color: inherit; background: none; border: 0; text-align: center; }
span.hk-cal__day { color: var(--hk-cal-mute); }
.hk-cal__cell--today .hk-cal__day { font-weight: 700; text-decoration: underline; }
.hk-cal__wd { display: none; }
.hk-cal--week .hk-cal__wd { display: inline; font-size: .8em; text-transform: uppercase; }

/* the days coloured by what can be booked (the "color" display) */
.hk-cal--color .hk-cal__grid td { height: 3.2em; vertical-align: middle; }
.hk-cal--color .hk-cal__day.hk-cal__pick { cursor: pointer; font-weight: 600; border: 1px solid transparent; border-radius: 6px; min-height: 2.6em; }
.hk-cal__day--free { background: var(--hk-cal-free-bg); color: var(--hk-cal-free-fg); border-color: var(--hk-cal-free-bar) !important; }
.hk-cal__day--few { background: var(--hk-cal-few-bg); color: var(--hk-cal-few-fg); border-color: var(--hk-cal-few-bar) !important; }
.hk-cal__day--soldout { background: var(--hk-cal-soldout-bg); color: var(--hk-cal-soldout-fg); border-color: var(--hk-cal-soldout-bar) !important; }
.hk-cal__day--cancelled, .hk-cal__day--past { background: var(--hk-cal-cancelled-bg); color: var(--hk-cal-cancelled-fg); border-color: var(--hk-cal-cancelled-bar) !important; }
.hk-cal__day.hk-cal__pick:hover, .hk-cal__day.hk-cal__pick:focus-visible, .hk-cal__day.hk-cal__pick[aria-pressed="true"] { outline: 2px solid var(--hk-cal-accent); outline-offset: 1px; }

/* the shows named in the days (the "names" display) */
.hk-cal--names .hk-cal__grid td { height: 5.4em; text-align: left; }
.hk-cal--names .hk-cal__day { text-align: left; padding: .15em .25em; font-size: .85em; }
.hk-cal__events { list-style: none; margin: 0; padding: 0; }
.hk-cal__event { margin: 0 0 2px; border-left: 3px solid var(--hk-cal-cancelled-bar); background: var(--hk-cal-cancelled-bg); color: var(--hk-cal-cancelled-fg); border-radius: 3px; font-size: .78em; line-height: 1.35; }
.hk-cal__event a { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; padding: 2px 5px; color: inherit; text-decoration: none; }
.hk-cal__event a:hover, .hk-cal__event a:focus-visible { text-decoration: underline; }
.hk-cal__etime { font-variant-numeric: tabular-nums; opacity: .8; }
.hk-cal__event--free { background: var(--hk-cal-free-bg); color: var(--hk-cal-free-fg); border-left-color: var(--hk-cal-free-bar); }
.hk-cal__event--few { background: var(--hk-cal-few-bg); color: var(--hk-cal-few-fg); border-left-color: var(--hk-cal-few-bar); }
.hk-cal__event--soldout { background: var(--hk-cal-soldout-bg); color: var(--hk-cal-soldout-fg); border-left-color: var(--hk-cal-soldout-bar); }
.hk-cal__event--cancelled .hk-cal__ename { text-decoration: line-through; }
.hk-cal__more { background: none; border: 0; padding: 0 .3em; font: inherit; font-size: .78em; font-weight: 600; color: var(--hk-cal-accent); cursor: pointer; text-decoration: underline; }

.hk-cal__legend { display: flex; flex-wrap: wrap; gap: .3em 1.1em; list-style: none; margin: .7em 0 0; padding: 0; font-size: .82em; color: var(--hk-cal-mute); }
.hk-cal__swatch { display: inline-block; width: .9em; height: .9em; margin-right: .4em; border-radius: 3px; vertical-align: -1px; border: 1px solid; }
.hk-cal__legend-item--free .hk-cal__swatch { background: var(--hk-cal-free-bg); border-color: var(--hk-cal-free-bar); }
.hk-cal__legend-item--few .hk-cal__swatch { background: var(--hk-cal-few-bg); border-color: var(--hk-cal-few-bar); }
.hk-cal__legend-item--soldout .hk-cal__swatch { background: var(--hk-cal-soldout-bg); border-color: var(--hk-cal-soldout-bar); }
.hk-cal__legend-item--cancelled .hk-cal__swatch { background: var(--hk-cal-cancelled-bg); border-color: var(--hk-cal-cancelled-bar); }

.hk-cal__list { margin-top: 1em; }
.hk-cal--names:not(.hk-cal--agenda) .hk-cal__list { display: none; }
.hk-cal--names.hk-cal--list-open .hk-cal__list { display: block; }
.hk-cal__agenda, .hk-cal__shows { list-style: none; margin: 0; padding: 0; }
.hk-cal__agenda-day { padding: .6em 0; border-top: 1px solid var(--hk-cal-line); }
.hk-cal__agenda-day[hidden], .hk-cal__all[hidden] { display: none; }
.hk-cal__agenda-title { margin: 0 0 .3em; font-size: 1em; }
.hk-cal__show { display: flex; flex-wrap: wrap; gap: .2em .8em; align-items: baseline; padding: .15em 0; }
.hk-cal__time { font-variant-numeric: tabular-nums; color: var(--hk-cal-mute); }
.hk-cal__link { font-weight: 600; }
.hk-cal__state { font-size: .8em; text-transform: uppercase; letter-spacing: .05em; color: var(--hk-cal-soldout-fg); }
.hk-cal__state--free { color: var(--hk-cal-free-fg); }
.hk-cal__state--few { color: var(--hk-cal-few-fg); }
.hk-cal__price { margin-left: auto; font-variant-numeric: tabular-nums; }
.hk-cal__show--soldout .hk-cal__link, .hk-cal__show--cancelled .hk-cal__link { text-decoration: line-through; opacity: .7; }
.hk-cal__none, .hk-cal__notice { color: var(--hk-cal-mute); }
.hk-cal__showall { background: none; border: 0; color: var(--hk-cal-accent); text-decoration: underline; cursor: pointer; padding: 0; font: inherit; }
/* a phone has no room for a month or a week of names: the list of the shows replaces the grid in the automatic view */
@media (max-width: 640px) {
	.hk-cal--auto .hk-cal__grid, .hk-cal--auto .hk-cal__legend { display: none; }
	.hk-cal--auto.hk-cal--names .hk-cal__list { display: block; }
}
