Seaborn has functionality to distribute categories into subplots. However, as far as I know, your data structure is not supported, so you would have to transform your dataframe first (I am happy to be proven wrong here). So, imho there is no point to this, and we can simply loop over the columns categories:
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
#style definition
sns.set_theme(style="darkgrid")
sns.set_palette("hls")
#data import, parsing dates, making category to a categorical variable
df = pd.read_csv("final_df.csv", sep=",", parse_dates=["Date"], dayfirst=True)
df.category=df.category.astype(str)
cols = ["Sales", "Spends", "mean_percentoff_bycategory"]
fig, axes = plt.subplots(len(cols), figsize=(12, 15))
for curr_ax, curr_col in zip(axes.flat, cols):
sns.lineplot(data=df, x="Date", y=curr_col, hue="category", ax=curr_ax)
plt.show()
Sample output (not sure this tells us much):
