border-bottom-width: var(--card-border-width);
}
- &:not(:first-child):not(:last-child) {
+ &:not(:first-child, :last-child) {
border-block-end-width: var(--card-border-width);
}
}
border-inline-end-width: var(--card-border-width);
}
- &:not(:first-child):not(:last-child) {
+ &:not(:first-child, :last-child) {
border-inline-end-width: var(--card-border-width);
}
}
// intentional show/hide actions animate.
// stylelint-disable-next-line no-duplicate-selectors
.navbar {
- [class*="drawer"]:not([open]):not(.hiding) {
+ [class*="drawer"]:not([open], .hiding) {
@include transition(none !important);
}
}
}
// Reset rounded corners
- > [class*="btn-"]:not(:last-child):not(:has(+ .menu)),
+ > [class*="btn-"]:not(:last-child, :has(+ .menu)),
> .btn-group:not(:last-child) > [class*="btn-"] {
@include border-end-radius(0);
}
}
// Reset rounded corners
- > [class*="btn-"]:not(:last-child):not(:has(+ .menu)),
+ > [class*="btn-"]:not(:last-child, :has(+ .menu)),
> .btn-group:not(:last-child) > [class*="btn-"] {
@include border-bottom-radius(0);
}
margin-block: 0;
}
- :where(ul, ol):not([class]):not(:where(.not-prose, .not-prose *)) li:not(:last-child) {
+ :where(ul, ol):not([class], :where(.not-prose, .not-prose *)) li:not(:last-child) {
margin-bottom: calc(var(--content-gap) / 4);
}
border-block-start: var(--border-width) solid var(--hr-border-color);
}
- :where(h1, h2, h3, h4, h5, h6):not([class]):not(:where(.not-prose, .not-prose *)) {
+ :where(h1, h2, h3, h4, h5, h6):not([class], :where(.not-prose, .not-prose *)) {
margin-top: 0;
margin-bottom: calc(var(--content-gap) / -2);
font-weight: 500;
}
}
- :where(h1, h2):not(:first-child):not(:where(.not-prose, .not-prose *)) {
+ :where(h1, h2):not(:first-child, :where(.not-prose, .not-prose *)) {
margin-top: calc(var(--content-gap) * .75);
}
- :where(h3, h4, h5, h6):not(:first-child):not(:where(.not-prose, .not-prose *)) {
+ :where(h3, h4, h5, h6):not(:first-child, :where(.not-prose, .not-prose *)) {
margin-top: calc(var(--content-gap) * .5);
}
// causes specificity issues in many other styles that are too complex to fix.
// See https://github.com/twbs/bootstrap/issues/19402
- a:not([href]):not([class]) {
+ a:not([href], [class]) {
&,
&:hover {
color: inherit;
// Remove the dropdown arrow only from text type inputs built with datalists in Chrome.
// See https://stackoverflow.com/a/54997118
- [list]:not([type="date"]):not([type="datetime-local"]):not([type="month"]):not([type="week"]):not([type="time"])::-webkit-calendar-picker-indicator {
+ [list]:not([type="date"], [type="datetime-local"], [type="month"], [type="week"], [type="time"])::-webkit-calendar-picker-indicator {
display: none !important;
}
&[type="file"] {
overflow: hidden; // prevent pseudo element button overlap
- &:not(:disabled):not([readonly]) {
+ &:not(:disabled, [readonly]) {
cursor: pointer;
}
}
@include transition(var(--control-transition));
}
- &:hover:not(:disabled):not([readonly])::file-selector-button {
+ &:hover:not(:disabled, [readonly])::file-selector-button {
background-color: var(--control-action-hover-bg);
}
}
width: var(--control-min-height);
padding: var(--control-padding-y);
- &:not(:disabled):not([readonly]) {
+ &:not(:disabled, [readonly]) {
cursor: pointer;
}
$validation-messages: "";
&:not(.has-validation) {
- > :not(:last-child):not(.menu-toggle-split):not(.menu):not(.form-floating),
+ > :not(:last-child, .menu-toggle-split, .menu, .form-floating),
> .menu-toggle-split:nth-last-child(n + 3),
> .form-floating:not(:last-child) > .form-control,
> .form-floating:not(:last-child) > .form-select {
}
&.has-validation {
- > :nth-last-child(n + 3):not(.menu-toggle-split):not(.menu):not(.form-floating),
+ > :nth-last-child(n + 3):not(.menu-toggle-split, .menu, .form-floating),
> .menu-toggle-split:nth-last-child(n + 4),
> .form-floating:nth-last-child(n + 3) > .form-control,
> .form-floating:nth-last-child(n + 3) > .form-select {
}
}
- > :not(:first-child):not(.menu)#{$validation-messages} {
+ > :not(:first-child, .menu)#{$validation-messages} {
margin-inline-start: calc(-1 * var(--border-width));
@include border-start-radius(0);
}
@layer helpers {
.visually-hidden,
- .visually-hidden-focusable:not(:focus):not(:focus-within) {
+ .visually-hidden-focusable:not(:focus, :focus-within) {
@include visually-hidden();
}
}
border-color: $border-color;
@if $enable-validation-icons {
- &:not([multiple]):not([size]),
+ &:not([multiple], [size]),
&:not([multiple])[size="1"] {
--form-select-bg-icon: #{escape-svg($icon)};
padding-inline-end: $form-select-feedback-icon-padding-end;
// Useful for "Skip to main content" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html
@mixin visually-hidden-focusable() {
- &:not(:focus):not(:focus-within) {
+ &:not(:focus, :focus-within) {
@include visually-hidden();
}
}
reportInvalidScopeDisables: true,
reportNeedlessDisables: true,
rules: {
+ 'selector-not-notation': 'complex',
'selector-class-pattern': [
'^([a-z][a-z0-9]*(-[a-z0-9]+)*:)?([a-z][a-z0-9]*)(-[a-z0-9]+)*$',
{ message: 'Expected class selector "%s" to be kebab-case (with optional breakpoint prefix)' }