diff --git a/README.md b/README.md
index 498e1c0..efd4cdd 100644
--- a/README.md
+++ b/README.md
@@ -35,6 +35,13 @@ For inserting magnets, check out [the jig](#jig).
- [Glued magnets](#glued-magnets)
- [Rounded corner frame](#rounded-corner-frame)
- [Solid frame](#solid-frame)
+ - [Click Latch](#click-latch)
+ - [Length](#length)
+ - [Distance](#distance)
+ - [Latch Strength](#latch-strength)
+ - [Latch Wall Strength](#latch-wall-strength)
+ - [Height](#height)
+ - [Steepness](#steepness)
- [Half-sized cells](#half-sized-cells)
- [Corner radius](#corner-radius)
- [Alignment](#alignment)
@@ -229,6 +236,80 @@ Using the `magnet_frame_style` option, you can change the magnet layer to be ful
+## Click Latch
+
+If you do not wish to use magnets, but still want a more secure fit for your bins, a click latch is an option. A click latch grips the bottom of the bin.
+
+> [!WARNING]
+> When a bin is placed on the baseplate, the click latch is under constant mechanical stress. This causes the plastic to deform over time ("creep"), reducing the grip strength. _PLA is very susceptible to this._ PETG is more resistant, but long-term tests are still scarce, so _consider this feature experimental_.
+
+
+
+
+There are various parameters you can use to tune the click latch mechanism.
+
+### Length
+
+The latch is composed of two arcs at each end, and an optional middle straight section. The total length of the latch is configured using the `click1_outer_length` property:
+
+
+
+
+The length of the straight section is configured using `click1_inner_length`, which is 0 by default (no straight section). Here is an example with a 20mm straight section:
+
+
+
+
+### Distance
+
+The `click1_distance` property changes the distance that the latch protudes into the bin area. A larger distance can increase grip strength, but makes the bin more difficult to place into the baseplate. Zero distance:
+
+
+
+
+5mm distance (don't do this):
+
+
+
+
+### Latch Strength
+
+The `click1_strength` property controls the thickness of the latch itself. This is measured from the very bottom of the latch which, if you look at the gridfinity specification, has a chamfer of 0.7mm, so the strength needs to be higher than this to get any reasonable latch height. Here's an example with `click1_strength=2.5` (and `click1_wall_strength=0`, or else there would not be enough space):
+
+
+
+
+### Latch Wall Strength
+
+The `click1_wall_strength` property controls the thickness of the wall behind the latch. This wall serves two purposes: It adds rigidity to the baseplate, and it prevents the click latch from bending too far. Note that the wall is measured per cell, so if you have two neighbouring cells, the actual wall thickness will be double this value. An example with `click1_wall_strength=2` (and reduced `click1_strength`):
+
+
+
+
+Setting the wall strength to 0 disables the backing wall entirely:
+
+
+
+
+### Height
+
+The `click1_height` property controls the height of the latch.
+
+
+
+
+### Steepness
+
+The arcs of the click latch follow a logistic curve, and `click1_steepness` changes the steepness of that curve. Steepness 0.1:
+
+
+
+
+Steepness 5:
+
+
+
+
## Half-sized cells
By default, if there isn't enough room for a full cell on the plate, GridFlock will attempt to fill up remaining space with half-sized cells.
diff --git a/docs/images/click1-distance-0.png b/docs/images/click1-distance-0.png
new file mode 100644
index 0000000..ca76402
Binary files /dev/null and b/docs/images/click1-distance-0.png differ
diff --git a/docs/images/click1-distance-5.png b/docs/images/click1-distance-5.png
new file mode 100644
index 0000000..7c28ba9
Binary files /dev/null and b/docs/images/click1-distance-5.png differ
diff --git a/docs/images/click1-height-0.5.png b/docs/images/click1-height-0.5.png
new file mode 100644
index 0000000..47040dc
Binary files /dev/null and b/docs/images/click1-height-0.5.png differ
diff --git a/docs/images/click1-inner-length-20.png b/docs/images/click1-inner-length-20.png
new file mode 100644
index 0000000..552b741
Binary files /dev/null and b/docs/images/click1-inner-length-20.png differ
diff --git a/docs/images/click1-outer-length-20.png b/docs/images/click1-outer-length-20.png
new file mode 100644
index 0000000..d01188d
Binary files /dev/null and b/docs/images/click1-outer-length-20.png differ
diff --git a/docs/images/click1-steepness-0.1.png b/docs/images/click1-steepness-0.1.png
new file mode 100644
index 0000000..1e12cb3
Binary files /dev/null and b/docs/images/click1-steepness-0.1.png differ
diff --git a/docs/images/click1-steepness-5.png b/docs/images/click1-steepness-5.png
new file mode 100644
index 0000000..7ec0e0a
Binary files /dev/null and b/docs/images/click1-steepness-5.png differ
diff --git a/docs/images/click1-strength-2.5.png b/docs/images/click1-strength-2.5.png
new file mode 100644
index 0000000..bf58dae
Binary files /dev/null and b/docs/images/click1-strength-2.5.png differ
diff --git a/docs/images/click1-wall-strength-0.png b/docs/images/click1-wall-strength-0.png
new file mode 100644
index 0000000..853ada9
Binary files /dev/null and b/docs/images/click1-wall-strength-0.png differ
diff --git a/docs/images/click1-wall-strength-2.png b/docs/images/click1-wall-strength-2.png
new file mode 100644
index 0000000..d509ec7
Binary files /dev/null and b/docs/images/click1-wall-strength-2.png differ
diff --git a/docs/images/click1.png b/docs/images/click1.png
new file mode 100644
index 0000000..6ae0d2f
Binary files /dev/null and b/docs/images/click1.png differ
diff --git a/editor.toml b/editor.toml
index 73059e8..51e301e 100644
--- a/editor.toml
+++ b/editor.toml
@@ -9,7 +9,7 @@ head-extra = '