diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index a6f844d..0000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Keep captured command output verbatim, including terminal whitespace. -evidence/r2/*.log -whitespace diff --git a/.gitignore b/.gitignore deleted file mode 100644 index d049e3b..0000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules/ -.astro/ -dist/ -.DS_Store -evidence/r2/local-screens/ diff --git a/astro.config.mjs b/astro.config.mjs deleted file mode 100644 index d07dc33..0000000 --- a/astro.config.mjs +++ /dev/null @@ -1,21 +0,0 @@ -import { defineConfig } from 'astro/config'; -import sitemap from '@astrojs/sitemap'; - -export default defineConfig({ - site: 'https://askclaw.dev', - base: process.env.SITE_BASE || '/', - trailingSlash: 'always', - output: 'static', - integrations: [ - sitemap({ - i18n: { - defaultLocale: 'zh-CN', - locales: { - 'zh-CN': 'zh-CN', - en: 'en', - }, - }, - namespaces: { xhtml: true }, - }), - ], -}); diff --git a/en.html b/en.html index a058236..a57dc48 100644 --- a/en.html +++ b/en.html @@ -9,7 +9,7 @@ AskClaw — AMBER: sealed-in-amber replay evaluation - + diff --git a/src/pages/index.astro b/src/pages/index.astro deleted file mode 100644 index 1185d2a..0000000 --- a/src/pages/index.astro +++ /dev/null @@ -1,192 +0,0 @@ ---- -import BaseLayout from '../layouts/BaseLayout.astro'; - -const base = import.meta.env.BASE_URL; -const route = (path: string) => `${base}${path.replace(/^\/+/, '')}`; -const crabAsset = `${base}assets/crab-hero.webp`; - -const questions = [ - { - code: 'A', - tone: 'teal', - question: '同一个模型,官方端点和第三方有差吗?', - preview: '同模型,分 lane 对照。', - cue: '看 lane', - href: route('/method/#repos-title'), - ariaLabel: '同一个模型,官方端点和第三方有差吗?同模型,分 lane 对照。查看成绩仓。', - }, - { - code: 'B', - tone: 'amber', - question: '新出的模型能不能打?', - preview: '同一套 23 案,进榜即见。', - cue: '看 W38', - href: route('/#leaderboard'), - ariaLabel: '新出的模型能不能打?同一套 23 案,进榜即见。查看 2026-W38 总榜。', - }, - { - code: 'C', - tone: 'cobalt', - question: '我干这个活该用谁?', - preview: '按活挑轴,不看总分。', - cue: '按轴排', - href: route('/rank/'), - ariaLabel: '我干这个活该用谁?按活挑轴,不看总分。按工作类型查看九轴排行。', - }, - { - code: 'D', - tone: 'gold', - question: '这榜自己可信吗?', - preview: '封存、净室、hash 可查。', - cue: '看规范', - href: route('/method/#verify-title'), - ariaLabel: '这榜自己可信吗?封存、净室、hash 可查。查看规范和证据链。', - }, -] as const; - -const tiedLanes = [ - ['glm-5.3-flash @ Ollama Cloud', 'teal'], - ['deepseek-v4.1-flash @ CommandCode', 'cobalt'], - ['deepseek-v4.1-flash @ Ollama Cloud', 'sky'], - ['k3 @ Kimi 官方 coding', 'coral'], - ['hy4-preview-f @ WorkBuddy', 'mint'], -] as const; ---- - -
-
-
-
-

AMBER / PUBLIC BENCHMARK

- -

你想先问哪一句?

- -
- - -
- -
-
-
-

当前总榜

-

真实公开成绩 · 2026-W38

-
- 23 案 · 11 个成绩仓 -
- -
-
-
#1 · 当前榜首
-
-
-

swe-2-max @ Devin

-

考于 W37 · W38 未重考

-
- 18/23 -
-

榜首成绩 · 23 案题库

-
- - 通过案数 / 题库总案数 -
-
- -
-

#2 · 五席并列 · 均为 17/23

-
    - {tiedLanes.map(([name, tone]) => ( -
  1. - - {name} - 17/23 -
  2. - ))} -
-
-
- -
- 同分 ≠ 同款 - 榜单先给结果,详情页保留证据 -
-
- -
-
-

在补什么

-

先补齐证据,再回到首屏。

-
-
-
- -
-

AI 模型降智了吗?

-

跨家复测还未齐,暂不声称能力回退。

-
- 数据待发布 -
-
- -
-

在我关注的方面,有更好的平替吗?

-

便宜候选需要成体系的价格 / 成本源。

-
- 价格待发布 -
-
-

次级区只记缺口,不替数据提前下结论。

-
-
-
-
diff --git a/src/pages/method/index.astro b/src/pages/method/index.astro deleted file mode 100644 index 0780a0b..0000000 --- a/src/pages/method/index.astro +++ /dev/null @@ -1,79 +0,0 @@ ---- -import BaseLayout from '../../layouts/BaseLayout.astro'; - -const resultRepos = [ - ['amber-devin', '18/23', 'swe-2-max @ Devin', 'W37'], - ['amber-kimi', '17/23', 'k3 @ Kimi official coding', 'W38'], - ['amber-ollama', '17/23', 'glm-5.3-flash / d41f @ Ollama Cloud', 'W37'], - ['amber-commandcode', '17/23', 'd41f @ CommandCode', 'W37'], - ['amber-workbuddy', '17/23', 'hy4-preview-f @ WorkBuddy ACP', 'W37'], - ['amber-gpt', '16/23', 'gpt-6-astra / gpt-5.6 family @ OpenAI Codex', 'W38'], - ['amber-crof', '16/23', 'qwen3.8-27b @ CrofAI', 'W37'], - ['amber-deepseek', '16/23', 'deepseek-flash @ DeepSeek official', 'W37'], - ['amber-opencode', '16/23', 'deepseek-flash @ OpenCode Go', 'W37'], - ['amber-doubao', '16/23', 'doubao-seed-evolving @ Volcengine Ark Agent Plan', 'W38'], - ['amber-goldenpotato', '14/23', 'Qwen3.8-27B @ community self-hosted', 'W38'], -]; ---- - -
-
-

AMBER 方法

-

- 琥珀评测把真实、可审计的历史事件封存到答案揭晓前,让模型只用当时可得的信息重做一次。 - 评分规则先冻结,题库不公开,分数和校验材料公开。 -

-
-
23 / 26案 / 卷,私有题库
-
11公开成绩仓
-
W38保留的最新快照
-
-
- -
-

方法原则

-

公开材料可以复核成绩,但不会泄露私有题库。

-
-
私有内容:题库、oracle、transcript、内部案号和变体名不公开。
-
公开内容:成绩、汇总、裁决和哈希索引,任何人都可以重新核对。
-
历史结果是证据,不是唯一正解;运行时封存也不等于训练数据纯净。
-
-
- -
-

11 个成绩仓

-

每个仓对应一条模型结果记录;名称、分数、期号和链接沿用公开材料。

-

- Ollama 的 glm-5.3-flash 与 CrofAI 的 qwen3.8-27b 使用 W37 补考合成成绩: - W36 的 15/21、14/21 各加两案,成为 17/23、16/23;d41f 的 17/23 为 W37 全库首考。 - 按轴榜保留这两条 W36 的 21 案记录,不是这份合成总分。 - 原始说明:Ollama W37 ·{' '} - CrofAI W37。 -

-
- {resultRepos.map(([repo, score, model, week]) => ( - - {score} - {repo} - {model} - {week} · 23 cases - - ))} -
-
- -
-

公开校验入口

-

这些链接是方法和公开记录的原始入口。

- -
-
-
diff --git a/src/pages/rank/index.astro b/src/pages/rank/index.astro deleted file mode 100644 index 7931902..0000000 --- a/src/pages/rank/index.astro +++ /dev/null @@ -1,242 +0,0 @@ ---- -import BaseLayout from '../../layouts/BaseLayout.astro'; -import rawLanes from '../../data/axes.json'; - -const faces = [ - ['build', '施工'], - ['ops', '运维'], - ['text', '文本'], - ['verify', '核验'], - ['review', '审查'], - ['req-drift', '需求漂移'], - ['ui-build', 'UI 搭建'], - ['vision', '视觉审图'], -] as const; - -// Keep the canonical records byte-for-byte. Only this lane's public vendor -// label is mapped; never substring-replace ordinary domain terminology. -const lanes = rawLanes.map((lane) => ({ - ...lane, - vendor: lane.id === 'kimi' ? 'Kimi official coding' : lane.vendor, -})); - -const stats = faces.map(([id, label]) => { - const available = lanes.filter((lane) => lane.axis[id].n > 0); - const full = available.filter((lane) => lane.axis[id].p === lane.axis[id].n); - return { id, label, full: full.length, available: available.length }; -}); ---- - -
-

按轴挑模型 — 别只看总分

-

- 选择你要做的工作类型,下表先比较所选类型里的最低通过数,再比较合计。 - 这让 12 条公开车道的差异更容易核对。 -

- -
-

选择工作类型

-

每个 chip 显示该类型里满分车道的数量。默认不选任何类型。

-
-
- {stats.map(({ id, label, full, available }) => ( - - ))} -
-
-
- - - - - -
- -
-
还没有选择。先选一种工作类型。
-
-
- -
-

短板排序

-

规则:先比最低通过数,再比所选类型的通过总数;并列会保留。

-
- - - - - - -
AMBER work-type ranking
选择一种工作类型后显示车道。
-
- -

数据来自公开成绩仓。期号和案数随原始记录保留;方法与公开哈希索引见 方法

-
-
-
- - diff --git a/src/pages/robots.txt.ts b/src/pages/robots.txt.ts deleted file mode 100644 index f29f35d..0000000 --- a/src/pages/robots.txt.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { APIRoute } from 'astro'; - -const site = 'https://askclaw.dev'; - -export const GET: APIRoute = () => { - const baseUrl = new URL(import.meta.env.BASE_URL, site); - const sitemap = new URL('sitemap-index.xml', baseUrl).href; - - return new Response(`User-agent: *\nAllow: /\n\nSitemap: ${sitemap}\n`, { - headers: { - 'Content-Type': 'text/plain; charset=utf-8', - }, - }); -}; \ No newline at end of file diff --git a/src/styles/global.css b/src/styles/global.css deleted file mode 100644 index 6d916d6..0000000 --- a/src/styles/global.css +++ /dev/null @@ -1,1264 +0,0 @@ -:root { - --ink: #17242b; - --sub: #5a6b73; - --teal: #00a5b5; - --teal-dark: #0b7c88; - --bg: #fafdfe; - --card: #fff; - --line: #e3ecef; - --warning-bg: #fffbe9; - --warning-line: #f0e3b0; -} - -* { - box-sizing: border-box; -} - -html { - background: var(--bg); -} - -body { - margin: 0; - color: var(--ink); - background: var(--bg); - font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; - line-height: 1.7; -} - -a { - color: var(--teal-dark); - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -:focus-visible { - outline: 3px solid #f4b942; - outline-offset: 3px; -} - -.wrap { - width: min(980px, calc(100% - 40px)); - margin: 0 auto; -} - -.site-header { - border-bottom: 1px solid var(--line); - padding: 18px 0; -} - -.site-header .wrap, -.site-footer .wrap, -.header-nav, -.header-links { - display: flex; - align-items: center; -} - -.site-header .wrap, -.site-footer .wrap { - justify-content: space-between; - gap: 20px; -} - -.logo { - color: var(--ink); - font-size: 20px; - font-weight: 800; - letter-spacing: -0.02em; -} - -.logo span { - color: var(--teal); -} - -.header-nav, -.header-links { - flex-wrap: wrap; - gap: 16px; -} - -.header-nav a, -.header-links a { - color: var(--sub); - font-size: 14px; -} - -main { - min-height: 60vh; -} - -.hero { - padding: 64px 0 38px; -} - -.hero h1, -h1 { - margin: 0; - font-size: clamp(2rem, 5vw, 2.6rem); - line-height: 1.25; - letter-spacing: -0.025em; -} - -.hero h1 em, -h1 em { - color: var(--teal); - font-style: normal; -} - -.hero p, -.lead { - max-width: 760px; - margin: 16px 0 0; - color: var(--sub); - font-size: 1.08rem; -} - -.hero-actions, -.badges, -.stat-grid, -.repo-grid, -.rule-list { - display: grid; - gap: 14px; -} - -.hero-actions { - grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); - max-width: 620px; - margin-top: 28px; -} - -.action-card, -.badge, -.stat-card, -.repo-card, -.panel, -.rule, -.notice { - border: 1px solid var(--line); - border-radius: 10px; - background: var(--card); -} - -.action-card, -.badge, -.stat-card, -.repo-card, -.panel { - padding: 16px 18px; -} - -.action-card { - display: block; - color: var(--ink); -} - -.action-card:hover { - border-color: var(--teal); - text-decoration: none; -} - -.action-card strong, -.repo-card strong { - color: var(--teal-dark); -} - -.action-card small, -.badge small, -.repo-card small, -.muted, -.hint, -.note { - color: var(--sub); -} - -.action-card small, -.badge small, -.repo-card small { - display: block; - font-size: 0.84rem; -} - -.section { - padding: 34px 0; -} - -.section h2 { - margin: 0 0 6px; - font-size: 1.5rem; -} - -.hint, -.note { - margin: 0 0 18px; - font-size: 0.92rem; -} - -.badges, -.stat-grid { - grid-template-columns: repeat(auto-fit, minmax(175px, 1fr)); - margin-top: 26px; -} - -.badge strong, -.stat-card strong { - display: block; - color: var(--teal-dark); - font-size: 1.35rem; -} - -.badge span, -.stat-card span { - display: block; - color: var(--sub); - font-size: 0.82rem; -} - -.repo-grid { - grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); -} - -.repo-card { - display: block; - color: var(--ink); -} - -.repo-card:hover { - border-color: var(--teal); - text-decoration: none; -} - -.repo-card .score { - float: right; - color: var(--ink); - font-weight: 700; -} - -.rule-list { - grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); -} - -.rule { - border-left: 3px solid var(--teal); - padding: 10px 14px; - color: var(--sub); -} - -.notice { - border-left: 3px solid var(--teal); - padding: 12px 16px; - color: var(--sub); -} - -.site-footer { - margin-top: 40px; - border-top: 1px solid var(--line); - padding: 26px 0 40px; - color: var(--sub); - font-size: 0.85rem; -} - -.site-footer .wrap { - align-items: flex-start; -} - -.site-footer p { - margin: 0; -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; -} - -.skip-link { - position: absolute; - left: -9999px; - top: 8px; - z-index: 2; - padding: 8px 12px; - color: #fff; - background: var(--ink); -} - -.skip-link:focus { - left: 8px; -} - -/* Rank picker */ -.rank-page h1 { - margin-top: 40px; -} - -.picker { - padding: 18px 20px; -} - -.chips, -.preset-list { - display: flex; - flex-wrap: wrap; - gap: 8px; -} - -.chip, -.preset { - border: 1px solid var(--line); - border-radius: 999px; - background: #fff; - color: var(--ink); - cursor: pointer; - font: inherit; -} - -.chip { - padding: 7px 14px; - font-size: 0.88rem; -} - -.chip:hover, -.preset:hover, -.chip[aria-pressed="true"] { - border-color: var(--teal); -} - -.chip[aria-pressed="true"] { - color: #fff; - background: var(--teal); - font-weight: 700; -} - -.chip .count { - margin-left: 5px; - font-size: 0.76rem; - opacity: 0.78; -} - -.picker-bar { - display: flex; - align-items: center; - justify-content: space-between; - gap: 12px; - flex-wrap: wrap; - margin-top: 16px; - padding-top: 14px; - border-top: 1px dashed var(--line); -} - -.preset { - padding: 5px 11px; - color: var(--teal-dark); - border-color: var(--teal); - font-size: 0.82rem; -} - -.clear-button { - border: 0; - padding: 5px; - color: var(--sub); - background: transparent; - cursor: pointer; - font: inherit; - font-size: 0.82rem; -} - -.verdict { - min-height: 2.6em; - margin-top: 16px; - border-left: 3px solid var(--teal); - padding: 10px 14px; - color: var(--sub); -} - -.verdict strong { - color: var(--ink); -} - -.board-wrap { - overflow-x: auto; - border: 1px solid var(--line); - border-radius: 10px; - background: #fff; -} - -table.board { - width: 100%; - border-collapse: collapse; - font-size: 0.88rem; -} - -table.board th, -table.board td { - padding: 9px 10px; - border-bottom: 1px solid var(--line); - text-align: left; - white-space: nowrap; -} - -table.board th { - color: var(--sub); - background: #f6fafb; - font-size: 0.8rem; - font-weight: 700; -} - -table.board th.num, -table.board td.num { - text-align: right; -} - -table.board tbody tr:hover { - background: #f7fcfd; -} - -.lane { - font-weight: 700; -} - -.lane small { - display: block; - color: var(--sub); - font-size: 0.76rem; - font-weight: 400; -} - -.cell, -.total, -.rank-number { - font-variant-numeric: tabular-nums; -} - -.cell.pass { - color: var(--teal-dark); - font-weight: 700; -} - -.cell.fail, -.min.bad { - color: #c0392b; -} - -.min.good { - color: var(--teal-dark); -} - -.saturation { - margin-top: 14px; - border: 1px solid var(--warning-line); - border-radius: 8px; - padding: 10px 14px; - color: #7a6a2f; - background: var(--warning-bg); - font-size: 0.88rem; -} - -[hidden] { - display: none !important; -} - -@media (max-width: 720px) { - .wrap { - width: min(100% - 28px, 980px); - } - - .site-header .wrap, - .site-footer .wrap { - align-items: flex-start; - flex-direction: column; - } - - .hero { - padding-top: 42px; - } -} - -@media (prefers-reduced-motion: reduce) { - *, - *::before, - *::after { - scroll-behavior: auto !important; - transition-duration: 0.01ms !important; - } -} - -/* ------------------------------------------------------------------ - AskClaw home visual batch (appended block, additive only). - Color values and geometry are read from the design sources: - ~/2609/askclaw-design-05/mockups/01-hero-questions-4-desktop.svg - ~/2609/askclaw-design-05/mockups/02-hero-questions-4-mobile.svg - ~/2609/askclaw-design-05/mockups/03-pending-section.svg - Page ground #FBFCF8 · card edges #D7EAE5 · card radius 20px - A #E6F4F0 B #FFF3D2 C #E5E9FF D #FFF7DE · crab bubble #123C46 - ------------------------------------------------------------------ */ - -.home-document { - background-color: #FBFCF8; -} - -html:has(> body.home-document) { - background-color: #FBFCF8; -} - -.home-document .site-header { - border-bottom-color: #DCEBE6; -} - -.home-document .site-footer { - border-top-color: #DCEBE6; -} - -.home-document .site-header .logo { - font-family: "Noto Serif CJK SC", "Noto Serif SC", Georgia, "Songti SC", serif; - color: #123C46; -} - -.home-document .header-nav a { - color: #6C8B91; - font-weight: 500; -} - -.home-document .header-nav a[aria-current="page"] { - color: #149C9B; - font-weight: 600; -} - -.home-document .language-toggle { - display: inline-flex; - align-items: center; - gap: 4px; - padding: 5px 14px; - border: 1px solid #DCEBE6; - border-radius: 16px; - background: #FFFFFF; - color: #6C8B91; - font-size: 13px; - font-weight: 500; -} - -.home-document .language-toggle .language-current { - color: #149C9B; - font-weight: 700; -} - -.home-page { - background-color: #FBFCF8; - color: #123C46; -} - -.home-wrap { - width: min(1160px, calc(100% - 40px)); -} - -/* --- hero ---------------------------------------------------------- */ - -.question-hero { - display: grid; - gap: 18px; - padding: 30px 0 6px; -} - -.question-panel { - min-width: 0; -} - -.eyebrow { - margin: 0; - color: #149C9B; - font-size: 11px; - font-weight: 800; - letter-spacing: 1.7px; - line-height: 1.2; - text-transform: uppercase; -} - -.eyebrow-rule { - width: 204px; - max-width: 62%; - height: 4px; - margin: 9px 0 0; - border: 0; - border-radius: 2px; - background: #F7B83E; -} - -.question-hero h1 { - margin: 18px 0 0; - color: #123C46; - font-size: clamp(1.6rem, 3vw, 2.15rem); - font-weight: 800; - line-height: 1.25; - letter-spacing: -0.01em; -} - -.question-grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 14px 16px; - margin-top: 22px; -} - -.question-entry { - display: grid; - grid-template-columns: minmax(0, 1fr) auto; - grid-template-areas: - "meta meta" - "question question" - "preview cue"; - align-items: end; - column-gap: 10px; - row-gap: 6px; - box-sizing: border-box; - min-height: 96px; - padding: 14px 16px 12px; - border: 1px solid #D7EAE5; - border-radius: 20px; - color: #123C46; - text-decoration: none; -} - -.question-entry:hover { - text-decoration: none; - box-shadow: 0 10px 22px rgba(23, 75, 84, 0.1); -} - -.question-entry-teal { - background: #E6F4F0; -} - -.question-entry-amber { - background: #FFF3D2; -} - -.question-entry-cobalt { - background: #E5E9FF; -} - -.question-entry-gold { - background: #FFF7DE; -} - -.question-entry-teal .question-meta, -.question-entry-teal .edge-cue { - color: #149C9B; -} - -.question-entry-amber .question-meta, -.question-entry-amber .edge-cue { - color: #F7B83E; -} - -.question-entry-cobalt .question-meta, -.question-entry-cobalt .edge-cue { - color: #6C73D9; -} - -.question-entry-gold .question-meta, -.question-entry-gold .edge-cue { - color: #D79D2C; -} - -.question-entry-teal .question-dot { - background: #149C9B; -} - -.question-entry-amber .question-dot { - background: #F7B83E; -} - -.question-entry-cobalt .question-dot { - background: #6C73D9; -} - -.question-entry-gold .question-dot { - background: #D79D2C; -} - -.question-meta { - grid-area: meta; - display: inline-flex; - align-items: center; - gap: 6px; - font-size: 10px; - font-weight: 800; - letter-spacing: 1.4px; - line-height: 1.2; -} - -.question-dot { - flex: none; - width: 9px; - height: 9px; - border-radius: 50%; - background: #149C9B; -} - -.question-copy { - display: contents; -} - -.question { - grid-area: question; - display: block; - color: #123C46; - font-size: 14px; - font-weight: 800; - line-height: 1.3; -} - -.preview { - grid-area: preview; - display: block; - color: #6C8B91; - font-size: 10.5px; - font-weight: 500; - line-height: 1.35; - min-width: 0; - overflow-wrap: anywhere; -} - -.edge-cue { - grid-area: cue; - display: inline-flex; - align-items: center; - gap: 5px; - font-size: 12px; - font-weight: 700; - line-height: 1.35; - white-space: nowrap; -} - -.cue-mark { - font-size: 11px; - line-height: 1; -} - -.crab-guide { - display: flex; - flex-direction: column; - gap: 12px; - min-width: 0; -} - -.crab-frame { - overflow: hidden; - border: 1px solid #F0E4C2; - border-radius: 28px; - background: #FFF6DE; -} - -.crab-frame img { - display: block; - width: 100%; - height: auto; -} - -.crab-bubble { - position: relative; - margin: 0; - padding: 11px 20px; - border-radius: 22px; - background: #123C46; - color: #FFFFFF; - font-size: 13px; - font-weight: 700; - line-height: 1.4; - text-align: center; - box-shadow: 0 5px 12px rgba(23, 75, 84, 0.16); -} - -.crab-bubble::before { - content: ""; - position: absolute; - top: -9px; - left: 50%; - margin-left: -9px; - border-right: 9px solid transparent; - border-bottom: 9px solid #123C46; - border-left: 9px solid transparent; -} - -.fact-rail { - display: flex; - align-items: center; - gap: 9px; - min-height: 48px; - padding: 8px 16px; - border: 1px solid #DCEBE6; - border-radius: 24px; - background: #FFFFFF; - color: #123C46; - font-size: 13px; - font-weight: 700; - line-height: 1.4; -} - -.fact-dot { - flex: none; - width: 10px; - height: 10px; - border-radius: 50%; - background: #F7B83E; -} - -/* --- leaderboard --------------------------------------------------- */ - -.leaderboard { - margin-top: 44px; - padding: 24px 26px 0; - border: 1px solid #DCEBE6; - border-radius: 30px; - background: #FFFFFF; - box-shadow: 0 12px 32px rgba(23, 75, 84, 0.1); -} - -.leaderboard-header { - display: flex; - align-items: flex-start; - justify-content: space-between; - gap: 16px; - flex-wrap: wrap; - padding-bottom: 18px; -} - -.leaderboard-header h2 { - margin: 0; - color: #123C46; - font-family: "Noto Serif CJK SC", "Noto Serif SC", Georgia, "Songti SC", serif; - font-size: 1.5rem; - font-weight: 800; - line-height: 1.25; -} - -.leaderboard-header p { - margin: 4px 0 0; - color: #6C8B91; - font-size: 12px; - font-weight: 600; -} - -.leaderboard-badge { - display: inline-flex; - align-items: center; - padding: 7px 15px; - border-radius: 999px; - background: #E6F4F0; - color: #149C9B; - font-size: 11px; - font-weight: 700; - line-height: 1.3; - white-space: nowrap; -} - -.leaderboard-body { - display: grid; - grid-template-columns: minmax(0, 1fr); - gap: 18px; -} - -.leaderboard-footer { - display: flex; - align-items: center; - justify-content: space-between; - gap: 14px; - flex-wrap: wrap; - margin-top: 20px; - padding: 16px 0 20px; - border-top: 1px solid #DCEBE6; - font-size: 12px; -} - -.leaderboard-footer strong { - color: #335F67; - font-weight: 700; -} - -.leaderboard-footer span { - color: #6C8B91; - font-weight: 500; -} - -.champion-card { - display: flex; - flex-direction: column; - gap: 10px; - min-width: 0; - padding: 22px 24px; - border-radius: 24px; - background: #FFF3D2; -} - -.rank-label { - display: flex; - align-items: center; - gap: 10px; - color: #335F67; - font-size: 11px; - font-weight: 800; - letter-spacing: 0.6px; - line-height: 1.3; -} - -.rank-dot { - flex: none; - width: 14px; - height: 14px; - border-radius: 50%; - background: #F7B83E; -} - -.champion-main { - display: flex; - align-items: flex-end; - justify-content: space-between; - gap: 14px; - flex-wrap: wrap; - min-width: 0; -} - -.champion-main h3 { - margin: 0; - color: #123C46; - font-family: "Noto Serif CJK SC", "Noto Serif SC", Georgia, "Songti SC", serif; - font-size: 1.3rem; - font-weight: 800; - line-height: 1.3; - overflow-wrap: anywhere; -} - -.champion-main p { - margin: 6px 0 0; - color: #6C8B91; - font-size: 12px; - font-weight: 600; - line-height: 1.4; -} - -.champion-score { - color: #123C46; - font-size: clamp(1.7rem, 3.4vw, 2.6rem); - font-weight: 800; - font-variant-numeric: tabular-nums; - line-height: 1; -} - -.champion-detail { - margin: 0; - color: #6C8B91; - font-size: 11px; - font-weight: 600; - line-height: 1.4; -} - -.progress-block { - display: flex; - flex-direction: column; - gap: 8px; - min-width: 0; - color: #6C8B91; - font-size: 11px; - font-weight: 500; - line-height: 1.4; -} - -.progress-track { - display: block; - overflow: hidden; - height: 10px; - border-radius: 5px; - background: #FCE6A9; -} - -.progress-track span { - display: block; - height: 100%; - border-radius: 5px; - background: #F7B83E; -} - -.tied-card { - min-width: 0; - padding: 22px 24px; - border: 1px solid #DCEBE6; - border-radius: 24px; - background: #FBFEFC; -} - -.tied-card h3 { - margin: 0 0 6px; - color: #149C9B; - font-size: 15px; - font-weight: 800; - line-height: 1.35; -} - -.tied-list { - margin: 0; - padding: 0; - list-style: none; -} - -.tied-list li { - display: flex; - align-items: center; - gap: 14px; - padding: 12px 0; - border-bottom: 1px solid #EEF5F2; -} - -.tied-list li:last-child { - border-bottom: 0; -} - -.lane-marker { - flex: none; - width: 10px; - height: 10px; - border-radius: 50%; - background: #149C9B; -} - -.lane-marker-teal { - background: #149C9B; -} - -.lane-marker-cobalt { - background: #6C73D9; -} - -.lane-marker-sky { - background: #78A9C8; -} - -.lane-marker-coral { - background: #EF7569; -} - -.lane-marker-mint { - background: #9DCFC1; -} - -.lane-name { - flex: 1 1 auto; - min-width: 0; - overflow: hidden; - color: #335F67; - font-size: 11px; - font-weight: 600; - text-overflow: ellipsis; - white-space: nowrap; -} - -.tied-list strong { - flex: none; - color: #123C46; - font-size: 11px; - font-weight: 800; - font-variant-numeric: tabular-nums; -} - -/* --- pending section ----------------------------------------------- */ - -.pending-section { - margin: 44px 0 0; - padding: 0 0 40px; -} - -.pending-header h2 { - margin: 0; - color: #123C46; - font-family: "Noto Serif CJK SC", "Noto Serif SC", Georgia, "Songti SC", serif; - font-size: 1.6rem; - font-weight: 800; - line-height: 1.25; -} - -.pending-header p { - margin: 8px 0 0; - color: #6C8B91; - font-size: 13px; - font-weight: 500; - line-height: 1.5; -} - -.pending-list { - margin-top: 20px; - border-top: 1px solid #DCEBE6; -} - -.pending-row { - display: grid; - grid-template-columns: auto minmax(0, 1fr) auto; - align-items: center; - gap: 16px; - padding: 20px 0; - border-bottom: 1px solid #DCEBE6; -} - -.pending-letter { - display: inline-flex; - align-items: center; - justify-content: center; - flex: none; - width: 30px; - height: 30px; - border: 1px solid #F7B83E; - border-radius: 50%; - background: #FFF3D2; - color: #F7B83E; - font-size: 12px; - font-weight: 800; - line-height: 1; -} - -.pending-row h3 { - margin: 0; - color: #123C46; - font-size: 21px; - font-weight: 800; - line-height: 1.3; -} - -.pending-row p { - margin: 4px 0 0; - color: #6C8B91; - font-size: 12px; - font-weight: 500; - line-height: 1.5; -} - -.pending-status { - display: inline-flex; - align-items: center; - justify-content: center; - padding: 8px 18px; - border: 1px solid #EEDCA9; - border-radius: 999px; - background: #FFF3D2; - color: #335F67; - font-size: 12px; - font-weight: 700; - line-height: 1.2; - white-space: nowrap; -} - -.pending-row-e .pending-letter { - border-color: #F7B83E; - background: #FFF3D2; - color: #F7B83E; -} - -.pending-row-e .pending-status { - border-color: #EEDCA9; - background: #FFF3D2; - color: #335F67; -} - -.pending-row-f .pending-letter { - border-color: #6C73D9; - background: #E5E9FF; - color: #6C73D9; -} - -.pending-row-f .pending-status { - border-color: #CDD4F5; - background: #E5E9FF; - color: #335F67; -} - -.pending-note { - margin: 18px 0 0; - color: #6C8B91; - font-size: 12px; - font-weight: 600; - line-height: 1.5; -} - -/* --- home breakpoints ---------------------------------------------- */ - -@media (min-width: 1024px) { - .question-hero { - grid-template-columns: minmax(0, 1fr) minmax(280px, 0.42fr); - align-items: start; - gap: 28px; - padding-top: 36px; - } - - .question { - font-size: 15px; - } - - .preview { - font-size: 12px; - } - - .leaderboard-body { - grid-template-columns: minmax(0, 0.5fr) minmax(0, 1fr); - } -} - -@media (min-width: 1280px) { - .question { - font-size: 17px; - } -} - -@media (max-width: 720px) { - .leaderboard { - margin-top: 36px; - border-radius: 24px; - padding: 20px 18px 0; - } - - .question-entry { - padding: 12px 14px 12px; - } - - .crab-frame { - border-radius: 24px; - } -} - -@media (max-width: 640px) { - .pending-row { - grid-template-columns: auto minmax(0, 1fr); - row-gap: 10px; - } - - .pending-status { - grid-column: 2; - justify-self: start; - } - - .pending-row h3 { - font-size: 18px; - } -} - -@media (max-width: 480px) { - .question-hero { - padding-top: 22px; - } - - .question-grid { - margin-top: 18px; - } - - .question-entry { - min-height: 118px; - } - - .champion-score { - font-size: 1.7rem; - } -}