/* c-grids: shared presentation for Kendo Bootstrap 10 / jQuery 2024.4.
   Keep Kendo's table layout, column widths, virtual row measurement and overflow
   adapter intact. Page CSS can refine these defaults after this stylesheet. */
.k-grid {
  --mkp-grid-cell-x: 8px;
  --mkp-grid-cell-y: 6px;
  color: var(--mkp-foreground);
  background: var(--mkp-surface);
  border-color: var(--mkp-border);
  border-radius: var(--mkp-radius);
  font-size: var(--mkp-font-size);
  line-height: 20px;
  font-variant-numeric: tabular-nums;
}

/* A table's intrinsic width must not push its Bootstrap column below the
   adjacent filters. Horizontal overflow belongs to Kendo's content viewport. */
.row > .col-sm:has(.k-grid) { min-width: 0; }

/* Opt-in from grid metadata: catalog, people and inventory lists only.
   Workflow sidebars, edit forms and detail templates keep their own layout.
   Mobile keeps its existing collapse and source order. */
@media (min-width: 1100px) {
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .admin-filter-column):has(> .col-sm .k-grid) {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 16px;
    border: 1px solid var(--mkp-border);
    border-radius: var(--mkp-radius-lg);
    background: var(--mkp-surface);
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column {
    flex: 0 0 auto;
    width: 100%;
    max-width: none;
    border: 0;
    border-radius: 0;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column > .p-3 {
    padding: 0 !important;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column > .p-3 > .mb-3:has(> .d-sm-none) {
    display: none;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column #inbox-menu {
    display: flex !important;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 12px;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column #inbox-menu > .mb-3 {
    flex: 1 1 160px;
    min-width: 0;
    margin: 0 !important;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column #inbox-menu > .mb-3:has(> .form-check-input) {
    flex: 0 0 auto;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column #inbox-menu > .mb-3:has(> button) {
    flex: 0 0 108px;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column #inbox-menu :is(.mb-2, .me-sm-2) {
    margin: 0 !important;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .admin-filter-column) > .col-sm:has(.k-grid) {
    width: 100%;
    flex: 1 1 auto;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .admin-filter-column) > .col-sm:has(.k-grid) > .p-3 {
    padding: 0 !important;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .admin-filter-column) > .col-sm:has(.k-grid) > .mt-4.mx-4 {
    margin: 0 0 12px !important;
    text-align: right;
  }
  /* Tabs and record actions share one toolbar, directly above the table.
     Only flatten these presentation wrappers; all controls keep their DOM,
     event handlers and tab order. */
  .admin-page > .row.g-0.mkp-grid-list-layout > .col-sm:has(.mkp-grid-catalog) {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 12px;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout > .col-sm:has(.mkp-grid-catalog) > .mt-4.mx-4 {
    grid-column: 2;
    grid-row: 1;
    margin: 0 !important;
    white-space: nowrap;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout > .col-sm:has(.mkp-grid-catalog) > .p-3 { display: contents; }
  .admin-page > .row.g-0.mkp-grid-list-layout > .col-sm:has(.mkp-grid-catalog) > .p-3 > .border-bottom {
    grid-column: 1;
    grid-row: 1;
    border: 0 !important;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout > .col-sm:has(.mkp-grid-catalog) > .p-3 > .table-responsive {
    grid-column: 1 / -1;
    min-width: 0;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(.mkp-grid-catalog) .nav-tabs {
    gap: 4px;
    margin: 0;
    padding: 0;
    border: 0;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(.mkp-grid-catalog) .nav-tabs .nav-link {
    padding: 7px 10px;
    border: 1px solid transparent;
    border-radius: var(--mkp-radius-sm);
    color: var(--mkp-muted-foreground);
    font-size: 13px;
    line-height: 20px;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(.mkp-grid-catalog) .nav-tabs .nav-link:is(.active, :hover, :focus-visible) {
    border-color: var(--mkp-border);
    background: var(--mkp-muted);
    color: var(--mkp-foreground);
  }
}

/* In the shared list composition, filtering and importing are secondary to
   creating a record. Keep their original controls and handlers, with a quiet
   outline so the primary action is easy to find. */
.admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column #inbox-menu button.btn-primary,
.admin-page > .row.g-0.mkp-grid-list-layout:has(> .admin-filter-column) > .col-sm:has(.k-grid) > .mt-4.mx-4 > button[data-bs-toggle="modal"] {
  --bs-btn-color: var(--mkp-foreground);
  --bs-btn-bg: var(--mkp-surface);
  --bs-btn-border-color: var(--mkp-border);
  --bs-btn-hover-color: var(--mkp-foreground);
  --bs-btn-hover-bg: var(--mkp-muted);
  --bs-btn-hover-border-color: var(--mkp-border);
  --bs-btn-active-color: var(--mkp-foreground);
  --bs-btn-active-bg: var(--mkp-muted);
  --bs-btn-active-border-color: var(--mkp-border);
  color: var(--mkp-foreground);
  background-color: var(--mkp-surface);
  border-color: var(--mkp-border);
  box-shadow: none;
}
.admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column #inbox-menu button.btn-primary:hover,
.admin-page > .row.g-0.mkp-grid-list-layout:has(> .admin-filter-column) > .col-sm:has(.k-grid) > .mt-4.mx-4 > button[data-bs-toggle="modal"]:hover {
  background-color: var(--mkp-muted);
}
@media (max-width: 575.98px) {
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column > .p-3:has(> #inbox-menu.collapse:not(.show)) {
    padding-block: 8px !important;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column > .p-3:has(> #inbox-menu.collapse:not(.show)) > .mb-3:has(> [data-bs-toggle="collapse"]) {
    margin-bottom: 0 !important;
  }
}

/* Both .Scrollable(false) direct tables and split header/content tables. */
.k-grid :is(.k-grid-header, .k-grid-header-wrap, .k-table-thead, .k-table-th) {
  color: var(--mkp-muted-foreground);
  background: var(--mkp-surface);
  border-color: var(--mkp-border);
}
.k-grid :is(.k-grid-table, .k-grid-header-table) > thead > tr > th {
  height: 40px;
  padding: 6px var(--mkp-grid-cell-x);
  border-inline-width: 0;
  border-bottom: 1px solid var(--mkp-border);
  font-size: 13px;
  font-weight: 500;
  line-height: 20px;
  vertical-align: middle;
}
.k-grid .k-grid-header .k-cell-inner > .k-link {
  color: inherit;
  gap: 4px;
}
.k-grid .k-grid-header :is(.k-sort-icon, .k-sort-order) { color: var(--mkp-foreground); }
.k-grid .k-grid-header :is(.k-grid-header-menu, .k-grid-filter) {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  padding: 6px;
  margin-inline: 0;
  border-radius: var(--mkp-radius-sm);
  color: var(--mkp-muted-foreground);
}
/* Keep menu affordances visible but quieter than the column title. */
.k-grid .k-grid-header :is(.k-grid-header-menu, .k-grid-filter) .k-svg-icon { width: 14px; height: 14px; }
.k-grid .k-grid-header .k-table-th.k-sorted { background: var(--mkp-surface); }
.k-grid .k-grid-header :is(.k-grid-header-menu, .k-grid-filter):hover,
.k-grid .k-grid-header :is(.k-grid-header-menu, .k-grid-filter).k-active {
  color: var(--mkp-foreground);
  background: var(--mkp-muted);
}
/* The base's tenant-link selector has four classes of specificity. These
   widget controls must keep a neutral icon even when rendered as anchors. */
.k-grid .k-grid-header th.k-header a:is(.k-grid-header-menu, .k-grid-column-menu, .k-grid-filter),
.k-grid .k-grid-table td.k-hierarchy-cell > a.k-icon {
  color: var(--mkp-muted-foreground);
}
.k-grid .k-grid-header th.k-header a:is(.k-grid-header-menu, .k-grid-column-menu, .k-grid-filter):hover,
.k-grid .k-grid-table td.k-hierarchy-cell > a.k-icon:hover {
  color: var(--mkp-foreground);
}
.k-grid :is(.k-grid-table, .k-grid-header-table) > tbody > tr > td,
.k-grid > .k-grid-table > tbody > tr > td {
  padding: var(--mkp-grid-cell-y) var(--mkp-grid-cell-x);
  border-inline-width: 0;
  border-bottom: 1px solid var(--mkp-border);
  vertical-align: middle;
  line-height: 20px;
}
.k-grid :is(.k-grid-content, .k-grid-content-locked),
.k-grid :is(.k-alt, .k-table-alt-row) { background: var(--mkp-surface); }
.k-grid .k-grid-table col.k-sorted { background: transparent; }
.k-grid .k-table-tbody > .k-table-row:not(.k-detail-row):hover > td,
.k-grid .k-grid-table > tbody > tr:not(.k-detail-row):hover > td {
  background-color: #fafafa;
}
.k-grid .k-grid-table > tbody > tr:is(.k-selected, .k-state-selected) > td,
.k-grid .k-grid-table > tbody > tr > td.k-selected {
  color: var(--mkp-foreground);
  background-color: var(--mkp-selection);
}
.k-grid .k-grid-table > tbody > tr:last-child > td { border-bottom-width: 0; }
.k-grid .k-grid-table > tfoot > tr > td,
.k-grid .k-group-footer > td,
.k-grid .k-grouping-row > td {
  background: var(--mkp-muted);
  font-weight: 500;
  border-color: var(--mkp-border);
}
.k-grid .k-grouping-header {
  padding: 8px 12px;
  color: var(--mkp-muted-foreground);
  background: var(--mkp-surface);
  border-bottom-color: var(--mkp-border);
  font-size: 13px;
}

/* Metadata classes are additive: never reformat numbers or replace templates. */
.k-grid .mkp-grid-number {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.k-grid th.mkp-grid-number .k-cell-inner > .k-link { justify-content: flex-end; }
.k-grid td.mkp-grid-number { white-space: nowrap; }
.k-grid td .k-numerictextbox .k-input-inner { text-align: right; }
.k-grid td :is(.badge, .k-badge) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  max-width: 100%;
  padding: 2px 7px;
  border: 1px solid var(--mkp-border);
  border-radius: 9999px;
  font-size: 12px;
  font-weight: 500;
  line-height: 16px;
  vertical-align: middle;
}
.k-grid td .badge:not(a):not(button) {
  color: var(--mkp-badge-foreground) !important;
  background-color: var(--mkp-badge-background) !important;
}
/* Named workflow pills and semantic icons keep the page's status palette.
   Bootstrap badge colors come from the shared semantic badge tokens above. */
.k-grid td .badge :is(.fa, .material-icons) { font-size: 12px; }

/* Row commands: retain all links, click targets and confirmation handlers. */
.k-grid .k-grid-table > tbody > tr > td :is(.btn, .k-grid-edit, .k-grid-delete, .k-grid-update, .k-grid-cancel, .k-grid-remove, .k-grid-save-command, .k-grid-cancel-command, .k-grid-edit-command, .k-grid-remove-command) {
  min-height: 32px;
  min-width: 32px;
  padding: 5px 8px;
  border-radius: var(--mkp-radius-sm);
  font-size: 13px;
  line-height: 20px;
  font-weight: 500;
  vertical-align: middle;
}
.k-grid .k-grid-table > tbody > tr > td :is(.btn-secondary, .btn-light, .k-grid-edit, .k-grid-delete, .k-grid-remove, .k-grid-cancel, .k-grid-edit-command, .k-grid-remove-command, .k-grid-cancel-command) {
  color: var(--mkp-foreground);
  background: transparent;
  border-color: transparent;
  box-shadow: none;
}
.k-grid .k-grid-table > tbody > tr > td :is(.btn-secondary, .btn-light, .k-grid-edit, .k-grid-delete, .k-grid-remove, .k-grid-cancel, .k-grid-edit-command, .k-grid-remove-command, .k-grid-cancel-command):hover {
  color: var(--mkp-foreground);
  background: var(--mkp-muted);
  border-color: #d4d4d8;
}
.k-grid td .btn-group { white-space: nowrap; }
.k-grid td .btn-group > .btn { flex: 0 0 auto; }
.k-grid .k-hierarchy-cell { text-align: center; }
.k-grid .k-hierarchy-cell > :is(.k-icon, .k-svg-icon) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 6px;
  border-radius: var(--mkp-radius-sm);
  color: var(--mkp-muted-foreground);
}
.k-grid .k-hierarchy-cell > :is(.k-icon, .k-svg-icon):hover { background: var(--mkp-muted); color: var(--mkp-foreground); }
.k-grid .k-grid-table > tbody > .k-detail-row > td {
  padding: 16px;
  background: #fafafa;
}
.k-grid .k-grid-table > tbody > .k-detail-row > .k-hierarchy-cell { padding: 0; }
.k-grid .k-detail-cell > .k-grid { margin: 0; }
/* One enclosing surface is enough for a nested tabstrip/table. */
.k-grid .k-detail-cell > .k-tabstrip {
  border: 0;
  background: transparent;
  box-shadow: none;
}
.k-grid .k-detail-cell > .k-tabstrip > .k-tabstrip-content {
  padding: 12px 0 0;
  border: 0;
  background: transparent;
}
.k-grid .k-detail-cell .k-grid {
  border-inline: 0;
  border-radius: 0;
  box-shadow: none;
}
.k-grid .k-edit-cell { background: var(--mkp-surface); }
.k-grid .k-edit-cell :is(.k-input, .k-picker, .form-control, .form-select) { min-width: 0; max-width: 100%; }

/* Thumbnail metadata excludes country flags and images in detail templates. */
.k-grid td.mkp-grid-media img {
  width: 36px !important;
  height: 36px !important;
  object-fit: contain;
}
.k-grid td.mkp-grid-media .rounded-circle { object-fit: cover; }
.k-grid td.mkp-grid-label-stack > div {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-inline-end: 10px;
  line-height: 20px;
}
.k-grid td.mkp-grid-label-stack > div:last-child { margin-inline-end: 0; }
.k-grid td.mkp-grid-label-stack small { font-size: 12px; }
.k-grid td.mkp-grid-label-stack { white-space: normal; }
.k-grid td.mkp-grid-label-stack > div { white-space: nowrap; }
.k-grid td.mkp-grid-label-stack .fa { font-size: 12px; }
.k-grid td.mkp-grid-label-stack > div:has(.fa-ban) { color: var(--mkp-muted-foreground); }
/* Names are working data: wrap at word boundaries rather than hiding variants
   behind ellipses. Secondary collection/group labels retain their full text. */
.k-grid.mkp-grid-catalog :is(.k-grid-header-table, .k-grid-table) > colgroup > col:not([style*="width"]) {
  width: auto;
}
.k-grid.mkp-grid-catalog .k-grid-header th { font-size: 13px; }
.k-grid.mkp-grid-catalog td:has(> .fw-bolder) { font-size: 13px; }
.k-grid.mkp-grid-catalog td > .fw-bolder { font-weight: 500 !important; }
.k-grid td.mkp-grid-product-name > div > a {
  display: block;
  white-space: normal;
  overflow-wrap: anywhere;
  font-weight: 500;
}
/* The product name remains the row's link, but hundreds of saturated labels
   overwhelm the data. Reveal its link color on interaction. */
.k-grid .k-grid-table td.mkp-grid-product-name > div > a:not(.btn) { color: var(--mkp-foreground); }
.k-grid .k-grid-table td.mkp-grid-product-name > div > a:not(.btn):is(:hover, :focus-visible) {
  color: var(--mkp-link);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.k-grid.mkp-grid-catalog .k-grid-table td :is(.fa-square-o, .fa-check-square-o) {
  color: var(--mkp-muted-foreground) !important;
}
.k-grid td.mkp-grid-product-name > small {
  display: block;
  white-space: normal;
  color: var(--mkp-muted-foreground);
}
.k-grid td.mkp-grid-product-name > small .badge {
  display: inline;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent !important;
  color: inherit !important;
  font-weight: 400;
}
.k-grid td.mkp-grid-product-name > small .badge + .badge::before {
  content: " / ";
}
.k-grid td.mkp-grid-number > .text-center { text-align: right !important; }
/* Plain quantities need no badge, but numeric scores can carry an explicit
   semantic state. Preserve those Bootstrap variants and their contrast. */
.k-grid .k-grid-table td.mkp-grid-number .badge:not(a):not(button):not(:is(.text-bg-success, .text-bg-warning, .text-bg-danger, .text-bg-info, .bg-success, .bg-warning, .bg-danger, .bg-info, .bg-success-subtle, .bg-warning-subtle, .bg-danger-subtle, .bg-info-subtle)) {
  min-width: 0;
  padding: 0 !important;
  border: 0;
  border-radius: 0;
  background: transparent !important;
  color: var(--mkp-foreground) !important;
  font-size: inherit;
  font-weight: 400;
}
/* A noninteractive quantity must not masquerade as a filled primary action. */
.k-grid .k-grid-table td.mkp-grid-number span.btn:not([role="button"]):not([onclick]) {
  min-height: 24px;
  min-width: 0;
  padding: 2px 7px;
  border: 1px solid var(--mkp-border);
  border-radius: var(--mkp-radius-sm);
  background: var(--mkp-badge-background) !important;
  color: var(--mkp-badge-foreground) !important;
  font-size: 13px;
  line-height: 18px;
  cursor: default;
  box-shadow: none;
}
/* Legacy stock report links use btn-success. They are secondary row commands;
   neutral outlines also avoid inheriting a dark link on a tenant-filled button. */
.k-grid .k-grid-table td.mkp-grid-number a.btn {
  background: var(--mkp-surface);
  color: var(--mkp-foreground) !important;
  border-color: var(--mkp-border);
  box-shadow: none;
}
.k-grid .k-grid-table td.mkp-grid-number a.btn:hover { background: var(--mkp-muted); }

/* Read-only split-table grids already have a native scroll viewport. Limit that
   viewport, not the rows/page size, so the pager remains near the working area.
   Explicit heights, virtual and editable grids keep their existing geometry. */
.k-grid.mkp-grid-bounded > .k-grid-container > .k-grid-content,
.k-grid.mkp-grid-bounded > .k-grid-content { max-height: clamp(320px, 56vh, 600px); }
.k-grid.mkp-grid-people .k-grid-table > tbody > tr > td { min-width: 0; }
.k-grid.mkp-grid-people td.mkp-grid-identifier { white-space: nowrap; text-overflow: clip; }
.k-grid.mkp-grid-people td.mkp-grid-text,
.k-grid.mkp-grid-people td.mkp-grid-text > .fw-bold {
  white-space: normal;
  overflow-wrap: break-word;
  overflow: visible;
  text-overflow: clip;
  font-weight: 400 !important;
}
.k-grid.mkp-grid-people td.mkp-grid-secondary-name,
.k-grid.mkp-grid-people td.mkp-grid-identity:not(.mkp-grid-name),
.k-grid.mkp-grid-people td.mkp-grid-identity:not(.mkp-grid-name) > .fw-bold {
  white-space: normal;
  overflow-wrap: break-word;
  overflow: visible;
  text-overflow: clip;
  font-weight: 400 !important;
}
.k-grid.mkp-grid-people td.mkp-grid-name,
.k-grid.mkp-grid-people td.mkp-grid-name > .fw-bold { font-weight: 500 !important; }
.k-grid.mkp-grid-people td.mkp-grid-secondary-name { overflow-wrap: normal; }
/* Full names wrap at word boundaries; contacts remain on one readable line.
   Their measured minimum widths are applied to both Kendo table colgroups. */
.k-grid.mkp-grid-people td.mkp-grid-referrer {
  white-space: normal;
  overflow-wrap: normal;
  overflow: visible;
  text-overflow: clip;
}
.k-grid.mkp-grid-people td.mkp-grid-text.mkp-grid-email {
  white-space: normal;
  overflow-wrap: anywhere;
}
.k-grid.mkp-grid-pricing td { white-space: normal; overflow-wrap: anywhere; }
.k-grid.mkp-grid-pricing td.mkp-grid-number { white-space: nowrap; overflow-wrap: normal; }
.k-grid.mkp-grid-pricing .k-column-title { white-space: normal; }
.k-grid.mkp-grid-people td.mkp-grid-text :is(.text-truncate, .d-inline-block) {
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
}
.k-grid.mkp-grid-people td:not(.mkp-grid-name) { font-size: 13px; }
.k-grid.mkp-grid-people td.mkp-grid-text:not(.mkp-grid-name) { color: var(--mkp-foreground); }
.k-grid.mkp-grid-people td.mkp-grid-text { padding-block: 8px; }
.k-grid.mkp-grid-people td.mkp-grid-media img { width: 32px !important; height: 32px !important; }
.k-grid.mkp-grid-people td.mkp-grid-text:focus-visible { outline: 2px solid var(--mkp-muted-foreground); outline-offset: -2px; }
.k-grid.mkp-grid-people .k-grid-header .k-column-title { white-space: normal; overflow-wrap: normal; }
.k-grid.mkp-grid-people .k-grid-header th { padding-inline: 8px; font-size: 13px; }
.k-grid.mkp-grid-people .k-grid-header :is(.k-grid-header-menu, .k-grid-column-menu) {
  width: 18px;
  padding-inline: 2px;
}
.k-grid.mkp-grid-people .k-grid-table td .btn-group > .btn {
  background: transparent;
  color: var(--mkp-foreground) !important;
  border-color: transparent;
  box-shadow: none;
  border-radius: var(--mkp-radius-sm);
  margin-inline-start: 0;
}
.k-grid.mkp-grid-people .k-grid-table td .btn-group { gap: 2px; }
.k-grid.mkp-grid-people .k-grid-table td .btn-group > .btn:hover { background: var(--mkp-muted); }
/* On desktop, keep commands reachable while wide lists scroll. The pinned
   surface is opaque; small viewports keep the full native scrolling area. */
@media (min-width: 1100px) {
  .k-grid.mkp-grid-people .mkp-grid-commands {
    position: sticky;
    right: 0;
    z-index: 1;
    background: var(--mkp-surface);
    box-shadow: -1px 0 0 var(--mkp-border);
  }
  .k-grid.mkp-grid-people th.mkp-grid-commands { z-index: 2; }
}

/* A legacy row action may have text-white without a Bootstrap button variant.
   All secondary commands need an explicit, contrasting foreground/surface. */
.k-grid .k-grid-table td .btn:not(.btn-primary):not(.btn-success):not(.btn-danger):not(.btn-outline-danger) {
  color: var(--mkp-foreground) !important;
  background-color: var(--mkp-surface);
  border-color: var(--mkp-border);
}
.k-grid .k-grid-table td .btn:not(.btn-primary):not(.btn-success):not(.btn-danger):not(.btn-outline-danger):hover {
  background-color: var(--mkp-muted);
}

/* Compact filter bands: adjacent checkboxes form a group, and the sorting
   control never expands into a largely empty third of the toolbar. */
@media (min-width: 1100px) {
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column #inbox-menu > .mb-3:has(> input[type="checkbox"]) {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    padding-inline-end: 12px;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .col-sm .k-grid) > .admin-filter-column #inbox-menu > .mb-3:has(> #ordering) {
    flex: 0 1 200px;
    margin-inline-start: auto !important;
  }
  /* Customer filters and the create action use one row; keep DOM/tab order. */
  .admin-page > .row.g-0.mkp-grid-list-layout:has(> .admin-filter-column):has(> .col-sm .mkp-grid-people) {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
  }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(.mkp-grid-people) > .col-sm:has(.k-grid) { display: contents; }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(.mkp-grid-people) > .admin-filter-column { grid-column: 1; grid-row: 1; }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(.mkp-grid-people) > .col-sm > .mt-4.mx-4 { grid-column: 2; grid-row: 1; margin: 0 !important; }
  .admin-page > .row.g-0.mkp-grid-list-layout:has(.mkp-grid-people) > .col-sm > .p-3 { grid-column: 1 / -1; grid-row: 2; min-width: 0; width: 100%; }
}

/* Kendo defaults to overflow-y:scroll even when there are no rows. Keep the
   empty viewport aligned with its header while removing the redundant bar. */
.k-grid.mkp-grid-empty:not(:has(.k-virtual-scrollable-wrap)) > .k-grid-container > .k-grid-content,
.k-grid.mkp-grid-empty:not(:has(.k-virtual-scrollable-wrap)) > .k-grid-content { overflow-y: auto; }

/* Empty toolbars still follow the base's display:none rule. Kendo controls its
   own overflow visibility; do not override its display/hidden attributes. */
.k-grid .k-grid-toolbar {
  gap: 8px;
  padding: 10px 12px;
  background: var(--mkp-surface);
  border-bottom: 1px solid var(--mkp-border);
  border-radius: var(--mkp-radius) var(--mkp-radius) 0 0;
}
.k-grid-toolbar :is(.k-button, .btn) { min-height: 32px; padding: 5px 10px; margin: 0; font-size: 13px; line-height: 20px; }
.k-grid-toolbar .k-grid-search {
  flex: 0 1 250px;
  min-width: 140px;
  min-height: 32px;
  border-radius: var(--mkp-radius-sm);
}
.k-grid .k-filter-row > td { padding: 6px 8px; background: #fafafa; }
.k-grid .k-filtercell > span { min-width: 0; }
.k-grid .k-filter-row :is(.k-input, .k-picker) { min-height: 32px; }

/* Pagination stays in its original DOM order, including its responsive select. */
.k-grid .k-grid-pager {
  flex-wrap: wrap;
  gap: 8px 12px;
  padding: 12px;
  background: var(--mkp-surface);
  border-top: 1px solid var(--mkp-border);
  border-radius: 0 0 var(--mkp-radius) var(--mkp-radius);
  color: var(--mkp-muted-foreground);
  font-size: 13px;
  line-height: 20px;
}
.k-grid-pager :is(.k-pager-numbers-wrap, .k-pager-numbers) { gap: 4px; }
.k-grid .k-grid-pager :is(.k-pager-nav, .k-pager-numbers .k-button, .k-pager-refresh) {
  min-width: 32px;
  height: 32px;
  padding: 5px;
  margin: 0;
  border: 1px solid var(--mkp-border);
  border-radius: var(--mkp-radius-sm);
  color: var(--mkp-foreground);
  background: var(--mkp-surface);
  font-size: 13px;
  line-height: 20px;
  box-shadow: none;
}
.k-grid .k-grid-pager .k-pager-numbers .k-button { border-color: transparent; }
/* The vendor flat-button variant makes its border transparent with !important. */
.k-grid .k-grid-pager :is(.k-pager-nav, .k-pager-refresh).k-button-flat {
  border-color: var(--mkp-border) !important;
}
.k-grid .k-grid-pager :is(.k-pager-nav, .k-pager-numbers .k-button, .k-pager-refresh):hover {
  background: var(--mkp-muted);
  color: var(--mkp-foreground);
}
.k-grid .k-grid-pager .k-pager-numbers .k-selected {
  border-color: var(--mkp-border);
  color: var(--mkp-foreground);
  background: var(--mkp-muted);
  font-weight: 600;
}
.k-grid .k-grid-pager .k-button::before { background: transparent; }
.k-grid .k-grid-pager .k-disabled { opacity: .4; }
.k-grid-pager .k-pager-sizes { gap: 8px; margin: 0; }
.k-grid-pager .k-pager-sizes .k-picker { min-width: 70px; height: 32px; }
.k-grid-pager .k-pager-info { padding: 0; color: var(--mkp-muted-foreground); font-size: 12px; }

/* Three native page buttons on desktop, a native page select in narrow grids.
   Explicit visibility takes precedence over Kendo's prior inline measurements;
   page-size controls and refresh remain available at every width. */
.k-grid.mkp-grid-pager-ready > .k-grid-pager { flex-shrink: 0; }
.k-grid.mkp-grid-pager-ready > .k-grid-pager .k-pager-numbers { display: flex !important; }
.k-grid.mkp-grid-pager-ready > .k-grid-pager .k-pager-numbers-wrap > select { display: none !important; }
.k-grid.mkp-grid-pager-ready > .k-grid-pager :is(.k-pager-info, .k-pager-refresh),
.k-grid.mkp-grid-pager-ready > .k-grid-pager .k-pager-sizes > * { display: inline-flex !important; }
.k-grid.mkp-grid-pager-compact > .k-grid-pager .k-pager-numbers { display: none !important; }
.k-grid.mkp-grid-pager-compact > .k-grid-pager .k-pager-numbers-wrap > select {
  display: block !important;
  height: 32px;
  margin-inline: 4px;
  border-color: var(--mkp-border);
  font: inherit;
}
.k-grid.mkp-grid-empty > .k-grid-pager .k-pager-numbers-wrap,
.k-grid.mkp-grid-empty > .k-grid-pager .k-pager-input,
.k-grid.mkp-grid-empty > .k-grid-pager .k-pager-nav { display: none !important; }
.k-grid.mkp-grid-pager-ready > .k-grid-pager .k-pager-info {
  order: -3;
  flex: 1 1 auto;
  justify-content: flex-start;
  white-space: nowrap;
}
.k-grid.mkp-grid-pager-ready > .k-grid-pager .k-pager-sizes {
  order: -2;
  flex: 0 0 auto;
  margin-inline-end: 12px;
  white-space: nowrap;
}
.k-grid.mkp-grid-pager-ready > .k-grid-pager .k-pager-sizes > .k-picker { order: 1; }
/* Narrow pagination uses Kendo's native page selector; first/last/refresh
   and page size remain available. The count gets a dedicated first line. */
.k-grid.mkp-grid-pager-compact > .k-grid-pager { gap: 4px; }
.k-grid.mkp-grid-pager-compact > .k-grid-pager .k-pager-info {
  flex-basis: 100%;
  min-height: 32px;
  align-items: center;
  padding-inline-end: 36px;
}
.k-grid.mkp-grid-pager-compact:not(.mkp-grid-empty):not(.mkp-grid-bounded-direct) > .k-grid-pager { position: relative; }
.k-grid.mkp-grid-pager-compact:not(.mkp-grid-empty) > .k-grid-pager .k-pager-refresh {
  position: absolute;
  inset-block-start: 8px;
  inset-inline-end: 8px;
}
.k-grid.mkp-grid-pager-compact > .k-grid-pager .k-pager-nav {
  min-width: 28px;
  width: 28px;
  padding-inline: 3px;
}
.k-grid.mkp-grid-pager-compact > .k-grid-pager .k-pager-numbers-wrap { gap: 4px; }
.k-grid.mkp-grid-pager-compact > .k-grid-pager .k-pager-numbers-wrap > select {
  min-width: 56px;
  margin-inline: 0;
}
.k-grid.mkp-grid-pager-compact > .k-grid-pager .k-pager-sizes {
  margin-inline-end: auto;
  gap: 0;
  font-size: 0;
}
.k-grid.mkp-grid-pager-compact > .k-grid-pager .k-pager-sizes > .k-picker {
  min-width: 70px;
  width: 70px;
  font-size: 13px;
}
.k-grid.mkp-grid-pager-compact > .k-grid-pager .k-pager-sizes .k-input-inner { padding-inline: 4px; }
.k-grid.mkp-grid-pager-compact > .k-grid-pager .k-pager-sizes .k-input-button { width: 24px; padding-inline: 4px; }
.k-grid.mkp-grid-pager-compact > .k-grid-pager .k-pager-sizes > span:not(.k-picker) { display: none !important; }
.k-grid.mkp-grid-empty > .k-grid-pager .k-pager-info { display: none !important; }
.k-grid.mkp-grid-empty > .k-grid-pager .k-pager-refresh { margin-inline-start: auto; }
/* Keep the empty pager in flow: page size is still an available operation,
   and its dropdown/refresh must never overlap the no-records message. */

/* Keep long direct tables (including expandable stock lists) and their pager
   in one working viewport. The table, detail rows and Kendo events stay intact. */
.k-grid.mkp-grid-bounded-direct {
  max-height: clamp(400px, 70vh, 720px);
  overflow: auto;
  position: relative;
}
.k-grid.mkp-grid-bounded-direct > .k-grid-table { flex: 0 0 auto; }
.k-grid.mkp-grid-bounded-direct > .k-grid-table > thead > tr > th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--mkp-surface);
}
.k-grid.mkp-grid-bounded-direct > .k-grid-pager {
  position: sticky;
  bottom: 0;
  left: 0;
  z-index: 3;
  box-shadow: 0 -1px 0 var(--mkp-border);
}

/* Kendo appends filter/column popups to body, outside the grid. Scope to grid
   popup classes so date pickers, editors and ordinary menus remain untouched. */
:is(.k-filter-menu.k-popup, .k-column-menu.k-popup, .k-columnmenu-popup) {
  max-width: calc(100vw - 24px);
  padding: 4px;
  border: 1px solid var(--mkp-border);
  border-radius: var(--mkp-radius);
  background: var(--mkp-surface);
  color: var(--mkp-foreground);
  box-shadow: 0 4px 16px rgb(0 0 0 / 10%);
  font-size: 13px;
}
.k-filter-menu .k-filter-menu-container { padding: 12px; }
:is(.k-column-menu, .k-columnmenu-popup) :is(.k-menu-link, .k-columnmenu-item) {
  min-height: 32px;
  padding: 6px 8px;
  border-radius: var(--mkp-radius-sm);
  color: var(--mkp-foreground);
  line-height: 20px;
}
:is(.k-column-menu, .k-columnmenu-popup) :is(.k-menu-link:hover, .k-columnmenu-item:hover, .k-selected, .k-hover) {
  color: var(--mkp-foreground);
  background: var(--mkp-muted);
}
.k-filter-menu :is(.k-action-buttons, .k-actions) { gap: 8px; }
.k-filter-menu .k-button { min-height: 32px; font-size: 13px; }
.k-filter-menu .k-check-all-wrap { border-color: var(--mkp-border); }
.k-filter-menu .k-multicheck-wrap { padding-block: 8px; }
.k-filter-menu .k-multicheck-wrap .k-item { padding-block: 4px; }
:is(.k-column-menu, .k-columnmenu-popup) :is(.k-menu-item, .k-columnmenu-item).k-focus {
  color: var(--mkp-foreground);
  background: var(--mkp-muted);
  box-shadow: inset 0 0 0 1px var(--mkp-muted-foreground);
  border-radius: var(--mkp-radius-sm);
}
:is(.k-column-menu, .k-columnmenu-popup) .k-menu:not(.k-context-menu) > .k-item:is(.k-focus, .k-selected, .k-hover),
:is(.k-column-menu, .k-columnmenu-popup) .k-menu-item:is(.k-focus, .k-selected, .k-hover) > .k-link {
  color: var(--mkp-foreground);
  background: var(--mkp-muted);
}
.k-filter-menu .k-filter-menu-container > :is(.k-picker, .k-input) { margin-block: 4px; }
.k-filter-menu .k-filter-menu-container > .k-filter-and { margin-block: 8px; }
@media (hover: hover) {
  .k-grid .k-grid-header :is(.k-grid-header-menu, .k-grid-filter) { opacity: .55; }
  .k-grid .k-grid-header th:hover :is(.k-grid-header-menu, .k-grid-filter),
  .k-grid .k-grid-header th:focus-within :is(.k-grid-header-menu, .k-grid-filter),
  .k-grid .k-grid-header :is(.k-grid-header-menu, .k-grid-filter).k-active { opacity: 1; }
}
.k-grid :is(.k-grid-norecords, .k-no-data) {
  min-height: 96px;
  color: var(--mkp-muted-foreground);
  background: var(--mkp-surface);
  text-align: center;
}
.k-grid .k-grid-norecords-template { padding: 32px 16px; width: 100%; border: 0; line-height: 24px; }
.k-grid .k-no-data > td { height: 96px; text-align: center; }
.k-grid .k-loading-mask .k-loading-color { background: var(--mkp-surface); opacity: .8; }
.k-grid .k-loading-mask .k-loading-image { color: var(--mkp-muted-foreground); }
.k-grid :is(.k-button, .btn, .k-link, .k-grid-header-menu, .k-hierarchy-cell > a):focus-visible,
.k-filter-menu .k-button:focus-visible,
.k-column-menu .k-menu-link:focus-visible {
  outline: 2px solid var(--mkp-muted-foreground);
  outline-offset: 2px;
}
@media (max-width: 767.98px) {
  .k-grid .k-grid-toolbar, .k-grid .k-grid-pager { padding: 8px; }
  .k-grid .k-grid-pager { gap: 8px; }
  .k-grid .k-grid-table > tbody > .k-detail-row > .k-detail-cell { padding: 8px; }
}
@media print {
  .k-grid.mkp-grid-bounded-direct { max-height: none; overflow: visible; }
  .k-grid.mkp-grid-bounded > .k-grid-container > .k-grid-content,
  .k-grid.mkp-grid-bounded > .k-grid-content { max-height: none; }
  .k-grid.mkp-grid-bounded-direct > .k-grid-table > thead > tr > th,
  .k-grid.mkp-grid-bounded-direct > .k-grid-pager { position: static; }
  .k-grid .k-grid-table > tbody > tr > td { background: white; }
  .k-grid .k-grid-pager { box-shadow: none; }
}
