Xiaomi MiMo V2.6 Flash – News Weather Information

via Io Net · Generated

  • AIMAC Debt 15.11
  • Cost $0.01
  • Total Violations 80
  • HTML Size 93 KB
  • Em Dashes 43

Screenshot

View Xiaomi MiMo V2.6 Flash News Weather Information page View Live Page

Accessibility Issues Found

1 Critical 79 Serious

  • aria-required-children critical 1 instance

    Certain ARIA roles must contain particular children

    Example HTML <div class="city-bar" role="tablist" aria-label="Choose a forecast city">
  • color-contrast serious 75 instances

    Elements must meet minimum color contrast ratio thresholds

    Example HTML <div class="ticker__item">City Council approves $214M stormwater resilience package in 7–2 vote</div>
  • target-size serious 4 instances

    All touch targets must be 24px large, or leave sufficient space

    Example HTML <a href="#"><span class="tag out">Health</span>Cooling Centers Open Across Northgate Ahead of a Heat Advisory</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" />
<title>Meridian Signal — Read the Sky. Read the Room.</title>
<meta name="description" content="Meridian Signal is a metropolitan newsroom delivering breaking news, verified weather forecasts, local reporting, and opinion & analysis." />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,600;0,700;0,800;1,600&family=Oswald:wght@400;500;600;700&family=Lato:ital,wght@0,300;0,400;0,700;0,900;1,400&display=swap" rel="stylesheet">
<style>
/* ============ TOKENS ============ */
:root{
  --ink:#0E1116;
  --ink-2:#171C23;
  --ink-3:#232A33;
  --paper:#FAF7F2;
  --paper-2:#F1ECE3;
  --line:#DFD8CC;
  --line-dark:#2C343E;
  --muted:#6C6559;
  --muted-d:#9AA4B1;
  --flare:#E4552B;
  --flare-d:#C4421D;
  --sky:#2E8FB5;
  --sky-l:#8ED2EA;
  --gold:#E8A317;
  --ok:#2F9E6B;
  --serif:'Playfair Display',Georgia,serif;
  --cond:'Oswald','Arial Narrow',sans-serif;
  --sans:'Lato',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --wrap:1260px;
  --r:4px;
  --shadow:0 18px 44px -24px rgba(14,17,22,.45);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-size:17px;line-height:1.7;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button,input,select{font-family:inherit}
h1,h2,h3,h4{margin:0;line-height:1.12;letter-spacing:-.01em}
p{margin:0 0 1.05em}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 26px}
.kicker{
  font-family:var(--cond);font-weight:600;font-size:12px;letter-spacing:.19em;
  text-transform:uppercase;color:var(--flare);display:inline-block;
}
.kicker.sky{color:var(--sky)}
.kicker.mute{color:var(--muted)}
.lede{font-size:1.14rem;color:#4A4437;font-weight:300}
.small{font-size:14px}
.mono{font-family:var(--cond);letter-spacing:.06em;text-transform:uppercase;font-size:12.5px}

/* buttons */
.btn{
  display:inline-flex;align-items:center;gap:9px;font-family:var(--cond);
  font-weight:600;letter-spacing:.13em;text-transform:uppercase;font-size:12.5px;
  padding:13px 22px;border:1.5px solid var(--ink);background:var(--ink);color:#fff;
  cursor:pointer;transition:.25s;border-radius:2px;
}
.btn:hover{background:var(--flare);border-color:var(--flare);transform:translateY(-2px)}
.btn--flare{background:var(--flare);border-color:var(--flare)}
.btn--flare:hover{background:var(--ink);border-color:var(--ink)}
.btn--ghost{background:transparent;color:var(--ink)}
.btn--ghost:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn--light{background:#fff;border-color:#fff;color:var(--ink)}
.btn--light:hover{background:var(--flare);border-color:var(--flare);color:#fff}
.btn--outline-l{background:transparent;color:#fff;border-color:rgba(255,255,255,.45)}
.btn--outline-l:hover{background:#fff;color:var(--ink);border-color:#fff}
.link-more{
  font-family:var(--cond);font-weight:600;font-size:12.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--flare);border-bottom:2px solid var(--flare);
  padding-bottom:2px;transition:.2s;
}
.link-more:hover{color:var(--ink);border-color:var(--ink)}

/* ============ TOP BAR + TICKER ============ */
.topbar{background:#05070A;color:#B9C1CB;font-family:var(--cond);font-size:12px;letter-spacing:.1em;text-transform:uppercase}
.topbar .wrap{display:flex;justify-content:space-between;align-items:center;gap:20px;height:40px}
.topbar .tb-left{display:flex;gap:22px;align-items:center}
.live{display:inline-flex;align-items:center;gap:7px;color:#fff}
.dot{width:8px;height:8px;border-radius:50%;background:var(--flare);box-shadow:0 0 0 0 rgba(228,85,43,.7);animation:pulse 1.9s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 9px rgba(228,85,43,0)}100%{box-shadow:0 0 0 0 rgba(228,85,43,0)}}
.topbar a:hover{color:#fff}
.tb-right{display:flex;gap:20px;align-items:center}
.tb-hide{display:flex;gap:20px}

.ticker{background:var(--flare);color:#fff;display:flex;align-items:stretch;overflow:hidden;height:38px}
.ticker__label{
  background:var(--ink);color:#fff;font-family:var(--cond);font-weight:600;font-size:12px;
  letter-spacing:.2em;display:flex;align-items:center;padding:0 16px;flex:0 0 auto;z-index:2;
}
.ticker__view{overflow:hidden;flex:1;display:flex;align-items:center}
.ticker__track{display:flex;width:max-content;animation:slide 46s linear infinite}
.ticker__view:hover .ticker__track{animation-play-state:paused}
.ticker__item{font-family:var(--cond);font-size:13px;letter-spacing:.05em;padding:0 26px;white-space:nowrap;display:flex;align-items:center;gap:12px}
.ticker__item::before{content:"◆";font-size:8px;opacity:.7}
@keyframes slide{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ============ MASTHEAD ============ */
.masthead{background:var(--ink);color:#F5F1E8;border-bottom:1px solid var(--line-dark)}
.masthead .wrap{display:flex;align-items:center;justify-content:space-between;gap:26px;padding-top:24px;padding-bottom:22px}
.brand{display:flex;align-items:center;gap:18px}
.brand__logo{width:240px;height:64px;border:1px solid #333B45;background:#12161C}
.brand__txt h1{font-family:var(--cond);font-weight:700;font-size:34px;letter-spacing:.06em;text-transform:uppercase}
.brand__txt h1 span{color:var(--flare)}
.brand__tag{
  font-family:var(--serif);font-style:italic;font-size:15.5px;color:#A8B0BB;margin-top:3px;
}
.mast-actions{display:flex;align-items:center;gap:14px}
.search{display:flex;align-items:center;background:#1B212A;border:1px solid #333B45;border-radius:2px}
.search input{background:none;border:0;outline:0;color:#F5F1E8;padding:11px 14px;width:190px;font-size:14px}
.search input::placeholder{color:#7E8794}
.search button{background:none;border:0;color:#8E97A4;padding:0 14px;cursor:pointer;height:42px}
.search button:hover{color:var(--flare)}

/* ============ NAV ============ */
.mainnav{background:var(--ink-2);border-bottom:3px solid var(--flare);position:sticky;top:0;z-index:60;box-shadow:0 10px 30px -22px #000}
.mainnav .wrap{display:flex;align-items:center;justify-content:space-between}
.nav-list{display:flex;list-style:none;margin:0;padding:0;flex-wrap:wrap}
.nav-list a{
  display:block;padding:16px 16px;font-family:var(--cond);font-weight:500;font-size:13.5px;
  letter-spacing:.13em;text-transform:uppercase;color:#D6D2C8;position:relative;transition:.2s;
}
.nav-list a::after{content:"";position:absolute;left:16px;right:16px;bottom:9px;height:2px;background:var(--flare);transform:scaleX(0);transform-origin:left;transition:.3s}
.nav-list a:hover,.nav-list a.active{color:#fff}
.nav-list a:hover::after,.nav-list a.active::after{transform:scaleX(1)}
.nav-cta{display:flex;align-items:center;gap:12px}
.burger{display:none;background:none;border:1px solid #39414B;color:#fff;padding:9px 12px;cursor:pointer;border-radius:2px}
.burger span{display:block;width:20px;height:2px;background:#fff;margin:4px 0;transition:.3s}

/* ============ HERO ============ */
.hero{padding:44px 0 52px;border-bottom:1px solid var(--line)}
.hero-grid{display:grid;grid-template-columns:1.62fr 1fr;gap:42px}
.lead__media{position:relative;overflow:hidden;border-radius:3px}
.lead__media img{width:100%;height:420px;object-fit:cover;transition:transform .8s ease}
.lead:hover .lead__media img{transform:scale(1.035)}
.badge{
  position:absolute;top:0;left:0;background:var(--flare);color:#fff;font-family:var(--cond);
  font-size:11.5px;letter-spacing:.2em;padding:8px 15px;text-transform:uppercase;
}
.lead h2{font-family:var(--serif);font-weight:800;font-size:clamp(2rem,3.4vw,3.05rem);margin:20px 0 14px;letter-spacing:-.02em}
.lead h2 a:hover{color:var(--flare)}
.lead .dek{font-size:1.16rem;color:#4A4437;font-weight:300;max-width:62ch}
.byline{
  display:flex;flex-wrap:wrap;align-items:center;gap:14px;font-family:var(--cond);
  font-size:12px;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);
  border-top:1px solid var(--line);padding-top:14px;margin-top:20px;
}
.byline .who{color:var(--ink);font-weight:600}
.byline .sep{width:4px;height:4px;background:var(--line);border-radius:50%}
.hero-side{display:flex;flex-direction:column;gap:0;border-top:3px solid var(--ink);padding-top:6px}
.hero-side__head{
  display:flex;justify-content:space-between;align-items:baseline;
  font-family:var(--cond);text-transform:uppercase;letter-spacing:.16em;font-size:12.5px;
  padding:12px 0 10px;border-bottom:1px solid var(--line);color:var(--ink);
}
.hero-side__head em{font-style:normal;color:var(--flare)}
.mini{display:grid;grid-template-columns:96px 1fr;gap:16px;padding:18px 0;border-bottom:1px solid var(--line);align-items:start}
.mini img{width:96px;height:74px;object-fit:cover;border-radius:2px}
.mini h4{font-family:var(--serif);font-size:1.06rem;font-weight:700;line-height:1.28;margin-bottom:7px}
.mini h4 a:hover{color:var(--flare)}
.mini .meta{font-family:var(--cond);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}
.mini .meta b{color:var(--sky)}
.hero-side__promo{
  margin-top:22px;background:var(--ink);color:#EDE8DE;padding:22px 22px 24px;border-radius:3px;
}
.hero-side__promo h4{font-family:var(--serif);font-size:1.35rem;margin-bottom:8px}
.hero-side__promo p{font-size:14.5px;color:#A8B0BB;margin-bottom:16px}

/* ============ SECTION HEADS ============ */
.sec{padding:64px 0}
.sec--tint{background:var(--paper-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:28px;margin-bottom:34px;border-bottom:2px solid var(--ink);padding-bottom:16px}
.sec-head h2{font-family:var(--serif);font-weight:800;font-size:clamp(1.75rem,3vw,2.5rem);letter-spacing:-.02em}
.sec-head p{margin:9px 0 0;max-width:66ch;color:var(--muted);font-size:15.5px}
.sec-head--dark{border-color:rgba(255,255,255,.22)}

/* ============ LATEST + SIDEBAR ============ */
.latest-grid{display:grid;grid-template-columns:1fr 340px;gap:46px}
.feed{list-style:none;margin:0;padding:0}
.feed li{border-bottom:1px solid var(--line);padding:22px 0;display:grid;grid-template-columns:88px 1fr;gap:24px;align-items:start}
.feed li:first-child{padding-top:0}
.feed .time{font-family:var(--cond);font-size:12px;letter-spacing:.1em;color:var(--flare);text-transform:uppercase;padding-top:4px}
.feed .time span{display:block;color:var(--muted);letter-spacing:.08em}
.feed h3{font-family:var(--serif);font-size:1.3rem;font-weight:700;margin-bottom:8px}
.feed h3 a:hover{color:var(--flare)}
.feed p{font-size:15.5px;color:#5B5449;margin:0}
.tag{
  display:inline-block;font-family:var(--cond);font-size:10.5px;letter-spacing:.16em;
  text-transform:uppercase;background:var(--ink);color:#fff;padding:3px 9px;margin-right:9px;vertical-align:2px;
}
.tag.sky{background:var(--sky)}.tag.gold{background:var(--gold);color:var(--ink)}.tag.out{background:none;color:var(--muted);border:1px solid var(--line)}
.feed-cta{display:flex;gap:14px;flex-wrap:wrap;margin-top:30px}

.sidebar{display:flex;flex-direction:column;gap:26px}
.card{background:#fff;border:1px solid var(--line);border-radius:3px}
.card__head{
  font-family:var(--cond);font-size:13px;letter-spacing:.18em;text-transform:uppercase;
  padding:14px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;
}
.card__head.hot{background:var(--flare);color:#fff;border-color:var(--flare)}
.card__head.dark{background:var(--ink);color:#fff;border-color:var(--ink)}
.card__body{padding:18px 20px 20px}
.trending{list-style:none;margin:0;padding:0;counter-reset:t}
.trending li{counter-increment:t;display:grid;grid-template-columns:34px 1fr;gap:14px;padding:13px 0;border-bottom:1px dashed var(--line)}
.trending li:last-child{border-bottom:0;padding-bottom:0}
.trending li::before{
  content:counter(t,decimal-leading-zero);font-family:var(--cond);font-weight:700;font-size:22px;
  color:var(--flare);line-height:1;
}
.trending a{font-family:var(--serif);font-weight:600;font-size:1rem;line-height:1.35}
.trending a:hover{color:var(--flare)}
.trending .m{font-family:var(--cond);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-top:5px;display:block}
.outlook{display:flex;justify-content:space-between;align-items:center;padding:11px 0;border-bottom:1px dashed var(--line)}
.outlook:last-of-type{border-bottom:0}
.outlook .city{font-family:var(--cond);font-size:13px;letter-spacing:.08em;text-transform:uppercase}
.outlook .cond{font-size:12.5px;color:var(--muted)}
.outlook .tmp{font-family:var(--cond);font-size:22px;font-weight:600}
.outlook .ico{font-size:20px}
.events{list-style:none;margin:0;padding:0}
.events li{display:grid;grid-template-columns:52px 1fr;gap:14px;padding:13px 0;border-bottom:1px dashed var(--line);align-items:center}
.events li:last-child{border-bottom:0}
.date-chip{
  background:var(--paper-2);border:1px solid var(--line);text-align:center;padding:5px 0;border-radius:2px;
  font-family:var(--cond);line-height:1.15;
}
.date-chip b{display:block;font-size:17px;color:var(--flare)}
.date-chip span{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.events .ev{font-weight:700;font-size:14.5px;line-height:1.35}
.events .ev span{display:block;font-weight:400;font-size:12.5px;color:var(--muted);margin-top:2px}

/* ============ WEATHER ============ */
.weather{background:linear-gradient(180deg,#0B1117 0%,#111B24 60%,#0D151C 100%);color:#E7EEF4;position:relative;overflow:hidden}
.weather::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(900px 420px at 78% 8%,rgba(46,143,181,.28),transparent 65%),
             radial-gradient(700px 380px at 10% 92%,rgba(228,85,43,.16),transparent 60%);
  pointer-events:none;
}
.weather .wrap{position:relative;z-index:2}
.weather .sec-head h2{color:#fff}
.weather .sec-head p{color:#9BAABA}
.city-bar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:26px}
.city-btn{
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.16);color:#CBD6E0;
  font-family:var(--cond);font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;
  padding:11px 18px;cursor:pointer;transition:.22s;border-radius:2px;
}
.city-btn:hover{border-color:var(--sky-l);color:#fff}
.city-btn.on{background:var(--sky);border-color:var(--sky);color:#06131A;font-weight:600}
.unit-toggle{margin-left:auto;display:flex;border:1px solid rgba(255,255,255,.18);border-radius:2px;overflow:hidden}
.unit-toggle button{
  background:none;border:0;color:#9BAABA;font-family:var(--cond);font-size:13px;letter-spacing:.1em;
  padding:9px 16px;cursor:pointer;transition:.2s;
}
.unit-toggle button.on{background:#fff;color:var(--ink);font-weight:600}
.wx-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:26px}
.wx-now{
  background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.14);
  border-radius:4px;padding:30px 32px;backdrop-filter:blur(6px);
}
.wx-now__top{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap}
.wx-place{font-family:var(--cond);font-size:14px;letter-spacing:.2em;text-transform:uppercase;color:var(--sky-l)}
.wx-stamp{font-family:var(--cond);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:#8FA0B0}
.wx-temp{display:flex;align-items:center;gap:20px;margin:14px 0 6px}
.wx-temp .ico{font-size:64px;line-height:1;filter:drop-shadow(0 8px 18px rgba(0,0,0,.4))}
.wx-temp .deg{font-family:var(--cond);font-weight:600;font-size:clamp(3.4rem,7vw,5.2rem);line-height:.9;letter-spacing:-.03em}
.wx-temp .deg sup{font-size:.4em;vertical-align:super;color:var(--sky-l)}
.wx-cond{font-family:var(--serif);font-size:1.4rem;font-weight:600;color:#fff}
.wx-sub{color:#9BAABA;font-size:15px;margin-top:4px}
.wx-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;background:rgba(255,255,255,.12);margin-top:26px;border-radius:3px;overflow:hidden}
.wx-stat{background:#101A22;padding:14px 12px;text-align:center}
.wx-stat b{display:block;font-family:var(--cond);font-size:19px;color:#fff;letter-spacing:.02em}
.wx-stat span{font-family:var(--cond);font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:#7E8E9D}
.wx-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:24px}
.wx-side{display:flex;flex-direction:column;gap:26px}
.radar{position:relative;border:1px solid rgba(255,255,255,.14);border-radius:4px;overflow:hidden}
.radar img{height:210px;width:100%;object-fit:cover;opacity:.92}
.radar__ov{
  position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;
  padding:16px 18px;background:linear-gradient(180deg,rgba(6,12,17,.15),rgba(6,12,17,.86));
}
.radar__ov b{font-family:var(--cond);letter-spacing:.16em;text-transform:uppercase;font-size:12px;color:var(--sky-l)}
.radar__ov span{font-family:var(--serif);font-size:1.1rem;color:#fff}
.broadcast{background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.14);border-radius:4px;padding:22px}
.broadcast h4{font-family:var(--serif);font-size:1.22rem;color:#fff;margin-bottom:8px}
.broadcast p{font-size:14.5px;color:#9BAABA;margin-bottom:16px}
.play{
  display:flex;align-items:center;gap:14px;background:none;border:0;color:#fff;cursor:pointer;padding:0;
}
.play .circ{
  width:52px;height:52px;border-radius:50%;background:var(--flare);display:grid;place-items:center;transition:.25s;flex:0 0 auto;
}
.play:hover .circ{transform:scale(1.08);background:#fff}
.play:hover .circ svg{fill:var(--flare)}
.play .circ svg{fill:#fff;transition:.25s}
.play .lbl{font-family:var(--cond);font-size:12.5px;letter-spacing:.15em;text-transform:uppercase;text-align:left}
.play .lbl span{display:block;color:#8FA0B0;letter-spacing:.1em;font-size:11px}
.eq{display:none;gap:3px;align-items:flex-end;height:22px}
.eq.on{display:flex}
.eq i{width:3px;background:var(--sky-l);animation:eq .9s infinite ease-in-out}
.eq i:nth-child(2){animation-delay:.15s}.eq i:nth-child(3){animation-delay:.3s}
.eq i:nth-child(4){animation-delay:.45s}.eq i:nth-child(5){animation-delay:.6s}
@keyframes eq{0%,100%{height:5px}50%{height:22px}}
.forecast{
  margin-top:26px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.14);
  border-radius:4px;padding:24px 26px;
}
.forecast__head{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.forecast__head h3{font-family:var(--cond);font-size:14px;letter-spacing:.2em;text-transform:uppercase;color:#fff}
.forecast__head span{font-size:14px;color:#9BAABA}
.days{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
.day{
  background:#0E1720;border:1px solid rgba(255,255,255,.1);border-radius:3px;padding:18px 12px;
  text-align:center;transition:.3s;
}
.day:hover{transform:translateY(-5px);border-color:var(--sky);background:#12202B}
.day .d{font-family:var(--cond);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--sky-l)}
.day .ico{font-size:34px;margin:12px 0 8px}
.day .hilo{font-family:var(--cond);font-size:17px;color:#fff}
.day .hilo em{font-style:normal;color:#7E8E9D;font-size:14px}
.day .txt{font-size:12.5px;color:#9BAABA;margin-top:6px;line-height:1.4}
.day .pop{font-family:var(--cond);font-size:11.5px;letter-spacing:.1em;color:var(--sky-l);margin-top:8px}
.wx-note{
  display:grid;grid-template-columns:1fr 1fr;gap:34px;margin-top:34px;padding-top:30px;
  border-top:1px solid rgba(255,255,255,.14);
}
.wx-note p{font-size:15.5px;color:#A7B4C1}
.wx-note h4{font-family:var(--serif);font-size:1.3rem;color:#fff;margin-bottom:10px}

/* ============ FEATURES ============ */
.feat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}
.feat{background:#fff;border:1px solid var(--line);border-radius:3px;overflow:hidden;display:flex;flex-direction:column;transition:.3s}
.feat:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.feat img{height:220px;width:100%;object-fit:cover}
.feat__body{padding:24px 24px 26px;display:flex;flex-direction:column;flex:1}
.feat h3{font-family:var(--serif);font-size:1.42rem;font-weight:700;margin:12px 0 10px;line-height:1.24}
.feat h3 a:hover{color:var(--flare)}
.feat p{font-size:15.4px;color:#5B5449}
.feat .foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px}
.feat .foot .mono{color:var(--muted);font-size:11.5px}
.feat--wide{grid-column:span 3;display:grid;grid-template-columns:1.15fr 1fr}
.feat--wide img{height:100%;min-height:340px}
.feat--wide .feat__body{padding:38px 40px}
.feat--wide h3{font-size:clamp(1.7rem,2.6vw,2.3rem)}

/* ============ OPINION ============ */
.opinion{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}
.col-card{background:#fff;border:1px solid var(--line);border-top:4px solid var(--ink);padding:26px 26px 28px;border-radius:3px;display:flex;flex-direction:column;transition:.3s}
.col-card:hover{border-top-color:var(--flare);transform:translateY(-5px);box-shadow:var(--shadow)}
.col-card .who{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.col-card .who img{width:56px;height:56px;border-radius:50%;object-fit:cover;border:2px solid var(--paper-2)}
.col-card .who b{display:block;font-family:var(--cond);font-size:14px;letter-spacing:.1em;text-transform:uppercase}
.col-card .who span{font-size:12.5px;color:var(--muted);font-family:var(--cond);letter-spacing:.08em;text-transform:uppercase}
.col-card h3{font-family:var(--serif);font-size:1.34rem;font-weight:700;margin-bottom:12px;line-height:1.28}
.col-card p{font-size:15.4px;color:#5B5449}
.col-card .foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}
.pullquote{
  margin-top:40px;background:var(--ink);color:#EDE8DE;padding:44px 46px;border-radius:4px;
  display:grid;grid-template-columns:auto 1fr;gap:32px;align-items:center;
}
.pullquote .mark{font-family:var(--serif);font-size:110px;line-height:.7;color:var(--flare)}
.pullquote blockquote{margin:0;font-family:var(--serif);font-size:clamp(1.3rem,2.2vw,1.85rem);font-style:italic;line-height:1.42}
.pullquote cite{display:block;margin-top:16px;font-family:var(--cond);font-style:normal;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--sky-l)}

/* ============ LOCAL ============ */
.local-grid{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center}
.local-media{position:relative}
.local-media img{border-radius:3px;height:430px;width:100%;object-fit:cover}
.local-media .stat{
  position:absolute;bottom:-22px;right:-14px;background:var(--flare);color:#fff;padding:18px 24px;border-radius:3px;
  box-shadow:var(--shadow);max-width:230px;
}
.local-media .stat b{display:block;font-family:var(--cond);font-size:34px;line-height:1}
.local-media .stat span{font-size:13px;line-height:1.4;display:block;margin-top:4px}
.local-list{list-style:none;margin:22px 0 26px;padding:0}
.local-list li{padding:14px 0 14px 26px;border-bottom:1px solid var(--line);position:relative;font-size:15.6px;color:#4A4437}
.local-list li::before{content:"";position:absolute;left:0;top:22px;width:11px;height:2px;background:var(--flare)}
.local-list li b{color:var(--ink)}

/* ============ POLL ============ */
.poll-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:44px;align-items:start}
.poll{background:#fff;border:1px solid var(--line);border-radius:4px;overflow:hidden;box-shadow:var(--shadow)}
.poll__head{background:var(--ink);color:#fff;padding:20px 28px;display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}
.poll__head h3{font-family:var(--cond);font-size:15px;letter-spacing:.18em;text-transform:uppercase}
.poll__head span{font-family:var(--cond);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--sky-l)}
.poll__body{padding:28px}
.poll__q{font-family:var(--serif);font-size:1.35rem;font-weight:700;margin-bottom:6px}
.poll__sub{font-size:14.5px;color:var(--muted);margin-bottom:22px}
.opt{
  position:relative;display:block;border:1px solid var(--line);border-radius:3px;padding:14px 18px;
  margin-bottom:12px;cursor:pointer;transition:.22s;overflow:hidden;background:var(--paper);
}
.opt:hover{border-color:var(--ink)}
.opt input{position:absolute;opacity:0;pointer-events:none}
.opt .bar{position:absolute;left:0;top:0;bottom:0;width:0;background:rgba(46,143,181,.18);transition:width .9s cubic-bezier(.22,1,.36,1);z-index:0}
.opt .row{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:14px}
.opt .lbl{font-size:15.6px;font-weight:700}
.opt .pct{font-family:var(--cond);font-size:17px;color:var(--ink);opacity:0;transition:.5s}
.voted .opt .pct{opacity:1}
.voted .opt{cursor:default}
.opt.mine{border-color:var(--flare)}
.opt.mine .bar{background:rgba(228,85,43,.2)}
.opt .count{font-family:var(--cond);font-size:11.5px;letter-spacing:.1em;color:var(--muted);display:none}
.voted .opt .count{display:block}
.poll__foot{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}
.poll__foot .tot{font-family:var(--cond);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.poll__note{font-size:13px;color:var(--muted);margin-top:14px}
.poll-side h3{font-family:var(--serif);font-size:1.6rem;margin-bottom:14px}
.poll-side p{color:#5B5449;font-size:15.6px}
.pulse-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:26px}
.pulse-stats div{background:#fff;border:1px solid var(--line);padding:18px 16px;border-radius:3px;text-align:center}
.pulse-stats b{display:block;font-family:var(--cond);font-size:30px;color:var(--flare);line-height:1}
.pulse-stats span{font-family:var(--cond);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}

/* ============ FAQ ============ */
.faq{max-width:920px;margin:0 auto}
.acc{border-bottom:1px solid var(--line)}
.acc__btn{
  width:100%;background:none;border:0;text-align:left;padding:22px 46px 22px 0;cursor:pointer;
  font-family:var(--serif);font-size:1.16rem;font-weight:700;color:var(--ink);position:relative;transition:.2s;
}
.acc__btn:hover{color:var(--flare)}
.acc__btn::after,.acc__btn::before{
  content:"";position:absolute;right:8px;top:50%;background:var(--flare);transition:.3s;
}
.acc__btn::before{width:16px;height:2.5px;margin-top:-1.2px}
.acc__btn::after{width:2.5px;height:16px;margin-top:-8px;right:14.5px}
.acc.open .acc__btn::after{transform:rotate(90deg);opacity:0}
.acc__panel{max-height:0;overflow:hidden;transition:max-height .45s ease}
.acc__panel div{padding:0 40px 24px 0;color:#5B5449;font-size:15.7px}

/* ============ TRUST / TESTIMONIALS ============ */
.tests{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.test{background:#fff;border:1px solid var(--line);padding:26px;border-radius:3px;position:relative}
.test::before{content:"“";position:absolute;top:2px;right:18px;font-family:var(--serif);font-size:70px;color:var(--paper-2);line-height:1}
.test p{font-family:var(--serif);font-style:italic;font-size:1.05rem;color:#3E392F;position:relative;z-index:1}
.test .who{display:flex;align-items:center;gap:12px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.test .who img{width:44px;height:44px;border-radius:50%}
.test .who b{display:block;font-family:var(--cond);font-size:13px;letter-spacing:.1em;text-transform:uppercase}
.test .who span{font-size:12.5px;color:var(--muted)}
.awards{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-top:40px;padding-top:34px;border-top:1px solid var(--line)}
.awards div{
  font-family:var(--cond);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);
  border:1px solid var(--line);padding:12px 20px;border-radius:2px;background:#fff;
}

/* ============ NEWSLETTER ============ */
.news-cta{background:var(--flare);color:#fff;padding:60px 0}
.news-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:46px;align-items:center}
.news-grid h2{font-family:var(--serif);font-size:clamp(1.9rem,3.2vw,2.7rem);font-weight:800}
.news-grid p{font-size:16.5px;color:rgba(255,255,255,.9);margin-top:14px;max-width:56ch}
.news-form{background:#fff;padding:30px;border-radius:4px;color:var(--ink);box-shadow:0 24px 50px -28px rgba(0,0,0,.6)}
.news-form h3{font-family:var(--cond);font-size:15px;letter-spacing:.17em;text-transform:uppercase}
.news-form p{color:var(--muted);font-size:14.4px;margin:8px 0 18px}
.field{display:flex;gap:10px;flex-wrap:wrap}
.field input{
  flex:1;min-width:200px;border:1.5px solid var(--line);background:var(--paper);padding:14px 16px;
  font-size:15.4px;border-radius:2px;outline:0;transition:.2s;
}
.field input:focus{border-color:var(--ink);background:#fff}
.picks{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.pick{position:relative}
.pick input{position:absolute;opacity:0;pointer-events:none}
.pick span{
  display:inline-block;border:1px solid var(--line);padding:7px 14px;border-radius:40px;cursor:pointer;
  font-family:var(--cond);font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;transition:.2s;
}
.pick input:checked + span{background:var(--ink);color:#fff;border-color:var(--ink)}
.pick span:hover{border-color:var(--ink)}
.form-msg{margin-top:14px;font-family:var(--cond);font-size:12.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--ok);display:none}
.form-msg.show{display:block}

/* ============ FOOTER ============ */
footer{background:var(--ink);color:#A8B0BB;padding:58px 0 0;font-size:15px}
.f-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:40px;padding-bottom:44px;border-bottom:1px solid var(--line-dark)}
.f-brand img{width:210px;height:56px;border:1px solid #333B45;background:#12161C;margin-bottom:16px}
.f-brand .tag{font-family:var(--serif);font-style:italic;color:#EDE8DE;font-size:15.5px;background:none;border:0;padding:0;letter-spacing:0;text-transform:none}
.f-brand address{font-style:normal;line-height:1.9;margin-top:16px;font-size:14.5px}
.f-brand a:hover{color:var(--flare)}
.f-col h4{font-family:var(--cond);font-size:12.5px;letter-spacing:.19em;text-transform:uppercase;color:#fff;margin-bottom:18px;padding-bottom:12px;border-bottom:1px solid var(--line-dark)}
.f-col ul{list-style:none;margin:0;padding:0}
.f-col li{margin-bottom:11px}
.f-col a{font-size:14.6px;transition:.2s}
.f-col a:hover{color:var(--flare);padding-left:5px}
.socials{display:flex;gap:10px;margin-top:20px}
.socials a{
  width:38px;height:38px;border:1px solid #333B45;display:grid;place-items:center;border-radius:50%;transition:.25s;
}
.socials a svg{width:16px;height:16px;fill:#A8B0BB;transition:.25s}
.socials a:hover{background:var(--flare);border-color:var(--flare)}
.socials a:hover svg{fill:#fff}
.f-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;padding:22px 0 30px;font-family:var(--cond);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase}
.f-bottom ul{list-style:none;display:flex;gap:22px;margin:0;padding:0;flex-wrap:wrap}
.f-bottom a:hover{color:var(--flare)}
.f-legal{color:#6E7784}

/* reveal */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .8s ease,transform .8s ease}
.reveal.in{opacity:1;transform:none}

/* ============ RESPONSIVE ============ */
@media(max-width:1080px){
  .hero-grid,.latest-grid,.wx-grid,.poll-grid,.local-grid,.news-grid{grid-template-columns:1fr}
  .feat-grid,.opinion,.tests{grid-template-columns:repeat(2,1fr)}
  .feat--wide{grid-column:span 2;grid-template-columns:1fr}
  .feat--wide img{min-height:260px}
  .wx-note{grid-template-columns:1fr}
  .sidebar{flex-direction:row;flex-wrap:wrap}
  .sidebar > *{flex:1;min-width:280px}
  .f-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:860px){
  .nav-list{display:none;width:100%;flex-direction:column;padding-bottom:12px}
  .nav-list.open{display:flex}
  .nav-list a{padding:13px 0;border-bottom:1px solid #262D36}
  .mainnav .wrap{flex-wrap:wrap}
  .burger{display:block}
  .nav-cta .btn{display:none}
  .masthead .wrap{flex-direction:column;align-items:flex-start;gap:18px}
  .mast-actions{width:100%}
  .search{flex:1}.search input{width:100%}
  .tb-hide{display:none}
  .days{grid-template-columns:repeat(2,1fr)}
  .wx-stats{grid-template-columns:repeat(2,1fr)}
  .pullquote{grid-template-columns:1fr;padding:32px 28px}
  .pullquote .mark{font-size:70px}
  .local-media .stat{right:10px;bottom:12px}
}
@media(max-width:640px){
  body{font-size:16.5px}
  .feat-grid,.opinion,.tests,.f-grid{grid-template-columns:1fr}
  .feat--wide{grid-column:span 1}
  .feed li{grid-template-columns:1fr;gap:8px}
  .feed .time span{display:inline;margin-left:8px}
  .sec{padding:46px 0}
  .sec-head{flex-direction:column;align-items:flex-start}
  .brand__txt h1{font-size:27px}
  .brand__logo{width:180px;height:50px}
  .lead__media img{height:270px}
  .local-media img{height:290px}
  .pulse-stats{grid-template-columns:1fr}
}
</style>
</head>
<body id="top">

<!-- ================= TOP BAR ================= -->
<div class="topbar">
  <div class="wrap">
    <div class="tb-left">
      <span class="live"><i class="dot"></i> Live Newsroom</span>
      <span id="todayDate">Wednesday, June 11, 2025</span>
      <span class="tb-hide"><span>Harbor City 58° Light Rain</span></span>
    </div>
    <div class="tb-right">
      <a href="#newsletters">Newsletters</a>
      <a href="#faq">Help Desk</a>
      <a href="#newsletters">Subscribe</a>
    </div>
  </div>
</div>

<!-- ================= BREAKING TICKER ================= -->
<div class="ticker" role="region" aria-label="Breaking news ticker">
  <div class="ticker__label">Breaking</div>
  <div class="ticker__view">
    <div class="ticker__track">
      <div class="ticker__item">Coastal flood advisory extended through 9 p.m. for Harbor City and Eastvale shoreline</div>
      <div class="ticker__item">City Council approves $214M stormwater resilience package in 7–2 vote</div>
      <div class="ticker__item">Transit authority reroutes Line 6 as crews repair tunnel leak at Halsted</div>
      <div class="ticker__item">Markets close mixed: Signal Composite up 0.4%, energy futures slip 1.8%</div>
      <div class="ticker__item">Northgate Heat Advisory: cooling centers open at 11 a.m. across four districts</div>
      <div class="ticker__item" aria-hidden="true">Coastal flood advisory extended through 9 p.m. for Harbor City and Eastvale shoreline</div>
      <div class="ticker__item" aria-hidden="true">City Council approves $214M stormwater resilience package in 7–2 vote</div>
      <div class="ticker__item" aria-hidden="true">Transit authority reroutes Line 6 as crews repair tunnel leak at Halsted</div>
      <div class="ticker__item" aria-hidden="true">Markets close mixed: Signal Composite up 0.4%, energy futures slip 1.8%</div>
      <div class="ticker__item" aria-hidden="true">Northgate Heat Advisory: cooling centers open at 11 a.m. across four districts</div>
    </div>
  </div>
</div>

<!-- ================= MASTHEAD ================= -->
<header class="masthead">
  <div class="wrap">
    <a class="brand" href="#top" aria-label="Meridian Signal home">
      <img class="brand__logo" src="https://placehold.co/240x64/12161C/F5F1E8?text=MERIDIAN+SIGNAL&font=oswald" alt="Meridian Signal logo" width="240" height="64">
      <span class="brand__txt">
        <h1>Meridian <span>Signal</span></h1>
        <span class="brand__tag">Read the sky. Read the room.</span>
      </span>
    </a>
    <div class="mast-actions">
      <form class="search" role="search" onsubmit="return false;">
        <input type="search" placeholder="Search 142,000 stories…" aria-label="Search the newsroom">
        <button type="submit" aria-label="Submit search">
          <svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><circle cx="11" cy="11" r="7"/><path d="M20 20l-3.5-3.5"/></svg>
        </button>
      </form>
      <a class="btn btn--flare" href="#newsletters">Subscribe</a>
    </div>
  </div>
</header>

<!-- ================= NAV ================= -->
<nav class="mainnav" aria-label="Primary">
  <div class="wrap">
    <ul class="nav-list" id="navList">
      <li><a href="#top" class="active">Home</a></li>
      <li><a href="#weather">Weather</a></li>
      <li><a href="#breaking">Breaking News</a></li>
      <li><a href="#features">Long Reads</a></li>
      <li><a href="#local">Local</a></li>
      <li><a href="#opinion">Opinion &amp; Analysis</a></li>
      <li><a href="#poll">Reader Poll</a></li>
      <li><a href="#faq">Standards</a></li>
      <li><a href="#newsletters">Newsletters</a></li>
    </ul>
    <div class="nav-cta">
      <a class="btn btn--outline-l" href="#weather">Watch Weather</a>
      <button class="burger" id="burger" aria-label="Toggle navigation" aria-expanded="false"><span></span><span></span><span></span></button>
    </div>
  </div>
</nav>

<!-- ================= HERO ================= -->
<section class="hero">
  <div class="wrap hero-grid">
    <article class="lead reveal">
      <div class="lead__media">
        <span class="badge">Lead Investigation</span>
        <img src="https://picsum.photos/seed/meridian-harbor-storm/1200/760" alt="Dark storm clouds gathering over a working harbor at dusk" width="1200" height="760">
      </div>
      <div style="margin-top:22px">
        <span class="kicker">The Forecast Files · Part One</span>
        <h2><a href="#features">The 4 A.M. Forecast: How One Coastline Learned to Read Its Own Skies</a></h2>
        <p class="dek">For eighteen months, Meridian Signal reporters embedded with the volunteer weather spotters who fill the gaps between radar sweeps. What they found is a region quietly rewriting its emergency playbook — and a national alert system straining to keep pace with weather patterns that no longer behave like the historical record.</p>
        <p class="dek" style="font-size:1.02rem;color:#5B5449">Using 61 years of buoy data, 1.4 million hyperlocal readings and 74 interviews, our data desk reconstructed hour-by-hour how a routine coastal flood advisory became a mandatory evacuation order that arrived 40 minutes late to three neighborhoods.</p>
        <div class="byline">
          <span class="who">By Ilse Marchetti &amp; Dev Okonkwo</span>
          <i class="sep"></i><span>Investigations Desk</span>
          <i class="sep"></i><span>18 min read</span>
          <i class="sep"></i><span>Updated 6:12 a.m.</span>
        </div>
        <div style="display:flex;gap:14px;flex-wrap:wrap;margin-top:24px">
          <a class="btn" href="#features">Read the Investigation</a>
          <a class="btn btn--ghost" href="#weather">See the Radar</a>
        </div>
      </div>
    </article>

    <aside class="hero-side reveal">
      <div class="hero-side__head"><span>Also Developing</span><em>Updated Live</em></div>

      <article class="mini">
        <img src="https://picsum.photos/seed/ms-cityhall/300/220" alt="City hall steps" width="300" height="220">
        <div>
          <h4><a href="#breaking">Council's Stormwater Vote Clears Path for Harbor District Overhaul</a></h4>
          <p class="meta">City Hall · <b>14 min ago</b></p>
        </div>
      </article>

      <article class="mini">
        <img src="https://picsum.photos/seed/ms-markets/300/220" alt="Trading screens" width="300" height="220">
        <div>
          <h4><a href="#breaking">Energy Futures Slide as Refinery Outage Extends Into a Fourth Day</a></h4>
          <p class="meta">Business · <b>38 min ago</b></p>
        </div>
      </article>

      <article class="mini">
        <img src="https://picsum.photos/seed/ms-transit/300/220" alt="Commuter train platform" width="300" height="220">
        <div>
          <h4><a href="#local">Line 6 Reroute Adds 12 Minutes for 40,000 Daily Riders</a></h4>
          <p class="meta">Transit · <b>1 hr ago</b></p>
        </div>
      </article>

      <article class="mini" style="border-bottom:0">
        <img src="https://picsum.photos/seed/ms-science/300/220" alt="Researcher at a workstation" width="300" height="220">
        <div>
          <h4><a href="#features">The Satellite That Changed How We Warn a City About Heat</a></h4>
          <p class="meta">Science · <b>2 hrs ago</b></p>
        </div>
      </article>

      <div class="hero-side__promo">
        <span class="kicker" style="color:var(--sky-l)">Free for 14 days</span>
        <h4>The Signal Briefing, in your inbox by 6:30 a.m.</h4>
        <p>Weather outlook, the five headlines that matter, and one thing to watch. Written each morning by our duty editor — no push alerts you didn't ask for.</p>
        <a class="btn btn--light" href="#newsletters">Sign Up Free</a>
      </div>
    </aside>
  </div>
</section>

<!-- ================= BREAKING / LATEST + SIDEBAR ================= -->
<section class="sec" id="breaking">
  <div class="wrap">
    <div class="sec-head reveal">
      <div>
        <span class="kicker">Live Wire</span>
        <h2>Breaking News &amp; Latest Headlines</h2>
        <p>Our newsroom publishes to this feed the moment a headline is confirmed by two sources or an official record. Every item carries a timestamp and is updated — never silently rewritten — when the story changes.</p>
      </div>
      <a class="btn btn--ghost" href="#newsletters">Get Breaking Alerts</a>
    </div>

    <div class="latest-grid">
      <div>
        <ul class="feed">
          <li class="reveal">
            <div class="time">9:41 AM<span>2 min ago</span></div>
            <div>
              <h3><a href="#"><span class="tag">Weather</span>Flash Flood Watch Expanded to Eastvale as Rain Bands Stall Inland</a></h3>
              <p>The National Weather Service widened the watch through 11 p.m., citing stationary bands capable of producing two inches of rain in under three hours. Our meteorologists' model blend puts the highest 12-hour totals along the Ridgeway corridor, where soils are already saturated from last week's system.</p>
            </div>
          </li>
          <li class="reveal">
            <div class="time">9:18 AM<span>25 min ago</span></div>
            <div>
              <h3><a href="#"><span class="tag">City Hall</span>$214M Resilience Package Passes After Four Hours of Testimony</a></h3>
              <p>The 7–2 vote funds 11 miles of tidal barriers, upgraded pump stations and a voluntary buyout program for repeatedly flooded blocks. Two amendments adding resident oversight failed; the mayor says construction bids open in September.</p>
            </div>
          </li>
          <li class="reveal">
            <div class="time">8:55 AM<span>48 min ago</span></div>
            <div>
              <h3><a href="#"><span class="tag sky">Business</span>Refinery Outage Enters Day Four; Wholesale Gas Prices Up 6%</a></h3>
              <p>The operator now projects a return to service by Friday, though inspectors have requested additional testing on a primary distillation unit. Regional stations have raised prices an average of 21 cents a gallon since Monday, according to our daily price survey of 96 retailers.</p>
            </div>
          </li>
          <li class="reveal">
            <div class="time">8:30 AM<span>1 hr ago</span></div>
            <div>
              <h3><a href="#"><span class="tag gold">Markets</span>Signal Composite Edges Higher; Utilities Lead a Cautious Session</a></h3>
              <p>Defensive sectors carried the index as investors weighed storm-related disruptions against cooler inflation print. Analysts quoted in our morning note caution that a single session of weather-driven demand is not a trend — volume was 14% below the 30-day average.</p>
            </div>
          </li>
          <li class="reveal">
            <div class="time">7:52 AM<span>2 hrs ago</span></div>
            <div>
              <h3><a href="#"><span class="tag out">Health</span>Cooling Centers Open Across Northgate Ahead of a Heat Advisory</a></h3>
              <p>Four libraries and two recreation centers will extend hours through Sunday. Health officials are urging wellness checks on neighbors over 65; our guide lists every location, transit route and pet policy in one page you can save offline.</p>
            </div>
          </li>
          <li class="reveal">
            <div class="time">7:05 AM<span>3 hrs ago</span></div>
            <div>
              <h3><a href="#"><span class="tag out">Culture</span>The Harbor Lights Festival Returns With a Rebuilt Main Stage</a></h3>
              <p>Organizers expect 60,000 attendees across three nights, with a new weather-triggered cancellation protocol written with our Weather Desk. Forecast: a mild, mostly dry opening evening — details in the five-day outlook below.</p>
            </div>
          </li>
        </ul>

        <div class="feed-cta">
          <a class="btn" href="#features">Read More Coverage</a>
          <a class="btn btn--ghost" href="#weather">Open the Weather Desk</a>
          <a class="btn btn--ghost" href="#poll">Vote in Today's Poll</a>
        </div>
      </div>

      <aside class="sidebar">
        <div class="card reveal">
          <div class="card__head hot"><span>Trending Now</span><span>24h</span></div>
          <div class="card__body">
            <ol class="trending">
              <li><div><a href="#">What a "30% chance of rain" actually means, according to our meteorologists</a><span class="m">Weather · 42.1k reads</span></div></li>
              <li><div><a href="#">Every cooling center in the metro, mapped and sorted by transit line</a><span class="m">Local · 31.8k reads</a></span></div>
              <li><div><a href="#">The five-block neighborhood that floods first — and why it keeps happening</a><span class="m">Investigations · 27.4k</span></div></li>
              <li><div><a href="#">Opinion: Stop rebuilding in the same place and calling it resilience</a><span class="m">Opinion · 24.9k</span></div></li>
              <li><div><a href="#">Refinery outage: what it means for your weekend commute and your bill</a><span class="m">Business · 19.2k</span></div></li>
            </ol>
          </div>
        </div>

        <div class="card reveal">
          <div class="card__head dark"><span>Weather Outlook</span><span id="sideStamp">Now</span></div>
          <div class="card__body">
            <div class="outlook"><div><div class="city">Harbor City</div><div class="cond">Light rain · Wind WSW 14</div></div><div style="text-align:right"><span class="ico">🌧️</span><div class="tmp">58°</div></div></div>
            <div class="outlook"><div><div class="city">Northgate</div><div class="cond">Overcast · Wind N 9</div></div><div style="text-align:right"><span class="ico">☁️</span><div class="tmp">46°</div></div></div>
            <div class="outlook"><div><div class="city">Ridgeway</div><div class="cond">Snow showers · Wind NE 11</div></div><div style="text-align:right"><span class="ico">❄️</span><div class="tmp">39°</div></div></div>
            <div class="outlook"><div><div class="city">Eastvale</div><div class="cond">Sunny · Wind SW 7</div></div><div style="text-align:right"><span class="ico">☀️</span><div class="tmp">71°</div></div></div>
            <div style="margin-top:18px"><a class="btn btn--ghost" style="width:100%;justify-content:center" href="#weather">Open Full Forecast</a></div>
          </div>
        </div>

        <div class="card reveal">
          <div class="card__head"><span>Upcoming Events</span><span> Metro</span></div>
          <div class="card__body">
            <ul class="events">
              <li><div class="date-chip"><b>12</b><span>Jun</span></div><div class="ev">Coastal Resilience Hearing<span>City Hall, Chamber B · 6:00 p.m.</span></div></li>
              <li><div class="date-chip"><b>13</b><span>Jun</span></div><div class="ev">Harbor Lights Festival<span>Pier Nine · Gates 7:00 p.m.</span></div></li>
              <li><div class="date-chip"><b>15</b><span>Jun</span></div><div class="ev">Signal Live: Ask a Meteorologist<span>Online · 12:00 p.m. CDT</span></div></li>
              <li><div class="date-chip"><b>18</b><span>Jun</span></div><div class="ev">Transit Riders' Town Hall<span>Northgate Library · 7:30 p.m.</span></div></li>
            </ul>
          </div>
        </div>
      </aside>
    </div>
  </div>
</section>

<!-- ================= WEATHER DESK ================= -->
<section class="sec weather" id="weather">
  <div class="wrap">
    <div class="sec-head sec-head--dark reveal">
      <div>
        <span class="kicker sky">Weather Desk · Verified Forecasts</span>
        <h2>Weather That Behaves Like News</h2>
        <p>Our meteorologists run three model blends, check them against 340 regional surface stations, and put their names on every forecast. Choose a city below — the outlook updates instantly.</p>
      </div>
      <a class="btn btn--light" href="#newsletters">Set a Weather Alert</a>
    </div>

    <div class="city-bar" role="tablist" aria-label="Choose a forecast city">
      <button class="city-btn on" data-city="harbor" role="tab" aria-selected="true">Harbor City</button>
      <button class="city-btn" data-city="northgate" role="tab" aria-selected="false">Northgate</button>
      <button class="city-btn" data-city="ridgeway" role="tab" aria-selected="false">Ridgeway</button>
      <button class="city-btn" data-city="eastvale" role="tab" aria-selected="false">Eastvale</button>
      <div class="unit-toggle" role="group" aria-label="Temperature unit">
        <button class="on" data-unit="f" aria-pressed="true">°F</button>
        <button data-unit="c" aria-pressed="false">°C</button>
      </div>
    </div>

    <div class="wx-grid">
      <div class="wx-now reveal">
        <div class="wx-now__top">
          <div>
            <div class="wx-place" id="wxPlace">Harbor City Metro</div>
            <div class="wx-cond" id="wxCond">Light Rain</div>
            <div class="wx-sub" id="wxSub">Bands moving east at 22 mph · Visibility 6 mi · Advisory in effect until 9 p.m.</div>
          </div>
          <div class="wx-stamp" id="wxStamp">Observed 9:45 a.m. · Station HBC-04</div>
        </div>

        <div class="wx-temp">
          <span class="ico" id="wxIcon">🌧️</span>
          <span class="deg"><span id="wxTemp">58</span><sup id="wxUnit">°F</sup></span>
        </div>
        <div class="wx-sub">Feels like <span id="wxFeels">54°</span> · High <span id="wxHi">63°</span> / Low <span id="wxLo">51°</span></div>

        <div class="wx-stats">
          <div class="wx-stat"><b id="wxWind">WSW 14</b><span>Wind mph</span></div>
          <div class="wx-stat"><b id="wxHum">82%</b><span>Humidity</span></div>
          <div class="wx-stat"><b id="wxUV">Moderate</b><span>UV Index</span></div>
          <div class="wx-stat"><b id="wxPres">1004 mb</b><span>Pressure</span></div>
          <div class="wx-stat"><b id="wxRise">6:12 AM</b><span>Sunrise</span></div>
          <div class="wx-stat"><b id="wxSet">7:48 PM</b><span>Sunset</span></div>
          <div class="wx-stat"><b id="wxPop">60%</b><span>Precip chance</span></div>
          <div class="wx-stat"><b id="wxAir">Good</b><span>Air quality</span></div>
        </div>

        <div class="wx-actions">
          <button class="btn btn--flare" id="watchBtn" type="button">
            <svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor"><path d="M6 4l14 8-14 8z"/></svg> Watch Weather
          </button>
          <a class="btn btn--outline-l" href="#newsletters">Get Severe Alerts</a>
          <a class="btn btn--outline-l" href="#local">Radar for My Block</a>
        </div>
      </div>

      <div class="wx-side">
        <div class="radar reveal">
          <img src="https://picsum.photos/seed/ms-radar-sweep/900/500" alt="Weather radar precipitation sweep over the metropolitan area" width="900" height="500">
          <div class="radar__ov">
            <b>Live Radar · Precipitation Sweep</b>
            <span>Heaviest cell tracking east of Halsted, clearing by 10:20 a.m.</span>
          </div>
        </div>

        <div class="broadcast reveal">
          <h4>Afternoon Forecast, on video</h4>
          <p>Meteorologist Renata Cho breaks down the evening commute, the flood potential overnight, and the weekend trend in under four minutes — captioned, transcript attached.</p>
          <button class="play" id="playBtn" type="button">
            <span class="circ" id="playCirc">
              <svg width="16" height="16" viewBox="0 0 24 24"><path d="M7 4l13 8-13 8z"/></svg>
            </span>
            <span class="lbl" id="playLbl">Play broadcast<span>4:12 · Updated 9:00 a.m.</span></span>
            <span class="eq" id="eq"><i></i><i></i><i></i><i></i><i></i></span>
          </button>
        </div>
      </div>
    </div>

    <div class="forecast reveal">
      <div class="forecast__head">
        <h3 id="fcTitle">Five-Day Outlook · Harbor City</h3>
        <span>Blend of ECMWF, GFS and HRRR · confidence: moderate</span>
      </div>
      <div class="days" id="days"></div>
    </div>

    <div class="wx-note reveal">
      <div>
        <h4>How we build a forecast</h4>
        <p>Every headline number on this page starts as an ensemble: three global models at 147 perturbed runs, downscaled onto our own 2-kilometer grid and bias-corrected against the last 20 years of station observations. Our duty meteorologist reviews the blend at 4 a.m., 11 a.m., 4 p.m. and 10 p.m., and writes the narrative you read — because a number without context is just a number.</p>
        <p>When a signature in the data disagrees with what people are seeing out the window, we say so. The forecast on Meridian Signal carries a stated confidence level, a publication time and an author. If we change our mind, we timestamp the change.</p>
      </div>
      <div>
        <h4>Reading the weather patterns</h4>
        <p>The region sits under a slow-moving upper trough this week, which is why moisture keeps riding the same conveyor from the southwest. That setup favors repeated rounds rather than one soaking — the kind of pattern that saturates soil, fills drainage capacity and turns a modest rainfall total into a real flood risk.</p>
        <p>Beyond five days, the signal weakens. We show a seven-day trend with honest uncertainty bars rather than a false-precision single number: long-range planning deserves better than a coin flip dressed up as a forecast. Watch Weather for the latest video update, or set an alert and we'll notify you only when it matters.</p>
      </div>
    </div>
  </div>
</section>

<!-- ================= LONG READS ================= -->
<section class="sec" id="features">
  <div class="wrap">
    <div class="sec-head reveal">
      <div>
        <span class="kicker">Feature Articles · The Long Read</span>
        <h2>Stories Worth the Time They Take</h2>
        <p>Reported over weeks, edited over days, published with full transparency about how we know what we know. Our features desk covers the systems behind the headlines — infrastructure, climate, labor and the institutions that shape daily life.</p>
      </div>
      <a class="btn btn--ghost" href="#newsletters">Follow This Series</a>
    </div>

    <div class="feat-grid">
      <article class="feat feat--wide reveal">
        <img src="https://picsum.photos/seed/ms-flooded-street/900/700" alt="A flooded residential street after heavy rain" width="900" height="700">
        <div class="feat__body">
          <span class="kicker">Part Two · The Forecast Files</span>
          <h3>The Five Blocks That Flood First — And the Century-Old Decision That Made Them</h3>
          <p>In 1924, a creek was pushed into a pipe and a neighborhood was built on top of it. We mapped every structure along that buried channel against 118 recorded flood events and found a pattern the city's own maps don't show: the same 19 properties account for 41% of all paid claims in the district.</p>
          <p>Residents have filed for elevation grants three times since 2011. Each application was denied for the same reason — the property sits below the base flood elevation, which is calculated from a map drawn before the last four decades of development upstream. This is a story about paperwork as much as water, and about what happens when a document becomes impossible to update.</p>
          <div class="foot">
            <span class="mono">By Ilse Marchetti · 24 min read</span>
            <a class="link-more" href="#">Read More</a>
          </div>
        </div>
      </article>

      <article class="feat reveal">
        <img src="https://picsum.photos/seed/ms-heat-satellite/700/460" alt="A satellite ground station at dusk" width="700" height="460">
        <div class="feat__body">
          <span class="kicker">Science</span>
          <h3>The Satellite That Changed How a City Warns You About Heat</h3>
          <p>A new generation of thermal imagers resolves street-level temperature differences down to 30 meters — enough to show that two adjacent blocks can differ by nine degrees. Public health officials are using that resolution to place cooling resources where the heat actually pools, not where the averages say it should.</p>
          <div class="foot"><span class="mono">12 min read</span><a class="link-more" href="#">Read More</a></div>
        </div>
      </article>

      <article class="feat reveal">
        <img src="https://picsum.photos/seed/ms-night-shift/700/460" alt="Workers on a night shift in a control room" width="700" height="460">
        <div class="feat__body">
          <span class="kicker">Labor</span>
          <h3>Night Shift: The 3 A.M. Crew Keeping 40,000 Commuters Moving</h3>
          <p>Between the last train and the first, a team of 62 rebuilds track, sensors and signal hardware against a clock that never bends. We spent four overnight shifts with them, learning how a 90-second delay in March traces back to a bolt tightened — or not tightened — in February.</p>
          <div class="foot"><span class="mono">16 min read</span><a class="link-more" href="#">Read More</a></div>
        </div>
      </article>

      <article class="feat reveal">
        <img src="https://picsum.photos/seed/ms-harbor-crane/700/460" alt="Cargo cranes at a working port" width="700" height="460">
        <div class="feat__body">
          <span class="kicker">Economy</span>
          <h3>Port Traffic Fell 8%. The Inland Terminals Didn't Get the Memo.</h3>
          <p>Container volume slipped last quarter while rail freight to inland hubs climbed to a record. Our analysis of 14 months of manifests suggests the shift is structural rather than seasonal — and that two counties are quietly retooling their entire economic development pitch around it.</p>
          <div class="foot"><span class="mono">14 min read</span><a class="link-more" href="#">Read More</a></div>
        </div>
      </article>
    </div>
  </div>
</section>

<!-- ================= OPINION ================= -->
<section class="sec sec--tint" id="opinion">
  <div class="wrap">
    <div class="sec-head reveal">
      <div>
        <span class="kicker">Opinion &amp; Analysis</span>
        <h2>Argued, Not Announced</h2>
        <p>Editorial opinion is produced by our columnist and editorial board and is clearly separated from news reporting. Analysis pieces disclose the data and methods behind their conclusions. Where we get something wrong, the correction runs at the top of the article.</p>
      </div>
      <a class="btn btn--ghost" href="#faq">Our Editorial Standards</a>
    </div>

    <div class="opinion">
      <article class="col-card reveal">
        <div class="who">
          <img src="https://i.pravatar.cc/160?u=harriet-vane" alt="Columnist Harriet Vane" width="56" height="56">
          <div><b>Harriet Vane</b><span>Editorial Board</span></div>
        </div>
        <h3>Stop Rebuilding in the Same Place and Call It Resilience</h3>
        <p>A $214 million package is a serious commitment, and the council deserves credit for acting before the next storm rather than after it. But roughly a fifth of the money is directed at structures that have flooded four or more times since 2009.</p>
        <p>Resilience means making the hardest choice first: some parcels should not be defended indefinitely. Voluntary buyouts are politically painful and humane. The alternative is a standing subsidy for risk, paid by renters who never saw a claim check.</p>
        <div class="foot"><span class="mono">Column · 7 min</span><a class="link-more" href="#">Read More</a></div>
      </article>

      <article class="col-card reveal">
        <div class="who">
          <img src="https://i.pravatar.cc/160?u=tobias-rendel" alt="Analyst Tobias Rendel" width="56" height="56">
          <div><b>Tobias Rendel</b><span>Data Analysis</span></div>
        </div>
        <h3>What 1.4 Million Readings Tell Us About the Flood Alert Lag</h3>
        <p>We rebuilt the alert timeline minute by minute from station logs, dispatch records and push-notification receipts. The official warning reached the emergency operations center at 4:51 a.m. It reached three phone towers serving the affected blocks at 5:31 a.m.</p>
        <p>That 40-minute gap is not a story about bad faith. It is a story about a system designed for county-level geography being asked to make neighborhood-level promises — and about what it would cost to fix that, in money and in will.</p>
        <div class="foot"><span class="mono">Analysis · 11 min</span><a class="link-more" href="#">Read More</a></div>
      </article>

      <article class="col-card reveal">
        <div class="who">
          <img src="https://i.pravatar.cc/160?u=nadia-kerr" alt="Columnist Nadia Kerr" width="56" height="56">
          <div><b>Nadia Kerr</b><span>Friday Column</span></div>
        </div>
        <h3>The Commute Is a Weather Story Now, and That Should Worry Us</h3>
        <p>Twice this spring, a nine-minute delay on Line 6 became a ninety-minute delay because a single switch failed in the rain. Transit reliability has become a function of how our infrastructure handles the weather patterns it was never designed for.</p>
        <p>Riders can forgive disruption. What they cannot forgive is being the last to know. Every reroute should arrive as a push alert with an alternate route attached — before the platform fills, not after.</p>
        <div class="foot"><span class="mono">Column · 6 min</span><a class="link-more" href="#">Read More</a></div>
      </article>
    </div>

    <div class="pullquote reveal">
      <div class="mark">“</div>
      <div>
        <blockquote>A forecast is a promise with an expiration date. Our job is to say what we know, when we knew it, and exactly how confident we are that it will hold.</blockquote>
        <cite>Renata Cho — Chief Meteorologist, Meridian Signal</cite>
      </div>
    </div>
  </div>
</section>

<!-- ================= LOCAL ================= -->
<section class="sec" id="local">
  <div class="wrap local-grid">
    <div class="local-media reveal">
      <img src="https://picsum.photos/seed/ms-neighborhood-local/1000/800" alt="A residential neighborhood street on an overcast morning" width="1000" height="800">
      <div class="stat"><b>68</b><span>Neighborhoods covered by a named Signal reporter</span></div>
    </div>
    <div class="reveal">
      <span class="kicker">Local · Across the District</span>
      <h2 style="font-family:var(--serif);font-weight:800;font-size:clamp(1.8rem,3vw,2.5rem);margin:12px 0 16px">The News That Decides Your Week</h2>
      <p class="lede">Local coverage is the largest desk at Meridian Signal and the reason most readers tell us they subscribe. We report on the school board, the zoning docket, the water rates and the pothole that has been open since March — because those are the decisions that shape a household budget more than any national headline.</p>
      <p>Each of our 68 coverage areas has a reporter byline, a beat page you can follow, and a weekly dispatch sent every Thursday afternoon. If something is happening on your street that we should know about, the newsroom tip line is monitored continuously — encrypted, anonymous on request, and answered by a human.</p>
      <ul class="local-list">
        <li><b>School board reverses plan</b> to close two elementary campuses after a two-hour hearing that ended just before midnight.</li>
        <li><b>Water rates to rise 4.1%</b> under a compromise that funds lead service-line replacement in the oldest four wards.</li>
        <li><b>Park district opens the rebuilt Eastvale pool</b> two weeks early, with free morning hours for residents under 18.</li>
        <li><b>Zoning docket:</b> three projects totaling 480 units head to a July vote — our interactive map shows each parcel.</li>
      </ul>
      <div style="display:flex;gap:14px;flex-wrap:wrap">
        <a class="btn" href="#newsletters">Sign Up for the Local Dispatch</a>
        <a class="btn btn--ghost" href="#breaking">Browse the Docket</a>
      </div>
    </div>
  </div>
</section>

<!-- ================= POLL ================= -->
<section class="sec sec--tint" id="poll">
  <div class="wrap">
    <div class="sec-head reveal">
      <div>
        <span class="kicker">Reader Poll · Signal Pulse</span>
        <h2>Your Take, Counted</h2>
        <p>Every weekday we put one question to readers and publish the results the following morning, weighted by nothing but the votes themselves. Results update live once you cast yours.</p>
      </div>
      <a class="btn btn--ghost" href="#newsletters">Get Poll Results</a>
    </div>

    <div class="poll-grid">
      <div class="poll reveal" id="pollCard">
        <div class="poll__head">
          <h3>Today's Question</h3>
          <span>Closes 8:00 p.m.</span>
        </div>
        <div class="poll__body">
          <div class="poll__q">Should the city shift school start times 30 minutes later during severe weather weeks?</div>
          <div class="poll__sub">District officials say later starts would reduce fog and flood-related delays. Tell us where you land.</div>

          <div id="opts">
            <label class="opt" data-votes="4218">
              <input type="radio" name="poll" value="Yes — safety comes first">
              <span class="bar"></span>
              <span class="row"><span class="lbl">Yes — safety and sleep come first</span><span><span class="pct">0%</span><br><span class="count">0 votes</span></span></span>
            </label>
            <label class="opt" data-votes="2960">
              <input type="radio" name="poll" value="No — it upends schedules">
              <span class="bar"></span>
              <span class="row"><span class="lbl">No — it upends work and childcare schedules</span><span><span class="pct">0%</span><br><span class="count">0 votes</span></span></span>
            </label>
            <label class="opt" data-votes="3402">
              <input type="radio" name="poll" value="Only if alerts are automatic">
              <span class="bar"></span>
              <span class="row"><span class="lbl">Only if the trigger is automatic and transparent</span><span><span class="pct">0%</span><br><span class="count">0 votes</span></span></span>
            </label>
            <label class="opt" data-votes="1187">
              <input type="radio" name="poll" value="Undecided">
              <span class="bar"></span>
              <span class="row"><span class="lbl">Undecided — I'd want the data first</span><span><span class="pct">0%</span><br><span class="count">0 votes</span></span></span>
            </label>
          </div>

          <div class="poll__foot">
            <span class="tot" id="pollTot">11,767 votes counted</span>
            <button class="btn btn--flare" id="voteBtn" type="button">Cast My Vote</button>
          </div>
          <p class="poll__note">One vote per reader. Polls are unscientific and reflect only the readers who chose to participate. <a class="link-more" href="#faq" style="font-size:11.5px">How we run polls</a></p>
        </div>
      </div>

      <div class="poll-side reveal">
        <h3>Why we ask</h3>
        <p>Reader response shapes our coverage agenda more than most people realize. When 71% of respondents told us in April that they wanted earlier flood notifications, the investigations desk committed two reporters to the alert-lag story now running as a three-part series.</p>
        <p>Signal Pulse is one of several ways we hold a two-way conversation with the region we cover — alongside our monthly open newsroom sessions, the public tip line, and the corrections log we publish in full. Poll results are archived permanently, never quietly deleted.</p>
        <div class="pulse-stats">
          <div><b>68</b><span>Neighborhoods</span></div>
          <div><b>340</b><span>Weather stations</span></div>
          <div><b>24/7</b><span>Tip line staffed</span></div>
        </div>
        <div style="margin-top:26px;display:flex;gap:14px;flex-wrap:wrap">
          <a class="btn" href="#newsletters">Sign Up</a>
          <a class="btn btn--ghost" href="#faq">Read the FAQ</a>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- ================= FAQ ================= -->
<section class="sec" id="faq">
  <div class="wrap">
    <div class="sec-head reveal" style="max-width:920px;margin-left:auto;margin-right:auto">
      <div>
        <span class="kicker">Standards &amp; Service</span>
        <h2>Frequently Asked Questions</h2>
        <p>Straight answers about how we report, how we forecast, and how your subscription works. Still stuck? The help desk responds within one business day.</p>
      </div>
    </div>

    <div class="faq">
      <div class="acc open reveal">
        <button class="acc__btn" aria-expanded="true">How does the Weather Desk produce its forecasts?</button>
        <div class="acc__panel"><div>Every published forecast is an ensemble blend of three global models run at 147 perturbed members, downscaled to a 2-kilometer grid and bias-corrected against 20 years of observations from 340 regional stations. A named duty meteorologist reviews the output four times a day — 4 a.m., 11 a.m., 4 p.m. and 10 p.m. — and writes the narrative forecast with an explicit confidence level. We do not license an unattended automated feed and present it as our own; if a number on this site changes, a human decided it should.</div></div>
      </div>
      <div class="acc reveal">
        <button class="acc__btn" aria-expanded="false">What qualifies as "Breaking News" at Meridian Signal?</button>
        <div class="acc__panel"><div>An item enters the breaking wire only when it is confirmed by two independent sources or by an official record, and only when it materially changes what a reader currently believes. We timestamp each item and never silently overwrite it: substantive updates carry a "updated" line explaining what changed. If a report later proves wrong, a correction runs at the top of the article and in the corrections log, and the original wording remains visible in the revision history.</div></div>
      </div>
      <div class="acc reveal">
        <button class="acc__btn" aria-expanded="false">Can I get severe weather alerts for my specific block?</button>
        <div class="acc__panel"><div>Yes. Choose "Set a Weather Alert" in the Weather Desk, enter an address or drop a pin, and select the thresholds you care about — flash flood warnings, heat advisories, wind gusts above a set speed, or snowfall totals. Alerts are delivered by push notification and SMS within an average of 90 seconds of the official issuance. We send only what you ask for; there are no marketing messages inside the alert channel, and you can mute everything except life-safety warnings.</div></div>
      </div>
      <div class="acc reveal">
        <button class="acc__btn" aria-expanded="false">How do I change or cancel my subscription?</button>
        <div class="acc__panel"><div>Sign in, open Account → Subscription, and choose Change plan or Cancel. Cancellation takes effect at the end of the current billing period and requires no phone call, no retention offer and no dark pattern. Monthly subscribers can pause for up to three months if they are traveling. Students, educators, seniors on fixed income and any reader facing financial hardship can request the reduced rate of $1 per month by writing to help@meridiansignal.com — the rate is granted without documentation.</div></div>
      </div>
      <div class="acc reveal">
        <button class="acc__btn" aria-expanded="false">Where do opinion pieces end and reporting begin?</button>
        <div class="acc__panel"><div>Opinion and analysis content is produced by our columnist team and editorial board, is labeled at the top of the article, and is never edited or reviewed by the newsroom's reporting chain — nor are reporters asked to write opinion. Analysis pieces disclose their data sources and methods and link to the underlying dataset where we are able to publish it. News coverage carries no anonymous quotes unless approved by the standards editor and explained to the reader in the body of the story.</div></div>
      </div>
      <div class="acc reveal">
        <button class="acc__btn" aria-expanded="false">How do I submit a tip, photo or correction?</button>
        <div class="acc__panel"><div>The tip line at tips@meridiansignal.com is monitored around the clock by a duty editor. For sensitive material we support encrypted submissions and will agree in advance not to record your name; we do not publish a source's identity without explicit consent. Photographs and video are accepted at visuals@meridiansignal.com with a short description of where and when they were taken. Corrections can be sent to corrections@meridiansignal.com and are verified, published and logged within one business day.</div></div>
      </div>
    </div>
  </div>
</section>

<!-- ================= TRUST / TESTIMONIALS ================= -->
<section class="sec sec--tint">
  <div class="wrap">
    <div class="sec-head reveal">
      <div>
        <span class="kicker">From Our Readers</span>
        <h2>Why 412,000 People Keep Us on the First Tab</h2>
        <p>We survey subscribers twice a year. These comments are drawn from the 2025 reader panel and published with permission.</p>
      </div>
      <a class="btn btn--ghost" href="#newsletters">Join Them — Sign Up</a>
    </div>

    <div class="tests">
      <article class="test reveal">
        <p>The only local outlet that tells me the confidence level of its own forecast. After last June I stopped trusting the auto-generated app on my phone entirely.</p>
        <div class="who">
          <img src="https://i.pravatar.cc/120?u=reader-marisol" alt="Reader Marisol D." width="44" height="44">
          <div><b>Marisol D.</b><span>Harbor City · subscriber since 2019</span></div>
        </div>
      </article>
      <article class="test reveal">
        <p>I sent a tip about a flooded underpass at 6 a.m. on a Sunday. An editor called me back in eleven minutes and the story was up before the water receded.</p>
        <div class="who">
          <img src="https://i.pravatar.cc/120?u=reader-george-a" alt="Reader George A." width="44" height="44">
          <div><b>George A.</b><span>Northgate · subscriber since 2021</span></div>
        </div>
      </article>
      <article class="test reveal">
        <p>The Local Dispatch is the only newsletter I read start to finish. Zoning, school board, potholes — everything that actually touches my household budget.</p>
        <div class="who">
          <img src="https://i.pravatar.cc/120?u=reader-priya-n" alt="Reader Priya N." width="44" height="44">
          <div><b>Priya N.</b><span>Eastvale · subscriber since 2023</span></div>
        </div>
      </article>
    </div>

    <div class="awards reveal">
      <div>Regional Press Club · Public Service 2024</div>
      <div>Best Weather Product · Metro Readers' Choice</div>
      <div>Signatory · Standards &amp; Ethics Charter</div>
      <div>Certified · Corrections Transparency Pledge</div>
      <div>Member · National Local News Network</div>
    </div>
  </div>
</section>

<!-- ================= NEWSLETTER CTA ================= -->
<section class="news-cta" id="newsletters">
  <div class="wrap news-grid">
    <div class="reveal">
      <span class="kicker" style="color:#fff">Newsletters · Free</span>
      <h2>Start the morning knowing what's coming.</h2>
      <p>Four bulletins, each written by a person: <b>The Signal Briefing</b> at 6:30 a.m., <b>The Weather Window</b> before every significant system, <b>The Local Dispatch</b> on Thursdays, and <b>The Long Read</b> on Sundays. Pick what you want — we will never sell your address, and every email carries a one-click unsubscribe that actually works.</p>
      <div style="display:flex;gap:26px;flex-wrap:wrap;margin-top:24px;font-family:var(--cond);font-size:12.5px;letter-spacing:.13em;text-transform:uppercase">
        <span>◆ 412,000 subscribers</span><span>◆ 62% average open rate</span><span>◆ No spam, ever</span>
      </div>
    </div>

    <form class="news-form reveal" id="newsForm" novalidate>
      <h3>Sign Up Free</h3>
      <p>Enter your email and choose your bulletins. You'll get a confirmation link within a minute.</p>
      <div class="field">
        <input type="email" id="emailInput" placeholder="you@example.com" aria-label="Email address" required>
        <button class="btn btn--flare" type="submit">Sign Up</button>
      </div>
      <div class="picks">
        <label class="pick"><input type="checkbox" checked><span>Signal Briefing</span></label>
        <label class="pick"><input type="checkbox" checked><span>Weather Window</span></label>
        <label class="pick"><input type="checkbox"><span>Local Dispatch</span></label>
        <label class="pick"><input type="checkbox"><span>The Long Read</span></label>
        <label class="pick"><input type="checkbox"><span>Breaking Alerts</span></label>
      </div>
      <div class="form-msg" id="formMsg">✓ You're on the list — check your inbox for the confirmation link.</div>
      <p style="margin-top:14px;font-size:13px">By signing up you agree to our <a href="#" style="text-decoration:underline">Terms</a> and <a href="#" style="text-decoration:underline">Privacy Policy</a>.</p>
    </form>
  </div>
</section>

<!-- ================= FOOTER ================= -->
<footer>
  <div class="wrap">
    <div class="f-grid">
      <div class="f-brand">
        <img src="https://placehold.co/210x56/12161C/F5F1E8?text=MERIDIAN+SIGNAL&font=oswald" alt="Meridian Signal logo" width="210" height="56">
        <div class="tag">Read the sky. Read the room.</div>
        <address>
          Meridian Signal Media Group<br>
          118 Harborlight Avenue, Suite 900<br>
          Northgate, ST 04102<br><br>
          Newsroom: <a href="tel:+15550182200">(555) 018-2200</a><br>
          Tips: <a href="mailto:tips@meridiansignal.com">tips@meridiansignal.com</a><br>
          Weather: <a href="mailto:weather@meridiansignal.com">weather@meridiansignal.com</a><br>
          Advertising: <a href="tel:+15550182245">(555) 018-2245</a>
        </address>
        <div class="socials">
          <a href="#" aria-label="X"><svg viewBox="0 0 24 24"><path d="M17 3h3l-6.6 7.5L21.4 21H15l-4.6-6-5.3 6H2l7.1-8.1L1.9 3h6.5l4.2 5.5L17 3zm-2.2 16h1.7L7.6 4.7H5.8L14.8 19z"/></svg></a>
          <a href="#" aria-label="Facebook"><svg viewBox="0 0 24 24"><path d="M13.2 21v-8h2.7l.4-3h-3.1V8.1c0-.9.3-1.5 1.6-1.5h1.6V3.9c-.3 0-1.3-.1-2.4-.1-2.4 0-4 1.4-4 4.1V10H7.3v3h2.7v8h3.2z"/></svg></a>
          <a href="#" aria-label="Instagram"><svg viewBox="0 0 24 24"><path d="M12 2.2c3.2 0 3.6 0 4.9.1 1.2.1 1.8.3 2.2.4.6.2 1 .5 1.4.9.4.4.7.8.9 1.4.2.4.4 1 .4 2.2.1 1.3.1 1.7.1 4.9s0 3.6-.1 4.9c-.1 1.2-.3 1.8-.4 2.2-.2.6-.5 1-.9 1.4-.4.4-.8.7-1.4.9-.4.2-1 .4-2.2.4-1.3.1-1.7.1-4.9.1s-3.6 0-4.9-.1c-1.2-.1-1.8-.3-2.2-.4-.6-.2-1-.5-1.4-.9-.4-.4-.7-.8-.9-1.4-.2-.4-.4-1-.4-2.2C2.2 15.6 2.2 15.2 2.2 12s0-3.6.1-4.9c.1-1.2.3-1.8.4-2.2.2-.6.5-1 .9-1.4.4-.4.8-.7 1.4-.9.4-.2 1-.4 2.2-.4C8.4 2.2 8.8 2.2 12 2.2zm0 3.4A6.4 6.4 0 1 0 18.4 12 6.4 6.4 0 0 0 12 5.6zm0 10.5A4.1 4.1 0 1 1 16.1 12 4.1 4.1 0 0 1 12 16.1zm6.6-10.7a1.5 1.5 0 1 1-1.5-1.5 1.5 1.5 0 0 1 1.5 1.5z"/></svg></a>
          <a href="#" aria-label="YouTube"><svg viewBox="0 0 24 24"><path d="M22 12s0-3-.4-4.4a2.8 2.8 0 0 0-2-2C18.2 5.2 12 5.2 12 5.2s-6.2 0-7.6.4a2.8 2.8 0 0 0-2 2C2 9 2 12 2 12s0 3 .4 4.4a2.8 2.8 0 0 0 2 2c1.4.4 7.6.4 7.6.4s6.2 0 7.6-.4a2.8 2.8 0 0 0 2-2C22 15 22 12 22 12zM10 15V9l5.2 3L10 15z"/></svg></a>
          <a href="#" aria-label="LinkedIn"><svg viewBox="0 0 24 24"><path d="M6.9 8.5H3.6V21h3.3V8.5zM5.3 3a1.9 1.9 0 1 0 0 3.9A1.9 1.9 0 0 0 5.3 3zM21 21h-3.3v-6.5c0-1.6-.6-2.6-2-2.6-1.1 0-1.7.7-2 1.4-.1.3-.1.6-.1 1V21H10s.1-11.3 0-12.5h3.3v1.8c.4-.7 1.2-1.9 3.1-1.9 2.3 0 4.3 1.5 4.3 4.9V21z"/></svg></a>
          <a href="#" aria-label="RSS"><svg viewBox="0 0 24 24"><path d="M5 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM3 10.5A10.5 10.5 0 0 1 13.5 21h-3A7.5 7.5 0 0 0 3 13.5v-3zM3 4a17 17 0 0 1 17 17h-3A14 14 0 0 0 3 7V4z"/></svg></a>
        </div>
      </div>

      <div class="f-col">
        <h4>Sections</h4>
        <ul>
          <li><a href="#breaking">Breaking News</a></li>
          <li><a href="#weather">Weather &amp; Radar</a></li>
          <li><a href="#local">Local &amp; City Hall</a></li>
          <li><a href="#features">Long Reads</a></li>
          <li><a href="#opinion">Opinion &amp; Analysis</a></li>
          <li><a href="#features">Business &amp; Markets</a></li>
          <li><a href="#features">Science &amp; Climate</a></li>
        </ul>
      </div>

      <div class="f-col">
        <h4>Weather Tools</h4>
        <ul>
          <li><a href="#weather">Five-Day Forecast</a></li>
          <li><a href="#weather">Live Radar</a></li>
          <li><a href="#weather">Severe Alert Signup</a></li>
          <li><a href="#weather">Air Quality Index</a></li>
          <li><a href="#weather">Marine &amp; Tides</a></li>
          <li><a href="#weather">Pollen &amp; Allergens</a></li>
          <li><a href="#poll">Ask a Meteorologist</a></li>
        </ul>
      </div>

      <div class="f-col">
        <h4>Company</h4>
        <ul>
          <li><a href="#faq">Editorial Standards</a></li>
          <li><a href="#faq">Corrections Log</a></li>
          <li><a href="#faq">Newsroom Directory</a></li>
          <li><a href="#newsletters">Newsletters</a></li>
          <li><a href="#">Advertise With Us</a></li>
          <li><a href="#">Careers — 6 Open Roles</a></li>
          <li><a href="#">Public Records &amp; FOIA</a></li>
        </ul>
      </div>
    </div>

    <div class="f-bottom">
      <span class="f-legal">© <span id="yr">2025</span> Meridian Signal Media Group. All rights reserved.</span>
      <ul>
        <li><a href="#">Privacy Policy</a></li>
        <li><a href="#">Terms of Service</a></li>
        <li><a href="#">Cookie Preferences</a></li>
        <li><a href="#">Accessibility</a></li>
        <li><a href="#">Do Not Sell My Info</a></li>
        <li><a href="#">Sitemap</a></li>
      </ul>
    </div>
  </div>
</footer>

<script>
(function(){
  "use strict";

  /* ---------- date ---------- */
  var d = new Date();
  document.getElementById('todayDate').textContent = d.toLocaleDateString('en-US',{weekday:'long',month:'long',day:'numeric',year:'numeric'});
  document.getElementById('yr').textContent = d.getFullYear();
  document.getElementById('sideStamp').textContent = d.toLocaleTimeString('en-US',{hour:'numeric',minute:'2-digit'});

  /* ---------- mobile nav ---------- */
  var burger = document.getElementById('burger'), navList = document.getElementById('navList');
  burger.addEventListener('click', function(){
    var open = navList.classList.toggle('open');
    burger.setAttribute('aria-expanded', open);
  });
  navList.addEventListener('click', function(e){
    if(e.target.tagName === 'A'){ navList.classList.remove('open'); burger.setAttribute('aria-expanded', false);
      navList.querySelectorAll('a').forEach(function(a){a.classList.remove('active');});
      e.target.classList.add('active');
    }
  });

  /* ---------- active nav on scroll ---------- */
  var secs = ['top','weather','breaking','features','local','opinion','poll','faq','newsletters'];
  window.addEventListener('scroll', function(){
    var y = window.scrollY + 140, cur = 'top';
    secs.forEach(function(id){
      var el = document.getElementById(id);
      if(el && el.offsetTop <= y) cur = id;
    });
    navList.querySelectorAll('a').forEach(function(a){
      a.classList.toggle('active', a.getAttribute('href') === '#'+cur);
    });
  }, {passive:true});

  /* ---------- WEATHER DATA ---------- */
  var cities = {
    harbor:{ name:'Harbor City Metro', stamp:'Observed 9:45 a.m. · Station HBC-04',
      cond:'Light Rain', icon:'🌧️', temp:58, feels:54, hi:63, lo:51, wind:'WSW 14', hum:'82%',
      uv:'Moderate', pres:'1004 mb', rise:'6:12 AM', set:'7:48 PM', pop:'60%', air:'Good',
      sub:'Bands moving east at 22 mph · Visibility 6 mi · Coastal flood advisory until 9 p.m.',
      days:[
        {d:'Today',i:'🌦️',h:63,l:51,p:'60%',t:'Scattered showers, clearing late'},
        {d:'Thu',i:'☁️',h:61,l:49,p:'20%',t:'Overcast, cooler breeze'},
        {d:'Fri',i:'🌤️',h:67,l:50,p:'10%',t:'Partial sun, pleasant'},
        {d:'Sat',i:'☀️',h:72,l:54,p:'0%',t:'Sunny and mild'},
        {d:'Sun',i:'🌤️',h:70,l:55,p:'5%',t:'Warm, increasing cloud'}
      ]},
    northgate:{ name:'Northgate Regional', stamp:'Observed 9:42 a.m. · Station NGT-11',
      cond:'Overcast', icon:'☁️', temp:46, feels:41, hi:49, lo:38, wind:'N 9', hum:'74%',
      uv:'Low', pres:'1011 mb', rise:'6:14 AM', set:'7:51 PM', pop:'15%', air:'Moderate',
      sub:'Thick stratus deck · Visibility 9 mi · Heat advisory begins Thursday 11 a.m.',
      days:[
        {d:'Today',i:'☁️',h:49,l:38,p:'15%',t:'Grey and still'},
        {d:'Thu',i:'🌧️',h:45,l:36,p:'70%',t:'Steady rain likely'},
        {d:'Fri',i:'🌦️',h:50,l:37,p:'40%',t:'Morning showers'},
        {d:'Sat',i:'🌤️',h:55,l:39,p:'10%',t:'Clearing by noon'},
        {d:'Sun',i:'☀️',h:58,l:41,p:'0%',t:'Sunny and warm'}
      ]},
    ridgeway:{ name:'Ridgeway Highlands', stamp:'Observed 9:38 a.m. · Station RDW-02',
      cond:'Snow Showers', icon:'❄️', temp:39, feels:33, hi:42, lo:28, wind:'NE 11', hum:'88%',
      uv:'Low', pres:'1007 mb', rise:'6:09 AM', set:'7:47 PM', pop:'65%', air:'Good',
      sub:'Elevation-driven bands · Visibility 3 mi · Winter weather advisory to 6 p.m.',
      days:[
        {d:'Today',i:'❄️',h:42,l:28,p:'65%',t:'Snow showers, slushy roads'},
        {d:'Thu',i:'☁️',h:41,l:29,p:'20%',t:'Cloudy, quiet'},
        {d:'Fri',i:'🌤️',h:47,l:31,p:'5%',t:'Bright and breezy'},
        {d:'Sat',i:'☀️',h:51,l:33,p:'0%',t:'Full sunshine'},
        {d:'Sun',i:'⛅',h:49,l:32,p:'10%',t:'Partly cloudy'}
      ]},
    eastvale:{ name:'Eastvale Inland', stamp:'Observed 9:47 a.m. · Station EST-07',
      cond:'Sunny', icon:'☀️', temp:71, feels:73, hi:84, lo:61, wind:'SW 7', hum:'38%',
      uv:'Very High', pres:'1013 mb', rise:'6:16 AM', set:'7:55 PM', pop:'0%', air:'Fair',
      sub:'Clear skies · Visibility 12 mi · Heat advisory possible from Thursday afternoon',
      days:[
        {d:'Today',i:'☀️',h:84,l:61,p:'0%',t:'Hot and clear'},
        {d:'Thu',i:'🌤️',h:87,l:63,p:'0%',t:'Peak heat, light wind'},
        {d:'Fri',i:'⛈️',h:82,l:62,p:'45%',t:'PM thunderstorms'},
        {d:'Sat',i:'🌦️',h:76,l:59,p:'50%',t:'Showers, cooler'},
        {d:'Sun',i:'☁️',h:74,l:58,p:'20%',t:'Cloudy breaks'}
      ]}
  };

  var unit = 'f', current = 'harbor';
  function conv(f){ return unit === 'f' ? Math.round(f) : Math.round((f-32)*5/9); }

  function render(){
    var c = cities[current];
    document.getElementById('wxPlace').textContent = c.name;
    document.getElementById('wxCond').textContent = c.cond;
    document.getElementById('wxSub').textContent = c.sub;
    document.getElementById('wxStamp').textContent = c.stamp;
    document.getElementById('wxIcon').textContent = c.icon;
    document.getElementById('wxTemp').textContent = conv(c.temp);
    document.getElementById('wxUnit').textContent = unit === 'f' ? '°F' : '°C';
    document.getElementById('wxFeels').textContent = conv(c.feels) + '°';
    document.getElementById('wxHi').textContent = conv(c.hi) + '°';
    document.getElementById('wxLo').textContent = conv(c.lo) + '°';
    document.getElementById('wxWind').textContent = c.wind;
    document.getElementById('wxHum').textContent = c.hum;
    document.getElementById('wxUV').textContent = c.uv;
    document.getElementById('wxPres').textContent = c.pres;
    document.getElementById('wxRise').textContent = c.rise;
    document.getElementById('wxSet').textContent = c.set;
    document.getElementById('wxPop').textContent = c.pop;
    document.getElementById('wxAir').textContent = c.air;
    document.getElementById('fcTitle').textContent = 'Five-Day Outlook · ' + c.name.split(' ')[0];

    var html = '';
    c.days.forEach(function(x){
      html += '<div class="day"><div class="d">'+x.d+'</div><div class="ico">'+x.i+'</div>'+
              '<div class="hilo">'+conv(x.h)+'° <em>/ '+conv(x.l)+'°</em></div>'+
              '<div class="txt">'+x.t+'</div><div class="pop">☂ '+x.p+'</div></div>';
    });
    document.getElementById('days').innerHTML = html;
  }

  document.querySelectorAll('.city-btn').forEach(function(b){
    b.addEventListener('click', function(){
      document.querySelectorAll('.city-btn').forEach(function(x){x.classList.remove('on');x.setAttribute('aria-selected','false');});
      b.classList.add('on'); b.setAttribute('aria-selected','true');
      current = b.dataset.city; render();
    });
  });
  document.querySelectorAll('.unit-toggle button').forEach(function(b){
    b.addEventListener('click', function(){
      document.querySelectorAll('.unit-toggle button').forEach(function(x){x.classList.remove('on');x.setAttribute('aria-pressed','false');});
      b.classList.add('on'); b.setAttribute('aria-pressed','true');
      unit = b.dataset.unit; render();
    });
  });
  render();

  /* ---------- broadcast player ---------- */
  var playing = false;
  var playBtn = document.getElementById('playBtn');
  function togglePlay(){
    playing = !playing;
    document.getElementById('eq').classList.toggle('on', playing);
    document.getElementById('playLbl').innerHTML = playing
      ? 'Now playing: Afternoon Forecast<span>Tap to pause · transcript attached</span>'
      : 'Play broadcast<span>4:12 · Updated 9:00 a.m.</span>';
    document.getElementById('playCirc').innerHTML = playing
      ? '<svg width="16" height="16" viewBox="0 0 24 24"><rect x="6" y="4" width="4" height="16"/><rect x="14" y="4" width="4" height="16"/></svg>'
      : '<svg width="16" height="16" viewBox="0 0 24 24"><path d="M7 4l13 8-13 8z"/></svg>';
  }
  playBtn.addEventListener('click', togglePlay);
  document.getElementById('watchBtn').addEventListener('click', function(){
    if(!playing) togglePlay();
    document.querySelector('.broadcast').scrollIntoView({behavior:'smooth',block:'center'});
  });

  /* ---------- POLL ---------- */
  var voted = false;
  var opts = Array.prototype.slice.call(document.querySelectorAll('.opt'));
  function paint(){
    var total = 0;
    opts.forEach(function(o){ total += parseInt(o.dataset.votes,10); });
    opts.forEach(function(o){
      var v = parseInt(o.dataset.votes,10);
      var pct = total ? (v/total*100) : 0;
      o.querySelector('.pct').textContent = pct.toFixed(1) + '%';
      o.querySelector('.count').textContent = v.toLocaleString() + ' votes';
      o.querySelector('.bar').style.width = pct + '%';
    });
    document.getElementById('pollTot').textContent = total.toLocaleString() + ' votes counted';
  }
  document.getElementById('voteBtn').addEventListener('click', function(){
    if(voted) return;
    var sel = document.querySelector('input[name="poll"]:checked');
    if(!sel){
      document.getElementById('pollTot').textContent = 'Select an option first — then cast your vote';
      document.getElementById('pollTot').style.color = '#E4552B';
      return;
    }
    var box = sel.closest('.opt');
    box.dataset.votes = parseInt(box.dataset.votes,10) + 1;
    box.classList.add('mine');
    document.getElementById('pollCard').classList.add('voted');
    document.getElementById('pollTot').style.color = '';
    voted = true;
    this.textContent = 'Vote Recorded';
    this.disabled = true;
    this.style.opacity = '.6';
    this.style.cursor = 'default';
    paint();
  });
  opts.forEach(function(o){
    o.addEventListener('click', function(){ if(!voted) o.querySelector('input').checked = true; });
  });
  paint();

  /* ---------- FAQ accordion ---------- */
  document.querySelectorAll('.acc').forEach(function(acc){
    var btn = acc.querySelector('.acc__btn'), panel = acc.querySelector('.acc__panel');
    if(acc.classList.contains('open')) panel.style.maxHeight = panel.scrollHeight + 'px';
    btn.addEventListener('click', function(){
      var isOpen = acc.classList.contains('open');
      document.querySelectorAll('.acc').forEach(function(a){
        a.classList.remove('open');
        a.querySelector('.acc__panel').style.maxHeight = null;
        a.querySelector('.acc__btn').setAttribute('aria-expanded','false');
      });
      if(!isOpen){
        acc.classList.add('open');
        panel.style.maxHeight = panel.scrollHeight + 'px';
        btn.setAttribute('aria-expanded','true');
      }
    });
  });

  /* ---------- newsletter ---------- */
  document.getElementById('newsForm').addEventListener('submit', function(e){
    e.preventDefault();
    var input = document.getElementById('emailInput'), msg = document.getElementById('formMsg');
    var ok = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(input.value.trim());
    if(!ok){
      msg.textContent = '✕ Please enter a valid email address.';
      msg.style.color = '#C4421D';
      msg.classList.add('show');
      input.focus();
      return;
    }
    msg.textContent = "✓ You're on the list — check your inbox for the confirmation link.";
    msg.style.color = '#2F9E6B';
    msg.classList.add('show');
    input.value = '';
  });

  /* ---------- scroll reveal ---------- */
  var els = document.querySelectorAll('.reveal');
  if('IntersectionObserver' in window){
    var io = new IntersectionObserver(function(entries){
      entries.forEach(function(en){ if(en.isIntersecting){ en.target.classList.add('in'); io.unobserve(en.target); } });
    },{threshold:.12, rootMargin:'0px 0px -40px 0px'});
    els.forEach(function(el){ io.observe(el); });
  } else {
    els.forEach(function(el){ el.classList.add('in'); });
  }
})();
</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-12T10:05:13.433Z",
  "url": "https://benchmark.aimac.invalid/36644213808f1d3bea0948f127c8a64db07ed3a69fc92ffb94c7496c9e0ebd02.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-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-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": "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": []
    },
    {
      "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": "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": "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": []
    },
    {
      "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": "<div class=\"ticker\" role=\"region\" aria-label=\"Breaking news ticker\">",
          "target": [
            ".ticker"
          ]
        }
      ]
    },
    {
      "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": "<div class=\"ticker\" role=\"region\" aria-label=\"Breaking news ticker\">",
          "target": [
            ".ticker"
          ]
        }
      ]
    },
    {
      "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 ticker\">",
          "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 id=\"top\">",
          "target": [
            "#top"
          ]
        }
      ]
    },
    {
      "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": [
        {
          "any": [],
          "all": [
            {
              "id": "focusable-modal-open",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements while a modal is open"
            },
            {
              "id": "focusable-disabled",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements contained within element"
            },
            {
              "id": "focusable-not-tabbable",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements contained within element"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<div class=\"ticker__item\" aria-hidden=\"true\">Coastal flood advisory extended through 9 p.m. for Harbor City and Eastvale shoreline</div>",
          "target": [
            ".ticker__item[aria-hidden=\"true\"]:nth-child(6)"
          ]
        }
      ]
    },
    {
      "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": "<div class=\"ticker\" role=\"region\" aria-label=\"Breaking news ticker\">",
          "target": [
            ".ticker"
          ]
        }
      ]
    },
    {
      "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 ticker\">",
          "target": [
            ".ticker"
          ]
        }
      ]
    },
    {
      "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": [
        {
          "any": [
            {
              "id": "aria-required-parent",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Required ARIA parent role present"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<button class=\"city-btn on\" data-city=\"harbor\" role=\"tab\" aria-selected=\"true\">Harbor City</button>",
          "target": [
            "button[data-city=\"harbor\"]"
          ]
        }
      ]
    },
    {
      "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 ticker\">",
          "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": "<div class=\"ticker\" role=\"region\" aria-label=\"Breaking news ticker\">",
          "target": [
            ".ticker"
          ]
        }
      ]
    },
    {
      "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": "<div class=\"ticker\" role=\"region\" aria-label=\"Breaking news ticker\">",
          "target": [
            ".ticker"
          ]
        }
      ]
    },
    {
      "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": "<div style=\"margin-top:22px\">",
          "target": [
            ".lead > div:nth-child(2)"
          ]
        }
      ]
    },
    {
      "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": "aria-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-label attribute exists and is not empty"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<button type=\"submit\" aria-label=\"Submit search\">\n          <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\"><circle cx=\"11\" cy=\"11\" r=\"7\"></circle><path d=\"M20 20l-3.5-3.5\"></path></svg>\n        </button>",
          "target": [
            "button[aria-label=\"Submit search\"]"
          ]
        }
      ]
    },
    {
      "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>Meridian <span>Signal</span></h1>",
                  "target": [
                    "h1"
                  ]
                },
                {
                  "html": "<h2><a href=\"#features\">The 4 A.M. Forecast: How One Coastline Learned to Read Its Own Skies</a></h2>",
                  "target": [
                    ".lead > div:nth-child(2) > h2"
                  ]
                },
                {
                  "html": "<h4><a href=\"#breaking\">Council's Stormwater Vote Clears Path for Harbor District Overhaul</a></h4>",
                  "target": [
                    ".mini:nth-child(2) > div > h4"
                  ]
                },
                {
                  "html": "<h4><a href=\"#breaking\">Energy Futures Slide as Refinery Outage Extends Into a Fourth Day</a></h4>",
                  "target": [
                    ".mini:nth-child(3) > div > h4"
                  ]
                },
                {
                  "html": "<h4><a href=\"#local\">Line 6 Reroute Adds 12 Minutes for 40,000 Daily Riders</a></h4>",
                  "target": [
                    ".mini:nth-child(4) > div > h4"
                  ]
                },
                {
                  "html": "<h4><a href=\"#features\">The Satellite That Changed How We Warn a City About Heat</a></h4>",
                  "target": [
                    ".mini:nth-child(5) > div > h4"
                  ]
                },
                {
                  "html": "<h4>The Signal Briefing, in your inbox by 6:30 a.m.</h4>",
                  "target": [
                    ".hero-side__promo > h4"
                  ]
                },
                {
                  "html": "<h2>Breaking News &amp; Latest Headlines</h2>",
                  "target": [
                    "#breaking > .wrap > .sec-head.reveal > div > h2"
                  ]
                },
                {
                  "html": "<h3><a href=\"#\"><span class=\"tag\">Weather</span>Flash Flood Watch Expanded to Eastvale as Rain Bands Stall Inland</a></h3>",
                  "target": [
                    ".feed > .reveal:nth-child(1) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3><a href=\"#\"><span class=\"tag\">City Hall</span>$214M Resilience Package Passes After Four Hours of Testimony</a></h3>",
                  "target": [
                    ".feed > .reveal:nth-child(2) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3><a href=\"#\"><span class=\"tag sky\">Business</span>Refinery Outage Enters Day Four; Wholesale Gas Prices Up 6%</a></h3>",
                  "target": [
                    ".feed > .reveal:nth-child(3) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3><a href=\"#\"><span class=\"tag gold\">Markets</span>Signal Composite Edges Higher; Utilities Lead a Cautious Session</a></h3>",
                  "target": [
                    ".feed > .reveal:nth-child(4) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3><a href=\"#\"><span class=\"tag out\">Health</span>Cooling Centers Open Across Northgate Ahead of a Heat Advisory</a></h3>",
                  "target": [
                    ".reveal:nth-child(5) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3><a href=\"#\"><span class=\"tag out\">Culture</span>The Harbor Lights Festival Returns With a Rebuilt Main Stage</a></h3>",
                  "target": [
                    ".reveal:nth-child(6) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h2>Weather That Behaves Like News</h2>",
                  "target": [
                    ".sec-head--dark > div > h2"
                  ]
                },
                {
                  "html": "<h4>Afternoon Forecast, on video</h4>",
                  "target": [
                    ".broadcast > h4"
                  ]
                },
                {
                  "html": "<h3 id=\"fcTitle\">Five-Day Outlook \u00b7 Harbor</h3>",
                  "target": [
                    "#fcTitle"
                  ]
                },
                {
                  "html": "<h4>How we build a forecast</h4>",
                  "target": [
                    "div:nth-child(1) > h4"
                  ]
                },
                {
                  "html": "<h4>Reading the weather patterns</h4>",
                  "target": [
                    ".wx-note > div:nth-child(2) > h4"
                  ]
                },
                {
                  "html": "<h2>Stories Worth the Time They Take</h2>",
                  "target": [
                    "#features > .wrap > .sec-head.reveal > div > h2"
                  ]
                },
                {
                  "html": "<h3>The Five Blocks That Flood First \u2014 And the Century-Old Decision That Made Them</h3>",
                  "target": [
                    ".feat--wide > .feat__body > h3"
                  ]
                },
                {
                  "html": "<h3>The Satellite That Changed How a City Warns You About Heat</h3>",
                  "target": [
                    ".feat:nth-child(2) > .feat__body > h3"
                  ]
                },
                {
                  "html": "<h3>Night Shift: The 3 A.M. Crew Keeping 40,000 Commuters Moving</h3>",
                  "target": [
                    ".feat:nth-child(3) > .feat__body > h3"
                  ]
                },
                {
                  "html": "<h3>Port Traffic Fell 8%. The Inland Terminals Didn't Get the Memo.</h3>",
                  "target": [
                    ".feat:nth-child(4) > .feat__body > h3"
                  ]
                },
                {
                  "html": "<h2>Argued, Not Announced</h2>",
                  "target": [
                    "#opinion > .wrap > .sec-head.reveal > div > h2"
                  ]
                },
                {
                  "html": "<h3>Stop Rebuilding in the Same Place and Call It Resilience</h3>",
                  "target": [
                    ".col-card:nth-child(1) > h3"
                  ]
                },
                {
                  "html": "<h3>What 1.4 Million Readings Tell Us About the Flood Alert Lag</h3>",
                  "target": [
                    ".col-card:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>The Commute Is a Weather Story Now, and That Should Worry Us</h3>",
                  "target": [
                    ".col-card:nth-child(3) > h3"
                  ]
                },
                {
                  "html": "<h2 style=\"font-family:var(--serif);font-weight:800;font-size:clamp(1.8rem,3vw,2.5rem);margin:12px 0 16px\">The News That Decides Your Week</h2>",
                  "target": [
                    ".reveal:nth-child(2) > h2"
                  ]
                },
                {
                  "html": "<h2>Your Take, Counted</h2>",
                  "target": [
                    "#poll > .wrap > .sec-head.reveal > div > h2"
                  ]
                },
                {
                  "html": "<h3>Today's Question</h3>",
                  "target": [
                    ".poll__head > h3"
                  ]
                },
                {
                  "html": "<h3>Why we ask</h3>",
                  "target": [
                    ".poll-side > h3"
                  ]
                },
                {
                  "html": "<h2>Frequently Asked Questions</h2>",
                  "target": [
                    "#faq > .wrap > .sec-head.reveal > div > h2"
                  ]
                },
                {
                  "html": "<h2>Why 412,000 People Keep Us on the First Tab</h2>",
                  "target": [
                    ".sec--tint.sec:nth-child(13) > .wrap > .sec-head.reveal > div > h2"
                  ]
                },
                {
                  "html": "<h2>Start the morning knowing what's coming.</h2>",
                  "target": [
                    ".reveal:nth-child(1) > h2"
                  ]
                },
                {
                  "html": "<h3>Sign Up Free</h3>",
                  "target": [
                    "#newsForm > h3"
                  ]
                },
                {
                  "html": "<h4>Sections</h4>",
                  "target": [
                    ".f-col:nth-child(2) > h4"
                  ]
                },
                {
                  "html": "<h4>Weather Tools</h4>",
                  "target": [
                    ".f-col:nth-child(3) > h4"
                  ]
                },
                {
                  "html": "<h4>Company</h4>",
                  "target": [
                    ".f-col:nth-child(4) > h4"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a heading"
            }
          ],
          "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": "#ffffff",
                "bgColor": "#05070a",
                "contrastRatio": 20.16,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has sufficient color contrast of 20.16"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<span class=\"live\"><i class=\"dot\"></i> Live Newsroom</span>",
          "target": [
            ".live"
          ]
        }
      ]
    },
    {
      "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": "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": [],
              "impact": "moderate",
              "message": "Form field does not have multiple label elements"
            }
          ],
          "impact": null,
          "html": "<input type=\"search\" placeholder=\"Search 142,000 stories\u2026\" aria-label=\"Search the newsroom\">",
          "target": [
            "input[type=\"search\"]"
          ]
        }
      ]
    },
    {
      "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 class=\"brand__logo\" src=\"https://placehold.co/240x64/12161C/F5F1E8?text=MERIDIAN+SIGNAL&amp;font=oswald\" alt=\"Meridian Signal logo\" width=\"240\" height=\"64\">",
          "target": [
            ".brand__logo"
          ]
        }
      ]
    },
    {
      "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": "aria-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-label attribute exists and is not empty"
            },
            {
              "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=\"search\" placeholder=\"Search 142,000 stories\u2026\" aria-label=\"Search the newsroom\">",
          "target": [
            "input[type=\"search\"]"
          ]
        }
      ]
    },
    {
      "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": [
        {
          "any": [
            {
              "id": "link-in-text-block-style",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<div class=\"hero-side__promo\">",
                  "target": [
                    ".hero-side__promo"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Links can be distinguished from surrounding text by visual styling"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a class=\"btn btn--light\" href=\"#newsletters\">Sign Up Free</a>",
          "target": [
            ".hero-side__promo > .btn--light.btn[href$=\"#newsletters\"]"
          ]
        }
      ]
    },
    {
      "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\">Newsletters</a>",
          "target": [
            ".tb-right > a[href$=\"#newsletters\"]:nth-child(1)"
          ]
        }
      ]
    },
    {
      "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-list\" id=\"navList\">",
          "target": [
            "#navList"
          ]
        }
      ]
    },
    {
      "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=\"#top\" class=\"active\">Home</a></li>",
          "target": [
            "#navList > 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 class=\"brand__logo\" src=\"https://placehold.co/240x64/12161C/F5F1E8?text=MERIDIAN+SIGNAL&amp;font=oswald\" alt=\"Meridian Signal logo\" width=\"240\" height=\"64\">",
          "target": [
            ".brand__logo"
          ]
        }
      ]
    },
    {
      "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\">Newsletters</a>",
          "target": [
            ".tb-right > a[href$=\"#newsletters\"]:nth-child(1)"
          ]
        }
      ]
    }
  ],
  "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": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": "pseudoContent",
                "expectedContrastRatio": "4.5:1"
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec weather\" id=\"weather\">",
                  "target": [
                    "#weather"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element's background color could not be determined due to a pseudo element"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<button class=\"city-btn on\" data-city=\"harbor\" role=\"tab\" aria-selected=\"true\">Harbor City</button>",
          "target": [
            "button[data-city=\"harbor\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element's background color could not be determined due to a pseudo element"
        }
      ]
    }
  ],
  "violations": [
    {
      "id": "aria-required-children",
      "impact": "critical",
      "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": [
        {
          "any": [
            {
              "id": "aria-required-children",
              "data": {
                "messageKey": "unallowed",
                "values": "[role=group]"
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"unit-toggle\" role=\"group\" aria-label=\"Temperature unit\">\n        <button class=\"on\" data-unit=\"f\" aria-pressed=\"true\">\u00b0F</button>\n        <button data-unit=\"c\" aria-pressed=\"false\">\u00b0C</button>\n      </div>",
                  "target": [
                    ".unit-toggle"
                  ]
                }
              ],
              "impact": "critical",
              "message": "Element has children which are not allowed: [role=group]"
            }
          ],
          "all": [],
          "none": [],
          "impact": "critical",
          "html": "<div class=\"city-bar\" role=\"tablist\" aria-label=\"Choose a forecast city\">",
          "target": [
            ".city-bar"
          ],
          "failureSummary": "Fix any of the following:\n  Element has children which are not allowed: [role=group]"
        }
      ]
    },
    {
      "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": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"ticker\" role=\"region\" aria-label=\"Breaking news ticker\">",
                  "target": [
                    ".ticker"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"ticker__item\">City Council approves $214M stormwater resilience package in 7\u20132 vote</div>",
          "target": [
            ".ticker__item:nth-child(2)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"ticker\" role=\"region\" aria-label=\"Breaking news ticker\">",
                  "target": [
                    ".ticker"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"ticker__item\">Transit authority reroutes Line 6 as crews repair tunnel leak at Halsted</div>",
          "target": [
            ".ticker__item:nth-child(3)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"ticker\" role=\"region\" aria-label=\"Breaking news ticker\">",
                  "target": [
                    ".ticker"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"ticker__item\">Markets close mixed: Signal Composite up 0.4%, energy futures slip 1.8%</div>",
          "target": [
            ".ticker__item:nth-child(4)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a class=\"btn btn--flare\" href=\"#newsletters\">Subscribe</a>",
                  "target": [
                    ".btn--flare.btn[href$=\"#newsletters\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a class=\"btn btn--flare\" href=\"#newsletters\">Subscribe</a>",
          "target": [
            ".btn--flare.btn[href$=\"#newsletters\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "8.6pt (11.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span class=\"badge\">Lead Investigation</span>",
                  "target": [
                    ".badge"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 8.6pt (11.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"badge\">Lead Investigation</span>",
          "target": [
            ".badge"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 8.6pt (11.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">The Forecast Files \u00b7 Part One</span>",
          "target": [
            ".lead > div:nth-child(2) > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<em>Updated Live</em>",
          "target": [
            ".hero-side__head > em"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#2e8fb5",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.44,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.44 (foreground color: #2e8fb5, background color: #faf7f2, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>14 min ago</b>",
          "target": [
            ".mini:nth-child(2) > div > .meta > b"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.44 (foreground color: #2e8fb5, background color: #faf7f2, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#2e8fb5",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.44,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.44 (foreground color: #2e8fb5, background color: #faf7f2, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>38 min ago</b>",
          "target": [
            ".mini:nth-child(3) > div > .meta > b"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.44 (foreground color: #2e8fb5, background color: #faf7f2, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#2e8fb5",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.44,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.44 (foreground color: #2e8fb5, background color: #faf7f2, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>1 hr ago</b>",
          "target": [
            ".mini:nth-child(4) > div > .meta > b"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.44 (foreground color: #2e8fb5, background color: #faf7f2, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#2e8fb5",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.44,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.44 (foreground color: #2e8fb5, background color: #faf7f2, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>2 hrs ago</b>",
          "target": [
            ".mini:nth-child(5) > div > .meta > b"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.44 (foreground color: #2e8fb5, background color: #faf7f2, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6e7784",
                "bgColor": "#0e1116",
                "contrastRatio": 4.17,
                "fontSize": "8.6pt (11.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer>",
                  "target": [
                    "footer"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.17 (foreground color: #6e7784, background color: #0e1116, font size: 8.6pt (11.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"f-legal\">\u00a9 <span id=\"yr\">2026</span> Meridian Signal Media Group. All rights reserved.</span>",
          "target": [
            ".f-legal"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.17 (foreground color: #6e7784, background color: #0e1116, font size: 8.6pt (11.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6e7784",
                "bgColor": "#0e1116",
                "contrastRatio": 4.17,
                "fontSize": "8.6pt (11.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer>",
                  "target": [
                    "footer"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.17 (foreground color: #6e7784, background color: #0e1116, font size: 8.6pt (11.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span id=\"yr\">2026</span>",
          "target": [
            "#yr"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.17 (foreground color: #6e7784, background color: #0e1116, font size: 8.6pt (11.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Live Wire</span>",
          "target": [
            ".in.sec-head.reveal > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"time\">9:41 AM<span>2 min ago</span></div>",
          "target": [
            ".in.reveal > .time"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"card__head hot\"><span>Trending Now</span><span>24h</span></div>",
                  "target": [
                    ".hot"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span>Trending Now</span>",
          "target": [
            ".hot > span:nth-child(1)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"card__head hot\"><span>Trending Now</span><span>24h</span></div>",
                  "target": [
                    ".hot"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span>24h</span>",
          "target": [
            ".hot > span:nth-child(2)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Live Wire</span>",
          "target": [
            ".sec-head.in.reveal > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"time\">9:41 AM<span>2 min ago</span></div>",
          "target": [
            ".in.reveal:nth-child(1) > .time"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"time\">9:18 AM<span>25 min ago</span></div>",
          "target": [
            ".in.reveal:nth-child(2) > .time"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"time\">8:55 AM<span>48 min ago</span></div>",
          "target": [
            ".in.reveal:nth-child(3) > .time"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#2e8fb5",
                "contrastRatio": 3.67,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span class=\"tag sky\">Business</span>",
                  "target": [
                    ".sky.tag"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.67 (foreground color: #ffffff, background color: #2e8fb5, font size: 7.9pt (10.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"tag sky\">Business</span>",
          "target": [
            ".sky.tag"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.67 (foreground color: #ffffff, background color: #2e8fb5, font size: 7.9pt (10.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"time\">8:30 AM<span>1 hr ago</span></div>",
          "target": [
            ".in.reveal:nth-child(4) > .time"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"time\">7:52 AM<span>2 hrs ago</span></div>",
          "target": [
            ".in.reveal:nth-child(5) > .time"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"time\">7:05 AM<span>3 hrs ago</span></div>",
          "target": [
            ".in.reveal:nth-child(6) > .time"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"ticker\" role=\"region\" aria-label=\"Breaking news ticker\">",
                  "target": [
                    ".ticker"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"ticker__item\">Northgate Heat Advisory: cooling centers open at 11 a.m. across four districts</div>",
          "target": [
            ".ticker__item:nth-child(5)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Live Wire</span>",
          "target": [
            "#breaking > .wrap > .sec-head.in.reveal > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#f1ece3",
                "contrastRatio": 3.16,
                "fontSize": "12.8pt (17px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"date-chip\"><b>12</b><span>Jun</span></div>",
                  "target": [
                    "li:nth-child(1) > .date-chip"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 12.8pt (17px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>12</b>",
          "target": [
            "li:nth-child(1) > .date-chip > b"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 12.8pt (17px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#f1ece3",
                "contrastRatio": 3.16,
                "fontSize": "12.8pt (17px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"date-chip\"><b>13</b><span>Jun</span></div>",
                  "target": [
                    "li:nth-child(2) > .date-chip"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 12.8pt (17px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>13</b>",
          "target": [
            "li:nth-child(2) > .date-chip > b"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 12.8pt (17px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#f1ece3",
                "contrastRatio": 3.16,
                "fontSize": "12.8pt (17px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"date-chip\"><b>15</b><span>Jun</span></div>",
                  "target": [
                    "li:nth-child(3) > .date-chip"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 12.8pt (17px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>15</b>",
          "target": [
            "li:nth-child(3) > .date-chip > b"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 12.8pt (17px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#f1ece3",
                "contrastRatio": 3.16,
                "fontSize": "12.8pt (17px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"date-chip\"><b>18</b><span>Jun</span></div>",
                  "target": [
                    "li:nth-child(4) > .date-chip"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 12.8pt (17px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>18</b>",
          "target": [
            "li:nth-child(4) > .date-chip > b"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 12.8pt (17px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Feature Articles \u00b7 The Long Read</span>",
          "target": [
            "#features > .wrap > .sec-head.in.reveal > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"feat feat--wide reveal in\">",
                  "target": [
                    ".feat--wide"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Part Two \u00b7 The Forecast Files</span>",
          "target": [
            ".feat--wide > .feat__body > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"feat reveal in\">",
                  "target": [
                    ".feat:nth-child(2)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Science</span>",
          "target": [
            ".feat:nth-child(2) > .feat__body > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"feat reveal in\">",
                  "target": [
                    ".feat:nth-child(2)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a class=\"link-more\" href=\"#\">Read More</a>",
          "target": [
            ".feat:nth-child(2) > .feat__body > .foot > .link-more[href=\"#\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"feat reveal in\">",
                  "target": [
                    ".feat:nth-child(3)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Labor</span>",
          "target": [
            ".feat:nth-child(3) > .feat__body > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"feat reveal in\">",
                  "target": [
                    ".feat:nth-child(3)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a class=\"link-more\" href=\"#\">Read More</a>",
          "target": [
            ".feat:nth-child(3) > .feat__body > .foot > .link-more[href=\"#\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"feat reveal in\">",
                  "target": [
                    ".feat:nth-child(4)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Economy</span>",
          "target": [
            ".feat:nth-child(4) > .feat__body > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"feat reveal in\">",
                  "target": [
                    ".feat:nth-child(4)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a class=\"link-more\" href=\"#\">Read More</a>",
          "target": [
            ".feat:nth-child(4) > .feat__body > .foot > .link-more[href=\"#\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#f1ece3",
                "contrastRatio": 3.16,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec sec--tint\" id=\"opinion\">",
                  "target": [
                    "#opinion"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Opinion &amp; Analysis</span>",
          "target": [
            "#opinion > .wrap > .sec-head.in.reveal > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"col-card reveal in\">",
                  "target": [
                    ".col-card:nth-child(1)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a class=\"link-more\" href=\"#\">Read More</a>",
          "target": [
            ".col-card:nth-child(1) > .foot > .link-more[href=\"#\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"col-card reveal in\">",
                  "target": [
                    ".col-card:nth-child(2)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a class=\"link-more\" href=\"#\">Read More</a>",
          "target": [
            ".col-card:nth-child(2) > .foot > .link-more[href=\"#\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"col-card reveal in\">",
                  "target": [
                    ".col-card:nth-child(3)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a class=\"link-more\" href=\"#\">Read More</a>",
          "target": [
            ".col-card:nth-child(3) > .foot > .link-more[href=\"#\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Local \u00b7 Across the District</span>",
          "target": [
            ".in.reveal > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"stat\"><b>68</b><span>Neighborhoods covered by a named Signal reporter</span></div>",
                  "target": [
                    ".stat"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span>Neighborhoods covered by a named Signal reporter</span>",
          "target": [
            ".stat > span"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Local \u00b7 Across the District</span>",
          "target": [
            ".in.reveal:nth-child(2) > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"ticker\" role=\"region\" aria-label=\"Breaking news ticker\">",
                  "target": [
                    ".ticker"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"ticker__item\" aria-hidden=\"true\">Coastal flood advisory extended through 9 p.m. for Harbor City and Eastvale shoreline</div>",
          "target": [
            ".ticker__item[aria-hidden=\"true\"]:nth-child(6)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#f1ece3",
                "contrastRatio": 3.16,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec sec--tint\" id=\"poll\">",
                  "target": [
                    "#poll"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Reader Poll \u00b7 Signal Pulse</span>",
          "target": [
            "#poll > .wrap > .sec-head.in.reveal > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<button class=\"btn btn--flare\" id=\"voteBtn\" type=\"button\">Cast My Vote</button>",
                  "target": [
                    "#voteBtn"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<button class=\"btn btn--flare\" id=\"voteBtn\" type=\"button\">Cast My Vote</button>",
          "target": [
            "#voteBtn"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "8.6pt (11.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"poll reveal in\" id=\"pollCard\">",
                  "target": [
                    "#pollCard"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 8.6pt (11.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a class=\"link-more\" href=\"#faq\" style=\"font-size:11.5px\">How we run polls</a>",
          "target": [
            ".link-more[href$=\"#faq\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #e4552b, background color: #ffffff, font size: 8.6pt (11.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Standards &amp; Service</span>",
          "target": [
            "#faq > .wrap > .sec-head.in.reveal > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#f1ece3",
                "contrastRatio": 3.16,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec sec--tint\">",
                  "target": [
                    ".sec--tint.sec:nth-child(13)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">From Our Readers</span>",
          "target": [
            ".sec--tint.sec:nth-child(13) > .wrap > .sec-head.in.reveal > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Live Wire</span>",
          "target": [
            "#breaking > .wrap > .sec-head.reveal.in > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"time\">9:41 AM<span>2 min ago</span></div>",
          "target": [
            ".reveal.in:nth-child(1) > .time"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"time\">9:18 AM<span>25 min ago</span></div>",
          "target": [
            ".reveal.in:nth-child(2) > .time"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"time\">8:55 AM<span>48 min ago</span></div>",
          "target": [
            ".reveal.in:nth-child(3) > .time"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"time\">8:30 AM<span>1 hr ago</span></div>",
          "target": [
            ".reveal.in:nth-child(4) > .time"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"time\">7:52 AM<span>2 hrs ago</span></div>",
          "target": [
            ".reveal.in:nth-child(5) > .time"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"time\">7:05 AM<span>3 hrs ago</span></div>",
          "target": [
            ".reveal.in:nth-child(6) > .time"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Feature Articles \u00b7 The Long Read</span>",
          "target": [
            "#features > .wrap > .sec-head.reveal.in > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#f1ece3",
                "contrastRatio": 3.16,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec sec--tint\" id=\"opinion\">",
                  "target": [
                    "#opinion"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Opinion &amp; Analysis</span>",
          "target": [
            "#opinion > .wrap > .sec-head.reveal.in > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Local \u00b7 Across the District</span>",
          "target": [
            ".reveal.in:nth-child(2) > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#f1ece3",
                "contrastRatio": 3.16,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec sec--tint\" id=\"poll\">",
                  "target": [
                    "#poll"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Reader Poll \u00b7 Signal Pulse</span>",
          "target": [
            "#poll > .wrap > .sec-head.reveal.in > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#faf7f2",
                "contrastRatio": 3.48,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body id=\"top\">",
                  "target": [
                    "#top"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">Standards &amp; Service</span>",
          "target": [
            "#faq > .wrap > .sec-head.reveal.in > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.48 (foreground color: #e4552b, background color: #faf7f2, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e4552b",
                "bgColor": "#f1ece3",
                "contrastRatio": 3.16,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec sec--tint\">",
                  "target": [
                    ".sec--tint.sec:nth-child(13)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\">From Our Readers</span>",
          "target": [
            ".sec--tint.sec:nth-child(13) > .wrap > .sec-head.reveal.in > div > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.16 (foreground color: #e4552b, background color: #f1ece3, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"news-cta\" id=\"newsletters\">",
                  "target": [
                    "#newsletters"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"kicker\" style=\"color:#fff\">Newsletters \u00b7 Free</span>",
          "target": [
            ".reveal.in:nth-child(1) > .kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fceeea",
                "bgColor": "#e4552b",
                "contrastRatio": 3.29,
                "fontSize": "12.4pt (16.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"news-cta\" id=\"newsletters\">",
                  "target": [
                    "#newsletters"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.29 (foreground color: #fceeea, background color: #e4552b, font size: 12.4pt (16.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p>",
          "target": [
            ".news-grid > .reveal.in:nth-child(1) > p"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.29 (foreground color: #fceeea, background color: #e4552b, font size: 12.4pt (16.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fceeea",
                "bgColor": "#e4552b",
                "contrastRatio": 3.29,
                "fontSize": "12.4pt (16.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"news-cta\" id=\"newsletters\">",
                  "target": [
                    "#newsletters"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.29 (foreground color: #fceeea, background color: #e4552b, font size: 12.4pt (16.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>The Signal Briefing</b>",
          "target": [
            ".reveal.in:nth-child(1) > p > b:nth-child(1)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.29 (foreground color: #fceeea, background color: #e4552b, font size: 12.4pt (16.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fceeea",
                "bgColor": "#e4552b",
                "contrastRatio": 3.29,
                "fontSize": "12.4pt (16.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"news-cta\" id=\"newsletters\">",
                  "target": [
                    "#newsletters"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.29 (foreground color: #fceeea, background color: #e4552b, font size: 12.4pt (16.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>The Weather Window</b>",
          "target": [
            "b:nth-child(2)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.29 (foreground color: #fceeea, background color: #e4552b, font size: 12.4pt (16.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fceeea",
                "bgColor": "#e4552b",
                "contrastRatio": 3.29,
                "fontSize": "12.4pt (16.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"news-cta\" id=\"newsletters\">",
                  "target": [
                    "#newsletters"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.29 (foreground color: #fceeea, background color: #e4552b, font size: 12.4pt (16.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>The Local Dispatch</b>",
          "target": [
            "b:nth-child(3)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.29 (foreground color: #fceeea, background color: #e4552b, font size: 12.4pt (16.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fceeea",
                "bgColor": "#e4552b",
                "contrastRatio": 3.29,
                "fontSize": "12.4pt (16.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"news-cta\" id=\"newsletters\">",
                  "target": [
                    "#newsletters"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.29 (foreground color: #fceeea, background color: #e4552b, font size: 12.4pt (16.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>The Long Read</b>",
          "target": [
            "b:nth-child(4)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.29 (foreground color: #fceeea, background color: #e4552b, font size: 12.4pt (16.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"news-cta\" id=\"newsletters\">",
                  "target": [
                    "#newsletters"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span>\u25c6 412,000 subscribers</span>",
          "target": [
            ".news-grid > .reveal.in:nth-child(1) > div > span:nth-child(1)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"news-cta\" id=\"newsletters\">",
                  "target": [
                    "#newsletters"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span>\u25c6 62% average open rate</span>",
          "target": [
            ".news-grid > .reveal.in:nth-child(1) > div > span:nth-child(2)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"news-cta\" id=\"newsletters\">",
                  "target": [
                    "#newsletters"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span>\u25c6 No spam, ever</span>",
          "target": [
            ".news-grid > .reveal.in:nth-child(1) > div > span:nth-child(3)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#e4552b",
                "contrastRatio": 3.72,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<button class=\"btn btn--flare\" type=\"submit\">Sign Up</button>",
                  "target": [
                    ".btn--flare[type=\"submit\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.4pt (12.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<button class=\"btn btn--flare\" type=\"submit\">Sign Up</button>",
          "target": [
            ".btn--flare[type=\"submit\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #ffffff, background color: #e4552b, font size: 9.4pt (12.5px), 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": {
                "messageKey": "partiallyObscured",
                "minSize": 24,
                "width": 681.4,
                "height": 22.8
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#weather\">Weather</a>",
                  "target": [
                    "#navList > li:nth-child(2) > a[href$=\"#weather\"]"
                  ]
                },
                {
                  "html": "<a href=\"#breaking\" class=\"active\">Breaking News</a>",
                  "target": [
                    ".active"
                  ]
                },
                {
                  "html": "<a href=\"#features\">Long Reads</a>",
                  "target": [
                    "#navList > li:nth-child(4) > a[href$=\"#features\"]"
                  ]
                },
                {
                  "html": "<a href=\"#local\">Local</a>",
                  "target": [
                    "li:nth-child(5) > a[href$=\"#local\"]"
                  ]
                },
                {
                  "html": "<a href=\"#opinion\">Opinion &amp; Analysis</a>",
                  "target": [
                    "li:nth-child(6) > a[href$=\"#opinion\"]"
                  ]
                },
                {
                  "html": "<a href=\"#poll\">Reader Poll</a>",
                  "target": [
                    "#navList > li:nth-child(7) > a[href$=\"#poll\"]"
                  ]
                },
                {
                  "html": "<a href=\"#faq\">Standards</a>",
                  "target": [
                    "li:nth-child(8) > a[href$=\"#faq\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Target has insufficient size because it is partially obscured (smallest space is 681.4px by 22.8px, should be at least 24px by 24px)"
            },
            {
              "id": "target-offset",
              "data": {
                "closestOffset": 22.8,
                "minOffset": 24
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#local\">Local</a>",
                  "target": [
                    "li:nth-child(5) > a[href$=\"#local\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 22.8px instead of at least 24px."
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#\"><span class=\"tag out\">Health</span>Cooling Centers Open Across Northgate Ahead of a Heat Advisory</a>",
          "target": [
            ".in.reveal:nth-child(5) > div:nth-child(2) > h3 > a[href=\"#\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Target has insufficient size because it is partially obscured (smallest space is 681.4px by 22.8px, should be at least 24px by 24px)\n  Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 22.8px instead of at least 24px."
        },
        {
          "any": [
            {
              "id": "target-size",
              "data": {
                "messageKey": "partiallyObscured",
                "minSize": 24,
                "width": 74.2,
                "height": 10.4
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#breaking\" class=\"\">Breaking News</a>",
                  "target": [
                    "li:nth-child(3) > a[href$=\"#breaking\"]"
                  ]
                },
                {
                  "html": "<a href=\"#features\" class=\"\">Long Reads</a>",
                  "target": [
                    "#navList > li:nth-child(4) > a[href$=\"#features\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Target has insufficient size because it is partially obscured (smallest space is 74.2px by 10.4px, should be at least 24px by 24px)"
            },
            {
              "id": "target-offset",
              "data": {
                "closestOffset": 13.4,
                "minOffset": 24
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#features\" class=\"\">Long Reads</a>",
                  "target": [
                    "#navList > li:nth-child(4) > a[href$=\"#features\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 13.4px instead of at least 24px."
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a class=\"link-more\" href=\"#\">Read More</a>",
          "target": [
            ".col-card:nth-child(1) > .foot > .link-more[href=\"#\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Target has insufficient size because it is partially obscured (smallest space is 74.2px by 10.4px, should be at least 24px by 24px)\n  Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 13.4px instead of at least 24px."
        },
        {
          "any": [
            {
              "id": "target-size",
              "data": {
                "messageKey": "partiallyObscured",
                "minSize": 24,
                "width": 74.2,
                "height": 10.4
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#poll\">Reader Poll</a>",
                  "target": [
                    "#navList > li:nth-child(7) > a[href$=\"#poll\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Target has insufficient size because it is partially obscured (smallest space is 74.2px by 10.4px, should be at least 24px by 24px)"
            },
            {
              "id": "target-offset",
              "data": {
                "closestOffset": 13.4,
                "minOffset": 24
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#poll\">Reader Poll</a>",
                  "target": [
                    "#navList > li:nth-child(7) > a[href$=\"#poll\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 13.4px instead of at least 24px."
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a class=\"link-more\" href=\"#\">Read More</a>",
          "target": [
            ".col-card:nth-child(2) > .foot > .link-more[href=\"#\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Target has insufficient size because it is partially obscured (smallest space is 74.2px by 10.4px, should be at least 24px by 24px)\n  Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 13.4px instead of at least 24px."
        },
        {
          "any": [
            {
              "id": "target-size",
              "data": {
                "messageKey": "partiallyObscured",
                "minSize": 24,
                "width": 74.2,
                "height": 13.2
              },
              "relatedNodes": [
                {
                  "html": "<a class=\"btn btn--outline-l\" href=\"#weather\">Watch Weather</a>",
                  "target": [
                    ".btn--outline-l.btn[href$=\"#weather\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Target has insufficient size because it is partially obscured (smallest space is 74.2px by 13.2px, should be at least 24px by 24px)"
            },
            {
              "id": "target-offset",
              "data": {
                "closestOffset": 19,
                "minOffset": 24
              },
              "relatedNodes": [
                {
                  "html": "<a class=\"btn btn--outline-l\" href=\"#weather\">Watch Weather</a>",
                  "target": [
                    ".btn--outline-l.btn[href$=\"#weather\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 19px instead of at least 24px."
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a class=\"link-more\" href=\"#\">Read More</a>",
          "target": [
            ".col-card:nth-child(3) > .foot > .link-more[href=\"#\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Target has insufficient size because it is partially obscured (smallest space is 74.2px by 13.2px, should be at least 24px by 24px)\n  Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 19px instead of at least 24px."
        }
      ]
    }
  ],
  "coverage": {
    "contract": "main-document-vertical-scroll",
    "complete": true,
    "positions": [
      {
        "y": 0,
        "height": 12634
      },
      {
        "y": 576,
        "height": 12634
      },
      {
        "y": 1152,
        "height": 12634
      },
      {
        "y": 1728,
        "height": 12634
      },
      {
        "y": 2304,
        "height": 12634
      },
      {
        "y": 2880,
        "height": 12634
      },
      {
        "y": 3456,
        "height": 12634
      },
      {
        "y": 4032,
        "height": 12634
      },
      {
        "y": 4608,
        "height": 12634
      },
      {
        "y": 5184,
        "height": 12634
      },
      {
        "y": 5760,
        "height": 12634
      },
      {
        "y": 6336,
        "height": 12634
      },
      {
        "y": 6912,
        "height": 12634
      },
      {
        "y": 7488,
        "height": 12634
      },
      {
        "y": 8064,
        "height": 12634
      },
      {
        "y": 8640,
        "height": 12634
      },
      {
        "y": 9216,
        "height": 12634
      },
      {
        "y": 9792,
        "height": 12634
      },
      {
        "y": 10368,
        "height": 12634
      },
      {
        "y": 10944,
        "height": 12634
      },
      {
        "y": 11520,
        "height": 12634
      },
      {
        "y": 11914,
        "height": 12634
      }
    ],
    "scans": 23,
    "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: "Weather", "Breaking News", "Local".
-   **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: "Weather Forecasts", "Feature Articles", "Opinion & Analysis".
    -   **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "editorial", "headline", "weather patterns".
    -   **Visuals:** Integrate relevant placeholder images logically within the content sections.
    -   **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Watch Weather", "Read More", "Sign Up".
-   **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: "poll widget".
-   **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "weather outlook", "upcoming events", "trending stories".
-   **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.