diff --git a/content/posts/reviews/movies/barbie/barbie.jpg b/content/posts/reviews/movies/barbie/barbie.jpg
new file mode 100644
index 00000000..c419b500
Binary files /dev/null and b/content/posts/reviews/movies/barbie/barbie.jpg differ
diff --git a/content/posts/reviews/movies/barbie/index.md b/content/posts/reviews/movies/barbie/index.md
new file mode 100644
index 00000000..ba2d2cd3
--- /dev/null
+++ b/content/posts/reviews/movies/barbie/index.md
@@ -0,0 +1,18 @@
+---
+title: Barbie
+type: review
+date: 2023-07-29T07:51:48+01:00
+emoji: 🍿
+---
+
+{{< film "Barbie" "2023" "https://www.themoviedb.org/movie/346698-barbie" "barbie.jpg" >}}
+
+This was an _excellent_ film that left me emotionally stretched in just the right way. This is an adult movie with childhood references (not a kids' film at all), and seems pitched at people roughly my age (the Goo Goo Dolls referenced as a track for wooing is too close for comfort!) It _superly_ voices the internal contradictions women need to navigate to be accepted. It works hard not to centre Ken, even while his role is a critical counterpoint, but also gives a little airtime to how much a male-dominated world makes it hard to be a man too.
+
+{{% spoiler "tmdb:346698" %}}In fact using Ken — an obviously one-dimensional doll of a man — as the very literal face of the very literal patriarchy neatly sidesteps any "but not all men" reactions getting in the way of the message. (I think they also rolled in some [incel](https://en.wikipedia.org/wiki/Incel) representation into his persona, giving him his own mini-arc to self-understanding and maturity.){{%/ spoiler %}}
+
+The writing is out of this world, the pacing is spot on, and Margot Robbie utterly _nails_ the role — especially the emotional and physical aspects of being a doll in a way that playfully nods to the many ways that children play with Barbie.
+
+{{% spoiler "tmdb:346698" %}}I remember wondering on a few occsaions how the plot was going to resolve without requiring Ken to "win", be "defeated", or overly-centred. I shouldn't have worried; the battle and show number, followed by Ken being very emotionally mature while he faces his immaturity towards his relationship with Barbie was excellent!{{%/ spoiler %}}
+
+It's a wonderful film that I'd encourage everyone to see. It's _hard_ to watch, as man — feeling responsible for so many challenges women face — but Barbie doesn't judge, it voices. It's a message that informs me, helps me, as well as entertaining me, but it isn't meant for _me_; the extent to which Yvette felt seen, understood and perfectly spoken on behalf of _is_ this movie, and why it deserves all the praise it's getting.
diff --git a/layouts/partials/film.html b/layouts/partials/film.html
new file mode 100644
index 00000000..5ea43bfd
--- /dev/null
+++ b/layouts/partials/film.html
@@ -0,0 +1,12 @@
+
+
+ {{ $title := .title }}
+ {{ with .cover }}
+
+ {{ end}}
+
+
+
+ {{ .title }} ({{ .year }})
+
+
diff --git a/layouts/shortcodes/film.html b/layouts/shortcodes/film.html
new file mode 100644
index 00000000..271768c7
--- /dev/null
+++ b/layouts/shortcodes/film.html
@@ -0,0 +1 @@
+{{ partial "film.html" (dict "title" (.Get 0) "year" (.Get 1) "url" (.Get 2) "cover" (.Page.Resources.Get (.Get 3))) }}
diff --git a/layouts/shortcodes/spoiler.html b/layouts/shortcodes/spoiler.html
new file mode 100644
index 00000000..9187e489
--- /dev/null
+++ b/layouts/shortcodes/spoiler.html
@@ -0,0 +1,4 @@
+
+ Show spoiler paragraph
+
{{ .Page.RenderString .Inner }}
+
diff --git a/themes/hello-friend-ng/assets/scss/_main.scss b/themes/hello-friend-ng/assets/scss/_main.scss
index fd420e40..47efcc77 100644
--- a/themes/hello-friend-ng/assets/scss/_main.scss
+++ b/themes/hello-friend-ng/assets/scss/_main.scss
@@ -131,7 +131,7 @@ a[href^="https://web.archive.org/"] {
text-decoration: none;
}
-main p a, main li a, nav a, .social a, section a, .accented, .banner-404 a, .syndication a, figcaption a {
+a:not(.noaccent) {
&:hover {
color: var(--accent);
}
@@ -141,6 +141,10 @@ main p a, main li a, nav a, .social a, section a, .accented, .banner-404 a, .syn
transition-timing-function: ease-in;
}
+a.noaccent {
+ text-decoration: none;
+}
+
img.profile {
float: left;
height: 3em;
diff --git a/themes/hello-friend-ng/assets/scss/_single.scss b/themes/hello-friend-ng/assets/scss/_single.scss
index 0eb2f854..dbc5f08b 100644
--- a/themes/hello-friend-ng/assets/scss/_single.scss
+++ b/themes/hello-friend-ng/assets/scss/_single.scss
@@ -257,14 +257,18 @@
}
}
-.book {
+.book, .film {
max-width: 180px;
float: right;
text-align: right;
margin: 0 0 16px 16px;
+ // A hack to prevent spoilers from going over the link
+ position: relative;
+ z-index: 10;
img {
width: 100%;
+ height: auto;
}
.authors {
@@ -285,4 +289,28 @@
}
}
}
+}
+
+details.spoiler {
+ position: relative;
+
+ p:first-of-type {
+ margin-top: 0;
+ }
+ p:last-of-type {
+ margin-bottom: 0;
+ }
+
+ &[closed] {
+ display: inline;
+ }
+
+ & > summary {
+ color: $light-color-secondary;
+ cursor: pointer;
+ }
+
+ &[open] > summary {
+ display: none;
+ }
}
\ No newline at end of file
diff --git a/themes/hello-friend-ng/layouts/_default/single.html b/themes/hello-friend-ng/layouts/_default/single.html
index 12b3ed6a..f1964e30 100644
--- a/themes/hello-friend-ng/layouts/_default/single.html
+++ b/themes/hello-friend-ng/layouts/_default/single.html
@@ -18,7 +18,7 @@