:root{--bg:#ffffff;--bg-soft:#f9fafb;--text:#111827;--muted:#6b7280;--line:#e5e7eb;--green:#10b981;--green-dark:#059669;--green-soft:#d1fae5;--red:#ef4444;--amber:#f59e0b;--shadow:0 1px 2px rgba(0,0,0,0.04), 0 4px 12px rgba(0,0,0,0.04)}*{box-sizing:border-box}html,body{margin:0;padding:0;overflow-x:hidden}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Noto Sans CJK SC",sans-serif;font-size:16px;line-height:1.55;min-height:100vh;display:flex;flex-direction:column}a{color:var(--green-dark);text-decoration:none}a:hover{text-decoration:underline}code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,"Roboto Mono",Consolas,monospace;font-size:.92em;background:var(--bg-soft);padding:1px 5px;border-radius:4px;border:1px solid var(--line)}.site-header{border-bottom:1px solid var(--line);background:var(--bg);position:sticky;top:0;z-index:50}.site-header-inner{max-width:960px;margin:0 auto;padding:14px 24px;display:flex;align-items:center;gap:28px}.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:18px;color:var(--text);letter-spacing:-.01em;flex-shrink:0}.brand:hover{text-decoration:none}.site-nav{display:flex;gap:22px;align-items:center}.site-nav a{color:var(--muted);font-size:14px;padding:6px 0;position:relative}.site-nav a:hover{color:var(--text);text-decoration:none}.site-nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--green);transform:scaleX(0);transform-origin:left;transition:transform .15s ease}.site-nav a:hover::after,.site-nav a:focus-visible::after{transform:scaleX(1)}.nav-github{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:999px;color:var(--text)!important;margin-left:6px;transition:background .15s,color .15s}.nav-github:hover{background:var(--bg-soft);text-decoration:none}.nav-github svg{flex-shrink:0}.nav-github::after{display:none... [truncated]
/* TokenAPI Scan reusable latency/status bar — used by home, leaderboard, site archive, tools */
.ts-latency{display:grid;gap:5px;min-width:96px}
.ts-latency-top{display:flex;align-items:baseline;justify-content:space-between;gap:6px}
.ts-latency-top strong{font-size:14px;letter-spacing:-.02em;color:var(--text)}
.ts-latency-top span{font-size:11px;font-weight:900;color:#6b7280}
.ts-latency-track{position:relative;height:8px;border-radius:999px;overflow:hidden;background:#eef2ff;box-shadow:inset 0 0 0 1px rgba(99,102,241,.08)}
.ts-latency-fill{position:absolute;inset:0 auto 0 0;border-radius:999px;width:var(--latency-width,10%);background:linear-gradient(90deg,#10b981,#34d399)}
.ts-latency.fast .ts-latency-fill{background:linear-gradient(90deg,#10b981,#34d399)}
.ts-latency.ok .ts-latency-fill{background:linear-gradient(90deg,#6366f1,#8b5cf6)}
.ts-latency.slow .ts-latency-fill{background:linear-gradient(90deg,#f59e0b,#fbbf24)}
.ts-latency.bad .ts-latency-fill{background:linear-gradient(90deg,#ef4444,#f97316)}
.ts-latency.fast .ts-latency-top span{color:#047857}.ts-latency.ok .ts-latency-top span{color:#4f46e5}.ts-latency.slow .ts-latency-top span{color:#b45309}.ts-latency.bad .ts-latency-top span{color:#b91c1c}
