+
Feature Image Preview
+
 }})
+
+ {% if hasCustomDescription %}
+ {# Use `del` and `ins` when both are present: #}
+ {% if hasGlobalDescription %}
+
{{ image.alt }}
+
{{ element.featureImageDescription }}
+ {% else %}
+
{{ element.featureImageDescription }}
+ {% endif %}
+ {% else if hasGlobalDescription %}
+ {# Just surface the original text: #}
+
{{ image.alt }}
+ {% else %}
+ {# Uh oh! #}
+
No accessible description is available for this image. Please add one to this article (using the **Feature Image Description** field, above), or set a default one on the image itself.
+ {% endif %}
+
+{% endif %}
+```
+
+This is essentially a more verbose implementation of the fallback logic discussed in the [alternative text section](#alternative-text).
+
+::: tip
+You can do the same thing within the content block-based override!
+:::
+
+### Jump links and labels
+
+Many accessibility attributes (like `aria-describedby` and `aria-controls`) require absolute, unique identifiers.
+Suppose you allow authors to create tabbed “tour” interfaces, within a page builder—
+tab names may collide if they are based on content (`tab.label | handle`) or a sequence (`tab-#{loop.index0}`).
+
+For content with `id`s or `uid`s, you may have enough to reliably connect pieces of an interface.
+Everything else (like rows in a [table field](../reference/field-types/table.md)) will require generating temporary identifiers:
+
+```twig
+{% set tabMap = collect([]) %}
+
+{# Loop over once to output tabs: #}
+{% for tab in tabs %}
+ {# Create a temporary ID and add it to the map: #}
+ {% set id = "pane-#{random()}" %}
+ {% do tabMap.set(id, tab) %}
+
+
+ {# ... #}
+
+{% endfor %}
+```
+
+This will create identifiers that look something like `pane-63570161`.
+Note that we’re creating a two-way binding between the `tab` and `tabpanel`:
+
+- The `tab` has an `aria-controls` attribute containing the raw identifier, and an `id` attribute with the identifier and a suffix.
+- The `tabpanel` has an `id` attribute containing the raw identifier and an `aria-labelledby` attribute, with the identifier and a `-tab` suffix.
+
+## Testing and auditing
+
+The best time to start auditing your front-end for accessibility is during development.
+
+As you build out your templates, tools like Deque’s [Axe DevTools for Web](https://www.deque.com/axe/devtools/web-accessibility) can flag concrete violations and help you prioritize remediation.
+
+To monitor the accessibility of content and quickly identify issues that crop up after launch, consider using a tool like [Accessible Web](https://accessibleweb.com/)’s [automated scanning tool](https://accessibleweb.com/ramp-web-accessibility-tools/accessibility-monitoring/).
diff --git a/docs/5.x/images/accessibility-jump-link-example.png b/docs/5.x/images/accessibility-jump-link-example.png
new file mode 100644
index 000000000..511d6f291
Binary files /dev/null and b/docs/5.x/images/accessibility-jump-link-example.png differ
diff --git a/docs/5.x/images/accessibility-recipe-image-preview-block.png b/docs/5.x/images/accessibility-recipe-image-preview-block.png
new file mode 100644
index 000000000..f8072dfa4
Binary files /dev/null and b/docs/5.x/images/accessibility-recipe-image-preview-block.png differ
diff --git a/docs/5.x/images/accessibility-recipe-image-preview.png b/docs/5.x/images/accessibility-recipe-image-preview.png
new file mode 100644
index 000000000..da7606314
Binary files /dev/null and b/docs/5.x/images/accessibility-recipe-image-preview.png differ
diff --git a/docs/5.x/images/accessibility-status-shapes.png b/docs/5.x/images/accessibility-status-shapes.png
new file mode 100644
index 000000000..28030151e
Binary files /dev/null and b/docs/5.x/images/accessibility-status-shapes.png differ
diff --git a/docs/5.x/images/accessibility-validation-errors.png b/docs/5.x/images/accessibility-validation-errors.png
new file mode 100644
index 000000000..3fc1ee1fe
Binary files /dev/null and b/docs/5.x/images/accessibility-validation-errors.png differ
diff --git a/docs/5.x/reference/element-types/addresses.md b/docs/5.x/reference/element-types/addresses.md
index b605467b0..fc7b59783 100644
--- a/docs/5.x/reference/element-types/addresses.md
+++ b/docs/5.x/reference/element-types/addresses.md
@@ -403,12 +403,9 @@ return [
::: tip
The next few snippets may be a bit dense—numbered comments are peppered throughout, corresponding to items in the **Guide** section just below it.
+They also assume you have a layout template functionally equivalent to the [models and validation](../../development/forms.md#models-and-validation) example.
:::
-#### Scaffolding
-
-The following templates assume you have a layout functionally equivalent to the [models and validation](../../development/forms.md#models-and-validation) example.
-
### Listing Addresses
Let’s display the current user’s address book on their account “dashboard.”
diff --git a/docs/5.x/reference/element-types/assets.md b/docs/5.x/reference/element-types/assets.md
index 3b48bfe53..e255013a9 100644
--- a/docs/5.x/reference/element-types/assets.md
+++ b/docs/5.x/reference/element-types/assets.md
@@ -96,18 +96,22 @@ Asset field layouts can include the native **Alternative Text**