SpaceXAI Grok 4.7 – Education
via xAI · Generated
- AIMAC Debt 3.05
- Cost $0.07
- Total Violations 3
- HTML Size 36 KB
- Em Dashes 0
Screenshot
View Live Page
Accessibility Issues Found
3 Serious
-
color-contrast serious 3 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<p class="eyebrow">Faculty spotlight</p>
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>Halcyon Ridge University | Scholarship with Purpose</title>
<meta name="description" content="Halcyon Ridge University is a residential liberal arts and research college offering a rigorous core curriculum, mentored thesis work, and generous scholarship pathways.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,650&family=Source+Sans+3:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
:root {
--ink: #172033;
--ink-soft: #3d4a60;
--forest: #1b4a3a;
--forest-deep: #123528;
--gold: #b8893d;
--gold-soft: #e8d3a4;
--cream: #f6f1e7;
--paper: #fffcf7;
--line: #e4dccb;
--clay: #8c4a32;
--shadow: 0 18px 40px rgba(23, 32, 51, 0.08);
--radius: 18px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
margin: 0;
color: var(--ink);
background: var(--cream);
font-family: "Source Sans 3", "Source Sans Pro", sans-serif;
font-size: 18px;
line-height: 1.65;
}
img { max-width: 100%; display: block; }
a { color: var(--forest); }
h1, h2, h3, h4 { font-family: Fraunces, Georgia, serif; line-height: 1.15; font-weight: 650; letter-spacing: -0.02em; margin: 0 0 0.6em; }
p { margin: 0 0 1em; }
.wrap { width: min(1160px, calc(100% - 40px)); margin: 0 auto; }
.eyebrow {
display: inline-block;
letter-spacing: 0.16em;
text-transform: uppercase;
font-size: 0.74rem;
font-weight: 700;
color: var(--gold);
margin-bottom: 0.55rem;
}
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.4rem;
border: 0;
cursor: pointer;
text-decoration: none;
border-radius: 999px;
padding: 0.85rem 1.35rem;
font-weight: 700;
font-family: inherit;
font-size: 0.98rem;
}
.btn-primary { background: var(--gold); color: #1d1406; }
.btn-primary:hover { background: #c99748; }
.btn-ghost { background: transparent; color: #fff; border: 1.5px solid rgba(255,255,255,0.7); }
.btn-ghost:hover { background: rgba(255,255,255,0.1); }
.btn-forest { background: var(--forest); color: #fff; }
.btn-forest:hover { background: var(--forest-deep); }
.btn-line { background: transparent; color: var(--forest); border: 1.5px solid var(--forest); }
header.site {
position: sticky; top: 0; z-index: 40;
background: rgba(246, 241, 231, 0.92);
backdrop-filter: blur(12px);
border-bottom: 1px solid var(--line);
}
.nav-row {
display: flex; align-items: center; justify-content: space-between;
gap: 1rem; padding: 0.75rem 0;
}
.brand { display: flex; align-items: center; gap: 0.75rem; text-decoration: none; color: inherit; min-width: 240px; }
.brand img { width: 52px; height: 52px; border-radius: 12px; }
.brand strong { display: block; font-family: Fraunces, serif; font-size: 1.15rem; }
.brand span { display: block; font-size: 0.78rem; color: var(--ink-soft); margin-top: 0.1rem; }
nav.primary { display: flex; gap: 1.05rem; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
nav.primary a { text-decoration: none; color: var(--ink); font-weight: 600; font-size: 0.95rem; }
nav.primary a:hover { color: var(--forest); }
nav.primary a.cta-nav { background: var(--forest); color: #fff; padding: 0.5rem 0.9rem; border-radius: 999px; }
.menu-toggle { display: none; background: var(--forest); color: #fff; border: 0; border-radius: 10px; padding: 0.55rem 0.8rem; font-weight: 700; }
.hero {
position: relative;
min-height: 78vh;
display: grid;
align-items: end;
color: #fff;
background:
linear-gradient(180deg, rgba(18, 28, 24, 0.25), rgba(12, 24, 20, 0.78)),
url("https://picsum.photos/id/1015/1800/1100") center/cover no-repeat;
}
.hero-inner { padding: 7rem 0 4.2rem; width: min(1160px, calc(100% - 40px)); margin: 0 auto; }
.hero h1 { font-size: clamp(2.6rem, 6vw, 5.1rem); max-width: 14ch; color: #fff; }
.hero p.lede { max-width: 62ch; font-size: 1.15rem; color: #f4efe6; }
.hero-actions { display: flex; gap: 0.75rem; flex-wrap: wrap; margin-top: 1.3rem; }
.stat-strip {
display: grid;
grid-template-columns: repeat(4, 1fr);
background: var(--forest-deep);
color: #f6f1e7;
}
.stat-strip div { padding: 1.3rem 1.4rem; border-right: 1px solid rgba(255,255,255,0.08); }
.stat-strip strong { display: block; font-family: Fraunces, serif; font-size: 1.7rem; color: var(--gold-soft); }
.stat-strip span { font-size: 0.92rem; opacity: 0.9; }
section { padding: 5rem 0; }
.section-head { max-width: 720px; margin-bottom: 2rem; }
.section-head p { color: var(--ink-soft); }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.2rem; }
.grid-2 { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 1.6rem; align-items: start; }
.card {
background: var(--paper);
border: 1px solid var(--line);
border-radius: var(--radius);
box-shadow: var(--shadow);
overflow: hidden;
}
.card .pad { padding: 1.25rem 1.3rem 1.4rem; }
.card h3 { font-size: 1.4rem; }
.card img.cover { width: 100%; height: 190px; object-fit: cover; }
.kicker { color: var(--clay); font-weight: 700; font-size: 0.82rem; letter-spacing: 0.08em; text-transform: uppercase; }
.split {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2.4rem;
align-items: center;
}
.split img { border-radius: 22px; height: 460px; width: 100%; object-fit: cover; }
.faculty-card { display: grid; grid-template-columns: 92px 1fr; gap: 1rem; padding: 1.1rem; }
.faculty-card img { width: 92px; height: 92px; border-radius: 50%; object-fit: cover; }
.sidebar-stack { display: grid; gap: 1rem; }
.deadline { display: flex; justify-content: space-between; gap: 1rem; padding: 0.85rem 0; border-bottom: 1px solid var(--line); }
.deadline:last-child { border-bottom: 0; }
.deadline strong { display: block; }
.deadline time { color: var(--clay); font-weight: 700; white-space: nowrap; }
.quote {
background: var(--paper);
border-radius: var(--radius);
padding: 1.4rem;
border: 1px solid var(--line);
}
.quote img { width: 56px; height: 56px; border-radius: 50%; }
.quote footer { display: flex; gap: 0.8rem; align-items: center; margin-top: 1rem; }
.quote p { font-size: 1.02rem; }
.tracker, .faq { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.4rem; box-shadow: var(--shadow); }
label { display: block; font-weight: 700; margin-bottom: 0.35rem; }
input[type="text"], select {
width: 100%;
padding: 0.8rem 0.9rem;
border-radius: 12px;
border: 1px solid #d8cfbf;
font: inherit;
background: #fff;
margin-bottom: 0.8rem;
}
.form-row { display: grid; grid-template-columns: 1fr auto; gap: 0.7rem; align-items: end; }
.hint { font-size: 0.9rem; color: var(--ink-soft); }
.timeline { margin-top: 1rem; display: grid; gap: 0.55rem; }
.step { display: grid; grid-template-columns: 18px 1fr; gap: 0.7rem; align-items: start; }
.dot { width: 14px; height: 14px; border-radius: 50%; margin-top: 0.35rem; background: #d7d0c3; }
.step.done .dot { background: var(--forest); }
.step.current .dot { background: var(--gold); box-shadow: 0 0 0 4px rgba(184, 137, 61, 0.25); }
.hidden { display: none; }
.accordion details { border-bottom: 1px solid var(--line); padding: 0.7rem 0; }
.accordion summary { cursor: pointer; font-weight: 700; font-size: 1.05rem; }
.accordion details p { margin: 0.6rem 0 0.3rem; color: var(--ink-soft); }
.event-list { display: grid; gap: 0.9rem; }
.event {
display: grid;
grid-template-columns: 88px 1fr;
gap: 1rem;
background: var(--paper);
border-radius: 16px;
overflow: hidden;
border: 1px solid var(--line);
}
.event .date {
background: var(--forest);
color: #fff;
display: flex; flex-direction: column; align-items: center; justify-content: center;
font-weight: 700;
}
.event .date b { font-family: Fraunces, serif; font-size: 1.5rem; }
.event .body { padding: 0.85rem 1rem 0.95rem 0; }
.banner-cta {
background: linear-gradient(120deg, var(--forest) 0%, #2d6a52 60%, #8c4a32 140%);
color: #fff;
border-radius: 28px;
padding: 2.4rem;
display: flex;
justify-content: space-between;
gap: 1.5rem;
align-items: center;
}
.banner-cta h2, .banner-cta p { color: #fff; }
footer.site { background: #121820; color: #e7e1d6; padding: 3rem 0 1.4rem; margin-top: 1rem; }
footer.site a { color: #e7e1d6; text-decoration: none; }
footer.site a:hover { color: var(--gold-soft); }
.foot-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 1.5rem; }
footer.site h4 { color: #fff; font-size: 1.05rem; }
.socials { display: flex; gap: 0.7rem; margin-top: 0.6rem; }
.socials a { border: 1px solid rgba(255,255,255,0.2); border-radius: 999px; padding: 0.3rem 0.7rem; font-size: 0.88rem; }
.legal { border-top: 1px solid rgba(255,255,255,0.1); margin-top: 2rem; padding-top: 1rem; display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; font-size: 0.9rem; color: #b7b1a6; }
.pill { display: inline-block; background: #efe6d4; color: var(--forest-deep); border-radius: 999px; padding: 0.15rem 0.6rem; font-size: 0.78rem; font-weight: 700; }
@media (max-width: 980px) {
.grid-3, .stat-strip, .foot-grid { grid-template-columns: 1fr 1fr; }
.split, .grid-2, .form-row { grid-template-columns: 1fr; }
.banner-cta { flex-direction: column; align-items: flex-start; }
nav.primary { display: none; position: absolute; top: 74px; left: 0; right: 0; background: var(--cream); padding: 1rem 1.2rem 1.2rem; border-bottom: 1px solid var(--line); flex-direction: column; align-items: flex-start; }
nav.primary.open { display: flex; }
.menu-toggle { display: inline-block; }
}
@media (max-width: 640px) {
.grid-3, .stat-strip, .foot-grid { grid-template-columns: 1fr; }
.hero { min-height: 88vh; }
.split img { height: 260px; }
}
</style>
</head>
<body>
<header class="site">
<div class="wrap nav-row">
<a class="brand" href="#top">
<img src="https://placehold.co/104x104/1b4a3a/f6f1e7?text=HR&font=playfair+display" alt="Halcyon Ridge University monogram">
<div>
<strong>Halcyon Ridge University</strong>
<span>Scholarship with purpose.</span>
</div>
</a>
<button class="menu-toggle" type="button" aria-expanded="false" aria-controls="primary-nav">Menu</button>
<nav class="primary" id="primary-nav" aria-label="Primary">
<a href="#programs">Programs</a>
<a href="#faculty">Faculty</a>
<a href="#campus">Campus Life</a>
<a href="#enrollment">Enrollment</a>
<a href="#portal">Student Portal</a>
<a href="#apply">Apply</a>
<a href="#events">Events</a>
</nav>
</div>
</header>
<main id="top">
<section class="hero" aria-label="Introduction">
<div class="hero-inner">
<p class="eyebrow">Residential college · Est. 1894 · Cascade foothills</p>
<h1>A campus built for serious inquiry.</h1>
<p class="lede">Halcyon Ridge University is a teaching-centered research college where undergraduates write a thesis, live inside a shared core curriculum, and learn beside faculty who still keep office hours with the door open. We prepare students to argue carefully, make things that matter, and carry their scholarship into public life.</p>
<div class="hero-actions">
<a class="btn btn-primary" href="#visit">Schedule Tour</a>
<a class="btn btn-ghost" href="#catalog">Download Catalog</a>
</div>
</div>
</section>
<div class="stat-strip">
<div><strong>11:1</strong><span>student–faculty ratio across seminars</span></div>
<div><strong>94%</strong><span>of seniors complete an original thesis</span></div>
<div><strong>$48M</strong><span>awarded in scholarship aid last cycle</span></div>
<div><strong>62</strong><span>majors within four academic colleges</span></div>
</div>
<section id="programs">
<div class="wrap">
<div class="section-head">
<p class="eyebrow">Academic pathways</p>
<h2>A core curriculum that refuses to be decorative.</h2>
<p>Every Halcyon Ridge student, regardless of major, moves through the Ridge Seminar sequence: close reading, quantitative reasoning, a laboratory or studio practicum, and a civic inquiry course grounded in the region’s watersheds, courts, and archives. The point is not a checklist. It is a shared intellectual language so that a composer and a biochemist can still argue productively at the same table.</p>
<p>Majors are housed in the College of Letters, the College of Natural Sciences, the School of Civic Design, and the Conservatory. Students declare by the end of the fourth semester, after at least two exploratory courses outside their intended field. Honors tracks require a public defense and an external reader.</p>
</div>
<div class="grid-3">
<article class="card">
<img class="cover" src="https://picsum.photos/id/24/800/500" alt="Sunlit library reading room with long tables">
<div class="pad">
<p class="kicker">Letters & inquiry</p>
<h3>College of Letters</h3>
<p>History, philosophy, literature, and languages share a methods studio where students learn archival practice before they ever open a thesis prospectus. First-year writing is taught in sections of fourteen, and every paper receives a conference, not only marginal notes.</p>
<p>Recent senior theses have traced irrigation law in the upper valley, translated a neglected corpus of migrant letters, and rebuilt a lost stage version of a Restoration comedy from prompt books.</p>
</div>
</article>
<article class="card">
<img class="cover" src="https://picsum.photos/id/106/800/500" alt="Students working around laboratory benches">
<div class="pad">
<p class="kicker">Laboratory & field</p>
<h3>Natural Sciences</h3>
<p>Biology, chemistry, earth systems, and applied mathematics run a joint field station on the ridge above campus. Undergraduates are listed as co-authors when the work warrants it, and summer research stipends are treated as part of the financial aid conversation, not an afterthought.</p>
<p>The core curriculum’s quantitative strand is not a gatekeeping course. It is a year-long sequence that pairs statistical reasoning with a data set students collect themselves.</p>
</div>
</article>
<article class="card">
<img class="cover" src="https://picsum.photos/id/1016/800/500" alt="Mountain valley landscape near the campus field station">
<div class="pad">
<p class="kicker">Public work</p>
<h3>Civic Design</h3>
<p>Public policy, education studies, and studio architecture share studios with city partners. Students draft housing briefs, curriculum maps for regional schools, and wayfinding systems that are actually installed. The school insists that design without a public client is only an exercise.</p>
<p>Graduates enter teaching residencies, planning offices, and graduate programs with a portfolio that already has a reader outside the university.</p>
</div>
</article>
</div>
</div>
</section>
<section id="faculty" style="background:#fffaf3;">
<div class="wrap split">
<div>
<p class="eyebrow">Faculty spotlight</p>
<h2>Teachers who still do the work they assign.</h2>
<p>Halcyon Ridge hires for the classroom first. Research is expected, and it is funded, but promotion files are read by colleagues who have sat in on seminars. The result is a faculty that publishes without disappearing. Office hours are posted on doors, and thesis advisors meet their students every other week from prospectus to defense.</p>
<p>This spring’s spotlight cohort includes a historian reconstructing mill ledgers, a composer writing for the campus wind ensemble, and a biologist whose undergraduates are mapping cold-water refugia in the north fork. They teach the core curriculum themselves. There is no separate “intro staff.”</p>
<div class="card" style="margin-top:1rem;">
<article class="faculty-card">
<img src="https://i.pravatar.cc/180?u=amira-vell" alt="Portrait of Professor Amira Vell">
<div>
<h3>Amira Vell</h3>
<p class="kicker">Professor of Environmental History</p>
<p>Vell’s seminar, “Paper, Water, and Title,” walks students through county deed books and irrigation district minutes. Her latest book argues that western water law is as much a literary genre as a legal one. She directs the thesis workshop for the College of Letters.</p>
</div>
</article>
<article class="faculty-card">
<img src="https://i.pravatar.cc/180?u=jonah-okoye" alt="Portrait of Professor Jonah Okoye">
<div>
<h3>Jonah Okoye</h3>
<p class="kicker">Associate Professor of Molecular Ecology</p>
<p>Okoye runs the ridge field station and refuses to separate methods from ethics. His lab’s current project pairs eDNA sampling with conversations in downstream communities about who gets to name a finding and who lives with it.</p>
</div>
</article>
<article class="faculty-card">
<img src="https://i.pravatar.cc/180?u=leila-march" alt="Portrait of Professor Leila March">
<div>
<h3>Leila March</h3>
<p class="kicker">Conservatory, Composition</p>
<p>March’s students score live events for the civic calendar, from commencement to the harvest lecture. She treats orchestration as a form of listening, and her studio is as likely to be in the chapel balcony as in a practice room.</p>
</div>
</article>
</div>
</div>
<div>
<img src="https://picsum.photos/id/1074/900/1100" alt="Professor speaking with students on a shaded campus path">
</div>
</div>
</section>
<section id="campus">
<div class="wrap">
<div class="section-head">
<p class="eyebrow">Campus life</p>
<h2>A residential college, not a commuter timetable.</h2>
<p>Ninety-two percent of undergraduates live on the ridge for all four years. Houses are mixed by year and major, with a faculty fellow at each table three nights a week. The point of residence is not amenities. It is the unscheduled conversation that happens after a difficult seminar, when someone still has the text open.</p>
</div>
<div class="grid-2">
<div>
<img src="https://picsum.photos/id/1011/1100/760" alt="Students crossing a green quadrangle between brick halls" style="border-radius:22px; height:360px; width:100%; object-fit:cover; margin-bottom:1rem;">
<p>The day has a shape. Morning seminars end before noon so laboratories and studios can run long. Afternoons belong to rehearsal, fieldwork, and the writing center, which is staffed by trained peer fellows rather than a drop-box. Evenings gather around house tables, chapel concerts, and the late library, open until two during thesis season.</p>
<p>Club life is student-governed and lightly sponsored. The debate union, the ridge rescue team, the student press, and the community tutoring corps are the institutions that actually form people here. Athletics are Division III and unapologetically so: the rowing launch and the climbing wall exist to exhaust a mind that has been sitting too long, not to build a brand.</p>
<p>First-year students are paired with a house mentor and a faculty advisor before they arrive. The pairing is not algorithmic theater. Advisors read the application essays and write back in August. That letter is the first assignment of the core curriculum, and students answer it.</p>
<p><a class="btn btn-forest" href="#events">See the term calendar</a></p>
</div>
<aside class="sidebar-stack" aria-label="Campus notices">
<div class="card pad">
<h3>Upcoming deadlines</h3>
<div class="deadline"><div><strong>Early decision applications</strong><span>Include counselor report and arts portfolio if relevant.</span></div><time datetime="2026-11-15">Nov 15</time></div>
<div class="deadline"><div><strong>Scholarship reconsideration</strong><span>Families may file one appeal with updated tax documents.</span></div><time datetime="2026-12-01">Dec 1</time></div>
<div class="deadline"><div><strong>Spring visit days</strong><span>Overnight stays in North House and the Conservatory lodge.</span></div><time datetime="2027-02-20">Feb 20</time></div>
<div class="deadline"><div><strong>Thesis prospectus, seniors</strong><span>Signed by advisor and second reader.</span></div><time datetime="2026-10-03">Oct 3</time></div>
</div>
<div class="card pad">
<h3>Scholarship opportunities</h3>
<p><span class="pill">Need-based</span> The Ridge Grant meets full demonstrated need for admitted students whose families qualify, without loans in the first-year package.</p>
<p><span class="pill">Merit</span> The Founders Scholarship recognizes unusually strong writing or scientific promise and includes a funded summer of research or archive work.</p>
<p><span class="pill">Teaching</span> The Lantern Fellowship supports students who intend to teach in public schools and pairs them with a mentor teacher in the valley from sophomore year.</p>
</div>
<div class="card pad">
<h3>Alumni note</h3>
<p>Mara Ellison ’14, now directing a rural literacy collaborative, returned this month to sit on thesis defenses in education studies. She told seniors that the core curriculum’s civic inquiry course was the first time a grade depended on whether a community partner could use the work.</p>
</div>
</aside>
</div>
</div>
</section>
<section id="enrollment" style="background:#fffaf3;">
<div class="wrap">
<div class="section-head">
<p class="eyebrow">Enrollment info</p>
<h2>Admission is a conversation, then a commitment.</h2>
<p>We read applications in human committees of three. There is no secret index and no cut score. We look for evidence that a student has already taken intellectual risks: a research paper that changed its mind, a laboratory notebook with failed trials left in, a portfolio that shows revision rather than polish alone. Counselor recommendations matter most when they describe how a student behaves when the work gets difficult.</p>
<p>The university is test-optional. Submitting scores neither helps nor hurts by itself; they are read as one artifact among others. Interviews are offered, not required, and may be held on campus, in regional gatherings, or by video. Fee waivers are automatic for any student who requests one. We do not ask families to prove hardship twice.</p>
</div>
<div class="grid-3">
<article class="card pad">
<h3>What to prepare</h3>
<p>A common application or the Halcyon Ridge form, a school report, two teacher recommendations, and a personal essay that answers a question you actually care about. Arts and architecture applicants add a portfolio of eight to twelve works with process notes. Transfer students submit a college transcript and a statement of why the core curriculum still makes sense mid-stream.</p>
</article>
<article class="card pad">
<h3>How aid works</h3>
<p>File the financial aid application by the same date as your admission plan. Packages combine scholarship grants, a modest campus job, and, only when a family prefers it, a limited loan. We publish a four-year estimate so the first offer is not a bait year. Outside scholarships reduce loan and work before they touch the Ridge Grant.</p>
</article>
<article class="card pad">
<h3>After you enroll</h3>
<p>Deposited students receive a summer reading shared by the entire entering class, a housing questionnaire read by house fellows, and an invitation to register for the opening Ridge Seminar. Orientation is five days and includes a field day on the watershed, not a spirit-wear fashion show. Academic advising begins before classes, in person.</p>
</article>
</div>
<div class="banner-cta" id="catalog" style="margin-top:1.6rem;">
<div>
<h2>Take the catalog home.</h2>
<p>The current course book includes the full core curriculum, major maps, scholarship policies, and a plain-language account of what a thesis defense actually looks like. It is written for families as much as for prospective students.</p>
</div>
<a class="btn btn-primary" href="#apply">Download Catalog</a>
</div>
</div>
</section>
<section id="voices">
<div class="wrap">
<div class="section-head">
<p class="eyebrow">From the ridge</p>
<h2>What students say when the tour is over.</h2>
</div>
<div class="grid-3">
<figure class="quote">
<p>“I came for the biology field station and stayed because my history professor made me defend a paragraph I thought was finished. The thesis was harder than I expected and more mine than anything I had written.”</p>
<footer>
<img src="https://i.pravatar.cc/120?u=student-nora" alt="">
<figcaption><strong>Nora Pell</strong><br>Biology & history, class of 2026</figcaption>
</footer>
</figure>
<figure class="quote">
<p>“The scholarship conversation was the first time a college told us the number and then explained the number. We could plan. My campus job is in the archive, which turned out to be the start of my major.”</p>
<footer>
<img src="https://i.pravatar.cc/120?u=student-mateo" alt="">
<figcaption><strong>Mateo Ruiz</strong><br>Civic design, class of 2027</figcaption>
</footer>
</figure>
<figure class="quote">
<p>“House table is not a brochure phrase. Someone will ask what you thought of the reading, and they will wait for a real answer. That is the campus culture, more than any event poster.”</p>
<footer>
<img src="https://i.pravatar.cc/120?u=student-aisha" alt="">
<figcaption><strong>Aisha Rahman</strong><br>Conservatory, class of 2025</figcaption>
</footer>
</figure>
</div>
</div>
</section>
<section id="events" style="background:#fffaf3;">
<div class="wrap grid-2">
<div>
<p class="eyebrow">Events</p>
<h2>Lectures, visit days, and the work made public.</h2>
<p>The academic calendar is also a public calendar. Thesis defenses are open. The harvest lecture brings a writer or scientist who is willing to be questioned by undergraduates for an hour after the talk. Visit days are teaching days: guests sit in on a real seminar rather than a performance of one.</p>
<div class="event-list">
<article class="event">
<div class="date"><span>OCT</span><b>12</b></div>
<div class="body">
<h3>Harvest Lecture: Titles to Water</h3>
<p>Professor Amira Vell in conversation with a former irrigation district counsel. Chapel, 7:30 p.m. Open to the valley. Reception in the north cloister follows.</p>
</div>
</article>
<article class="event">
<div class="date"><span>NOV</span><b>07</b></div>
<div class="body">
<h3>Fall Visit Day & Seminar Sit-in</h3>
<p>Prospective students join a core curriculum section, eat at a house table, and meet financial aid officers without an appointment queue. Register by October 28.</p>
<a class="btn btn-line" href="#visit">Register Now</a>
</div>
</article>
<article class="event">
<div class="date"><span>APR</span><b>18</b></div>
<div class="body">
<h3>Thesis Festival</h3>
<p>Seniors present posters, recitals, and defense excerpts across the quadrangle. Families are invited. The writing center offers a morning clinic for juniors drafting prospectuses.</p>
</div>
</article>
</div>
</div>
<div>
<img src="https://picsum.photos/id/1025/900/700" alt="Evening gathering outside a campus hall" style="width:100%; height:280px; object-fit:cover; border-radius:22px; margin-bottom:1rem;">
<div class="faq accordion" id="visit">
<h3>Questions families actually ask</h3>
<details open>
<summary>Is the core curriculum extra coursework on top of the major?</summary>
<p>No. The Ridge Seminars replace a scattered distribution checklist. Most majors count at least two core courses toward degree requirements, and the thesis satisfies the senior capstone in every college. Students graduate in four years at the same rate as peer colleges with looser general education schemes, because advising is mandatory and sequenced.</p>
</details>
<details>
<summary>How does a scholarship package change after the first year?</summary>
<p>Need-based grants are recalculated annually from the aid application, not from a new negotiation. Merit awards renew with satisfactory academic progress, defined as completion of the core sequence on schedule and a cumulative record in good standing. We notify families in March if a change in income will alter the grant, and we offer a reconsideration window before the deposit date.</p>
</details>
<details>
<summary>Can a student begin a thesis topic before senior year?</summary>
<p>Yes. Many students start archival or field notes in the junior seminar attached to their major. The formal prospectus is still due in October of the senior year, with a second reader who is not the advisor. Summer research scholarships exist precisely so that the thesis is not a nine-month scramble.</p>
</details>
<details>
<summary>What if we cannot visit campus before applying?</summary>
<p>A visit is welcome and never required. Regional conversations, a live virtual seminar observation, and a conversation with a current student in your intended college are arranged by the admission office. We record whether you visited only so we can host you well, not so we can score your interest.</p>
</details>
</div>
</div>
</div>
</section>
<section id="portal">
<div class="wrap grid-2">
<div>
<p class="eyebrow">Student portal</p>
<h2>Track an application without waiting on a postcard.</h2>
<p>Admitted and prospective students use the same portal. Applicants can see whether transcripts, recommendations, and the scholarship file have arrived. Enrolled students later use the same login for registration, thesis milestones, and house announcements. The tracker below is a public demonstration with sample files so families can see the shape of the process before they create an account.</p>
<p>Creating a full portal account happens after you submit the application or, for visitors, after you register for a tour. We never ask for a social security number in the status tool, and fee waivers do not require a separate portal.</p>
<p><a class="btn btn-forest" href="#apply">Register Now</a> <a class="btn btn-line" href="#visit" style="margin-left:0.4rem;">Schedule Tour</a></p>
</div>
<div class="tracker" id="apply">
<h3>Application tracker</h3>
<p class="hint">Try a sample file: <strong>HRU-261842</strong> (early decision, in review) or <strong>HRU-263901</strong> (scholarship file complete).</p>
<form id="tracker-form">
<label for="app-id">Application ID</label>
<div class="form-row">
<input id="app-id" name="app-id" type="text" placeholder="HRU-261842" autocomplete="off" required>
<button class="btn btn-forest" type="submit">Check status</button>
</div>
</form>
<p id="tracker-message" class="hint" role="status">Enter an ID to see checklist progress. This demo does not store what you type.</p>
<div id="tracker-result" class="hidden" aria-live="polite"></div>
</div>
</div>
</section>
</main>
<footer class="site">
<div class="wrap foot-grid">
<div>
<h4>Halcyon Ridge University</h4>
<p>1 Lantern Walk<br>Halcyon Ridge, Oregon 97400<br>Admission: (541) 555-0148<br>aid@halcyonridge.edu</p>
<div class="socials">
<a href="#portal">Instagram</a>
<a href="#events">YouTube</a>
<a href="#faculty">Lectures</a>
</div>
</div>
<div>
<h4>Study</h4>
<p><a href="#programs">Programs</a><br><a href="#faculty">Faculty</a><br><a href="#catalog">Course catalog</a><br><a href="#enrollment">Core curriculum</a></p>
</div>
<div>
<h4>Visit & apply</h4>
<p><a href="#apply">Apply</a><br><a href="#visit">Schedule Tour</a><br><a href="#events">Events</a><br><a href="#portal">Student Portal</a></p>
</div>
<div>
<h4>Policies</h4>
<p><a href="#enrollment">Privacy</a><br><a href="#enrollment">Terms</a><br><a href="#enrollment">Accessibility</a><br><a href="#enrollment">Title IX notice</a></p>
</div>
</div>
<div class="wrap legal">
<span>© <span id="year">2026</span> Halcyon Ridge University. All rights reserved.</span>
<span>A residential college of letters, sciences, civic design, and music.</span>
</div>
</footer>
<script>
document.getElementById("year").textContent = new Date().getFullYear();
const toggle = document.querySelector(".menu-toggle");
const nav = document.getElementById("primary-nav");
toggle.addEventListener("click", () => {
const open = nav.classList.toggle("open");
toggle.setAttribute("aria-expanded", open ? "true" : "false");
});
nav.querySelectorAll("a").forEach((link) => link.addEventListener("click", () => {
nav.classList.remove("open");
toggle.setAttribute("aria-expanded", "false");
}));
const files = {
"HRU-261842": {
name: "Early decision · College of Letters",
note: "Committee reading is underway. One teacher recommendation is still outstanding.",
steps: [
["Application received", "done"],
["School report posted", "done"],
["Teacher recommendations", "current"],
["Scholarship file", "wait"],
["Decision release", "wait"]
]
},
"HRU-263901": {
name: "Regular decision · Natural Sciences",
note: "Academic file and scholarship file are both complete. A decision posts in late March.",
steps: [
["Application received", "done"],
["School report posted", "done"],
["Teacher recommendations", "done"],
["Scholarship file", "done"],
["Decision release", "current"]
]
}
};
const form = document.getElementById("tracker-form");
const message = document.getElementById("tracker-message");
const result = document.getElementById("tracker-result");
form.addEventListener("submit", (event) => {
event.preventDefault();
const id = document.getElementById("app-id").value.trim().toUpperCase();
const file = files[id];
if (!file) {
result.classList.add("hidden");
message.textContent = "No demonstration file matches that ID. Use HRU-261842 or HRU-263901.";
return;
}
message.textContent = file.name + ". " + file.note;
result.classList.remove("hidden");
result.innerHTML = '<div class="timeline">' + file.steps.map(([label, state]) => {
const cls = state === "wait" ? "" : state;
return '<div class="step ' + cls + '"><span class="dot"></span><div><strong>' + label + '</strong><div class="hint">' + (state === "done" ? "Complete" : state === "current" ? "In progress" : "Not yet") + '</div></div></div>';
}).join("") + "</div>";
});
</script>
</body>
</html>
View Axe Report (JSON)
{
"testEngine": {
"name": "axe-core",
"version": "4.10.2"
},
"testRunner": {
"name": "axe"
},
"testEnvironment": {
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
"windowWidth": 1280,
"windowHeight": 720,
"orientationAngle": 0,
"orientationType": "landscape-primary"
},
"timestamp": "2026-11-12T10:04:01.756Z",
"url": "https://benchmark.aimac.invalid/2f582647af7ddcfcd1067b4844bf4d3cae1382920c1a2a1af70f2d9696559416.html",
"toolOptions": {
"runOnly": {
"type": "tag",
"values": [
"wcag2a",
"wcag2aa",
"wcag21a",
"wcag21aa",
"wcag22a",
"wcag22aa"
]
},
"resultTypes": [
"violations"
],
"reporter": "v1"
},
"inapplicable": [
{
"id": "area-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <area> elements of image maps have alternative text",
"help": "Active <area> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
"nodes": []
},
{
"id": "aria-braille-equivalent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
"help": "aria-braille attributes must have a non-braille equivalent",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
"nodes": []
},
{
"id": "aria-command-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA button, link and menuitem has an accessible name",
"help": "ARIA commands must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": []
},
{
"id": "aria-input-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA input field has an accessible name",
"help": "ARIA input fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-meter-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA meter node has an accessible name",
"help": "ARIA meter nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-progressbar-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA progressbar node has an accessible name",
"help": "ARIA progressbar nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-children",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require child roles contain them",
"help": "Certain ARIA roles must contain particular children",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": []
},
{
"id": "aria-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "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": "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": []
},
{
"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": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "select-name",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "td-headers-attr",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
"help": "Table cells that use the headers attribute must only refer to cells in the same table",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
"nodes": []
},
{
"id": "th-has-data-cells",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
"help": "Table headers in a data table must refer to data cells",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-allowed-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure an element's role supports its ARIA attributes",
"help": "Elements must only use supported ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-allowed-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attributes are used correctly for the defined role"
}
],
"none": [
{
"id": "aria-unsupported-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute is supported"
}
],
"impact": null,
"html": "<nav class=\"primary\" id=\"primary-nav\" aria-label=\"Primary\">",
"target": [
"#primary-nav"
]
}
]
},
{
"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": "<nav class=\"primary\" id=\"primary-nav\" aria-label=\"Primary\">",
"target": [
"#primary-nav"
]
}
]
},
{
"id": "aria-deprecated-role",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements do not use deprecated roles",
"help": "Deprecated ARIA roles must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "deprecatedrole",
"data": null,
"relatedNodes": [],
"impact": "minor",
"message": "ARIA role is not deprecated"
}
],
"impact": null,
"html": "<p id=\"tracker-message\" class=\"hint\" role=\"status\">Enter an ID to see checklist progress. This demo does not store what you type.</p>",
"target": [
"#tracker-message"
]
}
]
},
{
"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": "<nav class=\"primary\" id=\"primary-nav\" aria-label=\"Primary\">",
"target": [
"#primary-nav"
]
}
]
},
{
"id": "aria-required-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements with ARIA roles have all required ARIA attributes",
"help": "Required ARIA attributes must be provided",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-required-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "All required ARIA attributes are present"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<p id=\"tracker-message\" class=\"hint\" role=\"status\">Enter an ID to see checklist progress. This demo does not store what you type.</p>",
"target": [
"#tracker-message"
]
}
]
},
{
"id": "aria-roles",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all elements with a role attribute use a valid value",
"help": "ARIA roles used must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "invalidrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA role is valid"
},
{
"id": "abstractrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Abstract roles are not used"
},
{
"id": "unsupportedrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA role is supported"
}
],
"impact": null,
"html": "<p id=\"tracker-message\" class=\"hint\" role=\"status\">Enter an ID to see checklist progress. This demo does not store what you type.</p>",
"target": [
"#tracker-message"
]
}
]
},
{
"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": "<nav class=\"primary\" id=\"primary-nav\" aria-label=\"Primary\">",
"target": [
"#primary-nav"
]
}
]
},
{
"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": "<nav class=\"primary\" id=\"primary-nav\" aria-label=\"Primary\">",
"target": [
"#primary-nav"
]
}
]
},
{
"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": [
{
"any": [],
"all": [
{
"id": "autocomplete-valid",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "the autocomplete attribute is correctly formatted"
}
],
"none": [],
"impact": null,
"html": "<input id=\"app-id\" name=\"app-id\" type=\"text\" placeholder=\"HRU-261842\" autocomplete=\"off\" required=\"\">",
"target": [
"#app-id"
]
}
]
},
{
"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": "<section id=\"faculty\" style=\"background:#fffaf3;\">",
"target": [
"#faculty"
]
}
]
},
{
"id": "button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure buttons have discernible text",
"help": "Buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "button-has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has inner text that is visible to screen readers"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"btn btn-forest\" type=\"submit\">Check status</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>A campus built for serious inquiry.</h1>",
"target": [
"h1"
]
},
{
"html": "<h2>A core curriculum that refuses to be decorative.</h2>",
"target": [
"#programs > .wrap > .section-head > h2"
]
},
{
"html": "<h3>College of Letters</h3>",
"target": [
".card:nth-child(1) > .pad > h3"
]
},
{
"html": "<h3>Natural Sciences</h3>",
"target": [
".card:nth-child(2) > .pad > h3"
]
},
{
"html": "<h3>Civic Design</h3>",
"target": [
".card:nth-child(3) > .pad > h3"
]
},
{
"html": "<h2>Teachers who still do the work they assign.</h2>",
"target": [
".split > div:nth-child(1) > h2"
]
},
{
"html": "<h3>Amira Vell</h3>",
"target": [
".faculty-card:nth-child(1) > div > h3"
]
},
{
"html": "<h3>Jonah Okoye</h3>",
"target": [
".faculty-card:nth-child(2) > div > h3"
]
},
{
"html": "<h3>Leila March</h3>",
"target": [
".faculty-card:nth-child(3) > div > h3"
]
},
{
"html": "<h2>A residential college, not a commuter timetable.</h2>",
"target": [
"#campus > .wrap > .section-head > h2"
]
},
{
"html": "<h3>Upcoming deadlines</h3>",
"target": [
"aside > .pad.card:nth-child(1) > h3"
]
},
{
"html": "<h3>Scholarship opportunities</h3>",
"target": [
"aside > .pad.card:nth-child(2) > h3"
]
},
{
"html": "<h3>Alumni note</h3>",
"target": [
"aside > .pad.card:nth-child(3) > h3"
]
},
{
"html": "<h2>Admission is a conversation, then a commitment.</h2>",
"target": [
"#enrollment > .wrap > .section-head > h2"
]
},
{
"html": "<h3>What to prepare</h3>",
"target": [
".grid-3 > .pad.card:nth-child(1) > h3"
]
},
{
"html": "<h3>How aid works</h3>",
"target": [
".grid-3 > .pad.card:nth-child(2) > h3"
]
},
{
"html": "<h3>After you enroll</h3>",
"target": [
".grid-3 > .pad.card:nth-child(3) > h3"
]
},
{
"html": "<h2>Take the catalog home.</h2>",
"target": [
"#catalog > div > h2"
]
},
{
"html": "<h2>What students say when the tour is over.</h2>",
"target": [
"#voices > .wrap > .section-head > h2"
]
},
{
"html": "<h2>Lectures, visit days, and the work made public.</h2>",
"target": [
"#events > .grid-2.wrap > div:nth-child(1) > h2"
]
},
{
"html": "<h3>Harvest Lecture: Titles to Water</h3>",
"target": [
".event:nth-child(1) > .body > h3"
]
},
{
"html": "<h3>Fall Visit Day & Seminar Sit-in</h3>",
"target": [
".event:nth-child(2) > .body > h3"
]
},
{
"html": "<h3>Thesis Festival</h3>",
"target": [
".event:nth-child(3) > .body > h3"
]
},
{
"html": "<h3>Questions families actually ask</h3>",
"target": [
"#visit > h3"
]
},
{
"html": "<h2>Track an application without waiting on a postcard.</h2>",
"target": [
"#portal > .grid-2.wrap > div:nth-child(1) > h2"
]
},
{
"html": "<h3>Application tracker</h3>",
"target": [
"#apply > h3"
]
},
{
"html": "<h4>Halcyon Ridge University</h4>",
"target": [
"div:nth-child(1) > h4"
]
},
{
"html": "<h4>Study</h4>",
"target": [
"div:nth-child(2) > h4"
]
},
{
"html": "<h4>Visit & apply</h4>",
"target": [
"div:nth-child(3) > h4"
]
},
{
"html": "<h4>Policies</h4>",
"target": [
"div:nth-child(4) > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main id=\"top\">",
"target": [
"#top"
]
}
],
"impact": "serious",
"message": "Page has a landmark region"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#172033",
"bgColor": "#f6f1e7",
"contrastRatio": 14.45,
"fontSize": "13.8pt (18.4px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 14.45"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<strong>Halcyon Ridge University</strong>",
"target": [
".brand > div > strong"
]
}
]
},
{
"id": "document-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag242",
"TTv5",
"TT12.a",
"EN-301-549",
"EN-9.2.4.2",
"ACT"
],
"description": "Ensure each HTML document contains a non-empty <title> element",
"help": "Documents must have <title> element to aid in navigation",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "doc-has-title",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Document has a non-empty <title> element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "duplicate-id-aria",
"data": "primary-nav",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<nav class=\"primary\" id=\"primary-nav\" aria-label=\"Primary\">",
"target": [
"#primary-nav"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [
{
"html": "<label for=\"app-id\">Application ID</label>",
"target": [
"label"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input id=\"app-id\" name=\"app-id\" type=\"text\" placeholder=\"HRU-261842\" autocomplete=\"off\" required=\"\">",
"target": [
"#app-id"
]
}
]
},
{
"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/104x104/1b4a3a/f6f1e7?text=HR&font=playfair+display\" alt=\"Halcyon Ridge University monogram\">",
"target": [
".brand > img"
]
}
]
},
{
"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": "Application ID"
},
"relatedNodes": [
{
"html": "<label for=\"app-id\">Application ID</label>",
"target": [
"label"
]
}
],
"impact": "critical",
"message": "Element has an explicit <label>"
},
{
"id": "non-empty-placeholder",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a placeholder attribute"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input id=\"app-id\" name=\"app-id\" type=\"text\" placeholder=\"HRU-261842\" autocomplete=\"off\" required=\"\">",
"target": [
"#app-id"
]
}
]
},
{
"id": "link-in-text-block",
"impact": null,
"tags": [
"cat.color",
"wcag2a",
"wcag141",
"TTv5",
"TT13.a",
"EN-301-549",
"EN-9.1.4.1"
],
"description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
"help": "Links must be distinguishable without relying on color",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "link-in-text-block-style",
"data": null,
"relatedNodes": [
{
"html": "<div class=\"body\">",
"target": [
".event:nth-child(2) > .body"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a class=\"btn btn-line\" href=\"#visit\">Register Now</a>",
"target": [
".body > .btn-line.btn[href$=\"#visit\"]"
]
}
]
},
{
"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 class=\"brand\" href=\"#top\">\n <img src=\"https://placehold.co/104x104/1b4a3a/f6f1e7?text=HR&font=playfair+display\" alt=\"Halcyon Ridge University monogram\">\n <div>\n <strong>Halcyon Ridge University</strong>\n <span>Scholarship with purpose.</span>\n </div>\n </a>",
"target": [
".brand"
]
}
]
},
{
"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/104x104/1b4a3a/f6f1e7?text=HR&font=playfair+display\" alt=\"Halcyon Ridge University monogram\">",
"target": [
".brand > img"
]
}
]
},
{
"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 the core curriculum extra coursework on top of the major?</summary>",
"target": [
"details[open=\"\"] > 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": 293.5,
"height": 52.5
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (293.5px by 52.5px, 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 class=\"brand\" href=\"#top\">\n <img src=\"https://placehold.co/104x104/1b4a3a/f6f1e7?text=HR&font=playfair+display\" alt=\"Halcyon Ridge University monogram\">\n <div>\n <strong>Halcyon Ridge University</strong>\n <span>Scholarship with purpose.</span>\n </div>\n </a>",
"target": [
".brand"
]
}
]
}
],
"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": {
"fgColor": null,
"bgColor": null,
"contrastRatio": 0,
"fontSize": "8.9pt (11.84px)",
"fontWeight": "bold",
"messageKey": "bgGradient",
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"hero\" aria-label=\"Introduction\">",
"target": [
".hero"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a background gradient"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Residential college \u00b7 Est. 1894 \u00b7 Cascade foothills</p>",
"target": [
".hero-inner > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a background gradient"
}
]
}
],
"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": "#b8893d",
"bgColor": "#fffaf3",
"contrastRatio": 3.02,
"fontSize": "8.9pt (11.84px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"faculty\" style=\"background:#fffaf3;\">",
"target": [
"#faculty"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.02 (foreground color: #b8893d, background color: #fffaf3, font size: 8.9pt (11.84px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Faculty spotlight</p>",
"target": [
".split > div:nth-child(1) > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.02 (foreground color: #b8893d, background color: #fffaf3, font size: 8.9pt (11.84px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#b8893d",
"bgColor": "#fffaf3",
"contrastRatio": 3.02,
"fontSize": "8.9pt (11.84px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"events\" style=\"background:#fffaf3;\">",
"target": [
"#events"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.02 (foreground color: #b8893d, background color: #fffaf3, font size: 8.9pt (11.84px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Events</p>",
"target": [
"#events > .grid-2.wrap > div:nth-child(1) > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.02 (foreground color: #b8893d, background color: #fffaf3, font size: 8.9pt (11.84px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#b8893d",
"bgColor": "#f6f1e7",
"contrastRatio": 2.79,
"fontSize": "8.9pt (11.84px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #b8893d, background color: #f6f1e7, font size: 8.9pt (11.84px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Student portal</p>",
"target": [
"#portal > .grid-2.wrap > div:nth-child(1) > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #b8893d, background color: #f6f1e7, font size: 8.9pt (11.84px), font weight: bold). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 8847
},
{
"y": 576,
"height": 8847
},
{
"y": 1152,
"height": 8847
},
{
"y": 1728,
"height": 8847
},
{
"y": 2304,
"height": 8847
},
{
"y": 2880,
"height": 8847
},
{
"y": 3456,
"height": 8847
},
{
"y": 4032,
"height": 8847
},
{
"y": 4608,
"height": 8847
},
{
"y": 5184,
"height": 8847
},
{
"y": 5760,
"height": 8847
},
{
"y": 6336,
"height": 8847
},
{
"y": 6912,
"height": 8847
},
{
"y": 7488,
"height": 8847
},
{
"y": 8064,
"height": 8847
},
{
"y": 8127,
"height": 8847
}
],
"scans": 17,
"max_states": 512,
"settle_ms": 5000,
"page_timeout_seconds": 150,
"layout_stability": "consecutive 100ms size samples within one CSS pixel",
"animation_settling": "finite animations present when scroll resources are ready finish or are cancelled",
"interactive_states": "not exercised",
"horizontal_scroll": "not exercised"
}
}
System Prompt
You are a lead web developer at a top digital agency, tasked with creating a one-page website for a new client based on the given specifications, delivered as an HTML file. First non-whitespace char '<', last non-whitespace char '>'. Use the following services to generate placeholder images where needed:
- placehold.co (text): https://placehold.co/[{w}x{h}|{size}][/{bg-color}/{text-color}]?text={text}&font=[lato|lora|montserrat|noto sans|open sans|oswald|playfair display|poppins|pt sans|raleway|roboto|source sans|source sans pro]
- picsum.photos (photos): https://picsum.photos/[{w}/{h}|{size}]?[grayscale][&blur={1-10}]
- pravatar.cc (avatars): https://i.pravatar.cc/{size}?u={identifier}
Choose sizes appropriate to layout.
User Prompt
Create a **complete, polished, production-quality** primary web page for a new client in the "Education" 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: "Education"
- Description: Educational resources, school and university information, and online learning platforms.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Education" 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: "Student Portal", "Apply", "Events".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Education" category. Consider themes similar to: "Faculty Spotlight", "Campus Life", "Enrollment Info".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "scholarship", "thesis", "core curriculum".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Schedule Tour", "Register Now", "Download Catalog".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Education" sector. Ideas similar but not limited to: "application tracker".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "upcoming deadlines", "alumni achievements", "scholarship opportunities".
- **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.