Here are two methods to get the kind of coloring you want, I think.
library(ggplot2)
test <- read.csv("~/R/Play/Dummy.csv")
#change transparency (alpha) by group
ggplot(test) +
geom_bar(mapping = aes(x = interaction(date, genre, lex.order = TRUE),
fill = genre, color = genre, alpha = group),
position = "fill", width=0.7) +
geom_segment(mapping = aes(x=x,y=y, xend=xend, yend= yend),
data = data.frame(x=2.5, xend=2.5, y =0, yend = -0.2)) +
labs(y = "Percentage") +
theme_bw() +
theme(legend.position = "none",
plot.margin = unit(c(1, 1, 4, 1), "lines"),
axis.title.x = element_blank(),
axis.text.x = element_blank(),
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
axis.title = element_text(size=rel(1.5)), axis.text.y = element_text(size=rel(1.5))) +
annotate(geom = "text", x = 1:4, y = -0.05, label = c("diary", "journal", "diary", "journal"), size = 6) +
annotate(geom = "text", x = c(1.5, 3.5), y = -0.15, label = c("1778", "1782"), size = 7) +
coord_cartesian(ylim = c(-0.2, 1), expand = FALSE, clip = "off", xlim = c(0.5, 4.5)) +
scale_alpha_manual(values = c("s" = 1, "of" = 0.4))

#fill by interaction(genre, group)
ggplot(test) +
geom_bar(mapping = aes(x = interaction(date, genre, lex.order = TRUE),
fill = interaction(genre, group)),
position = "fill", width=0.7) +
geom_segment(mapping = aes(x=x,y=y, xend=xend, yend= yend),
data = data.frame(x=2.5, xend=2.5, y =0, yend = -0.2)) +
labs(y = "Percentage") +
theme_bw() +
theme(legend.position = "none",
plot.margin = unit(c(1, 1, 4, 1), "lines"),
axis.title.x = element_blank(),
axis.text.x = element_blank(),
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
axis.title = element_text(size=rel(1.5)), axis.text.y = element_text(size=rel(1.5))) +
annotate(geom = "text", x = 1:4, y = -0.05, label = c("diary", "journal", "diary", "journal"), size = 6) +
annotate(geom = "text", x = c(1.5, 3.5), y = -0.15, label = c("1778", "1782"), size = 7) +
coord_cartesian(ylim = c(-0.2, 1), expand = FALSE, clip = "off", xlim = c(0.5, 4.5)) +
scale_fill_manual(values = c(journal.s = "blue", journal.of = "skyblue",
diary.s = "firebrick3", diary.of = "firebrick1"))

Created on 2021-01-27 by the reprex package (v0.3.0)