/* ================================== Form ================================ */

.bb-form {
	padding: 34px 34px 36px;
	border-radius: var(--bb-radius-lg);
	background: #fff;
	box-shadow: var(--bb-shadow);
}

.bb-form--cream {
	background: var(--bb-cream);
	box-shadow: none;
}

.bb-form--plain {
	padding: 0;
	background: transparent;
	border-radius: 0;
	box-shadow: none;
}

.bb-form--dark {
	background: var(--bb-navy-2);
	box-shadow: none;
}

.bb-form--dark .bb-form__label,
.bb-form--dark .bb-sec-head__title {
	color: #fff;
}

.bb-form--dark .bb-sec-head__subtitle,
.bb-form--dark .bb-form__check span {
	color: rgba(255, 255, 255, .75);
}

.bb-form--dark .bb-form__control {
	background: rgba(255, 255, 255, .06);
	border-color: rgba(255, 255, 255, .18);
	color: #fff;
}

.bb-form--dark .bb-form__control::placeholder {
	color: rgba(255, 255, 255, .45);
}

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

.bb-form__grid {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
}

/* Width comes from the per-field control; the calc keeps the gap correct. */
.bb-form__row {
	--bb-w: 100;

	display: flex;
	flex-direction: column;
	gap: 7px;
	flex: 0 0 calc(var(--bb-w) * 1% - 16px + (16px * var(--bb-w) / 100));
	min-width: 0;
}

.bb-form__label {
	color: var(--bb-heading);
	font-size: 14px;
	font-weight: 600;
}

.bb-form__req {
	color: var(--bb-saffron);
	margin-left: 2px;
}

.bb-form__control {
	width: 100%;
	padding: 12px 15px;
	border: 1.5px solid var(--bb-border);
	border-radius: 10px;
	background: #fff;
	color: var(--bb-heading);
	font-family: inherit;
	font-size: 15px;
	line-height: 1.5;
	transition: border-color .2s var(--bb-ease), box-shadow .2s var(--bb-ease);
}

.bb-form__control::placeholder {
	color: #9aa4b2;
}

.bb-form__control:focus {
	outline: none;
	border-color: var(--bb-saffron);
	box-shadow: 0 0 0 3px rgba(232, 149, 43, .18);
}

textarea.bb-form__control {
	resize: vertical;
	min-height: 120px;
}

select.bb-form__control {
	appearance: none;
	background-repeat: no-repeat;
	background-position: right 15px center;
	background-size: 12px;
	padding-right: 40px;
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%234A5568' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E");
}

/* ---------------------------------------------------------------- errors */

.bb-form__error {
	display: none;
	color: #C0392B;
	font-size: 12.5px;
	line-height: 1.4;
}

.bb-form__row.has-error .bb-form__error {
	display: block;
}

.bb-form__row.has-error .bb-form__control {
	border-color: #C0392B;
	background: #FEF6F5;
}

/* --------------------------------------------------------------- checkbox */

.bb-form__check {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	cursor: pointer;
}

.bb-form__check input {
	width: 18px;
	height: 18px;
	margin-top: 2px;
	accent-color: var(--bb-saffron);
	flex: none;
}

.bb-form__check span {
	color: var(--bb-body);
	font-size: 13.5px;
	line-height: 1.6;
}

/* ---------------------------------------------------------------- notices */

.bb-form__notice {
	display: none;
	margin-bottom: 18px;
	padding: 13px 18px;
	border-radius: 10px;
	font-size: 14.5px;
	line-height: 1.6;
}

.bb-form__notice.is-visible {
	display: block;
}

.bb-form__notice--success {
	background: #ECF8F0;
	border-left: 4px solid #2E9E5B;
	color: #1E6B3D;
}

.bb-form__notice--error {
	background: #FDF0EE;
	border-left: 4px solid #C0392B;
	color: #922B21;
}

/* ----------------------------------------------------------------- submit */

.bb-form__row--submit {
	flex-direction: row;
	align-items: center;
	gap: 14px;
	margin-top: 4px;
}

.bb-btn--full {
	width: 100%;
}

.bb-form__spinner {
	display: none;
	width: 20px;
	height: 20px;
	border: 2.5px solid var(--bb-border);
	border-top-color: var(--bb-saffron);
	border-radius: 50%;
	animation: bb-spin .7s linear infinite;
}

.bb-form.is-sending .bb-form__spinner {
	display: block;
}

.bb-form.is-sending button[type="submit"] {
	opacity: .65;
	pointer-events: none;
}

@keyframes bb-spin {
	to { transform: rotate(360deg); }
}

/* --------------------------------------------------------------- honeypot */

.bb-form__trap {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}

/* ------------------------------------------------------------ breakpoints */

@media (max-width: 767px) {
	.bb-form {
		padding: 24px 20px 26px;
	}

	.bb-form--plain {
		padding: 0;
	}

	.bb-form__row {
		flex: 0 0 100%;
	}
}
