- I made both surfaces friendlier to screen readers.

CMS changes landed in 
[layout.php](/Users/tyemeclifford/Documents/GH/blog/themes/neon/layout.php), 
[style.css](/Users/tyemeclifford/Documents/GH/blog/themes/neon/assets/style.css), 
[app.js](/Users/tyemeclifford/Documents/GH/blog/themes/neon/assets/app.js), 
and 
[lone-embed.php](/Users/tyemeclifford/Documents/GH/blog/lone-embed.php): 
skip link, named search/forms, current page state, live notices/empty 
states, labelled media/embed controls, visible focus states, theme 
control pressed states, and a focus-trapped/lightbox dialog with proper 
ARIA.
Mac app changes landed in 
[main.m](/Users/tyemeclifford/Documents/GH/blog/macclient/AppKitClient/main.m), 
and I rebuilt 
[TCMS](/Users/tyemeclifford/Documents/GH/blog/macclient/TCMS.app/Contents/MacOS/TCMS): 
AppKit controls/tables/fields/previews now get accessibility 
labels/help/value text, workspace sections are named, media/comment 
tables expose useful context, and status messages are announced via 
macOS accessibility notifications.
This commit is contained in:
Ty Clifford
2026-07-05 23:36:27 -04:00
parent 0b28e719ee
commit 75d38d4eb8
6 changed files with 298 additions and 64 deletions
+46
View File
@@ -39,6 +39,15 @@
box-sizing: border-box;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
}
html {
min-height: 100%;
}
@@ -67,6 +76,15 @@ a:hover {
color: var(--accent);
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
[tabindex="-1"]:focus-visible {
outline: 3px solid color-mix(in srgb, var(--accent) 72%, white);
outline-offset: 3px;
}
button,
input,
textarea {
@@ -94,6 +112,26 @@ button:hover {
box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);
}
.skip-link {
position: fixed;
top: 0.75rem;
left: 0.75rem;
z-index: 2000;
transform: translateY(-160%);
border: 1px solid color-mix(in srgb, var(--accent) 72%, white);
border-radius: var(--radius);
padding: 0.55rem 0.75rem;
color: #06100b;
background: linear-gradient(135deg, var(--accent), var(--accent-2));
font-weight: 800;
text-decoration: none;
box-shadow: var(--shadow);
}
.skip-link:focus {
transform: translateY(0);
}
input,
textarea {
width: 100%;
@@ -221,6 +259,14 @@ textarea {
.swatch--purple { background: #a084ff; }
.swatch--orange { background: #ff9f43; }
.mode-toggle[aria-pressed="true"],
.swatch[aria-pressed="true"] {
border-color: color-mix(in srgb, var(--accent) 80%, white);
box-shadow:
0 0 0 3px color-mix(in srgb, var(--accent) 24%, transparent),
0 0 18px color-mix(in srgb, var(--accent) 34%, transparent);
}
.site-shell {
display: grid;
grid-template-columns: minmax(0, 1fr) 280px;