/* Generated by frontend/build_styles.py; edit frontend/styles/. */

/* Source: tokens/palette.css */
/* Color source of truth. Component files consume tokens, never redefine palettes. */
:root,
html[data-theme="light"] {
  color-scheme: light;
  --ui-bg: #f8f9fa;
  --ui-surface: #fff;
  --ui-surface-secondary: #f1f3f5;
  --ui-muted: #596575;
  --ui-text: #212529;
  --ui-border: #adb5bd;
  --ui-accent: #0d6efd;
  --ui-control-border: #adb5bd;
  --ui-shadow-panel: #0002;
  --ui-shadow-tab: #0001;
  --ui-on-solid: #fff;
  /* Shared Markdown tables, decorative assets, and reward effects. */
  --ui-table-line: #dee2e6;
  --ui-chip-bg: #e9ecef;
  --ui-chip-border: #ced4da;
  --ui-shadow-opaque: #000;
  --ui-shadow-medium: rgba(0, 0, 0, 0.2);
  --ui-gift-coral: #ff6b6b;
  --ui-gift-teal: #4ecdc4;
  --ui-gift-blue: #45b7d1;
  --ui-gift-green: #96c93d;
  --ui-gift-yellow: #ffd93d;
  --ui-gift-peach: #ff8e72;
  --ui-shadow-strong: rgba(0, 0, 0, 0.3);
  --ui-shadow-hover: rgba(0, 0, 0, 0.25);
  --ui-celebration-surface: rgba(255, 255, 255, 0.95);
  --ui-shadow-soft: rgba(0, 0, 0, 0.1);
  --ui-gift-glow: rgba(255, 123, 0, 0.4);
  --ui-gift-gold: #ffd700;
  /* Content administration light palette. Dark adapters use the shared UI roles. */
  --admin-ink: #20354b;
  --admin-line: #dbe3ea;
  --admin-paper: #f4f7fa;
  --admin-surface: #fff;
  --admin-muted: #596b7b;
  --admin-switch-off: #748393;
  --admin-shadow-switch: #0003;
  --admin-switch-on: #23734e;
  --admin-shadow-toast: #20354b20;
  --admin-status-text: #287051;
  --admin-danger: #a42c37;
  --admin-status-idle: #8a97a3;
  --admin-success: #198754;
  --admin-paper-end: #f8f7f2;
  --admin-caption: #65798c;
  --admin-status-border: #cadbd5;
  --admin-kind: #6c8196;
  --admin-link-hover: #1b638b;
  --admin-row: #f6f8fa;
  --admin-icon: #496077;
  --admin-hover: #eaf1f7;
  --admin-draft-text: #875a12;
  --admin-draft-bg: #fff2d4;
  --admin-published-text: #236147;
  --admin-published-bg: #e1f2e9;
  --admin-control-border: #ccd7e0;
  --admin-focus: #9fc6e4;
  --admin-selection-bg: #f7f9fb;
  --admin-segmented-bg: #eef2f6;
  --admin-segmented-text: #566b7f;
  --admin-segmented-selected: #173f60;
  --admin-shadow-selected: #10233720;
  --admin-code-bg: #f1f4f7;
  --admin-legend: #687b8c;
  --admin-add-legend: #207747;
  --admin-diff-border: #d9e0e6;
  --admin-line-text: #738496;
  --admin-line-bg: #10203004;
  --admin-remove-bg: #ffedef;
  --admin-remove-text: #772a36;
  --admin-add-bg: #e8f7ed;
  --admin-add-text: #245638;
  --admin-remove-mark: #fac1c8;
  --admin-add-mark: #aee4bf;
  --admin-context-bg: #eaf1f9;
  --admin-context-text: #5d748c;
  --admin-version-border: #cbd9e5;
  --admin-version-text: #245a83;
  --admin-version-bg: #edf4fa;
  --ink: var(--admin-ink);
  --line: var(--admin-line);
  --paper: var(--admin-paper);
  /* Custom changelog categories; dark pairs are overridden below. */
  --ui-purple-fill: #6f42c1;
  --ui-on-purple: #fff;
  --ui-pink-fill: #e83e8c;
  --ui-on-pink: #fff;
  --ui-indigo-fill: #6610f2;
  --ui-on-indigo: #fff;
  --ui-teal-fill: #20c997;
  --ui-on-teal: #071014;
  --ui-orange-fill: #fd7e14;
  --ui-on-orange: #171103;
  --ui-highlight-category: rgb(111 66 193 / 10%);
  --ui-highlight-new: rgb(13 110 253 / 10%);
}

html[data-theme="dark"] {
  color-scheme: dark;
  --ui-bg: #000;
  --ui-surface: #000;
  --ui-surface-secondary: #080808;
  --ui-surface-raised: #111;
  --ui-muted: #adb5c0;
  --ui-text: #dedee3;
  --ui-border: #292b30;
  --ui-control-border: #60656e;
  --ui-accent: #8abbff;
  --ui-success: #80dfa9;
  --ui-danger: #ff9ba5;
  --ui-warning: #f6d47d;
  --ui-info: #83d9ec;
  --ui-success-bg: #082317;
  --ui-danger-bg: #300f16;
  --ui-warning-bg: #2a210b;
  --ui-info-bg: #08232b;
  --ui-blue-bg: #0b1c34;
  --ui-focus: #a7ceff;
  --ui-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23cbd5e1' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3E%3C/svg%3E");
  --ui-switch-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23adb5c0'/%3E%3C/svg%3E");
  --ui-close: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23e2e8f0' stroke-linecap='round' stroke-width='2' d='m3 3 10 10M13 3 3 13'/%3E%3C/svg%3E");
  /* Semantic fills and their paired foregrounds. */
  --ui-selection: #234f80;
  --ui-on-solid: #fff;
  --ui-accent-hover: #c0dcff;
  --ui-purple-accent: #cbb0ff;
  --ui-primary-fill: #155bc0;
  --ui-overlay: rgb(0 0 0 / 75%);
  --ui-on-gift: #081013;
  --ui-reward-fill: #5541af;
  --ui-reward-hover: #634cc7;
  --ui-success-fill: #17633d;
  --ui-danger-fill: #a6253b;
  --ui-secondary-fill: #454b55;
  --ui-orange-fill: #984117;
  --ui-on-orange: #fff3eb;
  --ui-teal-fill: #12644f;
  --ui-on-teal: #eafbf5;
  --ui-purple-fill: #604291;
  --ui-on-purple: #f5efff;
  --ui-pink-fill: #983356;
  --ui-on-pink: #fff0f5;
  --ui-indigo-fill: #4c3f97;
  --ui-on-indigo: #f2efff;
  --ui-on-info: #071014;
  --ui-badge-neutral: #25262a;
  --ui-primary-hover: #1b68d4;
  --ui-success-hover: #20794c;
  --ui-danger-hover: #bc3048;
  --ui-info-hover: #a6e7f4;
  --ui-warning-hover: #ffe2a0;
  --ui-on-warning: #171103;
  --ui-neutral-hover: #292c31;
  --ui-neutral-outline: #a2aab5;
  /* Controls and semantic borders. */
  --ui-control-hover: #25282c;
  --ui-control-mark: #8d96a3;
  --ui-control-track: #30343a;
  --ui-primary-border: #4975ab;
  --ui-info-border: #387f8d;
  --ui-success-border: #397b55;
  --ui-warning-border: #8c7233;
  --ui-danger-border: #984b59;
  /* Tables, plain code surfaces, and text selection. */
  --ui-table-active: #202733;
  --ui-table-info-stripe: #12303a;
  --ui-table-info-hover: #193d48;
  --ui-table-success-stripe: #102f20;
  --ui-table-success-hover: #163e29;
  --ui-table-danger-stripe: #3a1820;
  --ui-table-danger-hover: #48232b;
  --ui-table-warning-stripe: #342b16;
  --ui-table-warning-hover: #433920;
  --ui-code-text: #e6edf3;
  --ui-inline-code: #ffb5cf;
  --ui-mark-bg: #493b10;
  --ui-mark-text: #ffe7a3;
  --ui-code-border: #34383e;
  /* Content controls and revision diffs. */
  --ui-icon-text: #c3cfdd;
  --ui-status-idle: #99a3b0;
  --ui-switch-off: #505a68;
  --ui-switch-border: #8994a4;
  --ui-switch-on: #23734e;
  --ui-primary-subtle-hover: #142e50;
  --ui-line-gutter: rgb(255 255 255 / 4%);
  --ui-diff-remove-text: #ffc2c8;
  --ui-diff-add-text: #b4edc7;
  --ui-diff-remove-mark: #702739;
  --ui-diff-add-mark: #225c37;
  --ui-control-icon: #cbd5e1;
  --ui-focus-shadow: rgb(138 187 255 / 30%);
  /* content-admin.css and Bootstrap 5.1 do not have native dark mode. */
  --ink: var(--ui-text);
  --line: var(--ui-border);
  --paper: var(--ui-bg);
  --bs-body-bg: var(--ui-bg);
  --bs-body-color: var(--ui-text);
  --ui-scrollbar: #656a73;
}

/* Source: tokens/layout.css */
/* Shared display drawer geometry. Breakpoints remain next to responsive rules. */
:root {
  --ui-drawer-width: 300px;
  --ui-drawer-clearance: 48px;
  --ui-drawer-tab-width: 42px;
  --ui-drawer-layer: 1040;
  --ui-drawer-duration: 0.18s;
}

/* Source: components/display-options.css */
.display-options {
  position: fixed;
  z-index: var(--ui-drawer-layer);
  top: 0;
  right: 0;
  height: 100vh;
  height: 100dvh;
  width: min(var(--ui-drawer-width), calc(100vw - var(--ui-drawer-clearance)));
  transform: translateX(100%);
  transition: transform var(--ui-drawer-duration) ease-out;
  color: var(--ui-text);
}
.display-options[data-open="true"] {
  transform: translateX(0);
}
.display-options-panel {
  height: 100%;
  padding: 22px 20px max(22px, env(safe-area-inset-bottom));
  overflow-y: auto;
  overscroll-behavior: contain;
  background: var(--ui-surface);
  border-left: 1px solid var(--ui-border);
  box-shadow: -8px 0 30px var(--ui-shadow-panel);
  visibility: hidden;
}
.display-options[data-open="true"] .display-options-panel {
  visibility: visible;
}
.display-options-toggle {
  position: absolute;
  top: max(16px, env(safe-area-inset-top));
  left: calc(-1 * var(--ui-drawer-tab-width));
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--ui-drawer-tab-width);
  height: 44px;
  padding: 0;
  border: 1px solid var(--ui-border);
  border-right: 0;
  border-radius: 12px 0 0 12px;
  background: var(--ui-surface);
  color: var(--ui-accent);
  cursor: pointer;
  box-shadow: -3px 2px 8px var(--ui-shadow-tab);
}
.display-options-toggle svg circle {
  fill: var(--ui-surface);
}
.display-options-toggle:hover {
  color: var(--ui-text);
}
.display-options h2 {
  font-size: 0.95rem;
  font-weight: 650;
  line-height: 1.4;
  margin: 0 0 22px;
}
.display-options h3 {
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--ui-muted);
  margin: 0 0 16px;
}
.display-options label {
  display: block;
  font-size: 0.78rem;
  color: var(--ui-muted);
  margin: 0 0 6px;
}
.display-options select {
  display: block;
  width: 100%;
  border: 1px solid var(--ui-control-border);
  border-radius: 6px;
  background-color: var(--ui-surface);
  color: var(--ui-text);
  padding: 7px 9px;
  font-size: 0.8rem;
  margin-bottom: 16px;
}
.display-options :is(button, select):focus-visible {
  outline: 2px solid var(--ui-accent);
  outline-offset: 3px;
}
.display-options-context {
  border-top: 1px solid var(--ui-border);
  padding-top: 20px;
  margin-top: 20px;
}
.display-options-context[hidden] {
  display: none;
}
@media (prefers-reduced-motion: reduce) {
  .display-options {
    transition: none;
  }
}

/* Source: features/dashboard.css */
.dashboard-shell {
  height: 100vh;
  height: 100dvh;
}
.dashboard-shell .sidebar,
.dashboard-shell .main-content {
  height: 100%;
}
@media (max-width: 700px) {
  .dashboard-shell {
    flex-direction: column;
  }
  .dashboard-shell .sidebar {
    width: 100%;
    min-width: 0;
    height: auto;
    max-height: 34vh;
    max-height: 34dvh;
    flex-shrink: 0;
    border-bottom: 1px solid var(--ui-border);
  }
  .dashboard-shell .main-content {
    width: 100%;
    min-width: 0;
    min-height: 0;
    height: auto;
    flex: 1;
  }
  .dashboard-shell .sidebar > .mb-4:first-child > .d-flex {
    padding-right: 40px;
  }
}

/* Source: features/changelog.css */
/* Changelog presentation. All category colors come from tokens/palette.css. */

/* Custom background colors for cards */
.bg-purple {
  background-color: var(--ui-purple-fill);
  color: var(--ui-on-purple) !important;
}

.bg-pink {
  background-color: var(--ui-pink-fill);
  color: var(--ui-on-pink) !important;
}

.bg-indigo {
  background-color: var(--ui-indigo-fill);
  color: var(--ui-on-indigo) !important;
}

.bg-teal {
  background-color: var(--ui-teal-fill);
  color: var(--ui-on-teal) !important;
}

.bg-orange {
  background-color: var(--ui-orange-fill);
  color: var(--ui-on-orange) !important;
}

/* Custom border colors for the "Coming Soon" card */
.border-purple {
  border-color: var(--ui-purple-fill) !important;
}

.border-pink {
  border-color: var(--ui-pink-fill) !important;
}

.border-indigo {
  border-color: var(--ui-indigo-fill) !important;
}

.border-teal {
  border-color: var(--ui-teal-fill) !important;
}

.border-orange {
  border-color: var(--ui-orange-fill) !important;
}

/* For highlighting new entries with custom colors */
@keyframes highlight-purple {
  0% {
    background-color: var(--ui-highlight-category);
  }
  100% {
    background-color: transparent;
  }
}

.highlight-purple {
  animation: highlight-purple 2s ease-out;
}

.changelog-container .card {
  transition: transform 0.2s ease-in-out;
}

.changelog-container .card:hover {
  transform: translateY(-5px);
}

.changelog-container .card-header {
  border-radius: 0.375rem 0.375rem 0 0;
}

.badge {
  font-weight: 500;
}

/* Animation for new entries */
@keyframes highlight {
  0% {
    background-color: var(--ui-highlight-new);
  }
  100% {
    background-color: transparent;
  }
}

.highlight-new {
  animation: highlight 2s ease-out;
}

/* Source: base.css */
/* Document defaults. Vendor adapters follow these base rules in the UI bundle. */
html[data-theme="dark"] {
  background: var(--ui-bg);
  color: var(--ui-text);
  scrollbar-color: var(--ui-scrollbar) var(--ui-surface-secondary);
}

html[data-theme="dark"] body {
  background: var(--ui-bg);
  color: var(--ui-text);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

html[data-theme="dark"] .lead {
  font-weight: 400;
}

html[data-theme="dark"] ::selection {
  background: var(--ui-selection);
  color: var(--ui-on-solid);
}
html[data-theme="dark"] a {
  color: var(--ui-accent);
}
html[data-theme="dark"] a:hover {
  color: var(--ui-accent-hover);
}
html[data-theme="dark"] :is(hr, table, th, td) {
  border-color: var(--ui-border);
}
html[data-theme="dark"] hr {
  opacity: 1;
}

/* Source: integrations/neutral-utilities.css */
/* Neutral utilities only; colored badges and buttons are handled separately. */
html[data-theme="dark"] :is(.bg-white, .bg-body, .bg-gray-100) {
  background-color: var(--ui-bg) !important;
}
html[data-theme="dark"] :is(.bg-light, .bg-gray-50, .bg-gray-200) {
  background-color: var(--ui-surface-secondary) !important;
}
html[data-theme="dark"] :is(.bg-dark, .bg-gray-800, .bg-gray-900) {
  background-color: var(--ui-surface-raised) !important;
}
html[data-theme="dark"]
  :is(
    .text-body,
    .text-dark,
    .text-black,
    .text-gray-700,
    .text-gray-800,
    .text-gray-900,
    .text-grey-darker
  ) {
  color: var(--ui-text) !important;
}
html[data-theme="dark"]
  :is(
    .text-muted,
    .text-secondary,
    .text-black-50,
    .text-gray-300,
    .text-gray-400,
    .text-gray-500,
    .text-gray-600
  ) {
  color: var(--ui-muted) !important;
}
html[data-theme="dark"]
  :is(
    .text-primary,
    .text-blue-500,
    .text-blue-600,
    .text-blue-700,
    .text-indigo-600
  ) {
  color: var(--ui-accent) !important;
}
html[data-theme="dark"] :is(.text-success, .text-green-600, .text-green-700) {
  color: var(--ui-success) !important;
}
html[data-theme="dark"] :is(.text-danger, .text-red-600, .text-red-700) {
  color: var(--ui-danger) !important;
}
html[data-theme="dark"] .text-warning {
  color: var(--ui-warning) !important;
}
html[data-theme="dark"] .text-info {
  color: var(--ui-info) !important;
}
html[data-theme="dark"] :is(.hover\:text-blue-700:hover, .link-primary:hover) {
  color: var(--ui-accent-hover) !important;
}
html[data-theme="dark"]
  :is(
    .border,
    .border-top,
    .border-bottom,
    .border-start,
    .border-end,
    .border-light
  ) {
  border-color: var(--ui-border) !important;
}
html[data-theme="dark"] :is(.border-primary, .border-indigo) {
  border-color: var(--ui-accent) !important;
}
html[data-theme="dark"] :is(.border-success, .border-teal) {
  border-color: var(--ui-success) !important;
}
html[data-theme="dark"] :is(.border-danger, .border-red-400, .border-pink) {
  border-color: var(--ui-danger) !important;
}
html[data-theme="dark"] :is(.border-warning, .border-orange) {
  border-color: var(--ui-warning) !important;
}
html[data-theme="dark"] .border-info {
  border-color: var(--ui-info) !important;
}
html[data-theme="dark"] .border-purple {
  border-color: var(--ui-purple-accent) !important;
}

/* Source: components/surfaces.css */
html[data-theme="dark"]
  :is(
    .card,
    .panel,
    .accordion-item,
    .list-group-item,
    .dropdown-menu,
    .offcanvas,
    .toast,
    .popover,
    .swal-modal,
    .key-container,
    .celebration-container
  ) {
  background-color: var(--ui-surface);
  color: var(--ui-text);
  border-color: var(--ui-border);
}
html[data-theme="dark"]
  :is(
    .card-header,
    .card-footer,
    .modal-header,
    .modal-footer,
    .toast-header,
    .popover-header,
    .dropdown-divider
  ) {
  border-color: var(--ui-border);
}
html[data-theme="dark"]
  :is(.card-header, .card-footer, .toast-header, .popover-header) {
  background-color: var(--ui-surface-secondary);
  color: var(--ui-text);
}
html[data-theme="dark"]
  :is(.popover-body, .dropdown-item, .list-group-item-action) {
  color: var(--ui-text);
}
html[data-theme="dark"]
  :is(
    .dropdown-header,
    .breadcrumb-item,
    .breadcrumb-item.active,
    .breadcrumb-item + .breadcrumb-item::before
  ) {
  color: var(--ui-muted);
}
html[data-theme="dark"]
  :is(
    .dropdown-item:hover,
    .dropdown-item:focus,
    .list-group-item-action:hover,
    .list-group-item-action:focus
  ) {
  background-color: var(--ui-surface-raised);
  color: var(--ui-on-solid);
}
html[data-theme="dark"]
  :is(.dropdown-item.active, .dropdown-item:active, .list-group-item.active) {
  background-color: var(--ui-primary-fill);
  color: var(--ui-on-solid);
  border-color: var(--ui-accent);
}
html[data-theme="dark"] .modal-content {
  background-color: var(--ui-bg);
  color: var(--ui-text);
  border: 1px solid var(--ui-border);
}
html[data-theme="dark"] #wolfModal .modal-content {
  background: transparent;
  border: 0;
}
html[data-theme="dark"] :is(.modal-backdrop, .offcanvas-backdrop) {
  background-color: var(--ui-bg);
}
html[data-theme="dark"] .swal-overlay {
  background-color: var(--ui-overlay);
}
html[data-theme="dark"] .swal-modal {
  border: 1px solid var(--ui-border);
}

/* Source: features/rewards-theme.css */
html[data-theme="dark"] :is(.celebration-container, .key-container) {
  border: 1px solid var(--ui-border);
}
html[data-theme="dark"] .gift-button {
  color: var(--ui-on-gift);
  text-shadow: none;
}
html[data-theme="dark"] .gift-button:hover {
  color: var(--ui-bg);
}
html[data-theme="dark"] .reveal-btn {
  background: var(--ui-reward-fill);
  color: var(--ui-on-solid);
}
html[data-theme="dark"] .reveal-btn:hover {
  background: var(--ui-reward-hover);
}

/* Source: integrations/semantic-utilities.css */
/* Solid semantic fills retain deliberately contrasting foregrounds. */
html[data-theme="dark"] :is(.bg-primary, .bg-blue-500) {
  background-color: var(--ui-primary-fill) !important;
}
html[data-theme="dark"] :is(.bg-success, .bg-green-500) {
  background-color: var(--ui-success-fill) !important;
}
html[data-theme="dark"] .bg-danger {
  background-color: var(--ui-danger-fill) !important;
}
html[data-theme="dark"] .bg-secondary {
  background-color: var(--ui-secondary-fill) !important;
}
html[data-theme="dark"] .bg-info {
  background-color: var(--ui-info) !important;
}
html[data-theme="dark"] .bg-warning {
  background-color: var(--ui-warning) !important;
}
/* Custom changelog fills must be paired with their foreground, not just text. */
html[data-theme="dark"] .bg-orange {
  background-color: var(--ui-orange-fill) !important;
  color: var(--ui-on-orange) !important;
}
html[data-theme="dark"] .bg-teal {
  background-color: var(--ui-teal-fill) !important;
  color: var(--ui-on-teal) !important;
}
html[data-theme="dark"] .bg-purple {
  background-color: var(--ui-purple-fill) !important;
  color: var(--ui-on-purple) !important;
}
html[data-theme="dark"] .bg-pink {
  background-color: var(--ui-pink-fill) !important;
  color: var(--ui-on-pink) !important;
}
html[data-theme="dark"] .bg-indigo {
  background-color: var(--ui-indigo-fill) !important;
  color: var(--ui-on-indigo) !important;
}
html[data-theme="dark"] :is(.bg-info, .bg-warning).text-dark,
html[data-theme="dark"] :is(.badge, .card-header):is(.bg-info, .bg-warning) {
  color: var(--ui-on-info) !important;
}
html[data-theme="dark"] :is(.bg-info, .bg-warning) > .text-white {
  color: var(--ui-on-info) !important;
}
html[data-theme="dark"] .bg-primary.bg-opacity-10 {
  background-color: var(--ui-blue-bg) !important;
}
html[data-theme="dark"] :is(.badge.bg-dark, .badge.bg-light) {
  background-color: var(--ui-badge-neutral) !important;
  color: var(--ui-text);
  box-shadow: none;
}
html[data-theme="dark"] .hover\:bg-blue-700:hover {
  background-color: var(--ui-primary-hover) !important;
}

/* Source: components/buttons.css */
/* Buttons use local tokens rather than inheriting the generic link color. */
html[data-theme="dark"] :is(.btn-primary, .btn-outline-primary) {
  --ui-btn: var(--ui-primary-fill);
  --ui-btn-hover: var(--ui-primary-hover);
  --ui-btn-text: var(--ui-on-solid);
  --ui-btn-line: var(--ui-accent);
}
html[data-theme="dark"] :is(.btn-success, .btn-outline-success) {
  --ui-btn: var(--ui-success-fill);
  --ui-btn-hover: var(--ui-success-hover);
  --ui-btn-text: var(--ui-on-solid);
  --ui-btn-line: var(--ui-success);
}
html[data-theme="dark"] :is(.btn-danger, .btn-outline-danger) {
  --ui-btn: var(--ui-danger-fill);
  --ui-btn-hover: var(--ui-danger-hover);
  --ui-btn-text: var(--ui-on-solid);
  --ui-btn-line: var(--ui-danger);
}
html[data-theme="dark"] :is(.btn-info, .btn-outline-info) {
  --ui-btn: var(--ui-info);
  --ui-btn-hover: var(--ui-info-hover);
  --ui-btn-text: var(--ui-on-info);
  --ui-btn-line: var(--ui-info);
}
html[data-theme="dark"] :is(.btn-warning, .btn-outline-warning) {
  --ui-btn: var(--ui-warning);
  --ui-btn-hover: var(--ui-warning-hover);
  --ui-btn-text: var(--ui-on-warning);
  --ui-btn-line: var(--ui-warning);
}
html[data-theme="dark"]
  :is(
    .btn-secondary,
    .btn-light,
    .btn-dark,
    .btn-outline-secondary,
    .btn-outline-light,
    .btn-outline-dark
  ) {
  --ui-btn: var(--ui-surface-raised);
  --ui-btn-hover: var(--ui-neutral-hover);
  --ui-btn-text: var(--ui-text);
  --ui-btn-line: var(--ui-neutral-outline);
}
html[data-theme="dark"]
  :is(
    .btn-primary,
    .btn-success,
    .btn-danger,
    .btn-info,
    .btn-warning,
    .btn-secondary,
    .btn-light,
    .btn-dark
  ) {
  background-color: var(--ui-btn);
  color: var(--ui-btn-text);
  border-color: var(--ui-btn);
}
html[data-theme="dark"]
  :is(
    .btn-outline-primary,
    .btn-outline-success,
    .btn-outline-danger,
    .btn-outline-info,
    .btn-outline-warning,
    .btn-outline-secondary,
    .btn-outline-light,
    .btn-outline-dark
  ) {
  background-color: transparent;
  color: var(--ui-btn-line);
  border-color: var(--ui-btn-line);
}
html[data-theme="dark"]
  .btn:not(.btn-link):is(:hover, :active, .active, .show):not(:disabled):not(
    .disabled
  ),
html[data-theme="dark"] .btn-check:checked + .btn {
  background-color: var(--ui-btn-hover);
  color: var(--ui-btn-text);
  border-color: var(--ui-btn-hover);
}
html[data-theme="dark"] .btn-link {
  color: var(--ui-accent);
}
html[data-theme="dark"] .btn-link:hover {
  color: var(--ui-accent-hover);
}
html[data-theme="dark"] :is(.btn:disabled, .btn.disabled) {
  opacity: 0.65;
}
html[data-theme="dark"] .btn-close {
  background-image: var(--ui-close);
  opacity: 0.85;
}
html[data-theme="dark"] .btn-close:hover {
  opacity: 1;
}

/* Source: components/forms.css */
/* Forms: do not accidentally turn submit buttons or validation marks black. */
html[data-theme="dark"]
  :is(
    input:where(
      :not([type="button"]):not([type="submit"]):not([type="reset"]):not(
          [type="range"]
        ):not([type="checkbox"]):not([type="radio"]):not([type="color"])
    ),
    select,
    textarea,
    .form-control,
    .form-select,
    .swal-content__input,
    .swal-content__textarea
  ) {
  background-color: var(--ui-bg);
  color: var(--ui-text);
  border-color: var(--ui-control-border);
  caret-color: var(--ui-text);
}
html[data-theme="dark"] :is(.form-control, .form-select).bg-light {
  background-color: var(--ui-bg) !important;
}
html[data-theme="dark"] :is(input, textarea)::placeholder {
  color: var(--ui-muted);
  opacity: 1;
}
html[data-theme="dark"] :is(option, optgroup) {
  background-color: var(--ui-bg);
  color: var(--ui-text);
}
html[data-theme="dark"] :is(.form-text, .form-control-plaintext) {
  color: var(--ui-muted);
}
html[data-theme="dark"] .input-group-text {
  background-color: var(--ui-surface-raised);
  border-color: var(--ui-border);
  color: var(--ui-text);
}
html[data-theme="dark"] .form-select {
  background-image: var(--ui-chevron);
}
html[data-theme="dark"] :is(input, select, textarea):is(:disabled, [readonly]),
html[data-theme="dark"]
  :is(.dropdown-item.disabled, .list-group-item.disabled) {
  background-color: var(--ui-surface-raised);
  color: var(--ui-muted);
  opacity: 1;
}
html[data-theme="dark"] :is(input, button, select, textarea):disabled {
  cursor: not-allowed;
}
html[data-theme="dark"] .form-control::file-selector-button {
  color: var(--ui-text);
  background-color: var(--ui-surface-raised);
}
html[data-theme="dark"]
  .form-control:hover:not(:disabled):not([readonly])::file-selector-button {
  background-color: var(--ui-control-hover);
}
html[data-theme="dark"] input:-webkit-autofill {
  -webkit-text-fill-color: var(--ui-text);
  box-shadow: 0 0 0 1000px var(--ui-bg) inset;
  caret-color: var(--ui-text);
}
html[data-theme="dark"]
  :is(input[type="checkbox"], input[type="radio"], input[type="range"]) {
  accent-color: var(--ui-accent);
}
html[data-theme="dark"] .form-check-input {
  background-color: var(--ui-bg);
  border-color: var(--ui-control-mark);
}
html[data-theme="dark"] .form-check-input:checked {
  background-color: var(--ui-primary-fill);
  border-color: var(--ui-accent);
}
html[data-theme="dark"] .form-check-input:indeterminate {
  background-color: var(--ui-primary-fill);
  border-color: var(--ui-accent);
}
html[data-theme="dark"] .form-switch .form-check-input:not(:checked) {
  background-image: var(--ui-switch-icon);
}
html[data-theme="dark"] .form-range::-webkit-slider-runnable-track {
  background: var(--ui-control-track);
}
html[data-theme="dark"] .form-range::-moz-range-track {
  background: var(--ui-control-track);
}
html[data-theme="dark"] :is(.is-invalid, .was-validated :invalid) {
  border-color: var(--ui-danger);
}
html[data-theme="dark"] :is(.invalid-feedback, .invalid-tooltip) {
  color: var(--ui-danger);
}
html[data-theme="dark"] .invalid-tooltip {
  background-color: var(--ui-danger-bg);
}
html[data-theme="dark"] :is(.is-valid, .was-validated :valid) {
  border-color: var(--ui-success);
}
html[data-theme="dark"] :is(.valid-feedback, .valid-tooltip) {
  color: var(--ui-success);
}
html[data-theme="dark"] .valid-tooltip {
  background-color: var(--ui-success-bg);
}

/* Source: components/navigation.css */
html[data-theme="dark"] :is(.accordion-button, .accordion-button.collapsed) {
  background-color: var(--ui-bg);
  color: var(--ui-text);
  box-shadow: inset 0 -1px 0 var(--ui-border);
}
html[data-theme="dark"] .accordion-button:not(.collapsed) {
  background-color: var(--ui-surface-secondary);
  color: var(--ui-accent);
}
html[data-theme="dark"] .accordion-button::after {
  background-image: var(--ui-chevron);
}
html[data-theme="dark"] .nav-tabs {
  border-color: var(--ui-border);
}
html[data-theme="dark"] .nav-link {
  color: var(--ui-accent);
}
html[data-theme="dark"] .nav-tabs .nav-link:is(:hover, :focus) {
  border-color: var(--ui-border);
}
html[data-theme="dark"] .nav-tabs .nav-link.active {
  background-color: var(--ui-bg);
  color: var(--ui-text);
  border-color: var(--ui-border) var(--ui-border) var(--ui-bg);
}
html[data-theme="dark"] .nav-pills .nav-link.active {
  background-color: var(--ui-primary-fill);
  color: var(--ui-on-solid);
}
html[data-theme="dark"] .nav-link.disabled {
  color: var(--ui-muted);
}
html[data-theme="dark"] .page-link {
  color: var(--ui-accent);
  background-color: var(--ui-bg);
  border-color: var(--ui-border);
}
html[data-theme="dark"] .page-link:hover {
  color: var(--ui-on-solid);
  background-color: var(--ui-surface-raised);
}
html[data-theme="dark"] .page-item.active .page-link {
  color: var(--ui-on-solid);
  background-color: var(--ui-primary-fill);
  border-color: var(--ui-accent);
}
html[data-theme="dark"] .page-item.disabled .page-link {
  color: var(--ui-muted);
  background-color: var(--ui-surface-raised);
  border-color: var(--ui-border);
}
html[data-theme="dark"] .progress {
  background-color: var(--ui-control-hover);
}

/* Source: components/alerts.css */
html[data-theme="dark"]
  :is(
    .alert-primary,
    .alert-info,
    .alert-success,
    .alert-warning,
    .alert-danger,
    .alert-secondary,
    .alert-light,
    .alert-dark
  ) {
  border-color: var(--ui-border);
}
html[data-theme="dark"] .alert-primary {
  background-color: var(--ui-blue-bg);
  color: var(--ui-accent);
  border-color: var(--ui-primary-border);
}
html[data-theme="dark"] .alert-info {
  background-color: var(--ui-info-bg);
  color: var(--ui-info);
  border-color: var(--ui-info-border);
}
html[data-theme="dark"] .alert-success {
  background-color: var(--ui-success-bg);
  color: var(--ui-success);
  border-color: var(--ui-success-border);
}
html[data-theme="dark"] .alert-warning {
  background-color: var(--ui-warning-bg);
  color: var(--ui-warning);
  border-color: var(--ui-warning-border);
}
html[data-theme="dark"] :is(.alert-danger, .bg-red-100) {
  background-color: var(--ui-danger-bg);
  color: var(--ui-danger);
  border-color: var(--ui-danger-border);
}
html[data-theme="dark"] :is(.alert-secondary, .alert-light, .alert-dark) {
  background-color: var(--ui-surface-raised);
  color: var(--ui-text);
}
html[data-theme="dark"] .alert .alert-link {
  color: inherit;
  text-decoration: underline;
}

/* Source: components/tables.css */
/* Bootstrap paints stripes with inset shadows, not just cell backgrounds. */
html[data-theme="dark"] table {
  background-color: var(--ui-bg);
  color: var(--ui-text);
}
html[data-theme="dark"] caption {
  color: var(--ui-muted);
}
html[data-theme="dark"] th {
  background-color: var(--ui-surface-secondary);
}
html[data-theme="dark"] .table {
  --bs-table-bg: var(--ui-bg);
  --bs-table-accent-bg: transparent;
  --bs-table-striped-bg: var(--ui-surface-secondary);
  --bs-table-striped-color: var(--ui-text);
  --bs-table-active-bg: var(--ui-table-active);
  --bs-table-active-color: var(--ui-text);
  --bs-table-hover-bg: var(--ui-surface-raised);
  --bs-table-hover-color: var(--ui-text);
  color: var(--ui-text);
  border-color: var(--ui-border);
}
html[data-theme="dark"] .table > :not(:first-child) {
  border-top-color: var(--ui-border);
}
html[data-theme="dark"] :is(.table-primary, .table-info) {
  --bs-table-bg: var(--ui-info-bg);
  --bs-table-striped-bg: var(--ui-table-info-stripe);
  --bs-table-hover-bg: var(--ui-table-info-hover);
  color: var(--ui-info);
}
html[data-theme="dark"] .table-success {
  --bs-table-bg: var(--ui-success-bg);
  --bs-table-striped-bg: var(--ui-table-success-stripe);
  --bs-table-hover-bg: var(--ui-table-success-hover);
  color: var(--ui-success);
}
html[data-theme="dark"] .table-danger {
  --bs-table-bg: var(--ui-danger-bg);
  --bs-table-striped-bg: var(--ui-table-danger-stripe);
  --bs-table-hover-bg: var(--ui-table-danger-hover);
  color: var(--ui-danger);
}
html[data-theme="dark"] .table-warning {
  --bs-table-bg: var(--ui-warning-bg);
  --bs-table-striped-bg: var(--ui-table-warning-stripe);
  --bs-table-hover-bg: var(--ui-table-warning-hover);
  color: var(--ui-warning);
}

/* Source: features/markdown-theme.css */
/* Authored inline colors win: no descendant-wide color reset or image filter. */
html[data-theme="dark"] :is(.markdown-content, .markdown-preview) {
  color: var(--ui-text);
}
html[data-theme="dark"] :is(.markdown-content, .markdown-preview) :is(th, td) {
  border-color: var(--ui-border);
}
html[data-theme="dark"] :is(.markdown-content, .markdown-preview) th {
  background-color: var(--ui-surface-secondary);
}
html[data-theme="dark"] :is(.markdown-content, .markdown-preview) blockquote {
  color: var(--ui-muted);
  border-color: var(--ui-control-border);
}
html[data-theme="dark"] pre {
  background-color: var(--ui-surface-secondary);
  color: var(--ui-code-text);
}
html[data-theme="dark"] code:not(.hljs) {
  color: var(--ui-inline-code);
}
html[data-theme="dark"] pre code:not(.hljs) {
  color: inherit;
}
html[data-theme="dark"]
  :is(.markdown-content, .markdown-preview)
  code:not(.hljs) {
  background-color: var(--ui-surface-raised);
}
html[data-theme="dark"] :is(.markdown-content, .markdown-preview) pre {
  background-color: var(--ui-surface-secondary);
}
html[data-theme="dark"]
  :is(.markdown-content, .markdown-preview)
  pre
  code:not(.hljs) {
  background-color: transparent;
}
html[data-theme="dark"] :is(kbd, samp) {
  background-color: var(--ui-surface-raised);
  color: var(--ui-code-text);
}
html[data-theme="dark"] mark {
  background-color: var(--ui-mark-bg);
  color: var(--ui-mark-text);
}
html[data-theme="dark"] .toc-link {
  color: var(--ui-accent) !important;
}

/* Source: features/content-admin-theme.css */
/* Edition/catalog controls and both split and unified diff layouts. */
html[data-theme="dark"] :is(.filter-bar, .icon-button, .visibility-status) {
  background-color: var(--ui-bg);
  border-color: var(--ui-border);
}
html[data-theme="dark"]
  :is(.series-row, .selection-bar, .segmented, .diff-context summary) {
  background-color: var(--ui-surface-secondary);
}
html[data-theme="dark"]
  :is(
    .feature-row small,
    .content-info small,
    .eyebrow,
    .page-intro,
    .footnote,
    #filter-status,
    .feature-panel summary span,
    .content-kind,
    .workspace-bar small,
    .source-details summary,
    .diff-legend,
    .empty-state,
    .section-heading span,
    .history-row small,
    .legacy-history,
    .line-number
  ) {
  color: var(--ui-muted);
}
html[data-theme="dark"] .content-title {
  color: var(--ui-text);
}
html[data-theme="dark"] .content-title:hover {
  color: var(--ui-accent);
}
html[data-theme="dark"] :is(.icon-button, .segmented button) {
  color: var(--ui-icon-text);
}
html[data-theme="dark"] .icon-button:hover {
  background-color: var(--ui-surface-raised);
  color: var(--ui-on-solid);
}
html[data-theme="dark"] .segmented button[aria-pressed="true"] {
  color: var(--ui-accent);
  background-color: var(--ui-bg);
  box-shadow: inset 0 0 0 1px var(--ui-border);
}
html[data-theme="dark"] :is(.published-badge, .live-state) {
  color: var(--ui-success);
  background-color: var(--ui-success-bg);
  border-color: var(--ui-success-border);
}
html[data-theme="dark"]
  :is(#published-status, .visibility-status, .legend-add) {
  color: var(--ui-success);
}
html[data-theme="dark"] .draft-badge {
  color: var(--ui-warning);
  background-color: var(--ui-warning-bg);
}
html[data-theme="dark"]
  :is(.visibility-status[data-error="true"], .legend-remove) {
  color: var(--ui-danger);
}
html[data-theme="dark"] .status-dot {
  background-color: var(--ui-status-idle);
}
html[data-theme="dark"] .status-dot.on {
  background-color: var(--ui-success);
}
html[data-theme="dark"] .visibility-switch::before {
  background-color: var(--ui-switch-off);
  box-shadow: inset 0 0 0 1px var(--ui-switch-border);
}
html[data-theme="dark"] .visibility-switch[aria-checked="true"]::before {
  background-color: var(--ui-switch-on);
  box-shadow: inset 0 0 0 1px var(--ui-success);
}
html[data-theme="dark"] .visibility-switch span {
  background-color: var(--ui-on-solid);
}
html[data-theme="dark"] .visibility-switch:disabled {
  cursor: wait;
}
html[data-theme="dark"] .version-link {
  color: var(--ui-accent);
  background-color: var(--ui-blue-bg);
  border-color: var(--ui-primary-border);
}
html[data-theme="dark"] .version-link:hover {
  background-color: var(--ui-primary-subtle-hover);
  color: var(--ui-accent-hover);
}
html[data-theme="dark"] .diff-cell {
  border-color: var(--ui-border);
}
html[data-theme="dark"] .line-number {
  background-color: var(--ui-line-gutter);
}
html[data-theme="dark"] .diff-cell.removed {
  background-color: var(--ui-danger-bg);
  color: var(--ui-diff-remove-text);
}
html[data-theme="dark"] .diff-cell.added {
  background-color: var(--ui-success-bg);
  color: var(--ui-diff-add-text);
}
html[data-theme="dark"] .diff-cell code {
  color: inherit;
  background-color: transparent;
}
html[data-theme="dark"] .diff-cell mark {
  color: inherit;
}
html[data-theme="dark"] .removed mark {
  background-color: var(--ui-diff-remove-mark);
}
html[data-theme="dark"] .added mark {
  background-color: var(--ui-diff-add-mark);
}

/* Source: integrations/select2-theme.css */
/* Select2 renders its dropdown under body and ships very specific selectors. */
html[data-theme="dark"]
  :is(.select2-container--bootstrap-5, .select2-container--default)
  :is(.select2-selection, .select2-dropdown, .select2-search__field) {
  color: var(--ui-text) !important;
  background-color: var(--ui-bg) !important;
  border-color: var(--ui-control-border) !important;
}
html[data-theme="dark"]
  :is(.select2-container--bootstrap-5, .select2-container--default)
  .select2-selection__rendered {
  color: var(--ui-text) !important;
}
html[data-theme="dark"]
  :is(.select2-container--bootstrap-5, .select2-container--default)
  :is(
    .select2-selection__placeholder,
    .select2-results__message,
    .select2-results__group
  ) {
  color: var(--ui-muted) !important;
}
html[data-theme="dark"]
  :is(.select2-container--bootstrap-5, .select2-container--default)
  .select2-selection__choice {
  background-color: var(--ui-surface-raised) !important;
  color: var(--ui-text) !important;
  border-color: var(--ui-border) !important;
}
html[data-theme="dark"]
  :is(.select2-container--bootstrap-5, .select2-container--default)
  :is(.select2-selection__choice__remove, .select2-selection__clear) {
  color: var(--ui-text) !important;
  border-color: var(--ui-border) !important;
}
html[data-theme="dark"]
  .select2-container--bootstrap-5
  :is(.select2-selection__choice__remove, .select2-selection__clear) {
  background-image: var(--ui-close) !important;
}
html[data-theme="dark"]
  .select2-container--default
  .select2-selection__choice__remove:hover {
  background-color: var(--ui-control-track);
}
html[data-theme="dark"]
  .select2-container--bootstrap-5
  .select2-selection--single {
  background-image: var(--ui-chevron);
}
html[data-theme="dark"]
  .select2-container--default
  .select2-selection__arrow
  b {
  border-top-color: var(--ui-control-icon);
}
html[data-theme="dark"]
  .select2-container--default.select2-container--open
  .select2-selection__arrow
  b {
  border-top-color: transparent;
  border-bottom-color: var(--ui-control-icon);
}
html[data-theme="dark"]
  :is(.select2-container--bootstrap-5, .select2-container--default)
  :is(
    .select2-results__option--selected,
    .select2-results__option[aria-selected="true"]
  ) {
  background-color: var(--ui-primary-fill) !important;
  color: var(--ui-on-solid) !important;
}
html[data-theme="dark"]
  :is(.select2-container--bootstrap-5, .select2-container--default)
  .select2-results__option--highlighted {
  background-color: var(--ui-selection) !important;
  color: var(--ui-on-solid) !important;
}
html[data-theme="dark"]
  :is(.select2-container--bootstrap-5, .select2-container--default)
  :is(
    .select2-results__option--disabled,
    .select2-results__option[aria-disabled="true"]
  ),
html[data-theme="dark"] .select2-container--disabled .select2-selection {
  background-color: var(--ui-surface-raised) !important;
  color: var(--ui-muted) !important;
}
html[data-theme="dark"]
  .select2-container--disabled
  :is(.select2-selection__rendered, .select2-selection__choice) {
  color: var(--ui-muted) !important;
}

/* Source: integrations/sweetalert.css */
/* SweetAlert 1.x injects CSS late, including white success-animation masks. */
html[data-theme="dark"] :is(.swal-title, .swal-text, .swal-content) {
  color: var(--ui-text);
}
html[data-theme="dark"] .swal-icon--success::before,
html[data-theme="dark"] .swal-icon--success::after,
html[data-theme="dark"] .swal-icon--success__hide-corners {
  background-color: var(--ui-bg);
}
html[data-theme="dark"] :is(.swal-icon--success, .swal-icon--success__ring) {
  border-color: var(--ui-success);
}
html[data-theme="dark"] .swal-icon--success__line {
  background-color: var(--ui-success);
}
html[data-theme="dark"] .swal-icon--error {
  border-color: var(--ui-danger);
}
html[data-theme="dark"] .swal-icon--error__line {
  background-color: var(--ui-danger);
}
html[data-theme="dark"] .swal-icon--info {
  border-color: var(--ui-info);
}
html[data-theme="dark"] .swal-icon--info::before,
html[data-theme="dark"] .swal-icon--info::after {
  background-color: var(--ui-info);
}
html[data-theme="dark"] .swal-button {
  color: var(--ui-on-solid);
  background-color: var(--ui-primary-fill);
  border: 1px solid var(--ui-primary-fill);
}
html[data-theme="dark"] .swal-button:not([disabled]):hover {
  background-color: var(--ui-primary-hover);
}
html[data-theme="dark"] .swal-button--cancel {
  color: var(--ui-text);
  background-color: var(--ui-surface-raised);
  border-color: var(--ui-border);
}
html[data-theme="dark"] .swal-button--cancel:not([disabled]):hover {
  background-color: var(--ui-neutral-hover);
}
html[data-theme="dark"] .swal-button--danger {
  background-color: var(--ui-danger-fill);
  border-color: var(--ui-danger-fill);
}
html[data-theme="dark"] .swal-button--danger:not([disabled]):hover {
  background-color: var(--ui-danger-hover);
}
html[data-theme="dark"] .swal-footer {
  border-top: 1px solid var(--ui-border);
}

/* Source: components/focus.css */
/* Last so library focus/outline resets cannot hide keyboard position. */
html[data-theme="dark"]
  :is(
    a,
    button,
    input,
    select,
    textarea,
    summary,
    [tabindex],
    [role="button"],
    [role="switch"]
  ):focus-visible {
  outline: 3px solid var(--ui-focus);
  outline-offset: 3px;
}
html[data-theme="dark"]
  :is(
    .form-control,
    .form-select,
    .swal-content__input,
    .swal-content__textarea
  ):focus {
  border-color: var(--ui-focus);
  box-shadow: 0 0 0 3px var(--ui-focus-shadow);
}
html[data-theme="dark"]
  :is(.btn, .swal-button, .accordion-button, .btn-close):focus {
  box-shadow: none;
}
html[data-theme="dark"]
  :is(.btn, .swal-button, .accordion-button, .btn-close):focus-visible {
  box-shadow: 0 0 0 3px var(--ui-focus-shadow);
}
html[data-theme="dark"] .filter-bar:focus-within {
  outline: 2px solid var(--ui-focus);
  outline-offset: 2px;
}
html[data-theme="dark"]
  :is(.select2-container--focus, .select2-container--open)
  .select2-selection {
  border-color: var(--ui-focus) !important;
  box-shadow: 0 0 0 3px var(--ui-focus-shadow) !important;
}
/* The enclosing Select2 selection already displays the keyboard focus ring. */
html[data-theme="dark"]
  .select2-container
  .select2-search--inline
  .select2-search__field:focus-visible {
  outline: none;
  box-shadow: none;
}
