/**
 * Small site-wide controls.
 */

/* Back to top: appears after one screen of scrolling. */
.cb-to-top {
	position: fixed;
	right: 20px;
	bottom: 20px;
	z-index: 9000;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	min-height: 0;
	margin: 0;
	padding: 0;
	color: #fff;
	background: #a31647;
	border: 0;
	border-radius: 50%;
	box-shadow: 0 8px 24px rgba(16, 24, 40, 0.22);
	cursor: pointer;
	opacity: 0;
	visibility: hidden;
	transform: translateY(12px);
	transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s, background-color 0.15s ease;
}

.cb-to-top.is-visible {
	opacity: 1;
	visibility: visible;
	transform: none;
}

.cb-to-top:hover {
	background: #8a1239;
	transform: translateY(-2px);
}

.cb-to-top:focus-visible {
	outline: 3px solid rgba(14, 88, 135, 0.45);
	outline-offset: 3px;
}

.cb-to-top svg {
	width: 22px;
	height: 22px;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* Keep clear of the side cart and mobile panel. */
html.cb-drawer-open .cb-to-top,
html.cb-nav-open .cb-to-top {
	display: none;
}

@media (max-width: 767px) {
	.cb-to-top {
		right: 14px;
		bottom: 14px;
		width: 44px;
		height: 44px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.cb-to-top {
		transition: none;
	}
}

/* Product options as buttons (variation-options.js) ------------------------ */

/* Specific enough to beat template CSS such as
   ".woocommerce.single-product.mfn-variable-swatches .variations". */
body form.variations_form.cart.cb-options-ready table.variations,
body form.variations_form.cart.cb-options-ready .mfn-variations-wrapper {
	display: none !important;
}

.cb-options {
	display: flex;
	flex-direction: column;
	gap: 18px;
	margin: 0 0 20px;
	font-family: "Poppins", sans-serif;
	text-align: left;
}

.cb-options__label {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 6px;
	margin: 0 0 8px !important;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.3;
	color: #1f2430;
}

.cb-options__chosen {
	font-weight: 400;
	color: #64748b;
}

.cb-options__chosen:not(:empty)::before {
	content: "· ";
}

.cb-options__buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.cb-options .cb-options__btn {
	display: inline-flex;
	align-items: center;
	min-height: 42px;
	margin: 0 !important;
	padding: 8px 16px;
	font-family: inherit;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.25;
	letter-spacing: 0;
	text-align: left;
	text-transform: none;
	color: #1f2430;
	background: #fff;
	border: 1px solid #d1d5db;
	border-radius: 10px;
	box-shadow: none;
	cursor: pointer;
	transition: border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease;
}

.cb-options .cb-options__btn:hover:not(:disabled) {
	border-color: #a31647;
}

.cb-options .cb-options__btn.is-selected {
	color: #fff;
	background: #a31647;
	border-color: #a31647;
}

.cb-options .cb-options__btn:disabled {
	color: #9ca3af;
	background: #f8fafc;
	border-style: dashed;
	cursor: not-allowed;
	text-decoration: line-through;
}

.cb-options .cb-options__btn:focus-visible {
	outline: 3px solid rgba(14, 88, 135, 0.35);
	outline-offset: 2px;
}

.cb-options .cb-options__reset {
	align-self: flex-start;
	min-height: 0;
	margin: -6px 0 0;
	padding: 0;
	font-family: inherit;
	font-size: 13px;
	letter-spacing: 0;
	text-transform: none;
	color: #64748b;
	text-decoration: underline;
	background: none;
	border: 0;
	cursor: pointer;
}

.cb-options .cb-options__reset[hidden] {
	display: none;
}

/* Fields added by the product add-ons plugin, in the same style */
.single-product .yith-wapo-block .yith-wapo-addon {
	margin: 0 0 14px;
}

.single-product .yith-wapo-block .wapo-addon-title,
.single-product .yith-wapo-block .addon-header label,
.single-product .yith-wapo-block .yith-wapo-addon > label {
	margin: 0 0 6px;
	font-family: "Poppins", sans-serif;
	font-size: 14px !important;
	font-weight: 600;
	color: #1f2430;
}

.single-product .yith-wapo-block input[type="text"],
.single-product .yith-wapo-block input.yith-wapo-datepicker,
.single-product .yith-wapo-block select,
.single-product .yith-wapo-block textarea {
	box-sizing: border-box;
	width: 100%;
	min-height: 44px;
	padding: 10px 14px;
	font-size: 15px;
	letter-spacing: 0;
	background: #fff !important;
	border: 1px solid #d1d5db !important;
	border-radius: 10px !important;
	box-shadow: none;
}

.single-product .yith-wapo-block input:focus,
.single-product .yith-wapo-block select:focus {
	border-color: #0e5887 !important;
	outline: 0;
	box-shadow: 0 0 0 3px rgba(14, 88, 135, 0.22);
}

/* Page title banners (first section tagged cb-page-hero) ------------------
   One look for every page: a soft tint of the page colour, the title in the
   strong shade (readable, unlike white on yellow), soft shapes and the brand
   stripe. Each page keeps its colour family. */

.cb-page-hero {
	--hero-ink: #0e5887;
	--hero-tint: #e8f1f8;
	--hero-shape: rgba(14, 88, 135, 0.1);
	margin-bottom: 8px;
	background: transparent !important;
}

body.page-id-4741 .cb-page-hero, body.page-id-4739 .cb-page-hero,
body.page-id-12393 .cb-page-hero, body.page-id-13302 .cb-page-hero {
	--hero-ink: #9a6a00; --hero-tint: #fff5d4; --hero-shape: rgba(241, 194, 50, 0.35);
}

body.page-id-1949 .cb-page-hero, body.page-id-12783 .cb-page-hero, body.page-id-741 .cb-page-hero,
body.page-id-739 .cb-page-hero, body.page-id-131 .cb-page-hero {
	--hero-ink: #0b7a83; --hero-tint: #e2f7f9; --hero-shape: rgba(7, 193, 201, 0.2);
}

body.page-id-12499 .cb-page-hero, body.page-id-27 .cb-page-hero, body.page-id-10062 .cb-page-hero {
	--hero-ink: #a31647; --hero-tint: #fcebf1; --hero-shape: rgba(163, 22, 71, 0.1);
}

.cb-page-hero .elementor-background-overlay {
	display: none !important;
}

.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap {
	position: relative;
	overflow: hidden;
	padding: clamp(36px, 5vw, 56px) 24px clamp(40px, 5.5vw, 62px) !important;
	background-color: var(--hero-tint) !important;
	background-image:
		radial-gradient(circle at 6% 18%, var(--hero-shape) 0 70px, transparent 71px),
		radial-gradient(circle at 96% 92%, var(--hero-shape) 0 110px, transparent 111px),
		radial-gradient(circle at 86% 12%, var(--hero-shape) 0 26px, transparent 27px),
		radial-gradient(circle at 16% 96%, var(--hero-shape) 0 18px, transparent 19px) !important;
	border-radius: 24px !important;
}

/* Brand stripe along the bottom edge, as in the footer */
.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap::after {
	content: "";
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	height: 6px;
	background: linear-gradient(90deg, #f2c333 0 16.66%, #e8a33d 16.66% 33.33%, #c8164f 33.33% 50%, #951b81 50% 66.66%, #0e5887 66.66% 83.33%, #25b6bd 83.33% 100%);
}

.cb-page-hero .elementor-heading-title {
	font-size: clamp(38px, 6vw, 72px) !important;
	line-height: 1.05 !important;
	letter-spacing: 0.01em;
	color: var(--hero-ink) !important;
	text-shadow: none !important;
}

/* Optional line under the title (camp dates, deadline). */
.cb-page-hero .cb-page-hero__sub {
	position: relative;
	margin: 14px 0 0;
	color: var(--hero-ink);
	font-family: Poppins, sans-serif;
	font-size: clamp(16px, 2vw, 20px);
	font-weight: 500;
	line-height: 1.4;
	text-align: left;
}

/* Clear of the logo hand on the right, as the title. */
@media (max-width: 767px) {
	.cb-page-hero .cb-page-hero__sub {
		padding-right: 72px;
		font-size: 15px;
	}
}

.cb-page-hero .cb-page-hero__sub strong {
	color: #a31647;
	font-weight: 700;
	white-space: nowrap;
}

@media (max-width: 767px) {
	.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap {
		border-radius: 18px !important;
	}
}

/* Same width as the header bar, also for full-width (stretched) sections,
   and the same height whatever spacing each page had. */
.cb-page-hero > .elementor-container {
	max-width: min(1232px, calc(100% - 32px)) !important;
	min-height: 0 !important;
	margin-right: auto !important;
	margin-left: auto !important;
}

.cb-page-hero,
.cb-page-hero > .elementor-container > .elementor-column {
	min-height: 0 !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}

.cb-page-hero .elementor-widget-heading,
.cb-page-hero .elementor-widget-heading > .elementor-widget-container {
	margin: 0 !important;
	padding: 0 !important;
}

/* For Educators: calls to action, sign-up form and the mobile sticky bar ---- */

/* Hero: logo, one line and the buttons beside the whole photo */
.cb-fe-hero {
	margin: 8px 0 24px !important;
}

.cb-fe-hero > .elementor-container {
	max-width: min(1232px, calc(100% - 32px)) !important;
	margin: 0 auto;
	padding: clamp(24px, 4vw, 48px);
	overflow: hidden;
	background:
		radial-gradient(circle at 0% 100%, rgba(37, 182, 189, 0.16) 0 180px, transparent 181px),
		radial-gradient(circle at 100% 0%, rgba(242, 195, 51, 0.22) 0 140px, transparent 141px),
		#f3f8fc;
	border-radius: 28px;
	align-items: center;
	gap: clamp(20px, 4vw, 48px);
}

.cb-fe-hero > .elementor-container > .elementor-column {
	position: relative;
}

/* Tablets: Elementor stacks the columns but keeps them half wide; keep
   them side by side instead. */
@media (min-width: 768px) {
	.cb-fe-hero > .elementor-container {
		flex-direction: row !important;
		flex-wrap: nowrap !important;
	}

	.cb-fe-hero > .elementor-container > .elementor-column {
		width: 50% !important;
		flex: 1 1 0;
		min-width: 0;
	}
}

.cb-fe-hero__text > .elementor-widget-wrap {
	padding: 0 !important;
}

.cb-fe-hero__logo img {
	width: min(100%, 420px) !important;
	height: auto !important;
}

.cb-fe-hero__title .elementor-heading-title {
	max-width: 16em;
	margin: 20px 0 0 !important;
	font-family: "Poppins", sans-serif !important;
	font-size: clamp(24px, 2.6vw, 34px) !important;
	font-weight: 700 !important;
	line-height: 1.2 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	color: #0e5887 !important;
}

.cb-fe-hero__lead p {
	max-width: 30em;
	margin: 10px 0 6px !important;
	font-family: "Poppins", sans-serif !important;
	font-size: clamp(16px, 1.6vw, 19px) !important;
	line-height: 1.55 !important;
	color: #334155 !important;
}

.cb-fe-hero .elementor-widget-button.cb-fe-cta {
	margin: 14px 12px 0 0 !important;
}

.cb-fe-hero__media > .elementor-widget-wrap {
	padding: 0 !important;
}

.cb-fe-hero__photo img {
	display: block;
	width: 100% !important;
	height: auto !important;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	border-radius: 22px !important;
	box-shadow: 0 24px 48px rgba(14, 88, 135, 0.18);
}

/* Class photos further down: one shape for both */
.cb-fe-photo:not(.cb-fe-hero__photo) img {
	width: 100% !important;
	height: auto !important;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: 18px !important;
}

/* Brand stripe under the photo */
.cb-fe-hero__photo::after {
	content: "";
	position: absolute;
	right: 12%;
	bottom: -10px;
	left: 12%;
	height: 6px;
	background: linear-gradient(90deg, #f2c333 0 16.66%, #e8a33d 16.66% 33.33%, #c8164f 33.33% 50%, #951b81 50% 66.66%, #0e5887 66.66% 83.33%, #25b6bd 83.33% 100%);
	border-radius: 3px;
}

@media (max-width: 767px) {

	.cb-fe-hero > .elementor-container {
		max-width: none !important;
		margin: 0;
		flex-direction: column-reverse;
		padding: 16px 16px 28px;
		border-radius: 20px;
	}

	.cb-fe-hero__text > .elementor-widget-wrap {
		text-align: center;
	}

	.cb-fe-hero__logo img {
		margin: 0 auto;
	}

	.cb-fe-hero__lead p,
	.cb-fe-hero__title .elementor-heading-title {
		margin-right: auto !important;
		margin-left: auto !important;
		text-align: center;
	}

	.cb-fe-hero .elementor-widget-button.cb-fe-cta {
		margin: 12px 4px 0 !important;
	}
}

.elementor-widget-button.cb-fe-cta {
	display: inline-block;
	margin: 18px 6px 0 !important;
}

.cb-fe-cta .elementor-button {
	min-height: 52px;
	padding: 14px 26px !important;
	font-family: "Poppins", sans-serif !important;
	font-size: 16px !important;
	font-weight: 600 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	border-radius: 12px !important;
	transition: transform 0.15s ease, background-color 0.15s ease;
}

.cb-fe-cta--primary .elementor-button {
	color: #fff !important;
	background: #a31647 !important;
	box-shadow: 0 10px 24px rgba(163, 22, 71, 0.25);
}

.cb-fe-cta--primary .elementor-button:hover {
	background: #8a1239 !important;
	transform: translateY(-1px);
}

.cb-fe-cta--ghost .elementor-button {
	color: #0e5887 !important;
	background: #fff !important;
	border: 2px solid #cfe0ec !important;
}

.cb-fe-cta--ghost .elementor-button:hover {
	border-color: #0e5887 !important;
}

/* The sign-up block reads as the goal of the page. */
.cb-fe-signup > .elementor-container {
	max-width: 760px !important;
	padding: clamp(24px, 4vw, 40px) !important;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 24px;
	box-shadow: 0 24px 60px rgba(16, 24, 40, 0.1);
}

.cb-fe-form-title {
	margin: 0 0 8px !important;
	font-family: "Poppins", sans-serif !important;
	font-size: clamp(24px, 3vw, 32px) !important;
	font-weight: 700 !important;
	line-height: 1.2 !important;
	color: #1f2430 !important;
}

.cb-fe-form-lead {
	margin: 0 0 8px !important;
	font-size: 16px;
	color: #64748b;
}

.cb-fe-signup .elementor-field-group > label,
.cb-fe-signup .elementor-field-label {
	margin-bottom: 6px !important;
	font-family: "Poppins", sans-serif;
	font-size: 14px !important;
	font-weight: 600 !important;
	color: #1f2430 !important;
}

.cb-fe-signup .elementor-field-textual,
.cb-fe-signup .elementor-select-wrapper select {
	min-height: 48px;
	font-size: 15px !important;
	color: #1f2430 !important;
	background: #fff !important;
	border: 1px solid #d1d5db !important;
	border-radius: 10px !important;
}

.cb-fe-signup .elementor-field-textual:focus,
.cb-fe-signup select:focus {
	border-color: #0e5887 !important;
	box-shadow: 0 0 0 3px rgba(14, 88, 135, 0.2) !important;
	outline: 0;
}

.cb-fe-signup .elementor-field-subgroup .elementor-field-option label {
	font-size: 15px;
	color: #1f2430;
}

.cb-fe-signup .elementor-button[type="submit"] {
	min-height: 54px;
	font-family: "Poppins", sans-serif !important;
	font-size: 17px !important;
	font-weight: 600 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	background: #a31647 !important;
	border-radius: 12px !important;
}

.cb-fe-signup .elementor-message-success {
	padding: 14px 16px;
	color: #166534;
	background: #f0fdf4;
	border: 1px solid #bbf7d0;
	border-radius: 12px;
}

.cb-fe-sticky {
	display: none;
}

@media (max-width: 1024px) {
	.cb-fe-sticky:not([hidden]) {
		position: fixed;
		right: 12px;
		bottom: 12px;
		left: 12px;
		z-index: 8999;
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 8px;
		min-height: 52px;
		padding: 12px 18px;
		font-family: "Poppins", sans-serif;
		font-size: 15px;
		font-weight: 600;
		color: #fff !important;
		text-decoration: none !important;
		background: #a31647;
		border-radius: 14px;
		box-shadow: 0 12px 30px rgba(16, 24, 40, 0.25);
	}

	body:has(.cb-fe-sticky:not([hidden])) .cb-to-top {
		bottom: 76px;
	}
}

/* Anchored sections clear the sticky header. */
#educator-signup,
#cbrw-register {
	scroll-margin-top: 96px;
}

/* For Educators redesign: facts strip, how it works, benefits, final CTA ---- */

.cb-fe-welcome .elementor-widget-wrap {
	justify-content: center;
}

.cb-fe-facts > .elementor-container,
.cb-fe-steps-cards > .elementor-container,
.cb-fe-benefits > .elementor-container {
	max-width: 1140px !important;
	gap: 16px;
}

.cb-fe-facts {
	margin: 8px 0 40px;
}

.cb-fe-facts .elementor-column > .elementor-widget-wrap,
.cb-fe-steps-cards .elementor-column > .elementor-widget-wrap,
.cb-fe-benefits .elementor-column > .elementor-widget-wrap {
	height: 100%;
	padding: 22px 20px !important;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 18px;
	box-shadow: 0 10px 28px rgba(16, 24, 40, 0.06);
}

.cb-fe-facts .elementor-icon,
.cb-fe-steps-cards .elementor-icon,
.cb-fe-benefits .elementor-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	font-size: 24px !important;
	color: #a31647 !important;
	background: #fcebf1;
	border-radius: 16px;
}

.cb-fe-facts .elementor-column:nth-child(2) .elementor-icon,
.cb-fe-benefits .elementor-column:nth-child(2) .elementor-icon,
.cb-fe-steps-cards .elementor-column:nth-child(2) .elementor-icon { color: #0b7a83 !important; background: #e2f7f9; }
.cb-fe-facts .elementor-column:nth-child(3) .elementor-icon,
.cb-fe-benefits .elementor-column:nth-child(3) .elementor-icon,
.cb-fe-steps-cards .elementor-column:nth-child(3) .elementor-icon { color: #9a6a00 !important; background: #fff5d4; }
.cb-fe-facts .elementor-column:nth-child(4) .elementor-icon { color: #0e5887 !important; background: #e8f1f8; }

.cb-fe-facts .elementor-icon svg,
.cb-fe-steps-cards .elementor-icon svg,
.cb-fe-benefits .elementor-icon svg {
	width: 24px;
	height: 24px;
	fill: currentColor;
}

.cb-fe-facts .elementor-icon-box-title,
.cb-fe-steps-cards .elementor-icon-box-title,
.cb-fe-benefits .elementor-icon-box-title {
	margin: 14px 0 6px !important;
	font-family: "Poppins", sans-serif !important;
	font-size: 18px !important;
	font-weight: 600 !important;
	line-height: 1.3 !important;
	color: #1f2430 !important;
}

.cb-fe-facts .elementor-icon-box-description,
.cb-fe-steps-cards .elementor-icon-box-description,
.cb-fe-benefits .elementor-icon-box-description {
	margin: 0;
	font-family: "Poppins", sans-serif;
	font-size: 15px !important;
	line-height: 1.55 !important;
	color: #64748b !important;
}

.cb-fe-steps {
	margin-top: 32px;
}

.cb-fe-title .elementor-heading-title {
	margin: 0 !important;
	font-family: "Poppins", sans-serif !important;
	font-size: clamp(26px, 3.4vw, 38px) !important;
	font-weight: 700 !important;
	line-height: 1.2 !important;
	color: #1f2430 !important;
}

.cb-fe-lead p {
	margin: 6px 0 0 !important;
	font-family: "Poppins", sans-serif;
	font-size: 17px !important;
	color: #64748b !important;
}

.cb-fe-steps-cards {
	margin: 12px 0 48px;
}

/* Step number line between the cards on wide screens */
@media (min-width: 1025px) {
	.cb-fe-steps-cards .elementor-column {
		position: relative;
	}

	.cb-fe-steps-cards .elementor-column:not(:last-child)::after {
		content: "";
		position: absolute;
		top: 50px;
		right: -20px;
		width: 24px;
		height: 2px;
		background: #f0c6d4;
	}
}

.cb-fe-benefits {
	margin: 24px 0 40px;
}

.cb-fe-final {
	margin: 40px 0 24px;
}

.cb-fe-final > .elementor-container {
	max-width: 1140px !important;
	padding: clamp(32px, 5vw, 56px) 24px !important;
	background:
		radial-gradient(circle at 8% 20%, rgba(255, 255, 255, 0.14) 0 80px, transparent 81px),
		radial-gradient(circle at 92% 86%, rgba(255, 255, 255, 0.12) 0 120px, transparent 121px),
		#a31647;
	border-radius: 24px;
}

.cb-fe-final .cb-fe-title .elementor-heading-title,
.cb-fe-final .cb-fe-lead p {
	color: #fff !important;
}

.cb-fe-final .cb-fe-lead p {
	opacity: 0.9;
}

.cb-fe-final .cb-fe-cta--primary .elementor-button {
	color: #a31647 !important;
	background: #fff !important;
	box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18);
}

.cb-fe-final .elementor-widget-wrap {
	justify-content: center;
}

@media (max-width: 1024px) {
	.cb-fe-facts .elementor-column,
	.cb-fe-steps-cards .elementor-column,
	.cb-fe-benefits .elementor-column {
		width: 100% !important;
	}

	.cb-fe-facts > .elementor-container {
		display: grid !important;
		grid-template-columns: 1fr 1fr;
		gap: 12px;
		padding: 0 12px;
	}

	.cb-fe-steps-cards > .elementor-container,
	.cb-fe-benefits > .elementor-container {
		display: grid !important;
		gap: 12px;
		padding: 0 12px;
	}
}

@media (max-width: 480px) {
	/* Two compact cards per row: the four facts fit on one screen. */
	.cb-fe-facts .elementor-column > .elementor-widget-wrap {
		padding: 14px 10px !important;
	}

	.cb-fe-facts .elementor-icon {
		width: 44px;
		height: 44px;
		font-size: 19px !important;
	}

	.cb-fe-facts .elementor-icon-box-title {
		margin-top: 10px !important;
		font-size: 15px !important;
	}

	.cb-fe-facts .elementor-icon-box-description {
		font-size: 13px !important;
	}
}

/* Page banners: the hand from the logo as a watermark instead of circles. */
.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap {
	background-image: none !important;
}

.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	background-image:
		url("/wp-content/uploads/2023/05/cropped-cropped-cultural-bytes-favicon.png"),
		url("/wp-content/uploads/2023/05/cropped-cropped-cultural-bytes-favicon.png");
	background-repeat: no-repeat;
	background-position: right -30px bottom -50px, left 3% top 14px;
	background-size: 230px, 82px;
	opacity: 0.16;
	pointer-events: none;
}

.cb-page-hero .elementor-widget-wrap > .elementor-element {
	position: relative;
	z-index: 1;
}

@media (max-width: 767px) {
	.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap::before {
		background-position: right -24px bottom -30px, left 10px top 10px;
		background-size: 140px, 52px;
	}
}

/* Page banners v3: title on the left, the logo hand in full colour on the
   right as an illustration, over a soft gradient of the page colour. */
.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap {
	align-content: center;
	min-height: clamp(150px, 16vw, 200px);
	padding: clamp(32px, 4vw, 48px) clamp(24px, 5vw, 64px) clamp(36px, 4.5vw, 52px) !important;
	background: linear-gradient(110deg, var(--hero-tint) 0%, var(--hero-tint) 55%, #fff 100%) !important;
}

.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap::before {
	inset: auto;
	top: 50%;
	right: clamp(-20px, 2vw, 40px);
	width: clamp(150px, 18vw, 250px);
	height: clamp(150px, 18vw, 250px);
	background:
		url("/wp-content/uploads/2023/05/cropped-cropped-cultural-bytes-favicon.png") center / 78% no-repeat,
		radial-gradient(circle, #fff 0 52%, rgba(255, 255, 255, 0) 70%);
	opacity: 1;
	transform: translateY(-46%) rotate(-12deg);
	filter: drop-shadow(0 10px 18px rgba(16, 24, 40, 0.12));
}

.cb-page-hero .elementor-widget-heading {
	width: 100%;
	padding-right: clamp(140px, 20vw, 280px) !important;
}

.cb-page-hero .elementor-heading-title {
	text-align: left !important;
}

/* A short brand-colour underline under the title */
.cb-page-hero .elementor-heading-title::after {
	content: "";
	display: block;
	width: 72px;
	height: 6px;
	margin-top: 14px;
	background: var(--hero-ink);
	border-radius: 999px;
	opacity: 0.85;
}

@media (max-width: 767px) {
	.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap {
		min-height: 0;
		padding: 28px 22px 32px !important;
	}

	.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap::before {
		right: -26px;
		width: 120px;
		height: 120px;
		background-position: center, center;
		background-size: 80%, auto;
	}

	.cb-page-hero .elementor-widget-heading {
		padding-right: 84px !important;
	}

	.cb-page-hero .elementor-heading-title::after {
		width: 48px;
		height: 5px;
		margin-top: 10px;
	}
}

.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap {
	background: linear-gradient(110deg, var(--hero-tint) 0%, var(--hero-tint) 58%, color-mix(in srgb, var(--hero-tint) 45%, #fff) 100%) !important;
	box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--hero-ink) 10%, transparent);
}

.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap::before {
	background:
		url("/wp-content/uploads/2023/05/cropped-cropped-cultural-bytes-favicon.png") center / 80% no-repeat,
		radial-gradient(circle, rgba(255, 255, 255, 0.85) 0 40%, rgba(255, 255, 255, 0) 64%);
}

/* Room between the banner and the first section, whatever margins the
   page's sections had. */
.cb-page-hero {
	margin-bottom: clamp(20px, 3vw, 36px) !important;
}

/* Small screens: the banner lines up with the content below (Elementor gave
   the column a 20px margin), and the title fits beside the hand. */
@media (max-width: 767px) {
	.cb-page-hero {
		margin-top: 12px !important;
	}

	.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap {
		margin: 0 !important;
		padding: 24px 20px 26px !important;
	}

	.cb-page-hero .elementor-heading-title {
		font-size: clamp(26px, 8vw, 34px) !important;
		line-height: 1.1 !important;
	}

	.cb-page-hero .elementor-widget-heading {
		padding-right: 76px !important;
	}

	.cb-page-hero > .elementor-container > .elementor-column > .elementor-widget-wrap::before {
		right: -14px;
		width: 104px;
		height: 104px;
	}
}

/* Home sliders (Happy Addons): arrows as white buttons on the sides */
.home .ha-slider .slick-arrow {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	width: 38px !important;
	height: 38px !important;
	padding: 0 !important;
	color: #1f2430 !important;
	background: rgba(255, 255, 255, 0.92) !important;
	border: 0 !important;
	border-radius: 50% !important;
	box-shadow: 0 6px 16px rgba(15, 23, 42, 0.18);
	transform: translateY(-50%);
	top: 50% !important;
}

.home .ha-slider .slick-prev {
	left: 10px !important;
	right: auto !important;
}

.home .ha-slider .slick-next {
	right: 10px !important;
	left: auto !important;
}

.home .ha-slider .slick-arrow i,
.home .ha-slider .slick-arrow svg {
	font-size: 14px !important;
	color: #1f2430 !important;
	fill: #1f2430 !important;
}

.home .ha-slider .slick-arrow:hover {
	background: #fff !important;
}

/* Contact page ------------------------------------------------------------ */

.cb-ct > .elementor-container {
	max-width: 1140px !important;
	gap: 32px;
	align-items: flex-start;
}

.cb-ct-title {
	margin: 0 0 12px !important;
	font-family: "Poppins", sans-serif !important;
	font-size: clamp(24px, 3vw, 32px) !important;
	font-weight: 700 !important;
	line-height: 1.2 !important;
	color: #1f2430 !important;
}

.cb-ct-info .elementor-widget-text-editor p {
	margin: 0 0 12px;
	font-family: "Poppins", sans-serif;
	font-size: 16px;
	line-height: 1.6;
	color: #475569;
}

.cb-ct-subtitle .elementor-heading-title {
	margin: 18px 0 4px !important;
	font-family: "Poppins", sans-serif !important;
	font-size: 13px !important;
	font-weight: 600 !important;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #64748b !important;
}

.cb-ct-card {
	margin-bottom: 10px !important;
}

.cb-ct-card .elementor-icon-box-wrapper {
	display: flex !important;
	align-items: center;
	gap: 14px;
	padding: 14px 16px;
	text-align: left !important;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 14px;
	transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}

.cb-ct-card .elementor-icon-box-wrapper:hover {
	border-color: #f0c6d4;
	box-shadow: 0 10px 24px rgba(16, 24, 40, 0.08);
	transform: translateY(-1px);
}

.cb-ct-card .elementor-icon-box-icon {
	margin: 0 !important;
}

.cb-ct-card .elementor-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	font-size: 18px !important;
	color: #a31647 !important;
	background: #fcebf1;
	border-radius: 12px;
}

.cb-ct-card .elementor-icon svg {
	width: 18px;
	height: 18px;
	fill: currentColor;
}

.cb-ct-card .elementor-icon-box-title {
	margin: 0 0 2px !important;
	font-family: "Poppins", sans-serif !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	color: #1f2430 !important;
}

.cb-ct-card .elementor-icon-box-title a,
.cb-ct-card .elementor-icon-box-description {
	color: inherit !important;
	text-decoration: none !important;
}

.cb-ct-card .elementor-icon-box-description {
	margin: 0;
	font-family: "Poppins", sans-serif;
	font-size: 14px !important;
	color: #64748b !important;
}

/* The form in a card, with the same fields as the rest of the site */
.cb-ct-form > .elementor-widget-wrap {
	padding: clamp(22px, 3vw, 32px) !important;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 22px;
	box-shadow: 0 24px 60px rgba(16, 24, 40, 0.08);
}

.cb-ct-form .elementor-field-group > label,
.cb-ct-form .elementor-field-label {
	margin-bottom: 6px !important;
	font-family: "Poppins", sans-serif;
	font-size: 14px !important;
	font-weight: 600 !important;
	color: #1f2430 !important;
}

.cb-ct-form .elementor-field-textual,
.cb-ct-form .elementor-select-wrapper select {
	min-height: 48px;
	font-size: 15px !important;
	color: #1f2430 !important;
	background: #fff !important;
	border: 1px solid #d1d5db !important;
	border-radius: 10px !important;
}

.cb-ct-form .elementor-field-textual::placeholder {
	color: #9ca3af !important;
}

.cb-ct-form .elementor-field-textual:focus,
.cb-ct-form select:focus {
	border-color: #0e5887 !important;
	box-shadow: 0 0 0 3px rgba(14, 88, 135, 0.2) !important;
	outline: 0;
}

.cb-ct-form .elementor-field-type-acceptance label {
	font-size: 13px !important;
	font-weight: 400 !important;
	line-height: 1.5;
	color: #64748b !important;
}

.cb-ct-form .elementor-button[type="submit"] {
	min-height: 54px;
	font-family: "Poppins", sans-serif !important;
	font-size: 17px !important;
	font-weight: 600 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	background: #a31647 !important;
	border-radius: 12px !important;
}

.cb-ct-form .elementor-message-success {
	padding: 14px 16px;
	color: #166534;
	background: #f0fdf4;
	border: 1px solid #bbf7d0;
	border-radius: 12px;
}

.cb-ct-map > .elementor-container {
	max-width: 1140px !important;
	margin-top: 24px;
}

.cb-ct-map iframe {
	border-radius: 20px;
	filter: saturate(0.9);
}

@media (max-width: 1024px) {
	.cb-ct > .elementor-container {
		gap: 20px;
	}
}

/* One on One product (template 12685) ------------------------------------- */

.cb-ooo-hero {
	background: #f3f8fc !important;
}

/* The photo stays in view next to the long sign-up card. Sticky goes on the
   photo's section: it sits in the left column, which is as tall as the card
   (the photo's own column is only as tall as the photo, so it had no room). */
@media (min-width: 1025px) {
	.cb-ooo-hero > .elementor-container > .elementor-column > .elementor-widget-wrap {
		align-items: flex-start;
		align-content: flex-start;
	}

	.cb-ooo-hero .elementor-inner-section:has(.cb-ooo-media) {
		position: sticky;
		top: 110px;
		align-self: flex-start;
	}
}

.cb-ooo-media img {
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	border-radius: 22px !important;
	box-shadow: 0 24px 48px rgba(14, 88, 135, 0.16);
}

.cb-ooo-card {
	border: 0 !important;
	border-radius: 22px;
	box-shadow: 0 20px 50px rgba(15, 23, 42, 0.08);
}

.cb-ooo-card > .elementor-widget-wrap {
	border: 0 !important;
	border-radius: 22px;
}

.cb-ooo-card .woocommerce-variation-price {
	margin: 14px 0 18px !important;
	text-align: left !important;
}

.cb-ooo-card .woocommerce-variation-price .price {
	display: block;
	padding: 14px 16px;
	font-family: "Poppins", sans-serif !important;
	font-size: 15px !important;
	color: #475569 !important;
	background: #fcebf1;
	border-radius: 14px;
}

.cb-ooo-card .woocommerce-variation-price .price .amount {
	margin-right: 4px;
	font-size: 28px;
	font-weight: 700;
	color: #a31647;
}

.cb-ooo-card .single_add_to_cart_button {
	width: 100%;
	min-height: 54px;
	font-family: "Poppins", sans-serif !important;
	font-size: 17px !important;
	font-weight: 600 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	color: #fff !important;
	background: #a31647 !important;
	border: 0 !important;
	border-radius: 14px !important;
	box-shadow: 0 10px 24px rgba(163, 22, 71, 0.22);
}

.cb-ooo-card .single_add_to_cart_button:hover {
	background: #8a1239 !important;
}

.cb-ooo-card .single_add_to_cart_button.disabled {
	color: #64748b !important;
	background: #e2e8f0 !important;
	box-shadow: none;
	opacity: 1 !important;
}

/* Until the three choices are made, say what the button is waiting for */
.cb-ooo-card .woocommerce-variation-add-to-cart-disabled::after {
	content: "Choose a language, class length and how many days to see the price.";
	display: block;
	flex: 1 1 100%;
	margin-top: 10px;
	font-family: "Poppins", sans-serif;
	font-size: 13px;
	color: #64748b;
	text-align: center;
}

.cb-ooo-note {
	margin-top: 18px !important;
	padding: 16px 18px 6px;
	background: #f8fafc;
	border: 1px solid #e5e7eb;
	border-radius: 14px;
}

.cb-ooo-note .cb-ooo-note__title {
	margin: 0 0 6px !important;
	font-weight: 600;
	color: #1f2430;
}

.cb-ooo-note ul {
	margin: 0 0 8px;
	padding-left: 18px;
}

.cb-ooo-note li {
	margin-bottom: 6px;
	font-size: 13px;
	line-height: 1.5;
	color: #475569;
}

/* Price table */
.cb-ooo-plans {
	padding: 56px 16px 24px;
}

.cb-plans__title {
	margin: 0 0 6px !important;
	font-family: "Poppins", sans-serif !important;
	font-size: clamp(26px, 3vw, 34px) !important;
	font-weight: 700 !important;
	line-height: 1.2 !important;
	text-align: center;
	color: #1f2430 !important;
}

.cb-plans__lead {
	max-width: 36em;
	margin: 0 auto 24px !important;
	font-size: 15px;
	text-align: center;
	color: #64748b;
}

.cb-plans__table {
	overflow: hidden;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 18px;
}

.cb-plans__row {
	display: grid;
	grid-template-columns: 1.1fr 1fr 1fr;
	align-items: stretch;
	border-top: 1px solid #eef2f6;
}

.cb-plans__row > span {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 8px;
}

.cb-plans__row--head {
	border-top: 0;
	background: #0e5887;
}

.cb-plans__row--head > span {
	padding: 14px 8px;
	font-family: "Poppins", sans-serif;
	font-size: 14px;
	font-weight: 600;
	color: #fff;
}

.cb-plans__row > .cb-plans__label,
.cb-plans__row--head > span:first-child {
	justify-content: flex-start;
	padding-left: 20px;
}

.cb-plans__row > .cb-plans__label {
	font-family: "Poppins", sans-serif;
	font-size: 15px;
	font-weight: 600;
	color: #1f2430;
}

.cb-plans .cb-plans__pick {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	width: 100%;
	margin: 0;
	padding: 10px 6px;
	font-family: "Poppins", sans-serif;
	line-height: 1.2;
	color: #1f2430;
	text-transform: none;
	letter-spacing: 0;
	background: transparent;
	border: 1px solid transparent;
	border-radius: 12px;
	box-shadow: none;
	cursor: pointer;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}

.cb-plans .cb-plans__pick:hover,
.cb-plans .cb-plans__pick:focus-visible {
	background: #fcebf1;
	border-color: #f3c6d6;
	outline: 0;
}

.cb-plans .cb-plans__pick.is-picked {
	background: #fcebf1;
	border-color: #a31647;
}

.cb-plans__pick strong {
	font-size: 18px;
	font-weight: 700;
	color: #a31647;
}

.cb-plans__pick small {
	font-size: 12px;
	color: #64748b;
}

.cb-plans__pick em {
	font-size: 12px;
	font-style: normal;
	font-weight: 600;
	color: #0b7a83;
}

@media (max-width: 767px) {
	.cb-plans__row > .cb-plans__label,
	.cb-plans__row--head > span:first-child {
		padding-left: 12px;
		font-size: 13px;
	}

	.cb-plans__pick strong {
		font-size: 16px;
	}
}

/* Facts: small cards */
.cb-ooo-facts {
	margin-top: 12px !important;
	padding-top: 0 !important;
	padding-bottom: 12px !important;
}

.cb-ooo-facts > .elementor-container {
	gap: 12px;
}

.cb-ooo-facts .elementor-column > .elementor-widget-wrap {
	height: 100%;
	padding: 16px 18px !important;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 14px;
}

.cb-ooo-facts .elementor-heading-title {
	font-family: "Poppins", sans-serif !important;
	font-size: 13px !important;
	font-weight: 600 !important;
	line-height: 1.3 !important;
	letter-spacing: 0.04em !important;
	text-transform: uppercase;
	color: #0b7a83 !important;
}

.cb-ooo-facts .elementor-widget-text-editor,
.cb-ooo-facts .elementor-widget-text-editor p {
	margin: 4px 0 0 !important;
	font-family: "Poppins", sans-serif !important;
	font-size: 16px !important;
	line-height: 1.4 !important;
	color: #1f2430 !important;
}

/* Small screens: one list, label on the left and value on the right */
@media (max-width: 767px) {
	.cb-ooo-facts,
	.cb-ooo-facts + .cb-ooo-facts {
		margin: 0 !important;
		padding: 0 16px !important;
	}

	.cb-ooo-facts:not(.cb-ooo-facts + .cb-ooo-facts) {
		margin-top: 16px !important;
	}

	.cb-ooo-facts > .elementor-container {
		flex-direction: column;
		gap: 0;
		/* The white rows have square corners: clip them to the rounded box,
		   or they cover its corners and the top border looks detached. */
		overflow: hidden;
		background: #fff;
		border: 1px solid #e5e7eb;
		border-radius: 0;
	}

	.cb-ooo-facts:not(.cb-ooo-facts + .cb-ooo-facts) > .elementor-container {
		border-bottom: 0;
		border-radius: 14px 14px 0 0;
	}

	.cb-ooo-facts + .cb-ooo-facts > .elementor-container {
		border-radius: 0 0 14px 14px;
	}

	.cb-ooo-facts .elementor-column {
		width: 100% !important;
		margin: 0 !important;
		padding: 0 !important;
	}

	.cb-ooo-facts .elementor-column > .elementor-widget-wrap {
		flex-wrap: nowrap !important;
		align-items: baseline;
		justify-content: space-between;
		gap: 12px;
		padding: 12px 16px !important;
		border: 0;
		border-top: 1px solid #eef2f6;
		border-radius: 0;
	}

	.cb-ooo-facts:not(.cb-ooo-facts + .cb-ooo-facts) .elementor-column:first-child > .elementor-widget-wrap {
		border-top: 0;
	}

	.cb-ooo-facts .elementor-widget-wrap > .elementor-element {
		width: auto !important;
		margin: 0 !important;
	}

	.cb-ooo-facts .elementor-widget-text-editor,
	.cb-ooo-facts .elementor-widget-text-editor p {
		margin: 0 !important;
		font-size: 14px !important;
		text-align: right;
	}

	.cb-plans__row {
		grid-template-columns: 0.9fr 1fr 1fr;
	}

	.cb-plans__row > span {
		padding: 6px 2px;
	}

	.cb-plans .cb-plans__pick {
		padding: 8px 2px;
	}

	.cb-plans__pick small,
	.cb-plans__pick em {
		font-size: 11px;
		white-space: nowrap;
	}

	.cb-plans__row--head > span {
		font-size: 13px;
		text-align: center;
	}

	/* The old layout pulled this section up over the reasons */
	.cb-ooo-final {
		margin-top: 0 !important;
		padding: 0 16px !important;
	}
}

/* What is One-on-One: dark text on the yellow, readable */
.cb-ooo-what {
	margin-top: 40px !important;
	padding: 64px 20px !important;
}

.cb-ooo-what .elementor-heading-title {
	color: #1f2430 !important;
	text-shadow: none !important;
}

.cb-ooo-what .elementor-widget-text-editor,
.cb-ooo-what .elementor-widget-text-editor p {
	text-align: center !important;
	color: #3b2f00 !important;
	text-shadow: none !important;
}

/* Why: the reasons as a grid of cards */
.cb-ooo-why {
	padding: 64px 20px 32px !important;
	background: transparent !important;
}

.cb-ooo-why .elementor-icon-list-items {
	display: grid !important;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 12px;
	margin-top: 24px !important;
}

.cb-ooo-why .elementor-icon-list-item {
	justify-content: flex-start !important;
	align-items: center !important;
	margin: 0 !important;
	padding: 14px 16px !important;
	text-align: left;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 14px;
}

.cb-ooo-why .elementor-icon-list-item::after {
	display: none !important;
}

.cb-ooo-why .elementor-icon-list-icon {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	margin-right: 10px;
	background: #e2f7f9;
	border-radius: 50%;
}

.cb-ooo-why .elementor-icon-list-text {
	font-size: 15px !important;
	line-height: 1.4 !important;
	color: #1f2430 !important;
}

/* Closing call to action */
.cb-ooo-final > .elementor-container {
	max-width: min(900px, calc(100% - 32px)) !important;
	margin: 0 auto;
	padding: 36px 24px 8px;
	background: #e2f7f9;
	border-radius: 22px;
}

.cb-ooo-final .elementor-widget-text-editor {
	margin-right: 0 !important;
	margin-left: 0 !important;
}

.cb-ooo-cta,
.cb-ooo-cta > .elementor-widget-container {
	margin-bottom: 28px !important;
}

.cb-ooo-final > .elementor-container > .elementor-column > .elementor-widget-wrap {
	padding: 0 !important;
}

.cb-ooo-cta .elementor-button {
	min-height: 52px;
	padding: 14px 28px !important;
	font-family: "Poppins", sans-serif !important;
	font-size: 16px !important;
	font-weight: 600 !important;
	text-transform: none !important;
	color: #fff !important;
	background: #a31647 !important;
	border: 0 !important;
	border-radius: 12px !important;
	box-shadow: 0 10px 24px rgba(163, 22, 71, 0.22);
}

.cb-ooo-cta .elementor-button:hover {
	background: #8a1239 !important;
}

#cb-ooo-signup {
	scroll-margin-top: 110px;
}

/* After a pick in the price table: the choice still missing */
.cb-options__group.is-needed:not(:has([aria-checked="true"])) {
	margin: -8px -10px 4px;
	padding: 8px 10px;
	background: #fcebf1;
	border-radius: 12px;
	animation: cb-needed 0.6s ease 2;
}

.cb-options__group.is-needed:not(:has([aria-checked="true"])) .cb-options__label::after {
	content: " · choose one";
	font-weight: 600;
	color: #a31647;
}

@keyframes cb-needed {
	50% { box-shadow: 0 0 0 4px rgba(163, 22, 71, 0.18); }
}

/* One on One on phones: every block on the same 16px side margin (the
   header's), and room between the last block and the footer. */
@media (max-width: 767px) {
	.cb-ooo-hero,
	.cb-ooo-plans,
	.cb-ooo-why,
	.cb-ooo-final {
		padding-right: 16px !important;
		padding-left: 16px !important;
	}

	.cb-ooo-hero > .elementor-container > .elementor-column > .elementor-widget-wrap,
	.cb-ooo-plans .elementor-widget-wrap,
	.cb-ooo-why .elementor-widget-wrap {
		padding-right: 0 !important;
		padding-left: 0 !important;
	}

	.cb-ooo-what {
		padding: 48px 16px !important;
	}

	.cb-ooo-why {
		padding-top: 48px !important;
		padding-bottom: 24px !important;
	}

	.cb-ooo-final {
		margin-bottom: 40px !important;
	}

	.cb-ooo-final > .elementor-container {
		max-width: none !important;
		padding: 28px 20px 4px;
	}
}

.cb-ooo-final {
	margin-bottom: 56px !important;
}

/* WooCommerce notices: width 100% plus their padding stuck out of the page
   on phones. The padding goes inside the width. */
.woocommerce-info,
.woocommerce-message,
.woocommerce-error {
	box-sizing: border-box;
	max-width: 100%;
}

/* Our books ([cb_books]) and the buy button: books are sold at Cultural
   Experience. */
.cb-buy-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 48px;
	padding: 12px 22px;
	color: #fff !important;
	font-family: Poppins, sans-serif;
	font-size: 16px;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none !important;
	background: #a31647;
	border-radius: 999px;
	transition: background-color 0.15s ease;
}

.cb-buy-btn:hover,
.cb-buy-btn:focus-visible {
	background: #7f1037;
}

.cb-buy {
	margin: 8px 0 16px;
}

.cb-buy__note {
	margin: 10px 0 0;
	color: #5b6472;
	font-size: 14px;
}

.cb-books {
	display: grid;
	gap: 24px;
	max-width: 1140px;
	margin: 0 auto;
}

.cb-books--cards {
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}

.cb-book {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 18px;
	box-shadow: 0 6px 20px rgba(16, 24, 40, 0.06);
}

.cb-book__cover {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
	background: #f4f8fb;
}

.cb-book__cover img {
	width: auto;
	max-width: 100%;
	height: 220px;
	object-fit: contain;
}

.cb-book__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 20px 22px 24px;
}

.cb-book__title {
	margin: 0 0 4px;
	color: #1f2a37;
	font-family: Poppins, sans-serif;
	font-size: 21px;
	font-weight: 700;
	line-height: 1.25;
}

.cb-book__sub {
	margin: 0 0 12px;
	color: #1c95b8;
	font-size: 14px;
	font-weight: 600;
}

.cb-book__text {
	flex: 1;
	margin: 0 0 18px;
	color: #3d4451;
	font-size: 16px;
	line-height: 1.55;
}

.cb-book__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 18px;
	align-items: center;
}

.cb-book__more {
	color: #1c95b8;
	font-weight: 600;
}

/* Full rows (Our Books page): cover beside the text. */
.cb-books--rows {
	gap: 28px;
}

@media (min-width: 768px) {
	.cb-books--rows .cb-book {
		flex-direction: row;
	}

	.cb-books--rows .cb-book__cover {
		flex: 0 0 300px;
	}

	.cb-books--rows .cb-book__cover img {
		height: 260px;
	}

	.cb-books--rows .cb-book__body {
		justify-content: center;
		padding: 28px 32px;
	}

	.cb-books--rows .cb-book__text {
		flex: 0 1 auto;
	}
}

/* "Our family" block. */
.cb-family {
	max-width: 900px;
	margin: 0 auto;
	padding: 32px clamp(20px, 4vw, 40px);
	color: #3d4451;
	font-size: 17px;
	line-height: 1.6;
	background: #fff8e6;
	border-radius: 20px;
}

.cb-family__title {
	margin: 0 0 12px;
	color: #1f2a37;
	font-family: Poppins, sans-serif;
	font-size: 28px;
	font-weight: 700;
}

.cb-family p {
	margin: 0 0 12px;
}

.cb-family p:last-child {
	margin-bottom: 0;
}

.cb-family a {
	color: #a31647;
	font-weight: 600;
}

/* Blog posts: space after lists, phone and email links in the link color. */
.elementor-widget-theme-post-content .wp-block-list {
	margin-bottom: 1.2em;
}

.elementor-widget-theme-post-content p a[href^="tel:"],
.elementor-widget-theme-post-content p a[href^="mailto:"] {
	color: #a31647;
}

/* Discount codes of the month, next to the home carousel ([cbrw_deals]). */
.cbrw-deals {
	display: grid;
	gap: 8px;
	margin: 12px 0 0;
}

.cbrw-deal {
	margin: 0;
	padding: 10px 14px;
	color: #fff;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.35;
	text-align: center;
	background: #d62828;
	border-radius: 12px;
}

.cbrw-deal__code {
	display: inline-block;
	white-space: nowrap;
}

.cbrw-deal__code strong {
	padding: 1px 8px;
	color: #d62828;
	letter-spacing: .04em;
	background: #fff;
	border-radius: 6px;
}

/* Testimonials. */
.cb-quotes {
	max-width: 1140px;
	margin: 0 auto;
	padding: 8px 0;
}

.cb-quotes__title {
	margin: 0 0 24px;
	color: #1f2a37;
	font-family: Poppins, sans-serif;
	font-size: 28px;
	font-weight: 700;
	text-align: center;
}

.cb-quotes__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 20px;
}

.cb-quotes--1 .cb-quotes__grid {
	max-width: 760px;
	margin: 0 auto;
}

.cb-quote {
	position: relative;
	display: flex;
	flex-direction: column;
	margin: 0;
	padding: 44px 24px 24px;
	background: #fff8e6;
	border-radius: 20px;
}

.cb-quote::before {
	content: "\201C";
	position: absolute;
	top: 4px;
	left: 20px;
	color: #a31647;
	font-family: Georgia, serif;
	font-size: 64px;
	line-height: 1;
}

.cb-quote blockquote {
	flex: 1;
	margin: 0 0 16px;
	padding: 0;
	color: #3d4451;
	font-size: 17px;
	font-style: normal;
	line-height: 1.6;
	border: 0;
	background: none;
}

.cb-quote blockquote::before,
.cb-quote blockquote::after {
	content: none;
}

.cb-quote figcaption {
	color: #1f2a37;
	font-size: 15px;
	font-weight: 600;
}

.cb-quote figcaption::before {
	content: "— ";
}

/* Site footer (template-parts/footer-site.php) ------------------------- */
#Footer {
	background: none !important;
}

.cb-footer {
	position: relative;
	color: #3d4451;
	font-family: Poppins, sans-serif;
	background: #f2f7fa;
}

/* Brand stripe on top, as under the page banners. */
.cb-footer::before {
	content: "";
	display: block;
	height: 6px;
	background: linear-gradient(90deg, #f2c333 0 16.66%, #e8a33d 16.66% 33.33%, #c8164f 33.33% 50%, #951b81 50% 66.66%, #0e5887 66.66% 83.33%, #25b6bd 83.33% 100%);
}

.cb-footer__inner {
	display: grid;
	grid-template-columns: 1.45fr 1fr 1fr 1.15fr;
	gap: 40px;
	max-width: 1232px;
	margin: 0 auto;
	padding: 56px 24px 48px;
}

.cb-footer__logo img {
	display: block;
	width: 168px;
	height: auto;
}

.cb-footer__tagline {
	margin: 14px 0 18px;
	color: #0e5887;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.4;
}

.cb-footer ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.cb-footer__social {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.cb-footer__social a {
	display: grid;
	place-items: center;
	width: 36px;
	height: 36px;
	color: #fff !important;
	background: #0e5887;
	border-radius: 50%;
	transition: background-color .15s, transform .15s;
}

.cb-footer__social a:hover,
.cb-footer__social a:focus-visible {
	background: #a31647;
	transform: translateY(-2px);
}

.cb-footer__social svg {
	width: 17px;
	height: 17px;
	fill: currentColor;
}

.cb-footer__title {
	margin: 0 0 16px !important;
	padding: 0 !important;
	color: #0e5887 !important;
	font-family: Poppins, sans-serif !important;
	font-size: 14px !important;
	font-weight: 700 !important;
	line-height: 1.3 !important;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.cb-footer__col li {
	margin: 0 0 10px;
	font-size: 15px;
	font-weight: 400;
	line-height: 1.45;
}

.cb-footer__col a {
	color: #1f2a37 !important;
	text-decoration: none;
	transition: color .15s;
}

.cb-footer__col a:hover,
.cb-footer__col a:focus-visible {
	color: #a31647 !important;
	text-decoration: underline;
}

.cb-footer__contact a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-weight: 600;
}

.cb-footer__contact svg {
	width: 16px;
	height: 16px;
	fill: #0e5887;
}

.cb-footer__address {
	color: #5a6472;
}

a.cb-footer__cta {
	display: inline-block;
	margin-top: 6px;
	padding: 11px 24px;
	color: #fff !important;
	font-size: 15px;
	font-weight: 700;
	text-decoration: none !important;
	background: #a31647;
	border-radius: 999px;
	transition: background-color .15s;
}

a.cb-footer__cta:hover,
a.cb-footer__cta:focus-visible {
	color: #fff !important;
	background: #82102f;
}

.cb-footer__bar {
	background: #fff;
	border-top: 1px solid #e2e8ee;
}

.cb-footer__bar-inner {
	display: flex;
	flex-wrap: wrap;
	gap: 12px 24px;
	align-items: center;
	justify-content: space-between;
	max-width: 1232px;
	margin: 0 auto;
	padding: 18px 24px;
}

.cb-footer__bar p {
	margin: 0;
	color: #5a6472;
	font-size: 14px;
}

.cb-footer__bar a {
	color: #0e5887 !important;
}

.cb-footer__cards {
	width: auto !important;
	height: 36px !important;
	max-width: 100%;
}

@media (max-width: 1024px) {
	.cb-footer__inner {
		grid-template-columns: 1fr 1fr;
		gap: 32px 24px;
	}
}

/* Phones: one centred column; the two link lists side by side under a
   divider, and the contact details in a white card. */
@media (max-width: 767px) {
	.cb-footer__inner {
		gap: 28px 12px;
		padding: 36px 16px 28px;
		text-align: center;
	}

	.cb-footer__brand,
	.cb-footer__contact {
		grid-column: 1 / -1;
	}

	.cb-footer__logo img {
		width: 150px;
		margin: 0 auto;
	}

	.cb-footer__tagline {
		margin: 10px 0 16px;
	}

	.cb-footer__social {
		justify-content: center;
		gap: 8px;
	}

	.cb-footer__brand {
		padding-bottom: 28px;
		border-bottom: 1px solid #dbe5ec;
	}

	.cb-footer__title {
		margin-bottom: 12px !important;
		font-size: 13px !important;
		letter-spacing: .06em;
	}

	.cb-footer__col li {
		margin-bottom: 8px;
	}

	.cb-footer__contact {
		padding: 24px 20px;
		background: #fff;
		border-radius: 18px;
		box-shadow: 0 6px 18px rgba(14, 88, 135, .08);
	}

	.cb-footer__contact a {
		justify-content: center;
	}

	a.cb-footer__cta {
		display: block;
		max-width: 260px;
		margin: 14px auto 0;
	}

	.cb-footer__bar-inner {
		flex-direction: column;
		gap: 10px;
		padding: 16px 16px 76px; /* room for the back-to-top button */
		text-align: center;
	}

	.cb-footer__cards {
		height: 30px !important;
	}
}

/* Home top: the Belleza box as tall as the camp carousel beside it. Both
   columns scale with the page, so the box keeps the carousel's proportion
   (banners are 1875x909 in an 835px column next to a 397px one). */
@media (min-width: 1025px) {
	.elementor-9874 .elementor-element-84df5cf > .elementor-container {
		align-items: center !important;
	}

	.elementor-9874 .elementor-element-9288a50 > .elementor-widget-wrap {
		box-sizing: border-box;
		height: auto !important;
		aspect-ratio: 397 / 405; /* grows past it rather than cut the content */
		padding: 14px 22px !important;
		flex-direction: column;
		flex-wrap: nowrap !important;
		justify-content: center;
		align-content: center !important;
	}

	.elementor-9874 .elementor-element-9288a50 > .elementor-widget-wrap > .elementor-element {
		margin-top: 0 !important;
		margin-bottom: 4px !important;
	}

	/* Sizes follow the box: it stops growing at 1280px (397px wide), so do they. */
	.elementor-9874 .elementor-element-1a172e7 .elementor-heading-title {
		font-size: clamp(20px, 2.1vw, 27px) !important;
		line-height: 1.1 !important;
	}

	.elementor-9874 .elementor-element-b9a7566 .elementor-heading-title {
		font-size: clamp(42px, 4.3vw, 54px) !important;
		line-height: 1 !important;
	}

	.elementor-9874 .elementor-element-a3621c0 img {
		width: auto !important;
		height: auto !important;
		max-height: clamp(92px, 9.5vw, 122px) !important;
	}

	.elementor-9874 .elementor-element-23ee627 .elementor-heading-title {
		font-size: clamp(15px, 1.35vw, 17px) !important;
		line-height: 1.25 !important;
	}

	.elementor-9874 .elementor-element-1d2fdfa,
	.elementor-9874 .elementor-element-1d2fdfa a {
		font-size: 15px !important;
		line-height: 1.3 !important;
	}

	.elementor-9874 .elementor-element-4299ed8 .elementor-button {
		padding: 10px 22px !important;
		font-size: 16px !important;
	}
}

/* Home "Our camps": the two buttons side by side when they fit, and room
   under them inside the yellow box. */
.elementor-9874 .elementor-element-3f068ae > .elementor-widget-wrap {
	flex-wrap: wrap !important;
	align-content: center !important;
	column-gap: 12px;
	padding-top: 40px !important;
	padding-bottom: 32px !important;
}

.elementor-9874 .elementor-element-3c44bc0 {
	margin-top: 0 !important;
}

/* The photo fills the height of the yellow box, whatever the text needs. */
@media (min-width: 768px) {
	.elementor-9874 .elementor-element-964af0a > .elementor-container {
		align-items: stretch !important;
	}

	.elementor-9874 .elementor-element-4c04ee0 > .elementor-widget-wrap,
	.elementor-9874 .elementor-element-025bb5b,
	.elementor-9874 .elementor-element-025bb5b > .elementor-widget-container {
		height: 100%;
	}

	.elementor-9874 .elementor-element-025bb5b img {
		width: 100% !important;
		height: 100% !important;
		object-fit: cover;
	}
}

.elementor-9874 .elementor-element-2982fac,
.elementor-9874 .elementor-element-cbwinbtn {
	width: auto !important;
	margin-bottom: 10px !important;
}

.elementor-9874 .elementor-element-2982fac .elementor-button,
.elementor-9874 .elementor-element-cbwinbtn .elementor-button {
	font-size: clamp(16px, 1.45vw, 20px) !important;
	padding: 12px 20px !important;
}

/* Home: the two buttons under the H1. */
.cb-hero-ctas {
	display: flex;
	flex-wrap: wrap;
	gap: 12px 16px;
	justify-content: center;
	margin: 8px 0 4px;
}

.cb-hero-ctas a {
	display: inline-flex;
	align-items: center;
	min-height: 50px;
	padding: 12px 26px;
	color: #fff !important;
	font-family: Poppins, sans-serif;
	font-size: 17px;
	font-weight: 600;
	text-decoration: none !important;
	background: #a31647;
	border-radius: 999px;
}

.cb-hero-ctas a + a {
	background: #1c95b8;
}

.cb-hero-ctas a:hover,
.cb-hero-ctas a:focus-visible {
	filter: brightness(0.9);
}

.cb-section-link {
	margin: 20px 0 0;
	text-align: center;
}

.cb-section-link a {
	color: #1c95b8;
	font-weight: 600;
}

/* FAQ: the approved featured answer (QR songs). */
.cb-faq-feature {
	margin: 8px 0 20px;
	padding: 22px 24px;
	color: #3d4451;
	font-size: 16px;
	line-height: 1.6;
	background: #e2f7f9;
	border-left: 5px solid #1c95b8;
	border-radius: 14px;
}

.cb-faq-feature h3 {
	margin: 0 0 8px;
	color: #1f2a37;
	font-family: Poppins, sans-serif;
	font-size: 19px;
	font-weight: 700;
}

.cb-faq-feature p {
	margin: 0;
}

/* Resources page. */
.cb-res {
	max-width: 1140px;
	margin: 0 auto;
}

.cb-res-title {
	margin: 40px 0 8px;
	color: #1f2a37;
	font-family: Poppins, sans-serif;
	font-size: 28px;
	font-weight: 700;
	text-align: center;
}

.cb-res-lead {
	margin: 0 0 24px;
	color: #3d4451;
	font-size: 17px;
	text-align: center;
}

.cb-res-merch {
	display: grid;
	gap: 24px;
	align-items: center;
	max-width: 900px;
	margin: 16px auto 0;
	padding: 24px;
	color: #3d4451;
	font-size: 17px;
	background: #fff8e6;
	border-radius: 20px;
}

.cb-res-merch img {
	width: 100%;
	height: auto;
	border-radius: 14px;
}

@media (min-width: 768px) {
	.cb-res-merch {
		grid-template-columns: 320px 1fr;
	}
}

/* Libertad / Belleza landings: the longer buy button wraps instead of
   running off small screens. */
@media (max-width: 767px) {
	.elementor-element-55319d7 .elementor-button {
		max-width: calc(100vw - 32px);
		white-space: normal;
		text-align: center;
	}

	.elementor-element-88451ec h1 {
		overflow-wrap: anywhere;
	}
}

/* Book blocks on phones: on the 20px side margin of the Elementor sections. */
@media (max-width: 767px) {
	.cb-home-books,
	.cb-res,
	.cb-editorial-belleza,
	.cb-about-books {
		padding-right: 10px !important;
		padding-left: 10px !important;
	}

	.page-id-12393 .cb-books,
	.page-id-12393 .cb-family {
		margin-right: 10px;
		margin-left: 10px;
	}
}
