Anthropic Claude Opus 5.5 – Health and Fitness
via Azure · Generated
- AIMAC Debt 10.51
- Cost $0.53
- Total Violations 41
- HTML Size 60 KB
- Em Dashes 22
Screenshot
View Live Page
Accessibility Issues Found
1 Critical 40 Serious
-
aria-required-children critical 1 instance
Certain ARIA roles must contain particular children
Example HTML
<div class="tabs" role="tablist" aria-label="Filter classes"> -
color-contrast serious 40 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<a href="#toolkit" class="btn btn-primary">Book a Visit →</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 Vitality | Integrated Medicine, Movement & Nutrition</title>
<meta name="description" content="Meridian Vitality is an integrated health and fitness center offering primary care, telehealth, nutrition counseling, rehabilitation, fitness classes, and secure online lab results.">
<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=Fraunces:opsz,wght@9..144,500;9..144,700&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
:root{
--ink:#13292a;
--teal:#0f4c4a;
--teal-2:#1b6b67;
--mint:#d9efe8;
--cream:#f7f4ee;
--coral:#ff6b4a;
--coral-dark:#e2502f;
--muted:#5b6b6b;
--line:#e3ddd2;
--white:#fff;
--radius:18px;
--shadow:0 12px 32px rgba(15,76,74,.10);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:'Inter',system-ui,sans-serif;color:var(--ink);background:var(--cream);line-height:1.65;font-size:16px}
img{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3,h4{font-family:'Fraunces',Georgia,serif;line-height:1.15;color:var(--teal)}
h2{font-size:clamp(1.9rem,3.4vw,2.7rem);margin-bottom:.8rem}
h3{font-size:1.3rem;margin-bottom:.5rem}
p{margin-bottom:1rem;color:#334342}
.container{width:min(1200px,92%);margin:0 auto}
section{padding:96px 0}
.eyebrow{display:inline-block;font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--coral-dark);margin-bottom:.8rem}
.lead{font-size:1.1rem;max-width:720px}
.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.85rem 1.5rem;border-radius:999px;font-weight:600;text-decoration:none;border:2px solid transparent;cursor:pointer;font-size:.95rem;transition:.2s ease;font-family:inherit}
.btn-primary{background:var(--coral);color:#fff}
.btn-primary:hover{background:var(--coral-dark);transform:translateY(-2px)}
.btn-outline{border-color:var(--teal);color:var(--teal);background:transparent}
.btn-outline:hover{background:var(--teal);color:#fff}
.btn-light{background:#fff;color:var(--teal)}
.btn-light:hover{background:var(--mint)}
.btn-sm{padding:.55rem 1.1rem;font-size:.85rem}
/* Top bar */
.topbar{background:var(--teal);color:#cfe7e1;font-size:.83rem}
.topbar .container{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;flex-wrap:wrap}
.topbar a{color:#fff;text-decoration:none;font-weight:600}
/* Header */
header.site{position:sticky;top:0;z-index:50;background:rgba(247,244,238,.95);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.nav-wrap{display:flex;align-items:center;justify-content:space-between;padding:.9rem 0;gap:1rem}
.brand{display:flex;align-items:center;gap:.8rem;text-decoration:none}
.brand img{width:48px;height:48px;border-radius:14px}
.brand-name{font-family:'Fraunces',serif;font-size:1.35rem;font-weight:700;color:var(--teal);line-height:1}
.brand-tag{font-size:.74rem;color:var(--muted);letter-spacing:.02em}
nav.primary ul{display:flex;list-style:none;gap:1.4rem;align-items:center}
nav.primary a{text-decoration:none;font-weight:500;font-size:.93rem;color:var(--ink);position:relative}
nav.primary a:not(.btn)::after{content:"";position:absolute;left:0;bottom:-4px;width:0;height:2px;background:var(--coral);transition:.25s}
nav.primary a:not(.btn):hover::after{width:100%}
.menu-toggle{display:none;background:none;border:2px solid var(--teal);border-radius:10px;padding:.4rem .7rem;font-weight:700;color:var(--teal);cursor:pointer}
/* Hero */
.hero{padding:72px 0 96px;background:radial-gradient(circle at 85% 20%,var(--mint) 0,transparent 45%),var(--cream)}
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:3.5rem;align-items:center}
.hero h1{font-size:clamp(2.4rem,5vw,4rem);margin-bottom:1.2rem}
.hero h1 em{font-style:italic;color:var(--coral)}
.hero-actions{display:flex;gap:1rem;flex-wrap:wrap;margin:1.8rem 0 2.4rem}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;max-width:520px}
.stat strong{display:block;font-family:'Fraunces',serif;font-size:2rem;color:var(--teal)}
.stat span{font-size:.85rem;color:var(--muted)}
.hero-visual{position:relative}
.hero-visual img{border-radius:28px;box-shadow:var(--shadow);width:100%;height:540px;object-fit:cover}
.float-card{position:absolute;background:#fff;border-radius:16px;padding:1rem 1.2rem;box-shadow:var(--shadow);display:flex;gap:.8rem;align-items:center;font-size:.88rem}
.float-card .dot{width:42px;height:42px;border-radius:12px;background:var(--mint);display:grid;place-items:center;font-size:1.3rem}
.float-card.one{left:-36px;bottom:60px}
.float-card.two{right:-20px;top:40px}
.float-card b{display:block;color:var(--teal)}
/* Trust strip */
.trust{background:#fff;border-block:1px solid var(--line);padding:28px 0}
.trust .container{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1.2rem;color:var(--muted);font-size:.9rem}
.trust strong{color:var(--teal)}
/* Services */
.section-head{display:flex;justify-content:space-between;align-items:end;gap:2rem;margin-bottom:3rem;flex-wrap:wrap}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:1.4rem}
.card{background:#fff;border-radius:var(--radius);padding:1.8rem;border:1px solid var(--line);transition:.25s}
.card:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.icon{width:54px;height:54px;border-radius:14px;background:var(--mint);display:grid;place-items:center;font-size:1.5rem;margin-bottom:1.1rem}
.card p{font-size:.94rem}
.card a.more{font-weight:600;color:var(--coral-dark);text-decoration:none;font-size:.9rem}
.services-feature{display:grid;grid-template-columns:1fr 1fr;gap:3rem;margin-top:4rem;align-items:center;background:var(--teal);border-radius:28px;overflow:hidden}
.services-feature img{height:100%;min-height:380px;object-fit:cover;width:100%}
.services-feature .txt{padding:3rem 3rem 3rem 0}
.services-feature h3{color:#fff;font-size:1.9rem}
.services-feature p{color:#cfe7e1}
.checklist{list-style:none;margin:1rem 0 1.6rem}
.checklist li{padding-left:1.8rem;position:relative;margin-bottom:.55rem}
.checklist li::before{content:"✓";position:absolute;left:0;color:var(--coral);font-weight:700}
.services-feature .checklist li{color:#eaf6f2}
/* Nutrition */
.nutrition{background:#fff}
.split{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}
.img-stack{position:relative}
.img-stack img:first-child{border-radius:24px;width:100%;height:500px;object-fit:cover}
.img-stack img.small{position:absolute;width:46%;right:-24px;bottom:-30px;border-radius:20px;border:8px solid #fff;box-shadow:var(--shadow)}
.pill-row{display:flex;flex-wrap:wrap;gap:.6rem;margin:1.2rem 0 1.8rem}
.pill{background:var(--mint);color:var(--teal);padding:.4rem .9rem;border-radius:999px;font-size:.84rem;font-weight:600}
.programs{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem;margin-top:4rem}
.program{border:1px solid var(--line);border-radius:var(--radius);padding:1.6rem;background:var(--cream)}
.program .price{font-family:'Fraunces',serif;font-size:1.6rem;color:var(--teal)}
.program .price small{font-family:'Inter';font-size:.8rem;color:var(--muted)}
/* Classes */
.tabs{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1.8rem}
.tab{background:#fff;border:1px solid var(--line);border-radius:999px;padding:.55rem 1.1rem;font-weight:600;cursor:pointer;font-family:inherit;color:var(--ink);font-size:.9rem}
.tab.active,.tab:hover{background:var(--teal);color:#fff;border-color:var(--teal)}
.class-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
.class-card{background:#fff;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);display:flex;flex-direction:column}
.class-card img{height:190px;object-fit:cover;width:100%}
.class-body{padding:1.4rem;display:flex;flex-direction:column;flex:1}
.class-meta{display:flex;gap:.8rem;flex-wrap:wrap;font-size:.8rem;color:var(--muted);margin-bottom:.6rem}
.badge{background:#ffe7e0;color:var(--coral-dark);font-weight:700;padding:.15rem .6rem;border-radius:6px;font-size:.75rem}
.class-foot{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:1rem;border-top:1px dashed var(--line)}
.spots{font-size:.82rem;color:var(--muted)}
.class-card.hide{display:none}
/* Toolkit */
.toolkit{background:linear-gradient(160deg,var(--teal) 0,#0b3634 100%);color:#fff}
.toolkit h2,.toolkit h3{color:#fff}
.toolkit p{color:#cfe7e1}
.tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-top:2.5rem}
.panel{background:#fff;color:var(--ink);border-radius:24px;padding:2.2rem}
.panel h3{color:var(--teal)}
.panel p{color:var(--muted);font-size:.93rem}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
label{display:block;font-size:.82rem;font-weight:600;margin:.8rem 0 .35rem;color:var(--ink)}
input,select,textarea{width:100%;padding:.75rem .9rem;border:1.5px solid var(--line);border-radius:12px;font-family:inherit;font-size:.95rem;background:var(--cream);color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--teal-2);background:#fff}
.seg{display:flex;background:var(--cream);border-radius:12px;padding:4px;border:1.5px solid var(--line)}
.seg button{flex:1;border:none;background:none;padding:.55rem;border-radius:9px;font-weight:600;cursor:pointer;font-family:inherit;color:var(--muted)}
.seg button.on{background:var(--teal);color:#fff}
.result{margin-top:1.4rem;background:var(--mint);border-radius:16px;padding:1.3rem;display:none}
.result.show{display:block}
.result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;text-align:center}
.result-grid strong{display:block;font-family:'Fraunces',serif;font-size:1.6rem;color:var(--teal)}
.result-grid span{font-size:.75rem;color:var(--muted)}
.bmi-bar{height:10px;border-radius:99px;margin:1rem 0 .4rem;background:linear-gradient(90deg,#7cc4e8 0 18%,#5cc18f 18% 50%,#f5c043 50% 70%,#ef6a4f 70%);position:relative}
.bmi-marker{position:absolute;top:-5px;width:20px;height:20px;border-radius:50%;background:#fff;border:4px solid var(--teal);transform:translateX(-50%);transition:left .5s}
.result p.note{font-size:.85rem;margin:.6rem 0 0;color:#2c4544}
.slots{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;margin-top:.4rem}
.slot{border:1.5px solid var(--line);background:var(--cream);border-radius:10px;padding:.5rem;font-size:.85rem;font-weight:600;cursor:pointer;font-family:inherit;color:var(--ink)}
.slot.on{background:var(--coral);border-color:var(--coral);color:#fff}
.slot:disabled{opacity:.35;text-decoration:line-through;cursor:not-allowed}
.confirm{display:none;margin-top:1.2rem;background:#e8f7ee;border:1px solid #9fd8b6;color:#1c5a3a;border-radius:14px;padding:1rem;font-size:.92rem}
.confirm.show{display:block}
.error{color:var(--coral-dark);font-size:.85rem;margin-top:.6rem;display:none}
/* Lab results */
.lab-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:3rem;align-items:start}
.steps{counter-reset:s;list-style:none;margin:1.6rem 0}
.steps li{counter-increment:s;padding:1rem 0 1rem 3.6rem;position:relative;border-bottom:1px solid var(--line)}
.steps li::before{content:counter(s);position:absolute;left:0;top:1rem;width:40px;height:40px;border-radius:12px;background:var(--teal);color:#fff;display:grid;place-items:center;font-weight:700;font-family:'Fraunces',serif}
.steps li strong{display:block;color:var(--teal)}
.steps li span{font-size:.92rem;color:var(--muted)}
.portal-mock{background:#fff;border-radius:24px;box-shadow:var(--shadow);overflow:hidden;border:1px solid var(--line)}
.portal-head{background:var(--teal);color:#fff;padding:1rem 1.4rem;display:flex;justify-content:space-between;align-items:center;font-size:.9rem}
.lab-row{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.4rem;border-bottom:1px solid var(--line);font-size:.9rem}
.lab-row small{display:block;color:var(--muted)}
.status{font-size:.75rem;font-weight:700;padding:.2rem .6rem;border-radius:6px}
.status.ok{background:#e1f5e9;color:#1d6b40}
.status.rev{background:#fff3d6;color:#8a6200}
.secure{font-size:.8rem;color:var(--muted);padding:1rem 1.4rem;background:var(--cream)}
/* Wellness + sidebar */
.wellness{background:#fff}
.well-layout{display:grid;grid-template-columns:1fr 340px;gap:3rem}
.articles{display:grid;grid-template-columns:1fr 1fr;gap:1.6rem}
.article{border-radius:var(--radius);overflow:hidden;background:var(--cream);border:1px solid var(--line)}
.article img{height:200px;width:100%;object-fit:cover}
.article .body{padding:1.4rem}
.article.wide{grid-column:span 2;display:grid;grid-template-columns:1fr 1fr}
.article.wide img{height:100%;min-height:280px}
.article .meta{font-size:.78rem;color:var(--muted);margin-bottom:.4rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.article p{font-size:.92rem}
aside.sidebar{display:flex;flex-direction:column;gap:1.4rem}
.widget{background:var(--cream);border:1px solid var(--line);border-radius:var(--radius);padding:1.5rem}
.widget h4{font-size:1.1rem;margin-bottom:.9rem}
.alert{border-left:4px solid var(--coral);background:#fff;padding:.8rem 1rem;border-radius:10px;margin-bottom:.7rem;font-size:.88rem}
.alert b{display:block;color:var(--teal);margin-bottom:.2rem}
.alert.info{border-color:var(--teal-2)}
.news-item{display:flex;gap:.8rem;padding:.7rem 0;border-bottom:1px solid var(--line);font-size:.88rem}
.news-item:last-child{border:none}
.news-item img{width:60px;height:60px;border-radius:10px;object-fit:cover;flex-shrink:0}
.news-item a{text-decoration:none;font-weight:600;color:var(--ink)}
.news-item small{color:var(--muted);display:block}
.widget.dark{background:var(--teal);border:none}
.widget.dark h4,.widget.dark p{color:#fff}
.widget.dark p{color:#cfe7e1;font-size:.9rem}
/* Testimonials */
.testi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;margin-top:2.5rem}
.testi{background:#fff;border-radius:var(--radius);padding:1.8rem;border:1px solid var(--line);display:flex;flex-direction:column}
.stars{color:#f2a33a;letter-spacing:2px;margin-bottom:.8rem}
.testi blockquote{font-size:.97rem;color:#2c3e3d;margin-bottom:1.4rem;flex:1}
.person{display:flex;gap:.8rem;align-items:center}
.person img{width:50px;height:50px;border-radius:50%}
.person b{display:block;color:var(--teal)}
.person small{color:var(--muted)}
/* FAQ */
.faq{background:#fff}
.faq-wrap{display:grid;grid-template-columns:.8fr 1.2fr;gap:4rem}
.faq-item{border-bottom:1px solid var(--line)}
.faq-q{width:100%;text-align:left;background:none;border:none;padding:1.3rem 0;font-family:'Fraunces',serif;font-size:1.12rem;color:var(--teal);cursor:pointer;display:flex;justify-content:space-between;gap:1rem;align-items:center}
.faq-q .plus{width:30px;height:30px;border-radius:50%;background:var(--mint);display:grid;place-items:center;flex-shrink:0;transition:.3s;font-family:'Inter'}
.faq-item.open .plus{transform:rotate(45deg);background:var(--coral);color:#fff}
.faq-a{max-height:0;overflow:hidden;transition:max-height .35s ease}
.faq-a p{padding-bottom:1.2rem;font-size:.95rem}
/* CTA band */
.cta-band{padding:0 0 96px;background:#fff}
.cta-box{background:var(--coral);border-radius:28px;padding:3.5rem;display:flex;justify-content:space-between;align-items:center;gap:2rem;flex-wrap:wrap;position:relative;overflow:hidden}
.cta-box h2{color:#fff;margin:0}
.cta-box p{color:#fff3ef;margin:.4rem 0 0}
/* Contact & footer */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:3rem}
.contact-info div{display:flex;gap:1rem;margin-bottom:1.2rem}
.contact-info .icon{margin:0;flex-shrink:0}
.map{border-radius:20px;overflow:hidden;margin-top:1rem}
footer{background:#0b2f2e;color:#b9d3cd;padding:72px 0 24px;font-size:.92rem}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:2.5rem}
footer h4{color:#fff;font-family:'Inter';font-size:.95rem;margin-bottom:1rem;letter-spacing:.04em}
footer ul{list-style:none}
footer li{margin-bottom:.55rem}
footer a{text-decoration:none;color:#b9d3cd}
footer a:hover{color:#fff}
footer p{color:#b9d3cd}
.socials{display:flex;gap:.6rem;margin-top:1rem}
.socials a{width:40px;height:40px;border-radius:50%;border:1px solid #2d5a57;display:grid;place-items:center;font-weight:700;font-size:.8rem}
.socials a:hover{background:var(--coral);border-color:var(--coral)}
.newsletter{display:flex;gap:.5rem;margin-top:.8rem}
.newsletter input{background:#123f3d;border-color:#2d5a57;color:#fff}
.foot-bottom{border-top:1px solid #1f4b48;margin-top:3rem;padding-top:1.4rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;font-size:.84rem}
.foot-bottom a{margin-left:1.2rem}
.disclaimer{font-size:.78rem;color:#7fa39c;margin-top:1rem}
/* Responsive */
@media(max-width:1080px){
.grid-4{grid-template-columns:repeat(2,1fr)}
.class-grid,.testi-grid{grid-template-columns:repeat(2,1fr)}
.well-layout{grid-template-columns:1fr}
.foot-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:920px){
.menu-toggle{display:block}
nav.primary{position:absolute;top:100%;left:0;right:0;background:var(--cream);border-bottom:1px solid var(--line);display:none}
nav.primary.open{display:block}
nav.primary ul{flex-direction:column;padding:1.2rem;gap:1rem;align-items:flex-start}
.hero-grid,.split,.tool-grid,.lab-grid,.faq-wrap,.contact-grid,.services-feature{grid-template-columns:1fr}
.services-feature .txt{padding:0 2rem 2.5rem}
.hero-visual img{height:400px}
.float-card.one{left:10px}.float-card.two{right:10px}
.programs{grid-template-columns:1fr}
.img-stack img.small{right:10px}
}
@media(max-width:640px){
section{padding:72px 0}
.grid-4,.class-grid,.testi-grid,.articles{grid-template-columns:1fr}
.article.wide{grid-column:auto;grid-template-columns:1fr}
.foot-grid{grid-template-columns:1fr}
.form-row{grid-template-columns:1fr}
.slots{grid-template-columns:repeat(3,1fr)}
.cta-box{padding:2.2rem}
.topbar .hide-sm{display:none}
}
</style>
</head>
<body>
<div class="topbar">
<div class="container">
<span>🩺 Same-day telehealth visits available 7 days a week</span>
<span class="hide-sm">Nurse line: <a href="tel:+15035550142">(503) 555-0142</a> · Mon–Sat 7am–8pm</span>
</div>
</div>
<header class="site">
<div class="container nav-wrap">
<a href="#top" class="brand" aria-label="Meridian Vitality home">
<img src="https://placehold.co/96x96/0f4c4a/ff6b4a?text=MV&font=playfair%20display" alt="Meridian Vitality logo">
<span>
<span class="brand-name">Meridian Vitality</span><br>
<span class="brand-tag">Medicine. Movement. Nourishment.</span>
</span>
</a>
<button class="menu-toggle" aria-expanded="false" aria-controls="primary-nav">Menu ☰</button>
<nav class="primary" id="primary-nav" aria-label="Primary">
<ul>
<li><a href="#services">Medical Services</a></li>
<li><a href="#nutrition">Nutrition</a></li>
<li><a href="#classes">Fitness Classes</a></li>
<li><a href="#wellness">Wellness Tips</a></li>
<li><a href="#labs">Lab Results</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#toolkit" class="btn btn-primary btn-sm">Book Appointment</a></li>
</ul>
</nav>
</div>
</header>
<main id="top">
<!-- HERO -->
<section class="hero">
<div class="container hero-grid">
<div>
<span class="eyebrow">Integrated Health & Performance Center · Portland, OR</span>
<h1>Your doctor, dietitian & coach — <em>finally on the same team.</em></h1>
<p class="lead">Meridian Vitality brings board-certified physicians, registered dietitians, physical therapists, and certified trainers under one roof. Instead of juggling disconnected appointments, you get one shared care plan built around your bloodwork, your goals, and the way you actually live.</p>
<p class="lead">Whether you're managing a chronic condition, recovering from an injury, or simply ready to feel stronger, we meet you where you are — in our clinic, in our studio, or through secure telehealth.</p>
<div class="hero-actions">
<a href="#toolkit" class="btn btn-primary">Book a Visit →</a>
<a href="#toolkit" class="btn btn-outline">Calculate BMI</a>
</div>
<div class="stats">
<div class="stat"><strong>14k+</strong><span>Members supported</span></div>
<div class="stat"><strong>38</strong><span>Licensed clinicians</span></div>
<div class="stat"><strong>4.9★</strong><span>Average patient rating</span></div>
</div>
</div>
<div class="hero-visual">
<img src="https://picsum.photos/id/1077/720/900" alt="Clinician and patient during a wellness consultation">
<div class="float-card two"><div class="dot">📈</div><div><b>Resting HR ↓ 9 bpm</b>Avg. after 12 weeks</div></div>
<div class="float-card one"><div class="dot">🥗</div><div><b>Next session: 10:30am</b>Nutrition check-in · Telehealth</div></div>
</div>
</div>
</section>
<div class="trust">
<div class="container">
<span><strong>In-network</strong> with Aetna, Cigna, BlueCross, UnitedHealthcare & Medicare</span>
<span><strong>HIPAA-compliant</strong> patient portal</span>
<span><strong>HSA / FSA</strong> eligible programs</span>
<span><strong>CLIA-certified</strong> on-site lab</span>
</div>
</div>
<!-- MEDICAL SERVICES -->
<section id="services">
<div class="container">
<div class="section-head">
<div>
<span class="eyebrow">Medical Services</span>
<h2>Evidence-based care for every stage of health</h2>
<p class="lead">Our clinical team practices preventive, whole-person medicine. Every new patient begins with a comprehensive intake — including a metabolic panel, body composition scan, and movement screen — so your treatment is grounded in data, not guesswork.</p>
</div>
<a href="#toolkit" class="btn btn-outline">Schedule an Intake</a>
</div>
<div class="grid-4">
<article class="card">
<div class="icon">🩺</div>
<h3>Primary & Preventive Care</h3>
<p>Annual physicals, chronic disease management for hypertension, type 2 diabetes, and high cholesterol, plus age-appropriate screenings. Visits run 40 minutes — twice the national average — so there's room for real conversation.</p>
<a href="#toolkit" class="more">Learn More →</a>
</article>
<article class="card">
<div class="icon">💻</div>
<h3>Telehealth Visits</h3>
<p>Connect with a physician or nurse practitioner from home via encrypted video. Ideal for follow-ups, prescription refills, lab reviews, and minor acute concerns. Most visits are available within four hours of booking.</p>
<a href="#toolkit" class="more">Start a Visit →</a>
</article>
<article class="card">
<div class="icon">🦵</div>
<h3>Physical Therapy & Rehabilitation</h3>
<p>Post-surgical rehabilitation, sports injury recovery, and chronic pain programs led by Doctors of Physical Therapy. We use gait analysis, manual therapy, and progressive loading to restore function safely.</p>
<a href="#toolkit" class="more">Learn More →</a>
</article>
<article class="card">
<div class="icon">🧪</div>
<h3>Diagnostics & Labs</h3>
<p>On-site phlebotomy with results in 24–48 hours. Advanced panels include ApoB, HbA1c, fasting insulin, thyroid function, vitamin D, and hormone profiles — all reviewed with you by a clinician.</p>
<a href="#labs" class="more">View Lab Results →</a>
</article>
</div>
<div class="services-feature">
<img src="https://picsum.photos/id/1059/800/700" alt="Physical therapist guiding a rehabilitation exercise">
<div class="txt">
<span class="eyebrow" style="color:#ffb8a6">Signature Program</span>
<h3>Metabolic Reset: 12 weeks, one integrated team</h3>
<p>Our flagship program pairs a physician, a registered dietitian, and a performance coach to improve insulin sensitivity, resting metabolic rate, and cardiovascular fitness. You'll complete indirect calorimetry testing at the start and finish, so you can see exactly how your metabolism responds.</p>
<ul class="checklist">
<li>Baseline and follow-up bloodwork with clinician review</li>
<li>Personalized macronutrient plan and grocery guides</li>
<li>Two coached strength sessions per week</li>
<li>Continuous glucose monitor (CGM) option for 14 days</li>
</ul>
<a href="#contact" class="btn btn-primary">Apply for Metabolic Reset</a>
</div>
</div>
</div>
</section>
<!-- NUTRITION -->
<section id="nutrition" class="nutrition">
<div class="container">
<div class="split">
<div class="img-stack">
<img src="https://picsum.photos/id/1080/700/800" alt="Fresh whole-food ingredients on a table">
<img class="small" src="https://picsum.photos/id/292/400/300" alt="Healthy meal preparation">
</div>
<div>
<span class="eyebrow">Nutrition Counseling</span>
<h2>Nutrition that fits your labs, your culture & your calendar</h2>
<p>Generic meal plans fail because they ignore the person eating them. Our registered dietitian nutritionists (RDNs) start with your bloodwork, medications, food preferences, and schedule, then build a sustainable approach you can actually follow on a Tuesday night.</p>
<p>We specialize in medical nutrition therapy for prediabetes, PCOS, digestive disorders, heart health, and sports performance. Every plan is reviewed alongside your physician's notes so that nutrition and medical treatment work together — never at cross purposes.</p>
<div class="pill-row">
<span class="pill">Medical Nutrition Therapy</span>
<span class="pill">GLP-1 Support</span>
<span class="pill">Sports Nutrition</span>
<span class="pill">Gut Health</span>
<span class="pill">Plant-Based Plans</span>
<span class="pill">Prenatal Nutrition</span>
</div>
<a href="#toolkit" class="btn btn-primary">Book a Dietitian</a>
<a href="#toolkit" class="btn btn-outline" style="margin-left:.5rem">Estimate Your Metabolic Rate</a>
</div>
</div>
<div class="programs">
<div class="program">
<h3>Single Consult</h3>
<div class="price">$95 <small>/ 60 min</small></div>
<p>A comprehensive assessment with an RDN, including dietary recall, goal setting, and a written action plan delivered to your portal within 48 hours.</p>
<a href="#toolkit" class="more" style="font-weight:600;color:var(--coral-dark);text-decoration:none">Book Consult →</a>
</div>
<div class="program" style="background:var(--mint);border-color:#b7dccf">
<h3>Nourish Plus <span class="badge">Most popular</span></h3>
<div class="price">$149 <small>/ month</small></div>
<p>Monthly 45-minute sessions, unlimited secure messaging, food-log feedback, and quarterly body composition scans to track lean mass and visceral fat.</p>
<a href="#toolkit" class="more" style="font-weight:600;color:var(--coral-dark);text-decoration:none">Get Started →</a>
</div>
<div class="program">
<h3>Performance Fuel</h3>
<div class="price">$219 <small>/ month</small></div>
<p>For endurance athletes and lifters: periodized fueling around training blocks, hydration and electrolyte testing, and race-day or meet-day protocols.</p>
<a href="#toolkit" class="more" style="font-weight:600;color:var(--coral-dark);text-decoration:none">Learn More →</a>
</div>
</div>
</div>
</section>
<!-- FITNESS CLASSES -->
<section id="classes">
<div class="container">
<div class="section-head">
<div>
<span class="eyebrow">Fitness Classes</span>
<h2>Coached classes, clinically informed</h2>
<p class="lead">Every class is led by a certified coach (NSCA, ACE, or NASM) and capped at 12 participants so form gets real attention. Coaches can see relevant notes from your care team — like a recent knee rehabilitation — and will scale movements accordingly.</p>
</div>
<a href="#contact" class="btn btn-outline">View Full Timetable</a>
</div>
<div class="tabs" role="tablist" aria-label="Filter classes">
<button class="tab active" data-filter="all">All Classes</button>
<button class="tab" data-filter="strength">Strength</button>
<button class="tab" data-filter="cardio">Cardio & HIIT</button>
<button class="tab" data-filter="mobility">Mobility & Recovery</button>
<button class="tab" data-filter="therapeutic">Therapeutic</button>
</div>
<div class="class-grid">
<article class="class-card" data-cat="strength">
<img src="https://picsum.photos/id/1025/600/380" alt="Strength foundations class">
<div class="class-body">
<div class="class-meta"><span class="badge">Strength</span><span>Mon · Wed · Fri</span><span>6:30am</span><span>50 min</span></div>
<h3>Strength Foundations</h3>
<p>Master the squat, hinge, push, and pull with progressive barbell and kettlebell work. Ideal for beginners and anyone rebuilding after time away.</p>
<div class="class-foot"><span class="spots">4 spots left</span><button class="btn btn-primary btn-sm book-class">Book Class</button></div>
</div>
</article>
<article class="class-card" data-cat="cardio">
<img src="https://picsum.photos/id/1084/600/380" alt="Zone 2 cardio class">
<div class="class-body">
<div class="class-meta"><span class="badge">Cardio</span><span>Tue · Thu</span><span>7:00am</span><span>45 min</span></div>
<h3>Zone 2 Endurance Ride</h3>
<p>Heart-rate-guided cycling to build your aerobic base and mitochondrial efficiency. Chest-strap monitors provided; your zones are set from your intake testing.</p>
<div class="class-foot"><span class="spots">7 spots left</span><button class="btn btn-primary btn-sm book-class">Book Class</button></div>
</div>
</article>
<article class="class-card" data-cat="mobility">
<img src="https://picsum.photos/id/1068/600/380" alt="Mobility and yoga class">
<div class="class-body">
<div class="class-meta"><span class="badge">Mobility</span><span>Daily</span><span>12:15pm</span><span>40 min</span></div>
<h3>Midday Mobility Flow</h3>
<p>A lunchtime reset blending yoga-inspired flows, joint articulation, and breathwork to undo hours of sitting and reduce stress.</p>
<div class="class-foot"><span class="spots">9 spots left</span><button class="btn btn-primary btn-sm book-class">Book Class</button></div>
</div>
</article>
<article class="class-card" data-cat="cardio">
<img src="https://picsum.photos/id/1058/600/380" alt="HIIT conditioning class">
<div class="class-body">
<div class="class-meta"><span class="badge">HIIT</span><span>Mon · Thu</span><span>5:45pm</span><span>35 min</span></div>
<h3>Metabolic Conditioning</h3>
<p>Short, structured intervals on rowers, sleds, and air bikes to boost VO₂ max and post-exercise oxygen consumption. Intermediate level.</p>
<div class="class-foot"><span class="spots">2 spots left</span><button class="btn btn-primary btn-sm book-class">Book Class</button></div>
</div>
</article>
<article class="class-card" data-cat="therapeutic">
<img src="https://picsum.photos/id/1040/600/380" alt="Therapeutic exercise class">
<div class="class-body">
<div class="class-meta"><span class="badge">Therapeutic</span><span>Tue · Sat</span><span>10:00am</span><span>45 min</span></div>
<h3>Back Strong (PT-Led)</h3>
<p>Led by a Doctor of Physical Therapy, this class targets core stability and spinal resilience for people managing low-back pain or post-rehabilitation.</p>
<div class="class-foot"><span class="spots">5 spots left</span><button class="btn btn-primary btn-sm book-class">Book Class</button></div>
</div>
</article>
<article class="class-card" data-cat="strength">
<img src="https://picsum.photos/id/1011/600/380" alt="Strength class for older adults">
<div class="class-body">
<div class="class-meta"><span class="badge">Strength</span><span>Mon · Wed</span><span>9:30am</span><span>45 min</span></div>
<h3>Strong After 60</h3>
<p>Bone-density-focused resistance training and balance drills designed with our geriatric team to reduce fall risk and preserve independence.</p>
<div class="class-foot"><span class="spots">6 spots left</span><button class="btn btn-primary btn-sm book-class">Book Class</button></div>
</div>
</article>
</div>
</div>
</section>
<!-- TOOLKIT (INTERACTIVE) -->
<section id="toolkit" class="toolkit">
<div class="container">
<span class="eyebrow" style="color:#ffb8a6">Your Health Toolkit</span>
<h2>Know your numbers. Then take the next step.</h2>
<p class="lead">Use our calculator to estimate your Body Mass Index, basal metabolic rate (BMR), and daily energy needs. When you're ready, reserve an appointment with the right specialist in under a minute — in person or via telehealth.</p>
<div class="tool-grid">
<!-- Calculator -->
<div class="panel">
<h3>BMI & Metabolic Rate Calculator</h3>
<p>Based on the Mifflin-St Jeor equation, the formula most widely used by dietitians in clinical practice.</p>
<div class="seg" role="group" aria-label="Units">
<button type="button" class="on" data-unit="imperial">Imperial (lb / in)</button>
<button type="button" data-unit="metric">Metric (kg / cm)</button>
</div>
<form id="calc" novalidate>
<div class="form-row">
<div><label for="age">Age</label><input type="number" id="age" min="18" max="100" placeholder="35" required></div>
<div><label for="sex">Sex at birth</label>
<select id="sex"><option value="female">Female</option><option value="male">Male</option></select></div>
</div>
<div class="form-row">
<div><label for="weight" id="wLabel">Weight (lb)</label><input type="number" id="weight" placeholder="165" required></div>
<div><label for="height" id="hLabel">Height (in)</label><input type="number" id="height" placeholder="67" required></div>
</div>
<label for="activity">Activity level</label>
<select id="activity">
<option value="1.2">Sedentary — desk job, little exercise</option>
<option value="1.375" selected>Lightly active — 1–3 workouts/week</option>
<option value="1.55">Moderately active — 3–5 workouts/week</option>
<option value="1.725">Very active — 6–7 workouts/week</option>
<option value="1.9">Athlete — training twice daily</option>
</select>
<div class="error" id="calcErr">Please enter a valid age (18–100), weight, and height.</div>
<button type="submit" class="btn btn-primary" style="margin-top:1.2rem;width:100%;justify-content:center">Calculate BMI & BMR</button>
</form>
<div class="result" id="result" aria-live="polite">
<div class="result-grid">
<div><strong id="rBmi">–</strong><span>BMI</span></div>
<div><strong id="rBmr">–</strong><span>BMR (kcal/day)</span></div>
<div><strong id="rTdee">–</strong><span>Daily needs (kcal)</span></div>
</div>
<div class="bmi-bar"><div class="bmi-marker" id="marker" style="left:0"></div></div>
<div style="display:flex;justify-content:space-between;font-size:.7rem;color:var(--muted)"><span>Under</span><span>Healthy</span><span>Over</span><span>Obese</span></div>
<p class="note" id="rNote"></p>
</div>
</div>
<!-- Scheduler -->
<div class="panel">
<h3>Appointment Scheduler</h3>
<p>Pick a service, date, and time. A care coordinator will confirm within two business hours and send intake forms to your inbox.</p>
<form id="sched" novalidate>
<div class="form-row">
<div><label for="svc">Service</label>
<select id="svc">
<option>Primary Care Visit</option>
<option>Telehealth Consultation</option>
<option>Nutrition Counseling</option>
<option>Physical Therapy Evaluation</option>
<option>Lab Draw / Bloodwork</option>
<option>Fitness Assessment</option>
</select></div>
<div><label for="mode">Visit type</label>
<select id="mode"><option>In clinic</option><option>Telehealth (video)</option></select></div>
</div>
<label for="date">Preferred date</label>
<input type="date" id="date" required>
<label>Available times</label>
<div class="slots" id="slots"></div>
<div class="form-row">
<div><label for="name">Full name</label><input type="text" id="name" placeholder="Jordan Ellis" required></div>
<div><label for="email">Email</label><input type="email" id="email" placeholder="you@email.com" required></div>
</div>
<div class="error" id="schedErr">Please choose a date, a time, and enter your name and a valid email.</div>
<button type="submit" class="btn btn-primary" style="margin-top:1.2rem;width:100%;justify-content:center">Request Appointment</button>
</form>
<div class="confirm" id="confirm" aria-live="polite"></div>
</div>
</div>
</div>
</section>
<!-- LAB RESULTS -->
<section id="labs">
<div class="container lab-grid">
<div>
<span class="eyebrow">Lab Results & Patient Portal</span>
<h2>Your results, explained — not just delivered</h2>
<p>Receiving a page of numbers with no context can be stressful. That's why every Meridian Vitality lab report arrives in your secure MyMeridian portal with plain-language explanations, trend graphs comparing past draws, and a note from the clinician who ordered the test.</p>
<p>Flagged values automatically trigger a follow-up from your care team, and you can book a 15-minute telehealth review directly from any result. You can also share reports with outside specialists in one click, keeping your entire care network informed.</p>
<ol class="steps">
<li><strong>Sign in securely</strong><span>Use two-factor authentication on web or the MyMeridian app for iOS and Android.</span></li>
<li><strong>Review your report</strong><span>See reference ranges, optimal targets, and color-coded trends over time.</span></li>
<li><strong>Read clinician notes</strong><span>Your provider adds context and next steps within one business day.</span></li>
<li><strong>Book a follow-up</strong><span>Schedule a telehealth review or message your care team directly.</span></li>
</ol>
<a href="#contact" class="btn btn-primary">Access Lab Results</a>
<a href="#faq" class="btn btn-outline" style="margin-left:.5rem">Portal Help</a>
</div>
<div class="portal-mock" aria-label="Example patient portal lab results">
<div class="portal-head"><span>🔒 MyMeridian · Lab Results</span><span>Sample view</span></div>
<div class="lab-row"><div><b>Comprehensive Metabolic Panel</b><small>Drawn Mar 4 · Dr. A. Okafor</small></div><span class="status ok">Normal</span></div>
<div class="lab-row"><div><b>Lipid Panel + ApoB</b><small>Drawn Mar 4 · Dr. A. Okafor</small></div><span class="status rev">Review</span></div>
<div class="lab-row"><div><b>HbA1c</b><small>5.4% · ↓ from 5.9% in Nov</small></div><span class="status ok">Improved</span></div>
<div class="lab-row"><div><b>Vitamin D, 25-Hydroxy</b><small>42 ng/mL · Within optimal range</small></div><span class="status ok">Normal</span></div>
<div class="lab-row"><div><b>Thyroid (TSH, Free T4)</b><small>Results pending · Est. Mar 6</small></div><span class="status rev">Pending</span></div>
<div class="secure">All data is encrypted in transit and at rest. Meridian Vitality is fully HIPAA compliant and never sells patient information.</div>
</div>
</div>
</section>
<!-- WELLNESS TIPS + SIDEBAR -->
<section id="wellness" class="wellness">
<div class="container">
<span class="eyebrow">Wellness Tips & Health Journal</span>
<h2>Practical guidance from our clinicians</h2>
<p class="lead" style="margin-bottom:2.5rem">Our physicians, dietitians, and coaches publish weekly articles translating the latest research into habits you can start today. No fads, no miracle cures — just the evidence and how to apply it.</p>
<div class="well-layout">
<div class="articles">
<article class="article wide">
<img src="https://picsum.photos/id/1060/700/500" alt="Person preparing a protein-rich breakfast">
<div class="body">
<div class="meta">Nutrition · 7 min read</div>
<h3>Protein timing for adults over 40: what the research actually says</h3>
<p>After age 40, muscle protein synthesis becomes less responsive to small doses of protein — a phenomenon called anabolic resistance. Our lead dietitian explains why distributing 25–40 g of protein across three meals may matter more than total daily intake alone.</p>
<p>You'll also find a sample day of eating, budget-friendly protein sources, and how to pair meals with resistance training for the biggest benefit.</p>
<a href="#wellness" class="more" style="font-weight:600;color:var(--coral-dark);text-decoration:none">Read Article →</a>
</div>
</article>
<article class="article">
<img src="https://picsum.photos/id/1036/600/400" alt="Morning walk outdoors">
<div class="body">
<div class="meta">Fitness · 5 min read</div>
<h3>The 10-minute walk after meals that steadies blood sugar</h3>
<p>Short post-meal walks can blunt glucose spikes by recruiting your leg muscles as a glucose sink. Here's how to build the habit, even on busy workdays.</p>
<a href="#wellness" class="more" style="font-weight:600;color:var(--coral-dark);text-decoration:none">Read Article →</a>
</div>
</article>
<article class="article">
<img src="https://picsum.photos/id/1003/600/400" alt="Calm bedroom for better sleep">
<div class="body">
<div class="meta">Sleep · 6 min read</div>
<h3>Sleep is a training session: recovering smarter</h3>
<p>Poor sleep raises cortisol, impairs insulin sensitivity, and undermines muscle repair. Our sports medicine physician shares a simple wind-down protocol.</p>
<a href="#wellness" class="more" style="font-weight:600;color:var(--coral-dark);text-decoration:none">Read Article →</a>
</div>
</article>
</div>
<aside class="sidebar" aria-label="Health alerts and news">
<div class="widget">
<h4>⚠️ Health Alerts</h4>
<div class="alert"><b>Seasonal flu & COVID-19 boosters</b>Walk-in vaccine clinic every Saturday, 9am–1pm. No appointment needed for established patients.</div>
<div class="alert info"><b>Air quality advisory</b>Wildfire smoke expected this week. Move outdoor workouts indoors when AQI exceeds 100 and keep rescue inhalers handy.</div>
<div class="alert info"><b>Pollen season is here</b>Our allergy team is adding extended telehealth hours for antihistamine and nasal steroid consultations.</div>
</div>
<div class="widget">
<h4>📰 Health News</h4>
<div class="news-item"><img src="https://picsum.photos/id/225/120/120" alt=""><div><a href="#wellness">New guidelines lower blood pressure screening age to 18</a><small>Mar 2 · Cardiology</small></div></div>
<div class="news-item"><img src="https://picsum.photos/id/431/120/120" alt=""><div><a href="#wellness">Study links resistance training to longer lifespan</a><small>Feb 26 · Research</small></div></div>
<div class="news-item"><img src="https://picsum.photos/id/312/120/120" alt=""><div><a href="#wellness">Fiber intake: most adults get half what they need</a><small>Feb 19 · Nutrition</small></div></div>
</div>
<div class="widget dark">
<h4>💡 Nutrition Tip of the Week</h4>
<p>Aim for 30 different plants per week — vegetables, fruits, legumes, nuts, seeds, herbs, and whole grains all count. Dietary diversity feeds a more resilient gut microbiome.</p>
<a href="#nutrition" class="btn btn-light btn-sm">Talk to a Dietitian</a>
</div>
</aside>
</div>
</div>
</section>
<!-- TESTIMONIALS -->
<section id="stories">
<div class="container">
<span class="eyebrow">Member Stories</span>
<h2>Real people, measurable progress</h2>
<p class="lead">We track outcomes, not just attendance. Here's what members say about working with a team that talks to each other.</p>
<div class="testi-grid">
<figure class="testi">
<div class="stars">★★★★★</div>
<blockquote>"My A1c had crept into the prediabetic range and I felt stuck. Dr. Okafor and my dietitian built a plan together, and the CGM showed me which meals spiked me. Six months later my A1c is 5.4 and I've lost 22 pounds without feeling deprived."</blockquote>
<figcaption class="person"><img src="https://i.pravatar.cc/100?u=marisol-v" alt=""><div><b>Marisol V.</b><small>Metabolic Reset graduate</small></div></figcaption>
</figure>
<figure class="testi">
<div class="stars">★★★★★</div>
<blockquote>"After ACL reconstruction I was terrified to run again. My physical therapist coordinated directly with the strength coaches, so my rehabilitation flowed straight into classes. I finished a half marathon eleven months post-op."</blockquote>
<figcaption class="person"><img src="https://i.pravatar.cc/100?u=devon-r" alt=""><div><b>Devon R.</b><small>Rehabilitation & Strength member</small></div></figcaption>
</figure>
<figure class="testi">
<div class="stars">★★★★★</div>
<blockquote>"The telehealth visits are a lifesaver as a working mom. I review my labs from my kitchen, message my care team, and book Strength Foundations from the app. It's the first time healthcare has felt designed around my life."</blockquote>
<figcaption class="person"><img src="https://i.pravatar.cc/100?u=priya-k" alt=""><div><b>Priya K.</b><small>Member since 2022</small></div></figcaption>
</figure>
</div>
</div>
</section>
<!-- FAQ -->
<section id="faq" class="faq">
<div class="container faq-wrap">
<div>
<span class="eyebrow">FAQ</span>
<h2>Questions, answered</h2>
<p>Can't find what you're looking for? Our care coordinators are available by phone, chat, and email six days a week and are happy to walk you through insurance, scheduling, or portal access.</p>
<a href="#contact" class="btn btn-outline">Contact Our Team</a>
</div>
<div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false">Do you accept insurance for medical and nutrition services?<span class="plus">+</span></button>
<div class="faq-a"><p>Yes. Primary care, physical therapy, lab work, and many medical nutrition therapy visits are billed to most major commercial plans and Medicare. Fitness classes and wellness memberships are typically self-pay but are often HSA/FSA eligible with a letter of medical necessity, which our physicians can provide.</p></div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false">How does telehealth work, and what can be treated virtually?<span class="plus">+</span></button>
<div class="faq-a"><p>Telehealth visits take place over a secure, HIPAA-compliant video platform — no downloads required. Common uses include follow-ups, medication management, lab reviews, nutrition counseling, mental health check-ins, and minor acute issues like sinus infections or rashes. If your clinician determines you need a physical exam, we'll arrange an in-clinic visit promptly.</p></div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false">When will my lab results be available?<span class="plus">+</span></button>
<div class="faq-a"><p>Most routine panels post to your MyMeridian portal within 24–48 hours. Specialty tests such as hormone panels or advanced lipid testing may take 3–5 business days. Your ordering clinician will add an interpretation note within one business day of results posting, and will call you directly about anything urgent.</p></div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false">I'm new to exercise or have an injury. Are classes safe for me?<span class="plus">+</span></button>
<div class="faq-a"><p>Absolutely. We recommend starting with a complimentary Fitness Assessment, where a coach evaluates mobility, strength, and cardiovascular fitness. If you're in active rehabilitation, your physical therapist can clear you and share modifications with your coach so every class is scaled appropriately.</p></div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false">Is the BMI calculator a diagnosis?<span class="plus">+</span></button>
<div class="faq-a"><p>No. BMI is a population-level screening tool and doesn't account for muscle mass, bone density, or fat distribution. BMR estimates also vary between individuals. For a precise picture, we offer DEXA body composition scans and indirect calorimetry testing to measure your actual resting metabolic rate.</p></div>
</div>
</div>
</div>
</section>
<div class="cta-band">
<div class="container">
<div class="cta-box">
<div>
<h2>Your first step is a conversation.</h2>
<p>Book a free 20-minute discovery call to find the right mix of care for your goals.</p>
</div>
<a href="#toolkit" class="btn btn-light">Book Free Call →</a>
</div>
</div>
</div>
<!-- CONTACT -->
<section id="contact" style="padding-top:0;background:#fff">
<div class="container contact-grid">
<div class="contact-info">
<span class="eyebrow">Contact</span>
<h2>Visit our Pearl District campus</h2>
<p style="margin-bottom:2rem">Our 24,000 sq. ft. facility houses the medical clinic, on-site lab, physical therapy suites, two training studios, and a teaching kitchen. Free parking is available in the garage on NW 11th Ave.</p>
<div><span class="icon">📍</span><p><b>Meridian Vitality</b><br>1420 NW Lovejoy Street, Suite 300<br>Portland, OR 97209</p></div>
<div><span class="icon">📞</span><p><b>Appointments:</b> (503) 555-0142<br><b>Nurse line (after hours):</b> (503) 555-0199</p></div>
<div><span class="icon">✉️</span><p>care@meridianvitality.com<br>Response within one business day</p></div>
<div><span class="icon">🕐</span><p>Clinic: Mon–Fri 7am–7pm, Sat 8am–2pm<br>Studio: Mon–Fri 5:30am–9pm, Sat–Sun 7am–5pm</p></div>
</div>
<div>
<div class="map"><img src="https://placehold.co/700x420/d9efe8/0f4c4a?text=Map+%C2%B7+1420+NW+Lovejoy+St&font=montserrat" alt="Map showing Meridian Vitality location"></div>
<p style="font-size:.85rem;color:var(--muted);margin-top:1rem"><b>In an emergency, call 911</b> or go to the nearest emergency department. Meridian Vitality does not provide emergency services.</p>
</div>
</div>
</section>
</main>
<footer>
<div class="container">
<div class="foot-grid">
<div>
<a href="#top" class="brand" style="margin-bottom:1rem">
<img src="https://placehold.co/96x96/ff6b4a/ffffff?text=MV&font=playfair%20display" alt="Meridian Vitality logo">
<span><span class="brand-name" style="color:#fff">Meridian Vitality</span><br><span class="brand-tag" style="color:#9fc3bb">Medicine. Movement. Nourishment.</span></span>
</a>
<p>Integrated primary care, nutrition counseling, rehabilitation, and coached fitness — designed around one shared plan for your health.</p>
<div class="socials">
<a href="#" aria-label="Instagram">IG</a>
<a href="#" aria-label="Facebook">FB</a>
<a href="#" aria-label="YouTube">YT</a>
<a href="#" aria-label="LinkedIn">IN</a>
<a href="#" aria-label="TikTok">TT</a>
</div>
</div>
<div>
<h4>Care</h4>
<ul>
<li><a href="#services">Medical Services</a></li>
<li><a href="#services">Telehealth</a></li>
<li><a href="#services">Rehabilitation</a></li>
<li><a href="#nutrition">Nutrition Counseling</a></li>
<li><a href="#labs">Lab Results</a></li>
</ul>
</div>
<div>
<h4>Fitness & Resources</h4>
<ul>
<li><a href="#classes">Fitness Classes</a></li>
<li><a href="#toolkit">BMI Calculator</a></li>
<li><a href="#wellness">Wellness Tips</a></li>
<li><a href="#faq">FAQ</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
<div>
<h4>Weekly Wellness Newsletter</h4>
<p>Evidence-based tips, recipes, and class updates. One email a week, never spam.</p>
<form class="newsletter" onsubmit="event.preventDefault();this.innerHTML='<p style="color:#fff">✓ Thanks! Check your inbox to confirm.</p>'">
<input type="email" placeholder="Your email" aria-label="Email address" required>
<button class="btn btn-primary btn-sm" type="submit">Join</button>
</form>
</div>
</div>
<p class="disclaimer">Content on this website is for informational purposes and is not a substitute for professional medical advice, diagnosis, or treatment. Always consult a qualified healthcare provider with questions about a medical condition.</p>
<div class="foot-bottom">
<span>© <span id="year">2025</span> Meridian Vitality Health, LLC. All rights reserved.</span>
<span><a href="#">Privacy Policy</a><a href="#">Terms of Use</a><a href="#">HIPAA Notice</a><a href="#">Accessibility</a></span>
</div>
</div>
</footer>
<script>
document.getElementById('year').textContent = new Date().getFullYear();
// Mobile nav
const toggle = document.querySelector('.menu-toggle');
const nav = document.getElementById('primary-nav');
toggle.addEventListener('click', () => {
const open = nav.classList.toggle('open');
toggle.setAttribute('aria-expanded', open);
});
nav.querySelectorAll('a').forEach(a => a.addEventListener('click', () => {
nav.classList.remove('open'); toggle.setAttribute('aria-expanded', false);
}));
// Class filter
document.querySelectorAll('.tab').forEach(tab => {
tab.addEventListener('click', () => {
document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));
tab.classList.add('active');
const f = tab.dataset.filter;
document.querySelectorAll('.class-card').forEach(c => {
c.classList.toggle('hide', f !== 'all' && c.dataset.cat !== f);
});
});
});
document.querySelectorAll('.book-class').forEach(btn => {
btn.addEventListener('click', () => {
const spots = btn.parentElement.querySelector('.spots');
const n = parseInt(spots.textContent);
if (btn.dataset.booked) return;
btn.dataset.booked = '1';
btn.textContent = '✓ Booked';
btn.style.background = 'var(--teal)';
spots.textContent = Math.max(n - 1, 0) + ' spots left';
});
});
// Units
let unit = 'imperial';
document.querySelectorAll('.seg button').forEach(b => {
b.addEventListener('click', () => {
document.querySelectorAll('.seg button').forEach(x => x.classList.remove('on'));
b.classList.add('on'); unit = b.dataset.unit;
document.getElementById('wLabel').textContent = unit === 'metric' ? 'Weight (kg)' : 'Weight (lb)';
document.getElementById('hLabel').textContent = unit === 'metric' ? 'Height (cm)' : 'Height (in)';
document.getElementById('weight').placeholder = unit === 'metric' ? '75' : '165';
document.getElementById('height').placeholder = unit === 'metric' ? '170' : '67';
});
});
// Calculator
document.getElementById('calc').addEventListener('submit', e => {
e.preventDefault();
const age = +document.getElementById('age').value;
let w = +document.getElementById('weight').value;
let h = +document.getElementById('height').value;
const sex = document.getElementById('sex').value;
const act = +document.getElementById('activity').value;
const err = document.getElementById('calcErr');
if (!age || age < 18 || age > 100 || !w || w <= 0 || !h || h <= 0) { err.style.display = 'block'; return; }
err.style.display = 'none';
if (unit === 'imperial') { w = w * 0.453592; h = h * 2.54; }
const bmi = w / Math.pow(h / 100, 2);
const bmr = 10 * w + 6.25 * h - 5 * age + (sex === 'male' ? 5 : -161);
const tdee = bmr * act;
document.getElementById('rBmi').textContent = bmi.toFixed(1);
document.getElementById('rBmr').textContent = Math.round(bmr).toLocaleString();
document.getElementById('rTdee').textContent = Math.round(tdee).toLocaleString();
const pos = Math.min(Math.max((bmi - 15) / (40 - 15) * 100, 2), 98);
document.getElementById('marker').style.left = pos + '%';
let cat, msg;
if (bmi < 18.5) { cat = 'underweight'; msg = 'A dietitian can help you build lean mass and meet your energy needs safely.'; }
else if (bmi < 25) { cat = 'in the healthy range'; msg = 'Great foundation! Strength training and a body composition scan can help you optimize further.'; }
else if (bmi < 30) { cat = 'overweight'; msg = 'Small, sustainable changes add up. Our Nourish Plus program pairs you with an RDN for ongoing support.'; }
else { cat = 'in the obese range'; msg = 'Our Metabolic Reset program offers physician-guided, judgment-free support including lab work and coaching.'; }
document.getElementById('rNote').innerHTML = `Your BMI is <b>${cat}</b>. ${msg} Your estimated maintenance intake is about <b>${Math.round(tdee).toLocaleString()} kcal/day</b>.`;
document.getElementById('result').classList.add('show');
});
// Scheduler
const dateInput = document.getElementById('date');
const slotsEl = document.getElementById('slots');
const times = ['8:00','9:00','10:30','11:30','1:00','2:30','4:00','5:30'];
let chosen = null;
const today = new Date();
const iso = d => d.toISOString().split('T')[0];
dateInput.min = iso(today);
const def = new Date(today); def.setDate(def.getDate() + 1);
dateInput.value = iso(def);
function renderSlots() {
slotsEl.innerHTML = ''; chosen = null;
const seed = dateInput.value ? dateInput.value.split('-').reduce((a, b) => a + +b, 0) : 0;
times.forEach((t, i) => {
const b = document.createElement('button');
b.type = 'button'; b.className = 'slot';
b.textContent = t + (i < 4 ? ' am' : ' pm').replace('8:00 am','8:00 am');
if ((seed + i * 3) % 5 === 0) b.disabled = true;
b.addEventListener('click', () => {
slotsEl.querySelectorAll('.slot').forEach(s => s.classList.remove('on'));
b.classList.add('on'); chosen = b.textContent;
});
slotsEl.appendChild(b);
});
}
dateInput.addEventListener('change', renderSlots);
renderSlots();
document.getElementById('sched').addEventListener('submit', e => {
e.preventDefault();
const name = document.getElementById('name').value.trim();
const email = document.getElementById('email').value.trim();
const err = document.getElementById('schedErr');
if (!dateInput.value || !chosen || !name || !/^\S+@\S+\.\S+$/.test(email)) { err.style.display = 'block'; return; }
err.style.display = 'none';
const d = new Date(dateInput.value + 'T12:00:00');
const nice = d.toLocaleDateString(undefined, { weekday: 'long', month: 'long', day: 'numeric' });
const conf = document.getElementById('confirm');
conf.innerHTML = `<b>✓ Request received, ${name.split(' ')[0]}!</b><br>${document.getElementById('svc').value} · ${document.getElementById('mode').value}<br>${nice} at ${chosen}. A confirmation and intake forms will be sent to <b>${email}</b>.`;
conf.classList.add('show');
e.target.reset(); dateInput.value = iso(def); renderSlots();
});
// FAQ accordion
document.querySelectorAll('.faq-q').forEach(q => {
q.addEventListener('click', () => {
const item = q.parentElement;
const ans = item.querySelector('.faq-a');
const open = item.classList.contains('open');
document.querySelectorAll('.faq-item').forEach(i => {
i.classList.remove('open'); i.querySelector('.faq-a').style.maxHeight = null;
i.querySelector('.faq-q').setAttribute('aria-expanded', false);
});
if (!open) {
item.classList.add('open'); ans.style.maxHeight = ans.scrollHeight + 'px';
q.setAttribute('aria-expanded', true);
}
});
});
</script>
</body>
</html>
View Axe Report (JSON)
{
"testEngine": {
"name": "axe-core",
"version": "4.10.2"
},
"testRunner": {
"name": "axe"
},
"testEnvironment": {
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
"windowWidth": 1280,
"windowHeight": 720,
"orientationAngle": 0,
"orientationType": "landscape-primary"
},
"timestamp": "2026-11-12T09:51:41.123Z",
"url": "https://benchmark.aimac.invalid/0c091975ae33866959ba21e73cbec423bca2eb1875b64ee8e895ce117b5c3e54.html",
"toolOptions": {
"runOnly": {
"type": "tag",
"values": [
"wcag2a",
"wcag2aa",
"wcag21a",
"wcag21aa",
"wcag22a",
"wcag22aa"
]
},
"resultTypes": [
"violations"
],
"reporter": "v1"
},
"inapplicable": [
{
"id": "area-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <area> elements of image maps have alternative text",
"help": "Active <area> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
"nodes": []
},
{
"id": "aria-braille-equivalent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
"help": "aria-braille attributes must have a non-braille equivalent",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
"nodes": []
},
{
"id": "aria-command-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA button, link and menuitem has an accessible name",
"help": "ARIA commands must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": []
},
{
"id": "aria-input-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA input field has an accessible name",
"help": "ARIA input fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-meter-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA meter node has an accessible name",
"help": "ARIA meter nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-progressbar-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA progressbar node has an accessible name",
"help": "ARIA progressbar nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": []
},
{
"id": "aria-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "blink",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag222",
"section508",
"section508.22.j",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <blink> elements are not used",
"help": "<blink> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
"nodes": []
},
{
"id": "definition-list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dl> elements are structured correctly",
"help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
"nodes": []
},
{
"id": "dlitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dt> and <dd> elements are contained by a <dl>",
"help": "<dt> and <dd> elements must be contained by a <dl>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
"nodes": []
},
{
"id": "frame-focusable-content",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
"help": "Frames with focusable content must not have tabindex=-1",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
"nodes": []
},
{
"id": "frame-title-unique",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
"help": "Frames must have a unique title attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
"nodes": []
},
{
"id": "frame-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"section508",
"section508.22.i",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements have an accessible name",
"help": "Frames must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
"nodes": []
},
{
"id": "html-xml-lang-mismatch",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
"help": "HTML elements with lang and xml:lang must have the same base language",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
"nodes": []
},
{
"id": "input-button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure input buttons have discernible text",
"help": "Input buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
"nodes": []
},
{
"id": "input-image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <input type=\"image\"> elements have alternative text",
"help": "Image buttons must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
"nodes": []
},
{
"id": "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": "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": "<a href=\"#top\" class=\"brand\" aria-label=\"Meridian Vitality home\">",
"target": [
"a[aria-label=\"Meridian Vitality home\"]"
]
}
]
},
{
"id": "aria-conditional-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are used as described in the specification of the element's role",
"help": "ARIA attributes must be used as specified for the element's role",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-conditional-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"none": [],
"impact": null,
"html": "<a href=\"#top\" class=\"brand\" aria-label=\"Meridian Vitality home\">",
"target": [
"a[aria-label=\"Meridian Vitality home\"]"
]
}
]
},
{
"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=\"tabs\" role=\"tablist\" aria-label=\"Filter classes\">",
"target": [
".tabs"
]
}
]
},
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": "serious",
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"impact": null,
"html": "<a href=\"#top\" class=\"brand\" aria-label=\"Meridian Vitality home\">",
"target": [
"a[aria-label=\"Meridian Vitality home\"]"
]
}
]
},
{
"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=\"tabs\" role=\"tablist\" aria-label=\"Filter classes\">",
"target": [
".tabs"
]
}
]
},
{
"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=\"tabs\" role=\"tablist\" aria-label=\"Filter classes\">",
"target": [
".tabs"
]
}
]
},
{
"id": "aria-valid-attr-value",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all ARIA attributes have valid values",
"help": "ARIA attributes must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-valid-attr-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute values are valid"
},
{
"id": "aria-errormessage",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
},
{
"id": "aria-level",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-level values are valid"
}
],
"none": [],
"impact": null,
"html": "<a href=\"#top\" class=\"brand\" aria-label=\"Meridian Vitality home\">",
"target": [
"a[aria-label=\"Meridian Vitality home\"]"
]
}
]
},
{
"id": "aria-valid-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure attributes that begin with aria- are valid ARIA attributes",
"help": "ARIA attributes must conform to valid names",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-valid-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute name is valid"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#top\" class=\"brand\" aria-label=\"Meridian Vitality home\">",
"target": [
"a[aria-label=\"Meridian Vitality home\"]"
]
}
]
},
{
"id": "avoid-inline-spacing",
"impact": null,
"tags": [
"cat.structure",
"wcag21aa",
"wcag1412",
"EN-301-549",
"EN-9.1.4.12",
"ACT"
],
"description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
"help": "Inline text spacing must be adjustable with custom stylesheets",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "important-letter-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-word-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-line-height",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "line-height in the style attribute is not set to !important, or meets the minimum"
}
],
"none": [],
"impact": null,
"html": "<span class=\"eyebrow\" style=\"color:#ffb8a6\">Signature Program</span>",
"target": [
".txt > .eyebrow"
]
}
]
},
{
"id": "button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure buttons have discernible text",
"help": "Buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "button-has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has inner text that is visible to screen readers"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"tab active\" data-filter=\"all\">All Classes</button>",
"target": [
".active"
]
}
]
},
{
"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>Your doctor, dietitian & coach \u2014 <em>finally on the same team.</em></h1>",
"target": [
"h1"
]
},
{
"html": "<h2>Evidence-based care for every stage of health</h2>",
"target": [
"#services > .container > .section-head > div > h2"
]
},
{
"html": "<h3>Primary & Preventive Care</h3>",
"target": [
".card:nth-child(1) > h3"
]
},
{
"html": "<h3>Telehealth Visits</h3>",
"target": [
".card:nth-child(2) > h3"
]
},
{
"html": "<h3>Physical Therapy & Rehabilitation</h3>",
"target": [
".card:nth-child(3) > h3"
]
},
{
"html": "<h3>Diagnostics & Labs</h3>",
"target": [
".card:nth-child(4) > h3"
]
},
{
"html": "<h3>Metabolic Reset: 12 weeks, one integrated team</h3>",
"target": [
".txt > h3"
]
},
{
"html": "<h2>Nutrition that fits your labs, your culture & your calendar</h2>",
"target": [
"div:nth-child(2) > h2"
]
},
{
"html": "<h3>Single Consult</h3>",
"target": [
".program:nth-child(1) > h3"
]
},
{
"html": "<h3>Nourish Plus <span class=\"badge\">Most popular</span></h3>",
"target": [
".program:nth-child(2) > h3"
]
},
{
"html": "<h3>Performance Fuel</h3>",
"target": [
".program:nth-child(3) > h3"
]
},
{
"html": "<h2>Coached classes, clinically informed</h2>",
"target": [
"#classes > .container > .section-head > div > h2"
]
},
{
"html": "<h3>Strength Foundations</h3>",
"target": [
".class-card[data-cat=\"strength\"]:nth-child(1) > .class-body > h3"
]
},
{
"html": "<h3>Zone 2 Endurance Ride</h3>",
"target": [
".class-card[data-cat=\"cardio\"]:nth-child(2) > .class-body > h3"
]
},
{
"html": "<h3>Midday Mobility Flow</h3>",
"target": [
"article[data-cat=\"mobility\"] > .class-body > h3"
]
},
{
"html": "<h3>Metabolic Conditioning</h3>",
"target": [
".class-card[data-cat=\"cardio\"]:nth-child(4) > .class-body > h3"
]
},
{
"html": "<h3>Back Strong (PT-Led)</h3>",
"target": [
"article[data-cat=\"therapeutic\"] > .class-body > h3"
]
},
{
"html": "<h3>Strong After 60</h3>",
"target": [
".class-card[data-cat=\"strength\"]:nth-child(6) > .class-body > h3"
]
},
{
"html": "<h2>Know your numbers. Then take the next step.</h2>",
"target": [
"#toolkit > .container > h2"
]
},
{
"html": "<h3>BMI & Metabolic Rate Calculator</h3>",
"target": [
".panel:nth-child(1) > h3"
]
},
{
"html": "<h3>Appointment Scheduler</h3>",
"target": [
".panel:nth-child(2) > h3"
]
},
{
"html": "<h2>Your results, explained \u2014 not just delivered</h2>",
"target": [
".lab-grid > div:nth-child(1) > h2"
]
},
{
"html": "<h2>Practical guidance from our clinicians</h2>",
"target": [
"#wellness > .container > h2"
]
},
{
"html": "<h3>Protein timing for adults over 40: what the research actually says</h3>",
"target": [
".wide > .body > h3"
]
},
{
"html": "<h3>The 10-minute walk after meals that steadies blood sugar</h3>",
"target": [
".article:nth-child(2) > .body > h3"
]
},
{
"html": "<h3>Sleep is a training session: recovering smarter</h3>",
"target": [
".article:nth-child(3) > .body > h3"
]
},
{
"html": "<h4>\u26a0\ufe0f Health Alerts</h4>",
"target": [
".widget:nth-child(1) > h4"
]
},
{
"html": "<h4>\ud83d\udcf0 Health News</h4>",
"target": [
".widget:nth-child(2) > h4"
]
},
{
"html": "<h4>\ud83d\udca1 Nutrition Tip of the Week</h4>",
"target": [
".dark > h4"
]
},
{
"html": "<h2>Real people, measurable progress</h2>",
"target": [
"#stories > .container > h2"
]
},
{
"html": "<h2>Questions, answered</h2>",
"target": [
".faq-wrap > div:nth-child(1) > h2"
]
},
{
"html": "<h2>Your first step is a conversation.</h2>",
"target": [
".cta-box > div > h2"
]
},
{
"html": "<h2>Visit our Pearl District campus</h2>",
"target": [
".contact-info > h2"
]
},
{
"html": "<h4>Care</h4>",
"target": [
".foot-grid > div:nth-child(2) > h4"
]
},
{
"html": "<h4>Fitness & Resources</h4>",
"target": [
".foot-grid > div:nth-child(3) > h4"
]
},
{
"html": "<h4>Weekly Wellness Newsletter</h4>",
"target": [
"div:nth-child(4) > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main id=\"top\">",
"target": [
"#top"
]
}
],
"impact": "serious",
"message": "Page has a landmark region"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#cfe7e1",
"bgColor": "#0f4c4a",
"contrastRatio": 7.51,
"fontSize": "10.0pt (13.28px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 7.51"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span>\ud83e\ude7a Same-day telehealth visits available 7 days a week</span>",
"target": [
".topbar > .container > span:nth-child(1)"
]
}
]
},
{
"id": "document-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag242",
"TTv5",
"TT12.a",
"EN-301-549",
"EN-9.2.4.2",
"ACT"
],
"description": "Ensure each HTML document contains a non-empty <title> element",
"help": "Documents must have <title> element to aid in navigation",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "doc-has-title",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Document has a non-empty <title> element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "duplicate-id-aria",
"data": "primary-nav",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<nav class=\"primary\" id=\"primary-nav\" aria-label=\"Primary\">",
"target": [
"#primary-nav"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [
{
"html": "<label for=\"age\">Age</label>",
"target": [
"label[for=\"age\"]"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input type=\"number\" id=\"age\" min=\"18\" max=\"100\" placeholder=\"35\" required=\"\">",
"target": [
"#age"
]
}
]
},
{
"id": "html-has-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure every HTML document has a lang attribute",
"help": "<html> element must have a lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The <html> element has a lang attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "html-lang-valid",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure the lang attribute of the <html> element has a valid value",
"help": "<html> element must have a valid value for the lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "valid-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Value of lang attribute is included in the list of valid languages"
}
],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has an alt attribute"
}
],
"all": [],
"none": [
{
"id": "alt-space-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a valid alt attribute value"
}
],
"impact": null,
"html": "<img src=\"https://placehold.co/96x96/0f4c4a/ff6b4a?text=MV&font=playfair%20display\" alt=\"Meridian Vitality logo\">",
"target": [
"a[aria-label=\"Meridian Vitality home\"] > img[alt=\"Meridian Vitality 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": "explicit-label",
"data": {
"explicitLabel": "Age"
},
"relatedNodes": [
{
"html": "<label for=\"age\">Age</label>",
"target": [
"label[for=\"age\"]"
]
}
],
"impact": "critical",
"message": "Element has an explicit <label>"
},
{
"id": "non-empty-placeholder",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a placeholder attribute"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input type=\"number\" id=\"age\" min=\"18\" max=\"100\" placeholder=\"35\" required=\"\">",
"target": [
"#age"
]
}
]
},
{
"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": "<span class=\"hide-sm\">Nurse line: <a href=\"tel:+15035550142\">(503) 555-0142</a> \u00b7 Mon\u2013Sat 7am\u20138pm</span>",
"target": [
".hide-sm"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"tel:+15035550142\">(503) 555-0142</a>",
"target": [
"a[href=\"tel:+15035550142\"]"
]
}
]
},
{
"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=\"tel:+15035550142\">(503) 555-0142</a>",
"target": [
"a[href=\"tel:+15035550142\"]"
]
}
]
},
{
"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>",
"target": [
"#primary-nav > ul"
]
}
]
},
{
"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=\"#services\">Medical Services</a></li>",
"target": [
"#primary-nav > ul > li:nth-child(1)"
]
}
]
},
{
"id": "meta-viewport",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT"
],
"description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
"help": "Zooming and scaling must not be disabled",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "meta-viewport",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "<meta> tag does not disable zooming on mobile devices"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<img src=\"https://placehold.co/96x96/0f4c4a/ff6b4a?text=MV&font=playfair%20display\" alt=\"Meridian Vitality logo\">",
"target": [
"a[aria-label=\"Meridian Vitality home\"] > img[alt=\"Meridian Vitality logo\"]"
]
}
]
},
{
"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": [
{
"any": [
{
"id": "explicit-label",
"data": {
"explicitLabel": "Sex at birth"
},
"relatedNodes": [
{
"html": "<label for=\"sex\">Sex at birth</label>",
"target": [
"label[for=\"sex\"]"
]
}
],
"impact": "critical",
"message": "Element has an explicit <label>"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<select id=\"sex\"><option value=\"female\">Female</option><option value=\"male\">Male</option></select>",
"target": [
"#sex"
]
}
]
},
{
"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-size",
"data": {
"minSize": 24,
"width": 267.4,
"height": 52.8
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (267.4px by 52.8px, should be at least 24px by 24px)"
},
{
"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=\"#top\" class=\"brand\" aria-label=\"Meridian Vitality home\">",
"target": [
"a[aria-label=\"Meridian Vitality home\"]"
]
}
]
}
],
"incomplete": [
{
"id": "aria-prohibited-attr",
"impact": "serious",
"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": {
"role": null,
"nodeName": "div",
"messageKey": "noRoleSingular",
"prohibited": [
"aria-label"
]
},
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute is not well supported on a div with no valid role attribute."
}
],
"impact": "serious",
"html": "<div class=\"portal-mock\" aria-label=\"Example patient portal lab results\">",
"target": [
".portal-mock"
],
"failureSummary": "Fix all of the following:\n aria-label attribute is not well supported on a div with no valid role attribute."
}
]
},
{
"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": null,
"bgColor": null,
"contrastRatio": 0,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "bold",
"messageKey": "bgGradient",
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"hero\">",
"target": [
".hero"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a background gradient"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Integrated Health & Performance Center \u00b7 Portland, OR</span>",
"target": [
".hero-grid > div:nth-child(1) > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a background gradient"
}
]
}
],
"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": "button[tabindex]"
},
"relatedNodes": [
{
"html": "<button class=\"tab active\" data-filter=\"all\">All Classes</button>",
"target": [
".active"
]
},
{
"html": "<button class=\"tab\" data-filter=\"strength\">Strength</button>",
"target": [
"button[data-filter=\"strength\"]"
]
},
{
"html": "<button class=\"tab\" data-filter=\"cardio\">Cardio & HIIT</button>",
"target": [
"button[data-filter=\"cardio\"]"
]
},
{
"html": "<button class=\"tab\" data-filter=\"mobility\">Mobility & Recovery</button>",
"target": [
"button[data-filter=\"mobility\"]"
]
},
{
"html": "<button class=\"tab\" data-filter=\"therapeutic\">Therapeutic</button>",
"target": [
"button[data-filter=\"therapeutic\"]"
]
}
],
"impact": "critical",
"message": "Element has children which are not allowed: button[tabindex]"
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<div class=\"tabs\" role=\"tablist\" aria-label=\"Filter classes\">",
"target": [
".tabs"
],
"failureSummary": "Fix any of the following:\n Element has children which are not allowed: button[tabindex]"
}
]
},
{
"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": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#toolkit\" class=\"btn btn-primary\">Book a Visit \u2192</a>",
"target": [
".hero-actions > .btn-primary.btn[href$=\"#toolkit\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#toolkit\" class=\"btn btn-primary\">Book a Visit \u2192</a>",
"target": [
".hero-actions > .btn-primary.btn[href$=\"#toolkit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.52,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Medical Services</span>",
"target": [
"#services > .container > .section-head > div > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffffff",
"contrastRatio": 3.87,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card\">",
"target": [
".card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#toolkit\" class=\"more\">Learn More \u2192</a>",
"target": [
".card:nth-child(1) > .more[href$=\"#toolkit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffffff",
"contrastRatio": 3.87,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card\">",
"target": [
".card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#toolkit\" class=\"more\">Start a Visit \u2192</a>",
"target": [
".card:nth-child(2) > .more[href$=\"#toolkit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffffff",
"contrastRatio": 3.87,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card\">",
"target": [
".card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#toolkit\" class=\"more\">Learn More \u2192</a>",
"target": [
".card:nth-child(3) > .more[href$=\"#toolkit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffffff",
"contrastRatio": 3.87,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card\">",
"target": [
".card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#labs\" class=\"more\">View Lab Results \u2192</a>",
"target": [
".more[href$=\"#labs\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#contact\" class=\"btn btn-primary\">Apply for Metabolic Reset</a>",
"target": [
".txt > .btn-primary.btn[href$=\"#contact\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#contact\" class=\"btn btn-primary\">Apply for Metabolic Reset</a>",
"target": [
".txt > .btn-primary.btn[href$=\"#contact\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffffff",
"contrastRatio": 3.87,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"nutrition\" class=\"nutrition\">",
"target": [
"#nutrition"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Nutrition Counseling</span>",
"target": [
".split > div:nth-child(2) > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#toolkit\" class=\"btn btn-primary\">Book a Dietitian</a>",
"target": [
"div:nth-child(2) > .btn-primary.btn[href$=\"#toolkit\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#toolkit\" class=\"btn btn-primary\">Book a Dietitian</a>",
"target": [
"div:nth-child(2) > .btn-primary.btn[href$=\"#toolkit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.52,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"program\">",
"target": [
".program:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#toolkit\" class=\"more\" style=\"font-weight:600;color:var(--coral-dark);text-decoration:none\">Book Consult \u2192</a>",
"target": [
".program:nth-child(1) > .more[href$=\"#toolkit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffe7e0",
"contrastRatio": 3.27,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">Most popular</span>",
"target": [
"h3 > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">Most popular</span>",
"target": [
"h3 > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#d9efe8",
"contrastRatio": 3.22,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"program\" style=\"background:var(--mint);border-color:#b7dccf\">",
"target": [
".program:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.22 (foreground color: #e2502f, background color: #d9efe8, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#toolkit\" class=\"more\" style=\"font-weight:600;color:var(--coral-dark);text-decoration:none\">Get Started \u2192</a>",
"target": [
".program:nth-child(2) > .more[href$=\"#toolkit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.22 (foreground color: #e2502f, background color: #d9efe8, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.52,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"program\">",
"target": [
".program:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#toolkit\" class=\"more\" style=\"font-weight:600;color:var(--coral-dark);text-decoration:none\">Learn More \u2192</a>",
"target": [
".program:nth-child(3) > .more[href$=\"#toolkit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.52,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Fitness Classes</span>",
"target": [
"#classes > .container > .section-head > div > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffe7e0",
"contrastRatio": 3.27,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">Strength</span>",
"target": [
".class-card[data-cat=\"strength\"]:nth-child(1) > .class-body > .class-meta > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">Strength</span>",
"target": [
".class-card[data-cat=\"strength\"]:nth-child(1) > .class-body > .class-meta > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"btn btn-primary btn-sm book-class\">Book Class</button>",
"target": [
".class-card[data-cat=\"strength\"]:nth-child(1) > .class-body > .class-foot > .book-class.btn-sm.btn-primary"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"btn btn-primary btn-sm book-class\">Book Class</button>",
"target": [
".class-card[data-cat=\"strength\"]:nth-child(1) > .class-body > .class-foot > .book-class.btn-sm.btn-primary"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffe7e0",
"contrastRatio": 3.27,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">Cardio</span>",
"target": [
".class-card[data-cat=\"cardio\"]:nth-child(2) > .class-body > .class-meta > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">Cardio</span>",
"target": [
".class-card[data-cat=\"cardio\"]:nth-child(2) > .class-body > .class-meta > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"btn btn-primary btn-sm book-class\">Book Class</button>",
"target": [
".class-card[data-cat=\"cardio\"]:nth-child(2) > .class-body > .class-foot > .book-class.btn-sm.btn-primary"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"btn btn-primary btn-sm book-class\">Book Class</button>",
"target": [
".class-card[data-cat=\"cardio\"]:nth-child(2) > .class-body > .class-foot > .book-class.btn-sm.btn-primary"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffe7e0",
"contrastRatio": 3.27,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">Mobility</span>",
"target": [
"article[data-cat=\"mobility\"] > .class-body > .class-meta > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">Mobility</span>",
"target": [
"article[data-cat=\"mobility\"] > .class-body > .class-meta > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"btn btn-primary btn-sm book-class\">Book Class</button>",
"target": [
"article[data-cat=\"mobility\"] > .class-body > .class-foot > .book-class.btn-sm.btn-primary"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"btn btn-primary btn-sm book-class\">Book Class</button>",
"target": [
"article[data-cat=\"mobility\"] > .class-body > .class-foot > .book-class.btn-sm.btn-primary"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffe7e0",
"contrastRatio": 3.27,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">HIIT</span>",
"target": [
".class-card[data-cat=\"cardio\"]:nth-child(4) > .class-body > .class-meta > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">HIIT</span>",
"target": [
".class-card[data-cat=\"cardio\"]:nth-child(4) > .class-body > .class-meta > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"btn btn-primary btn-sm book-class\">Book Class</button>",
"target": [
".class-card[data-cat=\"cardio\"]:nth-child(4) > .class-body > .class-foot > .book-class.btn-sm.btn-primary"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"btn btn-primary btn-sm book-class\">Book Class</button>",
"target": [
".class-card[data-cat=\"cardio\"]:nth-child(4) > .class-body > .class-foot > .book-class.btn-sm.btn-primary"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffe7e0",
"contrastRatio": 3.27,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">Therapeutic</span>",
"target": [
"article[data-cat=\"therapeutic\"] > .class-body > .class-meta > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">Therapeutic</span>",
"target": [
"article[data-cat=\"therapeutic\"] > .class-body > .class-meta > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"btn btn-primary btn-sm book-class\">Book Class</button>",
"target": [
"article[data-cat=\"therapeutic\"] > .class-body > .class-foot > .book-class.btn-sm.btn-primary"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"btn btn-primary btn-sm book-class\">Book Class</button>",
"target": [
"article[data-cat=\"therapeutic\"] > .class-body > .class-foot > .book-class.btn-sm.btn-primary"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffe7e0",
"contrastRatio": 3.27,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">Strength</span>",
"target": [
".class-card[data-cat=\"strength\"]:nth-child(6) > .class-body > .class-meta > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">Strength</span>",
"target": [
".class-card[data-cat=\"strength\"]:nth-child(6) > .class-body > .class-meta > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.27 (foreground color: #e2502f, background color: #ffe7e0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"btn btn-primary btn-sm book-class\">Book Class</button>",
"target": [
".class-card[data-cat=\"strength\"]:nth-child(6) > .class-body > .class-foot > .book-class.btn-sm.btn-primary"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"btn btn-primary btn-sm book-class\">Book Class</button>",
"target": [
".class-card[data-cat=\"strength\"]:nth-child(6) > .class-body > .class-foot > .book-class.btn-sm.btn-primary"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button type=\"submit\" class=\"btn btn-primary\" style=\"margin-top:1.2rem;width:100%;justify-content:center\">Calculate BMI & BMR</button>",
"target": [
"#calc > .btn-primary.btn[type=\"submit\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button type=\"submit\" class=\"btn btn-primary\" style=\"margin-top:1.2rem;width:100%;justify-content:center\">Calculate BMI & BMR</button>",
"target": [
"#calc > .btn-primary.btn[type=\"submit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button type=\"submit\" class=\"btn btn-primary\" style=\"margin-top:1.2rem;width:100%;justify-content:center\">Request Appointment</button>",
"target": [
"#sched > .btn-primary.btn[type=\"submit\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button type=\"submit\" class=\"btn btn-primary\" style=\"margin-top:1.2rem;width:100%;justify-content:center\">Request Appointment</button>",
"target": [
"#sched > .btn-primary.btn[type=\"submit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.52,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Lab Results & Patient Portal</span>",
"target": [
".lab-grid > div:nth-child(1) > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#contact\" class=\"btn btn-primary\">Access Lab Results</a>",
"target": [
"div:nth-child(1) > .btn-primary.btn[href$=\"#contact\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#contact\" class=\"btn btn-primary\">Access Lab Results</a>",
"target": [
"div:nth-child(1) > .btn-primary.btn[href$=\"#contact\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffffff",
"contrastRatio": 3.87,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"wellness\" class=\"wellness\">",
"target": [
"#wellness"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Wellness Tips & Health Journal</span>",
"target": [
"#wellness > .container > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.52,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article wide\">",
"target": [
".wide"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#wellness\" class=\"more\" style=\"font-weight:600;color:var(--coral-dark);text-decoration:none\">Read Article \u2192</a>",
"target": [
".wide > .body > .more[href$=\"#wellness\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.52,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article\">",
"target": [
".article:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#wellness\" class=\"more\" style=\"font-weight:600;color:var(--coral-dark);text-decoration:none\">Read Article \u2192</a>",
"target": [
".article:nth-child(2) > .body > .more[href$=\"#wellness\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.52,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article\">",
"target": [
".article:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#wellness\" class=\"more\" style=\"font-weight:600;color:var(--coral-dark);text-decoration:none\">Read Article \u2192</a>",
"target": [
".article:nth-child(3) > .body > .more[href$=\"#wellness\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.52,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Member Stories</span>",
"target": [
"#stories > .container > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.52 (foreground color: #e2502f, background color: #f7f4ee, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffffff",
"contrastRatio": 3.87,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"faq\" class=\"faq\">",
"target": [
"#faq"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">FAQ</span>",
"target": [
".faq-wrap > div:nth-child(1) > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "32.4pt (43.2px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"cta-box\">\n <div>\n <h2>Your first step is a conversation.</h2>\n <p>Book a free 20-minute discovery call to find the right mix of care for your goals.</p>\n </div>\n <a href=\"#toolkit\" class=\"btn btn-light\">Book Free Call \u2192</a>\n </div>",
"target": [
".cta-box"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 32.4pt (43.2px), font weight: bold). Expected contrast ratio of 3:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h2>Your first step is a conversation.</h2>",
"target": [
".cta-box > div > h2"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 32.4pt (43.2px), font weight: bold). Expected contrast ratio of 3:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#fff3ef",
"bgColor": "#ff6b4a",
"contrastRatio": 2.59,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"cta-box\">\n <div>\n <h2>Your first step is a conversation.</h2>\n <p>Book a free 20-minute discovery call to find the right mix of care for your goals.</p>\n </div>\n <a href=\"#toolkit\" class=\"btn btn-light\">Book Free Call \u2192</a>\n </div>",
"target": [
".cta-box"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.59 (foreground color: #fff3ef, background color: #ff6b4a, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Book a free 20-minute discovery call to find the right mix of care for your goals.</p>",
"target": [
".cta-box > div > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.59 (foreground color: #fff3ef, background color: #ff6b4a, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2502f",
"bgColor": "#ffffff",
"contrastRatio": 3.87,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"contact\" style=\"padding-top:0;background:#fff\">",
"target": [
"#contact"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Contact</span>",
"target": [
".contact-info > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #e2502f, background color: #ffffff, font size: 9.4pt (12.48px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#ff6b4a",
"contrastRatio": 2.81,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"btn btn-primary btn-sm\" type=\"submit\">Join</button>",
"target": [
".btn-sm.btn-primary[type=\"submit\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"btn btn-primary btn-sm\" type=\"submit\">Join</button>",
"target": [
".btn-sm.btn-primary[type=\"submit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.81 (foreground color: #ffffff, background color: #ff6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 11666
},
{
"y": 576,
"height": 11666
},
{
"y": 1152,
"height": 11666
},
{
"y": 1728,
"height": 11666
},
{
"y": 2304,
"height": 11666
},
{
"y": 2880,
"height": 11666
},
{
"y": 3456,
"height": 11666
},
{
"y": 4032,
"height": 11666
},
{
"y": 4608,
"height": 11666
},
{
"y": 5184,
"height": 11666
},
{
"y": 5760,
"height": 11666
},
{
"y": 6336,
"height": 11666
},
{
"y": 6912,
"height": 11666
},
{
"y": 7488,
"height": 11666
},
{
"y": 8064,
"height": 11666
},
{
"y": 8640,
"height": 11666
},
{
"y": 9216,
"height": 11666
},
{
"y": 9792,
"height": 11666
},
{
"y": 10368,
"height": 11666
},
{
"y": 10944,
"height": 11666
},
{
"y": 10946,
"height": 11666
}
],
"scans": 22,
"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 "Health and Fitness" 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: "Health and Fitness"
- Description: Healthcare, wellness, fitness tips, nutrition, and medical resources.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Health and Fitness" 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: "Contact", "Fitness Classes", "Lab Results".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Health and Fitness" category. Consider themes similar to: "Nutrition Counseling", "Medical Services", "Wellness Tips".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "telehealth", "metabolic rate", "rehabilitation".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Learn More", "Book Class", "Calculate BMI".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Health and Fitness" sector. Ideas similar but not limited to: "appointment scheduler".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "health alerts", "health news", "nutrition advice".
- **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.