diff --git a/website/assets/css/main.css b/website/assets/css/main.css
index ca1d234..52a7ad7 100644
--- a/website/assets/css/main.css
+++ b/website/assets/css/main.css
@@ -559,4 +559,12 @@ main.container {
.home-poll:hover { border-color: var(--accent); }
.home-poll .pm { height: 1.1rem; width: auto; color: var(--accent); }
.home-poll .pm + .pm { color: #af6428; }
+/* Random left/right per visit — data-logo-order is set in head.html before first paint.
+ Every pair container is a grid/flex, so `order` swaps the columns without touching the DOM. */
+[data-logo-order="rm"] .poll-card[data-choice="m"],
+[data-logo-order="rm"] .show-cell.show-cell--m,
+[data-logo-order="rm"] .poll-final-card[data-choice="m"],
+[data-logo-order="mr"] .poll-card[data-choice="r"],
+[data-logo-order="mr"] .show-cell.show-cell--r,
+[data-logo-order="mr"] .poll-final-card[data-choice="r"] { order: 1; }
@media (prefers-reduced-motion: reduce) { .poll-bar i, .poll-btn { transition: none; } }
diff --git a/website/layouts/partials/head.html b/website/layouts/partials/head.html
index 4c83b53..f32076a 100644
--- a/website/layouts/partials/head.html
+++ b/website/layouts/partials/head.html
@@ -1,7 +1,11 @@
-
{{ if .IsHome }}{{ site.Title }} — {{ site.Params.description }}{{ else }}{{ .Title }} · {{ site.Title }}{{ end }}
+{{ if eq .Type "poll" }}{{/* Coin-flip which mark sits left/first, so neither side collects the
+ "first thing on the page" votes. Decided before first paint (no reflow), applied by CSS `order`,
+ and kept for the tab session so a reload or a vote doesn't shuffle the page under the visitor. */}}
+
+{{ end }}{{ if .IsHome }}{{ site.Title }} — {{ site.Params.description }}{{ else }}{{ .Title }} · {{ site.Title }}{{ end }}
diff --git a/website/layouts/poll/single.html b/website/layouts/poll/single.html
index ae1065a..cf83d34 100644
--- a/website/layouts/poll/single.html
+++ b/website/layouts/poll/single.html
@@ -1,7 +1,8 @@
{{ define "main" }}
{{- $p := .Params -}}
-{{- $M := site.Data.logo.m -}}
-{{- $R := site.Data.logo.r -}}
+{{/* Display order of the two marks; flip via `order: [r, m]` in front matter so neither
+ side gets the "first thing on the page" advantage for the whole poll. */}}
+{{- $order := $p.order | default (slice "m" "r") -}}
{{- $s := $p.show -}}