/* One requirement convention, including the HTML-only fallback. Native required
   controls keep their semantics; data-required-group covers server-side groups. */
form[method="post" i] > .form-required-note {
    display: none;
    grid-column: 1 / -1;
    flex-basis: 100%;
    margin: 0 0 16px;
    color: var(--color-text-muted);
    font-size: 0.875rem;
    font-weight: 400;
    line-height: 1.5;
}
form[method="post" i]:has(:is([required], [aria-required="true"], [data-required-group="true"]:not([data-required-when]), [data-required-active]):not(:disabled):not([hidden]):not([type="hidden"]):not([aria-hidden="true"]):not([hidden] *)) > .form-required-note {
    display: block;
}
form[data-requirements-ready] > .form-required-note { display: none; }
form[data-requirements-ready][data-has-required-fields] > .form-required-note { display: block; }

/* A label can precede its control, wrap it, or use the localized date wrapper.
   The JS hook handles non-adjacent for/id pairs and conditional groups as well. */
form[method="post" i] :is(
    label.form-required-label,
    label:not([data-requirements-ready]):has(+ :is([required], [aria-required="true"]):not(:disabled):not([hidden]):not([type="hidden"])),
    label:not([data-requirements-ready]):has(> :is([required], [aria-required="true"]):not(:disabled):not([hidden]):not([type="hidden"])),
    label:not([data-requirements-ready]):has(+ .localized-temporal [required]:not(:disabled)),
    [data-required-group="true"]:not([data-required-when]) > legend,
    :is([data-required-group="true"]:not([data-required-when]), [data-required-active]) > .form-group-label
):not(:has(.form-label-text)):not(:has(> input + span))::after,
form[method="post" i] :is(
    label.form-required-label,
    label:not([data-requirements-ready]):has(> :is([required], [aria-required="true"]):not(:disabled):not([hidden]):not([type="hidden"]))
) .form-label-text::after,
form[method="post" i] :is(
    label.form-required-label,
    label:not([data-requirements-ready]):has(> :is([required], [aria-required="true"]):not(:disabled):not([hidden]):not([type="hidden"]))
):not(:has(.form-label-text)) > input + span::after {
    content: " *" / "";
    color: var(--color-text);
    font-weight: 700;
    white-space: nowrap;
}
/* Server-rendered conditional state is also available before scripts load. */
form[method="post" i] [data-required-when]:not([data-required-active]) > .form-group-label::after { content: none; }
@media print { .form-required-note { display: none !important; } }
