@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));
  --muted: 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: light-dark(#{$border-light-color}, var(--dark-mode-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};

  --fill-primary: #{$fill-primary};
  --fill-secondary: #{$fill-secondary};
  --fill-tertiary: #{$fill-tertiary};
  --fill-quaternary: #{$fill-quaternary};
  --fill: var(--fill-primary);

  --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};
  --dark-mode-border-light-color: #{$border-light-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};
  }
}
