Spaces:
Running
Running
Commit Β·
df7f292
1
Parent(s): 9a74a7d
Add title animation demo with hover effects and accessibility considerations
Browse files- mockups/title-anim-demo.html +141 -0
- tasks/todo.md +28 -0
mockups/title-anim-demo.html
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="utf-8"/>
|
| 5 |
+
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
| 6 |
+
<title>Title hover animation β black β colors β blue</title>
|
| 7 |
+
<link href="https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;600;700&display=swap" rel="stylesheet"/>
|
| 8 |
+
<style>
|
| 9 |
+
:root {
|
| 10 |
+
--infinite: #032D42; /* rest / black */
|
| 11 |
+
--indigo: #7661FF;
|
| 12 |
+
--blue: #52B8FF; /* FINAL settle color */
|
| 13 |
+
--green: #63DF4E;
|
| 14 |
+
}
|
| 15 |
+
|
| 16 |
+
body {
|
| 17 |
+
font-family: 'Hanken Grotesk', system-ui, sans-serif;
|
| 18 |
+
background: #faf9fb;
|
| 19 |
+
color: var(--infinite);
|
| 20 |
+
margin: 0;
|
| 21 |
+
padding: 64px 48px;
|
| 22 |
+
}
|
| 23 |
+
h1 { font-size: 20px; font-weight: 700; margin: 0 0 4px; }
|
| 24 |
+
.sub { color: #5b6b75; font-size: 14px; margin: 0 0 40px; }
|
| 25 |
+
.note { color: #5b6b75; font-size: 13px; max-width: 720px; line-height: 1.5; }
|
| 26 |
+
.note b { color: var(--infinite); }
|
| 27 |
+
|
| 28 |
+
.row {
|
| 29 |
+
display: grid;
|
| 30 |
+
grid-template-columns: 200px 1fr;
|
| 31 |
+
align-items: center;
|
| 32 |
+
gap: 32px;
|
| 33 |
+
padding: 30px 0;
|
| 34 |
+
border-top: 1px solid #E1E8ED;
|
| 35 |
+
}
|
| 36 |
+
.meta b { font-size: 15px; display: block; }
|
| 37 |
+
.meta span { font-size: 12px; color: #5b6b75; }
|
| 38 |
+
|
| 39 |
+
.title {
|
| 40 |
+
font-size: 30px;
|
| 41 |
+
font-weight: 700;
|
| 42 |
+
letter-spacing: -0.02em;
|
| 43 |
+
text-decoration: none;
|
| 44 |
+
cursor: pointer;
|
| 45 |
+
-webkit-background-clip: text;
|
| 46 |
+
background-clip: text;
|
| 47 |
+
}
|
| 48 |
+
.title:focus-visible {
|
| 49 |
+
outline: 2px solid var(--indigo);
|
| 50 |
+
outline-offset: 4px;
|
| 51 |
+
border-radius: 4px;
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
/* =========================================================
|
| 55 |
+
Take A β SWEEP TO BLUE
|
| 56 |
+
One gradient. Window slides LβR: infinite plateau β rainbow
|
| 57 |
+
β blue plateau. Reverses smoothly on un-hover.
|
| 58 |
+
========================================================= */
|
| 59 |
+
.sweep {
|
| 60 |
+
background-image: linear-gradient(90deg,
|
| 61 |
+
var(--infinite) 0%, var(--infinite) 30%,
|
| 62 |
+
var(--indigo) 42%, var(--green) 52%, var(--blue) 64%,
|
| 63 |
+
var(--blue) 70%, var(--blue) 100%);
|
| 64 |
+
background-size: 320% 100%;
|
| 65 |
+
background-position: 0% 0; /* rest window = infinite plateau */
|
| 66 |
+
color: transparent;
|
| 67 |
+
-webkit-text-fill-color: transparent;
|
| 68 |
+
transition: background-position 0.5s ease; /* smooth revert */
|
| 69 |
+
}
|
| 70 |
+
.sweep:hover, .sweep:focus-visible {
|
| 71 |
+
animation: sweep-to-blue 0.9s ease forwards;
|
| 72 |
+
}
|
| 73 |
+
@keyframes sweep-to-blue {
|
| 74 |
+
0% { background-position: 0% 0; }
|
| 75 |
+
100% { background-position: 100% 0; } /* window = blue plateau */
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
/* =========================================================
|
| 79 |
+
Take B β BLOOM, THEN SETTLE TO BLUE
|
| 80 |
+
Colors bloom from center, then fade to solid blue.
|
| 81 |
+
========================================================= */
|
| 82 |
+
.bloom {
|
| 83 |
+
background-image: radial-gradient(circle at 50% 50%,
|
| 84 |
+
var(--infinite) 0%, var(--infinite) 10%,
|
| 85 |
+
var(--indigo) 34%, var(--green) 58%, var(--blue) 80%, var(--blue) 100%);
|
| 86 |
+
background-position: center;
|
| 87 |
+
background-repeat: no-repeat;
|
| 88 |
+
background-size: 600% 600%;
|
| 89 |
+
color: transparent;
|
| 90 |
+
-webkit-text-fill-color: var(--infinite); /* rest = solid infinite */
|
| 91 |
+
transition: -webkit-text-fill-color 0.4s ease, background-size 0.4s ease; /* smooth revert */
|
| 92 |
+
}
|
| 93 |
+
.bloom:hover, .bloom:focus-visible {
|
| 94 |
+
animation: bloom-settle 1s ease forwards;
|
| 95 |
+
}
|
| 96 |
+
@keyframes bloom-settle {
|
| 97 |
+
0% { background-size: 600% 600%; -webkit-text-fill-color: var(--infinite); }
|
| 98 |
+
20% { -webkit-text-fill-color: transparent; }
|
| 99 |
+
55% { background-size: 130% 130%; -webkit-text-fill-color: transparent; }
|
| 100 |
+
100% { background-size: 130% 130%; -webkit-text-fill-color: var(--blue); } /* fade to blue */
|
| 101 |
+
}
|
| 102 |
+
|
| 103 |
+
/* accessibility: no motion β jump straight to the final blue, no journey */
|
| 104 |
+
@media (prefers-reduced-motion: reduce) {
|
| 105 |
+
.sweep, .bloom { transition: -webkit-text-fill-color 0.001s; }
|
| 106 |
+
.sweep:hover, .sweep:focus-visible,
|
| 107 |
+
.bloom:hover, .bloom:focus-visible {
|
| 108 |
+
animation: none;
|
| 109 |
+
color: var(--blue);
|
| 110 |
+
-webkit-text-fill-color: var(--blue);
|
| 111 |
+
}
|
| 112 |
+
}
|
| 113 |
+
</style>
|
| 114 |
+
</head>
|
| 115 |
+
<body>
|
| 116 |
+
<h1>Title hover β black β color animation β settles to blue</h1>
|
| 117 |
+
<p class="sub">Hover (or Tab to) each title. Rest = infinite-blue. End-of-animation = bright-blue, held while hovered.</p>
|
| 118 |
+
|
| 119 |
+
<div class="row">
|
| 120 |
+
<div class="meta"><b>A Β· Sweep β blue</b><span>infinite β rainbow sweep β settles blue Β· 0.9s</span></div>
|
| 121 |
+
<a class="title sweep" href="#" tabindex="0">EnterpriseOps-Gym</a>
|
| 122 |
+
</div>
|
| 123 |
+
<div class="row">
|
| 124 |
+
<div class="meta"><b>B Β· Bloom β blue</b><span>colors bloom from center β fade to blue Β· 1.0s</span></div>
|
| 125 |
+
<a class="title bloom" href="#" tabindex="0">EnterpriseOps-Gym</a>
|
| 126 |
+
</div>
|
| 127 |
+
<div class="row">
|
| 128 |
+
<div class="meta"><b>A Β· Sweep β blue</b><span>second title</span></div>
|
| 129 |
+
<a class="title sweep" href="#" tabindex="0">EVA-Bench</a>
|
| 130 |
+
</div>
|
| 131 |
+
<div class="row">
|
| 132 |
+
<div class="meta"><b>B Β· Bloom β blue</b><span>second title</span></div>
|
| 133 |
+
<a class="title bloom" href="#" tabindex="0">EVA-Bench</a>
|
| 134 |
+
</div>
|
| 135 |
+
|
| 136 |
+
<div class="row" style="border-bottom: 1px solid #E1E8ED;">
|
| 137 |
+
<div class="meta"><b>Note</b></div>
|
| 138 |
+
<p class="note"><b>Contrast flag:</b> final blue <code>#52B8FF</code> on white is low-contrast (~2:1, below WCAG AA for text). Fine as a transient hover state, but if titles should pass AA while hovered, settle on a deeper blue like <code>#006DAA</code> instead. Say which.</p>
|
| 139 |
+
</div>
|
| 140 |
+
</body>
|
| 141 |
+
</html>
|
tasks/todo.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Leaderboard Card Fixes β Task List
|
| 2 |
+
|
| 3 |
+
Source: annotated mockup review (2026-06-02). Targets `index.html` lines 161β292.
|
| 4 |
+
|
| 5 |
+
## EnterpriseOps-Gym card
|
| 6 |
+
|
| 7 |
+
- [ ] **T1 β Clickable title.** Wrap `<h3>EnterpriseOps-Gym</h3>` (L165) in a link to the EOG webpage. Add hover-over info.
|
| 8 |
+
- [ ] **T2 β Drop "cascade".** `Anthropic Β· cascade` β `Anthropic` (L171).
|
| 9 |
+
- [ ] **T3 β Rename metric label.** `Success rate Β· Oracle mode` β `Task Success Rate Β· Oracle mode` (L175).
|
| 10 |
+
- [ ] **T4 β Metric hover.** Add hover-over def on the metric: "A task passes only if all verification conditions are met."
|
| 11 |
+
|
| 12 |
+
## EVA-Bench card
|
| 13 |
+
|
| 14 |
+
- [ ] **T5 β Clickable title.** Wrap `<h3>EVA-Bench</h3>` (L217) in a link to the EVA webpage. Add hover-over info.
|
| 15 |
+
- [ ] **T6 β Accuracy section label.** `Accuracy` β `EVA-Accuracy` (L224).
|
| 16 |
+
- [ ] **T7 β Accuracy metric tag.** `EVA-A Β· PASS@3` β `Pass@1` (L225).
|
| 17 |
+
- [ ] **T8 β Accuracy metric hover.** Def: "Scores for accuracy. All values normalized to 0β1 (higher is better). 95% bootstrap confidence intervals shown for each value."
|
| 18 |
+
- [ ] **T9 β Cascade subtitle.** `cascade Β· mixed` (L230) β keep as-is (annotation just maps it to "Mixed Models | Cascade"; current value already correct). Confirm no change.
|
| 19 |
+
- [ ] **T10 β Experience section label.** `Experience` β `EVA-Experience` (L256).
|
| 20 |
+
- [ ] **T11 β Experience metric tag.** `EVA-X Β· PASS@3` β `Pass@1` (L257).
|
| 21 |
+
- [ ] **T12 β Experience metric hover.** Def: "Scores for conversational experience. All values normalized to 0β1 (higher is better). 95% bootstrap confidence intervals shown for each value."
|
| 22 |
+
- [ ] **T13 β S2S subtitle.** `Google Β· S2S` (L262) β keep as-is (annotation maps it to "Google | Speech-to-Speech"; current already correct). Confirm no change.
|
| 23 |
+
|
| 24 |
+
## Open questions (need answers before implementing)
|
| 25 |
+
|
| 26 |
+
1. **Title link URLs.** Use same as the "View full leaderboard" links? EOG β `https://enterpriseops-gym.github.io/`, EVA β `https://servicenow.github.io/eva/`. Confirm.
|
| 27 |
+
2. **Hover mechanism.** Native `title=""` attribute (simple, less styled) vs custom CSS/JS tooltip (accessible, on-brand, more work)? Recommend custom accessible tooltip.
|
| 28 |
+
3. **T7/T11.** Confirm full replace of `EVA-A Β· PASS@3` / `EVA-X Β· PASS@3` with just `Pass@1` (drops the EVA-A/EVA-X code and changes @3 β @1).
|