/* cx-design v1.5.1 */
:root, [data-bs-theme] {
  --bs-body-font-family: var(--cx-font-sans);
  --bs-body-font-size:   var(--cx-fs-md);
  --bs-body-line-height: var(--cx-lh-base);
  --bs-body-color:       var(--cx-text);
  --bs-body-bg:          var(--cx-bg);
  --bs-secondary-color:  var(--cx-text-2);
  --bs-tertiary-color:   var(--cx-text-3);
  --bs-secondary-bg:     var(--cx-surface-2);
  --bs-tertiary-bg:      var(--cx-surface-2);
  --bs-emphasis-color:   var(--cx-text);
  --bs-border-color:     var(--cx-border);

  --bs-primary:     var(--cx-primary);
  --bs-primary-rgb: var(--cx-primary-rgb);
  --bs-primary-bg-subtle:     var(--cx-primary-soft);
  --bs-primary-text-emphasis: var(--cx-primary-text);
  --bs-primary-border-subtle: var(--cx-primary-soft);
  --bs-success: var(--cx-success);  --bs-success-rgb: var(--cx-success-rgb);
  --bs-warning: var(--cx-warning);  --bs-warning-rgb: var(--cx-warning-rgb);
  --bs-danger:  var(--cx-danger);   --bs-danger-rgb:  var(--cx-danger-rgb);
  --bs-info:    var(--cx-info);     --bs-info-rgb:    var(--cx-info-rgb);
  --bs-success-bg-subtle: var(--cx-success-soft);  --bs-success-text-emphasis: var(--cx-success);
  --bs-warning-bg-subtle: var(--cx-warning-soft);  --bs-warning-text-emphasis: var(--cx-warning);
  --bs-danger-bg-subtle:  var(--cx-danger-soft);   --bs-danger-text-emphasis:  var(--cx-danger);
  --bs-info-bg-subtle:    var(--cx-info-soft);     --bs-info-text-emphasis:    var(--cx-info);

  --bs-link-color:           var(--cx-primary);
  --bs-link-color-rgb:       var(--cx-primary-rgb);
  --bs-link-hover-color:     var(--cx-primary-hover);
  --bs-focus-ring-color:     var(--cx-focus-ring);

  --bs-border-radius:      var(--cx-r-md);
  --bs-border-radius-sm:   var(--cx-r-sm);
  --bs-border-radius-lg:   var(--cx-r-lg);
  --bs-border-radius-xl:   var(--cx-r-xl);
  --bs-border-radius-pill: var(--cx-r-full);
  --bs-box-shadow-sm: var(--cx-shadow-sm);
  --bs-box-shadow:    var(--cx-shadow-md);
  --bs-box-shadow-lg: var(--cx-shadow-lg);
}

.btn {
  --bs-btn-font-weight: var(--cx-fw-semibold);
  --bs-btn-padding-y: .625rem;
  --bs-btn-padding-x: 1.125rem;
  --bs-btn-border-radius: var(--cx-r-md);
  --bs-btn-focus-box-shadow: 0 0 0 .25rem var(--cx-focus-ring);
  min-height: var(--cx-control-h);
}
.btn-sm { min-height: var(--cx-control-h-sm); --bs-btn-border-radius: var(--cx-r-sm); }

.btn-primary {
  --bs-btn-color: var(--cx-on-primary);
  --bs-btn-bg: var(--cx-primary);
  --bs-btn-border-color: var(--cx-primary);
  --bs-btn-hover-color: var(--cx-on-primary);
  --bs-btn-hover-bg: var(--cx-primary-hover);
  --bs-btn-hover-border-color: var(--cx-primary-hover);
  --bs-btn-active-color: var(--cx-on-primary);
  --bs-btn-active-bg: var(--cx-primary-hover);
  --bs-btn-active-border-color: var(--cx-primary-hover);
  --bs-btn-disabled-color: var(--cx-on-primary);
  --bs-btn-disabled-bg: var(--cx-primary);
  --bs-btn-disabled-border-color: var(--cx-primary);
}
.btn-outline-primary {
  --bs-btn-color: var(--cx-primary-text);
  --bs-btn-border-color: var(--cx-primary);
  --bs-btn-hover-color: var(--cx-on-primary);
  --bs-btn-hover-bg: var(--cx-primary);
  --bs-btn-hover-border-color: var(--cx-primary);
  --bs-btn-active-color: var(--cx-on-primary);
  --bs-btn-active-bg: var(--cx-primary-hover);
  --bs-btn-active-border-color: var(--cx-primary-hover);
  --bs-btn-disabled-color: var(--cx-primary);
  --bs-btn-disabled-border-color: var(--cx-primary);
}
.btn-secondary {
  --bs-btn-color: var(--cx-text);
  --bs-btn-bg: var(--cx-surface-2);
  --bs-btn-border-color: var(--cx-border);
  --bs-btn-hover-color: var(--cx-text);
  --bs-btn-hover-bg: var(--cx-border);
  --bs-btn-hover-border-color: var(--cx-border-strong);
  --bs-btn-active-color: var(--cx-text);
  --bs-btn-active-bg: var(--cx-border);
  --bs-btn-active-border-color: var(--cx-border-strong);
  --bs-btn-disabled-color: var(--cx-text-3);
  --bs-btn-disabled-bg: var(--cx-surface-2);
  --bs-btn-disabled-border-color: var(--cx-border);
}
.btn-link {
  --bs-btn-color: var(--cx-primary-text);
  --bs-btn-hover-color: var(--cx-primary-hover);
  --bs-btn-active-color: var(--cx-primary-hover);
  text-decoration: none;
}
.btn-danger {
  --bs-btn-color: var(--cx-on-danger);
  --bs-btn-bg: var(--cx-danger);
  --bs-btn-border-color: var(--cx-danger);
  --bs-btn-hover-color: var(--cx-on-danger);
  --bs-btn-hover-bg: var(--cx-danger);
  --bs-btn-hover-border-color: var(--cx-danger);
  --bs-btn-active-color: var(--cx-on-danger);
  --bs-btn-active-bg: var(--cx-danger);
  --bs-btn-active-border-color: var(--cx-danger);
}
.btn-danger:hover { filter: brightness(.92); }

.form-control, .form-select {
  min-height: var(--cx-control-h);
  font-size: var(--cx-fs-md);
  background-color: var(--cx-surface);
  color: var(--cx-text);
  border-color: var(--cx-border-strong);
  border-radius: var(--cx-r-md);
}
.form-control::placeholder { color: var(--cx-text-3); }
.form-control:focus, .form-select:focus {
  border-color: var(--cx-primary);
  box-shadow: 0 0 0 .25rem var(--cx-focus-ring);
}
.form-control:disabled, .form-select:disabled { background-color: var(--cx-surface-2); color: var(--cx-text-3); }
.form-label { font-size: var(--cx-fs-sm); font-weight: var(--cx-fw-semibold); color: var(--cx-text); margin-bottom: var(--cx-sp-1); }
.form-text { color: var(--cx-text-2); font-size: var(--cx-fs-sm); }
.invalid-feedback { color: var(--cx-danger); font-size: var(--cx-fs-sm); }
.form-check-input:checked { background-color: var(--cx-primary); border-color: var(--cx-primary); }
.form-check-input:focus { border-color: var(--cx-primary); box-shadow: 0 0 0 .25rem var(--cx-focus-ring); }

.card {
  --bs-card-bg: var(--cx-surface);
  --bs-card-border-color: var(--cx-border);
  --bs-card-border-radius: var(--cx-r-lg);
  --bs-card-inner-border-radius: calc(var(--cx-r-lg) - 1px);
  --bs-card-spacer-y: var(--cx-sp-5);
  --bs-card-spacer-x: var(--cx-sp-5);
  --bs-card-cap-bg: var(--cx-surface);
  box-shadow: var(--cx-shadow-sm);
}
.modal {
  --bs-modal-bg: var(--cx-surface);
  --bs-modal-border-color: var(--cx-border);
  --bs-modal-border-radius: var(--cx-r-lg);
  --bs-modal-box-shadow: var(--cx-shadow-lg);
}
.modal-backdrop { --bs-backdrop-bg: var(--cx-gray-950); --bs-backdrop-opacity: .5; }
.dropdown-menu {
  --bs-dropdown-bg: var(--cx-surface);
  --bs-dropdown-border-color: var(--cx-border);
  --bs-dropdown-border-radius: var(--cx-r-md);
  --bs-dropdown-box-shadow: var(--cx-shadow-md);
  --bs-dropdown-link-color: var(--cx-text);
  --bs-dropdown-link-hover-bg: var(--cx-surface-2);
  --bs-dropdown-link-active-bg: var(--cx-primary);
  --bs-dropdown-link-active-color: var(--cx-on-primary);
}
.toast {
  --bs-toast-bg: var(--cx-surface);
  --bs-toast-border-color: var(--cx-border);
  --bs-toast-border-radius: var(--cx-r-md);
  --bs-toast-box-shadow: var(--cx-shadow-md);
}

.table {
  --bs-table-color: var(--cx-text);
  --bs-table-bg: var(--cx-surface);
  --bs-table-border-color: var(--cx-border);
  --bs-table-striped-bg: var(--cx-surface-2);
  --bs-table-hover-bg: var(--cx-surface-2);
}
.table { --bs-table-hover-bg: var(--cx-row-hover); font-size: var(--cx-fs-sm); line-height: var(--cx-lh-dense); }
.table > :not(caption) > * > * { padding: 9px var(--cx-sp-3); white-space: nowrap; vertical-align: middle; }
.table > thead th { background: var(--cx-surface-2); color: var(--cx-text-2); font-weight: var(--cx-fw-bold); }
.table-fixed-head > thead th { position: sticky; top: 0; z-index: 1; }
.table .is-num { text-align: right; font-variant-numeric: tabular-nums; }
.table .is-center { text-align: center; }
.table .is-wrap { white-space: normal; }
.table tr.is-selected > * { --bs-table-bg-state: var(--cx-primary-soft); }
.table tr.is-sum > *   { --bs-table-bg-state: var(--cx-row-sum); font-weight: var(--cx-fw-bold); }
.table tr.is-total > * { --bs-table-bg-state: var(--cx-row-total); --bs-table-color-state: var(--cx-on-row-total); font-weight: var(--cx-fw-bold); }
.badge { --bs-badge-font-weight: var(--cx-fw-semibold); --bs-badge-border-radius: var(--cx-r-full); }
.nav-pills  { --bs-nav-pills-link-active-bg: var(--cx-primary); --bs-nav-pills-link-active-color: var(--cx-on-primary); }
.nav-link   { --bs-nav-link-color: var(--cx-text-2); --bs-nav-link-hover-color: var(--cx-primary-text); }
.nav-tabs   { --bs-nav-tabs-link-active-color: var(--cx-primary-text); --bs-nav-tabs-border-color: var(--cx-border); }
.pagination {
  --bs-pagination-color: var(--cx-text);
  --bs-pagination-bg: var(--cx-surface);
  --bs-pagination-border-color: var(--cx-border);
  --bs-pagination-hover-bg: var(--cx-surface-2);
  --bs-pagination-active-bg: var(--cx-primary);
  --bs-pagination-active-border-color: var(--cx-primary);
  --bs-pagination-active-color: var(--cx-on-primary);
  --bs-pagination-focus-box-shadow: 0 0 0 .25rem var(--cx-focus-ring);
}
.progress { --bs-progress-bar-bg: var(--cx-primary); --bs-progress-bg: var(--cx-surface-2); }
.alert { --bs-alert-border-radius: var(--cx-r-md); }
