Files
reground-site/layouts/_default/baseof.html
T
will 39e8cdcd12
deploy / deploy (push) Successful in 4s
Accessibility pass: fix real WCAG contrast failures, add skip link and nav landmarks
Computed actual contrast ratios rather than eyeballing:
- White button text on teal was 3.67:1, fails AA (needs 4.5:1) — darkened
  the CTA color to 007f73, now 4.90:1.
- Rose nav-hover text was 2.50:1 on the header, 1.82:1 on the footer —
  both far below any AA threshold. Rose now shows as an underline instead
  of a text color change, so the accent survives without breaking
  legibility.
- Added a skip-to-content link (hidden until focused, standard pattern),
  aria-label on both nav landmarks (header nav and footer nav previously
  both announced as plain 'navigation' with no way to distinguish them),
  and an explicit high-contrast focus-visible ring — including a
  header-specific override since the default cta-color ring was only
  ~1:1 against the slate blue header background.

All values re-verified in both light and dark mode, not just light.
2026-07-08 19:17:03 -04:00

49 lines
1.6 KiB
HTML

<!DOCTYPE html>
<html lang="{{ .Site.Language.LanguageCode | default "en" }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }} · {{ .Site.Title }}{{ end }}</title>
<meta name="description" content="{{ .Site.Params.description }}">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&family=Open+Sans:wght@400;600;700&family=Source+Code+Pro:wght@400;600&display=swap">
{{ $css := resources.Get "css/main.css" }}
{{ if hugo.IsProduction }}
{{ $css = $css | minify | fingerprint }}
<link rel="stylesheet" href="{{ $css.RelPermalink }}" integrity="{{ $css.Data.Integrity }}">
{{ else }}
<link rel="stylesheet" href="{{ $css.RelPermalink }}">
{{ end }}
</head>
<body>
<a class="skip-link" href="#main-content">Skip to content</a>
<header class="site">
<div class="inner">
<a class="brand" href="/">{{ .Site.Title }}</a>
<nav aria-label="Primary">
{{ range .Site.Menus.main }}
<a href="{{ .URL }}">{{ .Name }}</a>
{{ end }}
</nav>
</div>
</header>
<main id="main-content">
{{ block "main" . }}{{ end }}
</main>
<footer class="site">
<div class="inner">
<span>&copy; {{ now.Year }} {{ .Site.Title }}</span>
<nav aria-label="Footer">
{{ range .Site.Menus.footer }}
<a href="{{ .URL }}">{{ .Name }}</a>
{{ end }}
</nav>
</div>
</footer>
</body>
</html>