diff --git a/test/basic-sanitize.expect.css b/test/basic-sanitize.expect.css index 1b55be3..6e8f059 100644 --- a/test/basic-sanitize.expect.css +++ b/test/basic-sanitize.expect.css @@ -2,13 +2,14 @@ * ========================================================================== */ /** - * Add border box sizing in all browsers (opinionated). + * 1. Add border box sizing in all browsers (opinionated). + * 2. Backgrounds do not repeat by default (opinionated). */ *, ::before, ::after { - box-sizing: border-box; + box-sizing: border-box; /* 1 */ } /** @@ -25,22 +26,20 @@ /** * 1. Use the default cursor in all browsers (opinionated). * 2. Change the line height in all browsers (opinionated). - * 3. Use a 4-space tab width in all browsers (opinionated). - * 4. Remove the grey highlight on links in iOS (opinionated). - * 5. Prevent adjustments of font size after orientation changes in - * IE on Windows Phone and in iOS. - * 6. Breaks words to prevent overflow in all browsers (opinionated). + * 3. Breaks words to prevent overflow in all browsers (opinionated). + * 4. Use a 4-space tab width in all browsers (opinionated). + * 5. Remove the grey highlight on links in iOS (opinionated). + * 6. Prevent adjustments of font size after orientation changes in iOS. */ -html { +:where(:root) { cursor: default; /* 1 */ line-height: 1.5; /* 2 */ - -moz-tab-size: 4; /* 3 */ - tab-size: 4; /* 3 */ - -webkit-tap-highlight-color: transparent /* 4 */; - -ms-text-size-adjust: 100%; /* 5 */ - -webkit-text-size-adjust: 100%; /* 5 */ - word-break: break-word; /* 6 */ + overflow-wrap: break-word; /* 3 */ + -moz-tab-size: 4; /* 4 */ + tab-size: 4; /* 4 */ + -webkit-tap-highlight-color: transparent; /* 5 */ + -webkit-text-size-adjust: 100%; /* 6 */ } /* Sections @@ -50,7 +49,7 @@ html { * Remove the margin in all browsers (opinionated). */ -body { +:where(body) { margin: 0; } @@ -59,7 +58,7 @@ body { * `article` contexts in Chrome, Edge, Firefox, and Safari. */ -h1 { +:where(h1) { font-size: 2em; margin: 0.67em 0; } @@ -68,55 +67,29 @@ h1 { * ========================================================================== */ /** - * Remove the margin on nested lists in Chrome, Edge, IE, and Safari. - */ - -dl dl, -dl ol, -dl ul, -ol dl, -ul dl { - margin: 0; -} - -/** - * Remove the margin on nested lists in Edge 18- and IE. + * Remove the margin on nested lists in Chrome, Edge, and Safari. */ -ol ol, -ol ul, -ul ol, -ul ul { +:where(dl, ol, ul) :where(dl, ol, ul) { margin: 0; } /** * 1. Correct the inheritance of border color in Firefox. * 2. Add the correct box sizing in Firefox. - * 3. Show the overflow in Edge 18- and IE. */ -hr { +:where(hr) { color: inherit; /* 1 */ height: 0; /* 2 */ - overflow: visible; /* 3 */ -} - -/** - * Add the correct display in IE. - */ - -main { - display: block; } /** * Remove the list style on navigation lists in all browsers (opinionated). */ -nav ol, -nav ul { - list-style: none; +:where(nav) :where(ol, ul) { + list-style-type: none; padding: 0; } @@ -124,8 +97,9 @@ nav ul { * Prevent VoiceOver from ignoring list semantics in Safari (opinionated). */ -nav li::before { +:where(nav li)::before { content: "\200B"; + float: left; } /** @@ -134,21 +108,20 @@ nav li::before { * 3. Prevent overflow of the container in all browsers (opinionated). */ -pre { +:where(pre) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ overflow: auto; /* 3 */ - -ms-overflow-style: scrollbar; /* 3 */ } /* Text-level semantics * ========================================================================== */ /** - * Add the correct text decoration in Edge 18-, IE, and Safari. + * Add the correct text decoration in Safari. */ -abbr[title] { +:where(abbr[title]) { text-decoration: underline; text-decoration: underline dotted; } @@ -157,8 +130,7 @@ abbr[title] { * Add the correct font weight in Chrome, Edge, and Safari. */ -b, -strong { +:where(b, strong) { font-weight: bolder; } @@ -167,9 +139,7 @@ strong { * 2. Correct the odd `em` font sizing in all browsers. */ -code, -kbd, -samp { +:where(code, kbd, samp) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } @@ -178,7 +148,7 @@ samp { * Add the correct font size in all browsers. */ -small { +:where(small) { font-size: 80%; } @@ -189,12 +159,7 @@ small { * Change the alignment on media elements in all browsers (opinionated). */ -audio, -canvas, -iframe, -img, -svg, -video { +:where(audio, canvas, iframe, img, svg, video) { vertical-align: middle; } @@ -202,7 +167,7 @@ video { * Remove the border on iframes in all browsers (opinionated). */ -iframe { +:where(iframe) { border-style: none; } @@ -210,18 +175,10 @@ iframe { * Change the fill color to match the text color in all browsers (opinionated). */ -svg:not([fill]) { +:where(svg:not([fill])) { fill: currentColor; } -/** - * Hide the overflow in IE. - */ - -svg:not(:root) { - overflow: hidden; -} - /* Tabular data * ========================================================================== */ @@ -231,7 +188,7 @@ svg:not(:root) { * 3. Remove text indentation from table contents in Chrome, Edge, and Safari. */ -table { +:where(table) { border-collapse: collapse; /* 1 */ border-color: inherit; /* 2 */ text-indent: 0; /* 3 */ @@ -244,92 +201,42 @@ table { * Remove the margin on controls in Safari. */ -button, -input, -select { +:where(button, input, select) { margin: 0; } -/** - * 1. Show the overflow in IE. - * 2. Remove the inheritance of text transform in Edge 18-, Firefox, and IE. - */ - -button { - overflow: visible; /* 1 */ - text-transform: none; /* 2 */ -} - /** * Correct the inability to style buttons in iOS and Safari. */ -button, -[type="button"], -[type="reset"], -[type="submit"] { +:where(button, [type="button" i], [type="reset" i], [type="submit" i]) { -webkit-appearance: button; } /** - * 1. Change the inconsistent appearance in all browsers (opinionated). - * 2. Correct the padding in Firefox. - */ - -fieldset { - border: 1px solid #a0a0a0; /* 1 */ - padding: 0.35em 0.75em 0.625em; /* 2 */ -} - -/** - * Show the overflow in Edge 18- and IE. - */ - -input { - overflow: visible; -} - -/** - * 1. Correct the text wrapping in Edge 18- and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - */ - -legend { - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - white-space: normal; /* 1 */ -} - -/** - * 1. Add the correct display in Edge 18- and IE. - * 2. Add the correct vertical alignment in Chrome, Edge, and Firefox. + * Change the inconsistent appearance in all browsers (opinionated). */ -progress { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ +:where(fieldset) { + border: 1px solid #a0a0a0; } /** - * Remove the inheritance of text transform in Firefox. + * Add the correct vertical alignment in Chrome, Edge, and Firefox. */ -select { - text-transform: none; +:where(progress) { + vertical-align: baseline; } /** * 1. Remove the margin in Firefox and Safari. - * 2. Remove the default vertical scrollbar in IE. * 3. Change the resize direction in all browsers (opinionated). */ -textarea { +:where(textarea) { margin: 0; /* 1 */ - overflow: auto; /* 2 */ resize: vertical; /* 3 */ - resize: block; /* 3 */ } /** @@ -337,7 +244,7 @@ textarea { * 2. Correct the outline style in Safari. */ -[type="search"] { +:where([type="search" i]) { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } @@ -378,53 +285,18 @@ textarea { font: inherit; /* 2 */ } -/** - * Remove the inner border and padding of focus outlines in Firefox. - */ - -::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus outline styles unset by the previous rule in Firefox. - */ - -:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Remove the additional :invalid styles in Firefox. - */ - -:-moz-ui-invalid { - box-shadow: none; -} - /* Interactive * ========================================================================== */ /* - * Add the correct display in Edge 18- and IE. + * Add the correct styles in Safari. */ -details { - display: block; -} - -/* - * Add the correct styles in Edge 18-, IE, and Safari. - */ - -dialog { +:where(dialog) { background-color: white; border: solid; color: black; - display: block; height: -moz-fit-content; - height: -webkit-fit-content; height: fit-content; left: 0; margin: auto; @@ -432,52 +304,21 @@ dialog { position: absolute; right: 0; width: -moz-fit-content; - width: -webkit-fit-content; width: fit-content; } -dialog:not([open]) { +:where(dialog:not([open])) { display: none; } /* - * Add the correct display in all browsers. + * Add the correct display in Safari. */ -summary { +:where(details > summary:first-of-type) { display: list-item; } -/* Scripting - * ========================================================================== */ - -/** - * Add the correct display in IE. - */ - -template { - display: none; -} - -/* User interaction - * ========================================================================== */ - -/* - * Remove the tapping delay in IE 10. - */ - -a, -area, -button, -input, -label, -select, -summary, -textarea, -[tabindex] { - -ms-touch-action: manipulation; -} - /* Accessibility * ========================================================================== */ @@ -485,7 +326,7 @@ textarea, * Change the cursor on busy elements in all browsers (opinionated). */ -[aria-busy="true"] { +:where([aria-busy="true" i]) { cursor: progress; } @@ -493,7 +334,7 @@ textarea, * Change the cursor on control elements in all browsers (opinionated). */ -[aria-controls] { +:where([aria-controls]) { cursor: pointer; } @@ -502,8 +343,7 @@ textarea, * inoperable elements in all browsers (opinionated). */ -[aria-disabled="true"], -[disabled] { +:where([aria-disabled="true" i], [disabled]) { cursor: not-allowed; } @@ -512,11 +352,11 @@ textarea, * in all browsers (opinionated). */ -[aria-hidden="false"][hidden] { +:where([aria-hidden="false" i][hidden]) { display: initial; } -[aria-hidden="false"][hidden]:not(:focus) { +:where([aria-hidden="false" i][hidden]:not(:focus)) { clip: rect(0, 0, 0, 0); position: absolute; } diff --git a/test/force-sanitize-all.expect.css b/test/force-sanitize-all.expect.css index 07e7678..cb0861e 100644 --- a/test/force-sanitize-all.expect.css +++ b/test/force-sanitize-all.expect.css @@ -1,11 +1,12 @@ /* Document * ========================================================================== *//** - * Add border box sizing in all browsers (opinionated). + * 1. Add border box sizing in all browsers (opinionated). + * 2. Backgrounds do not repeat by default (opinionated). */ *, ::before, ::after { - box-sizing: border-box; + box-sizing: border-box; /* 1 */ }/** * 1. Add text decoration inheritance in all browsers (opinionated). * 2. Add vertical alignment inheritance in all browsers (opinionated). @@ -17,148 +18,113 @@ }/** * 1. Use the default cursor in all browsers (opinionated). * 2. Change the line height in all browsers (opinionated). - * 3. Use a 4-space tab width in all browsers (opinionated). - * 4. Remove the grey highlight on links in iOS (opinionated). - * 5. Prevent adjustments of font size after orientation changes in - * IE on Windows Phone and in iOS. - * 6. Breaks words to prevent overflow in all browsers (opinionated). + * 3. Breaks words to prevent overflow in all browsers (opinionated). + * 4. Use a 4-space tab width in all browsers (opinionated). + * 5. Remove the grey highlight on links in iOS (opinionated). + * 6. Prevent adjustments of font size after orientation changes in iOS. */ -html { +:where(:root) { cursor: default; /* 1 */ line-height: 1.5; /* 2 */ - -moz-tab-size: 4; /* 3 */ - tab-size: 4; /* 3 */ - -webkit-tap-highlight-color: transparent /* 4 */; - -ms-text-size-adjust: 100%; /* 5 */ - -webkit-text-size-adjust: 100%; /* 5 */ - word-break: break-word; /* 6 */ + overflow-wrap: break-word; /* 3 */ + -moz-tab-size: 4; /* 4 */ + tab-size: 4; /* 4 */ + -webkit-tap-highlight-color: transparent; /* 5 */ + -webkit-text-size-adjust: 100%; /* 6 */ }/* Sections * ========================================================================== *//** * Remove the margin in all browsers (opinionated). */ -body { +:where(body) { margin: 0; }/** * Correct the font size and margin on `h1` elements within `section` and * `article` contexts in Chrome, Edge, Firefox, and Safari. */ -h1 { +:where(h1) { font-size: 2em; margin: 0.67em 0; }/* Grouping content * ========================================================================== *//** - * Remove the margin on nested lists in Chrome, Edge, IE, and Safari. - */ -dl dl, -dl ol, -dl ul, -ol dl, -ul dl { - margin: 0; -}/** - * Remove the margin on nested lists in Edge 18- and IE. + * Remove the margin on nested lists in Chrome, Edge, and Safari. */ -ol ol, -ol ul, -ul ol, -ul ul { +:where(dl, ol, ul) :where(dl, ol, ul) { margin: 0; }/** * 1. Correct the inheritance of border color in Firefox. * 2. Add the correct box sizing in Firefox. - * 3. Show the overflow in Edge 18- and IE. */ -hr { +:where(hr) { color: inherit; /* 1 */ height: 0; /* 2 */ - overflow: visible; /* 3 */ -}/** - * Add the correct display in IE. - */ -main { - display: block; }/** * Remove the list style on navigation lists in all browsers (opinionated). */ -nav ol, -nav ul { - list-style: none; +:where(nav) :where(ol, ul) { + list-style-type: none; padding: 0; }/** * Prevent VoiceOver from ignoring list semantics in Safari (opinionated). */ -nav li::before { +:where(nav li)::before { content: "\200B"; + float: left; }/** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. * 3. Prevent overflow of the container in all browsers (opinionated). */ -pre { +:where(pre) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ overflow: auto; /* 3 */ - -ms-overflow-style: scrollbar; /* 3 */ }/* Text-level semantics * ========================================================================== *//** - * Add the correct text decoration in Edge 18-, IE, and Safari. + * Add the correct text decoration in Safari. */ -abbr[title] { +:where(abbr[title]) { text-decoration: underline; text-decoration: underline dotted; }/** * Add the correct font weight in Chrome, Edge, and Safari. */ -b, -strong { +:where(b, strong) { font-weight: bolder; }/** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. */ -code, -kbd, -samp { +:where(code, kbd, samp) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ }/** * Add the correct font size in all browsers. */ -small { +:where(small) { font-size: 80%; }/* Embedded content * ========================================================================== *//* * Change the alignment on media elements in all browsers (opinionated). */ -audio, -canvas, -iframe, -img, -svg, -video { +:where(audio, canvas, iframe, img, svg, video) { vertical-align: middle; }/** * Remove the border on iframes in all browsers (opinionated). */ -iframe { +:where(iframe) { border-style: none; }/** * Change the fill color to match the text color in all browsers (opinionated). */ -svg:not([fill]) { +:where(svg:not([fill])) { fill: currentColor; -}/** - * Hide the overflow in IE. - */ -svg:not(:root) { - overflow: hidden; }/* Tabular data * ========================================================================== *//** * 1. Collapse border spacing in all browsers (opinionated). * 2. Correct table border color inheritance in all Chrome, Edge, and Safari. * 3. Remove text indentation from table contents in Chrome, Edge, and Safari. */ -table { +:where(table) { border-collapse: collapse; /* 1 */ border-color: inherit; /* 2 */ text-indent: 0; /* 3 */ @@ -166,73 +132,35 @@ table { * ========================================================================== *//** * Remove the margin on controls in Safari. */ -button, -input, -select { +:where(button, input, select) { margin: 0; -}/** - * 1. Show the overflow in IE. - * 2. Remove the inheritance of text transform in Edge 18-, Firefox, and IE. - */ -button { - overflow: visible; /* 1 */ - text-transform: none; /* 2 */ }/** * Correct the inability to style buttons in iOS and Safari. */ -button, -[type="button"], -[type="reset"], -[type="submit"] { +:where(button, [type="button" i], [type="reset" i], [type="submit" i]) { -webkit-appearance: button; }/** - * 1. Change the inconsistent appearance in all browsers (opinionated). - * 2. Correct the padding in Firefox. - */ -fieldset { - border: 1px solid #a0a0a0; /* 1 */ - padding: 0.35em 0.75em 0.625em; /* 2 */ -}/** - * Show the overflow in Edge 18- and IE. - */ -input { - overflow: visible; -}/** - * 1. Correct the text wrapping in Edge 18- and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - */ -legend { - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - white-space: normal; /* 1 */ -}/** - * 1. Add the correct display in Edge 18- and IE. - * 2. Add the correct vertical alignment in Chrome, Edge, and Firefox. + * Change the inconsistent appearance in all browsers (opinionated). */ -progress { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ +:where(fieldset) { + border: 1px solid #a0a0a0; }/** - * Remove the inheritance of text transform in Firefox. + * Add the correct vertical alignment in Chrome, Edge, and Firefox. */ -select { - text-transform: none; +:where(progress) { + vertical-align: baseline; }/** * 1. Remove the margin in Firefox and Safari. - * 2. Remove the default vertical scrollbar in IE. * 3. Change the resize direction in all browsers (opinionated). */ -textarea { +:where(textarea) { margin: 0; /* 1 */ - overflow: auto; /* 2 */ resize: vertical; /* 3 */ - resize: block; /* 3 */ }/** * 1. Correct the odd appearance in Chrome, Edge, and Safari. * 2. Correct the outline style in Safari. */ -[type="search"] { +:where([type="search" i]) { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ }/** @@ -259,38 +187,15 @@ textarea { ::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ -}/** - * Remove the inner border and padding of focus outlines in Firefox. - */ -::-moz-focus-inner { - border-style: none; - padding: 0; -}/** - * Restore the focus outline styles unset by the previous rule in Firefox. - */ -:-moz-focusring { - outline: 1px dotted ButtonText; -}/** - * Remove the additional :invalid styles in Firefox. - */ -:-moz-ui-invalid { - box-shadow: none; }/* Interactive * ========================================================================== *//* - * Add the correct display in Edge 18- and IE. - */ -details { - display: block; -}/* - * Add the correct styles in Edge 18-, IE, and Safari. + * Add the correct styles in Safari. */ -dialog { +:where(dialog) { background-color: white; border: solid; color: black; - display: block; height: -moz-fit-content; - height: -webkit-fit-content; height: fit-content; left: 0; margin: auto; @@ -298,72 +203,47 @@ dialog { position: absolute; right: 0; width: -moz-fit-content; - width: -webkit-fit-content; width: fit-content; } -dialog:not([open]) { +:where(dialog:not([open])) { display: none; }/* - * Add the correct display in all browsers. + * Add the correct display in Safari. */ -summary { +:where(details > summary:first-of-type) { display: list-item; -}/* Scripting - * ========================================================================== *//** - * Add the correct display in IE. - */ -template { - display: none; -}/* User interaction - * ========================================================================== *//* - * Remove the tapping delay in IE 10. - */ -a, -area, -button, -input, -label, -select, -summary, -textarea, -[tabindex] { - -ms-touch-action: manipulation; }/* Accessibility * ========================================================================== *//** * Change the cursor on busy elements in all browsers (opinionated). */ -[aria-busy="true"] { +:where([aria-busy="true" i]) { cursor: progress; }/* * Change the cursor on control elements in all browsers (opinionated). */ -[aria-controls] { +:where([aria-controls]) { cursor: pointer; }/* * Change the cursor on disabled, not-editable, or otherwise * inoperable elements in all browsers (opinionated). */ -[aria-disabled="true"], -[disabled] { +:where([aria-disabled="true" i], [disabled]) { cursor: not-allowed; }/* * Change the display on visually hidden accessible elements * in all browsers (opinionated). */ -[aria-hidden="false"][hidden] { +:where([aria-hidden="false" i][hidden]) { display: initial; } -[aria-hidden="false"][hidden]:not(:focus) { +:where([aria-hidden="false" i][hidden]:not(:focus)) { clip: rect(0, 0, 0, 0); position: absolute; }/** * 1. Change the inconsistent appearance in all browsers (opinionated). * 2. Add typography inheritance in all browsers (opinionated). */ -button, -input, -select, -textarea { +:where(button, input, select, textarea) { background-color: transparent; /* 1 */ border: 1px solid WindowFrame; /* 1 */ color: inherit; /* 1 */ @@ -373,44 +253,17 @@ textarea { }/** * Change the inconsistent appearance in all browsers (opinionated). */ -select { - -moz-appearance: none; - -webkit-appearance: none; - background: no-repeat right center / 1em; +:where(select) { + appearance: none; + background: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='4'%3E%3Cpath d='M4 0h6L7 4'/%3E%3C/svg%3E") no-repeat right center / 1em; border-radius: 0; padding-right: 1em; -}/** - * Change the inconsistent appearance in all browsers (opinionated). - */ -select:not([multiple]):not([size]) { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='4'%3E%3Cpath d='M4 0h6L7 4'/%3E%3C/svg%3E"); }/** * Remove the border and padding in all browsers (opinionated). */ -[type="color"], -[type="range"] { +:where([type="color" i], [type="range" i]) { border-width: 0; padding: 0; -}/** - * Change the inconsistent appearance in IE (opinionated). - */ -::-ms-expand { - display: none; -}/** - * Correct the inconsistent appearance in IE (opinionated). - */ -:-ms-input-placeholder { - color: rgba(0, 0, 0, 0.54); -}/** - * Use a comfortable measure in all browsers (opinionated). - */ -html { - padding: 1em; -} -@media (min-width: 34em) { - html { - padding: 1em calc(50% - 16em); - } }/** * Use the default user interface font in all browsers (opinionated). */ @@ -436,6 +289,7 @@ kbd, samp, pre { font-family: + ui-monospace, /* macOS 10.10+ */ "Menlo", /* Windows 6+ */ "Consolas", /* Android 4+ */ "Roboto Mono", diff --git a/test/force-sanitize.expect.css b/test/force-sanitize.expect.css index f1152dd..efbe5fa 100644 --- a/test/force-sanitize.expect.css +++ b/test/force-sanitize.expect.css @@ -1,11 +1,12 @@ /* Document * ========================================================================== *//** - * Add border box sizing in all browsers (opinionated). + * 1. Add border box sizing in all browsers (opinionated). + * 2. Backgrounds do not repeat by default (opinionated). */ *, ::before, ::after { - box-sizing: border-box; + box-sizing: border-box; /* 1 */ }/** * 1. Add text decoration inheritance in all browsers (opinionated). * 2. Add vertical alignment inheritance in all browsers (opinionated). @@ -17,148 +18,113 @@ }/** * 1. Use the default cursor in all browsers (opinionated). * 2. Change the line height in all browsers (opinionated). - * 3. Use a 4-space tab width in all browsers (opinionated). - * 4. Remove the grey highlight on links in iOS (opinionated). - * 5. Prevent adjustments of font size after orientation changes in - * IE on Windows Phone and in iOS. - * 6. Breaks words to prevent overflow in all browsers (opinionated). + * 3. Breaks words to prevent overflow in all browsers (opinionated). + * 4. Use a 4-space tab width in all browsers (opinionated). + * 5. Remove the grey highlight on links in iOS (opinionated). + * 6. Prevent adjustments of font size after orientation changes in iOS. */ -html { +:where(:root) { cursor: default; /* 1 */ line-height: 1.5; /* 2 */ - -moz-tab-size: 4; /* 3 */ - tab-size: 4; /* 3 */ - -webkit-tap-highlight-color: transparent /* 4 */; - -ms-text-size-adjust: 100%; /* 5 */ - -webkit-text-size-adjust: 100%; /* 5 */ - word-break: break-word; /* 6 */ + overflow-wrap: break-word; /* 3 */ + -moz-tab-size: 4; /* 4 */ + tab-size: 4; /* 4 */ + -webkit-tap-highlight-color: transparent; /* 5 */ + -webkit-text-size-adjust: 100%; /* 6 */ }/* Sections * ========================================================================== *//** * Remove the margin in all browsers (opinionated). */ -body { +:where(body) { margin: 0; }/** * Correct the font size and margin on `h1` elements within `section` and * `article` contexts in Chrome, Edge, Firefox, and Safari. */ -h1 { +:where(h1) { font-size: 2em; margin: 0.67em 0; }/* Grouping content * ========================================================================== *//** - * Remove the margin on nested lists in Chrome, Edge, IE, and Safari. + * Remove the margin on nested lists in Chrome, Edge, and Safari. */ -dl dl, -dl ol, -dl ul, -ol dl, -ul dl { - margin: 0; -}/** - * Remove the margin on nested lists in Edge 18- and IE. - */ -ol ol, -ol ul, -ul ol, -ul ul { +:where(dl, ol, ul) :where(dl, ol, ul) { margin: 0; }/** * 1. Correct the inheritance of border color in Firefox. * 2. Add the correct box sizing in Firefox. - * 3. Show the overflow in Edge 18- and IE. */ -hr { +:where(hr) { color: inherit; /* 1 */ height: 0; /* 2 */ - overflow: visible; /* 3 */ -}/** - * Add the correct display in IE. - */ -main { - display: block; }/** * Remove the list style on navigation lists in all browsers (opinionated). */ -nav ol, -nav ul { - list-style: none; +:where(nav) :where(ol, ul) { + list-style-type: none; padding: 0; }/** * Prevent VoiceOver from ignoring list semantics in Safari (opinionated). */ -nav li::before { +:where(nav li)::before { content: "\200B"; + float: left; }/** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. * 3. Prevent overflow of the container in all browsers (opinionated). */ -pre { +:where(pre) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ overflow: auto; /* 3 */ - -ms-overflow-style: scrollbar; /* 3 */ }/* Text-level semantics * ========================================================================== *//** - * Add the correct text decoration in Edge 18-, IE, and Safari. + * Add the correct text decoration in Safari. */ -abbr[title] { +:where(abbr[title]) { text-decoration: underline; text-decoration: underline dotted; }/** * Add the correct font weight in Chrome, Edge, and Safari. */ -b, -strong { +:where(b, strong) { font-weight: bolder; }/** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. */ -code, -kbd, -samp { +:where(code, kbd, samp) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ }/** * Add the correct font size in all browsers. */ -small { +:where(small) { font-size: 80%; }/* Embedded content * ========================================================================== *//* * Change the alignment on media elements in all browsers (opinionated). */ -audio, -canvas, -iframe, -img, -svg, -video { +:where(audio, canvas, iframe, img, svg, video) { vertical-align: middle; }/** * Remove the border on iframes in all browsers (opinionated). */ -iframe { +:where(iframe) { border-style: none; }/** * Change the fill color to match the text color in all browsers (opinionated). */ -svg:not([fill]) { +:where(svg:not([fill])) { fill: currentColor; -}/** - * Hide the overflow in IE. - */ -svg:not(:root) { - overflow: hidden; }/* Tabular data * ========================================================================== *//** * 1. Collapse border spacing in all browsers (opinionated). * 2. Correct table border color inheritance in all Chrome, Edge, and Safari. * 3. Remove text indentation from table contents in Chrome, Edge, and Safari. */ -table { +:where(table) { border-collapse: collapse; /* 1 */ border-color: inherit; /* 2 */ text-indent: 0; /* 3 */ @@ -166,73 +132,35 @@ table { * ========================================================================== *//** * Remove the margin on controls in Safari. */ -button, -input, -select { +:where(button, input, select) { margin: 0; -}/** - * 1. Show the overflow in IE. - * 2. Remove the inheritance of text transform in Edge 18-, Firefox, and IE. - */ -button { - overflow: visible; /* 1 */ - text-transform: none; /* 2 */ }/** * Correct the inability to style buttons in iOS and Safari. */ -button, -[type="button"], -[type="reset"], -[type="submit"] { +:where(button, [type="button" i], [type="reset" i], [type="submit" i]) { -webkit-appearance: button; }/** - * 1. Change the inconsistent appearance in all browsers (opinionated). - * 2. Correct the padding in Firefox. - */ -fieldset { - border: 1px solid #a0a0a0; /* 1 */ - padding: 0.35em 0.75em 0.625em; /* 2 */ -}/** - * Show the overflow in Edge 18- and IE. - */ -input { - overflow: visible; -}/** - * 1. Correct the text wrapping in Edge 18- and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - */ -legend { - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - white-space: normal; /* 1 */ -}/** - * 1. Add the correct display in Edge 18- and IE. - * 2. Add the correct vertical alignment in Chrome, Edge, and Firefox. + * Change the inconsistent appearance in all browsers (opinionated). */ -progress { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ +:where(fieldset) { + border: 1px solid #a0a0a0; }/** - * Remove the inheritance of text transform in Firefox. + * Add the correct vertical alignment in Chrome, Edge, and Firefox. */ -select { - text-transform: none; +:where(progress) { + vertical-align: baseline; }/** * 1. Remove the margin in Firefox and Safari. - * 2. Remove the default vertical scrollbar in IE. * 3. Change the resize direction in all browsers (opinionated). */ -textarea { +:where(textarea) { margin: 0; /* 1 */ - overflow: auto; /* 2 */ resize: vertical; /* 3 */ - resize: block; /* 3 */ }/** * 1. Correct the odd appearance in Chrome, Edge, and Safari. * 2. Correct the outline style in Safari. */ -[type="search"] { +:where([type="search" i]) { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ }/** @@ -259,38 +187,15 @@ textarea { ::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ -}/** - * Remove the inner border and padding of focus outlines in Firefox. - */ -::-moz-focus-inner { - border-style: none; - padding: 0; -}/** - * Restore the focus outline styles unset by the previous rule in Firefox. - */ -:-moz-focusring { - outline: 1px dotted ButtonText; -}/** - * Remove the additional :invalid styles in Firefox. - */ -:-moz-ui-invalid { - box-shadow: none; }/* Interactive * ========================================================================== *//* - * Add the correct display in Edge 18- and IE. - */ -details { - display: block; -}/* - * Add the correct styles in Edge 18-, IE, and Safari. + * Add the correct styles in Safari. */ -dialog { +:where(dialog) { background-color: white; border: solid; color: black; - display: block; height: -moz-fit-content; - height: -webkit-fit-content; height: fit-content; left: 0; margin: auto; @@ -298,62 +203,40 @@ dialog { position: absolute; right: 0; width: -moz-fit-content; - width: -webkit-fit-content; width: fit-content; } -dialog:not([open]) { +:where(dialog:not([open])) { display: none; }/* - * Add the correct display in all browsers. + * Add the correct display in Safari. */ -summary { +:where(details > summary:first-of-type) { display: list-item; -}/* Scripting - * ========================================================================== *//** - * Add the correct display in IE. - */ -template { - display: none; -}/* User interaction - * ========================================================================== *//* - * Remove the tapping delay in IE 10. - */ -a, -area, -button, -input, -label, -select, -summary, -textarea, -[tabindex] { - -ms-touch-action: manipulation; }/* Accessibility * ========================================================================== *//** * Change the cursor on busy elements in all browsers (opinionated). */ -[aria-busy="true"] { +:where([aria-busy="true" i]) { cursor: progress; }/* * Change the cursor on control elements in all browsers (opinionated). */ -[aria-controls] { +:where([aria-controls]) { cursor: pointer; }/* * Change the cursor on disabled, not-editable, or otherwise * inoperable elements in all browsers (opinionated). */ -[aria-disabled="true"], -[disabled] { +:where([aria-disabled="true" i], [disabled]) { cursor: not-allowed; }/* * Change the display on visually hidden accessible elements * in all browsers (opinionated). */ -[aria-hidden="false"][hidden] { +:where([aria-hidden="false" i][hidden]) { display: initial; } -[aria-hidden="false"][hidden]:not(:focus) { +:where([aria-hidden="false" i][hidden]:not(:focus)) { clip: rect(0, 0, 0, 0); position: absolute; } \ No newline at end of file diff --git a/test/import-sanitize-all.expect.css b/test/import-sanitize-all.expect.css index d7149a3..b9cb511 100644 --- a/test/import-sanitize-all.expect.css +++ b/test/import-sanitize-all.expect.css @@ -1,11 +1,12 @@ /* Document * ========================================================================== *//** - * Add border box sizing in all browsers (opinionated). + * 1. Add border box sizing in all browsers (opinionated). + * 2. Backgrounds do not repeat by default (opinionated). */ *, ::before, ::after { - box-sizing: border-box; + box-sizing: border-box; /* 1 */ }/** * 1. Add text decoration inheritance in all browsers (opinionated). * 2. Add vertical alignment inheritance in all browsers (opinionated). @@ -17,148 +18,113 @@ }/** * 1. Use the default cursor in all browsers (opinionated). * 2. Change the line height in all browsers (opinionated). - * 3. Use a 4-space tab width in all browsers (opinionated). - * 4. Remove the grey highlight on links in iOS (opinionated). - * 5. Prevent adjustments of font size after orientation changes in - * IE on Windows Phone and in iOS. - * 6. Breaks words to prevent overflow in all browsers (opinionated). + * 3. Breaks words to prevent overflow in all browsers (opinionated). + * 4. Use a 4-space tab width in all browsers (opinionated). + * 5. Remove the grey highlight on links in iOS (opinionated). + * 6. Prevent adjustments of font size after orientation changes in iOS. */ -html { +:where(:root) { cursor: default; /* 1 */ line-height: 1.5; /* 2 */ - -moz-tab-size: 4; /* 3 */ - tab-size: 4; /* 3 */ - -webkit-tap-highlight-color: transparent /* 4 */; - -ms-text-size-adjust: 100%; /* 5 */ - -webkit-text-size-adjust: 100%; /* 5 */ - word-break: break-word; /* 6 */ + overflow-wrap: break-word; /* 3 */ + -moz-tab-size: 4; /* 4 */ + tab-size: 4; /* 4 */ + -webkit-tap-highlight-color: transparent; /* 5 */ + -webkit-text-size-adjust: 100%; /* 6 */ }/* Sections * ========================================================================== *//** * Remove the margin in all browsers (opinionated). */ -body { +:where(body) { margin: 0; }/** * Correct the font size and margin on `h1` elements within `section` and * `article` contexts in Chrome, Edge, Firefox, and Safari. */ -h1 { +:where(h1) { font-size: 2em; margin: 0.67em 0; }/* Grouping content * ========================================================================== *//** - * Remove the margin on nested lists in Chrome, Edge, IE, and Safari. - */ -dl dl, -dl ol, -dl ul, -ol dl, -ul dl { - margin: 0; -}/** - * Remove the margin on nested lists in Edge 18- and IE. + * Remove the margin on nested lists in Chrome, Edge, and Safari. */ -ol ol, -ol ul, -ul ol, -ul ul { +:where(dl, ol, ul) :where(dl, ol, ul) { margin: 0; }/** * 1. Correct the inheritance of border color in Firefox. * 2. Add the correct box sizing in Firefox. - * 3. Show the overflow in Edge 18- and IE. */ -hr { +:where(hr) { color: inherit; /* 1 */ height: 0; /* 2 */ - overflow: visible; /* 3 */ -}/** - * Add the correct display in IE. - */ -main { - display: block; }/** * Remove the list style on navigation lists in all browsers (opinionated). */ -nav ol, -nav ul { - list-style: none; +:where(nav) :where(ol, ul) { + list-style-type: none; padding: 0; }/** * Prevent VoiceOver from ignoring list semantics in Safari (opinionated). */ -nav li::before { +:where(nav li)::before { content: "\200B"; + float: left; }/** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. * 3. Prevent overflow of the container in all browsers (opinionated). */ -pre { +:where(pre) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ overflow: auto; /* 3 */ - -ms-overflow-style: scrollbar; /* 3 */ }/* Text-level semantics * ========================================================================== *//** - * Add the correct text decoration in Edge 18-, IE, and Safari. + * Add the correct text decoration in Safari. */ -abbr[title] { +:where(abbr[title]) { text-decoration: underline; text-decoration: underline dotted; }/** * Add the correct font weight in Chrome, Edge, and Safari. */ -b, -strong { +:where(b, strong) { font-weight: bolder; }/** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. */ -code, -kbd, -samp { +:where(code, kbd, samp) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ }/** * Add the correct font size in all browsers. */ -small { +:where(small) { font-size: 80%; }/* Embedded content * ========================================================================== *//* * Change the alignment on media elements in all browsers (opinionated). */ -audio, -canvas, -iframe, -img, -svg, -video { +:where(audio, canvas, iframe, img, svg, video) { vertical-align: middle; }/** * Remove the border on iframes in all browsers (opinionated). */ -iframe { +:where(iframe) { border-style: none; }/** * Change the fill color to match the text color in all browsers (opinionated). */ -svg:not([fill]) { +:where(svg:not([fill])) { fill: currentColor; -}/** - * Hide the overflow in IE. - */ -svg:not(:root) { - overflow: hidden; }/* Tabular data * ========================================================================== *//** * 1. Collapse border spacing in all browsers (opinionated). * 2. Correct table border color inheritance in all Chrome, Edge, and Safari. * 3. Remove text indentation from table contents in Chrome, Edge, and Safari. */ -table { +:where(table) { border-collapse: collapse; /* 1 */ border-color: inherit; /* 2 */ text-indent: 0; /* 3 */ @@ -166,73 +132,35 @@ table { * ========================================================================== *//** * Remove the margin on controls in Safari. */ -button, -input, -select { +:where(button, input, select) { margin: 0; -}/** - * 1. Show the overflow in IE. - * 2. Remove the inheritance of text transform in Edge 18-, Firefox, and IE. - */ -button { - overflow: visible; /* 1 */ - text-transform: none; /* 2 */ }/** * Correct the inability to style buttons in iOS and Safari. */ -button, -[type="button"], -[type="reset"], -[type="submit"] { +:where(button, [type="button" i], [type="reset" i], [type="submit" i]) { -webkit-appearance: button; }/** - * 1. Change the inconsistent appearance in all browsers (opinionated). - * 2. Correct the padding in Firefox. - */ -fieldset { - border: 1px solid #a0a0a0; /* 1 */ - padding: 0.35em 0.75em 0.625em; /* 2 */ -}/** - * Show the overflow in Edge 18- and IE. - */ -input { - overflow: visible; -}/** - * 1. Correct the text wrapping in Edge 18- and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - */ -legend { - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - white-space: normal; /* 1 */ -}/** - * 1. Add the correct display in Edge 18- and IE. - * 2. Add the correct vertical alignment in Chrome, Edge, and Firefox. + * Change the inconsistent appearance in all browsers (opinionated). */ -progress { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ +:where(fieldset) { + border: 1px solid #a0a0a0; }/** - * Remove the inheritance of text transform in Firefox. + * Add the correct vertical alignment in Chrome, Edge, and Firefox. */ -select { - text-transform: none; +:where(progress) { + vertical-align: baseline; }/** * 1. Remove the margin in Firefox and Safari. - * 2. Remove the default vertical scrollbar in IE. * 3. Change the resize direction in all browsers (opinionated). */ -textarea { +:where(textarea) { margin: 0; /* 1 */ - overflow: auto; /* 2 */ resize: vertical; /* 3 */ - resize: block; /* 3 */ }/** * 1. Correct the odd appearance in Chrome, Edge, and Safari. * 2. Correct the outline style in Safari. */ -[type="search"] { +:where([type="search" i]) { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ }/** @@ -259,38 +187,15 @@ textarea { ::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ -}/** - * Remove the inner border and padding of focus outlines in Firefox. - */ -::-moz-focus-inner { - border-style: none; - padding: 0; -}/** - * Restore the focus outline styles unset by the previous rule in Firefox. - */ -:-moz-focusring { - outline: 1px dotted ButtonText; -}/** - * Remove the additional :invalid styles in Firefox. - */ -:-moz-ui-invalid { - box-shadow: none; }/* Interactive * ========================================================================== *//* - * Add the correct display in Edge 18- and IE. - */ -details { - display: block; -}/* - * Add the correct styles in Edge 18-, IE, and Safari. + * Add the correct styles in Safari. */ -dialog { +:where(dialog) { background-color: white; border: solid; color: black; - display: block; height: -moz-fit-content; - height: -webkit-fit-content; height: fit-content; left: 0; margin: auto; @@ -298,72 +203,47 @@ dialog { position: absolute; right: 0; width: -moz-fit-content; - width: -webkit-fit-content; width: fit-content; } -dialog:not([open]) { +:where(dialog:not([open])) { display: none; }/* - * Add the correct display in all browsers. + * Add the correct display in Safari. */ -summary { +:where(details > summary:first-of-type) { display: list-item; -}/* Scripting - * ========================================================================== *//** - * Add the correct display in IE. - */ -template { - display: none; -}/* User interaction - * ========================================================================== *//* - * Remove the tapping delay in IE 10. - */ -a, -area, -button, -input, -label, -select, -summary, -textarea, -[tabindex] { - -ms-touch-action: manipulation; }/* Accessibility * ========================================================================== *//** * Change the cursor on busy elements in all browsers (opinionated). */ -[aria-busy="true"] { +:where([aria-busy="true" i]) { cursor: progress; }/* * Change the cursor on control elements in all browsers (opinionated). */ -[aria-controls] { +:where([aria-controls]) { cursor: pointer; }/* * Change the cursor on disabled, not-editable, or otherwise * inoperable elements in all browsers (opinionated). */ -[aria-disabled="true"], -[disabled] { +:where([aria-disabled="true" i], [disabled]) { cursor: not-allowed; }/* * Change the display on visually hidden accessible elements * in all browsers (opinionated). */ -[aria-hidden="false"][hidden] { +:where([aria-hidden="false" i][hidden]) { display: initial; } -[aria-hidden="false"][hidden]:not(:focus) { +:where([aria-hidden="false" i][hidden]:not(:focus)) { clip: rect(0, 0, 0, 0); position: absolute; }/** * 1. Change the inconsistent appearance in all browsers (opinionated). * 2. Add typography inheritance in all browsers (opinionated). */ -button, -input, -select, -textarea { +:where(button, input, select, textarea) { background-color: transparent; /* 1 */ border: 1px solid WindowFrame; /* 1 */ color: inherit; /* 1 */ @@ -373,44 +253,17 @@ textarea { }/** * Change the inconsistent appearance in all browsers (opinionated). */ -select { - -moz-appearance: none; - -webkit-appearance: none; - background: no-repeat right center / 1em; +:where(select) { + appearance: none; + background: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='4'%3E%3Cpath d='M4 0h6L7 4'/%3E%3C/svg%3E") no-repeat right center / 1em; border-radius: 0; padding-right: 1em; -}/** - * Change the inconsistent appearance in all browsers (opinionated). - */ -select:not([multiple]):not([size]) { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='4'%3E%3Cpath d='M4 0h6L7 4'/%3E%3C/svg%3E"); }/** * Remove the border and padding in all browsers (opinionated). */ -[type="color"], -[type="range"] { +:where([type="color" i], [type="range" i]) { border-width: 0; padding: 0; -}/** - * Change the inconsistent appearance in IE (opinionated). - */ -::-ms-expand { - display: none; -}/** - * Correct the inconsistent appearance in IE (opinionated). - */ -:-ms-input-placeholder { - color: rgba(0, 0, 0, 0.54); -}/** - * Use a comfortable measure in all browsers (opinionated). - */ -html { - padding: 1em; -} -@media (min-width: 34em) { - html { - padding: 1em calc(50% - 16em); - } }/** * Use the default user interface font in all browsers (opinionated). */ @@ -436,6 +289,7 @@ kbd, samp, pre { font-family: + ui-monospace, /* macOS 10.10+ */ "Menlo", /* Windows 6+ */ "Consolas", /* Android 4+ */ "Roboto Mono", diff --git a/test/import-sanitize-forms.expect.css b/test/import-sanitize-forms.expect.css index 9cd29aa..34c25e9 100644 --- a/test/import-sanitize-forms.expect.css +++ b/test/import-sanitize-forms.expect.css @@ -1,11 +1,12 @@ /* Document * ========================================================================== *//** - * Add border box sizing in all browsers (opinionated). + * 1. Add border box sizing in all browsers (opinionated). + * 2. Backgrounds do not repeat by default (opinionated). */ *, ::before, ::after { - box-sizing: border-box; + box-sizing: border-box; /* 1 */ }/** * 1. Add text decoration inheritance in all browsers (opinionated). * 2. Add vertical alignment inheritance in all browsers (opinionated). @@ -17,148 +18,113 @@ }/** * 1. Use the default cursor in all browsers (opinionated). * 2. Change the line height in all browsers (opinionated). - * 3. Use a 4-space tab width in all browsers (opinionated). - * 4. Remove the grey highlight on links in iOS (opinionated). - * 5. Prevent adjustments of font size after orientation changes in - * IE on Windows Phone and in iOS. - * 6. Breaks words to prevent overflow in all browsers (opinionated). + * 3. Breaks words to prevent overflow in all browsers (opinionated). + * 4. Use a 4-space tab width in all browsers (opinionated). + * 5. Remove the grey highlight on links in iOS (opinionated). + * 6. Prevent adjustments of font size after orientation changes in iOS. */ -html { +:where(:root) { cursor: default; /* 1 */ line-height: 1.5; /* 2 */ - -moz-tab-size: 4; /* 3 */ - tab-size: 4; /* 3 */ - -webkit-tap-highlight-color: transparent /* 4 */; - -ms-text-size-adjust: 100%; /* 5 */ - -webkit-text-size-adjust: 100%; /* 5 */ - word-break: break-word; /* 6 */ + overflow-wrap: break-word; /* 3 */ + -moz-tab-size: 4; /* 4 */ + tab-size: 4; /* 4 */ + -webkit-tap-highlight-color: transparent; /* 5 */ + -webkit-text-size-adjust: 100%; /* 6 */ }/* Sections * ========================================================================== *//** * Remove the margin in all browsers (opinionated). */ -body { +:where(body) { margin: 0; }/** * Correct the font size and margin on `h1` elements within `section` and * `article` contexts in Chrome, Edge, Firefox, and Safari. */ -h1 { +:where(h1) { font-size: 2em; margin: 0.67em 0; }/* Grouping content * ========================================================================== *//** - * Remove the margin on nested lists in Chrome, Edge, IE, and Safari. + * Remove the margin on nested lists in Chrome, Edge, and Safari. */ -dl dl, -dl ol, -dl ul, -ol dl, -ul dl { - margin: 0; -}/** - * Remove the margin on nested lists in Edge 18- and IE. - */ -ol ol, -ol ul, -ul ol, -ul ul { +:where(dl, ol, ul) :where(dl, ol, ul) { margin: 0; }/** * 1. Correct the inheritance of border color in Firefox. * 2. Add the correct box sizing in Firefox. - * 3. Show the overflow in Edge 18- and IE. */ -hr { +:where(hr) { color: inherit; /* 1 */ height: 0; /* 2 */ - overflow: visible; /* 3 */ -}/** - * Add the correct display in IE. - */ -main { - display: block; }/** * Remove the list style on navigation lists in all browsers (opinionated). */ -nav ol, -nav ul { - list-style: none; +:where(nav) :where(ol, ul) { + list-style-type: none; padding: 0; }/** * Prevent VoiceOver from ignoring list semantics in Safari (opinionated). */ -nav li::before { +:where(nav li)::before { content: "\200B"; + float: left; }/** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. * 3. Prevent overflow of the container in all browsers (opinionated). */ -pre { +:where(pre) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ overflow: auto; /* 3 */ - -ms-overflow-style: scrollbar; /* 3 */ }/* Text-level semantics * ========================================================================== *//** - * Add the correct text decoration in Edge 18-, IE, and Safari. + * Add the correct text decoration in Safari. */ -abbr[title] { +:where(abbr[title]) { text-decoration: underline; text-decoration: underline dotted; }/** * Add the correct font weight in Chrome, Edge, and Safari. */ -b, -strong { +:where(b, strong) { font-weight: bolder; }/** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. */ -code, -kbd, -samp { +:where(code, kbd, samp) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ }/** * Add the correct font size in all browsers. */ -small { +:where(small) { font-size: 80%; }/* Embedded content * ========================================================================== *//* * Change the alignment on media elements in all browsers (opinionated). */ -audio, -canvas, -iframe, -img, -svg, -video { +:where(audio, canvas, iframe, img, svg, video) { vertical-align: middle; }/** * Remove the border on iframes in all browsers (opinionated). */ -iframe { +:where(iframe) { border-style: none; }/** * Change the fill color to match the text color in all browsers (opinionated). */ -svg:not([fill]) { +:where(svg:not([fill])) { fill: currentColor; -}/** - * Hide the overflow in IE. - */ -svg:not(:root) { - overflow: hidden; }/* Tabular data * ========================================================================== *//** * 1. Collapse border spacing in all browsers (opinionated). * 2. Correct table border color inheritance in all Chrome, Edge, and Safari. * 3. Remove text indentation from table contents in Chrome, Edge, and Safari. */ -table { +:where(table) { border-collapse: collapse; /* 1 */ border-color: inherit; /* 2 */ text-indent: 0; /* 3 */ @@ -166,73 +132,35 @@ table { * ========================================================================== *//** * Remove the margin on controls in Safari. */ -button, -input, -select { +:where(button, input, select) { margin: 0; -}/** - * 1. Show the overflow in IE. - * 2. Remove the inheritance of text transform in Edge 18-, Firefox, and IE. - */ -button { - overflow: visible; /* 1 */ - text-transform: none; /* 2 */ }/** * Correct the inability to style buttons in iOS and Safari. */ -button, -[type="button"], -[type="reset"], -[type="submit"] { +:where(button, [type="button" i], [type="reset" i], [type="submit" i]) { -webkit-appearance: button; }/** - * 1. Change the inconsistent appearance in all browsers (opinionated). - * 2. Correct the padding in Firefox. - */ -fieldset { - border: 1px solid #a0a0a0; /* 1 */ - padding: 0.35em 0.75em 0.625em; /* 2 */ -}/** - * Show the overflow in Edge 18- and IE. - */ -input { - overflow: visible; -}/** - * 1. Correct the text wrapping in Edge 18- and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - */ -legend { - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - white-space: normal; /* 1 */ -}/** - * 1. Add the correct display in Edge 18- and IE. - * 2. Add the correct vertical alignment in Chrome, Edge, and Firefox. + * Change the inconsistent appearance in all browsers (opinionated). */ -progress { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ +:where(fieldset) { + border: 1px solid #a0a0a0; }/** - * Remove the inheritance of text transform in Firefox. + * Add the correct vertical alignment in Chrome, Edge, and Firefox. */ -select { - text-transform: none; +:where(progress) { + vertical-align: baseline; }/** * 1. Remove the margin in Firefox and Safari. - * 2. Remove the default vertical scrollbar in IE. * 3. Change the resize direction in all browsers (opinionated). */ -textarea { +:where(textarea) { margin: 0; /* 1 */ - overflow: auto; /* 2 */ resize: vertical; /* 3 */ - resize: block; /* 3 */ }/** * 1. Correct the odd appearance in Chrome, Edge, and Safari. * 2. Correct the outline style in Safari. */ -[type="search"] { +:where([type="search" i]) { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ }/** @@ -259,38 +187,15 @@ textarea { ::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ -}/** - * Remove the inner border and padding of focus outlines in Firefox. - */ -::-moz-focus-inner { - border-style: none; - padding: 0; -}/** - * Restore the focus outline styles unset by the previous rule in Firefox. - */ -:-moz-focusring { - outline: 1px dotted ButtonText; -}/** - * Remove the additional :invalid styles in Firefox. - */ -:-moz-ui-invalid { - box-shadow: none; }/* Interactive * ========================================================================== *//* - * Add the correct display in Edge 18- and IE. - */ -details { - display: block; -}/* - * Add the correct styles in Edge 18-, IE, and Safari. + * Add the correct styles in Safari. */ -dialog { +:where(dialog) { background-color: white; border: solid; color: black; - display: block; height: -moz-fit-content; - height: -webkit-fit-content; height: fit-content; left: 0; margin: auto; @@ -298,72 +203,47 @@ dialog { position: absolute; right: 0; width: -moz-fit-content; - width: -webkit-fit-content; width: fit-content; } -dialog:not([open]) { +:where(dialog:not([open])) { display: none; }/* - * Add the correct display in all browsers. + * Add the correct display in Safari. */ -summary { +:where(details > summary:first-of-type) { display: list-item; -}/* Scripting - * ========================================================================== *//** - * Add the correct display in IE. - */ -template { - display: none; -}/* User interaction - * ========================================================================== *//* - * Remove the tapping delay in IE 10. - */ -a, -area, -button, -input, -label, -select, -summary, -textarea, -[tabindex] { - -ms-touch-action: manipulation; }/* Accessibility * ========================================================================== *//** * Change the cursor on busy elements in all browsers (opinionated). */ -[aria-busy="true"] { +:where([aria-busy="true" i]) { cursor: progress; }/* * Change the cursor on control elements in all browsers (opinionated). */ -[aria-controls] { +:where([aria-controls]) { cursor: pointer; }/* * Change the cursor on disabled, not-editable, or otherwise * inoperable elements in all browsers (opinionated). */ -[aria-disabled="true"], -[disabled] { +:where([aria-disabled="true" i], [disabled]) { cursor: not-allowed; }/* * Change the display on visually hidden accessible elements * in all browsers (opinionated). */ -[aria-hidden="false"][hidden] { +:where([aria-hidden="false" i][hidden]) { display: initial; } -[aria-hidden="false"][hidden]:not(:focus) { +:where([aria-hidden="false" i][hidden]:not(:focus)) { clip: rect(0, 0, 0, 0); position: absolute; }/** * 1. Change the inconsistent appearance in all browsers (opinionated). * 2. Add typography inheritance in all browsers (opinionated). */ -button, -input, -select, -textarea { +:where(button, input, select, textarea) { background-color: transparent; /* 1 */ border: 1px solid WindowFrame; /* 1 */ color: inherit; /* 1 */ @@ -373,32 +253,15 @@ textarea { }/** * Change the inconsistent appearance in all browsers (opinionated). */ -select { - -moz-appearance: none; - -webkit-appearance: none; - background: no-repeat right center / 1em; +:where(select) { + appearance: none; + background: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='4'%3E%3Cpath d='M4 0h6L7 4'/%3E%3C/svg%3E") no-repeat right center / 1em; border-radius: 0; padding-right: 1em; -}/** - * Change the inconsistent appearance in all browsers (opinionated). - */ -select:not([multiple]):not([size]) { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='4'%3E%3Cpath d='M4 0h6L7 4'/%3E%3C/svg%3E"); }/** * Remove the border and padding in all browsers (opinionated). */ -[type="color"], -[type="range"] { +:where([type="color" i], [type="range" i]) { border-width: 0; padding: 0; -}/** - * Change the inconsistent appearance in IE (opinionated). - */ -::-ms-expand { - display: none; -}/** - * Correct the inconsistent appearance in IE (opinionated). - */ -:-ms-input-placeholder { - color: rgba(0, 0, 0, 0.54); } diff --git a/test/sanitize.expect.css b/test/sanitize.expect.css index 6f4b479..a0deeb3 100644 --- a/test/sanitize.expect.css +++ b/test/sanitize.expect.css @@ -2,13 +2,14 @@ * ========================================================================== */ /** - * Add border box sizing in all browsers (opinionated). + * 1. Add border box sizing in all browsers (opinionated). + * 2. Backgrounds do not repeat by default (opinionated). */ *, ::before, ::after { - box-sizing: border-box; + box-sizing: border-box; /* 1 */ } /** @@ -25,22 +26,20 @@ /** * 1. Use the default cursor in all browsers (opinionated). * 2. Change the line height in all browsers (opinionated). - * 3. Use a 4-space tab width in all browsers (opinionated). - * 4. Remove the grey highlight on links in iOS (opinionated). - * 5. Prevent adjustments of font size after orientation changes in - * IE on Windows Phone and in iOS. - * 6. Breaks words to prevent overflow in all browsers (opinionated). + * 3. Breaks words to prevent overflow in all browsers (opinionated). + * 4. Use a 4-space tab width in all browsers (opinionated). + * 5. Remove the grey highlight on links in iOS (opinionated). + * 6. Prevent adjustments of font size after orientation changes in iOS. */ -html { +:where(:root) { cursor: default; /* 1 */ line-height: 1.5; /* 2 */ - -moz-tab-size: 4; /* 3 */ - tab-size: 4; /* 3 */ - -webkit-tap-highlight-color: transparent /* 4 */; - -ms-text-size-adjust: 100%; /* 5 */ - -webkit-text-size-adjust: 100%; /* 5 */ - word-break: break-word; /* 6 */ + overflow-wrap: break-word; /* 3 */ + -moz-tab-size: 4; /* 4 */ + tab-size: 4; /* 4 */ + -webkit-tap-highlight-color: transparent; /* 5 */ + -webkit-text-size-adjust: 100%; /* 6 */ } /* Sections @@ -50,7 +49,7 @@ html { * Remove the margin in all browsers (opinionated). */ -body { +:where(body) { margin: 0; } @@ -59,7 +58,7 @@ body { * `article` contexts in Chrome, Edge, Firefox, and Safari. */ -h1 { +:where(h1) { font-size: 2em; margin: 0.67em 0; } @@ -68,55 +67,29 @@ h1 { * ========================================================================== */ /** - * Remove the margin on nested lists in Chrome, Edge, IE, and Safari. - */ - -dl dl, -dl ol, -dl ul, -ol dl, -ul dl { - margin: 0; -} - -/** - * Remove the margin on nested lists in Edge 18- and IE. + * Remove the margin on nested lists in Chrome, Edge, and Safari. */ -ol ol, -ol ul, -ul ol, -ul ul { +:where(dl, ol, ul) :where(dl, ol, ul) { margin: 0; } /** * 1. Correct the inheritance of border color in Firefox. * 2. Add the correct box sizing in Firefox. - * 3. Show the overflow in Edge 18- and IE. */ -hr { +:where(hr) { color: inherit; /* 1 */ height: 0; /* 2 */ - overflow: visible; /* 3 */ -} - -/** - * Add the correct display in IE. - */ - -main { - display: block; } /** * Remove the list style on navigation lists in all browsers (opinionated). */ -nav ol, -nav ul { - list-style: none; +:where(nav) :where(ol, ul) { + list-style-type: none; padding: 0; } @@ -124,8 +97,9 @@ nav ul { * Prevent VoiceOver from ignoring list semantics in Safari (opinionated). */ -nav li::before { +:where(nav li)::before { content: "\200B"; + float: left; } /** @@ -134,21 +108,20 @@ nav li::before { * 3. Prevent overflow of the container in all browsers (opinionated). */ -pre { +:where(pre) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ overflow: auto; /* 3 */ - -ms-overflow-style: scrollbar; /* 3 */ } /* Text-level semantics * ========================================================================== */ /** - * Add the correct text decoration in Edge 18-, IE, and Safari. + * Add the correct text decoration in Safari. */ -abbr[title] { +:where(abbr[title]) { text-decoration: underline; text-decoration: underline dotted; } @@ -157,8 +130,7 @@ abbr[title] { * Add the correct font weight in Chrome, Edge, and Safari. */ -b, -strong { +:where(b, strong) { font-weight: bolder; } @@ -167,9 +139,7 @@ strong { * 2. Correct the odd `em` font sizing in all browsers. */ -code, -kbd, -samp { +:where(code, kbd, samp) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } @@ -178,7 +148,7 @@ samp { * Add the correct font size in all browsers. */ -small { +:where(small) { font-size: 80%; } @@ -189,12 +159,7 @@ small { * Change the alignment on media elements in all browsers (opinionated). */ -audio, -canvas, -iframe, -img, -svg, -video { +:where(audio, canvas, iframe, img, svg, video) { vertical-align: middle; } @@ -202,7 +167,7 @@ video { * Remove the border on iframes in all browsers (opinionated). */ -iframe { +:where(iframe) { border-style: none; } @@ -210,18 +175,10 @@ iframe { * Change the fill color to match the text color in all browsers (opinionated). */ -svg:not([fill]) { +:where(svg:not([fill])) { fill: currentColor; } -/** - * Hide the overflow in IE. - */ - -svg:not(:root) { - overflow: hidden; -} - /* Tabular data * ========================================================================== */ @@ -231,7 +188,7 @@ svg:not(:root) { * 3. Remove text indentation from table contents in Chrome, Edge, and Safari. */ -table { +:where(table) { border-collapse: collapse; /* 1 */ border-color: inherit; /* 2 */ text-indent: 0; /* 3 */ @@ -244,92 +201,42 @@ table { * Remove the margin on controls in Safari. */ -button, -input, -select { +:where(button, input, select) { margin: 0; } -/** - * 1. Show the overflow in IE. - * 2. Remove the inheritance of text transform in Edge 18-, Firefox, and IE. - */ - -button { - overflow: visible; /* 1 */ - text-transform: none; /* 2 */ -} - /** * Correct the inability to style buttons in iOS and Safari. */ -button, -[type="button"], -[type="reset"], -[type="submit"] { +:where(button, [type="button" i], [type="reset" i], [type="submit" i]) { -webkit-appearance: button; } /** - * 1. Change the inconsistent appearance in all browsers (opinionated). - * 2. Correct the padding in Firefox. - */ - -fieldset { - border: 1px solid #a0a0a0; /* 1 */ - padding: 0.35em 0.75em 0.625em; /* 2 */ -} - -/** - * Show the overflow in Edge 18- and IE. - */ - -input { - overflow: visible; -} - -/** - * 1. Correct the text wrapping in Edge 18- and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - */ - -legend { - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - white-space: normal; /* 1 */ -} - -/** - * 1. Add the correct display in Edge 18- and IE. - * 2. Add the correct vertical alignment in Chrome, Edge, and Firefox. + * Change the inconsistent appearance in all browsers (opinionated). */ -progress { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ +:where(fieldset) { + border: 1px solid #a0a0a0; } /** - * Remove the inheritance of text transform in Firefox. + * Add the correct vertical alignment in Chrome, Edge, and Firefox. */ -select { - text-transform: none; +:where(progress) { + vertical-align: baseline; } /** * 1. Remove the margin in Firefox and Safari. - * 2. Remove the default vertical scrollbar in IE. * 3. Change the resize direction in all browsers (opinionated). */ -textarea { +:where(textarea) { margin: 0; /* 1 */ - overflow: auto; /* 2 */ resize: vertical; /* 3 */ - resize: block; /* 3 */ } /** @@ -337,7 +244,7 @@ textarea { * 2. Correct the outline style in Safari. */ -[type="search"] { +:where([type="search" i]) { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } @@ -378,53 +285,18 @@ textarea { font: inherit; /* 2 */ } -/** - * Remove the inner border and padding of focus outlines in Firefox. - */ - -::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus outline styles unset by the previous rule in Firefox. - */ - -:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Remove the additional :invalid styles in Firefox. - */ - -:-moz-ui-invalid { - box-shadow: none; -} - /* Interactive * ========================================================================== */ /* - * Add the correct display in Edge 18- and IE. + * Add the correct styles in Safari. */ -details { - display: block; -} - -/* - * Add the correct styles in Edge 18-, IE, and Safari. - */ - -dialog { +:where(dialog) { background-color: white; border: solid; color: black; - display: block; height: -moz-fit-content; - height: -webkit-fit-content; height: fit-content; left: 0; margin: auto; @@ -432,52 +304,21 @@ dialog { position: absolute; right: 0; width: -moz-fit-content; - width: -webkit-fit-content; width: fit-content; } -dialog:not([open]) { +:where(dialog:not([open])) { display: none; } /* - * Add the correct display in all browsers. + * Add the correct display in Safari. */ -summary { +:where(details > summary:first-of-type) { display: list-item; } -/* Scripting - * ========================================================================== */ - -/** - * Add the correct display in IE. - */ - -template { - display: none; -} - -/* User interaction - * ========================================================================== */ - -/* - * Remove the tapping delay in IE 10. - */ - -a, -area, -button, -input, -label, -select, -summary, -textarea, -[tabindex] { - -ms-touch-action: manipulation; -} - /* Accessibility * ========================================================================== */ @@ -485,7 +326,7 @@ textarea, * Change the cursor on busy elements in all browsers (opinionated). */ -[aria-busy="true"] { +:where([aria-busy="true" i]) { cursor: progress; } @@ -493,7 +334,7 @@ textarea, * Change the cursor on control elements in all browsers (opinionated). */ -[aria-controls] { +:where([aria-controls]) { cursor: pointer; } @@ -502,8 +343,7 @@ textarea, * inoperable elements in all browsers (opinionated). */ -[aria-disabled="true"], -[disabled] { +:where([aria-disabled="true" i], [disabled]) { cursor: not-allowed; } @@ -512,11 +352,11 @@ textarea, * in all browsers (opinionated). */ -[aria-hidden="false"][hidden] { +:where([aria-hidden="false" i][hidden]) { display: initial; } -[aria-hidden="false"][hidden]:not(:focus) { +:where([aria-hidden="false" i][hidden]:not(:focus)) { clip: rect(0, 0, 0, 0); position: absolute; }