/* Promotion: a dated offer as a card or a slim banner. The offer is printed hidden; assets/js/promotion.js reveals it while the campaign is live. */

.vsk-promotion [hidden] {
	display: none !important;
}

.vsk-promotion--hide[hidden] {
	display: none;
}

/* A section that holds only a hidden widget leaves no gap behind (the script does the same after load). */
.e-con:has(.vsk-promotion--collapse[hidden]):not(:has(.elementor-widget:not(.elementor-widget-vsk-promotion))),
.vsk-promo-collapsed {
	display: none !important;
}

.vsk-promo {
	display: grid;
	gap: var(--vsk-space-3);
	justify-items: start;
	padding: var(--vsk-space-6);
	border: 1px solid var(--vsk-border);
	border-radius: var(--vsk-radius);
	background: var(--vsk-surface);
	color: var(--vsk-color-text);
}

.vsk-promotion--center .vsk-promo {
	justify-items: center;
	text-align: center;
}

.vsk-promo > * {
	margin: 0;
}

.vsk-promo__badge {
	display: inline-block;
	padding: 0.3em 0.8em;
	border-radius: var(--vsk-radius-pill);
	background: color-mix(in srgb, var(--vsk-color-accent) 14%, var(--vsk-surface));
	color: var(--vsk-color-primary);
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.vsk-promo__title {
	color: var(--vsk-color-primary);
	font-family: var(--vsk-font-heading);
	font-weight: var(--vsk-weight-heading);
	font-size: clamp(1.4rem, 1rem + 1.6vw, 2rem);
	line-height: 1.2;
}

.vsk-promo__summary {
	max-width: 52ch;
	line-height: 1.6;
}

.vsk-promo__price {
	color: var(--vsk-color-primary);
	font-family: var(--vsk-font-heading);
	font-weight: var(--vsk-weight-heading);
	font-size: clamp(2.25rem, 1.5rem + 3vw, 3.25rem);
	line-height: 1;
}

.vsk-promo__deposit,
.vsk-promo__hosting {
	font-size: 0.95rem;
}

.vsk-promo__hosting {
	color: var(--vsk-color-secondary);
}

.vsk-promo__main,
.vsk-promo__aside {
	display: grid;
	gap: var(--vsk-space-3);
	justify-items: inherit;
	align-content: start;
	min-width: 0;
}

.vsk-promo__main > *,
.vsk-promo__aside > * {
	margin: 0;
}

.vsk-promo--offer {
	gap: var(--vsk-space-4);
}

.vsk-promo--offer > .vsk-promo__terms {
	padding-top: var(--vsk-space-3);
}

.vsk-promo__features {
	display: grid;
	gap: var(--vsk-space-2);
	margin: 0;
	padding: 0;
	list-style: none;
	text-align: left;
}

.vsk-promo__features li {
	position: relative;
	padding-left: 1.6em;
	line-height: 1.5;
}

.vsk-promo__features li::before {
	content: "";
	position: absolute;
	left: 0.1em;
	top: 0.45em;
	width: 0.65em;
	height: 0.35em;
	border-left: 2px solid var(--vsk-color-accent);
	border-bottom: 2px solid var(--vsk-color-accent);
	transform: rotate(-45deg);
}

.vsk-promo__deadline {
	font-size: 0.95rem;
	font-weight: 600;
	color: var(--vsk-color-primary);
}

.vsk-promo__button {
	min-height: 44px;
}

.vsk-promo__terms {
	width: 100%;
	padding-top: var(--vsk-space-3);
	border-top: 1px solid var(--vsk-border);
	color: var(--vsk-color-secondary);
	font-size: 0.875rem;
	line-height: 1.6;
	text-align: left;
}

.vsk-promo__terms p {
	margin: 0 0 var(--vsk-space-2);
}

.vsk-promo__terms-label {
	font-weight: 700;
	color: var(--vsk-color-primary);
}

.vsk-promo__terms summary {
	cursor: pointer;
	min-height: 44px;
	display: flex;
	align-items: center;
	gap: 0.5em;
	font-weight: 600;
	color: var(--vsk-color-primary);
}

.vsk-promo__terms summary::after {
	content: "+";
	margin-left: auto;
	font-size: 1.25em;
	line-height: 1;
}

.vsk-promo__terms[open] summary::after {
	content: "\2212";
}

.vsk-promo__terms--collapsed[open] > :not(summary) {
	max-width: 72ch;
}

@media (min-width: 768px) {
	.vsk-promo--offer {
		grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
		column-gap: var(--vsk-space-6);
		align-items: start;
	}

	.vsk-promo--offer > .vsk-promo__terms {
		grid-column: 1 / -1;
	}

	.vsk-promo--offer .vsk-promo__aside {
		padding-left: var(--vsk-space-6);
		border-left: 1px solid var(--vsk-border);
	}

	.vsk-promo--offer .vsk-promo__features {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: var(--vsk-space-4);
	}
}

.vsk-promo__terms summary:focus-visible {
	outline: 2px solid var(--vsk-color-accent);
	outline-offset: 3px;
}

.vsk-promo--ended {
	outline: none;
}

/* Banner: one row that wraps on narrow screens. */
.vsk-promotion--banner .vsk-promo {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--vsk-space-2) var(--vsk-space-4);
	padding: var(--vsk-space-3) var(--vsk-space-5);
	border-radius: var(--vsk-radius-sm);
	background: var(--vsk-color-primary);
	border-color: transparent;
	color: #fff;
}

.vsk-promotion--banner .vsk-promo__title {
	color: inherit;
	font-size: 1rem;
	font-family: var(--vsk-font-body);
}

.vsk-promotion--banner .vsk-promo__price {
	color: inherit;
	font-size: 1.25rem;
}

.vsk-promotion--banner .vsk-promo__deadline {
	color: inherit;
	opacity: 0.85;
	font-size: 0.85rem;
}

.vsk-promotion--banner .vsk-promo__badge {
	background: color-mix(in srgb, #fff 18%, transparent);
	color: inherit;
}

.vsk-promotion--banner .vsk-promo__button {
	min-height: 40px;
	padding-block: 0.45em;
	background: #fff;
	color: var(--vsk-color-primary);
}

.vsk-promotion--banner .vsk-promo__terms {
	width: auto;
	padding: 0;
	border: 0;
	color: inherit;
}

.vsk-promotion--banner .vsk-promo__terms summary {
	color: inherit;
	text-decoration: underline;
	font-weight: 500;
}

.vsk-promotion--banner .vsk-promo__terms[open] {
	flex-basis: 100%;
}

.vsk-promotion--banner .vsk-promo__terms > :not(summary) {
	max-width: 60ch;
	color: inherit;
}

.vsk-promo__text-short {
	display: none;
}

@media (max-width: 767px) {
	.vsk-promotion--banner .vsk-promo {
		text-align: center;
	}

	.vsk-promo__text-full {
		display: none;
	}

	.vsk-promo__text-short {
		display: inline;
	}

	.vsk-promo {
		padding: var(--vsk-space-4);
	}

	.vsk-promo--offer {
		gap: var(--vsk-space-3);
	}

	.vsk-promo__main,
	.vsk-promo__aside {
		gap: var(--vsk-space-2);
	}

	.vsk-promo--offer .vsk-promo__summary {
		font-size: 0.95rem;
		line-height: 1.5;
	}

	.vsk-promo__features li {
		font-size: 0.95rem;
		line-height: 1.4;
	}

	.vsk-promo--offer .vsk-promo__aside {
		padding-top: var(--vsk-space-3);
		border-top: 1px solid var(--vsk-border);
	}

	.vsk-promo--offer .vsk-promo__button {
		width: 100%;
		justify-content: center;
		text-align: center;
	}
}

/* Editor only: the state being previewed, and the missing-campaign note. */
.vsk-promo__state-label {
	display: inline-block;
	margin-bottom: var(--vsk-space-2);
	padding: 0.15em 0.6em;
	border-radius: var(--vsk-radius-pill);
	background: #1d2327;
	color: #fff;
	font: 600 11px/1.6 system-ui, sans-serif;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.vsk-promo__diag {
	margin: 0;
	padding: var(--vsk-space-3) var(--vsk-space-4);
	border: 1px dashed #b32d2e;
	border-radius: var(--vsk-radius-sm);
	color: #b32d2e;
	font: 500 14px/1.5 system-ui, sans-serif;
}

/* Announced politely to screen readers; never shown. */
.vsk-promo__status {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.vsk-promotion {
	position: relative;
}

/* Playful and editorial presets keep their own look on the card. */
.vsk-preset--editorial .vsk-promo {
	border-radius: 0;
	box-shadow: none;
}

.vsk-preset--elevated .vsk-promo {
	border-color: transparent;
	box-shadow: var(--vsk-shadow-md);
}

.vsk-preset--tinted .vsk-promo {
	background: var(--vsk-surface-muted);
	border-color: transparent;
}

.vsk-preset--outline .vsk-promo {
	background: transparent;
}

.vsk-preset--playful .vsk-promo {
	border-width: 2px;
	box-shadow: 4px 4px 0 var(--vsk-color-primary);
}
