/*
IMPORTANT:
In order to preserve the uniform grid appearance, all cell styles need to have padding, margin and border sizes.
No built-in (selected, editable, highlight, flashing, invalid, loading, :focus) or user-specified CSS
classes should alter those!
*/

@use './slick-docking';

.slick-header.slick-state-default, .slick-headerrow.slick-state-default, .slick-footerrow.slick-state-default, .slick-top-panel-scroller.slick-state-default, .slick-group-header.slick-state-default {
  width: 100%;
  overflow: auto;
  position: relative;
  border-left: 0px !important;
}

.slick-header.slick-state-default {
  overflow: inherit;
  border-top: 1px solid #d3d3d3;
}
.slick-header::-webkit-scrollbar,  .slick-headerrow::-webkit-scrollbar, .slick-footerrow::-webkit-scrollbar {
  display: none
}

.slick-header-columns, .slick-headerrow-columns, .slick-footerrow-columns, .slick-group-header-columns {
  position: relative;
  white-space: nowrap;
  cursor: default;
  overflow: hidden;
}

.slick-header-column.slick-state-default, .slick-group-header-column.slick-state-default {
  position: relative;
  display: inline-block;
  box-sizing: content-box !important; /* this here only for Firefox! */
  overflow: hidden;
  -o-text-overflow: ellipsis;
  text-overflow: ellipsis;
  height: 16px;
  line-height: 16px;
  margin: 0;
  padding: 4px;
  border-right: 1px solid silver;
  border-left: 0px !important;
  border-top: 0px !important;
  border-bottom: 0px !important;
  float: left;
  z-index: 1;
}

// Header elements also carry `slick-state-default`, which the docking rules
// key on. Keep the shared geometry for that class as well, while leaving the
// display/flex layout to the docking rules so split header regions remain aligned.
.slick-header-column.slick-state-default, .slick-group-header-column.slick-state-default {
  position: relative;
  box-sizing: content-box !important;
  overflow: hidden;
  -o-text-overflow: ellipsis;
  text-overflow: ellipsis;
  height: 16px;
  line-height: 16px;
  margin: 0;
  padding: 4px;
  border-right: 1px solid silver;
  border-left: 0 !important;
  border-top: 0 !important;
  border-bottom: 0 !important;
  z-index: 1;
}

.slick-footerrow-column.slick-state-default {
  -o-text-overflow: ellipsis;
  text-overflow: ellipsis;
  margin: 0;
  padding: 4px;
  border-right: 1px solid silver;
  border-left: 0px;
  border-top: 0px;
  border-bottom: 0px;
  float: left;
  line-height: 20px;
  vertical-align: middle;
}

.slick-headerrow-column.slick-state-default, .slick-footerrow-column.slick-state-default {
  padding: 4px;
}

.slick-header-column-sorted {
  font-style: italic;
}

.slick-sort-indicator {
  display: inline-block;
  width: 8px;
  height: 5px;
  margin-left: 4px;
  margin-top: 6px;
  float: left;
}

.slick-sort-indicator-numbered {
  display: inline-block;
  width: 8px;
  height: 5px;
  margin-left: 4px;
  margin-top: 0;
  line-height: 20px;
  float: left;
  font-family: Arial;
  font-style: normal;
  font-weight: bold;
  color: #6190CD;
}

.slick-sort-indicator-asc {
  margin-bottom: 8px;
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 3px;
  margin-top: 5px;
  vertical-align: middle;
  border-bottom: 4px dashed;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
  background-image: none;
  color: #3490dc;
}

.slick-sort-indicator-desc {
  margin-bottom: 5px;
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 3px;
  margin-top: 5px;
  vertical-align: middle;
  border-top: 4px dashed;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
  background-image: none;
  color: #3490dc;
}

.slick-resizable-handle {
  position: absolute;
  font-size: 0.1px;
  display: block;
  cursor: col-resize;
  width: 6px;
  right: 0;
  top: 0;
  height: 100%;
  z-index: 4;

  // The hover pill is a pseudo-element so the handle's own hit box never changes while it is hovered
  // (a rule that shrinks the hovered element drops the hover as soon as the cursor is on the shrunk part).
  &::after {
    content: '';
    position: absolute;
    left: 1px;
    top: 10%;
    bottom: 10%;
    width: 4px;
    box-sizing: border-box;
    border: 2px solid #7c7c7c;
    border-radius: 8px;
    opacity: 0;
  }

  &:hover::after {
    opacity: 0.4;
  }
}

.slick-sortable-placeholder {
  background: silver;
}

.grid-canvas {
  position: relative;
  outline: 0;
}

.slick-row.slick-widget-content, .slick-row.slick-state-active {
  position: absolute;
  border: 0px;
  width: 100%;
}

.slick-cell, .slick-headerrow-column , .slick-footerrow-column{
  position: absolute;
  border: 1px solid transparent;
  border-right: 1px dotted silver;
  border-bottom-color: silver;
  overflow: hidden;
  -o-text-overflow: ellipsis;
  text-overflow: ellipsis;
  vertical-align: middle;
  z-index: 1;
  padding: 1px 2px 2px 1px;
  margin: 0;
  white-space: nowrap;
  cursor: default;
}

.slick-cell, .slick-headerrow-column{
  border-bottom-color: silver;
}
.slick-footerrow-column {
  border-top-color: silver;
}

.slick-group {
}

.slick-group-toggle {
  display: inline-block;
}

.slick-cell.highlighted {
  background: lightskyblue;
  background: rgba(0, 0, 255, 0.2);
  -webkit-transition: all 0.5s;
  -moz-transition: all 0.5s;
  -o-transition: all 0.5s;
  transition: all 0.5s;
}

.slick-cell.flashing {
  border: 1px solid red !important;
}

.slick-cell.editable {
  z-index: 11;
  overflow: visible;
  background: white;
  border-color: black;
  border-style: solid;
}

.slick-large-editor-text {
  z-index: 10000;
  background: white;
  padding: 5px;
  border: 2px solid gray;
  border-radius: 10px;
}

.slick-cell:focus {
  outline: none;
}

// Rows involved in a RowSpan (`.slick-row.slick-rowspan`, the host and the rows it covers)
// are `top`-positioned and must keep `z-index: auto`: without a stacking context of their
// own, the host's spanning cell (a `.slick-cell` at z-index 1) paints above the transformed
// rows around it and above the covered rows' backgrounds in any render order. A z-index on
// the row would make each host and covered row its own stacking context, and a covered row
// rendered after its host would then paint over the lower part of the span.

.slick-reorder-proxy {
  display: inline-block;
  background: blue;
  opacity: 0.15;
  filter: alpha(opacity = 15);
  cursor: move;
}

.slick-reorder-guide {
  display: inline-block;
  height: 2px;
  background: blue;
  opacity: 0.7;
  filter: alpha(opacity = 70);
}

.slick-reorder-shadow-row {
  position: absolute;
  z-index: 999999;
  box-shadow: rgba(0, 0, 0, 0.2) 8px 2px 8px 4px, rgba(0, 0, 0, 0.19) 2px 2px 0px 0px;
}

.slick-selection {
  z-index: 10;
  position: absolute;
  border: 2px dashed black;
}

.slick-header {
  overflow: hidden;
  position: relative;
}

.slick-headerrow {
  overflow: hidden;
  position: relative;
}

.slick-top-panel-scroller {
  overflow: hidden;
  position: relative;
}

.slick-top-panel {
  width: 10000px
}

.slick-viewport {
  position: relative;
  outline: 0;
  width: 100%;
}

.slick-header-auto-height {
  // The left/right band wrappers are display: contents inside a docking chrome root, so the
  // measured height has to reach the root itself as well.
  .slick-header-columns,
  .slick-header-columns-root,
  .slick-header-columns-left,
  .slick-header-columns-right {
    height: var(--slick-auto-header-height);
    white-space: normal;
    overflow: visible;
  }

  .slick-header-column {
    height: auto;
    height: calc(var(--slick-auto-header-height) - 8px);
    overflow: visible;
  }

  .slick-column-name {
    white-space: pre-wrap;
    overflow: visible;
    text-overflow: clip;
  }
}

/* RTL (Right-to-Left) Support  */
.slick-rtl .slick-resizable-handle {
  right: auto;
  left: 0;
}

/* fallback ghost shown while dragging a column header via the mouse/touch fallback
   (Firefox on Linux, touch screens), where the native HTML5 drag image is unavailable */
.slick-header-column-drag-ghost {
  position: fixed;
  margin: 0;
  pointer-events: none;
  z-index: 9999;
  transform: translate(-8px, -8px);
}
