MiniMax MiniMax M3 – News Weather Information
via CoreWeave · Generated
- AIMAC Debt 9.36
- Cost $0.025
- Total Violations 38
- HTML Size 85 KB
- Em Dashes 20
Screenshot
View Live Page
Accessibility Issues Found
38 Serious
-
color-contrast serious 34 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<div class="tag">Independent Journalism · Verified Facts · Since 2013</div> -
target-size serious 4 instances
All touch targets must be 24px large, or leave sufficient space
Example HTML
<a href="#gallery">View all galleries →</a>
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Meridian Dispatch — independent journalism, verified facts, and in-depth reporting on national news, world affairs, weather, and politics.">
<title>The Meridian Dispatch — Independent journalism. Verified facts.</title>
<style>
/* =========================
Reset & Base
========================= */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
font-family: 'Georgia', 'Times New Roman', serif;
background: #f6f4ee;
color: #14171a;
line-height: 1.55;
-webkit-font-smoothing: antialiased;
overflow-x: hidden;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }
input, select, textarea { font-family: inherit; font-size: inherit; }
:root {
--ink: #14171a;
--ink-soft: #4a4f55;
--muted: #8a8f97;
--paper: #f6f4ee;
--paper-alt: #efece2;
--line: #dcd7c5;
--accent: #b00020;
--accent-deep: #8a0017;
--navy: #0a2540;
--gold: #a88332;
--white: #ffffff;
--shadow-sm: 0 1px 2px rgba(0,0,0,0.06);
--shadow-md: 0 4px 12px rgba(0,0,0,0.08);
--shadow-lg: 0 12px 32px rgba(0,0,0,0.12);
--font-serif: 'Georgia', 'Times New Roman', serif;
--font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
}
/* =========================
Typography
========================= */
.sans { font-family: var(--font-sans); }
.section-label {
font-family: var(--font-sans);
font-size: 11px;
font-weight: 700;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--accent);
display: inline-block;
border-bottom: 2px solid var(--accent);
padding-bottom: 4px;
margin-bottom: 18px;
}
.headline-xl {
font-family: var(--font-serif);
font-size: clamp(28px, 4vw, 44px);
line-height: 1.12;
font-weight: 700;
letter-spacing: -0.01em;
}
.headline-l {
font-family: var(--font-serif);
font-size: clamp(22px, 2.4vw, 30px);
line-height: 1.18;
font-weight: 700;
}
.headline-m {
font-family: var(--font-serif);
font-size: 20px;
line-height: 1.22;
font-weight: 700;
}
.headline-s {
font-family: var(--font-serif);
font-size: 16px;
line-height: 1.28;
font-weight: 700;
}
.byline {
font-family: var(--font-sans);
font-size: 12px;
color: var(--muted);
margin-top: 10px;
letter-spacing: 0.02em;
}
.byline strong { color: var(--ink-soft); font-weight: 600; }
.lede {
font-family: var(--font-serif);
font-size: 17px;
line-height: 1.55;
color: var(--ink-soft);
font-style: italic;
}
.meta {
font-family: var(--font-sans);
font-size: 11px;
color: var(--muted);
letter-spacing: 0.04em;
}
/* =========================
Layout
========================= */
.container {
max-width: 1280px;
margin: 0 auto;
padding: 0 24px;
}
.grid { display: grid; gap: 28px; }
.divider {
height: 1px;
background: var(--line);
margin: 0;
}
/* =========================
Top Utility Bar
========================= */
.topbar {
background: var(--navy);
color: #e9eef5;
font-family: var(--font-sans);
font-size: 12px;
border-bottom: 1px solid rgba(255,255,255,0.08);
}
.topbar-inner {
display: flex;
align-items: center;
justify-content: space-between;
height: 38px;
gap: 24px;
flex-wrap: wrap;
}
.topbar-left, .topbar-right { display: flex; align-items: center; gap: 18px; }
.topbar a:hover { color: #ffd166; }
.weather-pill {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 4px 10px;
background: rgba(255,255,255,0.08);
border-radius: 999px;
}
.dot { width: 6px; height: 6px; border-radius: 50%; background: #66bb6a; display: inline-block; animation: pulse 1.6s infinite; }
@keyframes pulse { 0%,100%{opacity:1;} 50%{opacity:0.4;} }
.market-ticker {
display: flex;
gap: 14px;
font-size: 11px;
letter-spacing: 0.04em;
}
.market-ticker span b { font-weight: 700; }
.up { color: #4ade80; }
.down { color: #f87171; }
/* =========================
Masthead / Header
========================= */
.masthead {
background: var(--paper);
border-bottom: 2px solid var(--ink);
padding: 22px 0 18px;
}
.masthead-inner {
display: grid;
grid-template-columns: auto 1fr auto;
align-items: center;
gap: 24px;
}
.brand { display: flex; align-items: center; gap: 14px; }
.brand-mark {
width: 64px;
height: 64px;
border-radius: 50%;
background: var(--ink);
color: var(--paper);
display: grid;
place-items: center;
font-family: var(--font-serif);
font-weight: 700;
font-size: 30px;
border: 3px solid var(--accent);
letter-spacing: -0.04em;
}
.brand-text h1 {
font-family: var(--font-serif);
font-size: 34px;
font-weight: 700;
letter-spacing: -0.02em;
line-height: 1;
}
.brand-text .tag {
font-family: var(--font-sans);
font-size: 10px;
color: var(--muted);
letter-spacing: 0.28em;
text-transform: uppercase;
margin-top: 4px;
}
.masthead-meta {
text-align: right;
font-family: var(--font-sans);
font-size: 12px;
color: var(--ink-soft);
line-height: 1.6;
}
.masthead-meta strong { color: var(--ink); }
/* =========================
Primary Navigation
========================= */
.primary-nav {
background: var(--ink);
color: var(--white);
position: sticky;
top: 0;
z-index: 50;
box-shadow: var(--shadow-sm);
}
.nav-inner {
display: flex;
align-items: center;
justify-content: space-between;
height: 52px;
}
.nav-links {
display: flex;
align-items: center;
gap: 4px;
list-style: none;
flex-wrap: wrap;
}
.nav-links a {
display: inline-block;
padding: 16px 14px;
font-family: var(--font-sans);
font-size: 13px;
font-weight: 600;
letter-spacing: 0.04em;
text-transform: uppercase;
color: #d8dde5;
transition: color .15s;
position: relative;
}
.nav-links a:hover { color: var(--white); }
.nav-links a.live::after {
content: 'LIVE';
margin-left: 6px;
font-size: 9px;
background: var(--accent);
color: white;
padding: 2px 5px;
border-radius: 3px;
vertical-align: middle;
}
.nav-links a.active { color: var(--white); }
.nav-links a.active::before {
content: '';
position: absolute;
left: 14px; right: 14px;
bottom: 0;
height: 3px;
background: var(--accent);
}
.nav-cta {
display: flex; gap: 10px; align-items: center;
}
.search-toggle {
color: #d8dde5;
padding: 8px 12px;
border-radius: 6px;
}
.search-toggle:hover { background: rgba(255,255,255,0.08); color: white; }
.subscribe-btn {
background: var(--accent);
color: white;
padding: 8px 16px;
border-radius: 4px;
font-family: var(--font-sans);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.06em;
text-transform: uppercase;
transition: background .15s;
}
.subscribe-btn:hover { background: var(--accent-deep); }
/* =========================
Breaking News Ticker
========================= */
.ticker {
background: var(--accent);
color: white;
padding: 10px 0;
overflow: hidden;
position: relative;
}
.ticker-inner {
display: flex;
align-items: center;
gap: 18px;
max-width: 1280px;
margin: 0 auto;
padding: 0 24px;
}
.ticker-label {
background: var(--ink);
color: white;
padding: 4px 10px;
font-family: var(--font-sans);
font-size: 11px;
font-weight: 800;
letter-spacing: 0.18em;
text-transform: uppercase;
flex-shrink: 0;
border-radius: 2px;
}
.ticker-track {
flex: 1;
overflow: hidden;
position: relative;
height: 22px;
}
.ticker-items {
display: flex;
gap: 48px;
white-space: nowrap;
animation: scroll 60s linear infinite;
font-family: var(--font-sans);
font-size: 13px;
}
.ticker-items span b { font-weight: 700; margin-right: 8px; color: #ffe2c2; }
@keyframes scroll {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
/* =========================
Main Content Layout
========================= */
main { padding: 36px 0 60px; }
.layout-main {
display: grid;
grid-template-columns: 1fr 320px;
gap: 40px;
}
/* =========================
Hero / Lead Story
========================= */
.hero {
display: grid;
grid-template-columns: 1.4fr 1fr;
gap: 32px;
padding-bottom: 32px;
border-bottom: 1px solid var(--line);
margin-bottom: 36px;
}
.hero-feature {
display: flex;
flex-direction: column;
}
.hero-feature .image-wrap {
position: relative;
margin-bottom: 18px;
overflow: hidden;
border-radius: 4px;
}
.hero-feature .image-wrap img {
width: 100%;
aspect-ratio: 16/10;
object-fit: cover;
transition: transform .5s;
}
.hero-feature:hover .image-wrap img { transform: scale(1.02); }
.badge {
position: absolute;
top: 14px; left: 14px;
background: var(--accent);
color: white;
font-family: var(--font-sans);
font-size: 10px;
font-weight: 800;
letter-spacing: 0.16em;
text-transform: uppercase;
padding: 5px 10px;
border-radius: 2px;
}
.hero-side {
display: flex;
flex-direction: column;
gap: 22px;
}
.side-item {
padding-bottom: 22px;
border-bottom: 1px solid var(--line);
}
.side-item:last-child { border-bottom: none; padding-bottom: 0; }
.side-item .headline-m { margin-bottom: 8px; }
.side-item p {
font-family: var(--font-serif);
font-size: 14px;
color: var(--ink-soft);
line-height: 1.55;
}
/* =========================
National News Grid
========================= */
.section-header {
display: flex;
align-items: flex-end;
justify-content: space-between;
margin-bottom: 24px;
border-bottom: 1px solid var(--line);
padding-bottom: 12px;
}
.section-header h2 {
font-family: var(--font-serif);
font-size: 28px;
font-weight: 700;
letter-spacing: -0.01em;
}
.section-header a {
font-family: var(--font-sans);
font-size: 12px;
color: var(--accent);
font-weight: 700;
letter-spacing: 0.06em;
text-transform: uppercase;
}
.news-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 28px;
margin-bottom: 48px;
}
.news-card { display: flex; flex-direction: column; }
.news-card .img-frame {
overflow: hidden;
margin-bottom: 14px;
border-radius: 3px;
aspect-ratio: 4/3;
}
.news-card .img-frame img {
width: 100%; height: 100%; object-fit: cover;
transition: transform .4s;
}
.news-card:hover .img-frame img { transform: scale(1.04); }
.news-card .category {
font-family: var(--font-sans);
font-size: 11px;
color: var(--accent);
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
margin-bottom: 8px;
}
.news-card p {
font-family: var(--font-serif);
font-size: 14px;
color: var(--ink-soft);
margin-top: 8px;
line-height: 1.55;
}
.news-card .headline-m { transition: color .15s; }
.news-card:hover .headline-m { color: var(--accent); }
/* =========================
Weather Dashboard
========================= */
.weather-section {
background: linear-gradient(135deg, #0a2540 0%, #1a3a5e 100%);
color: white;
padding: 36px;
border-radius: 6px;
margin-bottom: 56px;
position: relative;
overflow: hidden;
}
.weather-section::before {
content: '';
position: absolute;
top: -50%; right: -10%;
width: 400px; height: 400px;
background: radial-gradient(circle, rgba(255,209,102,0.15) 0%, transparent 70%);
}
.weather-section h2 {
font-family: var(--font-serif);
font-size: 28px;
color: white;
margin-bottom: 6px;
}
.weather-section .sub {
font-family: var(--font-sans);
font-size: 13px;
color: #b8c5d6;
margin-bottom: 26px;
}
.weather-grid {
display: grid;
grid-template-columns: repeat(6, 1fr);
gap: 16px;
position: relative;
z-index: 1;
}
.weather-card {
background: rgba(255,255,255,0.06);
border: 1px solid rgba(255,255,255,0.1);
padding: 18px 14px;
border-radius: 4px;
text-align: center;
transition: background .2s;
}
.weather-card:hover { background: rgba(255,255,255,0.12); }
.weather-card .city {
font-family: var(--font-sans);
font-size: 11px;
letter-spacing: 0.12em;
text-transform: uppercase;
color: #b8c5d6;
font-weight: 600;
}
.weather-card .icon {
font-size: 32px;
margin: 10px 0;
}
.weather-card .temp {
font-family: var(--font-serif);
font-size: 28px;
font-weight: 700;
color: white;
}
.weather-card .cond {
font-family: var(--font-sans);
font-size: 11px;
color: #b8c5d6;
margin-top: 4px;
}
.weather-card .hi-lo {
font-family: var(--font-sans);
font-size: 10px;
color: #8a98ab;
margin-top: 6px;
letter-spacing: 0.04em;
}
.weather-alert {
background: var(--accent);
color: white;
padding: 14px 20px;
margin-top: 22px;
border-radius: 4px;
display: flex;
align-items: center;
gap: 14px;
font-family: var(--font-sans);
font-size: 13px;
position: relative;
z-index: 1;
}
.weather-alert strong { font-weight: 700; }
/* =========================
Investigative / Features
========================= */
.investigative {
display: grid;
grid-template-columns: 1.3fr 1fr;
gap: 32px;
padding: 36px 0;
border-top: 1px solid var(--line);
border-bottom: 1px solid var(--line);
margin-bottom: 48px;
}
.feature-main .image-wrap {
aspect-ratio: 16/10;
overflow: hidden;
margin-bottom: 18px;
border-radius: 4px;
}
.feature-main img { width: 100%; height: 100%; object-fit: cover; }
.feature-list { display: flex; flex-direction: column; gap: 22px; }
.feature-item {
padding-bottom: 22px;
border-bottom: 1px dashed var(--line);
}
.feature-item:last-child { border-bottom: none; }
.feature-item .category {
font-family: var(--font-sans);
font-size: 10px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--gold);
margin-bottom: 6px;
}
.feature-item .headline-s { margin-bottom: 6px; }
.feature-item p {
font-size: 14px;
color: var(--ink-soft);
line-height: 1.55;
}
/* =========================
Live Updates
========================= */
.live-section {
background: var(--ink);
color: white;
padding: 30px;
border-radius: 6px;
margin-bottom: 48px;
}
.live-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 22px;
padding-bottom: 16px;
border-bottom: 1px solid rgba(255,255,255,0.15);
}
.live-tag {
background: var(--accent);
color: white;
padding: 5px 12px;
border-radius: 2px;
font-family: var(--font-sans);
font-size: 11px;
font-weight: 800;
letter-spacing: 0.18em;
text-transform: uppercase;
display: inline-flex;
align-items: center;
gap: 8px;
}
.live-tag .dot { background: white; }
.live-header h2 {
font-family: var(--font-serif);
font-size: 22px;
color: white;
}
.live-header .counter {
font-family: var(--font-sans);
font-size: 12px;
color: #b8c5d6;
}
.live-stream { display: flex; flex-direction: column; gap: 18px; }
.live-item {
display: grid;
grid-template-columns: 80px 1fr;
gap: 18px;
padding-bottom: 18px;
border-bottom: 1px solid rgba(255,255,255,0.1);
}
.live-item:last-child { border-bottom: none; }
.live-item .timestamp {
font-family: var(--font-sans);
font-size: 12px;
color: #ffd166;
font-weight: 700;
padding-top: 2px;
}
.live-item .timestamp small {
display: block;
color: #8a98ab;
font-size: 10px;
font-weight: 400;
margin-top: 2px;
letter-spacing: 0.06em;
}
.live-item .content h3 {
font-family: var(--font-serif);
font-size: 16px;
color: white;
font-weight: 700;
margin-bottom: 6px;
}
.live-item .content p {
font-family: var(--font-sans);
font-size: 13px;
color: #c5cdd8;
line-height: 1.55;
}
.live-item .content .update-tag {
font-family: var(--font-sans);
font-size: 10px;
background: rgba(255,209,102,0.15);
color: #ffd166;
padding: 2px 8px;
border-radius: 2px;
margin-left: 8px;
font-weight: 700;
letter-spacing: 0.08em;
}
/* =========================
Opinion
========================= */
.opinion-section { margin-bottom: 56px; }
.opinion-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 24px;
}
.opinion-card {
text-align: center;
padding: 22px 18px;
border: 1px solid var(--line);
border-radius: 4px;
background: white;
transition: transform .2s, box-shadow .2s;
}
.opinion-card:hover {
transform: translateY(-3px);
box-shadow: var(--shadow-md);
}
.opinion-card img {
width: 80px; height: 80px;
border-radius: 50%;
margin: 0 auto 14px;
border: 3px solid var(--paper);
}
.opinion-card .name {
font-family: var(--font-sans);
font-size: 13px;
font-weight: 700;
color: var(--ink);
}
.opinion-card .role {
font-family: var(--font-sans);
font-size: 11px;
color: var(--muted);
margin-bottom: 12px;
}
.opinion-card h3 {
font-family: var(--font-serif);
font-size: 15px;
line-height: 1.3;
color: var(--ink);
margin-bottom: 8px;
}
.opinion-card .read {
font-family: var(--font-sans);
font-size: 11px;
color: var(--accent);
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
/* =========================
Photo Gallery
========================= */
.gallery-section { margin-bottom: 56px; }
.gallery-grid {
display: grid;
grid-template-columns: 2fr 1fr 1fr;
grid-template-rows: 200px 200px;
gap: 8px;
}
.gallery-item {
overflow: hidden;
border-radius: 3px;
position: relative;
cursor: pointer;
}
.gallery-item img {
width: 100%; height: 100%; object-fit: cover;
transition: transform .4s;
}
.gallery-item:hover img { transform: scale(1.05); }
.gallery-item:first-child { grid-row: 1 / span 2; }
.gallery-item::after {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(180deg, transparent 50%, rgba(0,0,0,0.7) 100%);
}
.gallery-caption {
position: absolute;
bottom: 12px; left: 12px; right: 12px;
color: white;
font-family: var(--font-sans);
font-size: 12px;
z-index: 1;
font-weight: 600;
}
/* =========================
Interactive: News Alert Customizer
========================= */
.customizer {
background: white;
border: 2px solid var(--ink);
padding: 36px;
margin-bottom: 56px;
position: relative;
}
.customizer::before {
content: 'INTERACTIVE';
position: absolute;
top: -10px; left: 24px;
background: var(--accent);
color: white;
padding: 4px 12px;
font-family: var(--font-sans);
font-size: 10px;
font-weight: 800;
letter-spacing: 0.18em;
}
.customizer-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 40px;
align-items: start;
}
.customizer h2 {
font-family: var(--font-serif);
font-size: 28px;
margin-bottom: 12px;
color: var(--ink);
}
.customizer p.lede {
margin-bottom: 22px;
font-size: 15px;
}
.customizer-form { display: flex; flex-direction: column; gap: 18px; }
.form-group label {
display: block;
font-family: var(--font-sans);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--ink-soft);
margin-bottom: 8px;
}
.form-group input[type="email"] {
width: 100%;
padding: 12px 14px;
border: 1px solid var(--line);
background: var(--paper);
border-radius: 3px;
font-size: 15px;
}
.form-group input[type="email"]:focus {
outline: none;
border-color: var(--accent);
}
.topic-chips {
display: flex; flex-wrap: wrap; gap: 8px;
}
.chip {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 8px 14px;
border: 1px solid var(--line);
background: var(--paper);
border-radius: 999px;
font-family: var(--font-sans);
font-size: 12px;
font-weight: 600;
color: var(--ink-soft);
cursor: pointer;
transition: all .15s;
user-select: none;
}
.chip:hover { border-color: var(--ink); }
.chip.active {
background: var(--ink);
color: white;
border-color: var(--ink);
}
.chip input { display: none; }
.frequency-row {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
}
.freq-option {
border: 1px solid var(--line);
padding: 12px;
text-align: center;
border-radius: 3px;
cursor: pointer;
transition: all .15s;
background: var(--paper);
}
.freq-option.active {
background: var(--accent);
color: white;
border-color: var(--accent);
}
.freq-option .label {
font-family: var(--font-sans);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.04em;
}
.freq-option .desc {
font-family: var(--font-sans);
font-size: 10px;
color: inherit;
opacity: 0.7;
margin-top: 4px;
}
.submit-btn {
background: var(--ink);
color: white;
padding: 14px 24px;
font-family: var(--font-sans);
font-size: 14px;
font-weight: 700;
letter-spacing: 0.06em;
text-transform: uppercase;
border-radius: 3px;
transition: background .15s;
margin-top: 8px;
}
.submit-btn:hover { background: var(--accent); }
.customizer-success {
display: none;
background: #e8f5e9;
border: 1px solid #66bb6a;
padding: 14px;
border-radius: 3px;
margin-top: 14px;
font-family: var(--font-sans);
font-size: 13px;
color: #2e7d32;
}
.customizer-success.show { display: block; }
.customizer-preview {
background: var(--paper);
padding: 22px;
border-radius: 4px;
border: 1px dashed var(--line);
}
.preview-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 14px;
padding-bottom: 10px;
border-bottom: 1px solid var(--line);
}
.preview-header .label {
font-family: var(--font-sans);
font-size: 10px;
font-weight: 800;
letter-spacing: 0.18em;
color: var(--accent);
}
.preview-empty {
font-family: var(--font-sans);
font-size: 13px;
color: var(--muted);
text-align: center;
padding: 30px 0;
}
/* =========================
Sidebar
========================= */
.sidebar { display: flex; flex-direction: column; gap: 32px; }
.side-block {
background: white;
border: 1px solid var(--line);
padding: 22px;
border-radius: 4px;
}
.side-block h3 {
font-family: var(--font-sans);
font-size: 13px;
font-weight: 800;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--ink);
padding-bottom: 12px;
border-bottom: 2px solid var(--ink);
margin-bottom: 16px;
}
.top-list { list-style: none; counter-reset: topcounter; }
.top-list li {
counter-increment: topcounter;
padding: 12px 0;
border-bottom: 1px solid var(--line);
display: grid;
grid-template-columns: 32px 1fr;
gap: 12px;
align-items: start;
}
.top-list li:last-child { border-bottom: none; }
.top-list li::before {
content: counter(topcounter);
font-family: var(--font-serif);
font-size: 26px;
font-weight: 700;
color: var(--accent);
line-height: 1;
}
.top-list li a {
font-family: var(--font-serif);
font-size: 14px;
line-height: 1.3;
color: var(--ink);
font-weight: 700;
transition: color .15s;
}
.top-list li a:hover { color: var(--accent); }
.top-list li small {
display: block;
font-family: var(--font-sans);
font-size: 10px;
color: var(--muted);
margin-top: 4px;
letter-spacing: 0.04em;
text-transform: uppercase;
}
.video-card {
margin-bottom: 16px;
padding-bottom: 16px;
border-bottom: 1px solid var(--line);
}
.video-card:last-child { margin-bottom: 0; padding-bottom: 0; border-bottom: none; }
.video-thumb {
position: relative;
overflow: hidden;
border-radius: 3px;
margin-bottom: 10px;
aspect-ratio: 16/9;
}
.video-thumb img { width: 100%; height: 100%; object-fit: cover; }
.play-icon {
position: absolute;
inset: 0;
display: grid;
place-items: center;
background: rgba(0,0,0,0.25);
}
.play-icon span {
width: 42px; height: 42px;
background: rgba(255,255,255,0.95);
color: var(--ink);
border-radius: 50%;
display: grid; place-items: center;
font-size: 16px;
padding-left: 3px;
}
.video-card .duration {
position: absolute;
bottom: 6px; right: 6px;
background: rgba(0,0,0,0.85);
color: white;
padding: 2px 6px;
font-family: var(--font-sans);
font-size: 10px;
border-radius: 2px;
font-weight: 600;
}
.video-card h4 {
font-family: var(--font-serif);
font-size: 14px;
line-height: 1.3;
color: var(--ink);
}
.market-box {
background: var(--ink);
color: white;
padding: 22px;
border-radius: 4px;
}
.market-box h3 {
color: white;
border-bottom-color: rgba(255,255,255,0.2);
font-size: 12px;
}
.market-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 0;
font-family: var(--font-sans);
font-size: 13px;
border-bottom: 1px solid rgba(255,255,255,0.08);
}
.market-row:last-child { border-bottom: none; }
.market-row .symbol { color: #b8c5d6; }
.market-row .price { font-weight: 700; }
/* =========================
Testimonials
========================= */
.testimonials { margin-bottom: 56px; }
.testimonial-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
}
.testimonial {
background: white;
padding: 26px;
border-radius: 4px;
border: 1px solid var(--line);
position: relative;
}
.testimonial::before {
content: '“';
position: absolute;
top: -10px; left: 14px;
font-family: var(--font-serif);
font-size: 70px;
color: var(--accent);
line-height: 1;
}
.testimonial blockquote {
font-family: var(--font-serif);
font-size: 16px;
line-height: 1.55;
color: var(--ink);
font-style: italic;
margin-bottom: 18px;
padding-top: 14px;
}
.testimonial .author {
display: flex;
align-items: center;
gap: 12px;
}
.testimonial .author img {
width: 44px; height: 44px;
border-radius: 50%;
}
.testimonial .author .name {
font-family: var(--font-sans);
font-size: 13px;
font-weight: 700;
color: var(--ink);
}
.testimonial .author .role {
font-family: var(--font-sans);
font-size: 11px;
color: var(--muted);
}
.testimonial .stars {
color: var(--gold);
font-size: 13px;
margin-bottom: 10px;
letter-spacing: 2px;
}
/* =========================
FAQ
========================= */
.faq-section {
background: var(--paper-alt);
padding: 48px;
border-radius: 6px;
margin-bottom: 56px;
}
.faq-section h2 {
font-family: var(--font-serif);
font-size: 30px;
margin-bottom: 8px;
color: var(--ink);
}
.faq-section .sub {
font-family: var(--font-sans);
color: var(--ink-soft);
margin-bottom: 28px;
}
.faq-list { display: flex; flex-direction: column; gap: 8px; max-width: 880px; margin: 0 auto; }
.faq-item {
background: white;
border-radius: 4px;
border: 1px solid var(--line);
overflow: hidden;
transition: box-shadow .2s;
}
.faq-item[open] { box-shadow: var(--shadow-sm); }
.faq-item summary {
padding: 18px 22px;
cursor: pointer;
font-family: var(--font-serif);
font-size: 16px;
font-weight: 700;
color: var(--ink);
list-style: none;
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
content: '+';
font-family: var(--font-sans);
font-size: 22px;
color: var(--accent);
transition: transform .2s;
}
.faq-item[open] summary::after { transform: rotate(45deg); }
.faq-item .answer {
padding: 0 22px 20px;
font-family: var(--font-serif);
font-size: 15px;
color: var(--ink-soft);
line-height: 1.65;
}
/* =========================
CTA Banner
========================= */
.cta-banner {
background: linear-gradient(135deg, var(--ink) 0%, var(--navy) 100%);
color: white;
padding: 56px 48px;
border-radius: 6px;
display: grid;
grid-template-columns: 1.4fr 1fr;
gap: 32px;
align-items: center;
margin-bottom: 56px;
position: relative;
overflow: hidden;
}
.cta-banner::before {
content: '';
position: absolute;
top: -100px; right: -100px;
width: 300px; height: 300px;
border-radius: 50%;
background: var(--accent);
opacity: 0.15;
}
.cta-banner h2 {
font-family: var(--font-serif);
font-size: 32px;
line-height: 1.15;
margin-bottom: 14px;
position: relative;
}
.cta-banner p {
font-family: var(--font-sans);
color: #c5cdd8;
margin-bottom: 22px;
line-height: 1.6;
position: relative;
}
.cta-buttons { display: flex; gap: 12px; flex-wrap: wrap; position: relative; }
.btn-primary, .btn-secondary {
font-family: var(--font-sans);
font-size: 13px;
font-weight: 700;
letter-spacing: 0.06em;
text-transform: uppercase;
padding: 14px 24px;
border-radius: 3px;
transition: all .15s;
display: inline-flex;
align-items: center;
gap: 8px;
}
.btn-primary {
background: var(--accent);
color: white;
}
.btn-primary:hover { background: var(--accent-deep); transform: translateY(-1px); }
.btn-secondary {
background: transparent;
color: white;
border: 1px solid rgba(255,255,255,0.4);
}
.btn-secondary:hover { background: rgba(255,255,255,0.1); border-color: white; }
.cta-stats {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 18px;
position: relative;
}
.cta-stat {
background: rgba(255,255,255,0.06);
border: 1px solid rgba(255,255,255,0.1);
padding: 22px;
border-radius: 4px;
}
.cta-stat .num {
font-family: var(--font-serif);
font-size: 36px;
font-weight: 700;
color: white;
line-height: 1;
}
.cta-stat .lbl {
font-family: var(--font-sans);
font-size: 11px;
color: #b8c5d6;
letter-spacing: 0.08em;
text-transform: uppercase;
margin-top: 6px;
}
/* =========================
Footer
========================= */
footer {
background: var(--ink);
color: #b8c5d6;
padding: 56px 0 0;
font-family: var(--font-sans);
}
.footer-grid {
display: grid;
grid-template-columns: 1.5fr 1fr 1fr 1fr;
gap: 40px;
padding-bottom: 40px;
border-bottom: 1px solid rgba(255,255,255,0.1);
}
.footer-brand .brand-mark {
width: 56px; height: 56px;
font-size: 26px;
background: var(--paper);
color: var(--ink);
border-color: var(--accent);
}
.footer-brand h3 {
color: white;
font-family: var(--font-serif);
font-size: 22px;
margin: 12px 0 8px;
}
.footer-brand p {
font-size: 13px;
line-height: 1.6;
margin-bottom: 16px;
}
.footer-col h4 {
color: white;
font-size: 12px;
font-weight: 800;
letter-spacing: 0.18em;
text-transform: uppercase;
margin-bottom: 18px;
}
.footer-col ul { list-style: none; }
.footer-col ul li { margin-bottom: 10px; }
.footer-col ul li a {
font-size: 13px;
color: #b8c5d6;
transition: color .15s;
}
.footer-col ul li a:hover { color: white; }
.footer-contact { font-size: 13px; line-height: 1.7; }
.footer-contact strong { color: white; display: block; margin-bottom: 4px; font-weight: 700; }
.social-row { display: flex; gap: 10px; margin-top: 14px; }
.social-icon {
width: 36px; height: 36px;
background: rgba(255,255,255,0.08);
border-radius: 50%;
display: grid; place-items: center;
color: white;
font-size: 14px;
transition: background .15s;
}
.social-icon:hover { background: var(--accent); }
.footer-bottom {
padding: 22px 0;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 12px;
font-size: 12px;
color: #8a98ab;
}
.footer-bottom .legal { display: flex; gap: 20px; flex-wrap: wrap; }
.footer-bottom .legal a:hover { color: white; }
.newsletter-mini {
display: flex;
margin-top: 14px;
}
.newsletter-mini input {
flex: 1;
padding: 10px 14px;
background: rgba(255,255,255,0.08);
border: 1px solid rgba(255,255,255,0.15);
color: white;
border-radius: 3px 0 0 3px;
font-size: 13px;
}
.newsletter-mini button {
background: var(--accent);
color: white;
padding: 10px 18px;
font-size: 12px;
font-weight: 700;
letter-spacing: 0.06em;
text-transform: uppercase;
border-radius: 0 3px 3px 0;
}
/* =========================
Responsive
========================= */
@media (max-width: 1024px) {
.layout-main { grid-template-columns: 1fr; }
.sidebar { flex-direction: column; }
.weather-grid { grid-template-columns: repeat(3, 1fr); }
.news-grid { grid-template-columns: repeat(2, 1fr); }
.opinion-grid { grid-template-columns: repeat(2, 1fr); }
.hero { grid-template-columns: 1fr; }
.investigative { grid-template-columns: 1fr; }
.customizer-grid { grid-template-columns: 1fr; gap: 24px; }
.cta-banner { grid-template-columns: 1fr; padding: 36px; }
.testimonial-grid { grid-template-columns: 1fr; }
.footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 720px) {
.container { padding: 0 16px; }
.topbar-inner { font-size: 11px; gap: 10px; }
.market-ticker { display: none; }
.brand-text h1 { font-size: 22px; }
.brand-mark { width: 50px; height: 50px; font-size: 22px; }
.nav-links a { padding: 12px 8px; font-size: 11px; }
.nav-links a.live::after { display: none; }
.news-grid, .opinion-grid, .testimonial-grid { grid-template-columns: 1fr; }
.weather-grid { grid-template-columns: repeat(2, 1fr); }
.gallery-grid { grid-template-columns: 1fr 1fr; grid-template-rows: 160px 160px 160px; }
.gallery-item:first-child { grid-row: auto; grid-column: span 2; }
.faq-section { padding: 28px 18px; }
.footer-grid { grid-template-columns: 1fr; gap: 28px; }
.footer-bottom { flex-direction: column; align-items: flex-start; }
.live-item { grid-template-columns: 60px 1fr; gap: 12px; }
}
</style>
</head>
<body>
<!-- ===================== TOP UTILITY BAR ===================== -->
<div class="topbar">
<div class="container topbar-inner">
<div class="topbar-left">
<span class="weather-pill">📍 Washington, D.C. <strong>52°F</strong> · Partly Cloudy</span>
<span class="meta" style="color:#b8c5d6;">Thursday, March 13, 2025 · Vol. XII · No. 142</span>
</div>
<div class="topbar-right">
<div class="market-ticker sans">
<span>S&P 500 <b class="up">+0.62%</b></span>
<span>DOW <b class="up">+0.41%</b></span>
<span>NASDAQ <b class="down">-0.18%</b></span>
</div>
<a href="#newsletters" style="color:#ffd166;">☰ Newsletters</a>
<a href="#signin">Sign In</a>
<a href="#subscribe" style="color:#ffd166;">Subscribe →</a>
</div>
</div>
</div>
<!-- ===================== MASTHEAD ===================== -->
<header class="masthead">
<div class="container masthead-inner">
<a href="#" class="brand" aria-label="The Meridian Dispatch home">
<div class="brand-mark">M</div>
<div class="brand-text">
<h1>The Meridian Dispatch</h1>
<div class="tag">Independent Journalism · Verified Facts · Since 2013</div>
</div>
</a>
<div style="text-align:center;">
<img src="https://placehold.co/180x60/0a2540/f6f4ee?text=MERIDIAN+DISPATCH&font=playfair+display" alt="The Meridian Dispatch wordmark" style="opacity:0.85;">
</div>
<div class="masthead-meta">
<strong>Today's Edition</strong><br>
Updated 4 minutes ago<br>
<span style="color:var(--accent);font-weight:600;">● Live coverage in progress</span>
</div>
</div>
</header>
<!-- ===================== PRIMARY NAVIGATION ===================== -->
<nav class="primary-nav" aria-label="Primary">
<div class="container nav-inner">
<ul class="nav-links">
<li><a href="#" class="active">Home</a></li>
<li><a href="#national">National</a></li>
<li><a href="#world">World</a></li>
<li><a href="#politics">Politics</a></li>
<li><a href="#business">Business</a></li>
<li><a href="#weather">Weather</a></li>
<li><a href="#live" class="live">Live</a></li>
<li><a href="#opinion">Opinion</a></li>
<li><a href="#archive">Archive</a></li>
<li><a href="#investigations">Investigations</a></li>
</ul>
<div class="nav-cta">
<button class="search-toggle" aria-label="Search">🔍</button>
<a href="#subscribe" class="subscribe-btn">Subscribe</a>
</div>
</div>
</nav>
<!-- ===================== BREAKING NEWS TICKER ===================== -->
<div class="ticker" role="region" aria-label="Breaking news">
<div class="ticker-inner">
<div class="ticker-label">Breaking</div>
<div class="ticker-track">
<div class="ticker-items">
<span><b>JUST IN</b> Federal Reserve signals rate pause as inflation eases to 2.4%</span>
<span><b>DEVELOPING</b> Senate clears procedural hurdle on infrastructure package</span>
<span><b>WEATHER</b> Atmospheric river brings flood watches to Pacific Northwest</span>
<span><b>WORLD</b> UN Security Council convenes emergency session on Eastern Mediterranean</span>
<span><b>MARKETS</b> Treasury yields slip after jobs report revision</span>
<span><b>JUST IN</b> Federal Reserve signals rate pause as inflation eases to 2.4%</span>
<span><b>DEVELOPING</b> Senate clears procedural hurdle on infrastructure package</span>
<span><b>WEATHER</b> Atmospheric river brings flood watches to Pacific Northwest</span>
<span><b>WORLD</b> UN Security Council convenes emergency session on Eastern Mediterranean</span>
<span><b>MARKETS</b> Treasury yields slip after jobs report revision</span>
</div>
</div>
</div>
</div>
<!-- ===================== MAIN ===================== -->
<main>
<div class="container">
<div class="layout-main">
<!-- ============ PRIMARY COLUMN ============ -->
<div class="primary-col">
<!-- ======= Hero / Lead Story ======= -->
<section class="hero" aria-label="Top stories">
<article class="hero-feature">
<a href="#story-1" style="display:block;">
<div class="image-wrap">
<span class="badge">Top Story</span>
<img src="https://picsum.photos/seed/fedreserve/900/560" alt="Federal Reserve building exterior with American flag">
</div>
<span class="section-label">Economy</span>
<h2 class="headline-xl">Federal Reserve signals shift in monetary policy as inflation data cools for third straight month</h2>
<p class="lede" style="margin-top:14px;">In a closely watched address, Chair Powell hinted at the first pause in the rate-hike cycle since 2022, citing moderating consumer prices and softening labor demand. Markets rallied on the announcement, with the S&P 500 closing up 0.62%.</p>
<div class="byline"><strong>By Eleanor Marsh</strong> · Senior Economics Correspondent · Updated 12 min ago · 8 min read</div>
</a>
</article>
<div class="hero-side">
<article class="side-item">
<span class="section-label" style="margin-bottom:6px;">Capitol Hill</span>
<h3 class="headline-m">Senate advances sweeping bipartisan infrastructure overhaul in late-night vote</h3>
<p>The 68-32 procedural vote sets up final passage of the $1.2 trillion package, which includes $480 billion for surface transportation, rural broadband expansion, and grid modernization. Sen. Whitfield called it "the most consequential investment in a generation."</p>
<div class="byline">By Marcus Holloway · 2 hr ago</div>
</article>
<article class="side-item">
<span class="section-label" style="margin-bottom:6px;">Climate</span>
<h3 class="headline-m">Wildfire containment reaches 65% as crews battle historic blaze in Northern California</h3>
<p>More than 4,200 firefighters are working the perimeter of the Cascadia Complex, which has burned 187,000 acres and destroyed 312 structures. CalFire expects full containment by Sunday, though red-flag warnings remain in effect.</p>
<div class="byline">By Priya Anand · 4 hr ago</div>
</article>
<article class="side-item">
<span class="section-label" style="margin-bottom:6px;">Courts</span>
<h3 class="headline-m">Supreme Court hears arguments in landmark digital privacy case with sweeping implications</h3>
<p>Justices probed the limits of the Fourth Amendment in the digital age, with several signaling skepticism toward warrantless access to location data. A ruling is expected by late June.</p>
<div class="byline">By Daniel Chen · 6 hr ago</div>
</article>
</div>
</section>
<!-- ======= National News Grid ======= -->
<section id="national" aria-label="National news">
<div class="section-header">
<div>
<span class="section-label">National</span>
<h2>Across the country</h2>
</div>
<a href="#more-national">See all national coverage →</a>
</div>
<div class="news-grid">
<article class="news-card">
<a href="#story-2">
<div class="img-frame"><img src="https://picsum.photos/seed/texasstorm/600/450" alt="Storm clouds gathering over a Texas plain"></div>
<div class="category">Weather</div>
<h3 class="headline-m">Coastal cities brace for atmospheric river system expected to dump 8 inches of rain in 48 hours</h3>
<p>Meteorologists warn of flash flooding, mudslides, and power outages across the Pacific Northwest as the strongest storm of the season makes landfall Friday evening.</p>
<div class="byline"><strong>By Tomás Reyes</strong> · 1 hr ago</div>
</a>
</article>
<article class="news-card">
<a href="#story-3">
<div class="img-frame"><img src="https://picsum.photos/seed/autoindustry/600/450" alt="Automobile manufacturing facility with workers"></div>
<div class="category">Business</div>
<h3 class="headline-m">U.S. automakers report strongest quarterly earnings in three years on EV demand</h3>
<p>Domestic manufacturers posted a combined $14.2 billion in net income, buoyed by a 38% jump in electric vehicle sales and improved supply chain conditions across the Midwest.</p>
<div class="byline"><strong>By Jennifer Park</strong> · 3 hr ago</div>
</a>
</article>
<article class="news-card">
<a href="#story-4">
<div class="img-frame"><img src="https://picsum.photos/seed/healthpolicy/600/450" alt="Hospital corridor with medical staff"></div>
<div class="category">Health</div>
<h3 class="headline-m">Federal health agency unveils $4 billion plan to combat antimicrobial resistance</h3>
<p>The five-year initiative will fund next-generation antibiotic research, expand hospital surveillance networks, and accelerate diagnostics development. Public health experts call it "long overdue."</p>
<div class="byline"><strong>By Dr. Amelia Russo</strong> · 5 hr ago</div>
</a>
</article>
<article class="news-card">
<a href="#story-5">
<div class="img-frame"><img src="https://picsum.photos/seed/education/600/450" alt="Students in a modern classroom"></div>
<div class="category">Education</div>
<h3 class="headline-m">Twelve states reach preliminary agreement on standardized credential reciprocity</h3>
<p>The compact, modeled on the existing medical licensure framework, would allow teachers and nurses to practice across state lines without redundant testing by 2026.</p>
<div class="byline"><strong>By Olivia Bennett</strong> · 7 hr ago</div>
</a>
</article>
<article class="news-card">
<a href="#story-6">
<div class="img-frame"><img src="https://picsum.photos/seed/spacex/600/450" alt="Rocket launch at twilight"></div>
<div class="category">Science</div>
<h3 class="headline-m">NASA confirms July launch window for crewed lunar flyby mission after critical review</h3>
<p>The Artemis II crew completed a full dress rehearsal at Kennedy Space Center, clearing the way for the first crewed deep-space mission in over half a century.</p>
<div class="byline"><strong>By Rajiv Khanna</strong> · 9 hr ago</div>
</a>
</article>
<article class="news-card">
<a href="#story-7">
<div class="img-frame"><img src="https://picsum.photos/seed/agriculture/600/450" alt="Midwestern farm at sunset"></div>
<div class="category">Rural America</div>
<h3 class="headline-m">Farm bill negotiations stall over commodity subsidy reforms as deadline looms</h3>
<p>Lawmakers from both parties remain divided on payment limits and climate-smart agriculture provisions, with the current authorization set to expire in 41 days.</p>
<div class="byline"><strong>By Hannah Lindstrom</strong> · 11 hr ago</div>
</a>
</article>
</div>
</section>
<!-- ======= Weather Dashboard ======= -->
<section id="weather" class="weather-section" aria-label="Weather forecast">
<div style="display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:24px;">
<div>
<span class="section-label" style="color:#ffd166; border-color:#ffd166;">Weather</span>
<h2>National forecast · Thursday, March 13</h2>
<p class="sub">Real-time data from the National Weather Service · Updated every 15 minutes by our meteorology desk</p>
</div>
<a href="#weather-full" class="sans" style="color:#ffd166; font-size:12px; font-weight:700; letter-spacing:0.06em; text-transform:uppercase;">Full Forecast →</a>
</div>
<div class="weather-grid">
<div class="weather-card">
<div class="city">New York</div>
<div class="icon">☁️</div>
<div class="temp">54°</div>
<div class="cond">Cloudy</div>
<div class="hi-lo">H 58° / L 41°</div>
</div>
<div class="weather-card">
<div class="city">Los Angeles</div>
<div class="icon">☀️</div>
<div class="temp">71°</div>
<div class="cond">Sunny</div>
<div class="hi-lo">H 74° / L 58°</div>
</div>
<div class="weather-card">
<div class="city">Chicago</div>
<div class="icon">🌧️</div>
<div class="temp">42°</div>
<div class="cond">Rain</div>
<div class="hi-lo">H 46° / L 38°</div>
</div>
<div class="weather-card">
<div class="city">Houston</div>
<div class="icon">⛈️</div>
<div class="temp">78°</div>
<div class="cond">Storms</div>
<div class="hi-lo">H 81° / L 67°</div>
</div>
<div class="weather-card">
<div class="city">Phoenix</div>
<div class="icon">🌤️</div>
<div class="temp">89°</div>
<div class="cond">Clear</div>
<div class="hi-lo">H 92° / L 65°</div>
</div>
<div class="weather-card">
<div class="city">Seattle</div>
<div class="icon">🌦️</div>
<div class="temp">51°</div>
<div class="cond">Drizzle</div>
<div class="hi-lo">H 54° / L 46°</div>
</div>
</div>
<div class="weather-alert">
<span style="font-size:18px;">⚠️</span>
<div><strong>Active Weather Alert:</strong> Flash Flood Watch in effect for portions of Western Washington and Northwest Oregon through Saturday morning. Travel not advised.</div>
</div>
</section>
<!-- ======= Investigative Section ======= -->
<section id="investigations" class="investigative" aria-label="Investigative reporting">
<article class="feature-main">
<span class="section-label">Investigative</span>
<div class="image-wrap">
<img src="https://picsum.photos/seed/investigation/800/500" alt="Document files and investigative notes on a desk">
</div>
<h2 class="headline-l">Inside the algorithm: how local courts use predictive software to set bail</h2>
<p class="lede" style="margin-top:12px;">A six-month investigation by The Meridian Dispatch reveals that risk-assessment tools used in 27 county court systems disproportionately flag Black and Latino defendants for higher pretrial detention — often with little oversight or meaningful appeal.</p>
<p style="font-family:var(--font-serif); font-size:15px; color:var(--ink-soft); line-height:1.65; margin-top:14px;">Our reporters reviewed more than 14,000 case files, conducted 63 interviews with judges, defense attorneys, defendants, and the vendors themselves, and obtained internal calibration documents through public records requests. The findings raise urgent questions about due process, transparency, and the rapidly expanding role of proprietary algorithms in the American justice system.</p>
<div class="byline" style="margin-top:14px;"><strong>By Investigative Team · Led by Aaron Goldstein & Maria Salinas</strong> · 14 min read · 6 documents released</div>
<div style="margin-top:18px;">
<a href="#follow-investigation" style="font-family:var(--font-sans); font-size:13px; font-weight:700; color:white; background:var(--ink); padding:10px 18px; border-radius:3px; display:inline-block;">Follow This Investigation</a>
</div>
</article>
<div class="feature-list">
<span class="section-label">More from the Investigations Desk</span>
<article class="feature-item">
<div class="category">Long Read</div>
<h3 class="headline-s">The vanishing water: a five-month investigation into a Western aquifer's silent crisis</h3>
<p>Groundwater levels in the Bonneville Basin have dropped 38 feet in three decades, outpacing every scientific model. Our reporters traced the political and financial decisions that accelerated the collapse — and the towns now running dry.</p>
</article>
<article class="feature-item">
<div class="category">Public Records</div>
<h3 class="headline-s">Inside the federal contractor database hiding $1.8 billion in flagged payments</h3>
<p>An analysis of newly released data shows that 412 contractors received payments despite unresolved fraud findings. Many continue to receive new awards.</p>
</article>
<article class="feature-item">
<div class="category">Follow-up</div>
<h3 class="headline-s">A year after our hospital investigation, the state has acted — and hasn't</h3>
<p>We revisit every named facility to grade the response. Twelve have implemented reforms; nine have not. A status report on accountability.</p>
</article>
<article class="feature-item">
<div class="category">Tip Line</div>
<h3 class="headline-s">Have a story? Our reporters protect their sources — and the law protects you.</h3>
<p>Encrypted tips, secure drop boxes, and an editor-reviewed promise: we verify before we publish, and we never publish without your consent.</p>
</article>
</div>
</section>
<!-- ======= Live Updates Section ======= -->
<section id="live" class="live-section" aria-label="Live coverage">
<div class="live-header">
<div style="display:flex; align-items:center; gap:16px;">
<span class="live-tag"><span class="dot"></span> Live</span>
<h2>Fed rate decision: live updates from our economics desk</h2>
</div>
<div class="counter">● 2,418 readers following · Updated continuously</div>
</div>
<div class="live-stream">
<div class="live-item">
<div class="timestamp">3:48 PM<small>3 min ago</small></div>
<div class="content">
<h3>Powell's opening statement emphasizes "patient" approach <span class="update-tag">Update</span></h3>
<p>The Fed chair told reporters the committee will "remain patient" in assessing the need for further adjustments, while reiterating that inflation has not yet reached its 2% target. The dollar weakened against major currencies immediately following the remarks.</p>
</div>
</div>
<div class="live-item">
<div class="timestamp">3:22 PM<small>29 min ago</small></div>
<div class="content">
<h3>Markets respond: S&P 500 extends gains, Treasury yields fall</h3>
<p>Equities rallied into the close as investors interpreted the dot plot as signaling fewer cuts than previously priced. The 10-year Treasury yield slipped to 4.21%, down 8 basis points on the day.</p>
</div>
</div>
<div class="live-item">
<div class="timestamp">2:55 PM<small>56 min ago</small></div>
<div class="content">
<h3>Committee statement: rates unchanged, balance sheet runoff continues</h3>
<p>The Federal Open Market Committee voted 9-1 to maintain the federal funds rate at its current range. One regional president dissented, preferring a 25-basis-point cut citing "growing labor market risks."</p>
</div>
</div>
<div class="live-item">
<div class="timestamp">2:00 PM<small>2 hr ago</small></div>
<div class="content">
<h3>Live blog begins: our correspondents at the Eccles Building</h3>
<p>Eleanor Marsh and Henry Tanaka are stationed outside the Federal Reserve. We're tracking statements, projections, and press conference questions in real time. Submit your questions using #AskDispatch.</p>
</div>
</div>
</div>
</section>
<!-- ======= Opinion Section ======= -->
<section id="opinion" class="opinion-section" aria-label="Opinion and analysis">
<div class="section-header">
<div>
<span class="section-label">Opinion</span>
<h2>Voices & Analysis</h2>
</div>
<a href="#all-opinion">All columnists →</a>
</div>
<div class="opinion-grid">
<article class="opinion-card">
<a href="#op-1">
<img src="https://i.pravatar.cc/200?u=sarahchen" alt="Sarah Chen">
<div class="name">Sarah Chen</div>
<div class="role">Tech & Policy</div>
<h3>The case for cautious optimism on AI regulation</h3>
<span class="read">Read column →</span>
</a>
</article>
<article class="opinion-card">
<a href="#op-2">
<img src="https://i.pravatar.cc/200?u=marcuswebb" alt="Marcus Webb">
<div class="name">Marcus Webb</div>
<div class="role">Media Critic</div>
<h3>Why local journalism remains America's civic backbone</h3>
<span class="read">Read column →</span>
</a>
</article>
<article class="opinion-card">
<a href="#op-3">
<img src="https://i.pravatar.cc/200?u=elenavasquez" alt="Dr. Elena Vasquez">
<div class="name">Dr. Elena Vasquez</div>
<div class="role">Economist</div>
<h3>Rethinking retirement in an era of longevity</h3>
<span class="read">Read column →</span>
</a>
</article>
<article class="opinion-card">
<a href="#op-4">
<img src="https://i.pravatar.cc/200?u=jholloway" alt="James Holloway">
<div class="name">James Holloway</div>
<div class="role">Industry</div>
<h3>The quiet revolution in American manufacturing</h3>
<span class="read">Read column →</span>
</a>
</article>
</div>
</section>
<!-- ======= Photo Gallery ======= -->
<section class="gallery-section" aria-label="Photo gallery">
<div class="section-header">
<div>
<span class="section-label">Photo Gallery</span>
<h2>The week in pictures</h2>
</div>
<a href="#gallery">View all galleries →</a>
</div>
<div class="gallery-grid">
<div class="gallery-item">
<img src="https://picsum.photos/seed/gallery1/800/600" alt="Aurora borealis over a snowy landscape">
<div class="gallery-caption">Aurora over Alaska · Photograph by Maya Lindgren</div>
</div>
<div class="gallery-item">
<img src="https://picsum.photos/seed/gallery2/400/300" alt="City skyline at dusk">
<div class="gallery-caption">Manhattan at twilight</div>
</div>
<div class="gallery-item">
<img src="https://picsum.photos/seed/gallery3/400/300" alt="Rural farming scene">
<div class="gallery-caption">Spring planting, Iowa</div>
</div>
<div class="gallery-item">
<img src="https://picsum.photos/seed/gallery4/400/300" alt="Coastal waves">
<div class="gallery-caption">Pacific storm surge</div>
</div>
<div class="gallery-item">
<img src="https://picsum.photos/seed/gallery5/400/300" alt="Desert landscape with mesas">
<div class="gallery-caption">Monument Valley sunrise</div>
</div>
</div>
</section>
<!-- ======= News Alert Customizer (Interactive) ======= -->
<section id="customizer" class="customizer" aria-label="News alert customizer">
<div class="customizer-grid">
<div>
<h2>Build your own newsroom.</h2>
<p class="lede">Pick the topics, beats, and frequency that matter to you. We'll deliver verified, fact-checked reporting straight to your inbox — never spam, never sold data.</p>
<form class="customizer-form" id="alertForm">
<div class="form-group">
<label for="alertEmail">Email address</label>
<input type="email" id="alertEmail" placeholder="you@example.com" required>
</div>
<div class="form-group">
<label>Follow these topics</label>
<div class="topic-chips" id="topicChips">
<label class="chip"><input type="checkbox" value="Politics">Politics</label>
<label class="chip"><input type="checkbox" value="World">World</label>
<label class="chip"><input type="checkbox" value="Business">Business</label>
<label class="chip"><input type="checkbox" value="Tech">Tech</label>
<label class="chip"><input type="checkbox" value="Climate">Climate</label>
<label class="chip"><input type="checkbox" value="Science">Science</label>
<label class="chip"><input type="checkbox" value="Health">Health</label>
<label class="chip"><input type="checkbox" value="Culture">Culture</label>
<label class="chip"><input type="checkbox" value="Sports">Sports</label>
<label class="chip"><input type="checkbox" value="Opinion">Opinion</label>
</div>
</div>
<div class="form-group">
<label>Delivery frequency</label>
<div class="frequency-row" id="frequencyRow">
<div class="freq-option active" data-value="realtime">
<div class="label">Real-time</div>
<div class="desc">As it breaks</div>
</div>
<div class="freq-option" data-value="daily">
<div class="label">Daily</div>
<div class="desc">6 AM digest</div>
</div>
<div class="freq-option" data-value="weekly">
<div class="label">Weekly</div>
<div class="desc">Sunday review</div>
</div>
</div>
</div>
<button type="submit" class="submit-btn">Get My Alerts</button>
<div class="customizer-success" id="alertSuccess">✓ Your newsroom is set up. Check your inbox to confirm.</div>
</form>
</div>
<aside class="customizer-preview">
<div class="preview-header">
<span class="label">Your live preview</span>
<span class="meta" id="previewCount">0 alerts</span>
</div>
<div id="previewBody">
<div class="preview-empty">Select topics and a frequency to preview your alerts.</div>
</div>
</aside>
</div>
</section>
<!-- ======= Testimonials ======= -->
<section class="testimonials" aria-label="Reader testimonials">
<div class="section-header">
<div>
<span class="section-label">From our readers</span>
<h2>Why readers trust The Meridian Dispatch</h2>
</div>
<a href="#reviews">Read more reviews →</a>
</div>
<div class="testimonial-grid">
<article class="testimonial">
<div class="stars">★★★★★</div>
<blockquote>The Meridian Dispatch has become my morning ritual. The fact-checking standards are unlike anything else I subscribe to — I trust what I read here in a way I don't trust most outlets anymore.</blockquote>
<div class="author">
<img src="https://i.pravatar.cc/100?u=reader1" alt="Margaret Holmes">
<div>
<div class="name">Margaret Holmes</div>
<div class="role">Subscriber since 2018 · Portland, OR</div>
</div>
</div>
</article>
<article class="testimonial">
<div class="stars">★★★★★</div>
<blockquote>I switched from a national daily two years ago and haven't looked back. The investigative work is on par with magazines three times the price, and the weather alerts have saved my family during three severe storms.</blockquote>
<div class="author">
<img src="https://i.pravatar.cc/100?u=reader2" alt="David Reyes">
<div>
<div class="name">David Reyes</div>
<div class="role">Subscriber since 2023 · Houston, TX</div>
</div>
</div>
</article>
<article class="testimonial">
<div class="stars">★★★★★</div>
<blockquote>As a teacher, I rely on accurate reporting for my current-events curriculum. The Meridian's topic alerts let me build weekly lesson plans in minutes — and the editorial standards mean I'm never embarrassed by what I share.</blockquote>
<div class="author">
<img src="https://i.pravatar.cc/100?u=reader3" alt="Aisha Williams">
<div>
<div class="name">Aisha Williams</div>
<div class="role">Subscriber since 2020 · Atlanta, GA</div>
</div>
</div>
</article>
</div>
</section>
<!-- ======= FAQ Accordion ======= -->
<section class="faq-section" id="faq" aria-label="Frequently asked questions">
<div style="text-align:center;">
<span class="section-label">FAQ</span>
<h2>Common questions, fully answered</h2>
<p class="sub">Everything you've asked about our reporting, our standards, and how to get the most from your subscription.</p>
</div>
<div class="faq-list">
<details class="faq-item">
<summary>How does your fact-checking process actually work?</summary>
<div class="answer">Every story at The Meridian Dispatch passes through a four-stage verification pipeline: source verification (independent confirmation from at least two named sources for any claim of fact), document authentication (all referenced documents are publicly archived at our Document Vault), editorial review (a dedicated standards editor evaluates every piece before publication), and post-publication correction (we publish transparent correction notices within 4 hours of any verified error). Our full standards manual is publicly available — we believe editorial transparency is a feature, not a trade secret.</div>
</details>
<details class="faq-item">
<summary>Can I republish or share your articles?</summary>
<div class="answer">Yes — non-commercial sharing with full attribution is always permitted under our Community Republish license. Educational institutions, libraries, and nonprofit newsrooms may republish in full at no cost through our Newsroom Partners program. Commercial use requires written permission; contact our syndication desk for terms. We do not use paywalls or hard meter limits — we believe information wants to be free.</div>
</details>
<details class="faq-item">
<summary>How do I submit a tip — and how will my identity be protected?</summary>
<div class="answer">We accept tips through encrypted email (tips@meridiandispatch.com), Signal (a number published on our Contact page), our SecureDrop instance, or postal mail. We never publish a source's identity without explicit written consent, and we never disclose a source's identity to third parties — including subpoenas — without exhausting every legal avenue. Our newsroom is not subject to NDAs with government agencies.</div>
</details>
<details class="faq-item">
<summary>Do you offer student, educator, or military discounts?</summary>
<div class="answer">Yes. Verified students receive 75% off the standard subscription rate; K-12 educators receive 50% off; active-duty military, veterans, and their families receive 60% off. Verification is handled through SheerID and typically completes in under a minute. We also offer free institutional access to over 4,300 public libraries worldwide through the Library Pass program.</div>
</details>
<details class="faq-item">
<summary>What's included with a subscription versus the free tier?</summary>
<div class="answer">Free readers receive all daily news, the morning briefing, and access to our public archive going back 30 days. Subscribers additionally receive unlimited archive access (full historical record since 2013), all investigative PDFs and source documents, the long-form print magazine, premium newsletters (9 in total), ad-free reading, and early access to live event coverage. Student and library rates apply.</div>
</details>
<details class="faq-item">
<summary>How do I download the app and access on mobile?</summary>
<div class="answer">The Meridian Dispatch app is available on iOS and Android. Subscribers can sign in with their existing account; the app supports offline reading, push notifications for breaking news, dark mode, and our custom alert builder. Download from the App Store or Google Play — or scan the QR code on any newsletter.</div>
</details>
</div>
</section>
<!-- ======= Final CTA Banner ======= -->
<section class="cta-banner" aria-label="Subscribe call to action">
<div>
<span class="section-label" style="color:#ffd166; border-color:#ffd166;">Membership</span>
<h2>Independent reporting needs independent readers.</h2>
<p>Join 184,000 subscribers who fund journalism that doesn't answer to advertisers, shareholders, or politicians. Your subscription pays our reporters, our fact-checkers, and our standards editors — and keeps every article free for everyone who can't afford one.</p>
<div class="cta-buttons">
<a href="#subscribe" class="btn-primary">Subscribe Today · $4/month</a>
<a href="#download" class="btn-secondary">📱 Download the App</a>
</div>
</div>
<div class="cta-stats">
<div class="cta-stat">
<div class="num">184K</div>
<div class="lbl">Active subscribers</div>
</div>
<div class="cta-stat">
<div class="num">12yr</div>
<div class="lbl">Independent operation</div>
</div>
<div class="cta-stat">
<div class="num">98%</div>
<div class="lbl">Fact-check pass rate</div>
</div>
<div class="cta-stat">
<div class="num">$0</div>
<div class="lbl">Paywall on breaking news</div>
</div>
</div>
</section>
</div>
<!-- ============ END PRIMARY COLUMN ============ -->
<!-- ============ SIDEBAR ============ -->
<aside class="sidebar" aria-label="Sidebar">
<div class="side-block">
<h3>Most Read · 24 hrs</h3>
<ol class="top-list">
<li>
<div>
<a href="#m1">The Fed's quiet pivot: what today really means for your mortgage</a>
<small>Economy · 184K views</small>
</div>
</li>
<li>
<div>
<a href="#m2">Coastal flooding: the 14 cities most at risk this decade</a>
<small>Climate · 142K views</small>
</div>
</li>
<li>
<div>
<a href="#m3">Inside the algorithm: our six-month bail investigation</a>
<small>Investigations · 128K views</small>
</div>
</li>
<li>
<div>
<a href="#m4">Why your grocery bill hasn't dropped (and when it might)</a>
<small>Business · 96K views</small>
</div>
</li>
<li>
<div>
<a href="#m5">The teachers quietly revolutionizing rural classrooms</a>
<small>Education · 71K views</small>
</div>
</li>
</ol>
</div>
<div class="side-block">
<h3>Video Highlights</h3>
<article class="video-card">
<a href="#video-1">
<div class="video-thumb">
<img src="https://picsum.photos/seed/video1/400/225" alt="Inside a courtroom">
<div class="play-icon"><span>▶</span></div>
<div class="duration">4:32</div>
</div>
<h4>Watch: our reporters explain the bail algorithm investigation</h4>
</a>
</article>
<article class="video-card">
<a href="#video-2">
<div class="video-thumb">
<img src="https://picsum.photos/seed/video2/400/225" alt="Reporter at the Fed">
<div class="play-icon"><span>▶</span></div>
<div class="duration">8:14</div>
</div>
<h4>Inside the Fed: the moment Powell signaled the pause</h4>
</a>
</article>
<article class="video-card">
<a href="#video-3">
<div class="video-thumb">
<img src="https://picsum.photos/seed/video3/400/225" alt="Time-lapse of clouds">
<div class="play-icon"><span>▶</span></div>
<div class="duration">2:48</div>
</div>
<h4>Watch: the storm system hitting the Pacific Northwest</h4>
</a>
</article>
</div>
<div class="market-box">
<h3 style="font-family:var(--font-sans); font-size:12px; font-weight:800; letter-spacing:0.18em; text-transform:uppercase; padding-bottom:12px; border-bottom:1px solid rgba(255,255,255,0.2); margin-bottom:12px;">Markets · Live</h3>
<div class="market-row"><span class="symbol">S&P 500</span><span class="price">5,738.17 <span class="up">+0.62%</span></span></div>
<div class="market-row"><span class="symbol">DOW</span><span class="price">39,812.07 <span class="up">+0.41%</span></span></div>
<div class="market-row"><span class="symbol">NASDAQ</span><span class="price">18,322.61 <span class="down">-0.18%</span></span></div>
<div class="market-row"><span class="symbol">RUSSELL</span><span class="price">2,124.55 <span class="up">+0.27%</span></span></div>
<div class="market-row"><span class="symbol">10Y YIELD</span><span class="price">4.21% <span class="down">-0.08</span></span></div>
<div class="market-row"><span class="symbol">GOLD</span><span class="price">$2,148.30 <span class="up">+0.34%</span></span></div>
<div class="market-row"><span class="symbol">OIL (WTI)</span><span class="price">$78.42 <span class="down">-0.91%</span></span></div>
</div>
<div class="side-block" id="newsletters">
<h3>Daily Newsletters</h3>
<p style="font-family:var(--font-serif); font-size:14px; color:var(--ink-soft); margin-bottom:14px; line-height:1.55;">9 editor-curated briefings delivered before your coffee cools. All free.</p>
<ul style="list-style:none;">
<li style="padding:10px 0; border-bottom:1px solid var(--line); font-family:var(--font-sans); font-size:13px;"><strong>The Morning Brief</strong><br><span style="color:var(--muted); font-size:11px;">6 AM weekdays · Top stories + weather</span></li>
<li style="padding:10px 0; border-bottom:1px solid var(--line); font-family:var(--font-sans); font-size:13px;"><strong>Capitol Watch</strong><br><span style="color:var(--muted); font-size:11px;">Daily · Politics & policy</span></li>
<li style="padding:10px 0; border-bottom:1px solid var(--line); font-family:var(--font-sans); font-size:13px;"><strong>Climate Desk</strong><br><span style="color:var(--muted); font-size:11px;">Weekly · Environment & energy</span></li>
<li style="padding:10px 0; font-family:var(--font-sans); font-size:13px;"><strong>The Long Read</strong><br><span style="color:var(--muted); font-size:11px;">Sunday · Best of the magazine</span></li>
</ul>
</div>
<div class="side-block" style="background:var(--paper-alt); text-align:center; border-style:dashed;">
<h3 style="border-bottom-color:var(--ink);">Reader Poll</h3>
<p style="font-family:var(--font-serif); font-size:14px; color:var(--ink); margin-bottom:14px; line-height:1.4;">Should members of Congress be barred from individual stock trading?</p>
<div style="display:grid; gap:8px; margin-bottom:12px;">
<button class="poll-btn" style="background:white; border:1px solid var(--line); padding:10px; border-radius:3px; font-family:var(--font-sans); font-size:13px; cursor:pointer; text-align:left;">✓ Yes — full ban</button>
<button class="poll-btn" style="background:white; border:1px solid var(--line); padding:10px; border-radius:3px; font-family:var(--font-sans); font-size:13px; cursor:pointer; text-align:left;">⚠ Only blind trusts</button>
<button class="poll-btn" style="background:white; border:1px solid var(--line); padding:10px; border-radius:3px; font-family:var(--font-sans); font-size:13px; cursor:pointer; text-align:left;">✗ No — leave as is</button>
</div>
<div class="meta">3,418 votes · Closes Friday</div>
</div>
</aside>
</div>
</div>
</main>
<!-- ===================== FOOTER ===================== -->
<footer>
<div class="container">
<div class="footer-grid">
<div class="footer-brand">
<div class="brand-mark">M</div>
<h3>The Meridian Dispatch</h3>
<p>Independent, member-supported journalism covering national news, world affairs, weather, and the investigations that hold power accountable.</p>
<div class="newsletter-mini">
<input type="email" placeholder="Your email address">
<button>Join</button>
</div>
<div class="social-row">
<a href="#" class="social-icon" aria-label="X / Twitter">𝕏</a>
<a href="#" class="social-icon" aria-label="Facebook">f</a>
<a href="#" class="social-icon" aria-label="Instagram">◉</a>
<a href="#" class="social-icon" aria-label="YouTube">▶</a>
<a href="#" class="social-icon" aria-label="LinkedIn">in</a>
<a href="#" class="social-icon" aria-label="RSS">📡</a>
</div>
</div>
<div class="footer-col">
<h4>News</h4>
<ul>
<li><a href="#national">National</a></li>
<li><a href="#world">World</a></li>
<li><a href="#politics">Politics</a></li>
<li><a href="#business">Business</a></li>
<li><a href="#weather">Weather</a></li>
<li><a href="#science">Science</a></li>
<li><a href="#health">Health</a></li>
<li><a href="#archive">Full Archive</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Newsroom</h4>
<ul>
<li><a href="#opinion">Opinion</a></li>
<li><a href="#investigations">Investigations</a></li>
<li><a href="#live">Live Coverage</a></li>
<li><a href="#podcasts">Podcasts</a></li>
<li><a href="#video">Video</a></li>
<li><a href="#newsletters">Newsletters</a></li>
<li><a href="#standards">Editorial Standards</a></li>
<li><a href="#corrections">Corrections</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Contact</h4>
<div class="footer-contact">
<strong>Newsroom</strong>
tips@meridiandispatch.com<br>
1-800-MERIDIAN<br><br>
<strong>Headquarters</strong>
1421 Constitution Avenue NW<br>
Washington, DC 20001<br><br>
<strong>Membership</strong>
members@meridiandispatch.com<br>
1-877-555-0127
</div>
</div>
</div>
<div class="footer-bottom">
<div>© 2025 The Meridian Dispatch, LLC. All rights reserved. A worker-owned newsroom.</div>
<div class="legal">
<a href="#privacy">Privacy Policy</a>
<a href="#terms">Terms of Service</a>
<a href="#cookies">Cookie Settings</a>
<a href="#accessibility">Accessibility</a>
<a href="#sitemap">Sitemap</a>
</div>
</div>
</div>
</footer>
<!-- ===================== SCRIPTS ===================== -->
<script>
/* ---------- News Alert Customizer ---------- */
const chips = document.querySelectorAll('#topicChips .chip');
const freqOptions = document.querySelectorAll('#frequencyRow .freq-option');
const previewBody = document.getElementById('previewBody');
const previewCount = document.getElementById('previewCount');
const alertForm = document.getElementById('alertForm');
const alertSuccess = document.getElementById('alertSuccess');
let selectedTopics = [];
let selectedFrequency = 'realtime';
chips.forEach(chip => {
chip.addEventListener('click', e => {
e.preventDefault();
chip.classList.toggle('active');
const value = chip.querySelector('input').value;
if (chip.classList.contains('active')) {
if (!selectedTopics.includes(value)) selectedTopics.push(value);
} else {
selectedTopics = selectedTopics.filter(t => t !== value);
}
renderPreview();
});
});
freqOptions.forEach(opt => {
opt.addEventListener('click', () => {
freqOptions.forEach(o => o.classList.remove('active'));
opt.classList.add('active');
selectedFrequency = opt.dataset.value;
renderPreview();
});
});
function renderPreview() {
const total = selectedTopics.length;
previewCount.textContent = total === 1 ? '1 alert' : `${total} alerts`;
if (total === 0) {
previewBody.innerHTML = '<div class="preview-empty">Select topics and a frequency to preview your alerts.</div>';
return;
}
const freqLabel = {
realtime: 'as it breaks',
daily: 'every morning at 6 AM',
weekly: 'every Sunday morning'
}[selectedFrequency];
const sampleHeadlines = {
Politics: 'Senate clears procedural vote on bipartisan infrastructure package',
World: 'UN Security Council convenes emergency session on Mediterranean tensions',
Business: 'S&P 500 closes at record high on cooling inflation data',
Tech: 'Federal agencies publish joint guidance on generative AI deployment',
Climate: 'NOAA releases updated hurricane season projections for the Atlantic basin',
Science: 'Artemis II crew completes final dress rehearsal ahead of July launch window',
Health: 'CDC advisory committee unanimously endorses new RSV vaccine for adults 60+',
Culture: 'Library of Congress acquires personal archive of late poet laureate',
Sports: 'Olympic qualifying trials conclude with three new national records',
Opinion: 'The case for cautious optimism on AI regulation — Sarah Chen'
};
let html = `<div style="font-family:var(--font-sans); font-size:11px; color:var(--muted); letter-spacing:0.08em; text-transform:uppercase; margin-bottom:10px;">Delivered ${freqLabel}</div>`;
selectedTopics.forEach(topic => {
html += `
<div style="padding:10px 0; border-bottom:1px solid var(--line);">
<div style="font-family:var(--font-sans); font-size:10px; color:var(--accent); font-weight:700; letter-spacing:0.1em; text-transform:uppercase;">${topic}</div>
<div style="font-family:var(--font-serif); font-size:13px; color:var(--ink); margin-top:4px; line-height:1.35;">${sampleHeadlines[topic] || 'Latest reporting and analysis'}</div>
</div>`;
});
previewBody.innerHTML = html;
}
alertForm.addEventListener('submit', e => {
e.preventDefault();
if (selectedTopics.length === 0) {
alertSuccess.textContent = '⚠ Please select at least one topic to follow.';
alertSuccess.style.background = '#fff3e0';
alertSuccess.style.borderColor = '#ff9800';
alertSuccess.style.color = '#e65100';
alertSuccess.classList.add('show');
setTimeout(() => { alertSuccess.classList.remove('show'); }, 4000);
return;
}
alertSuccess.innerHTML = '✓ Your newsroom is set up. We sent a confirmation to ' + document.getElementById('alertEmail').value + '.';
alertSuccess.style.background = '#e8f5e9';
alertSuccess.style.borderColor = '#66bb6a';
alertSuccess.style.color = '#2e7d32';
alertSuccess.classList.add('show');
setTimeout(() => { alertSuccess.classList.remove('show'); }, 6000);
});
/* ---------- Poll Buttons ---------- */
document.querySelectorAll('.poll-btn').forEach(btn => {
btn.addEventListener('click', () => {
document.querySelectorAll('.poll-btn').forEach(b => {
b.style.background = 'white';
b.style.borderColor = 'var(--line)';
});
btn.style.background = '#e8f5e9';
btn.style.borderColor = '#66bb6a';
});
});
</script>
</body>
</html>
View Axe Report (JSON)
{
"testEngine": {
"name": "axe-core",
"version": "4.10.2"
},
"testRunner": {
"name": "axe"
},
"testEnvironment": {
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
"windowWidth": 1280,
"windowHeight": 720,
"orientationAngle": 0,
"orientationType": "landscape-primary"
},
"timestamp": "2026-11-12T09:41:58.411Z",
"url": "https://benchmark.aimac.invalid/dfe0a871a4a345f457bd7d91f903109eeae8363a43e5df697ae6a7e049f9647d.html",
"toolOptions": {
"runOnly": {
"type": "tag",
"values": [
"wcag2a",
"wcag2aa",
"wcag21a",
"wcag21aa",
"wcag22a",
"wcag22aa"
]
},
"resultTypes": [
"violations"
],
"reporter": "v1"
},
"inapplicable": [
{
"id": "area-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <area> elements of image maps have alternative text",
"help": "Active <area> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
"nodes": []
},
{
"id": "aria-braille-equivalent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
"help": "aria-braille attributes must have a non-braille equivalent",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
"nodes": []
},
{
"id": "aria-command-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA button, link and menuitem has an accessible name",
"help": "ARIA commands must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": []
},
{
"id": "aria-input-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA input field has an accessible name",
"help": "ARIA input fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-meter-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA meter node has an accessible name",
"help": "ARIA meter nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-progressbar-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA progressbar node has an accessible name",
"help": "ARIA progressbar nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-children",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require child roles contain them",
"help": "Certain ARIA roles must contain particular children",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": []
},
{
"id": "aria-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "blink",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag222",
"section508",
"section508.22.j",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <blink> elements are not used",
"help": "<blink> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
"nodes": []
},
{
"id": "definition-list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dl> elements are structured correctly",
"help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
"nodes": []
},
{
"id": "dlitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dt> and <dd> elements are contained by a <dl>",
"help": "<dt> and <dd> elements must be contained by a <dl>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
"nodes": []
},
{
"id": "frame-focusable-content",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
"help": "Frames with focusable content must not have tabindex=-1",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
"nodes": []
},
{
"id": "frame-title-unique",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
"help": "Frames must have a unique title attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
"nodes": []
},
{
"id": "frame-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"section508",
"section508.22.i",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements have an accessible name",
"help": "Frames must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
"nodes": []
},
{
"id": "html-xml-lang-mismatch",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
"help": "HTML elements with lang and xml:lang must have the same base language",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
"nodes": []
},
{
"id": "input-button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure input buttons have discernible text",
"help": "Input buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
"nodes": []
},
{
"id": "input-image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <input type=\"image\"> elements have alternative text",
"help": "Image buttons must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
"nodes": []
},
{
"id": "link-in-text-block",
"impact": null,
"tags": [
"cat.color",
"wcag2a",
"wcag141",
"TTv5",
"TT13.a",
"EN-301-549",
"EN-9.1.4.1"
],
"description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
"help": "Links must be distinguishable without relying on color",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
"nodes": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "select-name",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "td-headers-attr",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
"help": "Table cells that use the headers attribute must only refer to cells in the same table",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
"nodes": []
},
{
"id": "th-has-data-cells",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
"help": "Table headers in a data table must refer to data cells",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-allowed-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure an element's role supports its ARIA attributes",
"help": "Elements must only use supported ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-allowed-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attributes are used correctly for the defined role"
}
],
"none": [
{
"id": "aria-unsupported-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute is supported"
}
],
"impact": null,
"html": "<a href=\"#\" class=\"brand\" aria-label=\"The Meridian Dispatch home\">\n <div class=\"brand-mark\">M</div>\n <div class=\"brand-text\">\n <h1>The Meridian Dispatch</h1>\n <div class=\"tag\">Independent Journalism \u00b7 Verified Facts \u00b7 Since 2013</div>\n </div>\n </a>",
"target": [
".brand"
]
}
]
},
{
"id": "aria-conditional-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are used as described in the specification of the element's role",
"help": "ARIA attributes must be used as specified for the element's role",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-conditional-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"brand\" aria-label=\"The Meridian Dispatch home\">\n <div class=\"brand-mark\">M</div>\n <div class=\"brand-text\">\n <h1>The Meridian Dispatch</h1>\n <div class=\"tag\">Independent Journalism \u00b7 Verified Facts \u00b7 Since 2013</div>\n </div>\n </a>",
"target": [
".brand"
]
}
]
},
{
"id": "aria-deprecated-role",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements do not use deprecated roles",
"help": "Deprecated ARIA roles must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "deprecatedrole",
"data": null,
"relatedNodes": [],
"impact": "minor",
"message": "ARIA role is not deprecated"
}
],
"impact": null,
"html": "<div class=\"ticker\" role=\"region\" aria-label=\"Breaking news\">",
"target": [
".ticker"
]
}
]
},
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"impact": null,
"html": "<a href=\"#\" class=\"brand\" aria-label=\"The Meridian Dispatch home\">\n <div class=\"brand-mark\">M</div>\n <div class=\"brand-text\">\n <h1>The Meridian Dispatch</h1>\n <div class=\"tag\">Independent Journalism \u00b7 Verified Facts \u00b7 Since 2013</div>\n </div>\n </a>",
"target": [
".brand"
]
}
]
},
{
"id": "aria-required-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements with ARIA roles have all required ARIA attributes",
"help": "Required ARIA attributes must be provided",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-required-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "All required ARIA attributes are present"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<div class=\"ticker\" role=\"region\" aria-label=\"Breaking news\">",
"target": [
".ticker"
]
}
]
},
{
"id": "aria-roles",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all elements with a role attribute use a valid value",
"help": "ARIA roles used must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "invalidrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA role is valid"
},
{
"id": "abstractrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Abstract roles are not used"
},
{
"id": "unsupportedrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA role is supported"
}
],
"impact": null,
"html": "<div class=\"ticker\" role=\"region\" aria-label=\"Breaking news\">",
"target": [
".ticker"
]
}
]
},
{
"id": "aria-valid-attr-value",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all ARIA attributes have valid values",
"help": "ARIA attributes must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-valid-attr-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute values are valid"
},
{
"id": "aria-errormessage",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
},
{
"id": "aria-level",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-level values are valid"
}
],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"brand\" aria-label=\"The Meridian Dispatch home\">\n <div class=\"brand-mark\">M</div>\n <div class=\"brand-text\">\n <h1>The Meridian Dispatch</h1>\n <div class=\"tag\">Independent Journalism \u00b7 Verified Facts \u00b7 Since 2013</div>\n </div>\n </a>",
"target": [
".brand"
]
}
]
},
{
"id": "aria-valid-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure attributes that begin with aria- are valid ARIA attributes",
"help": "ARIA attributes must conform to valid names",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-valid-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute name is valid"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"brand\" aria-label=\"The Meridian Dispatch home\">\n <div class=\"brand-mark\">M</div>\n <div class=\"brand-text\">\n <h1>The Meridian Dispatch</h1>\n <div class=\"tag\">Independent Journalism \u00b7 Verified Facts \u00b7 Since 2013</div>\n </div>\n </a>",
"target": [
".brand"
]
}
]
},
{
"id": "avoid-inline-spacing",
"impact": null,
"tags": [
"cat.structure",
"wcag21aa",
"wcag1412",
"EN-301-549",
"EN-9.1.4.12",
"ACT"
],
"description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
"help": "Inline text spacing must be adjustable with custom stylesheets",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "important-letter-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-word-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-line-height",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "line-height in the style attribute is not set to !important, or meets the minimum"
}
],
"none": [],
"impact": null,
"html": "<span class=\"meta\" style=\"color:#b8c5d6;\">Thursday, March 13, 2025 \u00b7 Vol. XII \u00b7 No. 142</span>",
"target": [
".topbar-left > .meta"
]
}
]
},
{
"id": "button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure buttons have discernible text",
"help": "Buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "button-has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has inner text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute exists and is not empty"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"search-toggle\" aria-label=\"Search\">\ud83d\udd0d</button>",
"target": [
".search-toggle"
]
}
]
},
{
"id": "bypass",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag241",
"section508",
"section508.22.o",
"TTv5",
"TT9.a",
"EN-301-549",
"EN-9.2.4.1"
],
"description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
"help": "Page must have means to bypass repeated blocks",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "internal-link-present",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Valid skip link found"
},
{
"id": "header-present",
"data": null,
"relatedNodes": [
{
"html": "<h1>The Meridian Dispatch</h1>",
"target": [
"h1"
]
},
{
"html": "<h2 class=\"headline-xl\">Federal Reserve signals shift in monetary policy as inflation data cools for third straight month</h2>",
"target": [
".headline-xl"
]
},
{
"html": "<h3 class=\"headline-m\">Senate advances sweeping bipartisan infrastructure overhaul in late-night vote</h3>",
"target": [
".side-item:nth-child(1) > .headline-m"
]
},
{
"html": "<h3 class=\"headline-m\">Wildfire containment reaches 65% as crews battle historic blaze in Northern California</h3>",
"target": [
".side-item:nth-child(2) > .headline-m"
]
},
{
"html": "<h3 class=\"headline-m\">Supreme Court hears arguments in landmark digital privacy case with sweeping implications</h3>",
"target": [
".side-item:nth-child(3) > .headline-m"
]
},
{
"html": "<h2>Across the country</h2>",
"target": [
"#national > .section-header > div > h2"
]
},
{
"html": "<h3 class=\"headline-m\">Coastal cities brace for atmospheric river system expected to dump 8 inches of rain in 48 hours</h3>",
"target": [
"a[href$=\"#story-2\"] > .headline-m"
]
},
{
"html": "<h3 class=\"headline-m\">U.S. automakers report strongest quarterly earnings in three years on EV demand</h3>",
"target": [
"a[href$=\"#story-3\"] > .headline-m"
]
},
{
"html": "<h3 class=\"headline-m\">Federal health agency unveils $4 billion plan to combat antimicrobial resistance</h3>",
"target": [
"a[href$=\"#story-4\"] > .headline-m"
]
},
{
"html": "<h3 class=\"headline-m\">Twelve states reach preliminary agreement on standardized credential reciprocity</h3>",
"target": [
"a[href$=\"#story-5\"] > .headline-m"
]
},
{
"html": "<h3 class=\"headline-m\">NASA confirms July launch window for crewed lunar flyby mission after critical review</h3>",
"target": [
"a[href$=\"#story-6\"] > .headline-m"
]
},
{
"html": "<h3 class=\"headline-m\">Farm bill negotiations stall over commodity subsidy reforms as deadline looms</h3>",
"target": [
"a[href$=\"#story-7\"] > .headline-m"
]
},
{
"html": "<h2>National forecast \u00b7 Thursday, March 13</h2>",
"target": [
"#weather > div:nth-child(1) > div > h2"
]
},
{
"html": "<h2 class=\"headline-l\">Inside the algorithm: how local courts use predictive software to set bail</h2>",
"target": [
".headline-l"
]
},
{
"html": "<h3 class=\"headline-s\">The vanishing water: a five-month investigation into a Western aquifer's silent crisis</h3>",
"target": [
".feature-item:nth-child(2) > .headline-s"
]
},
{
"html": "<h3 class=\"headline-s\">Inside the federal contractor database hiding $1.8 billion in flagged payments</h3>",
"target": [
".feature-item:nth-child(3) > .headline-s"
]
},
{
"html": "<h3 class=\"headline-s\">A year after our hospital investigation, the state has acted \u2014 and hasn't</h3>",
"target": [
".feature-item:nth-child(4) > .headline-s"
]
},
{
"html": "<h3 class=\"headline-s\">Have a story? Our reporters protect their sources \u2014 and the law protects you.</h3>",
"target": [
".feature-item:nth-child(5) > .headline-s"
]
},
{
"html": "<h2>Fed rate decision: live updates from our economics desk</h2>",
"target": [
".live-header > div:nth-child(1) > h2"
]
},
{
"html": "<h3>Powell's opening statement emphasizes \"patient\" approach <span class=\"update-tag\">Update</span></h3>",
"target": [
".live-item:nth-child(1) > .content > h3"
]
},
{
"html": "<h3>Markets respond: S&P 500 extends gains, Treasury yields fall</h3>",
"target": [
".live-item:nth-child(2) > .content > h3"
]
},
{
"html": "<h3>Committee statement: rates unchanged, balance sheet runoff continues</h3>",
"target": [
".live-item:nth-child(3) > .content > h3"
]
},
{
"html": "<h3>Live blog begins: our correspondents at the Eccles Building</h3>",
"target": [
".live-item:nth-child(4) > .content > h3"
]
},
{
"html": "<h2>Voices & Analysis</h2>",
"target": [
"#opinion > .section-header > div > h2"
]
},
{
"html": "<h3>The case for cautious optimism on AI regulation</h3>",
"target": [
"a[href$=\"#op-1\"] > h3"
]
},
{
"html": "<h3>Why local journalism remains America's civic backbone</h3>",
"target": [
"a[href$=\"#op-2\"] > h3"
]
},
{
"html": "<h3>Rethinking retirement in an era of longevity</h3>",
"target": [
"a[href$=\"#op-3\"] > h3"
]
},
{
"html": "<h3>The quiet revolution in American manufacturing</h3>",
"target": [
"a[href$=\"#op-4\"] > h3"
]
},
{
"html": "<h2>The week in pictures</h2>",
"target": [
".gallery-section > .section-header > div > h2"
]
},
{
"html": "<h2>Build your own newsroom.</h2>",
"target": [
".customizer-grid > div > h2"
]
},
{
"html": "<h2>Why readers trust The Meridian Dispatch</h2>",
"target": [
".testimonials > .section-header > div > h2"
]
},
{
"html": "<h2>Common questions, fully answered</h2>",
"target": [
"#faq > div:nth-child(1) > h2"
]
},
{
"html": "<h2>Independent reporting needs independent readers.</h2>",
"target": [
".cta-banner > div:nth-child(1) > h2"
]
},
{
"html": "<h3>Most Read \u00b7 24 hrs</h3>",
"target": [
".side-block:nth-child(1) > h3"
]
},
{
"html": "<h3>Video Highlights</h3>",
"target": [
".side-block:nth-child(2) > h3"
]
},
{
"html": "<h4>Watch: our reporters explain the bail algorithm investigation</h4>",
"target": [
"a[href$=\"#video-1\"] > h4"
]
},
{
"html": "<h4>Inside the Fed: the moment Powell signaled the pause</h4>",
"target": [
"a[href$=\"#video-2\"] > h4"
]
},
{
"html": "<h4>Watch: the storm system hitting the Pacific Northwest</h4>",
"target": [
"a[href$=\"#video-3\"] > h4"
]
},
{
"html": "<h3 style=\"font-family:var(--font-sans); font-size:12px; font-weight:800; letter-spacing:0.18em; text-transform:uppercase; padding-bottom:12px; border-bottom:1px solid rgba(255,255,255,0.2); margin-bottom:12px;\">Markets \u00b7 Live</h3>",
"target": [
".market-box > h3"
]
},
{
"html": "<h3>Daily Newsletters</h3>",
"target": [
"#newsletters > h3"
]
},
{
"html": "<h3 style=\"border-bottom-color:var(--ink);\">Reader Poll</h3>",
"target": [
".side-block:nth-child(5) > h3"
]
},
{
"html": "<h3>The Meridian Dispatch</h3>",
"target": [
".footer-brand > h3"
]
},
{
"html": "<h4>News</h4>",
"target": [
".footer-col:nth-child(2) > h4"
]
},
{
"html": "<h4>Newsroom</h4>",
"target": [
".footer-col:nth-child(3) > h4"
]
},
{
"html": "<h4>Contact</h4>",
"target": [
".footer-col:nth-child(4) > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main>",
"target": [
"main"
]
}
],
"impact": "serious",
"message": "Page has a landmark region"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e9eef5",
"bgColor": "#1e364f",
"contrastRatio": 10.62,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 10.62"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span class=\"weather-pill\">\ud83d\udccd Washington, D.C. <strong>52\u00b0F</strong> \u00b7 Partly Cloudy</span>",
"target": [
".weather-pill"
]
}
]
},
{
"id": "document-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag242",
"TTv5",
"TT12.a",
"EN-301-549",
"EN-9.2.4.2",
"ACT"
],
"description": "Ensure each HTML document contains a non-empty <title> element",
"help": "Documents must have <title> element to aid in navigation",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "doc-has-title",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Document has a non-empty <title> element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "duplicate-id-aria",
"data": "alertEmail",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<input type=\"email\" id=\"alertEmail\" placeholder=\"you@example.com\" required=\"\">",
"target": [
"#alertEmail"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [
{
"html": "<label for=\"alertEmail\">Email address</label>",
"target": [
"label[for=\"alertEmail\"]"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input type=\"email\" id=\"alertEmail\" placeholder=\"you@example.com\" required=\"\">",
"target": [
"#alertEmail"
]
}
]
},
{
"id": "html-has-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure every HTML document has a lang attribute",
"help": "<html> element must have a lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The <html> element has a lang attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "html-lang-valid",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure the lang attribute of the <html> element has a valid value",
"help": "<html> element must have a valid value for the lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "valid-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Value of lang attribute is included in the list of valid languages"
}
],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has an alt attribute"
}
],
"all": [],
"none": [
{
"id": "alt-space-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a valid alt attribute value"
}
],
"impact": null,
"html": "<img src=\"https://placehold.co/180x60/0a2540/f6f4ee?text=MERIDIAN+DISPATCH&font=playfair+display\" alt=\"The Meridian Dispatch wordmark\" style=\"opacity:0.85;\">",
"target": [
"img[alt=\"The Meridian Dispatch wordmark\"]"
]
}
]
},
{
"id": "label",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every form element has a label",
"help": "Form elements must have labels",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "explicit-label",
"data": {
"explicitLabel": "Email address"
},
"relatedNodes": [
{
"html": "<label for=\"alertEmail\">Email address</label>",
"target": [
"label[for=\"alertEmail\"]"
]
}
],
"impact": "critical",
"message": "Element has an explicit <label>"
},
{
"id": "non-empty-placeholder",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a placeholder attribute"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input type=\"email\" id=\"alertEmail\" placeholder=\"you@example.com\" required=\"\">",
"target": [
"#alertEmail"
]
}
]
},
{
"id": "link-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure links have discernible text",
"help": "Links must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is not in tab order or has accessible text"
}
],
"impact": null,
"html": "<a href=\"#newsletters\" style=\"color:#ffd166;\">\u2630 Newsletters</a>",
"target": [
".topbar-right > a[href$=\"#newsletters\"]"
]
}
]
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "only-listitems",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List element only has direct children that are allowed inside <li> elements"
}
],
"impact": null,
"html": "<ul class=\"nav-links\">",
"target": [
".nav-links"
]
}
]
},
{
"id": "listitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <li> elements are used semantically",
"help": "<li> elements must be contained in a <ul> or <ol>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "listitem",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List item has a <ul>, <ol> or role=\"list\" parent element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<li><a href=\"#\" class=\"active\">Home</a></li>",
"target": [
".nav-links > li:nth-child(1)"
]
}
]
},
{
"id": "meta-viewport",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT"
],
"description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
"help": "Zooming and scaling must not be disabled",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "meta-viewport",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "<meta> tag does not disable zooming on mobile devices"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<img src=\"https://placehold.co/180x60/0a2540/f6f4ee?text=MERIDIAN+DISPATCH&font=playfair+display\" alt=\"The Meridian Dispatch wordmark\" style=\"opacity:0.85;\">",
"target": [
"img[alt=\"The Meridian Dispatch wordmark\"]"
]
}
]
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<summary>How does your fact-checking process actually work?</summary>",
"target": [
"details:nth-child(1) > summary"
]
}
]
},
{
"id": "target-size",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"description": "Ensure touch targets have sufficient size and space",
"help": "All touch targets must be 24px large, or leave sufficient space",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "target-offset",
"data": {
"closestOffset": 24,
"minOffset": 24
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#newsletters\" style=\"color:#ffd166;\">\u2630 Newsletters</a>",
"target": [
".topbar-right > a[href$=\"#newsletters\"]"
]
}
]
}
],
"incomplete": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": "pseudoContent",
"expectedContrastRatio": "4.5:1"
},
"relatedNodes": [
{
"html": "<section id=\"weather\" class=\"weather-section\" aria-label=\"Weather forecast\">",
"target": [
"#weather"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a pseudo element"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"section-label\" style=\"color:#ffd166; border-color:#ffd166;\">Weather</span>",
"target": [
"#weather > div:nth-child(1) > div > .section-label"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a pseudo element"
}
]
}
],
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#f6f4ee",
"contrastRatio": 2.95,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header class=\"masthead\">",
"target": [
"header"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"tag\">Independent Journalism \u00b7 Verified Facts \u00b7 Since 2013</div>",
"target": [
".tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#f6f4ee",
"contrastRatio": 2.95,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"byline\"><strong>By Eleanor Marsh</strong> \u00b7 Senior Economics Correspondent \u00b7 Updated 12 min ago \u00b7 8 min read</div>",
"target": [
"a[href$=\"#story-1\"] > .byline"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#f6f4ee",
"contrastRatio": 2.95,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"byline\">By Marcus Holloway \u00b7 2 hr ago</div>",
"target": [
".side-item:nth-child(1) > .byline"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#f6f4ee",
"contrastRatio": 2.95,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"byline\">By Priya Anand \u00b7 4 hr ago</div>",
"target": [
".side-item:nth-child(2) > .byline"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#f6f4ee",
"contrastRatio": 2.95,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"byline\">By Daniel Chen \u00b7 6 hr ago</div>",
"target": [
".side-item:nth-child(3) > .byline"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#f6f4ee",
"contrastRatio": 2.95,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"byline\"><strong>By Tom\u00e1s Reyes</strong> \u00b7 1 hr ago</div>",
"target": [
"a[href$=\"#story-2\"] > .byline"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#f6f4ee",
"contrastRatio": 2.95,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"byline\"><strong>By Jennifer Park</strong> \u00b7 3 hr ago</div>",
"target": [
"a[href$=\"#story-3\"] > .byline"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#f6f4ee",
"contrastRatio": 2.95,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"byline\"><strong>By Dr. Amelia Russo</strong> \u00b7 5 hr ago</div>",
"target": [
"a[href$=\"#story-4\"] > .byline"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#f6f4ee",
"contrastRatio": 2.95,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"byline\"><strong>By Olivia Bennett</strong> \u00b7 7 hr ago</div>",
"target": [
"a[href$=\"#story-5\"] > .byline"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#f6f4ee",
"contrastRatio": 2.95,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"byline\"><strong>By Rajiv Khanna</strong> \u00b7 9 hr ago</div>",
"target": [
"a[href$=\"#story-6\"] > .byline"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#f6f4ee",
"contrastRatio": 2.95,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"byline\"><strong>By Hannah Lindstrom</strong> \u00b7 11 hr ago</div>",
"target": [
"a[href$=\"#story-7\"] > .byline"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#f6f4ee",
"contrastRatio": 2.95,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"byline\" style=\"margin-top:14px;\"><strong>By Investigative Team \u00b7 Led by Aaron Goldstein & Maria Salinas</strong> \u00b7 14 min read \u00b7 6 documents released</div>",
"target": [
".feature-main > .byline"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a88332",
"bgColor": "#f6f4ee",
"contrastRatio": 3.2,
"fontSize": "7.5pt (10px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.2 (foreground color: #a88332, background color: #f6f4ee, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"category\">Long Read</div>",
"target": [
".feature-item:nth-child(2) > .category"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.2 (foreground color: #a88332, background color: #f6f4ee, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a88332",
"bgColor": "#f6f4ee",
"contrastRatio": 3.2,
"fontSize": "7.5pt (10px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.2 (foreground color: #a88332, background color: #f6f4ee, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"category\">Public Records</div>",
"target": [
".feature-item:nth-child(3) > .category"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.2 (foreground color: #a88332, background color: #f6f4ee, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a88332",
"bgColor": "#f6f4ee",
"contrastRatio": 3.2,
"fontSize": "7.5pt (10px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.2 (foreground color: #a88332, background color: #f6f4ee, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"category\">Follow-up</div>",
"target": [
".feature-item:nth-child(4) > .category"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.2 (foreground color: #a88332, background color: #f6f4ee, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a88332",
"bgColor": "#f6f4ee",
"contrastRatio": 3.2,
"fontSize": "7.5pt (10px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.2 (foreground color: #a88332, background color: #f6f4ee, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"category\">Tip Line</div>",
"target": [
".feature-item:nth-child(5) > .category"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.2 (foreground color: #a88332, background color: #f6f4ee, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"opinion-card\">",
"target": [
".opinion-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"role\">Tech & Policy</div>",
"target": [
"a[href$=\"#op-1\"] > .role"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"opinion-card\">",
"target": [
".opinion-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"role\">Media Critic</div>",
"target": [
"a[href$=\"#op-2\"] > .role"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"opinion-card\">",
"target": [
".opinion-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"role\">Economist</div>",
"target": [
"a[href$=\"#op-3\"] > .role"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"opinion-card\">",
"target": [
".opinion-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"role\">Industry</div>",
"target": [
"a[href$=\"#op-4\"] > .role"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#f6f4ee",
"contrastRatio": 2.95,
"fontSize": "9.8pt (13px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"customizer-preview\">",
"target": [
".customizer-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"preview-empty\">Select topics and a frequency to preview your alerts.</div>",
"target": [
".preview-empty"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #8a8f97, background color: #f6f4ee, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testimonial\">",
"target": [
".testimonial:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"role\">Subscriber since 2018 \u00b7 Portland, OR</div>",
"target": [
".testimonial:nth-child(1) > .author > div > .role"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testimonial\">",
"target": [
".testimonial:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"role\">Subscriber since 2023 \u00b7 Houston, TX</div>",
"target": [
".testimonial:nth-child(2) > .author > div > .role"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testimonial\">",
"target": [
".testimonial:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"role\">Subscriber since 2020 \u00b7 Atlanta, GA</div>",
"target": [
".testimonial:nth-child(3) > .author > div > .role"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-block\">",
"target": [
".side-block:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small>Economy \u00b7 184K views</small>",
"target": [
"li:nth-child(1) > div > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-block\">",
"target": [
".side-block:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small>Climate \u00b7 142K views</small>",
"target": [
"li:nth-child(2) > div > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-block\">",
"target": [
".side-block:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small>Investigations \u00b7 128K views</small>",
"target": [
"li:nth-child(3) > div > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-block\">",
"target": [
".side-block:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small>Business \u00b7 96K views</small>",
"target": [
"li:nth-child(4) > div > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-block\">",
"target": [
".side-block:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small>Education \u00b7 71K views</small>",
"target": [
"li:nth-child(5) > div > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-block\" id=\"newsletters\">",
"target": [
"#newsletters"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span style=\"color:var(--muted); font-size:11px;\">6 AM weekdays \u00b7 Top stories + weather</span>",
"target": [
"li:nth-child(1) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-block\" id=\"newsletters\">",
"target": [
"#newsletters"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span style=\"color:var(--muted); font-size:11px;\">Daily \u00b7 Politics & policy</span>",
"target": [
"li:nth-child(2) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-block\" id=\"newsletters\">",
"target": [
"#newsletters"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span style=\"color:var(--muted); font-size:11px;\">Weekly \u00b7 Environment & energy</span>",
"target": [
"li:nth-child(3) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#ffffff",
"contrastRatio": 3.25,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-block\" id=\"newsletters\">",
"target": [
"#newsletters"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span style=\"color:var(--muted); font-size:11px;\">Sunday \u00b7 Best of the magazine</span>",
"target": [
"li:nth-child(4) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.25 (foreground color: #8a8f97, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8a8f97",
"bgColor": "#efece2",
"contrastRatio": 2.75,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-block\" style=\"background:var(--paper-alt); text-align:center; border-style:dashed;\">",
"target": [
".side-block:nth-child(5)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.75 (foreground color: #8a8f97, background color: #efece2, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"meta\">3,418 votes \u00b7 Closes Friday</div>",
"target": [
".side-block:nth-child(5) > .meta"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.75 (foreground color: #8a8f97, background color: #efece2, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
},
{
"id": "target-size",
"impact": "serious",
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"description": "Ensure touch targets have sufficient size and space",
"help": "All touch targets must be 24px large, or leave sufficient space",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 157.3,
"height": 18.6
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has insufficient size (157.3px by 18.6px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 16.2,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#archive\">Archive</a>",
"target": [
"li:nth-child(9) > a[href$=\"#archive\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 16.2px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#gallery\">View all galleries \u2192</a>",
"target": [
"a[href$=\"#gallery\"]"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size (157.3px by 18.6px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 16.2px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"messageKey": "partiallyObscured",
"minSize": 24,
"width": 378,
"height": 21.3
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"active\">Home</a>",
"target": [
".active[href=\"#\"]"
]
},
{
"html": "<a href=\"#national\">National</a>",
"target": [
"li:nth-child(2) > a[href$=\"#national\"]"
]
},
{
"html": "<a href=\"#world\">World</a>",
"target": [
"li:nth-child(3) > a[href$=\"#world\"]"
]
},
{
"html": "<a href=\"#politics\">Politics</a>",
"target": [
"li:nth-child(4) > a[href$=\"#politics\"]"
]
},
{
"html": "<a href=\"#business\">Business</a>",
"target": [
"li:nth-child(5) > a[href$=\"#business\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient size because it is partially obscured (smallest space is 378px by 21.3px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 21.4,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#world\">World</a>",
"target": [
"li:nth-child(3) > a[href$=\"#world\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 21.4px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button type=\"submit\" class=\"submit-btn\">Get My Alerts</button>",
"target": [
".submit-btn"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size because it is partially obscured (smallest space is 378px by 21.3px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 21.4px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"messageKey": "partiallyObscured",
"minSize": 24,
"width": 774,
"height": 17.7
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"active\">Home</a>",
"target": [
".active[href=\"#\"]"
]
},
{
"html": "<a href=\"#national\">National</a>",
"target": [
"li:nth-child(2) > a[href$=\"#national\"]"
]
},
{
"html": "<a href=\"#world\">World</a>",
"target": [
"li:nth-child(3) > a[href$=\"#world\"]"
]
},
{
"html": "<a href=\"#politics\">Politics</a>",
"target": [
"li:nth-child(4) > a[href$=\"#politics\"]"
]
},
{
"html": "<a href=\"#business\">Business</a>",
"target": [
"li:nth-child(5) > a[href$=\"#business\"]"
]
},
{
"html": "<a href=\"#weather\">Weather</a>",
"target": [
"li:nth-child(6) > a[href$=\"#weather\"]"
]
},
{
"html": "<a href=\"#live\" class=\"live\">Live</a>",
"target": [
".live"
]
},
{
"html": "<a href=\"#opinion\">Opinion</a>",
"target": [
"li:nth-child(8) > a[href$=\"#opinion\"]"
]
},
{
"html": "<a href=\"#archive\">Archive</a>",
"target": [
"li:nth-child(9) > a[href$=\"#archive\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient size because it is partially obscured (smallest space is 774px by 17.7px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 0,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#business\">Business</a>",
"target": [
"li:nth-child(5) > a[href$=\"#business\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 0px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<summary>Do you offer student, educator, or military discounts?</summary>",
"target": [
"details:nth-child(4) > summary"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size because it is partially obscured (smallest space is 774px by 17.7px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 0px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"messageKey": "partiallyObscured",
"minSize": 24,
"width": 222,
"height": 21.1
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"active\">Home</a>",
"target": [
".active[href=\"#\"]"
]
},
{
"html": "<a href=\"#national\">National</a>",
"target": [
"li:nth-child(2) > a[href$=\"#national\"]"
]
},
{
"html": "<a href=\"#world\">World</a>",
"target": [
"li:nth-child(3) > a[href$=\"#world\"]"
]
},
{
"html": "<a href=\"#politics\">Politics</a>",
"target": [
"li:nth-child(4) > a[href$=\"#politics\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient size because it is partially obscured (smallest space is 222px by 21.1px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 21,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#national\">National</a>",
"target": [
"li:nth-child(2) > a[href$=\"#national\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 21px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#download\" class=\"btn-secondary\">\ud83d\udcf1 Download the App</a>",
"target": [
".btn-secondary"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size because it is partially obscured (smallest space is 222px by 21.1px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 21px instead of at least 24px."
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 8938
},
{
"y": 576,
"height": 8938
},
{
"y": 1152,
"height": 8938
},
{
"y": 1728,
"height": 8938
},
{
"y": 2304,
"height": 8938
},
{
"y": 2880,
"height": 8938
},
{
"y": 3456,
"height": 8938
},
{
"y": 4032,
"height": 8938
},
{
"y": 4608,
"height": 8938
},
{
"y": 5184,
"height": 8938
},
{
"y": 5760,
"height": 8938
},
{
"y": 6336,
"height": 8938
},
{
"y": 6912,
"height": 8938
},
{
"y": 7488,
"height": 8938
},
{
"y": 8064,
"height": 8938
},
{
"y": 8218,
"height": 8938
}
],
"scans": 17,
"max_states": 512,
"settle_ms": 5000,
"page_timeout_seconds": 150,
"layout_stability": "consecutive 100ms size samples within one CSS pixel",
"animation_settling": "finite animations present when scroll resources are ready finish or are cancelled",
"interactive_states": "not exercised",
"horizontal_scroll": "not exercised"
}
}
System Prompt
You are a lead web developer at a top digital agency, tasked with creating a one-page website for a new client based on the given specifications, delivered as an HTML file. First non-whitespace char '<', last non-whitespace char '>'. Use the following services to generate placeholder images where needed:
- placehold.co (text): https://placehold.co/[{w}x{h}|{size}][/{bg-color}/{text-color}]?text={text}&font=[lato|lora|montserrat|noto sans|open sans|oswald|playfair display|poppins|pt sans|raleway|roboto|source sans|source sans pro]
- picsum.photos (photos): https://picsum.photos/[{w}/{h}|{size}]?[grayscale][&blur={1-10}]
- pravatar.cc (avatars): https://i.pravatar.cc/{size}?u={identifier}
Choose sizes appropriate to layout.
User Prompt
Create a **complete, polished, production-quality** primary web page for a new client in the "News/Weather/Information" sector.
Your goal is to generate the full HTML code for a page that is not just functional but also visually compelling, content-rich, and feels like a finished product ready for launch.
**Client & Category:**
- Industry: "News/Weather/Information"
- Description: News outlets, weather forecasts, breaking news, and general information resources.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "News/Weather/Information" category.
2. **Define Page:** Determine the most effective primary page type (e.g., homepage, service landing page, category portal) to showcase this fictional entity.
3. **Design:** Develop an opinionated, modern, and professional layout. Make distinct choices about structure and flow.
**Content & Structure Requirements (Deliver a COMPLETE page):**
- **Overall:** The final page must feel substantial and complete, with realistic amounts of text (multiple paragraphs per section where appropriate, avoid single sentences), well-integrated placeholder images, and logical flow. It should look like a real website a business would proudly use.
- **HEADER:** Include the invented site name, tagline, a logo placeholder image, and a primary navigation bar. Ensure the navigation has **at least 5-7 clearly defined, relevant links** including: "National", "Archive", "Opinion".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "News/Weather/Information" category. Consider themes similar to: "National News", "Current Events", "Breaking Stories".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "correspondent", "fact-checking", "investigative".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Download App", "Follow Topic", "Get Alerts".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "News/Weather/Information" sector. Ideas similar but not limited to: "news alert customizer".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "photo galleries", "top headlines", "video highlights".
- **FOOTER:** Include a professional footer with invented contact details, copyright (current year), social media links, and standard links (Privacy, Terms).
- **MODERN WEB PATTERNS:** Include modern web patterns like testimonial cards, feature grids, or FAQ accordions where appropriate.