.spin-cf7 {
	max-width: 880px;
	margin: 0 auto;
	padding: clamp(1.25rem, 2.5vw, 2rem);
	border: 1px solid #eadbf5;
	border-radius: 14px;
	background: #fff;
	position: relative;
	overflow: hidden;
}

.spin-cf7::before,
.spin-cf7::after {
	content: "";
	position: absolute;
	border-radius: 50%;
	content: none;
	background-size: cover;
	background-repeat: no-repeat;
	pointer-events: none;
}

.spin-cf7::before {
	top: -48px;
	right: -40px;
	width: 170px;
	height: 170px;
	opacity: 0.06;
}

.spin-cf7::after {
	left: -24px;
	bottom: -24px;
	width: 110px;
	height: 110px;
	opacity: 0.05;
}

.spin-cf7__head {
	margin: 0 0 1.25rem;
	padding: 0.85rem 1rem 0.65rem;
	border-radius: 12px;
	text-align: center;
	color: var(--color_main_dark);
	/* background:
		linear-gradient(125deg, rgba(251, 247, 255, 0.98) 0%, rgba(236, 224, 249, 0.9) 56%, rgba(192, 153, 225, 0.72) 100%),
		var(--spin-top-heading-bg); */
	background-position: center;
	background-size: cover;
	border: 1px solid var(--color_main_thin);
	/* box-shadow: 0 6px 14px rgba(90, 47, 124, 0.1); */
	position: relative;
	overflow: hidden;
}

.spin-cf7__head::before,
.spin-cf7__head::after {
	content: "";
	position: absolute;
	top: 50%;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	content: none;
	background-size: cover;
	background-repeat: no-repeat;
	opacity: 0.28;
	pointer-events: none;
}

.spin-cf7__head::before {
	left: 10px;
	transform: translateY(-50%) rotate(-8deg);
}

.spin-cf7__head::after {
	right: 10px;
	transform: translateY(-50%) rotate(8deg);
}

.spin-cf7__title {
	margin: 0;
	font-size: clamp(1.35rem, 2.4vw, 1.8rem);
	font-weight: 800;
	line-height: 1.25;
	letter-spacing: 0.01em;
	color: var(--color_main_dark);
	text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);
	position: relative;
	z-index: 1;
}

.spin-cf7__sub {
	margin: 0.2rem 0 0;
	font-size: 0.78rem;
	font-weight: 800;
	color: var(--color_main_dark);
	letter-spacing: 0.16em;
	text-shadow: 0 1px 0 rgba(255, 255, 255, 0.68);
	position: relative;
	z-index: 1;
}

.spin-cf7__row + .spin-cf7__row {
	margin-top: 1rem;
}

.spin-cf7__label {
	display: block;
	margin: 0 0 0.38rem;
	font-size: 0.95rem;
	font-weight: 700;
	color: #4b3c4f;
}

.spin-cf7__required {
	display: inline-block;
	margin-left: 0.45rem;
	padding: 0.15rem 0.45rem;
	border-radius: 999px;
	font-size: 0.72rem;
	font-weight: 700;
	line-height: 1;
	color: #fff;
	background: var(--color_main);
}

.spin-cf7__input,
.spin-cf7__select,
.spin-cf7__textarea {
	display: block;
	width: 100%;
	padding: 0.72rem 0.88rem;
	border: 1px solid #e2d0f0;
	border-radius: 10px;
	font-size: 1rem;
	line-height: 1.5;
	color: #4b3c4f;
	background: #fff;
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.spin-cf7__textarea {
	min-height: 180px;
	resize: vertical;
}

.spin-cf7__input:focus,
.spin-cf7__select:focus,
.spin-cf7__textarea:focus {
	outline: none;
	border-color: var(--color_main);
	box-shadow: 0 0 0 3px rgba(210, 75, 132, 0.16);
}

.spin-cf7__actions {
	margin-top: 1.4rem;
	text-align: center;
	--the-fz: 1rem;
	--the-min-width: 220px;
	--the-padding: 0.75em 1.5em;
	--the-btn-color: var(--color_main);
	--the-btn-bg: var(--the-btn-color);
}

.spin-cf7__submit {
	-webkit-appearance: none;
	appearance: none;
	display: inline-block;
	min-width: var(--the-min-width);
	padding: var(--the-padding);
	border: 0;
	border-radius: var(--the-btn-radius, 0);
	font-size: var(--the-fz);
	font-weight: 700;
	line-height: 1.5;
	letter-spacing: var(--swl-letter_spacing, 1px);
	color: #fff;
	background: var(--the-btn-bg);
	box-shadow: var(--swl-btn_shadow);
	cursor: pointer;
	transition: box-shadow 0.25s ease, opacity 0.25s ease;
}

.spin-cf7__submit::before {
	content: none;
}

.spin-cf7__submit:hover,
.spin-cf7__submit:focus {
	color: #fff;
	background: var(--the-btn-bg);
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1), 0 12px 24px -12px rgba(0, 0, 0, 0.2);
	opacity: 1;
}

.spin-cf7 .wpcf7-not-valid-tip {
	margin-top: 0.35rem;
	font-size: 0.8rem;
}

.spin-cf7 .wpcf7-response-output {
	margin: 1rem 0 0;
	border-radius: 10px;
	font-size: 0.92rem;
}

.spin-cf7 .wpcf7-spinner {
	margin: 0.5rem 0 0 0.4rem;
}
