Meituan LongCat 2.0 – Hobbies and Interests
via AtlasCloud · Generated
- AIMAC Debt 5.17
- Cost $0.018
- Total Violations 28
- HTML Size 42 KB
- Em Dashes 44
Screenshot
View Live Page
Accessibility Issues Found
28 Serious
-
color-contrast serious 28 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<a href="#about" class="btn btn-primary" style="padding:8px 22px;font-size:.85rem">Join Free</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>MakerNest — Where Passion Becomes Creation</title>
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
--sage:#3b6b4a;--sage-light:#e8f0e9;--sage-dark:#2a4d34;
--cream:#faf6ef;--sand:#f0e9d8;--charcoal:#1e1e1e;--grey-600:#555;--grey-400:#888;
--terracotta:#c4653c;--terracotta-light:#fdf0ea;
--gold:#c8963e;
--radius:12px;--radius-sm:8px;--shadow:0 4px 24px rgba(0,0,0,.07);
--shadow-hover:0 8px 40px rgba(0,0,0,.12);
--max-w:1200px;
--font:'Source Sans Pro',system-ui,sans-serif;
--display:'Playfair Display',Georgia,serif;
}
html{scroll-behavior:smooth;font-size:16px}
body{font-family:var(--font);color:var(--charcoal);background:var(--cream);line-height:1.65;overflow-x:hidden}
img{max-width:100%;display:block}
a{text-decoration:none;color:inherit}
ul{list-style:none}
.container{max-width:var(--max-w);margin:0 auto;padding:0 24px}
/* Buttons */
.btn{display:inline-flex;align-items:center;gap:8px;padding:12px 28px;border-radius:50px;font-weight:600;font-size:.95rem;transition:all .3s ease;cursor:pointer;border:2px solid transparent;white-space:nowrap}
.btn-primary{background:var(--sage);color:#fff;border-color:var(--sage)}
.btn-primary:hover{background:var(--sage-dark);border-color:var(--sage-dark);transform:translateY(-2px);box-shadow:var(--shadow)}
.btn-outline{background:transparent;color:var(--sage);border-color:var(--sage)}
.btn-outline:hover{background:var(--sage-light);transform:translateY(-2px)}
.btn-terracotta{background:var(--terracotta);color:#fff;border-color:var(--terracotta)}
.btn-terracotta:hover{background:#a85330;border-color:#a85330;transform:translateY(-2px);box-shadow:var(--shadow)}
.btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.5)}
.btn-ghost:hover{background:rgba(255,255,255,.1);border-color:#fff}
/* NAVIGATION */
nav{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.92);backdrop-filter:blur(16px);border-bottom:1px solid rgba(0,0,0,.06);transition:all .3s}
nav .container{display:flex;align-items:center;justify-content:space-between;padding-top:14px;padding-bottom:14px}
.logo{display:flex;align-items:center;gap:10px;font-family:var(--display);font-weight:700;font-size:1.4rem;color:var(--sage-dark)}
.logo img{width:38px;height:38px;border-radius:50%}
.nav-links{display:flex;gap:8px;align-items:center}
.nav-links a{padding:8px 16px;border-radius:50px;font-size:.9rem;font-weight:600;color:var(--grey-600);transition:all .25s}
.nav-links a:hover,.nav-links a.active{background:var(--sage-light);color:var(--sage-dark)}
.nav-links a.active{font-weight:700}
.mobile-toggle{display:none;background:none;border:none;cursor:pointer;padding:4px}
.mobile-toggle span{display:block;width:24px;height:2px;background:var(--charcoal);margin:5px 0;transition:.3s}
@media(max-width:860px){
.mobile-toggle{display:block}
.nav-links{position:fixed;top:0;right:-100%;width:280px;height:100vh;background:#fff;flex-direction:column;padding:80px 24px 40px;gap:4px;box-shadow:var(--shadow-hover);transition:right .3s ease;z-index:99}
.nav-links.open{right:0}
.nav-links a{width:100%;padding:14px 16px;font-size:1rem}
}
/* HERO */
.hero{position:relative;background:linear-gradient(135deg,#1a3a2a 0%,#234a32 40%,#2f5e3f 100%);color:#fff;padding:100px 0 120px;overflow:hidden}
.hero::before{content:'';position:absolute;inset:0;background:url('https://picsum.photos/seed/makernest-hero/1600/800.jpg') center/cover;opacity:.25;mix-blend-mode:overlay}
.hero .container{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}
.hero h1{font-family:var(--display);font-size:clamp(2.2rem,5vw,3.6rem);line-height:1.15;margin-bottom:20px;font-weight:700}
.hero p{font-size:1.15rem;opacity:.92;margin-bottom:32px;max-width:540px}
.hero .btn-group{display:flex;gap:14px;flex-wrap:wrap}
.hero-image{position:relative}
.hero-image img{border-radius:var(--radius);box-shadow:var(--shadow-hover);aspect-ratio:4/3;object-fit:cover}
.hero-badge{position:absolute;background:var(--gold);color:#fff;padding:8px 18px;border-radius:50px;font-weight:700;font-size:.85rem;box-shadow:var(--shadow)}
.hero-badge.top-left{top:-14px;left:-14px;transform:rotate(-3deg)}
@media(max-width:860px){
.hero .container{grid-template-columns:1fr;text-align:center;gap:40px}
.hero p{margin-left:auto;margin-right:auto}
.hero .btn-group{justify-content:center}
.hero-image{max-width:460px;margin:0 auto}
}
/* SECTION STYLES */
section{padding:80px 0}
.section-header{text-align:center;max-width:680px;margin:0 auto 56px}
.section-tag{display:inline-block;background:var(--sage-light);color:var(--sage);font-weight:700;font-size:.8rem;text-transform:uppercase;letter-spacing:1.5px;padding:5px 14px;border-radius:50px;margin-bottom:14px}
.section-header h2{font-family:var(--display);font-size:clamp(1.8rem,3.5vw,2.6rem);margin-bottom:14px;font-weight:700}
.section-header p{color:var(--grey-600);font-size:1.05rem}
/* TWO-COL */
.two-col{display:grid;grid-template-columns:1fr 1.1fr;gap:60px;align-items:center}
.two-col img{border-radius:var(--radius);box-shadow:var(--shadow)}
.two-col h2{font-family:var(--display);font-size:2.2rem;margin-bottom:18px}
.two-col p{color:var(--grey-600);margin-bottom:16px;font-size:1.05rem}
/* PROJECT SHOWCASE */
.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}
.project-card{background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:all .4s ease;border:1px solid rgba(0,0,0,.04)}
.project-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-hover)}
.project-card img{aspect-ratio:3/2;object-fit:cover;transition:transform .4s}
.project-card:hover img{transform:scale(1.04)}
.card-body{padding:22px}
.card-body .category{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--sage);margin-bottom:8px}
.card-body h3{font-family:var(--display);font-size:1.25rem;margin-bottom:10px;font-weight:700}
.card-body p{color:var(--grey-600);font-size:.93rem;margin-bottom:16px}
.difficulty{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;color:var(--grey-400)}
.difficulty .dots{display:flex;gap:3px}
.difficulty .dot{width:8px;height:8px;border-radius:50%;background:#ddd}
.difficulty .dot.filled{background:var(--sage)}
@media(max-width:860px){
.projects-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:600px){
.projects-grid{grid-template-columns:1fr}
}
/* TUTORIALS */
.tutorials{background:var(--sand)}
.tutorials .btn-terracotta{align-self:flex-end}
/* INTERACTIVE PLANNER */
.planner{background:var(--cream)}
.planner-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start}
.planner-form{background:#fff;border-radius:var(--radius);padding:32px;box-shadow:var(--shadow)}
.planner-form label{display:block;font-weight:700;margin-bottom:6px;font-size:.9rem}
.planner-form select,.planner-form input[type=number]{width:100%;padding:10px 14px;border:2px solid #e0ddd6;border-radius:var(--radius-sm);font-size:1rem;font-family:var(--font);background:var(--cream);transition:border-color .3s}
.planner-form select:focus,.planner-form input:focus{border-color:var(--sage);outline:none}
.form-group{margin-bottom:18px}
.checkbox-group{display:flex;flex-wrap:wrap;gap:8px}
.checkbox-group label{display:inline-flex;align-items:center;gap:6px;font-weight:400;font-size:.9rem;cursor:pointer;padding:8px 16px;background:var(--cream);border-radius:50px;border:2px solid #e0ddd6;transition:all .2s}
.checkbox-group input:checked+label,.checkbox-group label:has(input:checked){background:var(--sage-light);border-color:var(--sage);color:var(--sage-dark);font-weight:600}
.planner-result{background:var(--sage-dark);color:#fff;border-radius:var(--radius);padding:32px;box-shadow:var(--shadow);display:none;animation:fadeInUp .5s ease}
.planner-result.show{display:block}
.planner-result h3{font-family:var(--display);font-size:1.3rem;margin-bottom:6px}
.planner-result .cost-highlight{font-size:2.2rem;font-weight:700;color:var(--gold);margin:10px 0}
.planner-result ul{margin:14px 0;padding-left:20px}
.planner-result ul li{margin-bottom:6px;font-size:.95rem;opacity:.95}
.planner-result .tip{font-size:.85rem;opacity:.8;font-style:italic;margin-top:12px}
@keyframes fadeInUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:860px){
.planner-grid{grid-template-columns:1fr}
}
/* MAKER SPOTLIGHTS */
.spotlights .container>.section-header{margin-bottom:48px}
.spotlight-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}
.spotlight-card{background:#fff;border-radius:var(--radius);padding:28px;text-align:center;box-shadow:var(--shadow);transition:all .3s;border:1px solid rgba(0,0,0,.04);position:relative;overflow:hidden}
.spotlight-card::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:var(--sage);transform:scaleX(0);transform-origin:left;transition:transform .4s ease}
.spotlight-card:hover::before{transform:scaleX(1)}
.spotlight-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-hover)}
.spotlight-card img{width:72px;height:72px;border-radius:50%;margin:0 auto 14px;object-fit:cover;border:3px solid var(--sage-light)}
.spotlight-card h4{font-family:var(--display);font-size:1.1rem;margin-bottom:2px;font-weight:700}
.spotlight-card .specialty{color:var(--sage);font-size:.85rem;font-weight:600;margin-bottom:10px}
.spotlight-card blockquote{font-size:.92rem;color:var(--grey-600);line-height:1.6;font-style:italic;position:relative}
.spotlight-card blockquote::before{content:'\201C';font-family:var(--display);font-size:2.4rem;color:var(--sage-light);position:absolute;top:-10px;left:-8px;line-height:1}
@media(max-width:860px){
.spotlight-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:600px){
.spotlight-grid{grid-template-columns:1fr}
}
/* TESTIMONIALS */
.testimonials{background:var(--sage-light)}
.testimonial-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.testimonial-card{background:#fff;border-radius:var(--radius);padding:32px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:14px;transition:transform .3s}
.testimonial-card:hover{transform:translateY(-3px)}
.testimonial-card .stars{color:var(--gold);font-size:1rem;letter-spacing:2px}
.testimonial-card p{color:var(--grey-600);font-size:.95rem;line-height:1.7;flex-grow:1}
.testimonial-card .author{display:flex;align-items:center;gap:12px}
.testimonial-card .author img{width:44px;height:44px;border-radius:50%;object-fit:cover}
.testimonial-card .author strong{display:block;font-size:.9rem}
.testimonial-card .author span{font-size:.8rem;color:var(--grey-400)}
@media(max-width:860px){
.testimonial-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:600px){
.testimonial-grid{grid-template-columns:1fr}
}
/* FAQ */
.faq .container{max-width:780px}
.faq-item{background:#fff;border-radius:var(--radius);margin-bottom:12px;box-shadow:0 2px 10px rgba(0,0,0,.04);overflow:hidden;border:1px solid rgba(0,0,0,.05)}
.faq-item summary{display:flex;justify-content:space-between;align-items:center;padding:20px 28px;cursor:pointer;font-weight:600;font-size:1.05rem;list-style:none;transition:background .2s}
.faq-item summary:hover{background:var(--sage-light)}
.faq-item summary::after{content:'+';font-size:1.4rem;color:var(--sage);transition:transform .3s;font-weight:400}
.faq-item[open] summary::after{transform:rotate(45deg)}
.faq-item .faq-body{padding:0 28px 20px;color:var(--grey-600);font-size:.95rem;line-height:1.7}
/* NEWSLETTER */
.newsletter{background:var(--sand);text-align:center}
.newsletter form{display:flex;gap:10px;max-width:480px;margin:24px auto 8px}
.newsletter input{flex:1;padding:14px 20px;border:2px solid #d9d2c5;border-radius:50px;font-size:1rem;font-family:var(--font);background:#fff}
.newsletter input:focus{outline:none;border-color:var(--sage)}
.newsletter p.subtitle{font-size:.9rem;color:var(--grey-400)}
/* FOOTER */
footer{background:var(--charcoal);color:#ccc;padding:60px 0 32px;font-size:.92rem}
footer .container{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:48px}
footer h4{font-family:var(--display);color:#fff;font-size:1.1rem;margin-bottom:18px;font-weight:700;letter-spacing:.3px}
footer a{transition:color .2s;display:inline-block}
footer a:hover{color:var(--gold)}
footer .footer-logo{display:flex;align-items:center;gap:10px;font-family:var(--display);font-weight:700;font-size:1.3rem;color:#fff;margin-bottom:14px}
footer .socials{display:flex;gap:12px;margin-top:12px}
footer .socials a{width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center;transition:all .25s;font-size:.9rem}
footer .socials a:hover{background:var(--sage);color:#fff;transform:translateY(-2px)}
footer .bottom{margin-top:40px;padding-top:24px;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;font-size:.82rem;color:#888}
footer .bottom-links{display:flex;gap:20px}
@media(max-width:860px){
footer .container{grid-template-columns:1fr 1fr}
footer .bottom{justify-content:center;text-align:center}
footer .bottom-links{flex-wrap:wrap;justify-content:center}
}
@media(max-width:500px){
footer .container{grid-template-columns:1fr}
}
/* Utility */
.text-center{text-align:center}
.mt-32{margin-top:32px}
.mb-0{margin-bottom:0}
</style>
</head>
<body>
<!-- NAVIGATION -->
<nav>
<div class="container">
<a href="#hero" class="logo">
<img src="https://placehold.co/76x76/3b6b4a/fff?text=MN&font=playfair+display" alt="Logo">
MakerNest
</a>
<div class="nav-links" id="navLinks">
<a href="#showcase">Community</a>
<a href="#projects">Projects</a>
<a href="#tutorials">Tutorials</a>
<a href="#shop">Shop</a>
<a href="#workshops">Workshops</a>
<a href="#blog">Blog</a>
<a href="#about" class="btn btn-primary" style="padding:8px 22px;font-size:.85rem">Join Free</a>
</div>
<button class="mobile-toggle" onclick="toggleMenu()" aria-label="Toggle menu">
<span></span><span></span><span></span>
</button>
</div>
</nav>
<!-- HERO -->
<section class="hero" id="hero">
<div class="container">
<div>
<h1>Where Passion Becomes Craft</h1>
<p>A curated home for makers, tinkerers, and curious hands. Discover step-by-step tutorials, swap materials with thousands of fellow artisans, and track every project from first sketch to proud display — no matter your skill level.</p>
<div class="btn-group">
<a href="#community" class="btn btn-primary">Join Community</a>
<a href="#projects" class="btn btn-ghost">Browse Projects</a>
</div>
</div>
<div class="hero-image">
<div class="hero-badge top-left">✨ 24k+ Active Branches</div>
<img src="https://picsum.photos/seed/artisan-workshop/600/450.jpg" alt="An organized workshop with tools, wood scraps, and a work-in-progress jewelry box">
</div>
</div>
</section>
<!-- COMMUNITY STATS BAR -->
<section style="padding:0;margin-top:-30px;position:relative;z-index:3;margin-bottom:0">
<div class="container">
<div style="background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-hover);padding:30px 40px;display:flex;justify-content:space-around;flex-wrap:wrap;text-align:center">
<div><div style="font-family:var(--display);font-size:1.8rem;font-weight:700;color:var(--sage)">24,200+</div><div style="font-size:.82rem;color:var(--grey-400);margin-top:2px">Active Makers</div></div>
<div><div style="font-family:var(--display);font-size:1.8rem;font-weight:700;color:var(--sage)">8,400+</div><div style="font-size:.82rem;color:var(--grey-400);margin-top:2px">Shared Projects</div></div>
<div><div style="font-family:var(--display);font-size:1.8rem;font-weight:700;color:var(--sage)">412</div><div style="font-size:.82rem;color:var(--grey-400);margin-top:2px">Weekly Workshops</div></div>
<div><div style="font-family:var(--display);font-size:1.8rem;font-weight:700;color:var(--sage)">38</div><div style="font-size:.82rem;color:var(--grey-400);margin-top:2px">Country Chapters</div></div>
</div>
</div>
</section>
<!-- PROJECT SHOWCASE -->
<section id="projects" class="showcase">
<div class="container">
<div class="section-header">
<span class="section-tag">Project Showcase</span>
<h2>Branches Inspiring Branches</h2>
<p>Every maker starts somewhere. See what members are building right now — from reclaimed‑wood furniture to copper‑etched botanical prints, each project comes with a full materials list and honest difficulty rating.</p>
</div>
<div class="projects-grid">
<div class="project-card">
<div><img src="https://picsum.photos/seed/reclaimed-shelf/600/400.jpg" alt="Tiered wall shelf made from salvaged pallet wood, with visible grain and wrought‑iron brackets"></div>
<div class="card-body">
<div class="category">Woodworking</div>
<h3>Barn‑Wood Floating Shelf</h3>
<p>A weekend project combining reclaimed pallet wood with hand‑forged iron brackets. Includes step‑by‑step joinery tips, weathering technique details, and tool recommendations for complete beginners.</p>
<div style="display:flex;justify-content:space-between;align-items:center;font-size:.82rem;color:var(--grey-400)">
<span>⏱ 6–8 hrs</span>
<div class="difficulty"><span>Skill:</span><div class="dots"><span class="dot filled"></span><span class="dot filled"></span><span class="dot"></span></div></div>
</div>
</div>
</div>
<div class="project-card">
<div><img src="https://picsum.photos/seed/ceramic-vase/600/400.jpg" alt="Hand‑thrown ceramic vase with a matte sage glaze, displayed on a linen cloth"></div>
<div class="card-body">
<div class="category">Ceramics</div>
<h3>Matte Sage Slab Vase</h3>
<p>Learn slab‑building fundamentals and achieve a velvety matte finish without a kiln. This tutorial covers clay selection, scoring techniques, and a food‑safe glaze recipe you can mix at home.</p>
<div style="display:flex;justify-content:space-between;align-items:center;font-size:.82rem;color:var(--grey-400)">
<span>⏱ 3–4 hrs</span>
<div class="difficulty"><span>Skill:</span><div class="dots"><span class="dot filled"></span><span class="dot"></span><span class="dot"></span></div></div>
</div>
</div>
</div>
<div class="project-card">
<div><img src="https://picsum.photos/seed/macrame-wall/600/400.jpg" alt="Large macramé wall hanging with geometric patterns, hung against a white wall"></div>
<div class="card-body">
<div class="category">Textiles</div>
<h3>Geometric Macramé Wall Hanging</h3>
<p>Master the four essential knots and create a statement piece for any room. Includes a printable pattern template, cord‑length calculator, and tips for dyeing cotton rope with natural pigments.</p>
<div style="display:flex;justify-content:space-between;align-items:center;font-size:.82rem;color:var(--grey-400)">
<span>⏱ 4–5 hrs</span>
<div class="difficulty"><span>Skill:</span><div class="dots"><span class="dot filled"></span><span class="dot filled"></span><span class="dot"></span></div></div>
</div>
</div>
</div>
</div>
<div class="text-center mt-32">
<a href="#" class="btn btn-outline">View All Projects →</a>
</div>
</div>
</section>
<!-- TWO-COL: WHY MAKERNEST -->
<section id="about" style="background:var(--sand)">
<div class="container">
<div class="two-col">
<div>
<img src="https://picsum.photos/seed/makers-collab/600/420.jpg" alt="Two makers collaborating at a shared workbench, one sanding a wooden box while the other sketches a design">
</div>
<div>
<span class="section-tag">Why MakerNest</span>
<h2>More Than a Tutorial Site — A Living Workshop</h2>
<p>We built MakerNest because the best learning happens shoulder‑to‑shoulder. Our platform pairs detailed written guides with a community of experienced makers who review your work, suggest material swaps, and cheer every milestone.</p>
<p>Whether you're restoring a vintage hand plane, upcycling denim into a tote, or casting your first resin coaster, you'll find a branch of makers who've walked the same path. Every project page includes a discussion thread, a materials marketplace, and optional live‑streamed build sessions.</p>
<p style="font-weight:600;color:var(--sage-dark)">No gatekeeping. No perfection required. Just honest craft and generous feedback.</p>
<a href="#" class="btn btn-primary mt-32" style="margin-top:20px">Post Your First Work</a>
</div>
</div>
</div>
</section>
<!-- TUTORIALS -->
<section id="tutorials" class="tutorials">
<div class="container">
<div class="section-header">
<span class="section-tag">DIY Tutorials</span>
<h2>Learn by Doing, at Your Own Pace</h2>
<p>Our library spans 14 craft categories, each with beginner, intermediate, and advanced tracks. Every tutorial is written by a practicing maker and peer‑reviewed for clarity, safety, and material accuracy.</p>
</div>
<div class="projects-grid">
<div class="project-card">
<div><img src="https://picsum.photos/seed/tool-sharpening/600/400.jpg" alt="Close‑up of a hand plane blade being sharpened on a whetstone, with water droplets visible"></div>
<div class="card-body">
<div class="category">Tool Maintenance</div>
<h3>Sharpening Chisels & Plane Irons</h3>
<p>A complete guide to the sharpening progression — from 220‑grit flattening to 8000‑grit polishing. Covers honing angles, strop compounds, and how to test sharpness without destroying your project wood.</p>
<div style="display:flex;justify-content:space-between;align-items:center;font-size:.82rem;color:var(--grey-400)">
<span>⏱ 2 hrs</span>
<div class="difficulty"><span>Skill:</span><div class="dots"><span class="dot filled"></span><span class="dot filled"></span><span class="dot filled"></span></div></div>
</div>
</div>
</div>
<div class="project-card">
<div><img src="https://picsum.photos/seed/upcycled-lamp/600/400.jpg" alt="A desk lamp made from a repurposed glass bottle and copper piping, casting warm light"></div>
<div class="card-body">
<div class="category">Upcycling</div>
<h3>Bottle‑to‑Lamp: Copper & Glass</h3>
<p>Transform discarded glass bottles into elegant desk lamps. This tutorial walks you through safe glass drilling, basic electrical wiring, and finishing techniques that give copper a living patina over time.</p>
<div style="display:flex;justify-content:space-between;align-items:center;font-size:.82rem;color:var(--grey-400)">
<span>⏱ 3–4 hrs</span>
<div class="difficulty"><span>Skill:</span><div class="dots"><span class="dot filled"></span><span class="dot filled"></span><span class="dot"></span></div></div>
</div>
</div>
</div>
<div class="project-card">
<div><img src="https://picsum.photos/seed/restored-chair/600/400.jpg" alt="A mid‑century wooden chair being restored, with old varnish partially stripped to reveal rich walnut grain"></div>
<div class="card-body">
<div class="category">Restoration</div>
<h3>Stripping & Refinishing Mid‑Century Furniture</h3>
<p>Learn to identify solid wood vs. veneer, choose the right chemical stripper, and apply a hand‑rubbed oil finish that brings out decades of character. Includes a section on repairing loose joinery without disassembly.</p>
<div style="display:flex;justify-content:space-between;align-items:center;font-size:.82rem;color:var(--grey-400)">
<span>⏱ 8–12 hrs</span>
<div class="difficulty"><span>Skill:</span><div class="dots"><span class="dot filled"></span><span class="dot filled"></span><span class="dot filled"></span></div></div>
</div>
</div>
</div>
</div>
<div class="text-center mt-32">
<a href="#" class="btn btn-terracotta">Browse Full Library →</a>
</div>
</div>
</section>
<!-- INTERACTIVE PROJECT PLANNER -->
<section id="planner" class="planner">
<div class="container">
<div class="section-header">
<span class="section-tag">Interactive Tool</span>
<h2>Project Cost & Material Planner</h2>
<p>Not sure what you'll need? Select your project type and dimensions, and our planner will estimate materials, approximate cost, and flag common pitfalls before you make the first cut.</p>
</div>
<div class="planner-grid">
<div class="planner-form">
<div class="form-group">
<label for="projType">Project Type</label>
<select id="projType" onchange="updatePlanner()">
<option value="shelf">Floating Shelf</option>
<option value="table">Side Table</option>
<option value="planter">Wooden Planter Box</option>
<option value="frame">Picture Frame Set</option>
<option value="cuttingboard">End‑Grain Cutting Board</option>
</select>
</div>
<div class="form-group">
<label for="projWidth">Width (inches)</label>
<input type="number" id="projWidth" value="36" min="6" max="96" oninput="updatePlanner()">
</div>
<div class="form-group">
<label for="projDepth">Depth (inches)</label>
<input type="number" id="projDepth" value="10" min="4" max="48" oninput="updatePlanner()">
</div>
<div class="form-group">
<label>Finish Preference</label>
<div class="checkbox-group">
<label><input type="radio" name="finish" value="oil" checked onchange="updatePlanner()"> Oil</label>
<label><input type="radio" name="finish" value="paint" onchange="updatePlanner()"> Paint</label>
<label><input type="radio" name="finish" value="stain" onchange="updatePlanner()"> Stain</label>
</div>
</div>
<div class="form-group">
<label>Skill Level</label>
<div class="checkbox-group">
<label><input type="radio" name="skill" value="beginner" checked onchange="updatePlanner()"> Beginner</label>
<label><input type="radio" name="skill" value="intermediate" onchange="updatePlanner()"> Intermediate</label>
</div>
</div>
</div>
<div class="planner-result" id="plannerResult">
<h3 id="resultTitle">Floating Shelf — 36″ × 10″</h3>
<div class="cost-highlight" id="resultCost">~$28–$42</div>
<p id="resultDesc">A straightforward weekend build using a single 1×10 board and hidden shelf brackets. Ideal for first‑time woodworkers.</p>
<ul id="resultMaterials">
<li>1×10 × 8′ pine or poplar board — $12–$18</li>
<li>Hidden floating shelf bracket (pair) — $8–$14</li>
<li>Wood glue, 120/220‑grit sandpaper — $4</li>
<li>Finish of your choice — $4–$6</li>
</ul>
<div class="tip" id="resultTip">💡 Tip: Buy an extra 12″ of board for test cuts and finish samples. Poplar takes paint beautifully; pine shows more grain character with oil.</div>
</div>
</div>
</div>
</section>
<!-- MAKER SPOTLIGHTS -->
<section id="community" class="spotlights">
<div class="container">
<div class="section-header">
<span class="section-tag">Creator Spotlights</span>
<h2>Makers We're Celebrating This Month</h2>
<p>Every month we highlight three members whose projects, generosity, and teaching spirit embody what MakerNest is all about.</p>
</div>
<div class="spotlight-grid">
<div class="spotlight-card">
<img src="https://i.pravatar.cc/150?u=elena-rivera" alt="Elena Rivera">
<h4>Elena Rivera</h4>
<div class="specialty">Restoration & Upcycling</div>
<blockquote>I spent years thinking I wasn't "handy." MakerNest gave me the confidence to strip my grandmother's dresser and bring it back to life. Now I teach restoration workshops to other beginners.</blockquote>
</div>
<div class="spotlight-card">
<img src="https://i.pravatar.cc/150?u=marcus-chen" alt="Marcus Chen">
<h4>Marcus Chen</h4>
<div class="specialty">Electronics & Microcontrollers</div>
<blockquote>The community helped me debug a sensor array that had me stuck for weeks. Three different members jumped on a video call. That's the kind of place this is.</blockquote>
</div>
<div class="spotlight-card">
<img src="https://i.pravatar.cc/150?u=amara-okafor" alt="Amara Okafor">
<h4>Amara Okafor</h4>
<div class="specialty">Textiles & Natural Dyes</div>
<blockquote>I share everything I learn about plant‑based dyes because someone else shared it with me first. MakerNest makes that cycle of generosity easy and visible.</blockquote>
</div>
</div>
</div>
</section>
<!-- UPCOMING WORKSHOPS -->
<section id="workshops" style="background:var(--sand)">
<div class="container">
<div class="section-header">
<span class="section-tag">Upcoming Workshops</span>
<h2>Learn Live, Build Together</h2>
<p>Our workshops are small, hands‑on, and led by experienced makers. Sessions are recorded so you can revisit techniques anytime.</p>
</div>
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:28px" class="workshop-grid">
<div style="background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:transform .3s" class="workshop-card">
<div style="aspect-ratio:16/9;overflow:hidden"><img src="https://picsum.photos/seed/workshop-woodburning/500/280.jpg" alt="Wood burning workshop with a pyrography pen and sample boards" style="width:100%;height:100%;object-fit:cover"></div>
<div style="padding:22px">
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:10px">
<span style="font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--terracotta)">Live · Jan 28</span>
<span style="font-size:.78rem;color:var(--grey-400)">2:00 PM EST</span>
</div>
<h4 style="font-family:var(--display);font-size:1.15rem;margin-bottom:8px;font-weight:700">Intro to Pyrography</h4>
<p style="font-size:.9rem;color:var(--grey-600);margin-bottom:14px">Master temperature control, stroke techniques, and pattern transfer on basswood. All skill levels welcome.</p>
<a href="#" style="font-weight:600;color:var(--sage);font-size:.9rem">Reserve Seat →</a>
</div>
</div>
<div style="background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:transform .3s" class="workshop-card">
<div style="aspect-ratio:16/9;overflow:hidden"><img src="https://picsum.photos/seed/workshop-leather/500/280.jpg" alt="Leather crafting tools and a half‑stitched wallet on a cutting mat" style="width:100%;height:100%;object-fit:cover"></div>
<div style="padding:22px">
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:10px">
<span style="font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--terracotta)">Live · Feb 4</span>
<span style="font-size:.78rem;color:var(--grey-400)">11:00 AM EST</span>
</div>
<h4 style="font-family:var(--display);font-size:1.15rem;margin-bottom:8px;font-weight:700">Hand‑Stitched Leather Wallet</h4>
<p style="font-size:.9rem;color:var(--grey-600);margin-bottom:14px">Cut, edge‑bevel, and saddle‑stitch a slim bifold wallet from vegetable‑tanned leather. Kit included with registration.</p>
<a href="#" style="font-weight:600;color:var(--sage);font-size:.9rem">Reserve Seat →</a>
</div>
</div>
<div style="background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:transform .3s" class="workshop-card">
<div style="aspect-ratio:16/9;overflow:hidden"><img src="https://picsum.photos/seed/workshop-resin/500/280.jpg" alt="Clear epoxy resin being poured into a silicone mold with dried flowers" style="width:100%;height:100%;object-fit:cover"></div>
<div style="padding:22px">
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:10px">
<span style="font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--terracotta)">Live · Feb 11</span>
<span style="font-size:.78rem;color:var(--grey-400)">6:00 PM EST</span>
</div>
<h4 style="font-family:var(--display);font-size:1.15rem;margin-bottom:8px;font-weight:700">Resin River Coasters</h4>
<p style="font-size:.9rem;color:var(--grey-600);margin-bottom:14px">Mix pigments, embed botanicals, and demould four stunning coasters. We'll cover bubble prevention and safety basics.</p>
<a href="#" style="font-weight:600;color:var(--sage);font-size:.9rem">Reserve Seat →</a>
</div>
</div>
</div>
</div>
</section>
<!-- TESTIMONIALS -->
<section class="testimonials">
<div class="container">
<div class="section-header">
<span class="section-tag">Testimonials</span>
<h2>What Makers Are Saying</h2>
</div>
<div class="testimonial-grid">
<div class="testimonial-card">
<div class="stars">★★★★★</div>
<p>"I've tried three other maker communities and MakerNest is the only one where I actually finished a project. The feedback loop is real — people care about your progress."</p>
<div class="author">
<img src="https://i.pravatar.cc/88?u=jake-t" alt="Jake T.">
<div><strong>Jake T.</strong><span>Woodworking branch · 8 months</span></div>
</div>
</div>
<div class="testimonial-card">
<div class="stars">★★★★★</div>
<p>"The tutorial quality is unmatched. Every step has a photo, a video clip, and a 'common mistakes' callout. I've saved so much material by not learning the hard way."</p>
<div class="author">
<img src="https://i.pravatar.cc/88?u=priya-s" alt="Priya S.">
<div><strong>Priya S.</strong><span>Ceramics branch · 14 months</span></div>
</div>
</div>
<div class="testimonial-card">
<div class="stars">★★★★★</div>
<p>"As a retired teacher, I needed a new creative outlet. MakerNest gave me structure, community, and a reason to clean out my garage. I've made 23 projects this year."</p>
<div class="author">
<img src="https://i.pravatar.cc/88?u=robert-m" alt="Robert M.">
<div><strong>Robert M.</strong><span>Mixed media · 2 years</span></div>
</div>
</div>
</div>
</div>
</section>
<!-- FAQ -->
<section id="blog" class="faq">
<div class="container">
<div class="section-header">
<span class="section-tag">FAQ</span>
<h2>Common Questions</h2>
<p>Everything you need to know before diving in. Can't find your answer? Our community forum is always open.</p>
</div>
<details class="faq-item">
<summary>Is MakerNest really free to join?</summary>
<div class="faq-body">Yes — a standard membership gives you full access to all tutorials, project plans, community forums, and live workshop recordings. We also offer a MakerNest Pro tier ($9/month) that includes priority workshop seating, downloadable project PDFs, and a monthly materials box curated by our team.</div>
</details>
<details class="faq-item">
<summary>What if I've never built anything before?</summary>
<div class="faq-body">You're exactly who we built this for. Every tutorial is tagged with a difficulty level, and our "First Build" collection walks you through projects that require only basic tools. The community is incredibly welcoming to beginners — ask any question and you'll get patient, detailed answers.</div>
</details>
<details class="faq-item">
<summary>Can I sell projects I make from MakerNest plans?</summary>
<div class="faq-body">Absolutely. All project plans are licensed for personal and commercial use. Many of our members run small Etsy shops or sell at local markets using designs they learned here. We only ask that you credit the original tutorial author when sharing photos online.</div>
</details>
<details class="faq-item">
<summary>How do live workshops work?</summary>
<div="faq-body">Workshops are conducted via Zoom with a maximum of 20 participants to keep things interactive. You'll receive a materials list at least one week in advance. Sessions are recorded and available to watch (or re‑watch) for 90 days after the live date. Pro members get permanent access.</div>
</details>
<details class="faq-item">
<summary>Do you have in‑person meetups?</summary>
<div class="faq-body">Yes! We currently have 38 local chapters worldwide that host monthly build nights, tool swaps, and skill‑share sessions. Check the Community page to find a chapter near you, or apply to start one if there isn't one in your area yet.</div>
</details>
</div>
</section>
<!-- NEWSLETTER -->
<section class="newsletter">
<div class="container">
<span class="section-tag">Stay Inspired</span>
<h2 style="font-family:var(--display);font-size:2rem;margin-bottom:10px">Get a Weekly Dose of Craft</h2>
<p style="color:var(--grey-600);margin-bottom:8px">One email every Saturday — project ideas, member highlights, and a free printable pattern.</p>
<form onsubmit="event.preventDefault();this.querySelector('button').textContent='Subscribed ✓';this.querySelector('button').style.background='var(--sage)'">
<input type="email" placeholder="your@email.com" required aria-label="Email address">
<button type="submit" class="btn btn-primary">Subscribe</button>
</form>
<p class="subtitle">No spam, ever. Unsubscribe in one click.</p>
</div>
</section>
<!-- FOOTER -->
<footer>
<div class="container">
<div>
<div class="footer-logo">
<img src="https://placehold.co/76x76/3b6b4a/fff?text=MN&font=playfair+display" alt="Logo" style="width:32px;height:32px;border-radius:50%">
MakerNest
</div>
<p style="max-width:300px;margin-bottom:8px">A community of makers, tinkerers, and curious hands — building, learning, and sharing since 2019.</p>
<div class="socials">
<a href="#" aria-label="Instagram">IG</a>
<a href="#" aria-label="YouTube">YT</a>
<a href="#" aria-label="Pinterest">Pi</a>
<a href="#" aria-label="Discord">DC</a>
</div>
</div>
<div>
<h4>Explore</h4>
<ul style="display:flex;flex-direction:column;gap:8px">
<li><a href="#">Project Library</a></li>
<li><a href="#">Tutorial Archive</a></li>
<li><a href="#">Maker Directory</a></li>
<li><a href="#">Workshop Calendar</a></li>
<li><a href="#">Material Marketplace</a></li>
</ul>
</div>
<div>
<h4>Community</h4>
<ul style="display:flex;flex-direction:column;gap:8px">
<li><a href="#">Local Chapters</a></li>
<li><a href="#">Discussion Forums</a></li>
<li><a href="#">Mentor Program</a></li>
<li><a href="#">Challenges & Events</a></li>
<li><a href="#">Submit a Tutorial</a></li>
</ul>
</div>
<div>
<h4>Company</h4>
<ul style="display:flex;flex-direction:column;gap:8px">
<li><a href="#">About Us</a></li>
<li><a href="#">Press Kit</a></li>
<li><a href="#">Careers</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">Help Center</a></li>
</ul>
</div>
</div>
<div class="container">
<div class="bottom">
<span>© 2025 MakerNest, Inc. All rights reserved.</span>
<div class="bottom-links">
<a href="#">Privacy Policy</a>
<a href="#">Terms of Service</a>
<a href="#">Cookie Settings</a>
</div>
</div>
</div>
</footer>
<script>
function toggleMenu(){
document.getElementById('navLinks').classList.toggle('open');
}
// Close mobile menu on link click
document.querySelectorAll('.nav-links a').forEach(link=>{
link.addEventListener('click',()=>{
document.getElementById('navLinks').classList.remove('open');
});
});
// Project Planner Logic
const projectData={
shelf:{
title:"Floating Shelf",
baseCost:{beginner:[28,42],intermediate:[35,55]},
materials:[
"1×10 × 8′ pine or poplar board — $12–$18",
"Hidden floating shelf bracket (pair) — $8–$14",
"Wood glue, 120/220‑grit sandpaper — $4",
"Finish of your choice — $4–$6"
],
desc:"A straightforward weekend build using a single 1×10 board and hidden shelf brackets. Ideal for first‑time woodworkers.",
tip:"💡 Tip: Buy an extra 12″ of board for test cuts and finish samples. Poplar takes paint beautifully; pine shows more grain character with oil."
},
table:{
title:"Side Table",
baseCost:{beginner:[45,70],intermediate:[60,95]},
materials:[
"1×12 × 6′ hardwood board — $20–$30",
"4×4 × 8′ post or pre‑turned leg — $12–$20",
"Pocket‑hole jig screws or dowel pins — $5–$8",
"Wood glue, sandpaper assortment — $6",
"Finish of your choice — $6–$12"
],
desc:"A compact side table with a lower shelf. Great for practicing leg‑to‑apron joinery and learning to square a carcass.",
tip:"💡 Tip: Use a speed square at every assembly step. Even a 1° racking error compounds across the whole piece."
},
planter:{
title:"Wooden Planter Box",
baseCost:{beginner:[20,35],intermediate:[30,50]},
materials:[
"1×6 × 8′ cedar or pressure‑treated board — $10–$16",
"1×2 × 6′ corner battens — $4",
"Exterior wood glue, 1″ stainless screws — $5–$8",
"Liner fabric or plastic sheeting — $3–$5",
"Exterior finish (optional) — $4–$8"
],
desc:"A classic window‑box style planter. Cedar resists rot naturally; pressure‑treated is budget‑friendly but requires a food‑safe liner if growing edibles.",
tip:"💡 Tip: Drill ¼″ drainage holes every 6″ along the bottom. Elevate the box on small feet to prevent water pooling underneath."
},
frame:{
title:"Picture Frame Set",
baseCost:{beginner:[15,25],intermediate:[22,40]},
materials:[
"1×3 × 8′ hardwood or poplar — $8–$12",
"Miter saw or miter box + hand saw — (borrow if possible)",
"Wood glue, band clamps or strap clamp — $5",
"Glass or acrylic cut to size — $4–$8",
"Finish of your choice — $3–$5"
],
desc:"A set of three 8×10 frames. Perfect for learning clean miter cuts and experimenting with different finishes on identical blanks.",
tip:"💡 Tip: Cut all four miters for one frame at once to ensure they match. A shooting board helps clean up miter joints without a power saw."
},
cuttingboard:{
title:"End‑Grain Cutting Board",
baseCost:{beginner:[35,55],intermediate:[50,80]},
materials:(
"2×2 × 4′ hard maple, walnut, or cherry — $18–$30",
"Food‑safe wood glue (Titebond III) — $6",
"120/180/220‑grit sandpaper — $4",
"Mineral oil + beeswax finish — $6–$10",
"Rubber feet (optional) — $3–$5"
),
desc:"A durable end‑grain board that's gentle on knives. Requires multiple glue‑ups but teaches essential milling and flattening skills.",
tip:"💡 Tip: Alternate wood species in a checkerboard pattern for visual contrast. Always sand to at least 220 grit before the first oil soak — end grain drinks finish aggressively."
}
};
function updatePlanner(){
const type=document.getElementById('projType').value;
const width=parseInt(document.getElementById('projWidth').value)||36;
const depth=parseInt(document.getElementById('projDepth').value)||10;
const finish=document.querySelector('input[name="finish"]:checked').value;
const skill=document.querySelector('input[name="skill"]:checked').value;
const data=projectData[type];
const cost=data.baseCost[skill];
const finishNote=finish==='oil'?"Oil finish — easy to reapply, food‑safe.":finish==='paint'?"Paint — best for poplar or pine, hides imperfections.":"Stain — highlights grain, works best on open‑pored hardwoods.";
document.getElementById('resultTitle').textContent=`${data.title} — ${width}″ × ${depth}″`;
document.getElementById('resultCost').textContent=`~$${cost[0]}–$${cost[1]}`;
document.getElementById('resultDesc').textContent=data.desc;
document.getElementById('resultMaterials').innerHTML=data.materials.map(m=>`<li>${m}</li>`).join('');
document.getElementById('resultTip').textContent=data.tip+" "+finishNote;
document.getElementById('plannerResult').classList.add('show');
}
// Initialize planner on load
updatePlanner();
// Workshop card hover
document.querySelectorAll('.workshop-card').forEach(card=>{
card.addEventListener('mouseenter',function(){this.style.transform='translateY(-4px)';this.style.boxShadow='var(--shadow-hover)';});
card.addEventListener('mouseleave',function(){this.style.transform='';this.style.boxShadow='';});
});
</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:44:32.138Z",
"url": "https://benchmark.aimac.invalid/9dbe689399f872f755d683b4b771697f5e14b7e71111e9dc98c279f794de2eff.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-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": []
},
{
"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-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": []
},
{
"id": "aria-required-children",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require child roles contain them",
"help": "Certain ARIA roles must contain particular children",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": []
},
{
"id": "aria-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": []
},
{
"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": "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": "<input type=\"email\" placeholder=\"your@email.com\" required=\"\" aria-label=\"Email address\">",
"target": [
"input[type=\"email\"]"
]
}
]
},
{
"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": "<input type=\"email\" placeholder=\"your@email.com\" required=\"\" aria-label=\"Email address\">",
"target": [
"input[type=\"email\"]"
]
}
]
},
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"impact": null,
"html": "<input type=\"email\" placeholder=\"your@email.com\" required=\"\" aria-label=\"Email address\">",
"target": [
"input[type=\"email\"]"
]
}
]
},
{
"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": "<input type=\"email\" placeholder=\"your@email.com\" required=\"\" aria-label=\"Email address\">",
"target": [
"input[type=\"email\"]"
]
}
]
},
{
"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": "<input type=\"email\" placeholder=\"your@email.com\" required=\"\" aria-label=\"Email address\">",
"target": [
"input[type=\"email\"]"
]
}
]
},
{
"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": "<a href=\"#about\" class=\"btn btn-primary\" style=\"padding:8px 22px;font-size:.85rem\">Join Free</a>",
"target": [
"a[href$=\"#about\"]"
]
}
]
},
{
"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 type=\"submit\" class=\"btn btn-primary\">Subscribe</button>",
"target": [
"button[type=\"submit\"]"
]
}
]
},
{
"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>Where Passion Becomes Craft</h1>",
"target": [
"h1"
]
},
{
"html": "<h2>Branches Inspiring Branches</h2>",
"target": [
"#projects > .container > .section-header > h2"
]
},
{
"html": "<h3>Barn\u2011Wood Floating Shelf</h3>",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(1) > .card-body > h3"
]
},
{
"html": "<h3>Matte Sage Slab Vase</h3>",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(2) > .card-body > h3"
]
},
{
"html": "<h3>Geometric Macram\u00e9 Wall Hanging</h3>",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(3) > .card-body > h3"
]
},
{
"html": "<h2>More Than a Tutorial Site \u2014 A Living Workshop</h2>",
"target": [
"div:nth-child(2) > h2"
]
},
{
"html": "<h2>Learn by Doing, at Your Own Pace</h2>",
"target": [
"#tutorials > .container > .section-header > h2"
]
},
{
"html": "<h3>Sharpening Chisels & Plane Irons</h3>",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(1) > .card-body > h3"
]
},
{
"html": "<h3>Bottle\u2011to\u2011Lamp: Copper & Glass</h3>",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(2) > .card-body > h3"
]
},
{
"html": "<h3>Stripping & Refinishing Mid\u2011Century Furniture</h3>",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(3) > .card-body > h3"
]
},
{
"html": "<h2>Project Cost & Material Planner</h2>",
"target": [
"#planner > .container > .section-header > h2"
]
},
{
"html": "<h3 id=\"resultTitle\">Floating Shelf \u2014 36\u2033 \u00d7 10\u2033</h3>",
"target": [
"#resultTitle"
]
},
{
"html": "<h2>Makers We're Celebrating This Month</h2>",
"target": [
"#community > .container > .section-header > h2"
]
},
{
"html": "<h4>Elena Rivera</h4>",
"target": [
".spotlight-card:nth-child(1) > h4"
]
},
{
"html": "<h4>Marcus Chen</h4>",
"target": [
".spotlight-card:nth-child(2) > h4"
]
},
{
"html": "<h4>Amara Okafor</h4>",
"target": [
".spotlight-card:nth-child(3) > h4"
]
},
{
"html": "<h2>Learn Live, Build Together</h2>",
"target": [
"#workshops > .container > .section-header > h2"
]
},
{
"html": "<h4 style=\"font-family:var(--display);font-size:1.15rem;margin-bottom:8px;font-weight:700\">Intro to Pyrography</h4>",
"target": [
".workshop-card:nth-child(1) > div:nth-child(2) > h4"
]
},
{
"html": "<h4 style=\"font-family:var(--display);font-size:1.15rem;margin-bottom:8px;font-weight:700\">Hand\u2011Stitched Leather Wallet</h4>",
"target": [
".workshop-card:nth-child(2) > div:nth-child(2) > h4"
]
},
{
"html": "<h4 style=\"font-family:var(--display);font-size:1.15rem;margin-bottom:8px;font-weight:700\">Resin River Coasters</h4>",
"target": [
".workshop-card:nth-child(3) > div:nth-child(2) > h4"
]
},
{
"html": "<h2>What Makers Are Saying</h2>",
"target": [
".testimonials > .container > .section-header > h2"
]
},
{
"html": "<h2>Common Questions</h2>",
"target": [
"#blog > .container > .section-header > h2"
]
},
{
"html": "<h2 style=\"font-family:var(--display);font-size:2rem;margin-bottom:10px\">Get a Weekly Dose of Craft</h2>",
"target": [
".container > h2"
]
},
{
"html": "<h4>Explore</h4>",
"target": [
".container:nth-child(1) > div:nth-child(2) > h4"
]
},
{
"html": "<h4>Community</h4>",
"target": [
".container:nth-child(1) > div:nth-child(3) > h4"
]
},
{
"html": "<h4>Company</h4>",
"target": [
"div:nth-child(4) > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#2a4d34",
"bgColor": "#fffefe",
"contrastRatio": 9.44,
"fontSize": "16.8pt (22.4px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 9.44"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#hero\" class=\"logo\">\n<img src=\"https://placehold.co/76x76/3b6b4a/fff?text=MN&font=playfair+display\" alt=\"Logo\">\nMakerNest\n</a>",
"target": [
".logo"
]
}
]
},
{
"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": "projType",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<select id=\"projType\" onchange=\"updatePlanner()\">",
"target": [
"#projType"
]
}
]
},
{
"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=\"projType\">Project Type</label>",
"target": [
"label[for=\"projType\"]"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<select id=\"projType\" onchange=\"updatePlanner()\">",
"target": [
"#projType"
]
}
]
},
{
"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/76x76/3b6b4a/fff?text=MN&font=playfair+display\" alt=\"Logo\">",
"target": [
".logo > img[alt=\"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": "Width (inches)"
},
"relatedNodes": [
{
"html": "<label for=\"projWidth\">Width (inches)</label>",
"target": [
"label[for=\"projWidth\"]"
]
}
],
"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": "<input type=\"number\" id=\"projWidth\" value=\"36\" min=\"6\" max=\"96\" oninput=\"updatePlanner()\">",
"target": [
"#projWidth"
]
}
]
},
{
"id": "link-in-text-block",
"impact": null,
"tags": [
"cat.color",
"wcag2a",
"wcag141",
"TTv5",
"TT13.a",
"EN-301-549",
"EN-9.1.4.1"
],
"description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
"help": "Links must be distinguishable without relying on color",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "link-in-text-block-style",
"data": null,
"relatedNodes": [
{
"html": "<div>",
"target": [
".two-col > div:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"btn btn-primary mt-32\" style=\"margin-top:20px\">Post Your First Work</a>",
"target": [
".mt-32.btn-primary.btn"
]
}
]
},
{
"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=\"#hero\" class=\"logo\">\n<img src=\"https://placehold.co/76x76/3b6b4a/fff?text=MN&font=playfair+display\" alt=\"Logo\">\nMakerNest\n</a>",
"target": [
".logo"
]
}
]
},
{
"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 id=\"resultMaterials\"><li>1\u00d710 \u00d7 8\u2032 pine or poplar board \u2014 $12\u2013$18</li><li>Hidden floating shelf bracket (pair) \u2014 $8\u2013$14</li><li>Wood glue, 120/220\u2011grit sandpaper \u2014 $4</li><li>Finish of your choice \u2014 $4\u2013$6</li></ul>",
"target": [
"#resultMaterials"
]
}
]
},
{
"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>1\u00d710 \u00d7 8\u2032 pine or poplar board \u2014 $12\u2013$18</li>",
"target": [
"#resultMaterials > 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/76x76/3b6b4a/fff?text=MN&font=playfair+display\" alt=\"Logo\">",
"target": [
".logo > img[alt=\"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": "Project Type"
},
"relatedNodes": [
{
"html": "<label for=\"projType\">Project Type</label>",
"target": [
"label[for=\"projType\"]"
]
}
],
"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=\"projType\" onchange=\"updatePlanner()\">",
"target": [
"#projType"
]
}
]
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<summary>Is MakerNest really free to join?</summary>",
"target": [
".container > details:nth-child(2) > summary"
]
}
]
},
{
"id": "target-size",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"description": "Ensure touch targets have sufficient size and space",
"help": "All touch targets must be 24px large, or leave sufficient space",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 174.9,
"height": 38
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (174.9px by 38px, 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=\"#hero\" class=\"logo\">\n<img src=\"https://placehold.co/76x76/3b6b4a/fff?text=MN&font=playfair+display\" alt=\"Logo\">\nMakerNest\n</a>",
"target": [
".logo"
]
}
]
}
],
"incomplete": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fontSize": "43.2pt (57.6px)",
"fontWeight": "bold",
"messageKey": "pseudoContent",
"expectedContrastRatio": "3:1"
},
"relatedNodes": [
{
"html": "<section class=\"hero\" id=\"hero\">",
"target": [
"#hero"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a pseudo element"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h1>Where Passion Becomes Craft</h1>",
"target": [
"h1"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a pseudo element"
}
]
}
],
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#555555",
"bgColor": "#3b6b4a",
"contrastRatio": 1.2,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#about\" class=\"btn btn-primary\" style=\"padding:8px 22px;font-size:.85rem\">Join Free</a>",
"target": [
"a[href$=\"#about\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.2 (foreground color: #555555, background color: #3b6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#about\" class=\"btn btn-primary\" style=\"padding:8px 22px;font-size:.85rem\">Join Free</a>",
"target": [
"a[href$=\"#about\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.2 (foreground color: #555555, background color: #3b6b4a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div style=\"background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-hover);padding:30px 40px;display:flex;justify-content:space-around;flex-wrap:wrap;text-align:center\">",
"target": [
"section:nth-child(3) > .container > div"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div style=\"font-size:.82rem;color:var(--grey-400);margin-top:2px\">Active Makers</div>",
"target": [
"section:nth-child(3) > .container > div > div:nth-child(1) > div:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div style=\"background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-hover);padding:30px 40px;display:flex;justify-content:space-around;flex-wrap:wrap;text-align:center\">",
"target": [
"section:nth-child(3) > .container > div"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div style=\"font-size:.82rem;color:var(--grey-400);margin-top:2px\">Shared Projects</div>",
"target": [
"section:nth-child(3) > .container > div > div:nth-child(2) > div:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div style=\"background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-hover);padding:30px 40px;display:flex;justify-content:space-around;flex-wrap:wrap;text-align:center\">",
"target": [
"section:nth-child(3) > .container > div"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div style=\"font-size:.82rem;color:var(--grey-400);margin-top:2px\">Weekly Workshops</div>",
"target": [
"section:nth-child(3) > .container > div > div:nth-child(3) > div:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div style=\"background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-hover);padding:30px 40px;display:flex;justify-content:space-around;flex-wrap:wrap;text-align:center\">",
"target": [
"section:nth-child(3) > .container > div"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div style=\"font-size:.82rem;color:var(--grey-400);margin-top:2px\">Country Chapters</div>",
"target": [
".container > div > div:nth-child(4) > div:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"project-card\">",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>\u23f1 6\u20138 hrs</span>",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(1) > .card-body > div:nth-child(4) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"project-card\">",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Skill:</span>",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(1) > .card-body > div:nth-child(4) > .difficulty > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"project-card\">",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>\u23f1 3\u20134 hrs</span>",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(2) > .card-body > div:nth-child(4) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"project-card\">",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Skill:</span>",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(2) > .card-body > div:nth-child(4) > .difficulty > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"project-card\">",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>\u23f1 4\u20135 hrs</span>",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(3) > .card-body > div:nth-child(4) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"project-card\">",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Skill:</span>",
"target": [
"#projects > .container > .projects-grid > .project-card:nth-child(3) > .card-body > div:nth-child(4) > .difficulty > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"project-card\">",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>\u23f1 2 hrs</span>",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(1) > .card-body > div:nth-child(4) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"project-card\">",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Skill:</span>",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(1) > .card-body > div:nth-child(4) > .difficulty > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"project-card\">",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>\u23f1 3\u20134 hrs</span>",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(2) > .card-body > div:nth-child(4) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"project-card\">",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Skill:</span>",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(2) > .card-body > div:nth-child(4) > .difficulty > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"project-card\">",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>\u23f1 8\u201312 hrs</span>",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(3) > .card-body > div:nth-child(4) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"project-card\">",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Skill:</span>",
"target": [
"#tutorials > .container > .projects-grid > .project-card:nth-child(3) > .card-body > div:nth-child(4) > .difficulty > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#c4653c",
"contrastRatio": 3.98,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"btn btn-terracotta\">Browse Full Library \u2192</a>",
"target": [
".btn-terracotta"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.98 (foreground color: #ffffff, background color: #c4653c, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"btn btn-terracotta\">Browse Full Library \u2192</a>",
"target": [
".btn-terracotta"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.98 (foreground color: #ffffff, background color: #c4653c, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#c4653c",
"bgColor": "#ffffff",
"contrastRatio": 3.98,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div style=\"background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:transform .3s\" class=\"workshop-card\">",
"target": [
".workshop-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.98 (foreground color: #c4653c, 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 style=\"font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--terracotta)\">Live \u00b7 Jan 28</span>",
"target": [
".workshop-card:nth-child(1) > div:nth-child(2) > div > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.98 (foreground color: #c4653c, 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": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div style=\"background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:transform .3s\" class=\"workshop-card\">",
"target": [
".workshop-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span style=\"font-size:.78rem;color:var(--grey-400)\">2:00 PM EST</span>",
"target": [
".workshop-card:nth-child(1) > div:nth-child(2) > div > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#c4653c",
"bgColor": "#ffffff",
"contrastRatio": 3.98,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div style=\"background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:transform .3s\" class=\"workshop-card\">",
"target": [
".workshop-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.98 (foreground color: #c4653c, 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 style=\"font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--terracotta)\">Live \u00b7 Feb 4</span>",
"target": [
".workshop-card:nth-child(2) > div:nth-child(2) > div > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.98 (foreground color: #c4653c, 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": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div style=\"background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:transform .3s\" class=\"workshop-card\">",
"target": [
".workshop-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span style=\"font-size:.78rem;color:var(--grey-400)\">11:00 AM EST</span>",
"target": [
".workshop-card:nth-child(2) > div:nth-child(2) > div > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#c4653c",
"bgColor": "#ffffff",
"contrastRatio": 3.98,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div style=\"background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:transform .3s\" class=\"workshop-card\">",
"target": [
".workshop-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.98 (foreground color: #c4653c, 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 style=\"font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--terracotta)\">Live \u00b7 Feb 11</span>",
"target": [
".workshop-card:nth-child(3) > div:nth-child(2) > div > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.98 (foreground color: #c4653c, 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": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div style=\"background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:transform .3s\" class=\"workshop-card\">",
"target": [
".workshop-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span style=\"font-size:.78rem;color:var(--grey-400)\">6:00 PM EST</span>",
"target": [
".workshop-card:nth-child(3) > div:nth-child(2) > div > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"testimonial-card\">",
"target": [
".testimonial-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Woodworking branch \u00b7 8 months</span>",
"target": [
".testimonial-card:nth-child(1) > .author > div > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"testimonial-card\">",
"target": [
".testimonial-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Ceramics branch \u00b7 14 months</span>",
"target": [
".testimonial-card:nth-child(2) > .author > div > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#ffffff",
"contrastRatio": 3.54,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"testimonial-card\">",
"target": [
".testimonial-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Mixed media \u00b7 2 years</span>",
"target": [
".testimonial-card:nth-child(3) > .author > div > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.54 (foreground color: #888888, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#888888",
"bgColor": "#f0e9d8",
"contrastRatio": 2.92,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"newsletter\">",
"target": [
".newsletter"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.92 (foreground color: #888888, background color: #f0e9d8, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"subtitle\">No spam, ever. Unsubscribe in one click.</p>",
"target": [
".subtitle"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.92 (foreground color: #888888, background color: #f0e9d8, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 8622
},
{
"y": 576,
"height": 8622
},
{
"y": 1152,
"height": 8622
},
{
"y": 1728,
"height": 8622
},
{
"y": 2304,
"height": 8622
},
{
"y": 2880,
"height": 8622
},
{
"y": 3456,
"height": 8622
},
{
"y": 4032,
"height": 8622
},
{
"y": 4608,
"height": 8622
},
{
"y": 5184,
"height": 8622
},
{
"y": 5760,
"height": 8622
},
{
"y": 6336,
"height": 8622
},
{
"y": 6912,
"height": 8622
},
{
"y": 7488,
"height": 8622
},
{
"y": 7902,
"height": 8622
}
],
"scans": 16,
"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 "Hobbies and Interests" 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: "Hobbies and Interests"
- Description: Hobbies, crafts, DIY projects, collecting, and special interest communities.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Hobbies and Interests" 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: "Community", "Shop", "Blog".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Hobbies and Interests" category. Consider themes similar to: "Project Showcase", "DIY Tutorials", "Creator Spotlights".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "tool maintenance", "restoration", "upcycling".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Join Community", "Connect", "Post Work".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Hobbies and Interests" sector. Ideas similar but not limited to: "pattern generator".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "featured makers", "member spotlights", "upcoming workshops".
- **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.