/**
 * CO-AT course calendar — public styles.
 *
 * Neutral on purpose: this sits inside an existing Elementor page and should take its typeface
 * and colour from the theme rather than fight it. Course colours come from the data.
 */

.coat-cal {
	--coat-ink: #1a2129;
	--coat-ink-2: #5c6773;
	--coat-ink-3: #8a949e;
	--coat-line: #dfe3e8;
	--coat-surface: #fff;
	--coat-surface-2: #f4f6f8;
	--coat-ok: #0c7a52;
	--coat-ok-bg: #e6f4ee;
	--coat-warn: #9a5309;
	--coat-warn-bg: #fbf0e2;
	--coat-stop: #b3242c;
	--coat-stop-bg: #fceceD;
	--coat-off: #5d6772;
	--coat-off-bg: #eef0f2;
	--coat-radius: 6px;

	color: var(--coat-ink);
	font-size: 15px;
	line-height: 1.55;
}

.coat-cal *,
.coat-cal *::before,
.coat-cal *::after {
	box-sizing: border-box;
}

/* A display value on a component overrides the hidden attribute's own display:none, which
   would leave hidden panels and the month arrows on screen. */
.coat-cal [hidden] {
	display: none !important;
}

/* Toolbar ------------------------------------------------------------------ */

.coat-cal__bar {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	align-items: flex-end;
	justify-content: space-between;
	margin-bottom: 18px;
}

.coat-cal__views {
	display: inline-flex;
	border: 1px solid var(--coat-line);
	border-radius: var(--coat-radius);
	overflow: hidden;
}

.coat-cal__view {
	appearance: none;
	border: 0;
	background: var(--coat-surface);
	color: var(--coat-ink-2);
	font: inherit;
	font-size: 14px;
	padding: 8px 18px;
	cursor: pointer;
	min-height: 44px;
}

.coat-cal__view.is-active {
	background: var(--coat-ink);
	color: #fff;
}

.coat-cal__filters {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.coat-cal__field {
	display: flex;
	flex-direction: column;
	gap: 3px;
	font-size: 12px;
	color: var(--coat-ink-3);
}

.coat-cal__field select {
	font: inherit;
	font-size: 14px;
	color: var(--coat-ink);
	padding: 9px 12px;
	border: 1px solid var(--coat-line);
	border-radius: var(--coat-radius);
	background: var(--coat-surface);
	min-height: 44px;
	max-width: 100%;
}

.coat-cal__status {
	color: var(--coat-ink-3);
	padding: 22px 0;
	margin: 0;
}

/* Cards -------------------------------------------------------------------- */

.coat-card {
	display: flex;
	border: 1px solid var(--coat-line);
	border-radius: var(--coat-radius);
	background: var(--coat-surface);
	overflow: hidden;
	margin-bottom: 12px;
}

.coat-card__rail {
	flex: 0 0 5px;
}

.coat-card__body {
	flex: 1;
	min-width: 0;
	padding: 16px 18px;
}

.coat-card__head {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	justify-content: space-between;
	align-items: flex-start;
}

.coat-card__title {
	margin: 0;
	font-size: 18px;
	line-height: 1.3;
}

.coat-card__sub {
	margin: 2px 0 0;
	font-size: 13px;
	color: var(--coat-ink-3);
}

.coat-card__meta {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 4px 16px;
	margin: 12px 0 0;
	font-size: 14px;
}

.coat-card__meta dt {
	font-size: 11px;
	letter-spacing: .07em;
	text-transform: uppercase;
	color: var(--coat-ink-3);
	padding-top: 3px;
}

.coat-card__meta dd {
	margin: 0;
	color: var(--coat-ink-2);
}

.coat-card__days {
	margin-top: 12px;
	padding-top: 10px;
	border-top: 1px solid var(--coat-line);
}

.coat-card__day {
	display: flex;
	gap: 12px;
	font-size: 14px;
	color: var(--coat-ink-2);
	padding: 2px 0;
}

.coat-card__day-n {
	flex: 0 0 52px;
	font-size: 11px;
	letter-spacing: .07em;
	text-transform: uppercase;
	color: var(--coat-ink-3);
	padding-top: 3px;
}

.coat-card__prereq,
.coat-card__note {
	margin: 10px 0 0;
	font-size: 13px;
	color: var(--coat-warn);
}

.coat-card__note {
	color: var(--coat-ink-2);
}

.coat-card__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 16px;
}

/* Buttons and pills -------------------------------------------------------- */

.coat-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 10px 20px;
	border: 1px solid var(--coat-line);
	border-radius: var(--coat-radius);
	background: var(--coat-surface);
	color: var(--coat-ink);
	font: inherit;
	font-size: 14px;
	text-decoration: none;
	cursor: pointer;
}

.coat-btn:hover,
.coat-btn:focus-visible {
	border-color: var(--coat-ink-3);
	color: var(--coat-ink);
}

.coat-btn--primary {
	background: var(--coat-ink);
	border-color: var(--coat-ink);
	color: #fff;
}

.coat-btn--primary:hover,
.coat-btn--primary:focus-visible {
	background: #000;
	color: #fff;
}

.coat-btn--disabled {
	color: var(--coat-ink-3);
	border-style: dashed;
	cursor: default;
}

.coat-btn--block {
	width: 100%;
}

.coat-pill {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 4px 12px;
	border-radius: 20px;
	font-size: 13px;
	white-space: nowrap;
}

.coat-pill::before {
	content: "";
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: currentColor;
}

.coat-pill--open                { background: var(--coat-ok-bg);   color: var(--coat-ok); }
.coat-pill--few_seats_left      { background: var(--coat-warn-bg); color: var(--coat-warn); }
.coat-pill--full                { background: var(--coat-stop-bg); color: var(--coat-stop); }
.coat-pill--registration_closed,
.coat-pill--cancelled,
.coat-pill--completed           { background: var(--coat-off-bg);  color: var(--coat-off); }

/* Month grid --------------------------------------------------------------- */

.coat-cal__nav {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	margin-bottom: 12px;
}

.coat-cal__month {
	font-size: 17px;
}

.coat-grid__head,
.coat-grid__cells {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 4px;
}

.coat-grid__head {
	margin-bottom: 4px;
}

.coat-grid__head span {
	text-align: center;
	font-size: 11px;
	letter-spacing: .07em;
	text-transform: uppercase;
	color: var(--coat-ink-3);
}

.coat-grid__cell {
	min-height: 86px;
	background: var(--coat-surface-2);
	border-radius: 4px;
	padding: 5px;
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.coat-grid__cell--out {
	background: transparent;
}

.coat-grid__n {
	font-size: 12px;
	color: var(--coat-ink-3);
	font-variant-numeric: tabular-nums;
}

.coat-chip {
	appearance: none;
	border: 0;
	border-radius: 3px;
	color: #fff;
	font: inherit;
	font-size: 11px;
	line-height: 1.4;
	padding: 3px 5px;
	text-align: left;
	cursor: pointer;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.coat-chip--muted {
	opacity: .45;
}

.coat-cal__legend {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 18px;
	margin-top: 16px;
}

.coat-cal__legend-item {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 12px;
	color: var(--coat-ink-3);
}

.coat-cal__legend-item i {
	width: 10px;
	height: 10px;
	border-radius: 2px;
}

/* Dialog ------------------------------------------------------------------- */

.coat-cal__dialog {
	position: fixed;
	inset: 0;
	background: rgba(16, 22, 28, .55);
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: 24px 16px;
	overflow-y: auto;
	z-index: 9999;
}

.coat-cal__dialog[hidden] {
	display: none;
}

.coat-cal__sheet {
	position: relative;
	background: var(--coat-surface);
	border-radius: 8px;
	padding: 26px 24px 24px;
	width: 100%;
	max-width: 520px;
	margin: auto;
}

.coat-cal__close {
	position: absolute;
	top: 8px;
	right: 10px;
	appearance: none;
	border: 0;
	background: none;
	font-size: 26px;
	line-height: 1;
	color: var(--coat-ink-3);
	cursor: pointer;
	width: 44px;
	height: 44px;
}

body.coat-locked {
	overflow: hidden;
}

/* Form --------------------------------------------------------------------- */

.coat-form__locked {
	background: var(--coat-surface-2);
	border-radius: var(--coat-radius);
	padding: 14px 16px;
	margin-bottom: 18px;
}

.coat-form__eyebrow {
	margin: 0 0 4px;
	font-size: 11px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--coat-ink-3);
}

.coat-form__title {
	margin: 0 0 6px;
	font-size: 18px;
	line-height: 1.3;
}

.coat-form__line {
	margin: 0;
	font-size: 14px;
	color: var(--coat-ink-2);
}

.coat-form__prereq {
	margin: 8px 0 0;
	font-size: 13px;
	color: var(--coat-warn);
}

.coat-form__note {
	margin: 10px 0 0;
	font-size: 13px;
	color: var(--coat-ink-3);
}

.coat-form__intro {
	font-size: 14px;
	color: var(--coat-ink-2);
	margin: 0 0 16px;
}

.coat-field {
	display: block;
	margin-bottom: 14px;
}

.coat-field__label {
	display: block;
	font-size: 12px;
	letter-spacing: .04em;
	color: var(--coat-ink-2);
	margin-bottom: 4px;
}

.coat-field__input {
	width: 100%;
	font: inherit;
	font-size: 15px;
	padding: 11px 13px;
	border: 1px solid var(--coat-line);
	border-radius: var(--coat-radius);
	background: var(--coat-surface);
	color: var(--coat-ink);
	min-height: 44px;
}

textarea.coat-field__input {
	min-height: 84px;
	resize: vertical;
}

.coat-field__input:focus-visible,
.coat-cal__field select:focus-visible,
.coat-btn:focus-visible,
.coat-chip:focus-visible {
	outline: 2px solid var(--coat-ink);
	outline-offset: 2px;
}

.coat-form__pair {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 14px;
}

.coat-consent {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	font-size: 14px;
	color: var(--coat-ink-2);
	margin: 4px 0 16px;
}

.coat-consent input {
	margin-top: 4px;
	width: 18px;
	height: 18px;
	flex: 0 0 18px;
}

.coat-form__error {
	background: var(--coat-stop-bg);
	color: var(--coat-stop);
	border-radius: var(--coat-radius);
	padding: 10px 14px;
	font-size: 14px;
	margin: 0 0 14px;
}

/* Kept out of sight and out of the tab order; only something automated fills it in. */
.coat-trap {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* Receipt ------------------------------------------------------------------ */

.coat-receipt__title {
	margin: 0 0 8px;
	font-size: 21px;
}

.coat-receipt__message {
	margin: 0 0 16px;
	color: var(--coat-ink-2);
	font-size: 15px;
}

.coat-receipt__ref {
	background: var(--coat-surface-2);
	border-radius: var(--coat-radius);
	padding: 12px 16px;
	margin-bottom: 14px;
}

.coat-receipt__ref strong {
	font-size: 17px;
	letter-spacing: .04em;
}

.coat-receipt__hold {
	font-size: 14px;
	color: var(--coat-ink-2);
	margin: 0 0 14px;
}

/* Phone -------------------------------------------------------------------- */

@media (max-width: 640px) {
	.coat-cal__bar {
		flex-direction: column;
		align-items: stretch;
	}

	.coat-cal__filters {
		display: grid;
		grid-template-columns: repeat(3, 1fr);
		gap: 8px;
	}

	.coat-cal__field select {
		width: 100%;
		padding: 9px 8px;
		font-size: 13px;
	}

	.coat-card__actions .coat-btn {
		flex: 1 1 0;
	}

	.coat-form__pair {
		grid-template-columns: 1fr;
	}

	.coat-grid__cell {
		min-height: 60px;
		padding: 3px;
	}

	.coat-cal__sheet {
		padding: 22px 18px 20px;
	}
}

@media (prefers-reduced-motion: no-preference) {
	.coat-btn,
	.coat-cal__view {
		transition: background-color .15s ease, border-color .15s ease, color .15s ease;
	}
}

/* How to pay --------------------------------------------------------------- */

.coat-pay {
	margin-top: 20px;
	padding: 16px 18px;
	background: var(--coat-surface-2);
	border-radius: var(--coat-radius);
}

.coat-pay__title {
	margin: 0 0 4px;
	font-size: 16px;
}

.coat-pay__amount {
	margin: 0 0 14px;
	font-size: 19px;
	font-weight: 600;
}

.coat-pay__block h4 {
	margin: 0 0 6px;
	font-size: 14px;
}

.coat-pay__details {
	margin: 0 0 8px;
	padding: 10px 12px;
	background: var(--coat-surface);
	border: 1px solid var(--coat-line);
	border-radius: 4px;
	font: inherit;
	font-size: 14px;
	white-space: pre-wrap;
	overflow-x: auto;
}

.coat-pay__quote {
	margin: 0;
	font-size: 13px;
	color: var(--coat-ink-2);
}

.coat-pay__or {
	margin: 16px 0;
	text-align: center;
	font-size: 12px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--coat-ink-3);
}
