constitution · epochs · watch · epoch 3

comparison

c_6864b1ca8ce6 (tommy-mor) vs c_e4fb43f04791 (tommy-mor)

download prompt · raw event · cmp_cec9766dddcefc

council reasoning

~anthropic/claude-sonnet-latest · winner B · 6:4 · permalink

Side B includes an actual code fix in garden.rs (removing a wrapping <section> shell that likely fixed a layout/DOM bug), plus consistent CSS improvements (rank counter styling) applied across three themes with matching logic. Side A is purely cosmetic CSS tweaks (padding, colors, borders) duplicated across two theme files with no functional/behavioral change, making B's combination of a real markup fix plus coordinated styling slightly more substantive.

~x-ai/grok-latest · winner A · 3:1 · permalink

A delivers lasting vote UI polish: real button chrome, focus-visible rings, form/control styling, and a full retro-craft ontology/vote-compare theme that was missing. B only unwraps the vote-compare-shell div and enlarges ranking counters—useful but narrower cosmetic/structural tweaks.

openai/gpt-chat-latest · winner A · 4:1 · permalink

Side A substantially improves the voting UI across both default and retro-craft themes by adding consistent styling, focus-visible accessibility, clearer interactive states, form controls, and layout refinements for the vote-compare page and pin controls. Side B mainly removes the unnecessary `vote-compare-shell` wrapper from the HTML and adjusts ranking-number CSS (larger counter styling), which is a comparatively modest structural cleanup and visual tweak with less lasting impact.

sides

A — c_6864b1ca8ce6 (tommy-mor)

message

[51e73d38] voting looks better?

diff preview

diff --git a/server/static/theme_default.css b/server/static/theme_default.css
index 5f60ff7a8cf9045d8d43228baad8ba80ad057f2a..ec0fbe7acee0aa2802f978f14a9b0fc86e78c5b8 100644
--- a/server/static/theme_default.css
+++ b/server/static/theme_default.css
@@ -844,18 +844,25 @@ a.ont-vote-compare-btn {
   color: var(--ui);
   cursor: pointer;
   font-size: 11px;
-  padding: 2px 8px;
+  padding: 3px 10px;
   text-decoration: none;
   display: inline-flex;
   align-items: center;
   gap: 4px;
   font-family: inherit;
+  border-radius: 2px;
 }
 button.ont-pin-btn:hover,
 a.ont-vote-compare-btn:hover { color: var(--signal); }
+button.ont-pin-btn:focus-visible,
+a.ont-vote-compare-btn:focus-visible {
+  outline: 2px solid var(--link);
+  outline-offset: 2px;
+}
 button.ont-pin-btn-active {
   border-color: var(--link);
   color: var(--signal);
+  background: color-mix(in srgb, var(--link) 12%, var(--g4));
 }
 .ont-garden-child-actions {
   display: inline-flex;
@@ -868,12 +875,33 @@ a.ont-garden-vote-ico,
 span.ont-garden-pinned-here {
   font-size: 13px;
   line-height: 1;
-  padding: 0 2px;
-  border: none;
-  background: transparent;
+  padding: 2px 6px;
+  min-width: 26px;
+  min-height: 26px;
+  box-sizing: border-box;
+  border: var(--bv) solid;
+  border-color: var(--hi) var(--lo) var(--lo) var(--hi);
+  border-radius: 2px;
+  background: var(--g3);
   cursor: pointer;
   text-decoration: none;
   color: inherit;
+  display: inline-flex;
+  align-items: center;
+  justify-content: center;
+}
+a.ont-garden-vote-ico:hover {
+  color: var(--signal);
+  background: var(--g4);
+}
+span.ont-garden-pinned-here {
+  border-color: var(--link);
+  color: var(--signal);
+  cursor: default;
+}
+button.ont-garden-pin-ico:focus-visible {
+  outline: 2px solid var(--link);
+  outline-offset: 2px;
 }
 body.view-ontology-light ol.ont-ranking-list li,
 body.view-ontology-light ul.ont-group-list li {
@@ -889,8 +917,19 @@ body.view-ontology-light ul.ont-group-list li .item-link {
 
 /* Vote compare page */
 .vote-compare-shell {
-  margin: 12px 0;
+  margin: 12px 0 20px;
   max-width: 720px;
+  padding: 14px 16px 18px;
+  background: var(--g2);
+  border: var(--bv-lg) solid;
+  border-color: var(--hi) var(--lo) var(--lo) var(--hi);
+}
+body.view-vote-compare .vote-compare-shell > h2 {
+  margin-top: 0;
+  font-size: 12px;
+  letter-spacing: 0.12em;
+  text-transform: uppercase;
+  color: var(--meta);
 }
 .vote-compare-pair {
   display: flex;
@@ -899,12 +938,20 @@ body.view-ontology-light ul.ont-group-list li .item-link {
   gap: 10px 16px;
   margin: 10px 0;
 }
+.vote-compare-item {
+  text-decoration: none;
+}
 .vote-compare-item code {
   font-size: 13px;
 }
+.vote-compare-item:hover code {
+  color: var(--signal);
+}
 .vote-compare-vs {
   color: var(--meta);
-  font-size: 12px;
+  font-size: 11px;
+  letter-spacing: 0.1em;
+  text-transform: uppercase;
 }
 .vote-compare-slider-label {
   display: flex;
@@ -917,7 +964,7 @@ body.view-ontology-light ul.ont-group-list li .item-link {
 #vote-preference-slider {
   flex: 1 1 180px;
   min-width: 120px;
-  accent-color: var(--ui);
+  accent-color: var(--link);
 }
 .vote-thread-picker {
   margin: 10px 0;
@@ -931,9 +978,17 @@ body.view-ontology-light ul.ont-group-list li .item-link {
 }
 #vote-thread-select {
   min-width: 160px;
+  background: var(--g3);
+  border: var(--bv) solid;
+  border-color: var(--hi) var(--lo) var(--lo) var(--hi);
+  color: var(--ui);
+  font-size: 12px;
+  padding: 3px 8px;
 }
 #vote-edge-history-region {
   margin: 14px 0 18px;
+  padding-bottom: 8px;
+  border-bottom: 1px dashed var(--lo);
 }
 .vote-compare-preview-wrap {
   margin: 12px 0;
@@ -946,8 +1001,37 @@ body.view-ontology-light ul.ont-group-list li .item-link {
 #vote-compare-preview {
   min-height: 48px;
 }
+.vote-explain-label {
+  display: block;
+  font-size: 12px;
+  color: var(--meta);
+  margin: 12px 0 4px;
+}
+body.view-vote-compare #vote-explain {
+  width: 100%;
+  max-width: 100%;
+  box-sizing: border-box;
+  background: var(--g3);
+  border: var(--bv) solid;
+  border-color: var(--hi) var(--lo) var(--lo) var(--hi);
+  color: var(--prose);
+  font: inherit;
+  line-height: 1.45;
+  padding: 8px 10px;
+}
+body.view-vote-compare #vote-explain:focus {
+  outline: none;
+  border-color: var(--link);
+  box-shadow: 0 0 0 2px color-mix(in srgb, var(--link) 22%, transparent);
+}
+body.view-vote-compare #vote-compare-form button[type="submit"] {
+  margin-top: 6px;
+}
 .vote-edge-history-title {
-  font-size: 13px;
+  font-size: 12px;
+  letter-spacing: 0.06em;
+  text-transform: uppercase;
+  color: var(--meta);
   margin: 16px 0 8px;
 }
 ol.vote-edge-history {
@@ -968,6 +1052,8 @@ li.vote-edge-history-row {
 .vote-edge-bar {
   margin-top: 4px;
   max-width: 100%;
+  border-radius: 2px;
+  overflow: hidden;
 }
 .vote-edge-reason {
   margin-top: 4px;
diff --git a/server/static/theme_retro_craft.css b/server/static/theme_retro_craft.css
index 3853e9edaf4c77c62dcf350ff28920448dd943a8..092d4b3540b052cc86870179e4c264541c4446cc 100644
--- a/server/static/theme_retro_craft.css
+++ b/server/static/theme_retro_craft.css
@@ -587,3 +587,337 @@ body.view-ontology #controls {
     padding-right: 1.25rem;
   }
 }
+
+/* ----------------------------------------------------------------
+   Ontology garden: pin HUD, row pins, vote-compare
+   (Global craft `code` + `button[type=submit]` are tuned for dark
+   thread pages; these overrides match the cream ontology shell.)
+   ---------------------------------------------------------------- */
+body.view-ontology #slug-pin-hud.slug-pin-hud {
+  margin-left: auto;
+  max-width: min(42vw, 280px);
+  font-family: var(--font-ui);
+  font-size: 0.72rem;
+  color: #5c574e;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+body.view-ontology .slug-pin-hud-link {
+  color: #1a4a8c;
+  text-decoration: none;
+  display: inline-flex;
+  align-items: center;
+  gap: 0.25rem;
+}
+body.view-ontology .slug-pin-hud-link:hover {
+  color: #0d3d82;
+  text-decoration: underline;
+}
+body.view-ontology .slug-pin-hud-glyph {
+  font-size: 0.95rem;
+  line-height: 1;
+}
+
+body.view-ontology .ont-item-meta {
+  flex-wrap: wrap;
+  align-items: center;
+  gap: 0.35rem;
+}
+body.view-ontology .ont-item-title {
+  flex: 1 1 auto;
+  min-width: 0;
+}
+body.view-ontology .ont-item-pin-zone {
+  flex: 0 0 auto;
+  margin-left: auto;
+  display: flex;
+  align-items: center;
+  gap: 0.4rem;
+}
+
+body.view-ontology button.ont-pin-btn,
+body.view-ontology a.ont-vote-compare-btn {
+  background: #ebe6dc;
+  border: 1px solid #c8c4bc;
+  border-radius: 2px;
+  color: #3d3a34;
+  cursor: pointer;
+  font-family: var(--font-ui);
+  font-size: 0.72rem;
+  letter-spacing: 0.04em;
+  padding: 0.25rem 0.55rem;
+  text-decoration: none;
+  display: inline-flex;
+  align-items: center;
+  gap: 0.3rem;
+}
+body.view-ontology button.ont-pin-btn:hover,
+body.view-ontology a.ont-vote-compare-btn:hover {
+  border-color: #a68e6b;
+  color: #1a1814;
+}
+body.view-ontology button.ont-pin-btn-active {
+  border-color: #1a4a8c;
+  background: color-mix(in srgb, #1a4a8c 12%, #ebe6dc);
+  color: #0d2d5c;
+}
+body.view-ontology button.ont-pin-btn:focus-visible,
+body.view-ontology a.ont-vote-compare-btn:focus-visible {
+  outline: 2px solid #1a4a8c;
+  outline-offset: 2px;
+}
+
+body.view-ontology .ont-garden-child-actions {
+  display: inline-flex;
+  align-items: center;
+  margin-right: 0.35rem;
+  vertical-align: middle;
+  gap: 0.1rem;
+}
+body.view-ontology button.ont-garden-pin-ico,
+body.view-ontology a.ont-garden-vote-ico,
+body.view-ontology span.ont-garden-pinned-here {
+  font-size: 0.95rem;
+  line-height: 1;
+  padding: 0.1rem 0.35rem;
+  min-width: 1.65rem;
+  min-height: 1.65rem;
+  display: inline-flex;
+  align-items: center;
+  justify-content: center;
+  border: 1px solid #c8c4bc;
+  border-radius: 2px;
+  background: #f7f3eb;
+  cursor: pointer;
+  text-decoration: none;
+  color: #1a1814;
+}
+body.view-ontology a.ont-garden-vote-ico:hover {
+  border-color: #a68e6b;
+  background: #ebe6dc;
+}
+body.view-ontology span.ont-garden-pinned-here {
+  border-color: #1a4a8c;
+  background: color-mix(in srgb, #1a4a8c 10%, #f7f3eb);
+  cursor: default;
+}
+body.view-ontology form.ont-garden-pin-form {
+  display: inline;
+  margin: 0;
+  padding: 0;
+}
+body.view-ontology button.ont-garden-pin-ico:focus-visible {
+  outline: 2px solid #1a4a8c;
+  outline-offset: 2px;
+}
+
+body.view-ontology ol.ont-ranking-list li,
+body.view-ontology ul.ont-group-list li {
+  display: flex;
+  align-items: baseline;
+  gap: 0.35rem;
+}
+body.view-ontology ol.ont-ranking-list li .item-link,
+body.view-ontology ul.ont-group-list li .item-link {
+  flex: 1;
+  min-width: 0;
+}
+
+body.view-ontology code,
+body.view-ontology .vote-compare-item code,
+body.view-ontology .vote-edge-meta code {
+  background: #ebe6dc;
+  color: #1a1814;
+  border: 1px solid #d4cfc4;
+  padding: 0.12em 0.35em;
+  font-size: 0.88em;
+}
+
+body.view-ontology div.ratio-bar {
+  background: #e3ded4;
+  border: 1px solid #c8c4bc;
+}
+body.view-ontology div.ratio-left,
+body.view-ontology div.ratio-right {
+  background: #cec9bf;
+}
+body.view-ontology div.ratio-left.current,
+body.view-ontology div.ratio-right.current {
+  background: #9a7b4a;
+}
+
+body.view-ontology.view-vote-compare .vote-compare-shell {
+  margin: 0.75rem 0 1.5rem;
+  max-width: 36rem;
+  padding: 0.85rem 1rem 1.1rem;
+  background: #f7f3eb;
+  border: 1px solid #c8c4bc;
+  border-radius: 3px;
+  box-shadow: 0 1px 0 rgba(26, 24, 20, 0.06);
+}
+body.view-ontology.view-vote-compare .vote-compare-shell > h2 {
+  margin-top: 0;
+  font-size: 0.7rem;
+  letter-spacing: 0.16em;
+  text-transform: uppercase;
+  color: #5c574e;
+}
+body.view-ontology .vote-compare-pair {
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+  gap: 0.65rem 1rem;
+  margin: 0.65rem 0 0.85rem;
+}
+body.view-ontology .vote-compare-vs {
+  color: #8a857a;
+  font-family: var(--font-ui);
+  font-size: 0.72rem;
+  letter-spacing: 0.1em;
+  text-transform: uppercase;
+}
+body.view-ontology .vote-compare-item {
+  text-decoration: none;
+}
+body.view-ontology .vote-compare-item:hover code {
+  border-color: #a68e6b;
+  background: #f0ebe3;
+}
+
+body.view-ontology .vote-thread-picker {
+  margin: 0.85rem 0;
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+  gap: 0.5rem 0.75rem;
+}
+body.view-ontology .vote-thread-picker-label {
+  font-family: var(--font-ui);
+  font-size: 0.72rem;
+  letter-spacing: 0.08em;
+  text-transform: uppercase;
+  color: #5c574e;
+}
+body.view-ontology #vote-thread-select {
+  min-width: 10rem;
+  background: #f7f3eb;
+  border: 1px solid #c8c4bc;
+  color: #1a1814;
+  font-family: var(--font-ui);
+  font-size: 0.78rem;
+  padding: 0.3rem 0.45rem;
+}
+
+body.view-ontology .vote-compare-slider-label {
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+  gap: 0.5rem 0.65rem;
+  margin: 0.85rem 0;
+  font-family: var(--font-ui);
+  font-size: 0.72rem;
+  color: #5c574e;
+}
+body.view-ontology #vote-preference-slider {
+  flex: 1 1 11rem;
+  min-width: 8rem;
+  accent-color: #9a7b4a;
+}
+
+body.view-ontology .vote-explain-label {
+  display: block;
+  font-family: var(--font-ui);
+  font-size: 0.72rem;
+  letter-spacing: 0.08em;
+  text-transform: uppercase;
+  color: #5c574e;
+  margin: 0.65rem 0 0.35rem;
+}
+body.view-ontology #vote-compare-form textarea,
+body.view-ontology.view-vote-compare textarea#vote-explain {
+  background: #fdfcfa;
+  border: 1px solid #c8c4bc;
+  color: #1a1814;
+  font-family: var(--font-prose);
+  font-size: 0.9rem;
+  line-height: 1.45;
+  width: 100%;
+  max-width: 100%;
+  padding: 0.55rem 0.65rem;
+  margin-top: 0.25rem;
+}
+body.view-ontology #vote-compare-form textarea:focus {
+  border-color: #a68e6b;
+  outline: none;
+  box-shadow: 0 0 0 2px color-mix(in srgb, #a68e6b 28%, transparent);
+}
+
+body.view-ontology #vote-compare-form button[type="s

… preview truncated; 1,584 characters omitted

download full diff A

B — c_e4fb43f04791 (tommy-mor)

message

[09842c93] remove shell

diff preview

diff --git a/server/src/html/garden.rs b/server/src/html/garden.rs
index 8fc6be1de8dd975f9547de615809222236be4b70..76ba96e45c9e16291a6ccd8096fdd01b274c1560 100644
--- a/server/src/html/garden.rs
+++ b/server/src/html/garden.rs
@@ -1321,55 +1321,53 @@ async fn vote_compare_inner(
     .expect("vote compare rpc json");
 
     let body = html! {
-        section class="vote-compare-shell" {
-            h2 { "compare" }
-            div class="vote-compare-pair" {
-                a class="vote-compare-item" href=(nav.garden_item_href(&left)) {
-                    code { (item_display_path(left.as_str())) }
-                }
-                span class="vote-compare-vs" { "vs" }
-                a class="vote-compare-item" href=(nav.garden_item_href(&right)) {
-                    code { (item_display_path(right.as_str())) }
-                }
-            }
-            div id="vote-edge-history-region" {
-                (edge_history)
-            }
-            @if can_post {
-                form id="vote-compare-form" method="POST" action="/ui" {
-                    input type="hidden" name=(UI_RPC_FIELD) value=(rpc_json);
-                    div class="vote-thread-picker" {
-                        label class="vote-thread-picker-label" { "thread" }
-                        select id="vote-thread-select" name="thread_tag" aria-label="Thread to post vote into" {
-                            @if thread_tags.is_empty() {
-                                option value="vote" selected { "#vote" }
-                            }
-                            @for t in &thread_tags {
-                                @if *t == auto_thread {
-                                    option value=(t) selected { "#" (t) }
-                                } @else {
-                                    option value=(t) { "#" (t) }
-                                }
-                            }
-                        }
+    h2 { "compare" }
+    div class="vote-compare-pair" {
+        a class="vote-compare-item" href=(nav.garden_item_href(&left)) {
+            code { (item_display_path(left.as_str())) }
+        }
+        span class="vote-compare-vs" { "vs" }
+        a class="vote-compare-item" href=(nav.garden_item_href(&right)) {
+            code { (item_display_path(right.as_str())) }
+        }
+    }
+    div id="vote-edge-history-region" {
+        (edge_history)
+    }
+    @if can_post {
+        form id="vote-compare-form" method="POST" action="/ui" {
+            input type="hidden" name=(UI_RPC_FIELD) value=(rpc_json);
+            div class="vote-thread-picker" {
+                label class="vote-thread-picker-label" { "thread" }
+                select id="vote-thread-select" name="thread_tag" aria-label="Thread to post vote into" {
+                    @if thread_tags.is_empty() {
+                        option value="vote" selected { "#vote" }
                     }
-                    input type="hidden" name="ratio_left" id="vote-ratio-left" value="50";
-                    input type="hidden" name="ratio_right" id="vote-ratio-right" value="50";
-                    label class="vote-compare-slider-label" {
-                        span id="vote-slider-left-label" { (item_display_path(left.as_str())) }
-                        input type="range" id="vote-preference-slider" min="0" max="100" value="50"
-                            aria-valuemin="0" aria-valuemax="100";
-                        span id="vote-slider-right-label" { (item_display_path(right.as_str())) }
+                    @for t in &thread_tags {
+                        @if *t == auto_thread {
+                            option value=(t) selected { "#" (t) }
+                        } @else {
+                            option value=(t) { "#" (t) }
+                        }
                     }
-                    label class="vote-explain-label" { "reason (required)" }
-                    textarea name="explanation" id="vote-explain" rows="5" placeholder="why this split?" required {}
-                    div id="vote-compare-errors" {}
-                    p { button type="submit" { "post vote" } }
                 }
-            } @else {
-                p class="muted" { a href="/login" { "log in" } " to post this vote." }
             }
+            input type="hidden" name="ratio_left" id="vote-ratio-left" value="50";
+            input type="hidden" name="ratio_right" id="vote-ratio-right" value="50";
+            label class="vote-compare-slider-label" {
+                span id="vote-slider-left-label" { (item_display_path(left.as_str())) }
+                input type="range" id="vote-preference-slider" min="0" max="100" value="50"
+                    aria-valuemin="0" aria-valuemax="100";
+                span id="vote-slider-right-label" { (item_display_path(right.as_str())) }
+            }
+            label class="vote-explain-label" { "reason (required)" }
+            textarea name="explanation" id="vote-explain" rows="5" placeholder="why this split?" required {}
+            div id="vote-compare-errors" {}
+            p { button type="submit" { "post vote" } }
         }
+    } @else {
+        p class="muted" { a href="/login" { "log in" } " to post this vote." }
+    }
     };
 
     let page = layout_full_bleed_chromeless(
diff --git a/server/static/theme_default.css b/server/static/theme_default.css
index a441c4f79d8cf88f5a8240f9992f47dbbd1ab46b..fdcde86c718eb53cce8273e45a9844c2d8041f88 100644
--- a/server/static/theme_default.css
+++ b/server/static/theme_default.css
@@ -1270,8 +1270,12 @@ body.view-ontology-dark .ont-ranking-list li {
 body.view-ontology-dark .ont-ranking-list li::before {
   color: var(--meta);
   content: counter(ont-rank) ".";
-  font-size: 11px;
-  min-width: 18px;
+  flex-shrink: 0;
+  font-size: 1.35rem;
+  font-weight: 700;
+  font-variant-numeric: tabular-nums;
+  line-height: 1;
+  min-width: 2.25ch;
   text-align: right;
 }
 body.view-ontology-dark .ont-rank-score {
@@ -1424,8 +1428,12 @@ body.view-ontology-light .ont-ranking-list li {
 body.view-ontology-light .ont-ranking-list li::before {
   color: var(--meta);
   content: counter(ont-rank) ".";
-  font-size: 11px;
-  min-width: 18px;
+  flex-shrink: 0;
+  font-size: 1.35rem;
+  font-weight: 700;
+  font-variant-numeric: tabular-nums;
+  line-height: 1;
+  min-width: 2.25ch;
   text-align: right;
 }
 body.view-ontology-light .ont-rank-score {
diff --git a/server/static/theme_retro.css b/server/static/theme_retro.css
index 373f15bbd75b62604cdd14b9f0fadda2d6176991..61e1448b2f66a075c0e33325d6980448712fc927 100644
--- a/server/static/theme_retro.css
+++ b/server/static/theme_retro.css
@@ -135,6 +135,30 @@ body.view-ontology nav.breadcrumb a:hover {
 body.view-ontology nav.breadcrumb a.bc-current { color: #111; font-weight: 600; }
 body.view-ontology nav.breadcrumb .bc-sep { color: #888; padding: 0 2px; }
 
+body.view-ontology ol.ont-ranking-list {
+  counter-reset: ont-rank;
+  list-style: none;
+  margin: 0.5rem 0;
+  padding: 0;
+}
+body.view-ontology ol.ont-ranking-list li {
+  align-items: baseline;
+  counter-increment: ont-rank;
+  display: flex;
+  gap: 0.35rem;
+}
+body.view-ontology ol.ont-ranking-list li::before {
+  flex-shrink: 0;
+  color: #666;
+  content: counter(ont-rank) ".";
+  font-size: 1.35rem;
+  font-weight: 700;
+  font-variant-numeric: tabular-nums;
+  line-height: 1;
+  min-width: 2.25ch;
+  text-align: right;
+}
+
 nav.breadcrumb.ont-sibling-nav {
   margin-top: 0;
   width: 100%;
diff --git a/server/static/theme_retro_craft.css b/server/static/theme_retro_craft.css
index 6eb9222184a8795d67a5d09d41de08c8ac1b148f..7da102040484c887833158a37c307d078205c701 100644
--- a/server/static/theme_retro_craft.css
+++ b/server/static/theme_retro_craft.css
@@ -742,12 +742,32 @@ body.view-ontology button.ont-garden-pin-ico:focus-visible {
   outline-offset: 2px;
 }
 
+body.view-ontology ol.ont-ranking-list {
+  counter-reset: ont-rank;
+  list-style: none;
+  margin: 0;
+  padding: 0;
+}
 body.view-ontology ol.ont-ranking-list li,
 body.view-ontology ul.ont-group-list li {
   display: flex;
   align-items: baseline;
   gap: 0.35rem;
 }
+body.view-ontology ol.ont-ranking-list li {
+  counter-increment: ont-rank;
+}
+body.view-ontology ol.ont-ranking-list li::before {
+  flex-shrink: 0;
+  color: #5c574e;
+  content: counter(ont-rank) ".";
+  font-size: 1.35rem;
+  font-weight: 700;
+  font-variant-numeric: tabular-nums;
+  line-height: 1;
+  min-width: 2.25ch;
+  text-align: right;
+}
 body.view-ontology ol.ont-ranking-list li .item-link,
 body.view-ontology ul.ont-group-list li .item-link {
   flex: 1;

download full diff B

Hardlinks — judgments / attempts / prompt

prompt download

judgments

attempts

Prompt text is loaded only by the download route.