local review resolutions, no content change

This commit is contained in:
2026-08-23 00:42:42 -05:00
parent 9fc5bfe9c7
commit 78aa49c0f3
11 changed files with 125 additions and 67 deletions

View File

@@ -2008,3 +2008,28 @@ tr {
from { background-position: 200% 0; }
to { background-position: -200% 0; }
}
/* Skip-to-content link (accessible navigation) */
.skip-link {
position: fixed;
top: -100%;
left: 50%;
transform: translateX(-50%);
z-index: 10000;
background: #000;
color: #fff;
padding: 0.75rem 1.5rem;
font-size: 0.95rem;
font-weight: 600;
text-decoration: none;
border: 2px solid currentColor;
border-radius: 0 0 4px 4px;
white-space: nowrap;
transition: top 0.15s ease;
}
.skip-link:focus {
top: 0;
outline: 2px solid #4E9A26;
outline-offset: 0;
}

View File

@@ -2,13 +2,17 @@ function toggleMenu(collapse) {
if (window.innerWidth < 1400) {
const menu = document.querySelector(".navControl");
const bar = document.querySelector(".header");
const btn = document.getElementById("menu");
const isCollapsed = !menu.style.maxHeight || menu.style.maxHeight === "0px";
if (isCollapsed && !collapse) {
menu.style.maxHeight = `${menu.scrollHeight + 10}px`;
bar.style.borderBottomWidth = "0px";
if (btn) btn.setAttribute("aria-expanded", "true");
} else {
menu.style.maxHeight = "0px";
bar.style.borderBottomWidth = "3px";
if (btn) btn.setAttribute("aria-expanded", "false");
}
}
}
@@ -98,10 +102,14 @@ function activeSkill(obj) {
let skill = obj.closest(".skill");
if (skill.classList.contains("activeSkill")) {
skill.classList.remove("activeSkill");
const btn = obj.closest('.skillname') || obj.querySelector?.('.skillname') || obj;
if (btn && btn.setAttribute) btn.setAttribute("aria-expanded", "false");
return;
}
while (skill) {
skill.classList.add("activeSkill");
const nameEl = skill.querySelector?.(':scope > .skillname') || skill.querySelector('.skillname');
if (nameEl) nameEl.setAttribute("aria-expanded", "true");
skill = skill.parentElement.closest(".skill");
}
}

View File

@@ -1,16 +1,10 @@
{
"home": {
"template": "home.html",
"title": "Andrew Simonson - Portfolio Home",
"description": "Andrew Simonson's Digital Portfolio home",
"title": "Andrew Simonson - Data Scientist & Researcher",
"description": "Andrew Simonson - Data Scientist at Ecolab, graduate student at RIT. Projects, research papers, and more.",
"canonical": "/"
},
"about": {
"template": "about.html",
"title": "Andrew Simonson - About",
"description": "About Andrew Simonson — career and education timeline",
"canonical": "/about"
},
"status": {
"template": "status.html",
"title":"Andrew Simonson - Status Page",
@@ -19,8 +13,8 @@
},
"projects": {
"template": "projects.html",
"title": "Andrew Simonson - Projects",
"description": "Recent projects by Andrew Simonson on his lovely portfolio website :)",
"title": "Projects & Research - Andrew Simonson",
"description": "Data science projects, geospatial analysis, research papers, and software experiments by Andrew Simonson.",
"canonical": "/projects"
},
"books": {
@@ -37,8 +31,8 @@
},
"certificates": {
"template": "certs.html",
"title": "Certificates and Awards",
"description": "Certificates and Awards Listing",
"title": "Certifications & Awards - Andrew Simonson",
"description": "Data science, DevOps, and entrepreneurship certifications earned by Andrew Simonson.",
"canonical": "/certs"
}
}