/**
* uaplus.css version 0.3.1
*/
/**
* Wrapping everything in an anonymous layer ensures that selectors
* in UA+ have the lowest specificty or the highest when using
* !important.
*/
@layer {
/**
* Different box model
*
* We use the traditional box model, where the padding and border
* of the element is drawn inside and not outside the specified
* width and height. That makes combining relative and absolute
* units in properties like inline-size and
* block-size easier.
*
* See https://en.wikipedia.org/wiki/CSS_box_model
*/
*,
*::after,
*::before {
box-sizing: border-box;
}
/**
* Improve focus styles
*
* Add spacing between content and its focus outline.
*/
:focus-visible {
outline-offset: 3px;
}
/**
* Disable text size adjustment
*
* To improve readability on non-mobile optimized websites, browsers
* like mobile Safari increase the default font size when you switch
* a website from portrait to landscape. We don't want that for our
* optimized sites.
*
* See https://kilianvalkhof.com/2022/css-html/your-css-reset-needs-text-size-adjust-probably/
*/
html {
-webkit-text-size-adjust: none;
text-size-adjust: none;
}
/**
* Increase line height
*
* Long paragraphs are easier to read if the line height is higher.
*/
html {
line-height: 1.5;
}
/**
* Add scrollbar gutter
*
* Prevent the page from “jumping” when switching from a long to a short page.
*
*/
html {
scrollbar-gutter: stable;
}
/**
* Remove UA styles for h1s nested in sectioning content
*
* Nesting h1s in section, articles, etc., shouldn't influence the
* styling of the heading since nesting doesn't influence
* semantics either.
*
* See https://github.com/whatwg/html/issues/7867#issuecomment-2632395167
* See https://github.com/whatwg/html/pull/11102
* See https://html.spec.whatwg.org/#sections-and-headings
*/
h1 {
font-size: 2em;
margin-block: 0.67em;
}
/**
* Improve abbreviations with titles
*
* The abbr element with the title isn't helpful regarding
* accessibility because support is inconsistent, and it's only
* accessible to some users. Still, it's commonly used.
* This rule shows a dotted underline on abbreviations in all
* browsers (there's a bug in Safari) and changes the cursor.
*
* See https://adrianroselli.com/2024/01/using-abbr-element-with-title-attribute.html
*/
abbr[title] {
cursor: help;
text-decoration-line: underline;
text-decoration-style: dotted;
}
/**
* Optimize mark element in Forced Colors Mode
*
* The colors of the mark element don't change in Forced Colors Mode,
* which can be problematic. Use system colors instead.
*
* See https://adrianroselli.com/2017/12/tweaking-text-level-styles.html#MarkWHCM
*/
@media (forced-colors: active) {
mark {
color: HighlightText;
background-color: Highlight;
}
}
/**
* Avoid overflow caused by embedded content
*
* Ensure that embedded content (audio, video, images, etc.)
* doesn't overflow its container.
*/
audio,
iframe,
img,
svg,
video {
max-block-size: 100%;
max-inline-size: 100%;
}
/**
* Prevent fieldsets from causing overflow
*
* Reset the default `min-inline-size: min-content` to prevent
* children from stretching fieldsets
*
* See https://github.com/twbs/bootstrap/issues/12359
* and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
*/
fieldset {
min-inline-size: 0;
}
/**
* Turn labels into block elements
*
* Labels for inputs, selects, and textarea should be block
* elements.
*/
label:has(+ :where(input:not([type="radio"], [type="checkbox"]), select, textarea)) {
display: block;
}
/**
* Increase the block-size of textareas
*
* The default height of textareas is small. We increase it a bit.
*/
textarea:not([rows]) {
min-block-size: 6em;
}
/**
* Inherit font styling in form elements
*
* buttons, inputs, selects, and textarea should have the same font
* family and size as the rest of the page.
*/
button,
input,
select,
textarea {
font-family: inherit;
font-size: inherit;
}
/**
* Normalize search input styles
*
* Remove the rounded corners of search inputs on macOS and IOS
* and normalize the background color
*/
[type="search"] {
-webkit-appearance: textfield;
}
/* iOS only */
@supports (-webkit-touch-callout: none) {
[type="search"] {
border: 1px solid -apple-system-secondary-label;
background-color: canvas;
}
}
/**
* Maintain direction in some input types
*
* Some input types should remain left-aligned in right-to-left
* languages,but only if the value isn't empty because the
* placeholder should be right-aligned.
*
* See https://rtlstyling.com/posts/rtl-styling#form-inputs
*/
input:where([type="tel"], [type="url"], [type="email"], [type="number"]):not(:placeholder-shown) {
direction: ltr;
}
/**
* Improve table styling
*
* With the default styling, tables are hard to scan. These rules
* add padding and collapsed borders.
*/
table {
border-collapse: collapse;
border: 1px solid;
}
th,
td {
border: 1px solid;
padding: 0.25em 0.5em;
vertical-align: top;
}
/**
* Fading dialogs
*
* Add fade in and fade out transitions for the dialog element
* and backdrops
*/
dialog::backdrop {
background: oklch(0% 0 0 / 0.3);
}
dialog,
[popover],
dialog::backdrop {
opacity: 0;
transition:
opacity 150ms ease-out,
display 150ms allow-discrete,
overlay 150ms allow-discrete;
}
dialog[open],
:popover-open,
dialog[open]::backdrop {
opacity: 1;
}
@starting-style {
dialog[open],
:popover-open,
dialog[open]::backdrop {
opacity: 0;
}
}
/**
* Increase specificity of [hidden]
*
* Make it harder to accidentally unhide elements with the
* [hidden] attribute while still maintaining the until-found
* functionality.
*/
[hidden]:not([hidden="until-found"]) {
display: none !important;
}
/**
* Turn images into block elements
*/
img {
display: block;
}
/**
* Change cursor of
*
* By default, only the ::marker inside the summary uses the
* default cursor.
*/
summary {
cursor: default;
}
/**
* Remove the default border from iframes
*/
iframe {
border: none;
}
/**
* By default popovers look like modals without a backdrop.
* This makes use of the implicit anchor in popvers to position
* it closely to the trigger.
*/
@supports (position-area: end) {
[popover] {
margin: 0;
position-area: end span-end;
position-try-fallbacks: flip-block, flip-inline, flip-block flip-inline;
}
}
}