Spaces:
Running
Running
Upload 5 files
Browse files- README.md +9 -5
- app.js +479 -0
- data.json +634 -0
- index.html +317 -17
- styles.css +1987 -0
README.md
CHANGED
|
@@ -1,12 +1,16 @@
|
|
| 1 |
---
|
| 2 |
-
title: Leaderboard
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
license: mit
|
| 9 |
short_description: Official StreamAV-Bench leaderboard.
|
| 10 |
---
|
| 11 |
|
| 12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: StreamAV-Bench Leaderboard
|
| 3 |
+
emoji: 📡
|
| 4 |
+
colorFrom: blue
|
| 5 |
+
colorTo: green
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
license: mit
|
| 9 |
short_description: Official StreamAV-Bench leaderboard.
|
| 10 |
---
|
| 11 |
|
| 12 |
+
# StreamAV-Bench Leaderboard
|
| 13 |
+
|
| 14 |
+
Official metric-wise leaderboard for **StreamAV-Bench: A Comprehensive Benchmark for Streaming Audio-Video Generation**.
|
| 15 |
+
|
| 16 |
+
The page is a static Hugging Face Space. Published results and metric metadata are maintained in `data.json`. The primary explorer preserves the paper's 32 core metrics, while four adjusted sensitivity diagnostics are presented in a separate view.
|
app.js
ADDED
|
@@ -0,0 +1,479 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const state = {
|
| 2 |
+
data: null,
|
| 3 |
+
track: "shared",
|
| 4 |
+
category: "quality",
|
| 5 |
+
sortMetric: "va",
|
| 6 |
+
sortDirection: "desc",
|
| 7 |
+
query: "",
|
| 8 |
+
paradigm: "all",
|
| 9 |
+
access: "all"
|
| 10 |
+
};
|
| 11 |
+
|
| 12 |
+
const elements = {
|
| 13 |
+
trackTabs: document.querySelector("#track-tabs"),
|
| 14 |
+
trackDescription: document.querySelector("#track-description"),
|
| 15 |
+
categoryTabs: document.querySelector("#category-tabs"),
|
| 16 |
+
categoryTitle: document.querySelector("#category-title"),
|
| 17 |
+
categoryDescription: document.querySelector("#category-description"),
|
| 18 |
+
tablePanel: document.querySelector(".table-panel"),
|
| 19 |
+
tableKicker: document.querySelector("#table-kicker"),
|
| 20 |
+
rankingLabel: document.querySelector("#ranking-label"),
|
| 21 |
+
table: document.querySelector("#leaderboard-table"),
|
| 22 |
+
tableStatus: document.querySelector("#table-status"),
|
| 23 |
+
contextCopy: document.querySelector("#context-copy"),
|
| 24 |
+
search: document.querySelector("#model-search"),
|
| 25 |
+
metricSelect: document.querySelector("#metric-select"),
|
| 26 |
+
paradigm: document.querySelector("#paradigm-filter"),
|
| 27 |
+
access: document.querySelector("#access-filter"),
|
| 28 |
+
reset: document.querySelector("#reset-filters"),
|
| 29 |
+
download: document.querySelector("#download-csv"),
|
| 30 |
+
metricGuide: document.querySelector("#metric-guide"),
|
| 31 |
+
error: document.querySelector("#data-error")
|
| 32 |
+
};
|
| 33 |
+
|
| 34 |
+
const directionFor = (metric) => metric.direction === "higher" ? "desc" : "asc";
|
| 35 |
+
|
| 36 |
+
const escapeHtml = (value) => String(value)
|
| 37 |
+
.replaceAll("&", "&")
|
| 38 |
+
.replaceAll("<", "<")
|
| 39 |
+
.replaceAll(">", ">")
|
| 40 |
+
.replaceAll('"', """)
|
| 41 |
+
.replaceAll("'", "'");
|
| 42 |
+
|
| 43 |
+
function formatScore(value) {
|
| 44 |
+
if (value === null || value === undefined) return "—";
|
| 45 |
+
return Number(value).toFixed(state.data.meta.publishedPrecision);
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
function currentCategory() {
|
| 49 |
+
return state.data.categories.find((category) => category.id === state.category);
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
function currentMetric() {
|
| 53 |
+
return state.data.metrics[state.sortMetric];
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
function applyLink(id, url, readyLabel, pendingLabel) {
|
| 57 |
+
const link = document.querySelector(`#${id}`);
|
| 58 |
+
if (!link) return;
|
| 59 |
+
|
| 60 |
+
if (url) {
|
| 61 |
+
link.href = url;
|
| 62 |
+
link.target = "_blank";
|
| 63 |
+
link.rel = "noopener noreferrer";
|
| 64 |
+
link.classList.remove("is-disabled");
|
| 65 |
+
link.removeAttribute("aria-disabled");
|
| 66 |
+
const status = link.querySelector("[data-link-status]");
|
| 67 |
+
if (status) status.textContent = readyLabel;
|
| 68 |
+
} else {
|
| 69 |
+
link.removeAttribute("href");
|
| 70 |
+
link.classList.add("is-disabled");
|
| 71 |
+
link.setAttribute("aria-disabled", "true");
|
| 72 |
+
const status = link.querySelector("[data-link-status]");
|
| 73 |
+
if (status) status.textContent = pendingLabel;
|
| 74 |
+
}
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
function renderMeta() {
|
| 78 |
+
const { meta } = state.data;
|
| 79 |
+
document.title = meta.title;
|
| 80 |
+
document.querySelector("#hero-tagline").textContent = meta.tagline;
|
| 81 |
+
document.querySelector("#hero-description").textContent = meta.description;
|
| 82 |
+
document.querySelector("#release-label").textContent = meta.release;
|
| 83 |
+
document.querySelector("#stat-systems").textContent = meta.systemCount;
|
| 84 |
+
document.querySelector("#stat-metrics").textContent = meta.metricCount;
|
| 85 |
+
document.querySelector("#stat-scenarios").textContent = meta.scenarioCount;
|
| 86 |
+
document.querySelector("#stat-duration").textContent = `${meta.durationSeconds}s`;
|
| 87 |
+
|
| 88 |
+
applyLink("project-link", meta.links.project, "Project page", "Coming soon");
|
| 89 |
+
applyLink("code-link", meta.links.code, "Code repository", "Coming soon");
|
| 90 |
+
applyLink("paper-link", meta.links.paper, "Read paper", "Paper coming soon");
|
| 91 |
+
applyLink("dataset-link", meta.links.dataset, "Open dataset", "Dataset coming soon");
|
| 92 |
+
|
| 93 |
+
const submitLink = document.querySelector("#submission-link");
|
| 94 |
+
if (meta.links.submission) {
|
| 95 |
+
submitLink.href = meta.links.submission;
|
| 96 |
+
submitLink.target = "_blank";
|
| 97 |
+
submitLink.rel = "noopener noreferrer";
|
| 98 |
+
submitLink.classList.remove("is-disabled");
|
| 99 |
+
submitLink.removeAttribute("aria-disabled");
|
| 100 |
+
submitLink.querySelector("span").textContent = "Open submission form";
|
| 101 |
+
} else {
|
| 102 |
+
submitLink.removeAttribute("href");
|
| 103 |
+
submitLink.classList.add("is-disabled");
|
| 104 |
+
submitLink.setAttribute("aria-disabled", "true");
|
| 105 |
+
submitLink.querySelector("span").textContent = "Submission form coming soon";
|
| 106 |
+
}
|
| 107 |
+
}
|
| 108 |
+
|
| 109 |
+
function renderTrackTabs() {
|
| 110 |
+
elements.trackTabs.innerHTML = state.data.tracks.map((track) => {
|
| 111 |
+
const active = track.id === state.track;
|
| 112 |
+
return `
|
| 113 |
+
<button
|
| 114 |
+
class="track-tab ${active ? "is-active" : ""}"
|
| 115 |
+
type="button"
|
| 116 |
+
role="tab"
|
| 117 |
+
aria-selected="${active}"
|
| 118 |
+
data-track="${escapeHtml(track.id)}"
|
| 119 |
+
>
|
| 120 |
+
<span>${escapeHtml(track.label)}</span>
|
| 121 |
+
<b>${escapeHtml(track.badge || track.count)}</b>
|
| 122 |
+
</button>
|
| 123 |
+
`;
|
| 124 |
+
}).join("");
|
| 125 |
+
|
| 126 |
+
const activeTrack = state.data.tracks.find((track) => track.id === state.track);
|
| 127 |
+
elements.trackDescription.textContent = activeTrack.description;
|
| 128 |
+
|
| 129 |
+
elements.trackTabs.querySelectorAll("[data-track]").forEach((button) => {
|
| 130 |
+
button.addEventListener("click", () => {
|
| 131 |
+
state.track = button.dataset.track;
|
| 132 |
+
const firstCategory = state.data.categories.find((category) => category.track === state.track);
|
| 133 |
+
state.category = firstCategory.id;
|
| 134 |
+
state.sortMetric = firstCategory.defaultMetric;
|
| 135 |
+
state.sortDirection = directionFor(state.data.metrics[state.sortMetric]);
|
| 136 |
+
render();
|
| 137 |
+
});
|
| 138 |
+
});
|
| 139 |
+
}
|
| 140 |
+
|
| 141 |
+
function renderCategoryTabs() {
|
| 142 |
+
const categories = state.data.categories.filter((category) => category.track === state.track);
|
| 143 |
+
elements.categoryTabs.innerHTML = categories.map((category) => {
|
| 144 |
+
const active = category.id === state.category;
|
| 145 |
+
return `
|
| 146 |
+
<button
|
| 147 |
+
class="category-tab ${active ? "is-active" : ""}"
|
| 148 |
+
type="button"
|
| 149 |
+
aria-pressed="${active}"
|
| 150 |
+
data-category="${escapeHtml(category.id)}"
|
| 151 |
+
>
|
| 152 |
+
${escapeHtml(category.label)}
|
| 153 |
+
</button>
|
| 154 |
+
`;
|
| 155 |
+
}).join("");
|
| 156 |
+
|
| 157 |
+
elements.categoryTabs.querySelectorAll("[data-category]").forEach((button) => {
|
| 158 |
+
button.addEventListener("click", () => {
|
| 159 |
+
const category = state.data.categories.find((item) => item.id === button.dataset.category);
|
| 160 |
+
state.category = category.id;
|
| 161 |
+
state.sortMetric = category.defaultMetric;
|
| 162 |
+
state.sortDirection = directionFor(state.data.metrics[state.sortMetric]);
|
| 163 |
+
render();
|
| 164 |
+
});
|
| 165 |
+
});
|
| 166 |
+
}
|
| 167 |
+
|
| 168 |
+
function renderMetricSelect() {
|
| 169 |
+
const category = currentCategory();
|
| 170 |
+
elements.metricSelect.innerHTML = category.metrics.map((metricKey) => {
|
| 171 |
+
const metric = state.data.metrics[metricKey];
|
| 172 |
+
const direction = metric.direction === "higher" ? "↑" : "↓";
|
| 173 |
+
return `<option value="${escapeHtml(metricKey)}">${escapeHtml(metric.abbr)} ${direction} · ${escapeHtml(metric.name)}</option>`;
|
| 174 |
+
}).join("");
|
| 175 |
+
elements.metricSelect.value = state.sortMetric;
|
| 176 |
+
}
|
| 177 |
+
|
| 178 |
+
function compareScores(a, b, metricKey, direction) {
|
| 179 |
+
const aValue = a.scores[metricKey];
|
| 180 |
+
const bValue = b.scores[metricKey];
|
| 181 |
+
|
| 182 |
+
if (aValue === null && bValue === null) return a.name.localeCompare(b.name);
|
| 183 |
+
if (aValue === null) return 1;
|
| 184 |
+
if (bValue === null) return -1;
|
| 185 |
+
|
| 186 |
+
const difference = direction === "desc" ? bValue - aValue : aValue - bValue;
|
| 187 |
+
return difference || a.name.localeCompare(b.name);
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
function buildRankMap(metricKey) {
|
| 191 |
+
const metric = state.data.metrics[metricKey];
|
| 192 |
+
const sortedValues = state.data.models
|
| 193 |
+
.map((model) => model.scores[metricKey])
|
| 194 |
+
.filter((value) => value !== null)
|
| 195 |
+
.sort((a, b) => metric.direction === "higher" ? b - a : a - b);
|
| 196 |
+
|
| 197 |
+
const ranks = new Map();
|
| 198 |
+
sortedValues.forEach((value, index) => {
|
| 199 |
+
if (!ranks.has(value)) ranks.set(value, index + 1);
|
| 200 |
+
});
|
| 201 |
+
return ranks;
|
| 202 |
+
}
|
| 203 |
+
|
| 204 |
+
function filteredModels() {
|
| 205 |
+
const query = state.query.trim().toLocaleLowerCase();
|
| 206 |
+
return state.data.models
|
| 207 |
+
.filter((model) => !query || model.name.toLocaleLowerCase().includes(query))
|
| 208 |
+
.filter((model) => state.paradigm === "all" || model.paradigm === state.paradigm)
|
| 209 |
+
.filter((model) => state.access === "all" || model.access === state.access)
|
| 210 |
+
.sort((a, b) => compareScores(a, b, state.sortMetric, state.sortDirection));
|
| 211 |
+
}
|
| 212 |
+
|
| 213 |
+
function renderTable() {
|
| 214 |
+
const category = currentCategory();
|
| 215 |
+
const metric = currentMetric();
|
| 216 |
+
const models = filteredModels();
|
| 217 |
+
const rankMap = buildRankMap(state.sortMetric);
|
| 218 |
+
const arrow = state.sortDirection === "desc" ? "↓" : "↑";
|
| 219 |
+
const preferredDirection = metric.direction === "higher" ? "Higher is better" : "Lower is better";
|
| 220 |
+
const isDiagnostics = state.track === "diagnostics";
|
| 221 |
+
|
| 222 |
+
elements.tablePanel.classList.toggle("is-diagnostics", isDiagnostics);
|
| 223 |
+
elements.tableKicker.textContent = isDiagnostics ? "Adjusted sensitivity analysis" : "Metric-wise ranking";
|
| 224 |
+
elements.categoryTitle.textContent = category.label;
|
| 225 |
+
elements.categoryDescription.textContent = category.description;
|
| 226 |
+
elements.rankingLabel.innerHTML = `
|
| 227 |
+
Ranked by <strong>${escapeHtml(metric.name)}</strong>
|
| 228 |
+
<span>${preferredDirection}</span>
|
| 229 |
+
`;
|
| 230 |
+
elements.contextCopy.innerHTML = isDiagnostics
|
| 231 |
+
? `
|
| 232 |
+
<p><strong>Diagnostic status.</strong> These four adjusted diagnostics are reported separately from the 32 core metrics. They complement—rather than replace—PVRL, PARL, and HDF, and they are not combined into an overall score.</p>
|
| 233 |
+
<p>SA-PVRL and SA-PARL assign the 30-second cap to unachieved targets. CA-HDF-A and CA-HDF-L normalize conditional HDF to [0,1] and assign zero when the required source state was not established.</p>
|
| 234 |
+
`
|
| 235 |
+
: `
|
| 236 |
+
<p><strong>Reading the ranks.</strong> Click any metric header to rank by that metric. Published three-decimal ties use competition ranking (for example, 1, 1, 3). PVRL and PARL are conditional on successful target achievement and should be read with PVUAR and PAUAR.</p>
|
| 237 |
+
<p>HDF is evaluated only when its required source state was established. NBC, FPS, and TTFC are unavailable for PixVerse R1, HappyOyster, and Odyssey-2 because their web interfaces do not expose the required traces.</p>
|
| 238 |
+
`;
|
| 239 |
+
|
| 240 |
+
const metricHeaders = category.metrics.map((metricKey) => {
|
| 241 |
+
const item = state.data.metrics[metricKey];
|
| 242 |
+
const active = metricKey === state.sortMetric;
|
| 243 |
+
const ariaSort = active
|
| 244 |
+
? (state.sortDirection === "desc" ? "descending" : "ascending")
|
| 245 |
+
: "none";
|
| 246 |
+
return `
|
| 247 |
+
<th scope="col" aria-sort="${ariaSort}" class="metric-column ${active ? "is-sorted" : ""}">
|
| 248 |
+
<button type="button" data-sort="${escapeHtml(metricKey)}" title="Sort by ${escapeHtml(item.name)}">
|
| 249 |
+
<span>${escapeHtml(item.abbr)}</span>
|
| 250 |
+
<i aria-hidden="true">${active ? arrow : "↕"}</i>
|
| 251 |
+
<small>${item.direction === "higher" ? "higher" : "lower"}</small>
|
| 252 |
+
</button>
|
| 253 |
+
</th>
|
| 254 |
+
`;
|
| 255 |
+
}).join("");
|
| 256 |
+
|
| 257 |
+
const rows = models.map((model) => {
|
| 258 |
+
const sortedValue = model.scores[state.sortMetric];
|
| 259 |
+
const rank = sortedValue === null ? null : rankMap.get(sortedValue);
|
| 260 |
+
const rankClass = rank !== null && rank <= 3 ? ` rank-${rank}` : "";
|
| 261 |
+
const cells = category.metrics.map((metricKey) => {
|
| 262 |
+
const value = model.scores[metricKey];
|
| 263 |
+
const metricRankMap = buildMetricRankMap(metricKey);
|
| 264 |
+
const cellRank = value === null ? null : metricRankMap.get(value);
|
| 265 |
+
const rankClass = cellRank === 1 ? "is-best" : cellRank === 2 ? "is-runner-up" : "";
|
| 266 |
+
const sortedClass = metricKey === state.sortMetric ? "is-sorted" : "";
|
| 267 |
+
const metricInfo = state.data.metrics[metricKey];
|
| 268 |
+
const unit = value !== null && metricInfo.unit ? ` ${metricInfo.unit}` : "";
|
| 269 |
+
const unavailableReason = value === null
|
| 270 |
+
? "Unavailable because the official web interface does not expose model-native boundaries or reliable generation-time traces."
|
| 271 |
+
: "";
|
| 272 |
+
return `
|
| 273 |
+
<td
|
| 274 |
+
class="score-cell ${rankClass} ${sortedClass}"
|
| 275 |
+
data-label="${escapeHtml(metricInfo.abbr)}"
|
| 276 |
+
${unavailableReason ? `title="${escapeHtml(unavailableReason)}"` : ""}
|
| 277 |
+
>
|
| 278 |
+
${value === null
|
| 279 |
+
? `<span aria-hidden="true">—</span><span class="sr-only">${escapeHtml(unavailableReason)}</span>`
|
| 280 |
+
: `<span>${formatScore(value)}</span>${unit ? `<small>${escapeHtml(unit.trim())}</small>` : ""}`
|
| 281 |
+
}
|
| 282 |
+
</td>
|
| 283 |
+
`;
|
| 284 |
+
}).join("");
|
| 285 |
+
|
| 286 |
+
return `
|
| 287 |
+
<tr>
|
| 288 |
+
<td class="rank-cell" data-label="Rank">
|
| 289 |
+
${rank === null ? "—" : `<span class="rank-badge${rankClass}">${rank}</span>`}
|
| 290 |
+
</td>
|
| 291 |
+
<th scope="row" class="model-cell">
|
| 292 |
+
<a href="${escapeHtml(model.reference)}" target="_blank" rel="noopener noreferrer">
|
| 293 |
+
<span>${escapeHtml(model.name)}</span><i aria-hidden="true">↗</i>
|
| 294 |
+
</a>
|
| 295 |
+
<small>${model.paradigm === "Cascaded" ? "with HunyuanVideo-Foley" : "native audio-video"}</small>
|
| 296 |
+
</th>
|
| 297 |
+
<td class="meta-cell" data-label="Paradigm">
|
| 298 |
+
<span class="tag tag-${model.paradigm === "Native joint" ? "native" : "cascaded"}">${escapeHtml(model.paradigm)}</span>
|
| 299 |
+
</td>
|
| 300 |
+
<td class="meta-cell" data-label="Access">
|
| 301 |
+
<span class="access-dot access-${model.access.toLowerCase()}"></span>${escapeHtml(model.access)}
|
| 302 |
+
</td>
|
| 303 |
+
${cells}
|
| 304 |
+
</tr>
|
| 305 |
+
`;
|
| 306 |
+
}).join("");
|
| 307 |
+
|
| 308 |
+
elements.table.innerHTML = `
|
| 309 |
+
<thead>
|
| 310 |
+
<tr>
|
| 311 |
+
<th scope="col" class="rank-heading">#</th>
|
| 312 |
+
<th scope="col" class="model-heading">System</th>
|
| 313 |
+
<th scope="col">Paradigm</th>
|
| 314 |
+
<th scope="col">Access</th>
|
| 315 |
+
${metricHeaders}
|
| 316 |
+
</tr>
|
| 317 |
+
</thead>
|
| 318 |
+
<tbody>
|
| 319 |
+
${rows || `
|
| 320 |
+
<tr>
|
| 321 |
+
<td class="empty-row" colspan="${4 + category.metrics.length}">
|
| 322 |
+
No systems match the current filters.
|
| 323 |
+
</td>
|
| 324 |
+
</tr>
|
| 325 |
+
`}
|
| 326 |
+
</tbody>
|
| 327 |
+
`;
|
| 328 |
+
|
| 329 |
+
elements.tableStatus.textContent = `${models.length} of ${state.data.models.length} systems · global ranks use published three-decimal scores`;
|
| 330 |
+
|
| 331 |
+
elements.table.querySelectorAll("[data-sort]").forEach((button) => {
|
| 332 |
+
button.addEventListener("click", () => {
|
| 333 |
+
const metricKey = button.dataset.sort;
|
| 334 |
+
if (state.sortMetric === metricKey) {
|
| 335 |
+
state.sortDirection = state.sortDirection === "desc" ? "asc" : "desc";
|
| 336 |
+
} else {
|
| 337 |
+
state.sortMetric = metricKey;
|
| 338 |
+
state.sortDirection = directionFor(state.data.metrics[metricKey]);
|
| 339 |
+
}
|
| 340 |
+
elements.metricSelect.value = state.sortMetric;
|
| 341 |
+
renderTable();
|
| 342 |
+
renderMetricGuide();
|
| 343 |
+
});
|
| 344 |
+
});
|
| 345 |
+
}
|
| 346 |
+
|
| 347 |
+
function buildMetricRankMap(metricKey) {
|
| 348 |
+
const item = state.data.metrics[metricKey];
|
| 349 |
+
const values = state.data.models
|
| 350 |
+
.map((model) => model.scores[metricKey])
|
| 351 |
+
.filter((value) => value !== null)
|
| 352 |
+
.sort((a, b) => item.direction === "higher" ? b - a : a - b);
|
| 353 |
+
return new Map([...new Set(values)].map((value, index) => [value, index + 1]));
|
| 354 |
+
}
|
| 355 |
+
|
| 356 |
+
function renderMetricGuide() {
|
| 357 |
+
const category = currentCategory();
|
| 358 |
+
elements.metricGuide.innerHTML = category.metrics.map((metricKey) => {
|
| 359 |
+
const metric = state.data.metrics[metricKey];
|
| 360 |
+
const active = metricKey === state.sortMetric;
|
| 361 |
+
return `
|
| 362 |
+
<article class="metric-card ${active ? "is-active" : ""}">
|
| 363 |
+
<button type="button" data-metric-card="${escapeHtml(metricKey)}" aria-label="Rank by ${escapeHtml(metric.name)}">
|
| 364 |
+
<span class="metric-abbr">${escapeHtml(metric.abbr)}</span>
|
| 365 |
+
<span class="direction direction-${metric.direction}">
|
| 366 |
+
${metric.direction === "higher" ? "↑ Higher" : "↓ Lower"}
|
| 367 |
+
</span>
|
| 368 |
+
</button>
|
| 369 |
+
<h3>${escapeHtml(metric.name)}</h3>
|
| 370 |
+
<p>${escapeHtml(metric.description)}</p>
|
| 371 |
+
<dl>
|
| 372 |
+
<div><dt>Scale</dt><dd>${escapeHtml(metric.range)}${metric.unit ? ` · ${escapeHtml(metric.unit)}` : ""}</dd></div>
|
| 373 |
+
<div><dt>Evaluator</dt><dd>${escapeHtml(metric.evaluator)}</dd></div>
|
| 374 |
+
</dl>
|
| 375 |
+
</article>
|
| 376 |
+
`;
|
| 377 |
+
}).join("");
|
| 378 |
+
|
| 379 |
+
elements.metricGuide.querySelectorAll("[data-metric-card]").forEach((button) => {
|
| 380 |
+
button.addEventListener("click", () => {
|
| 381 |
+
state.sortMetric = button.dataset.metricCard;
|
| 382 |
+
state.sortDirection = directionFor(state.data.metrics[state.sortMetric]);
|
| 383 |
+
elements.metricSelect.value = state.sortMetric;
|
| 384 |
+
renderTable();
|
| 385 |
+
renderMetricGuide();
|
| 386 |
+
document.querySelector("#leaderboard").scrollIntoView({ behavior: "smooth", block: "start" });
|
| 387 |
+
});
|
| 388 |
+
});
|
| 389 |
+
}
|
| 390 |
+
|
| 391 |
+
function csvCell(value) {
|
| 392 |
+
const stringValue = value === null || value === undefined ? "" : String(value);
|
| 393 |
+
return `"${stringValue.replaceAll('"', '""')}"`;
|
| 394 |
+
}
|
| 395 |
+
|
| 396 |
+
function downloadCurrentView() {
|
| 397 |
+
const category = currentCategory();
|
| 398 |
+
const models = filteredModels();
|
| 399 |
+
const headers = ["System", "Paradigm", "Access", ...category.metrics.map((key) => state.data.metrics[key].abbr)];
|
| 400 |
+
const lines = [
|
| 401 |
+
headers.map(csvCell).join(","),
|
| 402 |
+
...models.map((model) => [
|
| 403 |
+
model.name,
|
| 404 |
+
model.paradigm,
|
| 405 |
+
model.access,
|
| 406 |
+
...category.metrics.map((key) => model.scores[key])
|
| 407 |
+
].map(csvCell).join(","))
|
| 408 |
+
];
|
| 409 |
+
|
| 410 |
+
const blob = new Blob([`\uFEFF${lines.join("\n")}`], { type: "text/csv;charset=utf-8" });
|
| 411 |
+
const url = URL.createObjectURL(blob);
|
| 412 |
+
const anchor = document.createElement("a");
|
| 413 |
+
anchor.href = url;
|
| 414 |
+
anchor.download = `streamav-bench-${category.id}.csv`;
|
| 415 |
+
document.body.appendChild(anchor);
|
| 416 |
+
anchor.click();
|
| 417 |
+
anchor.remove();
|
| 418 |
+
URL.revokeObjectURL(url);
|
| 419 |
+
}
|
| 420 |
+
|
| 421 |
+
function resetFilters() {
|
| 422 |
+
state.query = "";
|
| 423 |
+
state.paradigm = "all";
|
| 424 |
+
state.access = "all";
|
| 425 |
+
elements.search.value = "";
|
| 426 |
+
elements.paradigm.value = "all";
|
| 427 |
+
elements.access.value = "all";
|
| 428 |
+
renderTable();
|
| 429 |
+
}
|
| 430 |
+
|
| 431 |
+
function bindControls() {
|
| 432 |
+
elements.search.addEventListener("input", (event) => {
|
| 433 |
+
state.query = event.target.value;
|
| 434 |
+
renderTable();
|
| 435 |
+
});
|
| 436 |
+
elements.metricSelect.addEventListener("change", (event) => {
|
| 437 |
+
state.sortMetric = event.target.value;
|
| 438 |
+
state.sortDirection = directionFor(state.data.metrics[state.sortMetric]);
|
| 439 |
+
renderTable();
|
| 440 |
+
renderMetricGuide();
|
| 441 |
+
});
|
| 442 |
+
elements.paradigm.addEventListener("change", (event) => {
|
| 443 |
+
state.paradigm = event.target.value;
|
| 444 |
+
renderTable();
|
| 445 |
+
});
|
| 446 |
+
elements.access.addEventListener("change", (event) => {
|
| 447 |
+
state.access = event.target.value;
|
| 448 |
+
renderTable();
|
| 449 |
+
});
|
| 450 |
+
elements.reset.addEventListener("click", resetFilters);
|
| 451 |
+
elements.download.addEventListener("click", downloadCurrentView);
|
| 452 |
+
}
|
| 453 |
+
|
| 454 |
+
function render() {
|
| 455 |
+
renderTrackTabs();
|
| 456 |
+
renderCategoryTabs();
|
| 457 |
+
renderMetricSelect();
|
| 458 |
+
renderTable();
|
| 459 |
+
renderMetricGuide();
|
| 460 |
+
}
|
| 461 |
+
|
| 462 |
+
async function init() {
|
| 463 |
+
try {
|
| 464 |
+
const response = await fetch("./data.json", { cache: "no-store" });
|
| 465 |
+
if (!response.ok) throw new Error(`Data request failed with status ${response.status}`);
|
| 466 |
+
state.data = await response.json();
|
| 467 |
+
state.sortDirection = directionFor(state.data.metrics[state.sortMetric]);
|
| 468 |
+
renderMeta();
|
| 469 |
+
bindControls();
|
| 470 |
+
render();
|
| 471 |
+
document.documentElement.classList.add("is-ready");
|
| 472 |
+
} catch (error) {
|
| 473 |
+
console.error(error);
|
| 474 |
+
elements.error.hidden = false;
|
| 475 |
+
elements.error.querySelector("p").textContent = "The leaderboard data could not be loaded. Please refresh the page or try again later.";
|
| 476 |
+
}
|
| 477 |
+
}
|
| 478 |
+
|
| 479 |
+
init();
|
data.json
ADDED
|
@@ -0,0 +1,634 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"meta": {
|
| 3 |
+
"title": "StreamAV-Bench Leaderboard",
|
| 4 |
+
"tagline": "Streaming systems, evaluated while they run.",
|
| 5 |
+
"description": "Official metric-wise results for streaming audio-video generation across progressive and interactive evaluation tracks.",
|
| 6 |
+
"release": "Initial benchmark release",
|
| 7 |
+
"systemCount": 13,
|
| 8 |
+
"metricCount": 32,
|
| 9 |
+
"scenarioCount": 320,
|
| 10 |
+
"durationSeconds": 180,
|
| 11 |
+
"publishedPrecision": 3,
|
| 12 |
+
"links": {
|
| 13 |
+
"project": "https://liukqchoco.github.io/StreamAVBench/",
|
| 14 |
+
"code": "https://github.com/liukqchoco/StreamAVBench-Code",
|
| 15 |
+
"paper": "",
|
| 16 |
+
"dataset": "",
|
| 17 |
+
"submission": ""
|
| 18 |
+
}
|
| 19 |
+
},
|
| 20 |
+
"tracks": [
|
| 21 |
+
{
|
| 22 |
+
"id": "shared",
|
| 23 |
+
"label": "Shared",
|
| 24 |
+
"count": 9,
|
| 25 |
+
"description": "Quality, alignment, continuity, and efficiency metrics applied across both tracks."
|
| 26 |
+
},
|
| 27 |
+
{
|
| 28 |
+
"id": "progressive",
|
| 29 |
+
"label": "Progressive",
|
| 30 |
+
"count": 12,
|
| 31 |
+
"description": "Instruction adherence and long-horizon stability under one global prompt."
|
| 32 |
+
},
|
| 33 |
+
{
|
| 34 |
+
"id": "interactive",
|
| 35 |
+
"label": "Interactive",
|
| 36 |
+
"count": 11,
|
| 37 |
+
"description": "Runtime-update response, state retention, and reuse under prompt updates."
|
| 38 |
+
},
|
| 39 |
+
{
|
| 40 |
+
"id": "diagnostics",
|
| 41 |
+
"label": "Diagnostics",
|
| 42 |
+
"count": 4,
|
| 43 |
+
"description": "Success- and coverage-adjusted diagnostics that jointly account for update success and source-state coverage."
|
| 44 |
+
}
|
| 45 |
+
],
|
| 46 |
+
"categories": [
|
| 47 |
+
{
|
| 48 |
+
"id": "quality",
|
| 49 |
+
"track": "shared",
|
| 50 |
+
"label": "Quality & Alignment",
|
| 51 |
+
"shortLabel": "Quality",
|
| 52 |
+
"description": "Perceptual quality and semantic or temporal correspondence between audio and video.",
|
| 53 |
+
"defaultMetric": "va",
|
| 54 |
+
"metrics": ["va", "vq", "pq", "aq", "avalign", "avsync"]
|
| 55 |
+
},
|
| 56 |
+
{
|
| 57 |
+
"id": "streaming",
|
| 58 |
+
"track": "shared",
|
| 59 |
+
"label": "Continuity & Efficiency",
|
| 60 |
+
"shortLabel": "Streaming",
|
| 61 |
+
"description": "Technical continuity at native generation boundaries, throughput, and startup latency.",
|
| 62 |
+
"defaultMetric": "nbc",
|
| 63 |
+
"metrics": ["nbc", "fps", "ttfc"]
|
| 64 |
+
},
|
| 65 |
+
{
|
| 66 |
+
"id": "adherence",
|
| 67 |
+
"track": "progressive",
|
| 68 |
+
"label": "Instruction Adherence",
|
| 69 |
+
"shortLabel": "Adherence",
|
| 70 |
+
"description": "Full-rollout fulfillment and endpoint drift for fixed visual and audio requirements.",
|
| 71 |
+
"defaultMetric": "vif",
|
| 72 |
+
"metrics": ["vif", "aif", "vid", "aid"]
|
| 73 |
+
},
|
| 74 |
+
{
|
| 75 |
+
"id": "stability",
|
| 76 |
+
"track": "progressive",
|
| 77 |
+
"label": "Long-Horizon Stability",
|
| 78 |
+
"shortLabel": "Stability",
|
| 79 |
+
"description": "Quality drift, visual consistency, and audio-video drift over the 180-second rollout.",
|
| 80 |
+
"defaultMetric": "va_d",
|
| 81 |
+
"metrics": ["va_d", "vq_d", "pq_d", "aq_d", "sc", "bc", "avalign_d", "avsync_d"]
|
| 82 |
+
},
|
| 83 |
+
{
|
| 84 |
+
"id": "response",
|
| 85 |
+
"track": "interactive",
|
| 86 |
+
"label": "Interactive Response",
|
| 87 |
+
"shortLabel": "Response",
|
| 88 |
+
"description": "Update fulfillment, transition continuity, achievement rate, and successful-response latency.",
|
| 89 |
+
"defaultMetric": "vuf",
|
| 90 |
+
"metrics": ["vuf", "auf", "pvc", "pac", "pvuar", "pauar", "pvrl", "parl"]
|
| 91 |
+
},
|
| 92 |
+
{
|
| 93 |
+
"id": "state",
|
| 94 |
+
"track": "interactive",
|
| 95 |
+
"label": "State Retention & Reuse",
|
| 96 |
+
"shortLabel": "State",
|
| 97 |
+
"description": "Preservation of untargeted states and correct reuse of information established earlier.",
|
| 98 |
+
"defaultMetric": "vsr",
|
| 99 |
+
"metrics": ["vsr", "asr", "hdf"]
|
| 100 |
+
},
|
| 101 |
+
{
|
| 102 |
+
"id": "adjusted",
|
| 103 |
+
"track": "diagnostics",
|
| 104 |
+
"label": "Success & Coverage Adjustments",
|
| 105 |
+
"shortLabel": "Adjusted",
|
| 106 |
+
"description": "Adjusted diagnostics that penalize unachieved updates and unestablished dependency sources; these are reported separately from the 32 core metrics.",
|
| 107 |
+
"defaultMetric": "sa_pvrl",
|
| 108 |
+
"metrics": ["sa_pvrl", "sa_parl", "ca_hdf_a", "ca_hdf_l"]
|
| 109 |
+
}
|
| 110 |
+
],
|
| 111 |
+
"metrics": {
|
| 112 |
+
"va": {
|
| 113 |
+
"abbr": "VA",
|
| 114 |
+
"name": "Visual Aesthetics",
|
| 115 |
+
"direction": "higher",
|
| 116 |
+
"range": "[0, 1]",
|
| 117 |
+
"unit": "",
|
| 118 |
+
"evaluator": "LAION Aesthetic Predictor",
|
| 119 |
+
"description": "Perceptual visual appeal, averaged over six 30-second intervals."
|
| 120 |
+
},
|
| 121 |
+
"vq": {
|
| 122 |
+
"abbr": "VQ",
|
| 123 |
+
"name": "Visual Quality",
|
| 124 |
+
"direction": "higher",
|
| 125 |
+
"range": "1–5",
|
| 126 |
+
"unit": "",
|
| 127 |
+
"evaluator": "Gemini 3.1 Pro",
|
| 128 |
+
"description": "Visual fidelity, subject integrity, motion naturalness, and artifact control."
|
| 129 |
+
},
|
| 130 |
+
"pq": {
|
| 131 |
+
"abbr": "PQ",
|
| 132 |
+
"name": "Production Quality",
|
| 133 |
+
"direction": "higher",
|
| 134 |
+
"range": "Original evaluator scale",
|
| 135 |
+
"unit": "",
|
| 136 |
+
"evaluator": "Audiobox Aesthetics",
|
| 137 |
+
"description": "Perceptual and production fidelity of the generated audio."
|
| 138 |
+
},
|
| 139 |
+
"aq": {
|
| 140 |
+
"abbr": "AQ",
|
| 141 |
+
"name": "Audio Quality",
|
| 142 |
+
"direction": "higher",
|
| 143 |
+
"range": "1–5",
|
| 144 |
+
"unit": "",
|
| 145 |
+
"evaluator": "Gemini 3.1 Pro",
|
| 146 |
+
"description": "Audio naturalness and artifact control."
|
| 147 |
+
},
|
| 148 |
+
"avalign": {
|
| 149 |
+
"abbr": "AVAlign",
|
| 150 |
+
"name": "Audio-Video Alignment",
|
| 151 |
+
"direction": "higher",
|
| 152 |
+
"range": "Cosine similarity",
|
| 153 |
+
"unit": "",
|
| 154 |
+
"evaluator": "ImageBind",
|
| 155 |
+
"description": "Semantic correspondence between generated audio and visual content."
|
| 156 |
+
},
|
| 157 |
+
"avsync": {
|
| 158 |
+
"abbr": "AVSync",
|
| 159 |
+
"name": "Audio-Video Synchronization",
|
| 160 |
+
"direction": "lower",
|
| 161 |
+
"range": "≥ 0",
|
| 162 |
+
"unit": "s",
|
| 163 |
+
"evaluator": "Synchformer",
|
| 164 |
+
"description": "Absolute predicted temporal offset between audio and video."
|
| 165 |
+
},
|
| 166 |
+
"nbc": {
|
| 167 |
+
"abbr": "NBC",
|
| 168 |
+
"name": "Native Boundary Continuity",
|
| 169 |
+
"direction": "higher",
|
| 170 |
+
"range": "[0, 100]",
|
| 171 |
+
"unit": "",
|
| 172 |
+
"evaluator": "Deterministic artifact detector",
|
| 173 |
+
"description": "Continuity at model-native generation-unit boundaries, accounting for black frames, repetition, freezing, and flashes."
|
| 174 |
+
},
|
| 175 |
+
"fps": {
|
| 176 |
+
"abbr": "FPS",
|
| 177 |
+
"name": "Frames per Second",
|
| 178 |
+
"direction": "higher",
|
| 179 |
+
"range": "≥ 0",
|
| 180 |
+
"unit": "fps",
|
| 181 |
+
"evaluator": "Runtime measurement",
|
| 182 |
+
"description": "Generated video frames per unit generation time under the default recommended configuration."
|
| 183 |
+
},
|
| 184 |
+
"ttfc": {
|
| 185 |
+
"abbr": "TTFC",
|
| 186 |
+
"name": "Time to First Chunk",
|
| 187 |
+
"direction": "lower",
|
| 188 |
+
"range": "≥ 0",
|
| 189 |
+
"unit": "s",
|
| 190 |
+
"evaluator": "Runtime measurement",
|
| 191 |
+
"description": "Elapsed time from receiving a generation request to producing the first output chunk."
|
| 192 |
+
},
|
| 193 |
+
"vif": {
|
| 194 |
+
"abbr": "VIF",
|
| 195 |
+
"name": "Video Instruction Fulfillment",
|
| 196 |
+
"direction": "higher",
|
| 197 |
+
"range": "1–5",
|
| 198 |
+
"unit": "",
|
| 199 |
+
"evaluator": "Gemini 3.1 Pro + case checklist",
|
| 200 |
+
"description": "Completeness of visual requirements over the full progressive output."
|
| 201 |
+
},
|
| 202 |
+
"aif": {
|
| 203 |
+
"abbr": "AIF",
|
| 204 |
+
"name": "Audio Instruction Fulfillment",
|
| 205 |
+
"direction": "higher",
|
| 206 |
+
"range": "1–5",
|
| 207 |
+
"unit": "",
|
| 208 |
+
"evaluator": "Gemini 3.1 Pro + case checklist",
|
| 209 |
+
"description": "Completeness of audio requirements over the full progressive output."
|
| 210 |
+
},
|
| 211 |
+
"vid": {
|
| 212 |
+
"abbr": "VID",
|
| 213 |
+
"name": "Video Instruction Drift",
|
| 214 |
+
"direction": "lower",
|
| 215 |
+
"range": "[0, 4]",
|
| 216 |
+
"unit": "",
|
| 217 |
+
"evaluator": "Gemini 3.1 Pro + case checklist",
|
| 218 |
+
"description": "Absolute change in visual instruction adherence between the first and last intervals."
|
| 219 |
+
},
|
| 220 |
+
"aid": {
|
| 221 |
+
"abbr": "AID",
|
| 222 |
+
"name": "Audio Instruction Drift",
|
| 223 |
+
"direction": "lower",
|
| 224 |
+
"range": "[0, 4]",
|
| 225 |
+
"unit": "",
|
| 226 |
+
"evaluator": "Gemini 3.1 Pro + case checklist",
|
| 227 |
+
"description": "Absolute change in audio instruction adherence between the first and last intervals."
|
| 228 |
+
},
|
| 229 |
+
"va_d": {
|
| 230 |
+
"abbr": "VA-D",
|
| 231 |
+
"name": "Visual Aesthetics Drift",
|
| 232 |
+
"direction": "lower",
|
| 233 |
+
"range": "VA units",
|
| 234 |
+
"unit": "",
|
| 235 |
+
"evaluator": "LAION Aesthetic Predictor",
|
| 236 |
+
"description": "Absolute change in visual aesthetics between the first and last intervals."
|
| 237 |
+
},
|
| 238 |
+
"vq_d": {
|
| 239 |
+
"abbr": "VQ-D",
|
| 240 |
+
"name": "Visual Quality Drift",
|
| 241 |
+
"direction": "lower",
|
| 242 |
+
"range": "VQ units",
|
| 243 |
+
"unit": "",
|
| 244 |
+
"evaluator": "Gemini 3.1 Pro",
|
| 245 |
+
"description": "Absolute change in visual quality between the first and last intervals."
|
| 246 |
+
},
|
| 247 |
+
"pq_d": {
|
| 248 |
+
"abbr": "PQ-D",
|
| 249 |
+
"name": "Production Quality Drift",
|
| 250 |
+
"direction": "lower",
|
| 251 |
+
"range": "PQ units",
|
| 252 |
+
"unit": "",
|
| 253 |
+
"evaluator": "Audiobox Aesthetics",
|
| 254 |
+
"description": "Absolute change in production quality between the first and last intervals."
|
| 255 |
+
},
|
| 256 |
+
"aq_d": {
|
| 257 |
+
"abbr": "AQ-D",
|
| 258 |
+
"name": "Audio Quality Drift",
|
| 259 |
+
"direction": "lower",
|
| 260 |
+
"range": "AQ units",
|
| 261 |
+
"unit": "",
|
| 262 |
+
"evaluator": "Gemini 3.1 Pro",
|
| 263 |
+
"description": "Absolute change in audio quality between the first and last intervals."
|
| 264 |
+
},
|
| 265 |
+
"sc": {
|
| 266 |
+
"abbr": "SC",
|
| 267 |
+
"name": "Subject Consistency",
|
| 268 |
+
"direction": "higher",
|
| 269 |
+
"range": "Original evaluator scale",
|
| 270 |
+
"unit": "",
|
| 271 |
+
"evaluator": "VBench-Long protocol",
|
| 272 |
+
"description": "Temporal consistency of subject appearance over the generated sequence."
|
| 273 |
+
},
|
| 274 |
+
"bc": {
|
| 275 |
+
"abbr": "BC",
|
| 276 |
+
"name": "Background Consistency",
|
| 277 |
+
"direction": "higher",
|
| 278 |
+
"range": "Original evaluator scale",
|
| 279 |
+
"unit": "",
|
| 280 |
+
"evaluator": "VBench-Long protocol",
|
| 281 |
+
"description": "Temporal consistency of background scenes over the generated sequence."
|
| 282 |
+
},
|
| 283 |
+
"avalign_d": {
|
| 284 |
+
"abbr": "AVAlign-D",
|
| 285 |
+
"name": "Audio-Video Alignment Drift",
|
| 286 |
+
"direction": "lower",
|
| 287 |
+
"range": "AVAlign units",
|
| 288 |
+
"unit": "",
|
| 289 |
+
"evaluator": "ImageBind",
|
| 290 |
+
"description": "Absolute change in audio-video semantic correspondence between the first and last intervals."
|
| 291 |
+
},
|
| 292 |
+
"avsync_d": {
|
| 293 |
+
"abbr": "AVSync-D",
|
| 294 |
+
"name": "Audio-Video Synchronization Drift",
|
| 295 |
+
"direction": "lower",
|
| 296 |
+
"range": "AVSync units",
|
| 297 |
+
"unit": "s",
|
| 298 |
+
"evaluator": "Synchformer",
|
| 299 |
+
"description": "Absolute change in audio-video synchronization offset between the first and last intervals."
|
| 300 |
+
},
|
| 301 |
+
"vuf": {
|
| 302 |
+
"abbr": "VUF",
|
| 303 |
+
"name": "Video Update Fulfillment",
|
| 304 |
+
"direction": "higher",
|
| 305 |
+
"range": "1–5",
|
| 306 |
+
"unit": "",
|
| 307 |
+
"evaluator": "Gemini 3.1 Pro + update checklist",
|
| 308 |
+
"description": "Completeness of each runtime update's visual targets."
|
| 309 |
+
},
|
| 310 |
+
"auf": {
|
| 311 |
+
"abbr": "AUF",
|
| 312 |
+
"name": "Audio Update Fulfillment",
|
| 313 |
+
"direction": "higher",
|
| 314 |
+
"range": "1–5",
|
| 315 |
+
"unit": "",
|
| 316 |
+
"evaluator": "Gemini 3.1 Pro + update checklist",
|
| 317 |
+
"description": "Completeness of each runtime update's audio targets."
|
| 318 |
+
},
|
| 319 |
+
"pvc": {
|
| 320 |
+
"abbr": "PVC",
|
| 321 |
+
"name": "Prompt-Based Visual Continuity",
|
| 322 |
+
"direction": "higher",
|
| 323 |
+
"range": "1–5",
|
| 324 |
+
"unit": "",
|
| 325 |
+
"evaluator": "Boundary detector + Gemini 3.1 Pro",
|
| 326 |
+
"description": "Visual continuity across prompt-update boundaries while allowing requested changes."
|
| 327 |
+
},
|
| 328 |
+
"pac": {
|
| 329 |
+
"abbr": "PAC",
|
| 330 |
+
"name": "Prompt-Based Audio Continuity",
|
| 331 |
+
"direction": "higher",
|
| 332 |
+
"range": "1–5",
|
| 333 |
+
"unit": "",
|
| 334 |
+
"evaluator": "Gemini 3.1 Pro",
|
| 335 |
+
"description": "Audio continuity across prompt-update boundaries while allowing requested changes."
|
| 336 |
+
},
|
| 337 |
+
"pvuar": {
|
| 338 |
+
"abbr": "PVUAR",
|
| 339 |
+
"name": "Prompt-Based Visual Update Achievement Rate",
|
| 340 |
+
"direction": "higher",
|
| 341 |
+
"range": "[0, 1]",
|
| 342 |
+
"unit": "",
|
| 343 |
+
"evaluator": "Gemini 3.1 Pro + update checklist",
|
| 344 |
+
"description": "Fraction of applicable visual updates whose core target is clearly realized."
|
| 345 |
+
},
|
| 346 |
+
"pauar": {
|
| 347 |
+
"abbr": "PAUAR",
|
| 348 |
+
"name": "Prompt-Based Audio Update Achievement Rate",
|
| 349 |
+
"direction": "higher",
|
| 350 |
+
"range": "[0, 1]",
|
| 351 |
+
"unit": "",
|
| 352 |
+
"evaluator": "Gemini 3.1 Pro + update checklist",
|
| 353 |
+
"description": "Fraction of applicable audio updates whose core target is clearly realized."
|
| 354 |
+
},
|
| 355 |
+
"pvrl": {
|
| 356 |
+
"abbr": "PVRL",
|
| 357 |
+
"name": "Prompt-Based Visual Response Latency",
|
| 358 |
+
"direction": "lower",
|
| 359 |
+
"range": "Media time",
|
| 360 |
+
"unit": "s",
|
| 361 |
+
"evaluator": "Media-time measurement",
|
| 362 |
+
"description": "Conditional latency to the first clear realization of an achieved visual target."
|
| 363 |
+
},
|
| 364 |
+
"parl": {
|
| 365 |
+
"abbr": "PARL",
|
| 366 |
+
"name": "Prompt-Based Audio Response Latency",
|
| 367 |
+
"direction": "lower",
|
| 368 |
+
"range": "Media time",
|
| 369 |
+
"unit": "s",
|
| 370 |
+
"evaluator": "Media-time measurement",
|
| 371 |
+
"description": "Conditional latency to the first clear realization of an achieved audio target."
|
| 372 |
+
},
|
| 373 |
+
"vsr": {
|
| 374 |
+
"abbr": "VSR",
|
| 375 |
+
"name": "Visual State Retention",
|
| 376 |
+
"direction": "higher",
|
| 377 |
+
"range": "1–5",
|
| 378 |
+
"unit": "",
|
| 379 |
+
"evaluator": "Gemini 3.1 Pro",
|
| 380 |
+
"description": "Preservation of subject appearance and environment after accounting for requested changes."
|
| 381 |
+
},
|
| 382 |
+
"asr": {
|
| 383 |
+
"abbr": "ASR",
|
| 384 |
+
"name": "Audio State Retention",
|
| 385 |
+
"direction": "higher",
|
| 386 |
+
"range": "1–5",
|
| 387 |
+
"unit": "",
|
| 388 |
+
"evaluator": "Gemini 3.1 Pro",
|
| 389 |
+
"description": "Preservation of recurring music, ambience, and persistent sounds not targeted by an update."
|
| 390 |
+
},
|
| 391 |
+
"hdf": {
|
| 392 |
+
"abbr": "HDF",
|
| 393 |
+
"name": "History-Dependency Following",
|
| 394 |
+
"direction": "higher",
|
| 395 |
+
"range": "1–5",
|
| 396 |
+
"unit": "",
|
| 397 |
+
"evaluator": "Gemini 3.1 Pro",
|
| 398 |
+
"description": "Correct execution of updates using relevant earlier states, evaluated only when the required source state was established."
|
| 399 |
+
},
|
| 400 |
+
"sa_pvrl": {
|
| 401 |
+
"abbr": "SA-PVRL",
|
| 402 |
+
"name": "Success-Adjusted Visual Response Latency",
|
| 403 |
+
"direction": "lower",
|
| 404 |
+
"range": "[0, 30]",
|
| 405 |
+
"unit": "s",
|
| 406 |
+
"evaluator": "Achievement-adjusted media-time measurement",
|
| 407 |
+
"description": "Visual response latency with the 30-second observation-window cap assigned to every unachieved target."
|
| 408 |
+
},
|
| 409 |
+
"sa_parl": {
|
| 410 |
+
"abbr": "SA-PARL",
|
| 411 |
+
"name": "Success-Adjusted Audio Response Latency",
|
| 412 |
+
"direction": "lower",
|
| 413 |
+
"range": "[0, 30]",
|
| 414 |
+
"unit": "s",
|
| 415 |
+
"evaluator": "Achievement-adjusted media-time measurement",
|
| 416 |
+
"description": "Audio response latency with the 30-second observation-window cap assigned to every unachieved target."
|
| 417 |
+
},
|
| 418 |
+
"ca_hdf_a": {
|
| 419 |
+
"abbr": "CA-HDF-A",
|
| 420 |
+
"name": "Coverage-Adjusted Adjacent HDF",
|
| 421 |
+
"direction": "higher",
|
| 422 |
+
"range": "[0, 1]",
|
| 423 |
+
"unit": "",
|
| 424 |
+
"evaluator": "Source establishment + normalized conditional HDF",
|
| 425 |
+
"description": "Adjacent-dependency quality normalized to [0,1], with unestablished source states assigned zero."
|
| 426 |
+
},
|
| 427 |
+
"ca_hdf_l": {
|
| 428 |
+
"abbr": "CA-HDF-L",
|
| 429 |
+
"name": "Coverage-Adjusted Long-Range HDF",
|
| 430 |
+
"direction": "higher",
|
| 431 |
+
"range": "[0, 1]",
|
| 432 |
+
"unit": "",
|
| 433 |
+
"evaluator": "Source establishment + normalized conditional HDF",
|
| 434 |
+
"description": "Long-range dependency quality normalized to [0,1], with unestablished source states assigned zero."
|
| 435 |
+
}
|
| 436 |
+
},
|
| 437 |
+
"models": [
|
| 438 |
+
{
|
| 439 |
+
"name": "PixVerse R1",
|
| 440 |
+
"paradigm": "Native joint",
|
| 441 |
+
"access": "Web",
|
| 442 |
+
"reference": "https://pixverse.ai/en/blog/pixverse-launches-r1-real-time-world-model",
|
| 443 |
+
"scores": {
|
| 444 |
+
"va": 0.529, "vq": 2.428, "pq": 6.348, "aq": 2.810, "avalign": 0.234, "avsync": 0.855,
|
| 445 |
+
"nbc": null, "fps": null, "ttfc": null,
|
| 446 |
+
"vif": 2.976, "aif": 2.511, "vid": 0.484, "aid": 0.425,
|
| 447 |
+
"va_d": 0.032, "vq_d": 0.253, "pq_d": 0.421, "aq_d": 0.626, "sc": 0.907, "bc": 0.930, "avalign_d": 0.065, "avsync_d": 0.579,
|
| 448 |
+
"vuf": 2.573, "auf": 2.895, "pvc": 4.278, "pac": 2.544, "pvuar": 0.350, "pauar": 0.466, "pvrl": 12.992, "parl": 10.352,
|
| 449 |
+
"vsr": 2.430, "asr": 4.108, "hdf": 2.461,
|
| 450 |
+
"sa_pvrl": 24.011, "sa_parl": 20.855, "ca_hdf_a": 0.232, "ca_hdf_l": 0.234
|
| 451 |
+
}
|
| 452 |
+
},
|
| 453 |
+
{
|
| 454 |
+
"name": "HappyOyster",
|
| 455 |
+
"paradigm": "Native joint",
|
| 456 |
+
"access": "Web",
|
| 457 |
+
"reference": "https://www.alizila.com/alibaba-launches-happyoyster-a-world-model-product-for-real-time-immersive-creation-and-interaction/",
|
| 458 |
+
"scores": {
|
| 459 |
+
"va": 0.529, "vq": 2.785, "pq": 6.817, "aq": 3.157, "avalign": 0.206, "avsync": 1.044,
|
| 460 |
+
"nbc": null, "fps": null, "ttfc": null,
|
| 461 |
+
"vif": 3.565, "aif": 2.692, "vid": 0.510, "aid": 0.508,
|
| 462 |
+
"va_d": 0.032, "vq_d": 0.417, "pq_d": 0.623, "aq_d": 0.411, "sc": 0.904, "bc": 0.934, "avalign_d": 0.077, "avsync_d": 0.534,
|
| 463 |
+
"vuf": 2.975, "auf": 2.879, "pvc": 3.744, "pac": 3.509, "pvuar": 0.518, "pauar": 0.488, "pvrl": 14.484, "parl": 13.621,
|
| 464 |
+
"vsr": 2.799, "asr": 3.772, "hdf": 2.817,
|
| 465 |
+
"sa_pvrl": 21.991, "sa_parl": 21.861, "ca_hdf_a": 0.354, "ca_hdf_l": 0.306
|
| 466 |
+
}
|
| 467 |
+
},
|
| 468 |
+
{
|
| 469 |
+
"name": "OmniForcing",
|
| 470 |
+
"paradigm": "Native joint",
|
| 471 |
+
"access": "Open",
|
| 472 |
+
"reference": "https://arxiv.org/abs/2603.11647",
|
| 473 |
+
"scores": {
|
| 474 |
+
"va": 0.554, "vq": 2.374, "pq": 6.351, "aq": 2.528, "avalign": 0.119, "avsync": 1.423,
|
| 475 |
+
"nbc": 98.808, "fps": 12.799, "ttfc": 3.998,
|
| 476 |
+
"vif": 2.423, "aif": 2.343, "vid": 0.572, "aid": 0.277,
|
| 477 |
+
"va_d": 0.083, "vq_d": 0.273, "pq_d": 0.429, "aq_d": 0.506, "sc": 0.962, "bc": 0.953, "avalign_d": 0.081, "avsync_d": 0.479,
|
| 478 |
+
"vuf": 1.848, "auf": 2.242, "pvc": 4.161, "pac": 3.369, "pvuar": 0.053, "pauar": 0.316, "pvrl": 13.295, "parl": 7.925,
|
| 479 |
+
"vsr": 2.624, "asr": 3.388, "hdf": 2.487,
|
| 480 |
+
"sa_pvrl": 29.128, "sa_parl": 23.046, "ca_hdf_a": 0.136, "ca_hdf_l": 0.109
|
| 481 |
+
}
|
| 482 |
+
},
|
| 483 |
+
{
|
| 484 |
+
"name": "Odyssey-2",
|
| 485 |
+
"paradigm": "Cascaded",
|
| 486 |
+
"access": "Web",
|
| 487 |
+
"reference": "https://odyssey.ml/introducing-odyssey-2",
|
| 488 |
+
"scores": {
|
| 489 |
+
"va": 0.531, "vq": 2.820, "pq": 6.426, "aq": 2.659, "avalign": 0.260, "avsync": 0.946,
|
| 490 |
+
"nbc": null, "fps": null, "ttfc": null,
|
| 491 |
+
"vif": 3.106, "aif": 2.778, "vid": 0.500, "aid": 0.566,
|
| 492 |
+
"va_d": 0.040, "vq_d": 0.463, "pq_d": 0.362, "aq_d": 0.456, "sc": 0.976, "bc": 0.966, "avalign_d": 0.064, "avsync_d": 0.548,
|
| 493 |
+
"vuf": 2.408, "auf": 2.244, "pvc": 3.919, "pac": 1.749, "pvuar": 0.274, "pauar": 0.308, "pvrl": 18.758, "parl": 15.733,
|
| 494 |
+
"vsr": 2.836, "asr": 2.707, "hdf": 2.554,
|
| 495 |
+
"sa_pvrl": 26.838, "sa_parl": 25.611, "ca_hdf_a": 0.196, "ca_hdf_l": 0.168
|
| 496 |
+
}
|
| 497 |
+
},
|
| 498 |
+
{
|
| 499 |
+
"name": "Self-Forcing",
|
| 500 |
+
"paradigm": "Cascaded",
|
| 501 |
+
"access": "Open",
|
| 502 |
+
"reference": "https://arxiv.org/abs/2506.08009",
|
| 503 |
+
"scores": {
|
| 504 |
+
"va": 0.585, "vq": 2.753, "pq": 6.453, "aq": 2.623, "avalign": 0.256, "avsync": 0.919,
|
| 505 |
+
"nbc": 94.359, "fps": 15.628, "ttfc": 1.278,
|
| 506 |
+
"vif": 3.019, "aif": 2.810, "vid": 0.373, "aid": 0.457,
|
| 507 |
+
"va_d": 0.025, "vq_d": 0.323, "pq_d": 0.341, "aq_d": 0.488, "sc": 0.981, "bc": 0.969, "avalign_d": 0.054, "avsync_d": 0.476,
|
| 508 |
+
"vuf": 2.237, "auf": 2.339, "pvc": 3.912, "pac": 1.784, "pvuar": 0.185, "pauar": 0.334, "pvrl": 14.164, "parl": 12.369,
|
| 509 |
+
"vsr": 2.851, "asr": 2.813, "hdf": 2.348,
|
| 510 |
+
"sa_pvrl": 27.081, "sa_parl": 24.156, "ca_hdf_a": 0.206, "ca_hdf_l": 0.169
|
| 511 |
+
}
|
| 512 |
+
},
|
| 513 |
+
{
|
| 514 |
+
"name": "LongLive",
|
| 515 |
+
"paradigm": "Cascaded",
|
| 516 |
+
"access": "Open",
|
| 517 |
+
"reference": "https://arxiv.org/abs/2509.22622",
|
| 518 |
+
"scores": {
|
| 519 |
+
"va": 0.605, "vq": 2.768, "pq": 6.459, "aq": 2.696, "avalign": 0.272, "avsync": 0.969,
|
| 520 |
+
"nbc": 85.418, "fps": 10.125, "ttfc": 1.381,
|
| 521 |
+
"vif": 3.164, "aif": 2.814, "vid": 0.317, "aid": 0.581,
|
| 522 |
+
"va_d": 0.023, "vq_d": 0.367, "pq_d": 0.280, "aq_d": 0.475, "sc": 0.986, "bc": 0.973, "avalign_d": 0.052, "avsync_d": 0.476,
|
| 523 |
+
"vuf": 2.341, "auf": 2.138, "pvc": 3.631, "pac": 1.809, "pvuar": 0.241, "pauar": 0.266, "pvrl": 11.792, "parl": 13.078,
|
| 524 |
+
"vsr": 2.724, "asr": 2.712, "hdf": 2.212,
|
| 525 |
+
"sa_pvrl": 25.575, "sa_parl": 25.490, "ca_hdf_a": 0.186, "ca_hdf_l": 0.187
|
| 526 |
+
}
|
| 527 |
+
},
|
| 528 |
+
{
|
| 529 |
+
"name": "Rolling-Forcing",
|
| 530 |
+
"paradigm": "Cascaded",
|
| 531 |
+
"access": "Open",
|
| 532 |
+
"reference": "https://arxiv.org/abs/2509.25161",
|
| 533 |
+
"scores": {
|
| 534 |
+
"va": 0.572, "vq": 2.757, "pq": 6.393, "aq": 2.673, "avalign": 0.265, "avsync": 1.078,
|
| 535 |
+
"nbc": 96.657, "fps": 10.603, "ttfc": 2.962,
|
| 536 |
+
"vif": 3.009, "aif": 2.858, "vid": 0.425, "aid": 0.474,
|
| 537 |
+
"va_d": 0.043, "vq_d": 0.427, "pq_d": 0.329, "aq_d": 0.425, "sc": 0.980, "bc": 0.966, "avalign_d": 0.064, "avsync_d": 0.506,
|
| 538 |
+
"vuf": 2.315, "auf": 2.221, "pvc": 4.086, "pac": 1.800, "pvuar": 0.217, "pauar": 0.298, "pvrl": 13.234, "parl": 12.820,
|
| 539 |
+
"vsr": 2.542, "asr": 2.597, "hdf": 2.502,
|
| 540 |
+
"sa_pvrl": 26.355, "sa_parl": 24.941, "ca_hdf_a": 0.250, "ca_hdf_l": 0.155
|
| 541 |
+
}
|
| 542 |
+
},
|
| 543 |
+
{
|
| 544 |
+
"name": "Deep Forcing",
|
| 545 |
+
"paradigm": "Cascaded",
|
| 546 |
+
"access": "Open",
|
| 547 |
+
"reference": "https://arxiv.org/abs/2512.05081",
|
| 548 |
+
"scores": {
|
| 549 |
+
"va": 0.597, "vq": 2.632, "pq": 6.523, "aq": 2.668, "avalign": 0.280, "avsync": 0.878,
|
| 550 |
+
"nbc": 92.482, "fps": 11.065, "ttfc": 1.397,
|
| 551 |
+
"vif": 3.041, "aif": 2.629, "vid": 0.359, "aid": 0.545,
|
| 552 |
+
"va_d": 0.023, "vq_d": 0.334, "pq_d": 0.289, "aq_d": 0.497, "sc": 0.979, "bc": 0.967, "avalign_d": 0.062, "avsync_d": 0.553,
|
| 553 |
+
"vuf": 2.295, "auf": 2.146, "pvc": 3.879, "pac": 1.770, "pvuar": 0.220, "pauar": 0.288, "pvrl": 13.433, "parl": 12.650,
|
| 554 |
+
"vsr": 2.449, "asr": 2.601, "hdf": 2.206,
|
| 555 |
+
"sa_pvrl": 26.420, "sa_parl": 25.024, "ca_hdf_a": 0.181, "ca_hdf_l": 0.150
|
| 556 |
+
}
|
| 557 |
+
},
|
| 558 |
+
{
|
| 559 |
+
"name": "MemFlow",
|
| 560 |
+
"paradigm": "Cascaded",
|
| 561 |
+
"access": "Open",
|
| 562 |
+
"reference": "https://arxiv.org/abs/2512.14699",
|
| 563 |
+
"scores": {
|
| 564 |
+
"va": 0.600, "vq": 2.836, "pq": 6.407, "aq": 2.651, "avalign": 0.269, "avsync": 1.035,
|
| 565 |
+
"nbc": 87.724, "fps": 10.840, "ttfc": 1.343,
|
| 566 |
+
"vif": 3.142, "aif": 2.854, "vid": 0.333, "aid": 0.492,
|
| 567 |
+
"va_d": 0.028, "vq_d": 0.502, "pq_d": 0.319, "aq_d": 0.503, "sc": 0.986, "bc": 0.972, "avalign_d": 0.054, "avsync_d": 0.474,
|
| 568 |
+
"vuf": 2.309, "auf": 2.286, "pvc": 3.630, "pac": 1.880, "pvuar": 0.217, "pauar": 0.326, "pvrl": 13.698, "parl": 13.154,
|
| 569 |
+
"vsr": 2.961, "asr": 2.879, "hdf": 2.385,
|
| 570 |
+
"sa_pvrl": 26.503, "sa_parl": 24.433, "ca_hdf_a": 0.200, "ca_hdf_l": 0.216
|
| 571 |
+
}
|
| 572 |
+
},
|
| 573 |
+
{
|
| 574 |
+
"name": "Causal-Forcing",
|
| 575 |
+
"paradigm": "Cascaded",
|
| 576 |
+
"access": "Open",
|
| 577 |
+
"reference": "https://arxiv.org/abs/2602.02214",
|
| 578 |
+
"scores": {
|
| 579 |
+
"va": 0.556, "vq": 2.397, "pq": 6.383, "aq": 2.714, "avalign": 0.280, "avsync": 1.093,
|
| 580 |
+
"nbc": 99.558, "fps": 15.421, "ttfc": 1.284,
|
| 581 |
+
"vif": 2.834, "aif": 2.729, "vid": 0.364, "aid": 0.615,
|
| 582 |
+
"va_d": 0.030, "vq_d": 0.189, "pq_d": 0.320, "aq_d": 0.509, "sc": 0.952, "bc": 0.946, "avalign_d": 0.058, "avsync_d": 0.491,
|
| 583 |
+
"vuf": 2.284, "auf": 2.165, "pvc": 4.218, "pac": 1.715, "pvuar": 0.219, "pauar": 0.283, "pvrl": 14.032, "parl": 12.680,
|
| 584 |
+
"vsr": 2.218, "asr": 2.468, "hdf": 2.357,
|
| 585 |
+
"sa_pvrl": 26.497, "sa_parl": 25.117, "ca_hdf_a": 0.184, "ca_hdf_l": 0.188
|
| 586 |
+
}
|
| 587 |
+
},
|
| 588 |
+
{
|
| 589 |
+
"name": "Helios",
|
| 590 |
+
"paradigm": "Cascaded",
|
| 591 |
+
"access": "Open",
|
| 592 |
+
"reference": "https://arxiv.org/abs/2603.04379",
|
| 593 |
+
"scores": {
|
| 594 |
+
"va": 0.470, "vq": 2.176, "pq": 6.241, "aq": 2.521, "avalign": 0.200, "avsync": 0.927,
|
| 595 |
+
"nbc": 83.657, "fps": 10.231, "ttfc": 8.059,
|
| 596 |
+
"vif": 2.977, "aif": 2.712, "vid": 0.694, "aid": 0.566,
|
| 597 |
+
"va_d": 0.149, "vq_d": 0.306, "pq_d": 0.649, "aq_d": 0.513, "sc": 0.967, "bc": 0.967, "avalign_d": 0.115, "avsync_d": 0.514,
|
| 598 |
+
"vuf": 2.253, "auf": 2.461, "pvc": 3.317, "pac": 1.644, "pvuar": 0.197, "pauar": 0.354, "pvrl": 14.043, "parl": 12.207,
|
| 599 |
+
"vsr": 2.405, "asr": 1.985, "hdf": 2.478,
|
| 600 |
+
"sa_pvrl": 26.841, "sa_parl": 23.712, "ca_hdf_a": 0.202, "ca_hdf_l": 0.181
|
| 601 |
+
}
|
| 602 |
+
},
|
| 603 |
+
{
|
| 604 |
+
"name": "SWIFT",
|
| 605 |
+
"paradigm": "Cascaded",
|
| 606 |
+
"access": "Open",
|
| 607 |
+
"reference": "https://arxiv.org/abs/2605.09442",
|
| 608 |
+
"scores": {
|
| 609 |
+
"va": 0.605, "vq": 2.735, "pq": 6.483, "aq": 2.680, "avalign": 0.270, "avsync": 0.970,
|
| 610 |
+
"nbc": 87.043, "fps": 12.359, "ttfc": 1.496,
|
| 611 |
+
"vif": 3.152, "aif": 2.887, "vid": 0.305, "aid": 0.515,
|
| 612 |
+
"va_d": 0.022, "vq_d": 0.411, "pq_d": 0.272, "aq_d": 0.463, "sc": 0.986, "bc": 0.973, "avalign_d": 0.049, "avsync_d": 0.501,
|
| 613 |
+
"vuf": 2.357, "auf": 2.102, "pvc": 3.615, "pac": 1.856, "pvuar": 0.246, "pauar": 0.276, "pvrl": 10.340, "parl": 12.094,
|
| 614 |
+
"vsr": 2.609, "asr": 2.705, "hdf": 2.322,
|
| 615 |
+
"sa_pvrl": 25.150, "sa_parl": 25.195, "ca_hdf_a": 0.192, "ca_hdf_l": 0.232
|
| 616 |
+
}
|
| 617 |
+
},
|
| 618 |
+
{
|
| 619 |
+
"name": "IAMFlow",
|
| 620 |
+
"paradigm": "Cascaded",
|
| 621 |
+
"access": "Open",
|
| 622 |
+
"reference": "https://arxiv.org/abs/2605.18733",
|
| 623 |
+
"scores": {
|
| 624 |
+
"va": 0.602, "vq": 2.840, "pq": 6.415, "aq": 2.625, "avalign": 0.268, "avsync": 1.016,
|
| 625 |
+
"nbc": 86.957, "fps": 6.049, "ttfc": 1.772,
|
| 626 |
+
"vif": 3.192, "aif": 2.789, "vid": 0.302, "aid": 0.600,
|
| 627 |
+
"va_d": 0.023, "vq_d": 0.425, "pq_d": 0.331, "aq_d": 0.563, "sc": 0.986, "bc": 0.973, "avalign_d": 0.057, "avsync_d": 0.490,
|
| 628 |
+
"vuf": 2.319, "auf": 2.190, "pvc": 3.655, "pac": 1.819, "pvuar": 0.222, "pauar": 0.297, "pvrl": 11.683, "parl": 13.001,
|
| 629 |
+
"vsr": 2.836, "asr": 2.903, "hdf": 2.424,
|
| 630 |
+
"sa_pvrl": 25.976, "sa_parl": 24.936, "ca_hdf_a": 0.213, "ca_hdf_l": 0.183
|
| 631 |
+
}
|
| 632 |
+
}
|
| 633 |
+
]
|
| 634 |
+
}
|
index.html
CHANGED
|
@@ -1,19 +1,319 @@
|
|
| 1 |
<!doctype html>
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
</html>
|
|
|
|
| 1 |
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="utf-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
| 6 |
+
<meta name="description" content="Official StreamAV-Bench leaderboard for streaming audio-video generation.">
|
| 7 |
+
<meta name="theme-color" content="#f5f2ea">
|
| 8 |
+
<meta property="og:title" content="StreamAV-Bench Leaderboard">
|
| 9 |
+
<meta property="og:description" content="Metric-wise evaluation of streaming audio-video generation systems.">
|
| 10 |
+
<meta property="og:type" content="website">
|
| 11 |
+
<title>StreamAV-Bench Leaderboard</title>
|
| 12 |
+
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' rx='16' fill='%2318231f'/%3E%3Cpath d='M12 35h8l4-14 7 28 7-37 5 23h9' fill='none' stroke='%23fffef9' stroke-width='5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E">
|
| 13 |
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
| 14 |
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
| 15 |
+
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=DM+Serif+Display&display=swap" rel="stylesheet">
|
| 16 |
+
<link rel="stylesheet" href="styles.css">
|
| 17 |
+
<script src="app.js" defer></script>
|
| 18 |
+
</head>
|
| 19 |
+
<body>
|
| 20 |
+
<a class="skip-link" href="#leaderboard">Skip to leaderboard</a>
|
| 21 |
+
|
| 22 |
+
<header class="site-header">
|
| 23 |
+
<div class="shell header-inner">
|
| 24 |
+
<a class="brand" id="project-link" href="https://liukqchoco.github.io/StreamAVBench/" target="_blank" rel="noopener noreferrer">
|
| 25 |
+
<svg class="brand-mark" viewBox="0 0 42 42" role="img" aria-label="StreamAV-Bench">
|
| 26 |
+
<rect x="1" y="1" width="40" height="40" rx="11" fill="currentColor"/>
|
| 27 |
+
<path d="M9 23h4l2.6-7 4.2 14L24 11l3.4 12H33" fill="none" stroke="#fffdf7" stroke-width="2.8" stroke-linecap="round" stroke-linejoin="round"/>
|
| 28 |
+
<circle cx="33" cy="23" r="2.2" fill="#ef9b77"/>
|
| 29 |
+
</svg>
|
| 30 |
+
<span>
|
| 31 |
+
<strong>StreamAV-Bench</strong>
|
| 32 |
+
<small>Leaderboard</small>
|
| 33 |
+
</span>
|
| 34 |
+
</a>
|
| 35 |
+
|
| 36 |
+
<nav aria-label="Primary navigation">
|
| 37 |
+
<a href="#leaderboard">Results</a>
|
| 38 |
+
<a href="#metrics">Metrics</a>
|
| 39 |
+
<a href="#submission">Submit</a>
|
| 40 |
+
<a class="nav-project" href="https://liukqchoco.github.io/StreamAVBench/" target="_blank" rel="noopener noreferrer">
|
| 41 |
+
Project <span aria-hidden="true">↗</span>
|
| 42 |
+
</a>
|
| 43 |
+
</nav>
|
| 44 |
+
</div>
|
| 45 |
+
</header>
|
| 46 |
+
|
| 47 |
+
<main>
|
| 48 |
+
<section class="hero">
|
| 49 |
+
<div class="hero-grid" aria-hidden="true"></div>
|
| 50 |
+
<div class="hero-orb hero-orb-one" aria-hidden="true"></div>
|
| 51 |
+
<div class="hero-orb hero-orb-two" aria-hidden="true"></div>
|
| 52 |
+
<div class="shell hero-inner">
|
| 53 |
+
<div class="hero-copy">
|
| 54 |
+
<p class="eyebrow"><span></span><b id="release-label">Initial benchmark release</b></p>
|
| 55 |
+
<h1>StreamAV-Bench <em>Leaderboard</em></h1>
|
| 56 |
+
<p class="hero-tagline" id="hero-tagline">Streaming systems, evaluated while they run.</p>
|
| 57 |
+
<p class="hero-description" id="hero-description">
|
| 58 |
+
Official metric-wise results for streaming audio-video generation across progressive and interactive evaluation tracks.
|
| 59 |
+
</p>
|
| 60 |
+
<div class="hero-actions">
|
| 61 |
+
<a class="button button-primary" href="#leaderboard">
|
| 62 |
+
Explore results <span aria-hidden="true">↓</span>
|
| 63 |
+
</a>
|
| 64 |
+
<a class="button button-secondary" href="#submission">
|
| 65 |
+
Submit a system <span aria-hidden="true">→</span>
|
| 66 |
+
</a>
|
| 67 |
+
</div>
|
| 68 |
+
</div>
|
| 69 |
+
|
| 70 |
+
<div class="stream-card">
|
| 71 |
+
<div class="stream-card-header">
|
| 72 |
+
<span>Evaluation signal</span>
|
| 73 |
+
<i><b></b> 180-second rollout</i>
|
| 74 |
+
</div>
|
| 75 |
+
<div class="signal-group signal-progressive">
|
| 76 |
+
<div class="signal-label">
|
| 77 |
+
<strong>Progressive</strong>
|
| 78 |
+
<small>one global prompt</small>
|
| 79 |
+
</div>
|
| 80 |
+
<div class="signal-track">
|
| 81 |
+
<span style="--level: 82%"></span>
|
| 82 |
+
<span style="--level: 76%"></span>
|
| 83 |
+
<span style="--level: 70%"></span>
|
| 84 |
+
<span style="--level: 66%"></span>
|
| 85 |
+
<span style="--level: 59%"></span>
|
| 86 |
+
<span style="--level: 54%"></span>
|
| 87 |
+
</div>
|
| 88 |
+
<div class="signal-times"><span>0</span><span>60</span><span>120</span><span>180s</span></div>
|
| 89 |
+
</div>
|
| 90 |
+
<div class="signal-divider"><span>committed history</span></div>
|
| 91 |
+
<div class="signal-group signal-interactive">
|
| 92 |
+
<div class="signal-label">
|
| 93 |
+
<strong>Interactive</strong>
|
| 94 |
+
<small>five runtime updates</small>
|
| 95 |
+
</div>
|
| 96 |
+
<div class="update-track">
|
| 97 |
+
<span>P0</span><i></i><span>U1</span><i></i><span>U2</span><i></i><span>U3</span><i></i><span>U4</span><i></i><span>U5</span>
|
| 98 |
+
</div>
|
| 99 |
+
<div class="response-line">
|
| 100 |
+
<b style="--delay: 18%"></b>
|
| 101 |
+
<b style="--delay: 42%"></b>
|
| 102 |
+
<b style="--delay: 31%"></b>
|
| 103 |
+
<b style="--delay: 54%"></b>
|
| 104 |
+
<b style="--delay: 38%"></b>
|
| 105 |
+
</div>
|
| 106 |
+
</div>
|
| 107 |
+
<p class="stream-card-note"><span>◆</span> Scores expose change over time—not only the final output.</p>
|
| 108 |
+
</div>
|
| 109 |
+
</div>
|
| 110 |
+
</section>
|
| 111 |
+
|
| 112 |
+
<section class="stat-band" aria-label="Benchmark statistics">
|
| 113 |
+
<div class="shell stats">
|
| 114 |
+
<div><strong id="stat-systems">13</strong><span>evaluated systems</span></div>
|
| 115 |
+
<div><strong id="stat-metrics">32</strong><span>core metrics</span></div>
|
| 116 |
+
<div><strong>2</strong><span>streaming tracks</span></div>
|
| 117 |
+
<div><strong id="stat-scenarios">320</strong><span>verified scenarios</span></div>
|
| 118 |
+
<div><strong id="stat-duration">180s</strong><span>continuous generation</span></div>
|
| 119 |
+
</div>
|
| 120 |
+
</section>
|
| 121 |
+
|
| 122 |
+
<section class="section leaderboard-section" id="leaderboard">
|
| 123 |
+
<div class="shell">
|
| 124 |
+
<div class="section-heading split-heading">
|
| 125 |
+
<div>
|
| 126 |
+
<p class="kicker">Official results</p>
|
| 127 |
+
<h2>Compare one capability at a time.</h2>
|
| 128 |
+
</div>
|
| 129 |
+
<div class="heading-note">
|
| 130 |
+
<span class="note-icon">≠</span>
|
| 131 |
+
<p><strong>No aggregate score.</strong> StreamAV-Bench reports complementary capabilities without introducing an unsupported weighted composite.</p>
|
| 132 |
+
</div>
|
| 133 |
+
</div>
|
| 134 |
+
|
| 135 |
+
<div class="explorer">
|
| 136 |
+
<div class="track-switcher">
|
| 137 |
+
<div class="track-tabs" id="track-tabs" role="tablist" aria-label="Evaluation views"></div>
|
| 138 |
+
<p id="track-description">Quality, alignment, continuity, and efficiency metrics applied across both tracks.</p>
|
| 139 |
+
</div>
|
| 140 |
+
|
| 141 |
+
<div class="category-bar">
|
| 142 |
+
<span>View</span>
|
| 143 |
+
<div class="category-tabs" id="category-tabs" aria-label="Metric categories"></div>
|
| 144 |
+
</div>
|
| 145 |
+
|
| 146 |
+
<div class="table-panel">
|
| 147 |
+
<div class="table-panel-header">
|
| 148 |
+
<div>
|
| 149 |
+
<p class="table-kicker" id="table-kicker">Metric-wise ranking</p>
|
| 150 |
+
<h3 id="category-title">Quality & Alignment</h3>
|
| 151 |
+
<p id="category-description">Perceptual quality and semantic or temporal correspondence between audio and video.</p>
|
| 152 |
+
</div>
|
| 153 |
+
<p class="ranking-label" id="ranking-label">Ranked by <strong>Visual Aesthetics</strong><span>Higher is better</span></p>
|
| 154 |
+
</div>
|
| 155 |
+
|
| 156 |
+
<div class="toolbar">
|
| 157 |
+
<label class="search-control">
|
| 158 |
+
<span class="sr-only">Search systems</span>
|
| 159 |
+
<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="11" cy="11" r="6.5"></circle><path d="m16 16 4 4"></path></svg>
|
| 160 |
+
<input id="model-search" type="search" placeholder="Search systems…" autocomplete="off">
|
| 161 |
+
</label>
|
| 162 |
+
<label class="metric-select-control">
|
| 163 |
+
<span>Rank by</span>
|
| 164 |
+
<select id="metric-select" aria-label="Select the metric used to rank systems"></select>
|
| 165 |
+
</label>
|
| 166 |
+
<label>
|
| 167 |
+
<span>Paradigm</span>
|
| 168 |
+
<select id="paradigm-filter">
|
| 169 |
+
<option value="all">All paradigms</option>
|
| 170 |
+
<option value="Native joint">Native joint</option>
|
| 171 |
+
<option value="Cascaded">Cascaded</option>
|
| 172 |
+
</select>
|
| 173 |
+
</label>
|
| 174 |
+
<label>
|
| 175 |
+
<span>Access</span>
|
| 176 |
+
<select id="access-filter">
|
| 177 |
+
<option value="all">All access</option>
|
| 178 |
+
<option value="Open">Open</option>
|
| 179 |
+
<option value="Web">Web</option>
|
| 180 |
+
</select>
|
| 181 |
+
</label>
|
| 182 |
+
<button class="tool-button" id="reset-filters" type="button" title="Reset filters">
|
| 183 |
+
<span aria-hidden="true">↺</span> Reset
|
| 184 |
+
</button>
|
| 185 |
+
<button class="tool-button download-button" id="download-csv" type="button">
|
| 186 |
+
<span aria-hidden="true">↓</span> CSV
|
| 187 |
+
</button>
|
| 188 |
+
</div>
|
| 189 |
+
|
| 190 |
+
<div class="data-error" id="data-error" role="alert" hidden>
|
| 191 |
+
<strong>Leaderboard unavailable</strong>
|
| 192 |
+
<p>The leaderboard data could not be loaded.</p>
|
| 193 |
+
</div>
|
| 194 |
+
|
| 195 |
+
<div class="table-scroll" tabindex="0" aria-label="Scrollable leaderboard table">
|
| 196 |
+
<table id="leaderboard-table">
|
| 197 |
+
<caption class="sr-only">StreamAV-Bench system results</caption>
|
| 198 |
+
</table>
|
| 199 |
+
</div>
|
| 200 |
+
|
| 201 |
+
<div class="table-footer">
|
| 202 |
+
<p id="table-status" aria-live="polite">13 of 13 systems</p>
|
| 203 |
+
<div class="legend" aria-label="Cell highlighting legend">
|
| 204 |
+
<span><i class="legend-best"></i> Best published value</span>
|
| 205 |
+
<span><i class="legend-second"></i> Second distinct value</span>
|
| 206 |
+
<span><b>—</b> Unavailable</span>
|
| 207 |
+
</div>
|
| 208 |
+
</div>
|
| 209 |
+
</div>
|
| 210 |
+
|
| 211 |
+
<div class="evidence-note">
|
| 212 |
+
<span aria-hidden="true">i</span>
|
| 213 |
+
<div id="context-copy">
|
| 214 |
+
<p><strong>Reading the ranks.</strong> Click any metric header to rank by that metric. Published three-decimal ties use competition ranking (for example, 1, 1, 3). PVRL and PARL are conditional on successful target achievement and should be read with PVUAR and PAUAR.</p>
|
| 215 |
+
<p>HDF is evaluated only when its required source state was established. NBC, FPS, and TTFC are unavailable for PixVerse R1, HappyOyster, and Odyssey-2 because their web interfaces do not expose the required traces.</p>
|
| 216 |
+
</div>
|
| 217 |
+
</div>
|
| 218 |
+
</div>
|
| 219 |
+
</div>
|
| 220 |
+
</section>
|
| 221 |
+
|
| 222 |
+
<section class="section metrics-section" id="metrics">
|
| 223 |
+
<div class="shell">
|
| 224 |
+
<div class="section-heading split-heading">
|
| 225 |
+
<div>
|
| 226 |
+
<p class="kicker">Metric guide</p>
|
| 227 |
+
<h2>Know what each number measures.</h2>
|
| 228 |
+
</div>
|
| 229 |
+
<p class="section-intro">The cards update with the selected leaderboard category. Choose a card to rank the table by that metric.</p>
|
| 230 |
+
</div>
|
| 231 |
+
<div class="metric-guide" id="metric-guide"></div>
|
| 232 |
+
</div>
|
| 233 |
+
</section>
|
| 234 |
+
|
| 235 |
+
<section class="section protocol-section">
|
| 236 |
+
<div class="shell">
|
| 237 |
+
<div class="section-heading">
|
| 238 |
+
<p class="kicker">How to read StreamAV-Bench</p>
|
| 239 |
+
<h2>Performance is a profile, not a single number.</h2>
|
| 240 |
+
</div>
|
| 241 |
+
<div class="protocol-grid">
|
| 242 |
+
<article>
|
| 243 |
+
<span>01</span>
|
| 244 |
+
<h3>Start with the regime</h3>
|
| 245 |
+
<p>Use Progressive for fixed-prompt long-horizon behavior and Interactive for runtime response, retention, and reuse.</p>
|
| 246 |
+
</article>
|
| 247 |
+
<article>
|
| 248 |
+
<span>02</span>
|
| 249 |
+
<h3>Pair level with change</h3>
|
| 250 |
+
<p>High quality or fulfillment can coexist with temporal drift. Read absolute scores alongside their drift counterparts.</p>
|
| 251 |
+
</article>
|
| 252 |
+
<article>
|
| 253 |
+
<span>03</span>
|
| 254 |
+
<h3>Pair success with speed</h3>
|
| 255 |
+
<p>Low conditional latency does not guarantee reliable updates. Read response latency together with achievement rate.</p>
|
| 256 |
+
</article>
|
| 257 |
+
</div>
|
| 258 |
+
</div>
|
| 259 |
+
</section>
|
| 260 |
+
|
| 261 |
+
<section class="section submission-section" id="submission">
|
| 262 |
+
<div class="shell submission-grid">
|
| 263 |
+
<div>
|
| 264 |
+
<p class="kicker">Join the leaderboard</p>
|
| 265 |
+
<h2>Submit results for manual verification.</h2>
|
| 266 |
+
<p class="submission-copy">The initial leaderboard uses a review-first process so that model configuration, benchmark coverage, and reported values can be checked before publication.</p>
|
| 267 |
+
<a class="button button-primary submission-button is-disabled" id="submission-link" aria-disabled="true">
|
| 268 |
+
<span>Submission form coming soon</span><b aria-hidden="true">↗</b>
|
| 269 |
+
</a>
|
| 270 |
+
</div>
|
| 271 |
+
<ol class="submission-steps">
|
| 272 |
+
<li><span>1</span><div><strong>Run the official protocol</strong><p>Evaluate the applicable StreamAV-Bench tracks and retain the per-case outputs.</p></div></li>
|
| 273 |
+
<li><span>2</span><div><strong>Package model metadata</strong><p>Include the model version, access mode, generation configuration, and metric results.</p></div></li>
|
| 274 |
+
<li><span>3</span><div><strong>Pass manual review</strong><p>The benchmark team verifies completeness and consistency before updating the public table.</p></div></li>
|
| 275 |
+
</ol>
|
| 276 |
+
</div>
|
| 277 |
+
</section>
|
| 278 |
+
|
| 279 |
+
<section class="resource-band" aria-label="Project resources">
|
| 280 |
+
<div class="shell resources">
|
| 281 |
+
<a id="paper-link" class="resource-link is-disabled" aria-disabled="true">
|
| 282 |
+
<span class="resource-symbol">▤</span>
|
| 283 |
+
<span><strong>Paper</strong><small data-link-status>Paper coming soon</small></span>
|
| 284 |
+
<b aria-hidden="true">—</b>
|
| 285 |
+
</a>
|
| 286 |
+
<a id="code-link" class="resource-link" href="https://github.com/liukqchoco/StreamAVBench-Code" target="_blank" rel="noopener noreferrer">
|
| 287 |
+
<span class="resource-symbol"></></span>
|
| 288 |
+
<span><strong>Code</strong><small data-link-status>Code repository</small></span>
|
| 289 |
+
<b aria-hidden="true">↗</b>
|
| 290 |
+
</a>
|
| 291 |
+
<a id="dataset-link" class="resource-link is-disabled" aria-disabled="true">
|
| 292 |
+
<span class="resource-symbol">≋</span>
|
| 293 |
+
<span><strong>Dataset</strong><small data-link-status>Dataset coming soon</small></span>
|
| 294 |
+
<b aria-hidden="true">—</b>
|
| 295 |
+
</a>
|
| 296 |
+
</div>
|
| 297 |
+
</section>
|
| 298 |
+
</main>
|
| 299 |
+
|
| 300 |
+
<footer>
|
| 301 |
+
<div class="shell footer-inner">
|
| 302 |
+
<div class="footer-brand">
|
| 303 |
+
<svg class="brand-mark" viewBox="0 0 42 42" aria-hidden="true">
|
| 304 |
+
<rect x="1" y="1" width="40" height="40" rx="11" fill="currentColor"/>
|
| 305 |
+
<path d="M9 23h4l2.6-7 4.2 14L24 11l3.4 12H33" fill="none" stroke="#fffdf7" stroke-width="2.8" stroke-linecap="round" stroke-linejoin="round"/>
|
| 306 |
+
<circle cx="33" cy="23" r="2.2" fill="#ef9b77"/>
|
| 307 |
+
</svg>
|
| 308 |
+
<span><strong>StreamAV-Bench</strong><small>Persistent · responsive · synchronized</small></span>
|
| 309 |
+
</div>
|
| 310 |
+
<p>Official benchmark results. Scores are reproduced from the final paper tables.</p>
|
| 311 |
+
<a href="#leaderboard">Back to results ↑</a>
|
| 312 |
+
</div>
|
| 313 |
+
</footer>
|
| 314 |
+
|
| 315 |
+
<noscript>
|
| 316 |
+
<div class="noscript">JavaScript is required to render and sort the leaderboard.</div>
|
| 317 |
+
</noscript>
|
| 318 |
+
</body>
|
| 319 |
</html>
|
styles.css
ADDED
|
@@ -0,0 +1,1987 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
:root {
|
| 2 |
+
--ink: #18231f;
|
| 3 |
+
--ink-2: #2d3934;
|
| 4 |
+
--ink-soft: #5c6863;
|
| 5 |
+
--paper: #f7f5ef;
|
| 6 |
+
--paper-deep: #eeebe1;
|
| 7 |
+
--white: #fffef9;
|
| 8 |
+
--line: rgba(24, 35, 31, 0.14);
|
| 9 |
+
--line-strong: rgba(24, 35, 31, 0.26);
|
| 10 |
+
--blue: #4b7bec;
|
| 11 |
+
--blue-soft: #e6efff;
|
| 12 |
+
--green: #6f9659;
|
| 13 |
+
--green-soft: #e8f0df;
|
| 14 |
+
--coral: #cc664e;
|
| 15 |
+
--coral-soft: #fae9e1;
|
| 16 |
+
--purple: #7969ad;
|
| 17 |
+
--purple-soft: #eee9fa;
|
| 18 |
+
--gold: #c88b2f;
|
| 19 |
+
--gold-soft: #fff4d8;
|
| 20 |
+
--silver: #71818a;
|
| 21 |
+
--silver-soft: #edf2f4;
|
| 22 |
+
--radius: 20px;
|
| 23 |
+
--shadow: 0 26px 90px rgba(47, 58, 49, 0.1);
|
| 24 |
+
--sans: "DM Sans", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
| 25 |
+
--serif: "DM Serif Display", Georgia, serif;
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
* {
|
| 29 |
+
box-sizing: border-box;
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
html {
|
| 33 |
+
scroll-behavior: smooth;
|
| 34 |
+
scroll-padding-top: 88px;
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
body {
|
| 38 |
+
margin: 0;
|
| 39 |
+
color: var(--ink);
|
| 40 |
+
background: var(--paper);
|
| 41 |
+
font-family: var(--sans);
|
| 42 |
+
font-size: 16px;
|
| 43 |
+
line-height: 1.6;
|
| 44 |
+
-webkit-font-smoothing: antialiased;
|
| 45 |
+
text-rendering: optimizeLegibility;
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
button,
|
| 49 |
+
input,
|
| 50 |
+
select {
|
| 51 |
+
color: inherit;
|
| 52 |
+
font: inherit;
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
button,
|
| 56 |
+
a {
|
| 57 |
+
-webkit-tap-highlight-color: transparent;
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
button {
|
| 61 |
+
cursor: pointer;
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
+
a {
|
| 65 |
+
color: inherit;
|
| 66 |
+
text-decoration: none;
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
h1,
|
| 70 |
+
h2,
|
| 71 |
+
h3,
|
| 72 |
+
p {
|
| 73 |
+
margin-top: 0;
|
| 74 |
+
}
|
| 75 |
+
|
| 76 |
+
.shell {
|
| 77 |
+
width: min(1320px, calc(100% - 56px));
|
| 78 |
+
margin-inline: auto;
|
| 79 |
+
}
|
| 80 |
+
|
| 81 |
+
.sr-only {
|
| 82 |
+
position: absolute;
|
| 83 |
+
width: 1px;
|
| 84 |
+
height: 1px;
|
| 85 |
+
padding: 0;
|
| 86 |
+
margin: -1px;
|
| 87 |
+
overflow: hidden;
|
| 88 |
+
clip: rect(0, 0, 0, 0);
|
| 89 |
+
white-space: nowrap;
|
| 90 |
+
border: 0;
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
.skip-link {
|
| 94 |
+
position: fixed;
|
| 95 |
+
z-index: 1000;
|
| 96 |
+
top: 12px;
|
| 97 |
+
left: 12px;
|
| 98 |
+
padding: 9px 14px;
|
| 99 |
+
color: var(--white);
|
| 100 |
+
background: var(--ink);
|
| 101 |
+
border-radius: 9px;
|
| 102 |
+
transform: translateY(-180%);
|
| 103 |
+
}
|
| 104 |
+
|
| 105 |
+
.skip-link:focus {
|
| 106 |
+
transform: translateY(0);
|
| 107 |
+
}
|
| 108 |
+
|
| 109 |
+
.site-header {
|
| 110 |
+
position: sticky;
|
| 111 |
+
z-index: 100;
|
| 112 |
+
top: 0;
|
| 113 |
+
height: 74px;
|
| 114 |
+
background: rgba(247, 245, 239, 0.9);
|
| 115 |
+
border-bottom: 1px solid var(--line);
|
| 116 |
+
backdrop-filter: blur(18px);
|
| 117 |
+
}
|
| 118 |
+
|
| 119 |
+
.header-inner {
|
| 120 |
+
display: flex;
|
| 121 |
+
align-items: center;
|
| 122 |
+
justify-content: space-between;
|
| 123 |
+
height: 100%;
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
.brand,
|
| 127 |
+
.footer-brand {
|
| 128 |
+
display: inline-flex;
|
| 129 |
+
align-items: center;
|
| 130 |
+
gap: 11px;
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
.brand-mark {
|
| 134 |
+
width: 36px;
|
| 135 |
+
height: 36px;
|
| 136 |
+
color: var(--ink);
|
| 137 |
+
flex: none;
|
| 138 |
+
}
|
| 139 |
+
|
| 140 |
+
.brand > span,
|
| 141 |
+
.footer-brand > span {
|
| 142 |
+
display: flex;
|
| 143 |
+
flex-direction: column;
|
| 144 |
+
line-height: 1.15;
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
.brand strong,
|
| 148 |
+
.footer-brand strong {
|
| 149 |
+
font-size: 14px;
|
| 150 |
+
letter-spacing: -0.02em;
|
| 151 |
+
}
|
| 152 |
+
|
| 153 |
+
.brand small,
|
| 154 |
+
.footer-brand small {
|
| 155 |
+
margin-top: 3px;
|
| 156 |
+
color: var(--ink-soft);
|
| 157 |
+
font-size: 10px;
|
| 158 |
+
font-weight: 600;
|
| 159 |
+
letter-spacing: 0.1em;
|
| 160 |
+
text-transform: uppercase;
|
| 161 |
+
}
|
| 162 |
+
|
| 163 |
+
.site-header nav {
|
| 164 |
+
display: flex;
|
| 165 |
+
align-items: center;
|
| 166 |
+
gap: 30px;
|
| 167 |
+
color: var(--ink-soft);
|
| 168 |
+
font-size: 13px;
|
| 169 |
+
font-weight: 700;
|
| 170 |
+
}
|
| 171 |
+
|
| 172 |
+
.site-header nav a {
|
| 173 |
+
transition: color 150ms ease;
|
| 174 |
+
}
|
| 175 |
+
|
| 176 |
+
.site-header nav a:hover {
|
| 177 |
+
color: var(--ink);
|
| 178 |
+
}
|
| 179 |
+
|
| 180 |
+
.site-header .nav-project {
|
| 181 |
+
padding: 9px 15px;
|
| 182 |
+
color: var(--ink);
|
| 183 |
+
border: 1px solid var(--line-strong);
|
| 184 |
+
border-radius: 999px;
|
| 185 |
+
}
|
| 186 |
+
|
| 187 |
+
.hero {
|
| 188 |
+
position: relative;
|
| 189 |
+
padding: 70px 0 64px;
|
| 190 |
+
overflow: hidden;
|
| 191 |
+
}
|
| 192 |
+
|
| 193 |
+
.hero-grid {
|
| 194 |
+
position: absolute;
|
| 195 |
+
inset: 0;
|
| 196 |
+
background:
|
| 197 |
+
linear-gradient(rgba(24, 35, 31, 0.037) 1px, transparent 1px),
|
| 198 |
+
linear-gradient(90deg, rgba(24, 35, 31, 0.037) 1px, transparent 1px);
|
| 199 |
+
background-size: 48px 48px;
|
| 200 |
+
mask-image: linear-gradient(to bottom, #000, transparent 94%);
|
| 201 |
+
pointer-events: none;
|
| 202 |
+
}
|
| 203 |
+
|
| 204 |
+
.hero-orb {
|
| 205 |
+
position: absolute;
|
| 206 |
+
border-radius: 50%;
|
| 207 |
+
filter: blur(2px);
|
| 208 |
+
pointer-events: none;
|
| 209 |
+
}
|
| 210 |
+
|
| 211 |
+
.hero-orb-one {
|
| 212 |
+
top: -80px;
|
| 213 |
+
right: -90px;
|
| 214 |
+
width: 360px;
|
| 215 |
+
height: 360px;
|
| 216 |
+
background: var(--blue-soft);
|
| 217 |
+
opacity: 0.75;
|
| 218 |
+
}
|
| 219 |
+
|
| 220 |
+
.hero-orb-two {
|
| 221 |
+
bottom: -150px;
|
| 222 |
+
left: -130px;
|
| 223 |
+
width: 330px;
|
| 224 |
+
height: 330px;
|
| 225 |
+
background: var(--coral-soft);
|
| 226 |
+
opacity: 0.8;
|
| 227 |
+
}
|
| 228 |
+
|
| 229 |
+
.hero-inner {
|
| 230 |
+
position: relative;
|
| 231 |
+
display: grid;
|
| 232 |
+
grid-template-columns: minmax(0, 1.05fr) minmax(400px, 0.9fr);
|
| 233 |
+
align-items: center;
|
| 234 |
+
gap: 64px;
|
| 235 |
+
}
|
| 236 |
+
|
| 237 |
+
.eyebrow,
|
| 238 |
+
.kicker,
|
| 239 |
+
.table-kicker {
|
| 240 |
+
color: var(--coral);
|
| 241 |
+
font-size: 11px;
|
| 242 |
+
font-weight: 700;
|
| 243 |
+
letter-spacing: 0.13em;
|
| 244 |
+
text-transform: uppercase;
|
| 245 |
+
}
|
| 246 |
+
|
| 247 |
+
.eyebrow {
|
| 248 |
+
display: inline-flex;
|
| 249 |
+
align-items: center;
|
| 250 |
+
gap: 9px;
|
| 251 |
+
margin-bottom: 18px;
|
| 252 |
+
padding: 7px 12px;
|
| 253 |
+
color: var(--ink-soft);
|
| 254 |
+
background: rgba(255, 254, 249, 0.72);
|
| 255 |
+
border: 1px solid var(--line);
|
| 256 |
+
border-radius: 999px;
|
| 257 |
+
letter-spacing: 0.08em;
|
| 258 |
+
}
|
| 259 |
+
|
| 260 |
+
.eyebrow span {
|
| 261 |
+
width: 7px;
|
| 262 |
+
height: 7px;
|
| 263 |
+
background: var(--coral);
|
| 264 |
+
border-radius: 50%;
|
| 265 |
+
box-shadow: 0 0 0 4px rgba(204, 102, 78, 0.13);
|
| 266 |
+
}
|
| 267 |
+
|
| 268 |
+
.eyebrow b {
|
| 269 |
+
font-weight: 700;
|
| 270 |
+
}
|
| 271 |
+
|
| 272 |
+
.hero h1 {
|
| 273 |
+
max-width: 760px;
|
| 274 |
+
margin-bottom: 20px;
|
| 275 |
+
font-family: var(--serif);
|
| 276 |
+
font-size: clamp(56px, 6.4vw, 90px);
|
| 277 |
+
font-weight: 400;
|
| 278 |
+
line-height: 0.93;
|
| 279 |
+
letter-spacing: -0.055em;
|
| 280 |
+
}
|
| 281 |
+
|
| 282 |
+
.hero h1 em {
|
| 283 |
+
display: block;
|
| 284 |
+
color: var(--blue);
|
| 285 |
+
font-weight: inherit;
|
| 286 |
+
}
|
| 287 |
+
|
| 288 |
+
.hero-tagline {
|
| 289 |
+
margin-bottom: 12px;
|
| 290 |
+
font-size: clamp(20px, 2vw, 28px);
|
| 291 |
+
font-weight: 600;
|
| 292 |
+
letter-spacing: -0.035em;
|
| 293 |
+
}
|
| 294 |
+
|
| 295 |
+
.hero-description {
|
| 296 |
+
max-width: 650px;
|
| 297 |
+
margin-bottom: 24px;
|
| 298 |
+
color: var(--ink-soft);
|
| 299 |
+
font-size: 17px;
|
| 300 |
+
}
|
| 301 |
+
|
| 302 |
+
.hero-actions {
|
| 303 |
+
display: flex;
|
| 304 |
+
flex-wrap: wrap;
|
| 305 |
+
gap: 10px;
|
| 306 |
+
}
|
| 307 |
+
|
| 308 |
+
.button {
|
| 309 |
+
display: inline-flex;
|
| 310 |
+
align-items: center;
|
| 311 |
+
justify-content: center;
|
| 312 |
+
gap: 14px;
|
| 313 |
+
min-height: 48px;
|
| 314 |
+
padding: 11px 18px;
|
| 315 |
+
border: 1px solid var(--line-strong);
|
| 316 |
+
border-radius: 12px;
|
| 317 |
+
font-size: 13px;
|
| 318 |
+
font-weight: 700;
|
| 319 |
+
transition: transform 150ms ease, box-shadow 150ms ease, background 150ms ease;
|
| 320 |
+
}
|
| 321 |
+
|
| 322 |
+
.button:hover:not(.is-disabled) {
|
| 323 |
+
transform: translateY(-2px);
|
| 324 |
+
}
|
| 325 |
+
|
| 326 |
+
.button-primary {
|
| 327 |
+
color: var(--paper);
|
| 328 |
+
background: var(--ink);
|
| 329 |
+
border-color: var(--ink);
|
| 330 |
+
box-shadow: 0 10px 24px rgba(24, 35, 31, 0.16);
|
| 331 |
+
}
|
| 332 |
+
|
| 333 |
+
.button-secondary {
|
| 334 |
+
background: rgba(255, 254, 249, 0.7);
|
| 335 |
+
}
|
| 336 |
+
|
| 337 |
+
.stream-card {
|
| 338 |
+
position: relative;
|
| 339 |
+
min-height: 410px;
|
| 340 |
+
padding: 20px;
|
| 341 |
+
background: rgba(255, 254, 249, 0.9);
|
| 342 |
+
border: 1px solid var(--line);
|
| 343 |
+
border-radius: 28px;
|
| 344 |
+
box-shadow: var(--shadow);
|
| 345 |
+
}
|
| 346 |
+
|
| 347 |
+
.stream-card::before {
|
| 348 |
+
position: absolute;
|
| 349 |
+
z-index: -1;
|
| 350 |
+
inset: 22px -18px -18px 22px;
|
| 351 |
+
content: "";
|
| 352 |
+
background: var(--green-soft);
|
| 353 |
+
border-radius: 28px;
|
| 354 |
+
transform: rotate(2deg);
|
| 355 |
+
}
|
| 356 |
+
|
| 357 |
+
.stream-card-header {
|
| 358 |
+
display: flex;
|
| 359 |
+
align-items: center;
|
| 360 |
+
justify-content: space-between;
|
| 361 |
+
padding-bottom: 14px;
|
| 362 |
+
border-bottom: 1px solid var(--line);
|
| 363 |
+
color: var(--ink-soft);
|
| 364 |
+
font-size: 11px;
|
| 365 |
+
font-weight: 700;
|
| 366 |
+
letter-spacing: 0.08em;
|
| 367 |
+
text-transform: uppercase;
|
| 368 |
+
}
|
| 369 |
+
|
| 370 |
+
.stream-card-header i {
|
| 371 |
+
display: flex;
|
| 372 |
+
align-items: center;
|
| 373 |
+
gap: 6px;
|
| 374 |
+
font-size: 9px;
|
| 375 |
+
font-style: normal;
|
| 376 |
+
}
|
| 377 |
+
|
| 378 |
+
.stream-card-header i b {
|
| 379 |
+
width: 7px;
|
| 380 |
+
height: 7px;
|
| 381 |
+
background: var(--green);
|
| 382 |
+
border-radius: 50%;
|
| 383 |
+
box-shadow: 0 0 0 4px rgba(111, 150, 89, 0.12);
|
| 384 |
+
}
|
| 385 |
+
|
| 386 |
+
.signal-group {
|
| 387 |
+
padding: 21px 6px;
|
| 388 |
+
}
|
| 389 |
+
|
| 390 |
+
.signal-label {
|
| 391 |
+
display: flex;
|
| 392 |
+
align-items: baseline;
|
| 393 |
+
justify-content: space-between;
|
| 394 |
+
margin-bottom: 12px;
|
| 395 |
+
}
|
| 396 |
+
|
| 397 |
+
.signal-label strong {
|
| 398 |
+
font-size: 15px;
|
| 399 |
+
}
|
| 400 |
+
|
| 401 |
+
.signal-label small {
|
| 402 |
+
color: var(--ink-soft);
|
| 403 |
+
font-size: 10px;
|
| 404 |
+
font-weight: 600;
|
| 405 |
+
}
|
| 406 |
+
|
| 407 |
+
.signal-track {
|
| 408 |
+
display: grid;
|
| 409 |
+
grid-template-columns: repeat(6, 1fr);
|
| 410 |
+
align-items: end;
|
| 411 |
+
gap: 7px;
|
| 412 |
+
height: 68px;
|
| 413 |
+
padding: 10px;
|
| 414 |
+
background: var(--green-soft);
|
| 415 |
+
border-radius: 13px;
|
| 416 |
+
}
|
| 417 |
+
|
| 418 |
+
.signal-track span {
|
| 419 |
+
position: relative;
|
| 420 |
+
height: var(--level);
|
| 421 |
+
background: var(--green);
|
| 422 |
+
border-radius: 5px 5px 2px 2px;
|
| 423 |
+
}
|
| 424 |
+
|
| 425 |
+
.signal-track span::after {
|
| 426 |
+
position: absolute;
|
| 427 |
+
inset: 7px 4px auto;
|
| 428 |
+
height: 2px;
|
| 429 |
+
content: "";
|
| 430 |
+
background: rgba(255, 255, 255, 0.48);
|
| 431 |
+
border-radius: 999px;
|
| 432 |
+
}
|
| 433 |
+
|
| 434 |
+
.signal-times {
|
| 435 |
+
display: flex;
|
| 436 |
+
justify-content: space-between;
|
| 437 |
+
margin-top: 8px;
|
| 438 |
+
color: var(--ink-soft);
|
| 439 |
+
font-size: 8px;
|
| 440 |
+
font-weight: 600;
|
| 441 |
+
}
|
| 442 |
+
|
| 443 |
+
.signal-divider {
|
| 444 |
+
display: flex;
|
| 445 |
+
align-items: center;
|
| 446 |
+
gap: 10px;
|
| 447 |
+
color: var(--ink-soft);
|
| 448 |
+
font-size: 8px;
|
| 449 |
+
font-weight: 700;
|
| 450 |
+
letter-spacing: 0.09em;
|
| 451 |
+
text-transform: uppercase;
|
| 452 |
+
}
|
| 453 |
+
|
| 454 |
+
.signal-divider::before,
|
| 455 |
+
.signal-divider::after {
|
| 456 |
+
height: 1px;
|
| 457 |
+
content: "";
|
| 458 |
+
background: var(--line);
|
| 459 |
+
flex: 1;
|
| 460 |
+
}
|
| 461 |
+
|
| 462 |
+
.update-track {
|
| 463 |
+
display: flex;
|
| 464 |
+
align-items: center;
|
| 465 |
+
}
|
| 466 |
+
|
| 467 |
+
.update-track span {
|
| 468 |
+
display: grid;
|
| 469 |
+
width: 32px;
|
| 470 |
+
height: 32px;
|
| 471 |
+
place-items: center;
|
| 472 |
+
color: white;
|
| 473 |
+
background: var(--blue);
|
| 474 |
+
border-radius: 8px;
|
| 475 |
+
font-size: 9px;
|
| 476 |
+
font-weight: 700;
|
| 477 |
+
}
|
| 478 |
+
|
| 479 |
+
.update-track span:first-child {
|
| 480 |
+
background: var(--ink);
|
| 481 |
+
}
|
| 482 |
+
|
| 483 |
+
.update-track span:nth-of-type(3) {
|
| 484 |
+
background: var(--purple);
|
| 485 |
+
}
|
| 486 |
+
|
| 487 |
+
.update-track span:nth-of-type(4) {
|
| 488 |
+
background: var(--green);
|
| 489 |
+
}
|
| 490 |
+
|
| 491 |
+
.update-track span:nth-of-type(5) {
|
| 492 |
+
background: var(--coral);
|
| 493 |
+
}
|
| 494 |
+
|
| 495 |
+
.update-track span:nth-of-type(6) {
|
| 496 |
+
color: var(--ink);
|
| 497 |
+
background: #edb755;
|
| 498 |
+
}
|
| 499 |
+
|
| 500 |
+
.update-track i {
|
| 501 |
+
height: 2px;
|
| 502 |
+
background: var(--line-strong);
|
| 503 |
+
flex: 1;
|
| 504 |
+
}
|
| 505 |
+
|
| 506 |
+
.response-line {
|
| 507 |
+
display: grid;
|
| 508 |
+
grid-template-columns: repeat(5, 1fr);
|
| 509 |
+
gap: 9px;
|
| 510 |
+
margin: 11px 16px 0 48px;
|
| 511 |
+
}
|
| 512 |
+
|
| 513 |
+
.response-line b {
|
| 514 |
+
position: relative;
|
| 515 |
+
height: 5px;
|
| 516 |
+
overflow: hidden;
|
| 517 |
+
background: var(--blue-soft);
|
| 518 |
+
border-radius: 99px;
|
| 519 |
+
}
|
| 520 |
+
|
| 521 |
+
.response-line b::after {
|
| 522 |
+
position: absolute;
|
| 523 |
+
inset: 0 var(--delay) 0 0;
|
| 524 |
+
content: "";
|
| 525 |
+
background: var(--blue);
|
| 526 |
+
border-radius: inherit;
|
| 527 |
+
}
|
| 528 |
+
|
| 529 |
+
.stream-card-note {
|
| 530 |
+
display: flex;
|
| 531 |
+
align-items: center;
|
| 532 |
+
gap: 9px;
|
| 533 |
+
margin: 3px 7px 0;
|
| 534 |
+
padding: 11px 14px;
|
| 535 |
+
color: var(--ink-soft);
|
| 536 |
+
background: var(--paper);
|
| 537 |
+
border-radius: 11px;
|
| 538 |
+
font-size: 10px;
|
| 539 |
+
font-weight: 600;
|
| 540 |
+
}
|
| 541 |
+
|
| 542 |
+
.stream-card-note span {
|
| 543 |
+
color: var(--coral);
|
| 544 |
+
}
|
| 545 |
+
|
| 546 |
+
.stat-band {
|
| 547 |
+
color: var(--paper);
|
| 548 |
+
background: var(--ink);
|
| 549 |
+
}
|
| 550 |
+
|
| 551 |
+
.stats {
|
| 552 |
+
display: grid;
|
| 553 |
+
grid-template-columns: repeat(5, 1fr);
|
| 554 |
+
padding: 32px 0;
|
| 555 |
+
}
|
| 556 |
+
|
| 557 |
+
.stats > div {
|
| 558 |
+
display: flex;
|
| 559 |
+
flex-direction: column;
|
| 560 |
+
align-items: center;
|
| 561 |
+
border-right: 1px solid rgba(255, 255, 255, 0.14);
|
| 562 |
+
text-align: center;
|
| 563 |
+
}
|
| 564 |
+
|
| 565 |
+
.stats > div:last-child {
|
| 566 |
+
border-right: 0;
|
| 567 |
+
}
|
| 568 |
+
|
| 569 |
+
.stats strong {
|
| 570 |
+
font-family: var(--serif);
|
| 571 |
+
font-size: clamp(32px, 3.4vw, 48px);
|
| 572 |
+
font-weight: 400;
|
| 573 |
+
line-height: 1;
|
| 574 |
+
}
|
| 575 |
+
|
| 576 |
+
.stats span {
|
| 577 |
+
margin-top: 7px;
|
| 578 |
+
color: rgba(255, 255, 255, 0.58);
|
| 579 |
+
font-size: 9px;
|
| 580 |
+
font-weight: 700;
|
| 581 |
+
letter-spacing: 0.09em;
|
| 582 |
+
text-transform: uppercase;
|
| 583 |
+
}
|
| 584 |
+
|
| 585 |
+
.section {
|
| 586 |
+
padding: 112px 0;
|
| 587 |
+
}
|
| 588 |
+
|
| 589 |
+
.leaderboard-section {
|
| 590 |
+
padding-top: 84px;
|
| 591 |
+
}
|
| 592 |
+
|
| 593 |
+
.leaderboard-section .section-heading {
|
| 594 |
+
margin-bottom: 40px;
|
| 595 |
+
}
|
| 596 |
+
|
| 597 |
+
.section-heading {
|
| 598 |
+
max-width: 840px;
|
| 599 |
+
margin-bottom: 54px;
|
| 600 |
+
}
|
| 601 |
+
|
| 602 |
+
.section-heading .kicker {
|
| 603 |
+
margin-bottom: 16px;
|
| 604 |
+
}
|
| 605 |
+
|
| 606 |
+
.section-heading h2 {
|
| 607 |
+
margin-bottom: 0;
|
| 608 |
+
font-family: var(--serif);
|
| 609 |
+
font-size: clamp(40px, 5vw, 66px);
|
| 610 |
+
font-weight: 400;
|
| 611 |
+
line-height: 1.02;
|
| 612 |
+
letter-spacing: -0.04em;
|
| 613 |
+
}
|
| 614 |
+
|
| 615 |
+
.split-heading {
|
| 616 |
+
display: grid;
|
| 617 |
+
grid-template-columns: minmax(0, 1.15fr) minmax(310px, 0.65fr);
|
| 618 |
+
align-items: end;
|
| 619 |
+
gap: 80px;
|
| 620 |
+
max-width: none;
|
| 621 |
+
}
|
| 622 |
+
|
| 623 |
+
.heading-note {
|
| 624 |
+
display: grid;
|
| 625 |
+
grid-template-columns: auto 1fr;
|
| 626 |
+
gap: 14px;
|
| 627 |
+
align-items: start;
|
| 628 |
+
padding: 17px;
|
| 629 |
+
background: var(--coral-soft);
|
| 630 |
+
border: 1px solid rgba(204, 102, 78, 0.18);
|
| 631 |
+
border-radius: 14px;
|
| 632 |
+
}
|
| 633 |
+
|
| 634 |
+
.heading-note .note-icon {
|
| 635 |
+
display: grid;
|
| 636 |
+
width: 30px;
|
| 637 |
+
height: 30px;
|
| 638 |
+
place-items: center;
|
| 639 |
+
color: var(--coral);
|
| 640 |
+
background: var(--white);
|
| 641 |
+
border-radius: 8px;
|
| 642 |
+
font-family: var(--serif);
|
| 643 |
+
font-size: 20px;
|
| 644 |
+
}
|
| 645 |
+
|
| 646 |
+
.heading-note p {
|
| 647 |
+
margin: 0;
|
| 648 |
+
color: var(--ink-soft);
|
| 649 |
+
font-size: 12px;
|
| 650 |
+
line-height: 1.55;
|
| 651 |
+
}
|
| 652 |
+
|
| 653 |
+
.heading-note strong {
|
| 654 |
+
color: var(--ink);
|
| 655 |
+
}
|
| 656 |
+
|
| 657 |
+
.explorer {
|
| 658 |
+
display: grid;
|
| 659 |
+
gap: 18px;
|
| 660 |
+
}
|
| 661 |
+
|
| 662 |
+
.track-switcher {
|
| 663 |
+
display: grid;
|
| 664 |
+
grid-template-columns: minmax(460px, 0.9fr) 1fr;
|
| 665 |
+
align-items: center;
|
| 666 |
+
gap: 34px;
|
| 667 |
+
padding: 13px;
|
| 668 |
+
background: var(--paper-deep);
|
| 669 |
+
border: 1px solid var(--line);
|
| 670 |
+
border-radius: 18px;
|
| 671 |
+
}
|
| 672 |
+
|
| 673 |
+
.track-tabs {
|
| 674 |
+
display: grid;
|
| 675 |
+
grid-template-columns: repeat(4, 1fr);
|
| 676 |
+
gap: 7px;
|
| 677 |
+
}
|
| 678 |
+
|
| 679 |
+
.track-tab {
|
| 680 |
+
display: flex;
|
| 681 |
+
align-items: center;
|
| 682 |
+
justify-content: space-between;
|
| 683 |
+
gap: 8px;
|
| 684 |
+
min-height: 48px;
|
| 685 |
+
padding: 9px 12px;
|
| 686 |
+
color: var(--ink-soft);
|
| 687 |
+
background: transparent;
|
| 688 |
+
border: 1px solid transparent;
|
| 689 |
+
border-radius: 11px;
|
| 690 |
+
font-size: 12px;
|
| 691 |
+
font-weight: 700;
|
| 692 |
+
}
|
| 693 |
+
|
| 694 |
+
.track-tab b {
|
| 695 |
+
display: grid;
|
| 696 |
+
width: auto;
|
| 697 |
+
min-width: 24px;
|
| 698 |
+
height: 24px;
|
| 699 |
+
padding: 0 5px;
|
| 700 |
+
place-items: center;
|
| 701 |
+
color: var(--ink-soft);
|
| 702 |
+
background: rgba(255, 255, 255, 0.55);
|
| 703 |
+
border-radius: 7px;
|
| 704 |
+
font-size: 9px;
|
| 705 |
+
}
|
| 706 |
+
|
| 707 |
+
.track-tab.is-active {
|
| 708 |
+
color: var(--ink);
|
| 709 |
+
background: var(--white);
|
| 710 |
+
border-color: var(--line);
|
| 711 |
+
box-shadow: 0 8px 20px rgba(47, 58, 49, 0.06);
|
| 712 |
+
}
|
| 713 |
+
|
| 714 |
+
.track-tab.is-active b {
|
| 715 |
+
color: var(--blue);
|
| 716 |
+
background: var(--blue-soft);
|
| 717 |
+
}
|
| 718 |
+
|
| 719 |
+
.track-tab[data-track="diagnostics"].is-active b {
|
| 720 |
+
color: var(--purple);
|
| 721 |
+
background: var(--purple-soft);
|
| 722 |
+
}
|
| 723 |
+
|
| 724 |
+
.track-switcher > p {
|
| 725 |
+
margin: 0;
|
| 726 |
+
padding-right: 18px;
|
| 727 |
+
color: var(--ink-soft);
|
| 728 |
+
font-size: 12px;
|
| 729 |
+
}
|
| 730 |
+
|
| 731 |
+
.category-bar {
|
| 732 |
+
display: flex;
|
| 733 |
+
align-items: center;
|
| 734 |
+
gap: 18px;
|
| 735 |
+
min-height: 46px;
|
| 736 |
+
padding: 0 6px;
|
| 737 |
+
}
|
| 738 |
+
|
| 739 |
+
.category-bar > span {
|
| 740 |
+
color: var(--ink-soft);
|
| 741 |
+
font-size: 10px;
|
| 742 |
+
font-weight: 700;
|
| 743 |
+
letter-spacing: 0.1em;
|
| 744 |
+
text-transform: uppercase;
|
| 745 |
+
}
|
| 746 |
+
|
| 747 |
+
.category-tabs {
|
| 748 |
+
display: flex;
|
| 749 |
+
flex-wrap: wrap;
|
| 750 |
+
gap: 8px;
|
| 751 |
+
}
|
| 752 |
+
|
| 753 |
+
.category-tab {
|
| 754 |
+
padding: 8px 13px;
|
| 755 |
+
color: var(--ink-soft);
|
| 756 |
+
background: transparent;
|
| 757 |
+
border: 1px solid var(--line);
|
| 758 |
+
border-radius: 999px;
|
| 759 |
+
font-size: 11px;
|
| 760 |
+
font-weight: 700;
|
| 761 |
+
}
|
| 762 |
+
|
| 763 |
+
.category-tab.is-active {
|
| 764 |
+
color: var(--paper);
|
| 765 |
+
background: var(--ink);
|
| 766 |
+
border-color: var(--ink);
|
| 767 |
+
}
|
| 768 |
+
|
| 769 |
+
.table-panel {
|
| 770 |
+
overflow: hidden;
|
| 771 |
+
background: var(--white);
|
| 772 |
+
border: 1px solid var(--line);
|
| 773 |
+
border-radius: 24px;
|
| 774 |
+
box-shadow: var(--shadow);
|
| 775 |
+
}
|
| 776 |
+
|
| 777 |
+
.table-panel.is-diagnostics {
|
| 778 |
+
border-color: rgba(121, 105, 173, 0.34);
|
| 779 |
+
}
|
| 780 |
+
|
| 781 |
+
.table-panel.is-diagnostics .table-kicker {
|
| 782 |
+
color: var(--purple);
|
| 783 |
+
}
|
| 784 |
+
|
| 785 |
+
.table-panel-header {
|
| 786 |
+
display: flex;
|
| 787 |
+
align-items: end;
|
| 788 |
+
justify-content: space-between;
|
| 789 |
+
gap: 30px;
|
| 790 |
+
padding: 28px 30px 24px;
|
| 791 |
+
}
|
| 792 |
+
|
| 793 |
+
.table-panel-header > div {
|
| 794 |
+
max-width: 720px;
|
| 795 |
+
}
|
| 796 |
+
|
| 797 |
+
.table-kicker {
|
| 798 |
+
margin-bottom: 7px;
|
| 799 |
+
}
|
| 800 |
+
|
| 801 |
+
.table-panel-header h3 {
|
| 802 |
+
margin-bottom: 5px;
|
| 803 |
+
font-family: var(--serif);
|
| 804 |
+
font-size: 32px;
|
| 805 |
+
font-weight: 400;
|
| 806 |
+
line-height: 1.1;
|
| 807 |
+
letter-spacing: -0.03em;
|
| 808 |
+
}
|
| 809 |
+
|
| 810 |
+
.table-panel-header > div > p:last-child {
|
| 811 |
+
margin: 0;
|
| 812 |
+
color: var(--ink-soft);
|
| 813 |
+
font-size: 12px;
|
| 814 |
+
}
|
| 815 |
+
|
| 816 |
+
.ranking-label {
|
| 817 |
+
display: flex;
|
| 818 |
+
flex-direction: column;
|
| 819 |
+
align-items: end;
|
| 820 |
+
margin: 0;
|
| 821 |
+
color: var(--ink-soft);
|
| 822 |
+
font-size: 10px;
|
| 823 |
+
}
|
| 824 |
+
|
| 825 |
+
.ranking-label strong {
|
| 826 |
+
color: var(--ink);
|
| 827 |
+
font-size: 13px;
|
| 828 |
+
}
|
| 829 |
+
|
| 830 |
+
.ranking-label span {
|
| 831 |
+
margin-top: 2px;
|
| 832 |
+
color: var(--green);
|
| 833 |
+
font-weight: 700;
|
| 834 |
+
}
|
| 835 |
+
|
| 836 |
+
.toolbar {
|
| 837 |
+
display: grid;
|
| 838 |
+
grid-template-columns: minmax(180px, 1fr) minmax(190px, 1fr) 150px 130px auto auto;
|
| 839 |
+
gap: 9px;
|
| 840 |
+
padding: 15px 20px;
|
| 841 |
+
background: var(--paper);
|
| 842 |
+
border-top: 1px solid var(--line);
|
| 843 |
+
border-bottom: 1px solid var(--line);
|
| 844 |
+
}
|
| 845 |
+
|
| 846 |
+
.toolbar label {
|
| 847 |
+
position: relative;
|
| 848 |
+
}
|
| 849 |
+
|
| 850 |
+
.toolbar label > span:not(.sr-only) {
|
| 851 |
+
position: absolute;
|
| 852 |
+
z-index: 1;
|
| 853 |
+
top: 5px;
|
| 854 |
+
left: 12px;
|
| 855 |
+
color: var(--ink-soft);
|
| 856 |
+
font-size: 8px;
|
| 857 |
+
font-weight: 700;
|
| 858 |
+
letter-spacing: 0.08em;
|
| 859 |
+
pointer-events: none;
|
| 860 |
+
text-transform: uppercase;
|
| 861 |
+
}
|
| 862 |
+
|
| 863 |
+
.toolbar input,
|
| 864 |
+
.toolbar select,
|
| 865 |
+
.tool-button {
|
| 866 |
+
width: 100%;
|
| 867 |
+
height: 44px;
|
| 868 |
+
background: var(--white);
|
| 869 |
+
border: 1px solid var(--line);
|
| 870 |
+
border-radius: 10px;
|
| 871 |
+
outline: none;
|
| 872 |
+
font-size: 11px;
|
| 873 |
+
font-weight: 600;
|
| 874 |
+
}
|
| 875 |
+
|
| 876 |
+
.toolbar select {
|
| 877 |
+
padding: 14px 30px 3px 11px;
|
| 878 |
+
}
|
| 879 |
+
|
| 880 |
+
.toolbar .metric-select-control > span {
|
| 881 |
+
color: var(--blue);
|
| 882 |
+
}
|
| 883 |
+
|
| 884 |
+
.metric-select-control select {
|
| 885 |
+
background: var(--blue-soft);
|
| 886 |
+
border-color: rgba(75, 123, 236, 0.28);
|
| 887 |
+
}
|
| 888 |
+
|
| 889 |
+
.search-control svg {
|
| 890 |
+
position: absolute;
|
| 891 |
+
top: 13px;
|
| 892 |
+
left: 13px;
|
| 893 |
+
width: 18px;
|
| 894 |
+
fill: none;
|
| 895 |
+
stroke: var(--ink-soft);
|
| 896 |
+
stroke-linecap: round;
|
| 897 |
+
stroke-width: 1.8;
|
| 898 |
+
}
|
| 899 |
+
|
| 900 |
+
.search-control input {
|
| 901 |
+
padding: 0 12px 0 40px;
|
| 902 |
+
}
|
| 903 |
+
|
| 904 |
+
.toolbar input:focus,
|
| 905 |
+
.toolbar select:focus,
|
| 906 |
+
.tool-button:focus-visible,
|
| 907 |
+
.track-tab:focus-visible,
|
| 908 |
+
.category-tab:focus-visible,
|
| 909 |
+
.metric-card button:focus-visible {
|
| 910 |
+
border-color: var(--blue);
|
| 911 |
+
box-shadow: 0 0 0 3px rgba(75, 123, 236, 0.15);
|
| 912 |
+
}
|
| 913 |
+
|
| 914 |
+
.tool-button {
|
| 915 |
+
width: auto;
|
| 916 |
+
min-width: 78px;
|
| 917 |
+
padding: 0 12px;
|
| 918 |
+
}
|
| 919 |
+
|
| 920 |
+
.download-button {
|
| 921 |
+
color: var(--paper);
|
| 922 |
+
background: var(--ink);
|
| 923 |
+
border-color: var(--ink);
|
| 924 |
+
}
|
| 925 |
+
|
| 926 |
+
.table-scroll {
|
| 927 |
+
overflow-x: auto;
|
| 928 |
+
outline: none;
|
| 929 |
+
scrollbar-color: var(--line-strong) transparent;
|
| 930 |
+
scrollbar-width: thin;
|
| 931 |
+
}
|
| 932 |
+
|
| 933 |
+
.table-scroll:focus-visible {
|
| 934 |
+
box-shadow: inset 0 0 0 3px rgba(75, 123, 236, 0.16);
|
| 935 |
+
}
|
| 936 |
+
|
| 937 |
+
table {
|
| 938 |
+
width: 100%;
|
| 939 |
+
min-width: 1050px;
|
| 940 |
+
border-collapse: separate;
|
| 941 |
+
border-spacing: 0;
|
| 942 |
+
font-variant-numeric: tabular-nums;
|
| 943 |
+
}
|
| 944 |
+
|
| 945 |
+
thead th {
|
| 946 |
+
position: sticky;
|
| 947 |
+
z-index: 3;
|
| 948 |
+
top: 0;
|
| 949 |
+
height: 62px;
|
| 950 |
+
padding: 0 13px;
|
| 951 |
+
color: var(--ink-soft);
|
| 952 |
+
background: var(--white);
|
| 953 |
+
border-bottom: 1px solid var(--line-strong);
|
| 954 |
+
font-size: 9px;
|
| 955 |
+
font-weight: 700;
|
| 956 |
+
letter-spacing: 0.06em;
|
| 957 |
+
text-align: left;
|
| 958 |
+
text-transform: uppercase;
|
| 959 |
+
white-space: nowrap;
|
| 960 |
+
}
|
| 961 |
+
|
| 962 |
+
thead th.metric-column {
|
| 963 |
+
min-width: 86px;
|
| 964 |
+
padding: 0;
|
| 965 |
+
text-align: center;
|
| 966 |
+
}
|
| 967 |
+
|
| 968 |
+
.metric-column button {
|
| 969 |
+
display: grid;
|
| 970 |
+
grid-template-columns: auto auto;
|
| 971 |
+
align-content: center;
|
| 972 |
+
justify-content: center;
|
| 973 |
+
gap: 0 6px;
|
| 974 |
+
width: 100%;
|
| 975 |
+
height: 61px;
|
| 976 |
+
padding: 0 8px;
|
| 977 |
+
color: inherit;
|
| 978 |
+
background: transparent;
|
| 979 |
+
border: 0;
|
| 980 |
+
}
|
| 981 |
+
|
| 982 |
+
.metric-column button span {
|
| 983 |
+
color: var(--ink);
|
| 984 |
+
font-size: 11px;
|
| 985 |
+
letter-spacing: 0;
|
| 986 |
+
text-transform: none;
|
| 987 |
+
}
|
| 988 |
+
|
| 989 |
+
.metric-column button i {
|
| 990 |
+
color: var(--ink-soft);
|
| 991 |
+
font-size: 10px;
|
| 992 |
+
font-style: normal;
|
| 993 |
+
}
|
| 994 |
+
|
| 995 |
+
.metric-column button small {
|
| 996 |
+
grid-column: 1 / -1;
|
| 997 |
+
margin-top: 2px;
|
| 998 |
+
color: var(--ink-soft);
|
| 999 |
+
font-size: 7px;
|
| 1000 |
+
letter-spacing: 0.07em;
|
| 1001 |
+
text-transform: uppercase;
|
| 1002 |
+
}
|
| 1003 |
+
|
| 1004 |
+
thead th.is-sorted {
|
| 1005 |
+
background: var(--blue-soft);
|
| 1006 |
+
}
|
| 1007 |
+
|
| 1008 |
+
thead th.is-sorted button span,
|
| 1009 |
+
thead th.is-sorted button i {
|
| 1010 |
+
color: var(--blue);
|
| 1011 |
+
}
|
| 1012 |
+
|
| 1013 |
+
tbody th,
|
| 1014 |
+
tbody td {
|
| 1015 |
+
height: 70px;
|
| 1016 |
+
padding: 11px 13px;
|
| 1017 |
+
background: var(--white);
|
| 1018 |
+
border-bottom: 1px solid var(--line);
|
| 1019 |
+
font-size: 12px;
|
| 1020 |
+
text-align: left;
|
| 1021 |
+
}
|
| 1022 |
+
|
| 1023 |
+
tbody tr:last-child th,
|
| 1024 |
+
tbody tr:last-child td {
|
| 1025 |
+
border-bottom: 0;
|
| 1026 |
+
}
|
| 1027 |
+
|
| 1028 |
+
tbody tr:hover th,
|
| 1029 |
+
tbody tr:hover td {
|
| 1030 |
+
background: #fbfaf5;
|
| 1031 |
+
}
|
| 1032 |
+
|
| 1033 |
+
.rank-heading,
|
| 1034 |
+
.rank-cell {
|
| 1035 |
+
position: sticky;
|
| 1036 |
+
z-index: 5;
|
| 1037 |
+
left: 0;
|
| 1038 |
+
width: 54px;
|
| 1039 |
+
min-width: 54px;
|
| 1040 |
+
text-align: center;
|
| 1041 |
+
}
|
| 1042 |
+
|
| 1043 |
+
.model-heading,
|
| 1044 |
+
.model-cell {
|
| 1045 |
+
position: sticky;
|
| 1046 |
+
z-index: 4;
|
| 1047 |
+
left: 54px;
|
| 1048 |
+
width: 184px;
|
| 1049 |
+
min-width: 184px;
|
| 1050 |
+
box-shadow: 1px 0 0 var(--line);
|
| 1051 |
+
}
|
| 1052 |
+
|
| 1053 |
+
thead .rank-heading,
|
| 1054 |
+
thead .model-heading {
|
| 1055 |
+
z-index: 8;
|
| 1056 |
+
}
|
| 1057 |
+
|
| 1058 |
+
.rank-badge {
|
| 1059 |
+
display: inline-grid;
|
| 1060 |
+
width: 27px;
|
| 1061 |
+
height: 27px;
|
| 1062 |
+
place-items: center;
|
| 1063 |
+
color: var(--ink-soft);
|
| 1064 |
+
background: var(--paper);
|
| 1065 |
+
border-radius: 8px;
|
| 1066 |
+
font-size: 10px;
|
| 1067 |
+
font-weight: 700;
|
| 1068 |
+
}
|
| 1069 |
+
|
| 1070 |
+
.rank-badge.rank-1 {
|
| 1071 |
+
color: #8b5b17;
|
| 1072 |
+
background: var(--gold-soft);
|
| 1073 |
+
}
|
| 1074 |
+
|
| 1075 |
+
.rank-badge.rank-2 {
|
| 1076 |
+
color: #53636c;
|
| 1077 |
+
background: var(--silver-soft);
|
| 1078 |
+
}
|
| 1079 |
+
|
| 1080 |
+
.rank-badge.rank-3 {
|
| 1081 |
+
color: #9d5848;
|
| 1082 |
+
background: var(--coral-soft);
|
| 1083 |
+
}
|
| 1084 |
+
|
| 1085 |
+
.model-cell a {
|
| 1086 |
+
display: inline-flex;
|
| 1087 |
+
align-items: center;
|
| 1088 |
+
gap: 5px;
|
| 1089 |
+
font-size: 12px;
|
| 1090 |
+
font-weight: 700;
|
| 1091 |
+
}
|
| 1092 |
+
|
| 1093 |
+
.model-cell a i {
|
| 1094 |
+
color: var(--blue);
|
| 1095 |
+
font-size: 9px;
|
| 1096 |
+
font-style: normal;
|
| 1097 |
+
}
|
| 1098 |
+
|
| 1099 |
+
.model-cell small {
|
| 1100 |
+
display: block;
|
| 1101 |
+
max-width: 160px;
|
| 1102 |
+
margin-top: 3px;
|
| 1103 |
+
overflow: hidden;
|
| 1104 |
+
color: var(--ink-soft);
|
| 1105 |
+
font-size: 8px;
|
| 1106 |
+
font-weight: 500;
|
| 1107 |
+
text-overflow: ellipsis;
|
| 1108 |
+
white-space: nowrap;
|
| 1109 |
+
}
|
| 1110 |
+
|
| 1111 |
+
.meta-cell {
|
| 1112 |
+
min-width: 104px;
|
| 1113 |
+
color: var(--ink-soft);
|
| 1114 |
+
white-space: nowrap;
|
| 1115 |
+
}
|
| 1116 |
+
|
| 1117 |
+
.tag {
|
| 1118 |
+
display: inline-block;
|
| 1119 |
+
padding: 5px 8px;
|
| 1120 |
+
border-radius: 7px;
|
| 1121 |
+
font-size: 8px;
|
| 1122 |
+
font-weight: 700;
|
| 1123 |
+
letter-spacing: 0.03em;
|
| 1124 |
+
text-transform: uppercase;
|
| 1125 |
+
}
|
| 1126 |
+
|
| 1127 |
+
.tag-native {
|
| 1128 |
+
color: #3a609e;
|
| 1129 |
+
background: var(--blue-soft);
|
| 1130 |
+
}
|
| 1131 |
+
|
| 1132 |
+
.tag-cascaded {
|
| 1133 |
+
color: #557741;
|
| 1134 |
+
background: var(--green-soft);
|
| 1135 |
+
}
|
| 1136 |
+
|
| 1137 |
+
.access-dot {
|
| 1138 |
+
display: inline-block;
|
| 1139 |
+
width: 6px;
|
| 1140 |
+
height: 6px;
|
| 1141 |
+
margin-right: 6px;
|
| 1142 |
+
background: var(--green);
|
| 1143 |
+
border-radius: 50%;
|
| 1144 |
+
}
|
| 1145 |
+
|
| 1146 |
+
.access-web {
|
| 1147 |
+
background: var(--coral);
|
| 1148 |
+
}
|
| 1149 |
+
|
| 1150 |
+
.score-cell {
|
| 1151 |
+
min-width: 86px;
|
| 1152 |
+
text-align: center;
|
| 1153 |
+
white-space: nowrap;
|
| 1154 |
+
}
|
| 1155 |
+
|
| 1156 |
+
.score-cell span {
|
| 1157 |
+
font-size: 11px;
|
| 1158 |
+
font-weight: 600;
|
| 1159 |
+
}
|
| 1160 |
+
|
| 1161 |
+
.score-cell small {
|
| 1162 |
+
margin-left: 2px;
|
| 1163 |
+
color: var(--ink-soft);
|
| 1164 |
+
font-size: 7px;
|
| 1165 |
+
}
|
| 1166 |
+
|
| 1167 |
+
.score-cell.is-sorted {
|
| 1168 |
+
background: rgba(230, 239, 255, 0.5);
|
| 1169 |
+
}
|
| 1170 |
+
|
| 1171 |
+
.score-cell.is-best span {
|
| 1172 |
+
display: inline-block;
|
| 1173 |
+
padding: 4px 7px;
|
| 1174 |
+
color: #8b5b17;
|
| 1175 |
+
background: var(--gold-soft);
|
| 1176 |
+
border-radius: 7px;
|
| 1177 |
+
font-weight: 700;
|
| 1178 |
+
}
|
| 1179 |
+
|
| 1180 |
+
.score-cell.is-runner-up span {
|
| 1181 |
+
color: #596b74;
|
| 1182 |
+
font-weight: 700;
|
| 1183 |
+
text-decoration: underline;
|
| 1184 |
+
text-decoration-color: #b0bdc4;
|
| 1185 |
+
text-decoration-thickness: 2px;
|
| 1186 |
+
text-underline-offset: 4px;
|
| 1187 |
+
}
|
| 1188 |
+
|
| 1189 |
+
.empty-row {
|
| 1190 |
+
height: 180px;
|
| 1191 |
+
color: var(--ink-soft);
|
| 1192 |
+
text-align: center;
|
| 1193 |
+
}
|
| 1194 |
+
|
| 1195 |
+
.table-footer {
|
| 1196 |
+
display: flex;
|
| 1197 |
+
align-items: center;
|
| 1198 |
+
justify-content: space-between;
|
| 1199 |
+
gap: 20px;
|
| 1200 |
+
min-height: 54px;
|
| 1201 |
+
padding: 10px 22px;
|
| 1202 |
+
color: var(--ink-soft);
|
| 1203 |
+
background: var(--paper);
|
| 1204 |
+
border-top: 1px solid var(--line);
|
| 1205 |
+
font-size: 9px;
|
| 1206 |
+
font-weight: 600;
|
| 1207 |
+
}
|
| 1208 |
+
|
| 1209 |
+
.table-footer p {
|
| 1210 |
+
margin: 0;
|
| 1211 |
+
}
|
| 1212 |
+
|
| 1213 |
+
.legend {
|
| 1214 |
+
display: flex;
|
| 1215 |
+
flex-wrap: wrap;
|
| 1216 |
+
justify-content: flex-end;
|
| 1217 |
+
gap: 15px;
|
| 1218 |
+
}
|
| 1219 |
+
|
| 1220 |
+
.legend span {
|
| 1221 |
+
display: inline-flex;
|
| 1222 |
+
align-items: center;
|
| 1223 |
+
gap: 6px;
|
| 1224 |
+
}
|
| 1225 |
+
|
| 1226 |
+
.legend i {
|
| 1227 |
+
display: inline-block;
|
| 1228 |
+
width: 10px;
|
| 1229 |
+
height: 10px;
|
| 1230 |
+
border-radius: 3px;
|
| 1231 |
+
}
|
| 1232 |
+
|
| 1233 |
+
.legend-best {
|
| 1234 |
+
background: var(--gold-soft);
|
| 1235 |
+
border: 1px solid rgba(200, 139, 47, 0.4);
|
| 1236 |
+
}
|
| 1237 |
+
|
| 1238 |
+
.legend-second {
|
| 1239 |
+
background: var(--silver-soft);
|
| 1240 |
+
border-bottom: 2px solid #b0bdc4;
|
| 1241 |
+
}
|
| 1242 |
+
|
| 1243 |
+
.evidence-note {
|
| 1244 |
+
display: grid;
|
| 1245 |
+
grid-template-columns: auto 1fr;
|
| 1246 |
+
gap: 12px;
|
| 1247 |
+
align-items: start;
|
| 1248 |
+
padding: 16px 18px;
|
| 1249 |
+
color: var(--ink-soft);
|
| 1250 |
+
background: rgba(230, 239, 255, 0.65);
|
| 1251 |
+
border: 1px solid rgba(75, 123, 236, 0.16);
|
| 1252 |
+
border-radius: 14px;
|
| 1253 |
+
}
|
| 1254 |
+
|
| 1255 |
+
.evidence-note > span {
|
| 1256 |
+
display: grid;
|
| 1257 |
+
width: 24px;
|
| 1258 |
+
height: 24px;
|
| 1259 |
+
place-items: center;
|
| 1260 |
+
color: var(--blue);
|
| 1261 |
+
background: var(--white);
|
| 1262 |
+
border-radius: 50%;
|
| 1263 |
+
font-family: var(--serif);
|
| 1264 |
+
font-size: 13px;
|
| 1265 |
+
font-weight: 700;
|
| 1266 |
+
}
|
| 1267 |
+
|
| 1268 |
+
.evidence-note p {
|
| 1269 |
+
margin: 1px 0 0;
|
| 1270 |
+
font-size: 11px;
|
| 1271 |
+
}
|
| 1272 |
+
|
| 1273 |
+
.evidence-note p + p {
|
| 1274 |
+
margin-top: 7px;
|
| 1275 |
+
}
|
| 1276 |
+
|
| 1277 |
+
.evidence-note strong {
|
| 1278 |
+
color: var(--ink);
|
| 1279 |
+
}
|
| 1280 |
+
|
| 1281 |
+
.data-error {
|
| 1282 |
+
margin: 20px;
|
| 1283 |
+
padding: 16px;
|
| 1284 |
+
color: #8e3e2b;
|
| 1285 |
+
background: var(--coral-soft);
|
| 1286 |
+
border: 1px solid rgba(204, 102, 78, 0.22);
|
| 1287 |
+
border-radius: 12px;
|
| 1288 |
+
}
|
| 1289 |
+
|
| 1290 |
+
.data-error p {
|
| 1291 |
+
margin: 4px 0 0;
|
| 1292 |
+
font-size: 12px;
|
| 1293 |
+
}
|
| 1294 |
+
|
| 1295 |
+
.metrics-section {
|
| 1296 |
+
color: var(--paper);
|
| 1297 |
+
background: var(--ink);
|
| 1298 |
+
}
|
| 1299 |
+
|
| 1300 |
+
.metrics-section .section-intro {
|
| 1301 |
+
margin: 0 0 5px;
|
| 1302 |
+
color: rgba(255, 255, 255, 0.56);
|
| 1303 |
+
font-size: 16px;
|
| 1304 |
+
}
|
| 1305 |
+
|
| 1306 |
+
.metric-guide {
|
| 1307 |
+
display: grid;
|
| 1308 |
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
| 1309 |
+
gap: 13px;
|
| 1310 |
+
}
|
| 1311 |
+
|
| 1312 |
+
.metric-card {
|
| 1313 |
+
min-height: 270px;
|
| 1314 |
+
padding: 22px;
|
| 1315 |
+
color: var(--ink);
|
| 1316 |
+
background: var(--white);
|
| 1317 |
+
border: 2px solid transparent;
|
| 1318 |
+
border-radius: 18px;
|
| 1319 |
+
transition: transform 150ms ease, border-color 150ms ease;
|
| 1320 |
+
}
|
| 1321 |
+
|
| 1322 |
+
.metric-card:hover {
|
| 1323 |
+
transform: translateY(-3px);
|
| 1324 |
+
}
|
| 1325 |
+
|
| 1326 |
+
.metric-card.is-active {
|
| 1327 |
+
background: var(--blue-soft);
|
| 1328 |
+
border-color: var(--blue);
|
| 1329 |
+
}
|
| 1330 |
+
|
| 1331 |
+
.metric-card > button {
|
| 1332 |
+
display: flex;
|
| 1333 |
+
align-items: center;
|
| 1334 |
+
justify-content: space-between;
|
| 1335 |
+
width: 100%;
|
| 1336 |
+
margin-bottom: 30px;
|
| 1337 |
+
padding: 0;
|
| 1338 |
+
background: transparent;
|
| 1339 |
+
border: 0;
|
| 1340 |
+
}
|
| 1341 |
+
|
| 1342 |
+
.metric-abbr {
|
| 1343 |
+
padding: 6px 9px;
|
| 1344 |
+
color: var(--ink);
|
| 1345 |
+
background: var(--paper);
|
| 1346 |
+
border-radius: 7px;
|
| 1347 |
+
font-size: 10px;
|
| 1348 |
+
font-weight: 800;
|
| 1349 |
+
letter-spacing: 0.04em;
|
| 1350 |
+
}
|
| 1351 |
+
|
| 1352 |
+
.metric-card.is-active .metric-abbr {
|
| 1353 |
+
color: var(--blue);
|
| 1354 |
+
background: var(--white);
|
| 1355 |
+
}
|
| 1356 |
+
|
| 1357 |
+
.direction {
|
| 1358 |
+
padding: 5px 8px;
|
| 1359 |
+
border-radius: 999px;
|
| 1360 |
+
font-size: 8px;
|
| 1361 |
+
font-weight: 700;
|
| 1362 |
+
letter-spacing: 0.05em;
|
| 1363 |
+
text-transform: uppercase;
|
| 1364 |
+
}
|
| 1365 |
+
|
| 1366 |
+
.direction-higher {
|
| 1367 |
+
color: #557741;
|
| 1368 |
+
background: var(--green-soft);
|
| 1369 |
+
}
|
| 1370 |
+
|
| 1371 |
+
.direction-lower {
|
| 1372 |
+
color: #a34f3c;
|
| 1373 |
+
background: var(--coral-soft);
|
| 1374 |
+
}
|
| 1375 |
+
|
| 1376 |
+
.metric-card h3 {
|
| 1377 |
+
margin-bottom: 8px;
|
| 1378 |
+
font-size: 18px;
|
| 1379 |
+
line-height: 1.2;
|
| 1380 |
+
letter-spacing: -0.025em;
|
| 1381 |
+
}
|
| 1382 |
+
|
| 1383 |
+
.metric-card > p {
|
| 1384 |
+
min-height: 58px;
|
| 1385 |
+
margin-bottom: 20px;
|
| 1386 |
+
color: var(--ink-soft);
|
| 1387 |
+
font-size: 11px;
|
| 1388 |
+
}
|
| 1389 |
+
|
| 1390 |
+
.metric-card dl {
|
| 1391 |
+
display: grid;
|
| 1392 |
+
gap: 7px;
|
| 1393 |
+
margin: 0;
|
| 1394 |
+
padding-top: 15px;
|
| 1395 |
+
border-top: 1px solid var(--line);
|
| 1396 |
+
}
|
| 1397 |
+
|
| 1398 |
+
.metric-card dl div {
|
| 1399 |
+
display: grid;
|
| 1400 |
+
grid-template-columns: 65px 1fr;
|
| 1401 |
+
gap: 10px;
|
| 1402 |
+
}
|
| 1403 |
+
|
| 1404 |
+
.metric-card dt {
|
| 1405 |
+
color: var(--ink-soft);
|
| 1406 |
+
font-size: 8px;
|
| 1407 |
+
font-weight: 700;
|
| 1408 |
+
letter-spacing: 0.08em;
|
| 1409 |
+
text-transform: uppercase;
|
| 1410 |
+
}
|
| 1411 |
+
|
| 1412 |
+
.metric-card dd {
|
| 1413 |
+
margin: 0;
|
| 1414 |
+
font-size: 9px;
|
| 1415 |
+
font-weight: 600;
|
| 1416 |
+
text-align: right;
|
| 1417 |
+
}
|
| 1418 |
+
|
| 1419 |
+
.protocol-section {
|
| 1420 |
+
background: var(--paper-deep);
|
| 1421 |
+
}
|
| 1422 |
+
|
| 1423 |
+
.protocol-grid {
|
| 1424 |
+
display: grid;
|
| 1425 |
+
grid-template-columns: repeat(3, 1fr);
|
| 1426 |
+
gap: 16px;
|
| 1427 |
+
}
|
| 1428 |
+
|
| 1429 |
+
.protocol-grid article {
|
| 1430 |
+
min-height: 280px;
|
| 1431 |
+
padding: 28px;
|
| 1432 |
+
background: var(--white);
|
| 1433 |
+
border: 1px solid var(--line);
|
| 1434 |
+
border-radius: 20px;
|
| 1435 |
+
}
|
| 1436 |
+
|
| 1437 |
+
.protocol-grid article:nth-child(2) {
|
| 1438 |
+
background: var(--green-soft);
|
| 1439 |
+
}
|
| 1440 |
+
|
| 1441 |
+
.protocol-grid article:nth-child(3) {
|
| 1442 |
+
background: var(--blue-soft);
|
| 1443 |
+
}
|
| 1444 |
+
|
| 1445 |
+
.protocol-grid article > span {
|
| 1446 |
+
display: block;
|
| 1447 |
+
margin-bottom: 70px;
|
| 1448 |
+
color: var(--coral);
|
| 1449 |
+
font-family: var(--serif);
|
| 1450 |
+
font-size: 24px;
|
| 1451 |
+
}
|
| 1452 |
+
|
| 1453 |
+
.protocol-grid h3 {
|
| 1454 |
+
margin-bottom: 10px;
|
| 1455 |
+
font-size: 22px;
|
| 1456 |
+
letter-spacing: -0.03em;
|
| 1457 |
+
}
|
| 1458 |
+
|
| 1459 |
+
.protocol-grid p {
|
| 1460 |
+
margin: 0;
|
| 1461 |
+
color: var(--ink-soft);
|
| 1462 |
+
font-size: 13px;
|
| 1463 |
+
}
|
| 1464 |
+
|
| 1465 |
+
.submission-section {
|
| 1466 |
+
background: var(--coral-soft);
|
| 1467 |
+
}
|
| 1468 |
+
|
| 1469 |
+
.submission-grid {
|
| 1470 |
+
display: grid;
|
| 1471 |
+
grid-template-columns: minmax(0, 0.85fr) minmax(430px, 1fr);
|
| 1472 |
+
gap: 100px;
|
| 1473 |
+
align-items: center;
|
| 1474 |
+
}
|
| 1475 |
+
|
| 1476 |
+
.submission-section h2 {
|
| 1477 |
+
max-width: 600px;
|
| 1478 |
+
margin-bottom: 22px;
|
| 1479 |
+
font-family: var(--serif);
|
| 1480 |
+
font-size: clamp(42px, 5vw, 65px);
|
| 1481 |
+
font-weight: 400;
|
| 1482 |
+
line-height: 1.02;
|
| 1483 |
+
letter-spacing: -0.04em;
|
| 1484 |
+
}
|
| 1485 |
+
|
| 1486 |
+
.submission-copy {
|
| 1487 |
+
max-width: 620px;
|
| 1488 |
+
margin-bottom: 28px;
|
| 1489 |
+
color: var(--ink-soft);
|
| 1490 |
+
font-size: 16px;
|
| 1491 |
+
}
|
| 1492 |
+
|
| 1493 |
+
.submission-button {
|
| 1494 |
+
min-width: 220px;
|
| 1495 |
+
}
|
| 1496 |
+
|
| 1497 |
+
.is-disabled {
|
| 1498 |
+
cursor: default;
|
| 1499 |
+
opacity: 0.56;
|
| 1500 |
+
pointer-events: none;
|
| 1501 |
+
}
|
| 1502 |
+
|
| 1503 |
+
.submission-steps {
|
| 1504 |
+
display: grid;
|
| 1505 |
+
gap: 9px;
|
| 1506 |
+
margin: 0;
|
| 1507 |
+
padding: 0;
|
| 1508 |
+
list-style: none;
|
| 1509 |
+
}
|
| 1510 |
+
|
| 1511 |
+
.submission-steps li {
|
| 1512 |
+
display: grid;
|
| 1513 |
+
grid-template-columns: auto 1fr;
|
| 1514 |
+
gap: 16px;
|
| 1515 |
+
padding: 19px;
|
| 1516 |
+
background: rgba(255, 254, 249, 0.78);
|
| 1517 |
+
border: 1px solid rgba(204, 102, 78, 0.18);
|
| 1518 |
+
border-radius: 15px;
|
| 1519 |
+
}
|
| 1520 |
+
|
| 1521 |
+
.submission-steps li > span {
|
| 1522 |
+
display: grid;
|
| 1523 |
+
width: 36px;
|
| 1524 |
+
height: 36px;
|
| 1525 |
+
place-items: center;
|
| 1526 |
+
color: var(--coral);
|
| 1527 |
+
background: var(--coral-soft);
|
| 1528 |
+
border-radius: 10px;
|
| 1529 |
+
font-family: var(--serif);
|
| 1530 |
+
font-size: 18px;
|
| 1531 |
+
}
|
| 1532 |
+
|
| 1533 |
+
.submission-steps strong {
|
| 1534 |
+
font-size: 13px;
|
| 1535 |
+
}
|
| 1536 |
+
|
| 1537 |
+
.submission-steps p {
|
| 1538 |
+
margin: 3px 0 0;
|
| 1539 |
+
color: var(--ink-soft);
|
| 1540 |
+
font-size: 11px;
|
| 1541 |
+
}
|
| 1542 |
+
|
| 1543 |
+
.resource-band {
|
| 1544 |
+
padding: 24px 0;
|
| 1545 |
+
color: var(--paper);
|
| 1546 |
+
background: var(--ink);
|
| 1547 |
+
border-bottom: 1px solid rgba(255, 255, 255, 0.11);
|
| 1548 |
+
}
|
| 1549 |
+
|
| 1550 |
+
.resources {
|
| 1551 |
+
display: grid;
|
| 1552 |
+
grid-template-columns: repeat(3, 1fr);
|
| 1553 |
+
gap: 10px;
|
| 1554 |
+
}
|
| 1555 |
+
|
| 1556 |
+
.resource-link {
|
| 1557 |
+
display: grid;
|
| 1558 |
+
grid-template-columns: auto 1fr auto;
|
| 1559 |
+
align-items: center;
|
| 1560 |
+
gap: 13px;
|
| 1561 |
+
min-height: 70px;
|
| 1562 |
+
padding: 12px 15px;
|
| 1563 |
+
background: rgba(255, 255, 255, 0.055);
|
| 1564 |
+
border: 1px solid rgba(255, 255, 255, 0.11);
|
| 1565 |
+
border-radius: 13px;
|
| 1566 |
+
transition: background 150ms ease, transform 150ms ease;
|
| 1567 |
+
}
|
| 1568 |
+
|
| 1569 |
+
.resource-link:hover:not(.is-disabled) {
|
| 1570 |
+
background: rgba(255, 255, 255, 0.09);
|
| 1571 |
+
transform: translateY(-2px);
|
| 1572 |
+
}
|
| 1573 |
+
|
| 1574 |
+
.resource-symbol {
|
| 1575 |
+
display: grid;
|
| 1576 |
+
width: 34px;
|
| 1577 |
+
height: 34px;
|
| 1578 |
+
place-items: center;
|
| 1579 |
+
color: var(--ink);
|
| 1580 |
+
background: var(--paper);
|
| 1581 |
+
border-radius: 9px;
|
| 1582 |
+
font-size: 11px;
|
| 1583 |
+
font-weight: 700;
|
| 1584 |
+
}
|
| 1585 |
+
|
| 1586 |
+
.resource-link > span:nth-child(2) {
|
| 1587 |
+
display: flex;
|
| 1588 |
+
flex-direction: column;
|
| 1589 |
+
}
|
| 1590 |
+
|
| 1591 |
+
.resource-link strong {
|
| 1592 |
+
font-size: 12px;
|
| 1593 |
+
}
|
| 1594 |
+
|
| 1595 |
+
.resource-link small {
|
| 1596 |
+
margin-top: 2px;
|
| 1597 |
+
color: rgba(255, 255, 255, 0.48);
|
| 1598 |
+
font-size: 9px;
|
| 1599 |
+
}
|
| 1600 |
+
|
| 1601 |
+
.resource-link > b {
|
| 1602 |
+
color: rgba(255, 255, 255, 0.46);
|
| 1603 |
+
font-size: 11px;
|
| 1604 |
+
}
|
| 1605 |
+
|
| 1606 |
+
footer {
|
| 1607 |
+
padding: 34px 0;
|
| 1608 |
+
color: var(--paper);
|
| 1609 |
+
background: #101815;
|
| 1610 |
+
}
|
| 1611 |
+
|
| 1612 |
+
.footer-inner {
|
| 1613 |
+
display: grid;
|
| 1614 |
+
grid-template-columns: auto 1fr auto;
|
| 1615 |
+
align-items: center;
|
| 1616 |
+
gap: 30px;
|
| 1617 |
+
}
|
| 1618 |
+
|
| 1619 |
+
.footer-brand .brand-mark {
|
| 1620 |
+
color: var(--paper);
|
| 1621 |
+
}
|
| 1622 |
+
|
| 1623 |
+
.footer-brand small {
|
| 1624 |
+
color: rgba(255, 255, 255, 0.46);
|
| 1625 |
+
}
|
| 1626 |
+
|
| 1627 |
+
.footer-inner > p {
|
| 1628 |
+
margin: 0;
|
| 1629 |
+
color: rgba(255, 255, 255, 0.46);
|
| 1630 |
+
font-size: 10px;
|
| 1631 |
+
text-align: center;
|
| 1632 |
+
}
|
| 1633 |
+
|
| 1634 |
+
.footer-inner > a {
|
| 1635 |
+
font-size: 10px;
|
| 1636 |
+
font-weight: 700;
|
| 1637 |
+
}
|
| 1638 |
+
|
| 1639 |
+
.noscript {
|
| 1640 |
+
position: fixed;
|
| 1641 |
+
z-index: 1000;
|
| 1642 |
+
right: 20px;
|
| 1643 |
+
bottom: 20px;
|
| 1644 |
+
padding: 12px 16px;
|
| 1645 |
+
color: white;
|
| 1646 |
+
background: #a34f3c;
|
| 1647 |
+
border-radius: 10px;
|
| 1648 |
+
font-size: 12px;
|
| 1649 |
+
}
|
| 1650 |
+
|
| 1651 |
+
@media (max-width: 1080px) {
|
| 1652 |
+
.hero-inner {
|
| 1653 |
+
grid-template-columns: minmax(0, 1fr) minmax(360px, 0.8fr);
|
| 1654 |
+
gap: 52px;
|
| 1655 |
+
}
|
| 1656 |
+
|
| 1657 |
+
.toolbar {
|
| 1658 |
+
grid-template-columns: minmax(0, 1.2fr) minmax(0, 1.2fr) minmax(130px, 0.8fr);
|
| 1659 |
+
}
|
| 1660 |
+
|
| 1661 |
+
.tool-button {
|
| 1662 |
+
width: 100%;
|
| 1663 |
+
}
|
| 1664 |
+
|
| 1665 |
+
.metric-guide {
|
| 1666 |
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
| 1667 |
+
}
|
| 1668 |
+
}
|
| 1669 |
+
|
| 1670 |
+
@media (max-width: 860px) {
|
| 1671 |
+
.shell {
|
| 1672 |
+
width: min(100% - 36px, 1320px);
|
| 1673 |
+
}
|
| 1674 |
+
|
| 1675 |
+
.site-header nav > a:not(.nav-project) {
|
| 1676 |
+
display: none;
|
| 1677 |
+
}
|
| 1678 |
+
|
| 1679 |
+
.hero {
|
| 1680 |
+
padding: 60px 0;
|
| 1681 |
+
}
|
| 1682 |
+
|
| 1683 |
+
.hero-inner,
|
| 1684 |
+
.split-heading,
|
| 1685 |
+
.track-switcher,
|
| 1686 |
+
.submission-grid {
|
| 1687 |
+
grid-template-columns: 1fr;
|
| 1688 |
+
}
|
| 1689 |
+
|
| 1690 |
+
.hero-inner {
|
| 1691 |
+
gap: 40px;
|
| 1692 |
+
}
|
| 1693 |
+
|
| 1694 |
+
.hero-copy {
|
| 1695 |
+
text-align: center;
|
| 1696 |
+
}
|
| 1697 |
+
|
| 1698 |
+
.hero h1,
|
| 1699 |
+
.hero-description {
|
| 1700 |
+
margin-right: auto;
|
| 1701 |
+
margin-left: auto;
|
| 1702 |
+
}
|
| 1703 |
+
|
| 1704 |
+
.eyebrow {
|
| 1705 |
+
margin-right: auto;
|
| 1706 |
+
margin-left: auto;
|
| 1707 |
+
}
|
| 1708 |
+
|
| 1709 |
+
.hero-actions {
|
| 1710 |
+
justify-content: center;
|
| 1711 |
+
}
|
| 1712 |
+
|
| 1713 |
+
.stream-card {
|
| 1714 |
+
width: min(100%, 600px);
|
| 1715 |
+
min-height: auto;
|
| 1716 |
+
margin: 0 auto;
|
| 1717 |
+
}
|
| 1718 |
+
|
| 1719 |
+
.stats {
|
| 1720 |
+
grid-template-columns: repeat(3, 1fr);
|
| 1721 |
+
gap: 28px 0;
|
| 1722 |
+
}
|
| 1723 |
+
|
| 1724 |
+
.stats > div:nth-child(3) {
|
| 1725 |
+
border-right: 0;
|
| 1726 |
+
}
|
| 1727 |
+
|
| 1728 |
+
.section {
|
| 1729 |
+
padding: 88px 0;
|
| 1730 |
+
}
|
| 1731 |
+
|
| 1732 |
+
.split-heading {
|
| 1733 |
+
align-items: start;
|
| 1734 |
+
gap: 28px;
|
| 1735 |
+
}
|
| 1736 |
+
|
| 1737 |
+
.heading-note {
|
| 1738 |
+
max-width: 600px;
|
| 1739 |
+
}
|
| 1740 |
+
|
| 1741 |
+
.track-switcher {
|
| 1742 |
+
gap: 16px;
|
| 1743 |
+
}
|
| 1744 |
+
|
| 1745 |
+
.track-switcher > p {
|
| 1746 |
+
padding: 0 8px 7px;
|
| 1747 |
+
}
|
| 1748 |
+
|
| 1749 |
+
.toolbar {
|
| 1750 |
+
grid-template-columns: 1fr 1fr;
|
| 1751 |
+
}
|
| 1752 |
+
|
| 1753 |
+
.search-control,
|
| 1754 |
+
.metric-select-control {
|
| 1755 |
+
grid-column: 1 / -1;
|
| 1756 |
+
}
|
| 1757 |
+
|
| 1758 |
+
.protocol-grid {
|
| 1759 |
+
grid-template-columns: 1fr;
|
| 1760 |
+
}
|
| 1761 |
+
|
| 1762 |
+
.protocol-grid article {
|
| 1763 |
+
min-height: 220px;
|
| 1764 |
+
}
|
| 1765 |
+
|
| 1766 |
+
.protocol-grid article > span {
|
| 1767 |
+
margin-bottom: 45px;
|
| 1768 |
+
}
|
| 1769 |
+
|
| 1770 |
+
.submission-grid {
|
| 1771 |
+
gap: 52px;
|
| 1772 |
+
}
|
| 1773 |
+
|
| 1774 |
+
.resources {
|
| 1775 |
+
grid-template-columns: 1fr;
|
| 1776 |
+
}
|
| 1777 |
+
|
| 1778 |
+
.footer-inner {
|
| 1779 |
+
grid-template-columns: 1fr;
|
| 1780 |
+
justify-items: center;
|
| 1781 |
+
}
|
| 1782 |
+
}
|
| 1783 |
+
|
| 1784 |
+
@media (max-width: 600px) {
|
| 1785 |
+
.shell {
|
| 1786 |
+
width: min(100% - 24px, 1320px);
|
| 1787 |
+
}
|
| 1788 |
+
|
| 1789 |
+
.site-header {
|
| 1790 |
+
height: 66px;
|
| 1791 |
+
}
|
| 1792 |
+
|
| 1793 |
+
.brand-mark {
|
| 1794 |
+
width: 32px;
|
| 1795 |
+
height: 32px;
|
| 1796 |
+
}
|
| 1797 |
+
|
| 1798 |
+
.site-header .nav-project {
|
| 1799 |
+
padding: 7px 11px;
|
| 1800 |
+
font-size: 10px;
|
| 1801 |
+
}
|
| 1802 |
+
|
| 1803 |
+
.hero {
|
| 1804 |
+
padding: 48px 0 52px;
|
| 1805 |
+
}
|
| 1806 |
+
|
| 1807 |
+
.hero h1 {
|
| 1808 |
+
font-size: clamp(52px, 16vw, 76px);
|
| 1809 |
+
}
|
| 1810 |
+
|
| 1811 |
+
.hero-tagline {
|
| 1812 |
+
font-size: 20px;
|
| 1813 |
+
}
|
| 1814 |
+
|
| 1815 |
+
.hero-description {
|
| 1816 |
+
font-size: 14px;
|
| 1817 |
+
}
|
| 1818 |
+
|
| 1819 |
+
.hero-actions {
|
| 1820 |
+
display: grid;
|
| 1821 |
+
}
|
| 1822 |
+
|
| 1823 |
+
.stream-card {
|
| 1824 |
+
padding: 17px;
|
| 1825 |
+
border-radius: 20px;
|
| 1826 |
+
}
|
| 1827 |
+
|
| 1828 |
+
.stream-card::before {
|
| 1829 |
+
display: none;
|
| 1830 |
+
}
|
| 1831 |
+
|
| 1832 |
+
.stream-card-header {
|
| 1833 |
+
gap: 15px;
|
| 1834 |
+
font-size: 9px;
|
| 1835 |
+
}
|
| 1836 |
+
|
| 1837 |
+
.signal-group {
|
| 1838 |
+
padding: 20px 2px;
|
| 1839 |
+
}
|
| 1840 |
+
|
| 1841 |
+
.update-track span {
|
| 1842 |
+
width: 27px;
|
| 1843 |
+
height: 27px;
|
| 1844 |
+
font-size: 8px;
|
| 1845 |
+
}
|
| 1846 |
+
|
| 1847 |
+
.stats {
|
| 1848 |
+
grid-template-columns: 1fr 1fr;
|
| 1849 |
+
}
|
| 1850 |
+
|
| 1851 |
+
.stats > div {
|
| 1852 |
+
border-right: 0;
|
| 1853 |
+
}
|
| 1854 |
+
|
| 1855 |
+
.stats > div:last-child {
|
| 1856 |
+
grid-column: 1 / -1;
|
| 1857 |
+
}
|
| 1858 |
+
|
| 1859 |
+
.section {
|
| 1860 |
+
padding: 72px 0;
|
| 1861 |
+
}
|
| 1862 |
+
|
| 1863 |
+
.section-heading {
|
| 1864 |
+
margin-bottom: 40px;
|
| 1865 |
+
}
|
| 1866 |
+
|
| 1867 |
+
.section-heading h2 {
|
| 1868 |
+
font-size: 40px;
|
| 1869 |
+
}
|
| 1870 |
+
|
| 1871 |
+
.track-switcher {
|
| 1872 |
+
padding: 8px;
|
| 1873 |
+
}
|
| 1874 |
+
|
| 1875 |
+
.track-tabs {
|
| 1876 |
+
gap: 4px;
|
| 1877 |
+
}
|
| 1878 |
+
|
| 1879 |
+
.track-tab {
|
| 1880 |
+
justify-content: center;
|
| 1881 |
+
min-height: 46px;
|
| 1882 |
+
padding: 7px;
|
| 1883 |
+
}
|
| 1884 |
+
|
| 1885 |
+
.track-tab b {
|
| 1886 |
+
display: none;
|
| 1887 |
+
}
|
| 1888 |
+
|
| 1889 |
+
.category-bar {
|
| 1890 |
+
align-items: flex-start;
|
| 1891 |
+
flex-direction: column;
|
| 1892 |
+
gap: 8px;
|
| 1893 |
+
padding: 3px;
|
| 1894 |
+
}
|
| 1895 |
+
|
| 1896 |
+
.category-tabs {
|
| 1897 |
+
width: 100%;
|
| 1898 |
+
}
|
| 1899 |
+
|
| 1900 |
+
.category-tab {
|
| 1901 |
+
flex: 1;
|
| 1902 |
+
}
|
| 1903 |
+
|
| 1904 |
+
.table-panel {
|
| 1905 |
+
border-radius: 17px;
|
| 1906 |
+
}
|
| 1907 |
+
|
| 1908 |
+
.table-panel-header {
|
| 1909 |
+
align-items: start;
|
| 1910 |
+
flex-direction: column;
|
| 1911 |
+
padding: 22px 18px 18px;
|
| 1912 |
+
}
|
| 1913 |
+
|
| 1914 |
+
.table-panel-header h3 {
|
| 1915 |
+
font-size: 28px;
|
| 1916 |
+
}
|
| 1917 |
+
|
| 1918 |
+
.ranking-label {
|
| 1919 |
+
align-items: start;
|
| 1920 |
+
}
|
| 1921 |
+
|
| 1922 |
+
.toolbar {
|
| 1923 |
+
grid-template-columns: 1fr 1fr;
|
| 1924 |
+
padding: 12px;
|
| 1925 |
+
}
|
| 1926 |
+
|
| 1927 |
+
.search-control {
|
| 1928 |
+
grid-column: 1 / -1;
|
| 1929 |
+
}
|
| 1930 |
+
|
| 1931 |
+
.tool-button {
|
| 1932 |
+
min-width: 0;
|
| 1933 |
+
}
|
| 1934 |
+
|
| 1935 |
+
.model-heading,
|
| 1936 |
+
.model-cell {
|
| 1937 |
+
width: 155px;
|
| 1938 |
+
min-width: 155px;
|
| 1939 |
+
}
|
| 1940 |
+
|
| 1941 |
+
.model-cell small {
|
| 1942 |
+
max-width: 132px;
|
| 1943 |
+
}
|
| 1944 |
+
|
| 1945 |
+
.table-footer {
|
| 1946 |
+
align-items: start;
|
| 1947 |
+
flex-direction: column;
|
| 1948 |
+
padding: 14px 16px;
|
| 1949 |
+
}
|
| 1950 |
+
|
| 1951 |
+
.legend {
|
| 1952 |
+
justify-content: flex-start;
|
| 1953 |
+
}
|
| 1954 |
+
|
| 1955 |
+
.metric-guide {
|
| 1956 |
+
grid-template-columns: 1fr;
|
| 1957 |
+
}
|
| 1958 |
+
|
| 1959 |
+
.metric-card {
|
| 1960 |
+
min-height: auto;
|
| 1961 |
+
}
|
| 1962 |
+
|
| 1963 |
+
.protocol-grid article {
|
| 1964 |
+
min-height: 200px;
|
| 1965 |
+
padding: 23px;
|
| 1966 |
+
}
|
| 1967 |
+
|
| 1968 |
+
.submission-section h2 {
|
| 1969 |
+
font-size: 42px;
|
| 1970 |
+
}
|
| 1971 |
+
|
| 1972 |
+
.submission-steps li {
|
| 1973 |
+
padding: 15px;
|
| 1974 |
+
}
|
| 1975 |
+
}
|
| 1976 |
+
|
| 1977 |
+
@media (prefers-reduced-motion: reduce) {
|
| 1978 |
+
html {
|
| 1979 |
+
scroll-behavior: auto;
|
| 1980 |
+
}
|
| 1981 |
+
|
| 1982 |
+
*,
|
| 1983 |
+
*::before,
|
| 1984 |
+
*::after {
|
| 1985 |
+
transition-duration: 0.01ms !important;
|
| 1986 |
+
}
|
| 1987 |
+
}
|