@use '../config' as *; :root, :host { // No fixed root font-size: rem sizing must track the user's browser preference (WCAG 1.4.4) height: 100%; } :root, :host, [data-bs-theme='light'], [data-theme='light'] { color-scheme: light; --spacer: var(--spacer-2); --bg-surface: light-dark(var(--bg-surface-primary), var(--gray-800)); --bg-surface-primary: var(--white); --bg-surface-secondary: light-dark(var(--gray-50), var(--gray-900)); // Translucent, so a card header or footer, a table stripe or an input-group // addon stands out from whatever surface it sits on, in both color modes // (an opaque gray-800 was invisible on a dark card). --bg-surface-tertiary: light-dark(#{color-transparent(var(--body-color), 0.025)}, #{color-transparent(var(--body-color), 0.04)}); --bg-surface-dark: var(--gray-900); --bg-surface-inverted: light-dark(var(--gray-900), var(--gray-100)); --bg-forms: light-dark(var(--bg-surface), var(--gray-900)); // Dark: translucent, like the tertiary surface, so a disabled control on a card is not the card's own gray. --bg-forms-disabled: light-dark(var(--bg-surface-secondary), #{color-transparent(var(--body-color), 0.04)}); --text-inverted: light-dark(var(--gray-100), var(--gray-800)); --body-color: light-dark(var(--gray-700), var(--gray-200)); --body-bg: light-dark(var(--bg-surface-secondary), var(--gray-900)); // Dark mode tints the primary towards white, so links keep a 4.5:1 contrast // on the dark surfaces. Hover shades the link in light mode and tints it in dark. --link-color: light-dark(var(--primary), #{mix-color-css(var(--white), var(--primary), 40%)}); --link-hover-color: light-dark(#{mix-color-css(var(--black), var(--link-color), 20%)}, #{mix-color-css(var(--white), var(--link-color), 20%)}); --secondary: light-dark(var(--gray-500), var(--gray-400)); --tertiary: light-dark(var(--gray-500), var(--gray-400)); --border-color: light-dark(#{$border-color}, var(--gray-700)); --border-color-translucent: light-dark(#{$border-color-translucent}, var(--dark-mode-border-color-translucent)); --border-dark-color: light-dark(#{$border-dark-color}, var(--dark-mode-border-dark-color)); --border-dark-color-translucent: #{$border-dark-color-translucent}; --border-light-color: #{$border-light-color}; --border-light-color-translucent: #{$border-light-color-translucent}; --border-active-color: light-dark(#{$border-active-color}, var(--dark-mode-border-active-color)); --border-active-color-translucent: #{$border-active-color-translucent}; --icon-color: #{$icon-color}; --active-bg: #{$active-bg}; --hover-bg: #{$hover-bg}; --disabled-bg: #{$disabled-bg}; // $disabled-color already derives from var(--body-color) at compute time, so it // adapts to dark mode on its own — no light-dark() or dark-block override needed. --disabled-color: #{$disabled-color}; --code-color: #{$code-color}; --code-bg: #{$code-bg}; --dark-mode-border-color: #{$border-color-dark}; --dark-mode-border-color-translucent: #{$border-color-translucent-dark}; --dark-mode-border-active-color: #{$border-active-color-dark}; --dark-mode-border-dark-color: #{$border-dark-color-dark}; --page-padding: #{$page-padding}; --page-padding-y: #{$page-padding-y}; --sidebar-width: #{$sidebar-width}; --sidebar-folded-width: #{$sidebar-folded-width}; @include media-breakpoint-down($cards-grid-breakpoint) { --page-padding: #{$page-padding-sm}; } }