UNPKG

@utrecht/components

Version:

Components for the Municipality of Utrecht based on the NL Design System architecture

1,270 lines (1,249 loc) 85.5 kB
@charset "UTF-8"; /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /* Collection of all semantic HTML styles in the component library */ /** * @license EUPL-1.2 * Copyright (c) 2020-2022 Gemeente Utrecht * Copyright (c) 2020-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2020-2022 Gemeente Utrecht * Copyright (c) 2020-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * Temporarily keep the old name for backwards compatibility. * * @deprecated */ /** * Temporarily keep the old name for backwards compatibility. * * @deprecated */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 The Knights Who Say NIH! B.V. * Copyright (c) 2021 Gemeente Utrecht */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma */ /* stylelint-disable-next-line block-no-empty */ /* stylelint-disable-next-line block-no-empty */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma */ /* stylelint-disable-next-line block-no-empty */ /* stylelint-disable-next-line block-no-empty */ /** * @license EUPL-1.2 * Copyright (c) 2020-2022 Gemeente Utrecht * Copyright (c) 2020-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2020-2022 Gemeente Utrecht * Copyright (c) 2020-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2020-2022 Gemeente Utrecht * Copyright (c) 2020-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2020-2022 Gemeente Utrecht * Copyright (c) 2020-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2020-2022 Gemeente Utrecht * Copyright (c) 2020-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2020-2022 Gemeente Utrecht * Copyright (c) 2020-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2020-2022 Gemeente Utrecht * Copyright (c) 2020-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /* stylelint-disable-next-line block-no-empty */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma * Copyright (c) 2021 The Knights Who Say NIH! B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma * Copyright (c) 2021 The Knights Who Say NIH! B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma * Copyright (c) 2021 The Knights Who Say NIH! B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma * Copyright (c) 2021 The Knights Who Say NIH! B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma * Copyright (c) 2021 The Knights Who Say NIH! B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma * Copyright (c) 2021 The Knights Who Say NIH! B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021-2022 Frameless B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2022 Gemeente Utrecht * Copyright (c) 2022 Robbert Broersma * Copyright (c) 2022 The Knights Who Say NIH! B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 The Knights Who Say NIH! B.V. * Copyright (c) 2021 Gemeente Utrecht */ /* stylelint-disable scss/no-global-function-names */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma */ /* stylelint-disable-next-line block-no-empty */ /* # CSS implementation ## `text-decoration-skip` `text-decoration-skip` can be helpful to avoid making some texts unreadable. For example by obscuring Arabic diacritics. However, the combination of a greater thickness and skipping this thick underline leads to a very unappealing rendering of the underline. To avoid this, `text-decoration-skip` is disabled for interactive states. For design token configurations that have identical thickness for normal and interactive states, this will lead to the (undesirable) effect that the focus/hover effect is switching from an interrupted to an uninterrupted underline (for some texts). Apart from making `skip-ink` configurable for normal/focus/hover, there is no good solution yet. --- Disabling `text-decoration-skip` for interactive states obscures some texts, and we assume for now that moving the pointer away from a link or having focus elsewhere first is simple enough to not make this too inconvenient. --- Some folks implement the underline of links using `border-bottom` or even using a finely crafted `linear-gradient()` with a solid color at the bottom and transparent behind the text. These approaches would unfortunately not be able to provide the improved readability of `text-decoration-skip`. ## `text-decoration-thickness` Varying `text-decoration-thickness` can be used to distinguish interactive states. --- `text-decoration-thickness` appears to have rendering differences between Chrome and Safari. In Safari the line becomes thicker with extra pixels added to the bottom, while in Chrome the underline offset also seems to increase along with the thickness, which effectively means the underline is closer to the next line than in Safari. --- It might be nice to use font-relative units for `text-decoration-thickness`, and that is why we use the `max()` function to ensure the underline remains visible for every font size. ## `transition` `text-decoration-thickness` could be a candidate for animating between interactive states, however browsers don't seem to have implemented great looking supixel tweening yet. `text-decoration-skip` also makes the transition more challenging to implement. */ /** * Simulate forced-colors mode. */ /* stylelint-disable-next-line block-no-empty */ /* stylelint-disable-next-line block-no-empty */ /* stylelint-disable-next-line block-no-empty */ /* stylelint-disable-next-line block-no-empty */ /** * Link for elements such as `<img>` or `<article>`, that are not inline elements or plain text. * * Changing `display: inline` to `inline-block` ensures the focus outline is rendered around the entire box. */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma * Copyright (c) 2021 Gemeente Utrecht */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 The Knights Who Say NIH! B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma */ /* stylelint-disable-next-line block-no-empty */ /* stylelint-disable-next-line block-no-empty */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma */ /* stylelint-disable-next-line block-no-empty */ /* TODO: Enable ordering properties when the plugin supports logical CSS properties * https://github.com/hudochenkov/stylelint-order/pull/162 */ /* stylelint-disable order/properties-alphabetical-order */ /* stylelint-disable-next-line block-no-empty */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma * Copyright (c) 2021 The Knights Who Say NIH! B.V. */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /* stylelint-disable-next-line block-no-empty */ /* stylelint-disable-next-line block-no-empty */ /* stylelint-disable selector-class-pattern */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma */ /* stylelint-disable-next-line block-no-empty */ /* TODO: Enable ordering properties when the plugin supports logical CSS properties * https://github.com/hudochenkov/stylelint-order/pull/162 */ /* stylelint-disable order/properties-alphabetical-order */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Gemeente Utrecht * Copyright (c) 2021 Robbert Broersma */ /* stylelint-disable-next-line block-no-empty */ /* TODO: Enable ordering properties when the plugin supports logical CSS properties * https://github.com/hudochenkov/stylelint-order/pull/162 */ /* stylelint-disable order/properties-alphabetical-order */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma */ /** * @license EUPL-1.2 * Copyright (c) 2021 Robbert Broersma * Copyright (c) 2021 Gemeente Utrecht */ /* Collection of all semantic HTML styles in the component library */ .utrecht-html { /* override the `:focus` selector above */ /* stylelint-disable-next-line no-descending-specificity */ /* stylelint-disable selector-class-pattern */ --utrecht-space-around: 1; } .utrecht-html article { max-inline-size: var(--utrecht-article-max-inline-size); } .utrecht-html blockquote { /* Setting `margin-inline-start` is necessary for overriding the default stylesheet of `<blockquote>` and `<figure>`. * Setting `margin-inline-end` is necessary for overriding the default stylesheet of `<figure>` */ background-color: var(--utrecht-blockquote-background-color); border-color: var(--utrecht-blockquote-border-color); border-radius: var(--utrecht-blockquote-border-radius, 0); border-style: solid; border-width: var(--utrecht-blockquote-border-width, 0); /* stylelint-disable order/properties-alphabetical-order */ border-inline-start-width: var(--utrecht-blockquote-border-inline-start-width, var(--utrecht-blockquote-border-width, 0)); /* stylelint-enable order/properties-alphabetical-order */ color: var(--utrecht-blockquote-color); display: flex; flex-direction: column; font-family: var(--utrecht-document-font-family); font-size: var(--utrecht-blockquote-font-size); font-style: var(--utrecht-blockquote-font-style); margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-blockquote-margin-block-end, 0)); margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-blockquote-margin-block-start, 0)); margin-inline-end: var(--utrecht-blockquote-margin-inline-end); margin-inline-start: var(--utrecht-blockquote-margin-inline-start); padding-block-end: var(--utrecht-blockquote-padding-block-end); padding-block-start: var(--utrecht-blockquote-padding-block-start); padding-inline-end: var(--utrecht-blockquote-padding-inline-end); padding-inline-start: var(--utrecht-blockquote-padding-inline-start); row-gap: var(--utrecht-blockquote-row-gap, 0); --utrecht-document-color: var(--utrecht-blockquote-content-color, inherit); --utrecht-paragraph-font-size: var(--utrecht-blockquote-content-font-size, inherit); color: var(--utrecht-blockquote-content-color, inherit); font-size: var(--utrecht-blockquote-content-font-size, inherit); --utrecht-space-around: 1; } .utrecht-html input[type=button i], .utrecht-html input[type=reset i], .utrecht-html input[type=submit i], .utrecht-html button { /* `--_utrecht-button-hint` is the internal prefix for the applied optional hint, it is not an API. The hint color takes priority over the appearance color. `--_utrecht-button-appearance` is the internal prefix for the appearance (primary-action, secondary-action or subtle), it is not an API. */ --_utrecht-button-background-color: var( --_utrecht-button-hint-background-color, var(--_utrecht-button-appearance-background-color, var(--utrecht-button-background-color)) ); --_utrecht-button-color: var( --_utrecht-button-hint-color, var(--_utrecht-button-appearance-color, var(--utrecht-button-color)) ); --_utrecht-button-border-color: var( --_utrecht-button-hint-border-color, var(--_utrecht-button-appearance-border-color, var(--utrecht-button-border-color, transparent)) ); --_utrecht-button-border-bottom-color: var( --_utrecht-button-hint-border-bottom-color, var( --_utrecht-button-hint-border-color, var( --_utrecht-button-appearance-border-bottom-color, var( --_utrecht-button-appearance-border-color, var(--utrecht-button-border-bottom-color, var(--utrecht-button-border-color, transparent)) ) ) ) ); --_utrecht-button-disabled-background-color: var( --_utrecht-button-hint-disabled-background-color, var( --_utrecht-button-appearance-disabled-background-color, var(--utrecht-button-disabled-background-color, var(--utrecht-button-background-color)) ) ); --_utrecht-button-disabled-border-color: var( --_utrecht-button-hint-disabled-border-color, var( --_utrecht-button-appearance-disabled-border-color, var(--utrecht-button-disabled-border-color, var(--utrecht-button-border-color)) ) ); --_utrecht-button-disabled-color: var( --_utrecht-button-hint-disabled-color, var(--_utrecht-button-appearance-disabled-color, var(--utrecht-button-disabled-color, var(--utrecht-button-color))) ); --_utrecht-button-pressed-background-color: var( --_utrecht-button-hint-pressed-background-color, var( --_utrecht-button-hint-background-color, var( --_utrecht-button-appearance-pressed-background-color, var( --_utrecht-button-appearance-background-color, var(--utrecht-button-pressed-background-color, var(--utrecht-button-background-color)) ) ) ) ); --_utrecht-button-pressed-border-color: var( --_utrecht-button-hint-pressed-border-color, var( --_utrecht-button-hint-border-color, var( --_utrecht-button-appearance-pressed-border-color, var( --_utrecht-button-appearance-border-color, var(--utrecht-button-pressed-border-color, var(--utrecht-button-border-color)) ) ) ) ); --_utrecht-button-pressed-color: var( --_utrecht-button-hint-pressed-color, var( --_utrecht-button-hint-color, var( --_utrecht-button-appearance-pressed-color, var(--_utrecht-button-appearance-color, var(--utrecht-button-pressed-color, var(--utrecht-button-color))) ) ) ); --_utrecht-button-focus-background-color: var( --_utrecht-button-hint-focus-background-color, var( --_utrecht-button-hint-background-color, var( --_utrecht-button-appearance-focus-background-color, var( --_utrecht-button-appearance-background-color, var(--utrecht-button-focus-background-color, var(--utrecht-button-background-color)) ) ) ) ); --_utrecht-button-focus-border-color: var( --_utrecht-button-hint-focus-border-color, var( --_utrecht-button-hint-border-color, var( --_utrecht-button-appearance-focus-border-color, var( --_utrecht-button-appearance-border-color, var(--utrecht-button-focus-border-color, var(--utrecht-button-border-color)) ) ) ) ); --_utrecht-button-focus-color: var( --_utrecht-button-hint-focus-color, var( --_utrecht-button-hint-color, var( --_utrecht-button-appearance-focus-color, var(--_utrecht-button-appearance-color, var(--utrecht-button-focus-color, var(--utrecht-button-color))) ) ) ); --_utrecht-button-hover-background-color: var( --_utrecht-button-hint-hover-background-color, var( --_utrecht-button-hint-background-color, var( --_utrecht-button-appearance-hover-background-color, var( --_utrecht-button-appearance-background-color, var(--utrecht-button-hover-background-color, var(--utrecht-button-background-color)) ) ) ) ); --_utrecht-button-hover-border-color: var( --_utrecht-button-hint-hover-border-color, var( --_utrecht-button-hint-border-color, var( --_utrecht-button-appearance-hover-border-color, var( --_utrecht-button-appearance-border-color, var(--utrecht-button-hover-border-color, var(--utrecht-button-border-color)) ) ) ) ); --_utrecht-button-hover-color: var( --_utrecht-button-hint-hover-color, var( --_utrecht-button-hint-color, var( --_utrecht-button-appearance-hover-color, var(--_utrecht-button-appearance-color, var(--utrecht-button-hover-color, var(--utrecht-button-color))) ) ) ); --_utrecht-button-active-background-color: var( --_utrecht-button-hint-active-background-color, var( --_utrecht-button-hint-background-color, var( --_utrecht-button-appearance-active-background-color, var( --_utrecht-button-appearance-background-color, var(--utrecht-button-active-background-color, var(--utrecht-button-background-color)) ) ) ) ); --_utrecht-button-active-border-color: var( --_utrecht-button-hint-active-border-color, var( --_utrecht-button-hint-border-color, var( --_utrecht-button-appearance-active-border-color, var( --_utrecht-button-appearance-border-color, var(--utrecht-button-active-border-color, var(--utrecht-button-border-color)) ) ) ) ); --_utrecht-button-active-color: var( --_utrecht-button-hint-active-color, var( --_utrecht-button-hint-color, var( --_utrecht-button-appearance-active-color, var(--_utrecht-button-appearance-color, var(--utrecht-button-active-color, var(--utrecht-button-color))) ) ) ); --_utrecht-button-border-width: var(--_utrecht-button-appearance-border-width, var(--utrecht-button-border-width, 0)); --_utrecht-button-border-block-end-width: var( --utrecht-button-border-bottom-width, var(--_utrecht-button-border-width, 0) ); --_utrecht-button-font-size: var(--_utrecht-button-appearance-font-size, var(--utrecht-button-font-size)); --_utrecht-button-line-height: var(--_utrecht-button-appearance-line-height, var(--utrecht-button-line-height)); --utrecht-icon-size: var(--utrecht-button-icon-size, 1em); align-items: center; background-color: var(--_utrecht-button-background-color); block-size: fit-content; border-block-end-color: var(--_utrecht-button-border-bottom-color); border-block-end-width: var(--_utrecht-button-border-block-end-width); border-color: var(--_utrecht-button-border-color); border-radius: var(--utrecht-button-border-radius); border-style: solid; border-width: var(--_utrecht-button-border-width); box-sizing: border-box; color: var(--_utrecht-button-color); column-gap: var(--utrecht-button-column-gap); cursor: var(--utrecht-action-activate-cursor, revert); display: inline-flex; font-family: var(--utrecht-button-font-family, var(--utrecht-document-font-family)); font-size: var(--_utrecht-button-font-size, var(--utrecht-document-font-family, inherit)); font-weight: var(--_utrecht-button-appearance-font-weight, var(--utrecht-button-font-weight)); inline-size: var(--utrecht-button-inline-size, auto); justify-content: center; line-height: var(--_utrecht-button-line-height); max-inline-size: var(--utrecht-button-max-inline-size, fit-content); min-block-size: var(--utrecht-button-min-block-size, 44px); min-inline-size: var(--utrecht-button-min-inline-size, 44px); padding-block-end: var(--utrecht-button-padding-block-end); padding-block-start: var(--utrecht-button-padding-block-start); padding-inline-end: var(--utrecht-button-padding-inline-end); padding-inline-start: var(--utrecht-button-padding-inline-start); scale: 1; text-transform: var(--utrecht-button-text-transform); -webkit-user-select: none; user-select: none; margin-block-end: var(--utrecht-button-margin-block-end); margin-block-start: var(--utrecht-button-margin-block-start); margin-inline-end: var(--utrecht-button-margin-inline-end); margin-inline-start: var(--utrecht-button-margin-inline-start); } .utrecht-html button[hidden] { display: none; } .utrecht-html button[type=submit i], .utrecht-html input[type=submit i] { cursor: var(--utrecht-action-submit-cursor, revert); } .utrecht-html button:disabled, .utrecht-html button[aria-disabled=true] { background-color: var(--_utrecht-button-disabled-background-color); border-color: var(--_utrecht-button-disabled-border-color); color: var(--_utrecht-button-disabled-color); cursor: var(--utrecht-action-disabled-cursor, not-allowed); } .utrecht-html button[aria-busy=true], .utrecht-html button[aria-disabled=true][aria-busy=true], .utrecht-html button:disabled[aria-busy=true] { cursor: var(--utrecht-action-busy-cursor, wait); } .utrecht-html button:active:not([aria-disabled=true], :disabled) { background-color: var(--_utrecht-button-active-background-color); border-color: var(--_utrecht-button-active-border-color); color: var(--_utrecht-button-active-color); } .utrecht-html button:hover:not([aria-disabled=true], :disabled) { background-color: var(--_utrecht-button-hover-background-color); border-color: var(--_utrecht-button-hover-border-color); color: var(--_utrecht-button-hover-color); scale: var(--utrecht-button-hover-scale, 1); } .utrecht-html button:focus:not([aria-disabled=true], :disabled) { background-color: var(--_utrecht-button-focus-background-color); border-color: var(--_utrecht-button-focus-border-color); color: var(--_utrecht-button-focus-color); scale: var(--utrecht-button-focus-scale, 1); } .utrecht-html button:focus-visible { /* the pseudo-class for `:focus-visible` is implemented via the mixin */ /* - The browser default focus ring should apply when these CSS custom properties are not set. * - Make the `box-shadow` value available, so components that have their own `box-shadow` * can combine it with the focus ring box shadow. */ --_utrecht-focus-ring-box-shadow: 0 0 0 var(--utrecht-focus-outline-width, 0) var(--utrecht-focus-inverse-outline-color, transparent); box-shadow: var(--_utrecht-focus-ring-box-shadow); outline-color: var(--utrecht-focus-outline-color, revert); outline-offset: var(--utrecht-focus-outline-offset, revert); outline-style: var(--utrecht-focus-outline-style, revert); outline-width: var(--utrecht-focus-outline-width, revert); } .utrecht-html input[type=checkbox i] { margin-block-end: 0; /* reset native margin for input[type="checkbox"] */ margin-block-start: 0; margin-inline-end: 0; margin-inline-start: 0; cursor: var(--utrecht-action-activate-cursor, revert); -webkit-user-select: none; user-select: none; } .utrecht-html input[type=checkbox i]:disabled { cursor: var(--utrecht-action-disabled-cursor, revert); } .utrecht-html input[type=checkbox i] :focus-visible { /* - The browser default focus ring should apply when these CSS custom properties are not set. * - Make the `box-shadow` value available, so components that have their own `box-shadow` * can combine it with the focus ring box shadow. */ --_utrecht-focus-ring-box-shadow: 0 0 0 var(--utrecht-focus-outline-width, 0) var(--utrecht-focus-inverse-outline-color, transparent); box-shadow: var(--_utrecht-focus-ring-box-shadow); outline-color: var(--utrecht-focus-outline-color, revert); outline-offset: var(--utrecht-focus-outline-offset, revert); outline-style: var(--utrecht-focus-outline-style, revert); outline-width: var(--utrecht-focus-outline-width, revert); } .utrecht-html body { /* reset `font-smoothing: antialiasing`, prefer automatic (`subpixel-antialiasing`) behavior for high-dpi screens */ -webkit-font-smoothing: auto !important; -moz-osx-font-smoothing: auto !important; color: var(--utrecht-document-color, inherit); font-family: var(--utrecht-document-font-family, inherit); font-size: var(--utrecht-document-font-size, inherit); font-weight: var(--utrecht-document-font-weight, inherit); line-height: var(--utrecht-document-line-height, inherit); text-rendering: optimizeLegibility; -moz-text-size-adjust: none; -webkit-text-size-adjust: none; text-size-adjust: none; background-color: var(--utrecht-document-background-color, inherit); } .utrecht-html body :lang(ar) { /* `letter-spacing` design tokens break Arabic text rendering, avoid that */ letter-spacing: 0 !important; } .utrecht-html code { /* Use `monospace` as fallback both when the custom property isn't set and when the font is not available */ /* Use `inherit` as font-size, to override interfering CSS such as: `code { font-size: 16px }` */ background-color: var(--utrecht-code-background-color); color: var(--utrecht-code-color); font-family: var(--utrecht-code-font-family, monospace), monospace; font-size: var(--utrecht-code-font-size, inherit); font-variant-ligatures: none; line-height: var(--utrecht-code-line-height); } .utrecht-html em { font-style: var(--utrecht-emphasis-stressed-font-style, italic); } .utrecht-html strong { font-weight: var(--utrecht-emphasis-strong-font-weight, bold); } .utrecht-html fieldset { margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-form-fieldset-margin-block-end, 0)); margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-form-fieldset-margin-block-start, 0)); /* `all: revert` unfortunately has as side-effect that the `hidde` attribute has no effect */ all: revert; border: 0; margin-inline-end: 0; margin-inline-start: 0; min-inline-size: 0; padding-block-end: 0; padding-block-start: 0.01em; padding-inline-end: 0; padding-inline-start: 0; --utrecht-space-around: 1; } .utrecht-html fieldset[hidden] { display: none; } .utrecht-html figure { margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-figure-margin-block-end, 0)); margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-figure-margin-block-start, 0)); } .utrecht-html figcaption { color: var(--utrecht-figure-caption-color); font-size: var(--utrecht-figure-caption-font-size); line-height: var(--utrecht-figure-caption-line-height); } .utrecht-html form { display: block; max-inline-size: var(--utrecht-form-max-inline-size); } .utrecht-html legend { break-inside: avoid; color: var(--utrecht-form-fieldset-legend-color, var(--utrecht-document-color, inherit)); font-family: var(--utrecht-form-fieldset-legend-font-family, var(--utrecht-document-font-family)); font-size: var(--utrecht-form-fieldset-legend-font-size); font-weight: var(--utrecht-form-fieldset-legend-font-weight); line-height: var(--utrecht-form-fieldset-legend-line-height); page-break-after: avoid; page-break-inside: avoid; display: table; inline-size: 100%; padding-inline-end: 0; padding-inline-start: 0; margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-form-fieldset-legend-margin-block-end, 0)); margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-form-fieldset-legend-margin-block-start, 0)); } .utrecht-html legend[hidden] { display: none; } .utrecht-html fieldset:disabled > legend { color: var(--utrecht-form-fieldset-legend-disabled-color, var(--utrecht-form-fieldset-legend-color, var(--utrecht-document-color, inherit))); } .utrecht-html label { color: var(--utrecht-form-label-color); font-size: var(--utrecht-form-label-font-size); font-weight: var(--utrecht-form-label-font-weight); } .utrecht-html input[type=checkbox i] ~ label, .utrecht-html label:has(input[type=checkbox i]) { color: var(--utrecht-form-label-checkbox-color, var(--utrecht-form-label-color)); cursor: var(--utrecht-action-activate-cursor, revert); font-weight: var(--utrecht-form-label-checkbox-font-weight, var(--utrecht-form-label-font-weight)); } .utrecht-html input[type=radio i] ~ label, .utrecht-html label:has(input[type=radio i]) { color: var(--utrecht-form-label-checkbox-color, var(--utrecht-form-label-color)); cursor: var(--utrecht-action-activate-cursor, revert); font-weight: var(--utrecht-form-label-radio-font-weight, var(--utrecht-form-label-font-weight)); } .utrecht-html mark { background-color: var(--utrecht-mark-background-color, revert); color: var(--utrecht-mark-color, revert); } @media print { .utrecht-html mark { outline-color: currentColor; outline-style: dotted; outline-width: 0.1em; } } @media screen and (-ms-high-contrast: active) { .utrecht-html mark { background-color: Highlight; color: HighlightText; } } .utrecht-html h1 { break-inside: avoid-column; page-break-inside: avoid; color: var(--utrecht-heading-1-color, var(--utrecht-heading-color, var(--utrecht-document-color, inherit))); font-family: var(--utrecht-heading-1-font-family, var(--utrecht-heading-font-family, var(--utrecht-document-font-family))); font-size: var(--utrecht-heading-1-font-size, revert); font-weight: var(--utrecht-heading-1-font-weight, var(--utrecht-heading-font-weight, bold)); line-height: var(--utrecht-heading-1-line-height); margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-1-margin-block-end, 0)); margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-1-margin-block-start, 0)); page-break-after: avoid; --utrecht-space-around: 1; } .utrecht-html h2 { break-inside: avoid-column; page-break-inside: avoid; color: var(--utrecht-heading-2-color, var(--utrecht-heading-color, var(--utrecht-document-color, inherit))); font-family: var(--utrecht-heading-2-font-family, var(--utrecht-heading-font-family, var(--utrecht-document-font-family))); font-size: var(--utrecht-heading-2-font-size, revert); font-weight: var(--utrecht-heading-2-font-weight, var(--utrecht-heading-font-weight, bold)); line-height: var(--utrecht-heading-2-line-height); margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-2-margin-block-end, 0)); margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-2-margin-block-start, 0)); page-break-after: avoid; --utrecht-space-around: 1; } .utrecht-html h3 { break-inside: avoid-column; page-break-inside: avoid; color: var(--utrecht-heading-3-color, var(--utrecht-heading-color, var(--utrecht-document-color, inherit))); font-family: var(--utrecht-heading-3-font-family, var(--utrecht-heading-font-family, var(--utrecht-document-font-family))); font-size: var(--utrecht-heading-3-font-size, revert); font-weight: var(--utrecht-heading-3-font-weight, var(--utrecht-heading-font-weight, bold)); line-height: var(--utrecht-heading-3-line-height); margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-3-margin-block-end, 0)); margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-3-margin-block-start, 0)); page-break-after: avoid; --utrecht-space-around: 1; } .utrecht-html h4 { break-inside: avoid-column; page-break-inside: avoid; color: var(--utrecht-heading-4-color, var(--utrecht-heading-color, var(--utrecht-document-color, inherit))); font-family: var(--utrecht-heading-4-font-family, var(--utrecht-heading-font-family, var(--utrecht-document-font-family))); font-size: var(--utrecht-heading-4-font-size, revert); font-weight: var(--utrecht-heading-4-font-weight, var(--utrecht-heading-font-weight, bold)); line-height: var(--utrecht-heading-4-line-height); margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-4-margin-block-end, 0)); margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-4-margin-block-start, 0)); page-break-after: avoid; --utrecht-space-around: 1; } .utrecht-html h5 { break-inside: avoid-column; page-break-inside: avoid; color: var(--utrecht-heading-5-color, var(--utrecht-heading-color, var(--utrecht-document-color, inherit))); font-family: var(--utrecht-heading-5-font-family, var(--utrecht-heading-font-family, var(--utrecht-document-font-family))); font-size: var(--utrecht-heading-5-font-size, revert); font-weight: var(--utrecht-heading-5-font-weight, var(--utrecht-heading-font-weight, bold)); line-height: var(--utrecht-heading-5-line-height); margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-5-margin-block-end, 0)); margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-5-margin-block-start, 0)); page-break-after: avoid; --utrecht-space-around: 1; } .utrecht-html h6 { break-inside: avoid-column; page-break-inside: avoid; color: var(--utrecht-heading-6-color, var(--utrecht-heading-color, var(--utrecht-document-color, inherit))); font-family: var(--utrecht-heading-6-font-family, var(--utrecht-heading-font-family, var(--utrecht-document-font-family))); font-size: var(--utrecht-heading-6-font-size, revert); font-weight: var(--utrecht-heading-6-font-weight, var(--utrecht-heading-font-weight, bold)); line-height: var(--utrecht-heading-6-line-height); margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-6-margin-block-end, 0)); margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-6-margin-block-start, 0)); page-break-after: avoid; --utrecht-space-around: 1; } .utrecht-html hgroup { --utrecht-pre-heading-order: -1; display: flex; flex-direction: column; margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-group-margin-block-end, 0)); margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-heading-group-margin-block-start, 0)); --utrecht-space-around: 1; } .utrecht-html hgroup > * { --utrecht-space-around: 0; } .utrecht-html a { --utrecht-icon-size: var(--utrecht-link-icon-size, 1em); color: var(--_utrecht-link-state-color, var(--utrecht-link-color, var(--_utrecht-link-forced-colors-color))); } .utrecht-html a:visited { --_utrecht-link-forced-colors-color: visitedtext; --_utrecht-link-state-color: var(--utrecht-link-visited-color); } .utrecht-html a:hover { --_utrecht-link-forced-colors-color: linktext; --_utrecht-link-state-color: var(--utrecht-link-hover-color); --_utrecht-link-state-text-decoration: var(--utrecht-link-hover-text-decoration); --_utrecht-link-state-text-decoration-thickness: var(--utrecht-link-hover-text-decoration-thickness); text-decoration-skip: none; text-decoration-skip-ink: none; } .utrecht-html a:active { --_utrecht-link-forced-colors-color: activetext; --_utrecht-link-state-color: var(--utrecht-link-active-color); } .utrecht-html a:focus { --_utrecht-link-state-color: var(--utrecht-link-focus-color); background-color: var(--utrecht-link-focus-background-color, transparent); text-decoration-skip: none; text-decoration-skip-ink: none; } .utrecht-html a:focus-visible { /* * WCAG SC 2.4.12: Focus Not Obscured * Use `z-index` to ensure the focus ring is stacked above adjecent elements with a `background` */ /* - The browser default focus ring should apply when these CSS custom properties are not set. * - Make the `box-shadow` value available, so components that have their own `box-shadow` * can combine it with the focus ring box shadow. */ --_utrecht-focus-ring-box-shadow: 0 0 0 var(--utrecht-focus-outline-width, 0) var(--utrecht-focus-inverse-outline-color, transparent); box-shadow: var(--_utrecht-focus-ring-box-shadow); outline-color: var(--utrecht-focus-outline-color, revert); outline-offset: var(--utrecht-focus-outline-offset, revert); outline-style: var(--utrecht-focus-outline-style, revert); outline-width: var(--utrecht-focus-outline-width, revert); /* * The following tokens are deprecated, but we keep them for backwards compatibility for now: * * `--utrecht-link-focus-text-decoration` * `--utrecht-link-focus-text-decoration-thickness` */ --_utrecht-link-state-text-decoration: var( --utrecht-link-focus-visible-text-decoration, var(--utrecht-link-focus-text-decoration) ); --_utrecht-link-state-text-decoration-thickness: var( --utrecht-link-focus-visible-text-decoration-thickness, var(--utrecht-link-focus-text-decoration-thickness) ); z-index: var(--utrecht-stack-focus-z-index, 1); } .utrecht-html a[href^="tel:" i] { white-space: nowrap; } .utrecht-html ol { /* Configure `box-sizing` and `text-align` for `--center` */ box-sizing: border-box; font-family: var(--utrecht-document-font-family, inherit); font-size: var(--utrecht-ordered-list-font-size, var(--utrecht-unordered-list-font-size, var(--utrecht-document-font-size, inherit))); line-height: var(--utrecht-ordered-list-font-size, var(--utrecht-unordered-list-line-height, var(--utrecht-document-line-height, inherit))); margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-ordered-list-margin-block-end, var(--utrecht-unordered-list-margin-block-end, 0))); margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-ordered-list-margin-block-start, var(--utrecht-unordered-list-margin-block-start, 0))); padding-inline-start: var(--utrecht-ordered-list-padding-inline-start, var(--utrecht-unordered-list-padding-inline-start, 2ch)); text-align: start; --utrecht-space-around: 1; } .utrecht-html ol > li { margin-block-end: var(--utrecht-ordered-list-item-margin-block-end, var(--utrecht-unordered-list-item-margin-block-end)); margin-block-start: var(--utrecht-ordered-list-item-margin-block-start, var(--utrecht-unordered-list-item-margin-block-start)); padding-inline-start: var(--utrecht-ordered-list-item-padding-inline-start, var(--utrecht-unordered-list-item-padding-inline-start, 1ch)); } .utrecht-html ol:lang(ar) { list-style: arabic-indic; } .utrecht-html p { color: var(--utrecht-paragraph-color, var(--utrecht-document-color, inherit)); font-family: var(--utrecht-paragraph-font-family, var(--utrecht-document-font-family, inherit)); font-size: var(--utrecht-paragraph-font-size, var(--utrecht-document-font-size, inherit)); font-weight: var(--utrecht-paragraph-font-weight, inherit); line-height: var(--utrecht-paragraph-line-height, var(--utrecht-document-line-height, inherit)); margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-paragraph-margin-block-end, 0)); margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-paragraph-margin-block-start, 0)); } .utrecht-html * ~ p { --utrecht-space-around: 1; } .utrecht-html pre:has(> code:only-child) { /* Use `monospace` as fallback both when the custom property isn't set and when the font is not available */ /* Use `inherit` as font-size, to override interfering CSS such as: `code { font-size: 16px }` */ background-color: var(--utrecht-code-background-color); color: var(--utrecht-code-color); font-family: var(--utrecht-code-font-family, monospace), monospace; font-size: var(--utrecht-code-font-size, inherit); font-variant-ligatures: none; line-height: var(--utrecht-code-line-height); --utrecht-code-color: var(--utrecht-code-block-color, inherit); --utrecht-code-background-color: var(--utrecht-code-block-background-color, inherit); --utrecht-code-font-weight: var(--utrecht-code-block-font-weight, inherit); --utrecht-code-font-size: var(--utrecht-code-block-font-size, inherit); --utrecht-code-font-family: var(--utrecht-code-block-font-family, monospace); background-color: var(--utrecht-code-block-background-color); display: block; font-size: var(--utrecht-code-block-font-size, var(--utrecht-code-font-size, inherit)); line-height: var(--utrecht-code-block-line-height, var(--utrecht-code-line-height)); margin-block-end: var(--utrecht-code-block-margin-block-end); margin-block-start: var(--utrecht-code-block-margin-block-start); margin-inline-end: var(--utrecht-code-block-margin-inline-end); margin-inline-start: var(--utrecht-code-block-margin-inline-start); padding-block-end: var(--utrecht-code-block-padding-block-end); padding-block-start: var(--utrecht-code-block-padding-block-start); padding-inline-end: var(--utrecht-code-block-padding-inline-end); padding-inline-start: var(--utrecht-code-block-padding-inline-start); white-space: pre; } .utrecht-html pre[hidden]:has(> code:only-child) { display: none; } .utrecht-html pre:has(> code:only-child) > code { display: contents; } .utrecht-html input[type=radio i] { /* * Use 24x24px as hardcoded minimum target size, to meet WCAG 2.5.8 standards. * https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html */ /* * For the `radial-gradient()` use a 5% gradient size to improve anti-aliasing. * With a 0% gradient, the circle will have jagged edges. */ -webkit-appearance: none; -moz-appearance: none; appearance: none; margin-block-end: 0; margin-block-start: 0; margin-inline-end: 0; margin-inline-start: 0; --_utrecht-radio-button-background-color: var( --_utrecht-radio-button-interactive-background-color, var(--_utrecht-radio-button-state-background-color, var(--utrecht-radio-button-background-color)) ); --_utrecht-radio-button-border-color: var( --_utrecht-radio-button-interactive-border-color, var(--_utrecht-radio-button-state-border-color, var(--utrecht-radio-button-border-color, currentColor)) ); --_utrecht-radio-button-border-width: var( --_utrecht-radio-button-interactive-border-width, var(--_utrecht-radio-button-state-border-width, var(--utrecht-radio-button-border-width)) ); --_utrecht-radio-button-color: var( --_utrecht-radio-button-interactive-color, var(--_utrecht-radio-button-state-color, var(--utrecht-radio-button-color, currentColor)) ); --_utrecht-radio-button-icon-size: 0; background-color: var(--_utrecht-radio-button-background-color); background-image: radial-gradient(circle, var(--_utrecht-radio-button-color, transparent) calc(var(--_utrecht-radio-button-icon-size, 50%) - 5%), var(--_utrecht-radio-button-background-color, currentColor) var(--_utrecht-radio-button-icon-size, 50%)); background-position: center; background-repeat: no-repeat; background-size: contain; block-size: var(--utrecht-radio-button-size, 1em); border-color: var(--_utrecht-radio-button-border-color); border-radius: 50%; border-style: solid; border-width: var(--_utrecht-radio-button-border-width); cursor: var(--utrecht-action-activate-cursor, revert); inline-size: var(--utrecht-radio-button-size, 1em); margin-inline-end: var(--utrecht-radio-button-margin-inline-end); min-block-size: 24px; min-inline-size: 24px; -webkit-print-color-adjust: exact; print-color-adjust: exact; -webkit-user-select: none; user-select: none; vertical-align: top; /* override the `:focus` selector above */ /* stylelint-disable-next-line no-descending-specificity */ } .utrecht-html input[type=radio i]:checked { --_utrecht-radio-button-icon-size: var(--utrecht-radio-button-icon-size, 50%); --_utrecht-radio-button-state-background-color: var(--utrecht-radio-button-checked-background-color); --_utrecht-radio-button-state-border-color: var(--utrecht-radio-button-checked-border-color); --_utrecht-radio-button-state-border-width: var(--utrecht-radio-button-checked-border-width); --_utrecht-radio-button-state-color: var(--utrecht-radio-button-checked-color); --_utrecht-radio-button-state-active-background-color: var(--utrecht-radio-button-checked-active-background-color); --_utrecht-radio-button-state-active-border-color: var(--utrecht-radio-button-checked-active-border-color); --_utrecht-radio-button-state-active-border-width: var(--utrecht-radio-button-checked-active-border-width); --_utrecht-radio-button-state-active-color: var(--utrecht-radio-button-checked-active-color); --_utrecht-radio-button-state-focus-background-color: var(--utrecht-radio-button-checked-focus-background-color); --_utrecht-radio-button-state-focus-border-color: var(--utrecht-radio-button-checked-focus-border-color); --_utrecht-radio-button-state-focus-border-width: var(--utrecht-radio-button-checked-focus-border-width); --_utrecht-radio-button-state-focus-color: var(--utrecht-radio-button-checked-focus-color); --_utrecht-radio-button-state-hover-background-color: var(--utrecht-radio-button-checked-hover-background-color); --_utrecht-radio-button-state-hover-border-color: var(--utrecht-radio-button-checked-hover-border-color); --_utrecht-radio-button-state-hover-border-width: var(--utrecht-radio-button-checked-hover-border-width); --_utrecht-radio-button-state-hover-color: var(--utrecht-radio-button-checked-hover-color); } .utrecht-html input[type=radio i]:disabled { /* * The disabled radio button should have: * - should have no active effect * - should have no focus effect * - should have no hover effect * - should have a working focus-visible effect, in case someone sets `<input type="radio" disabled tabindex="0">` */ --_utrecht-radio-button-background-color: var( --utrecht-radio-button-disabled-background-color, var(--utrecht-radio-button-background-color) ); --_utrecht-radio-button-border-color: var( --utrecht-radio-button-disabled-border-color, var(--utrecht-radio-button-border-color) ); --_utrecht-radio-button-border-width: var( --utrecht-radio-button-disabled-border-width, var(--utrecht-radio-button-border-width) ); --_utrecht-radio-button-color: var(--utrecht-radio-button-disabled-color, var(--utrecht-radio-button-color)); /* no focus effect */ --_utrecht-radio-button-focus-background-color: var(--_utrecht-radio-button-background-color); --_utrecht-radio-button-focus-border-color: var(--_utrecht-radio-button-border-color); --_utrecht-radio-button-focus-border-width: var(--_utrecht-radio-button-border-width); --_utrecht-radio-button-focus-color: var(--_utrecht-radio-button-color); /* no active effect */ --_utrecht-radio-button-active-background-color: var(--_utrecht-radio-button-background-color); --_utrecht-radio-button-active-border-color: var(--_utrecht-radio-button-border-color); --_utrecht-radio-button-active-border-width: var(--_utrecht-radio-button-border-width); --_utrecht-radio-button-active-color: var(--_utrecht-radio-button-color); /* no hover effect */ --_utrecht-radio-button-hover-background-color: var(--_utrecht-radio-button-background-color); --_utrecht-radio-button-hover-border-color: var(--_utrecht-radio-button-border-color); --_utrecht-radio-button-hover-border-width: var(--_utrecht-radio-button-border-width); --_utrecht-radio-button-hover-color: var(--_utrecht-radio-button-color); cursor: var(--utrecht-action-disabled-cursor, not-allowed); } .utrecht-html input[type=radio i]:invalid, .utrecht-html input[type=radio i][aria-invalid=true] { border-color: var(--utrecht-radio-button-invalid-border-color, var(--utrecht-radio-button-border-color)); border-width: var(--utrecht-radio-button-invalid-border-width, var(--utrecht-radio-button-border-width)); color: var(--utrecht-radio-button-invalid-color, var(--utrecht-radio-button-color)); } .utrecht-html input[type=radio i]:focus:not([aria-disabled=true], :disabled) { --_utrecht-radio-button-interactive-background-color: var( --utrecht-radio-button-focus-background-color, var(--utrecht-radio-button-focus-background-color) ); --_utrecht-rad