Unit Tests / test (push) Successful in 3s
## Summary Closes #18. - Add per-page titles, meta descriptions, Open Graph/Twitter tags, and canonical URLs on public `base2.html` pages - Improve semantic structure: skip link, primary nav ARIA, single `<main id="main-content">`, heading hierarchy, descriptive image alts - Publish `/robots.txt`, `/sitemap.xml`, and `/llms.txt` (linked from site head via `rel="alternate"`) - Agentic/a11y fixes: membership checkbox label associations, ZIP `name` attribute, layout stability (image aspect-ratio / min-height), footer year without `document.write` - WebMCP deferred — membership + Stripe checkout remain standard HTML/Stripe flows; no audit flag justified custom MCP surface yet ## Lighthouse / agentic notes Baseline Lighthouse runs still need Chrome Canary export on staging/prod. Structural SEO/a11y items from the ticket are implemented so follow-up audits can capture before/after scores. Expected audit wins vs prior minimal `charset`+`viewport` head: - SEO: unique titles/descriptions, crawl directives, sitemap - Agentic/a11y: landmarks, labels, CLS-oriented image sizing ## Test plan - [x] `uv run python manage.py test schasite` (34 passed) - [ ] Spot-check Home/About/Calendar/Dues/Membership/Board/Links in browser - [ ] Confirm `/robots.txt`, `/sitemap.xml`, `/llms.txt` on deployed host - [ ] Run Lighthouse SEO + Agentic browsing on key pages and note before/after pass ratio on the issue Reviewed-on: #27
66 lines
1.0 KiB
CSS
66 lines
1.0 KiB
CSS
/* Custom Styles */
|
|
:root {
|
|
--bs-success-rgb: 40, 167, 69;
|
|
}
|
|
|
|
body {
|
|
}
|
|
|
|
section {
|
|
scroll-margin-top: 70px;
|
|
}
|
|
|
|
/* Skip link visible when focused */
|
|
.visually-hidden-focusable:focus {
|
|
z-index: 1080;
|
|
}
|
|
|
|
/* Reserve image space to reduce CLS */
|
|
.card-img-top {
|
|
aspect-ratio: 16 / 9;
|
|
object-fit: cover;
|
|
width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
img.img-fluid {
|
|
max-width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
/* Hero Section */
|
|
#home {
|
|
background-color: rgba(var(--bs-success-rgb), 0.1);
|
|
min-height: 280px;
|
|
}
|
|
|
|
/* News and Contact Sections */
|
|
.bg-success-10 {
|
|
background-color: rgba(var(--bs-success-rgb), 0.1);
|
|
}
|
|
|
|
/* Card hover effect */
|
|
.card {
|
|
transition: transform 0.2s ease-in-out;
|
|
}
|
|
|
|
.card:hover {
|
|
transform: translateY(-5px);
|
|
}
|
|
|
|
/* Contact icons */
|
|
.bi {
|
|
vertical-align: -.125em;
|
|
}
|
|
|
|
/* Form validation */
|
|
.was-validated .form-control:invalid,
|
|
.form-control.is-invalid {
|
|
border-color: #dc3545;
|
|
}
|
|
|
|
.was-validated .form-control:valid,
|
|
.form-control.is-valid {
|
|
border-color: #198754;
|
|
}
|