.upb-booking-form {
	max-width: 420px;
	margin: 1.5em 0;
	padding: 1.25em 1.5em;
	border: 1px solid #e2e4e7;
	border-radius: 8px;
	background: #fff;
}

.upb-booking-form__seats-info {
	margin-bottom: 1em;
	font-size: 0.95em;
}

.upb-booking-form__field {
	display: flex;
	flex-direction: column;
	gap: 0.35em;
	margin: 0 0 1em;
}

.upb-booking-form__field label {
	font-weight: 600;
}

.upb-booking-form__field input[type="number"] {
	width: 6em;
	padding: 0.4em 0.5em;
}

.upb-booking-form__field--text input[type="text"],
.upb-booking-form__field--textarea textarea,
.upb-booking-form__field--select select {
	width: 100%;
	padding: 0.4em 0.5em;
	box-sizing: border-box;
}

.upb-booking-form__choices {
	display: flex;
	flex-direction: column;
	gap: 0.3em;
}

.upb-booking-form__choice {
	font-weight: 400;
	display: flex;
	align-items: center;
	gap: 0.4em;
}

.upb-booking-form__required {
	color: #b32d2e;
}

.upb-booking-form__actions {
	margin: 16px 0 0;
}

.upb-booking-form__submit {
	display: inline-block;
	padding: 0.6em 1.4em;
	border: 0;
	border-radius: 4px;
	background: #1d61c4;
	color: #fff;
	font-size: 1em;
	text-align: center;
	cursor: pointer;
}

.upb-booking-form__submit:hover {
	background: #174d9c;
}

.upb-booking-form__submit[disabled] {
	background: #9aa4b2;
	cursor: not-allowed;
}

.upb-booking-form__message {
	margin-top: 12px;
}

/* 送信結果メッセージ欄：空のときはスペースを取らない（ボタン下の余白防止）。
   JSでメッセージが入ると自動的に表示され、上に余白が付きます。 */
.upb-booking-form__message:empty {
	display: none;
	margin-top: 0;
}

.upb-booking-form__message--success {
	color: #1a7f37;
	font-weight: 600;
}

.upb-booking-form__message--error {
	color: #b32d2e;
	font-weight: 600;
}

.upb-booking-form--unavailable,
.upb-booking-form--login,
.upb-booking-form--booked {
	color: #555;
}

/* Standalone status notice ([upb_event_status]). */
.upb-event-status {
	margin: 0.75em 0;
	padding: 0.85em 1.1em;
	border: 1px solid #e2e4e7;
	border-radius: 6px;
	background: #fff;
	text-align: center;
}

.upb-event-status.upb-status-accepting {
	border-color: #bbdfbb;
	color: #1a7f37;
}

.upb-event-status.upb-status-booked {
	border-color: #cfe3b8;
	background: #f4faef;
	color: #2c6b1f;
}

.upb-event-status.upb-status-upcoming {
	border-color: #bfdbfe;
	color: #1d61c4;
}

.upb-event-status.upb-status-closed,
.upb-event-status.upb-status-ended,
.upb-event-status.upb-status-full {
	border-color: #f0c4cf;
	color: #b32d2e;
}

.upb-event-status.upb-status-login_required {
	border-color: #f0c4cf;
	color: #9b3b46;
}

.upb-booking-form__hint {
	font-weight: 400;
	font-size: 0.85em;
	color: #6b7280;
}

.upb-booking-form.upb-status-upcoming {
	border-color: #bfdbfe;
}

.upb-booking-form.upb-status-closed,
.upb-booking-form.upb-status-ended {
	border-color: #e5d3b3;
}
