/**
 * css 书写规范
 * https://alidocs.dingtalk.com/i/nodes/Mk5evdR04jBV523gq4AgJQL3x2OlParn
 */

// ============================================================================
// 表格功能样式（共享部分）
// ============================================================================
//
// 此文件包含以下共享功能样式：
// 1. 固定列样式（左侧固定列、数据单元格固定列、表尾固定列）
// 2. 行基础样式、行高配置、行 hover 交互
// 3. 拖拽预览效果
// 4. 功能列表头、操作列表头样式
// 5. 添加字段列样式
//
// DraggableRow 专属样式（行选择、拖拽把手、功能列/操作列数据单元格等）
// 已迁移至 components/draggable-row/draggable-row.scss
// ============================================================================

.ai-table {
  // ============================================================================
  // 1. 固定列样式（左侧）
  // ============================================================================

  // 固定列样式（表头）
  &-sticky-column {
    position: sticky;
    left: 0;
    z-index: 21;
    background-color: var(--cnai-table-header-bg, var(--cnai-color-bg-base, #fff));
    max-width: 500px;

    // 右侧边框，使用伪元素避免与下一列叠加
    &::after {
      content: '';
      position: absolute;
      top: 0;
      right: -1px;
      bottom: 0;
      width: 1px;
      background-color: var(--cnai-table-header-bg, var(--cnai-color-bg-base, #fff));
      border-right: 1px solid var(--cnai-table-border-color, var(--cnai-color-border-light, #f0f0f0));
      z-index: 12;
      pointer-events: none;
    }

    &.ai-table-header-cell.ai-table-column-selected {
      background-color: var(--cnai-table-column-selected-bg, var(--cnai-color-bg-selected-alt, #f0f5ff));
      border-color: var(--cnai-table-column-selected-border, var(--cnai-color-border-base, #e7e8ed));

      &::after {
        background-color: var(--cnai-table-column-selected-bg, var(--cnai-color-bg-selected-alt, #f0f5ff));
        border-color: var(--cnai-table-column-selected-border, var(--cnai-color-border-base, #e7e8ed));
      }
    }
  }

  // 功能列表头：盖住右侧滑入列 + 圆角外侧缝（横向滚动）
  &-header-cell.ai-table-action-column-header.ai-table-sticky-column {
    z-index: 22;
    isolation: isolate;
    box-shadow:
      -4px 0 0 0 var(--cnai-table-header-bg, var(--cnai-color-bg-base, #fff)),
      -1px 0 0 0 var(--cnai-table-border-color, var(--cnai-color-border-light, #f0f0f0));
  }

  // 表头末格：底角圆角 + 横向滚动时防透
  thead tr .ai-table-header-cell:last-child {
    isolation: isolate;
  }

  // 最后一个固定列显示右侧阴影
  &-sticky-column-last {
    box-shadow: 2px 0 2px rgba(0, 0, 0, 0.04);
  }

  // 数据单元格固定列
  &-data {
    &-cell {
      &.ai-table-sticky-column {
        position: sticky;
        left: 0;
        z-index: 12;
        background: var(--cell-fill-bg, none), var(--cell-follow-bg, none), var(--cnai-table-cell-bg, var(--cnai-color-bg-base, #fff));
        max-width: 500px;

        &::after {
          content: '';
          position: absolute;
          top: 0;
          right: -1px;
          bottom: 0;
          width: 1px;
          background: var(--cell-fill-bg, none), var(--cell-follow-bg, none), var(--cnai-table-cell-bg, var(--cnai-color-bg-base, #fff));
          border-right: 1px solid var(--cnai-table-border-color, var(--cnai-color-border-light, #f0f0f0));
          z-index: 12;
          pointer-events: none;
        }

        &.ai-table-column-selected {
          background: var(--cell-fill-bg, none), var(--cell-follow-bg, none), var(--cnai-table-column-selected-bg, var(--cnai-color-bg-selected-alt, #f0f5ff));
          border-color: var(--cnai-table-column-selected-border, var(--cnai-color-border-base, #e7e8ed));

          &::after {
            background: var(--cell-fill-bg, none), var(--cell-follow-bg, none), var(--cnai-table-column-selected-bg, var(--cnai-color-bg-selected-alt, #f0f5ff));
            border-color: var(--cnai-table-column-selected-border, var(--cnai-color-border-base, #e7e8ed));
          }
        }

        &.ai-table-cell-editing {
          box-shadow: inset 0 0 0 2px var(--cnai-color-link, #1890ff);
        }

        &.ai-table-cell-editing-ai {
          box-shadow: inset 0 0 0 2px var(--cnai-table-cell-editing-ai-border, #9333ea);
        }

        &.ai-table-action-column {
          z-index: 15;
          isolation: isolate;
          box-shadow:
            -4px 0 0 0 var(--cnai-table-cell-bg, var(--cnai-color-bg-base, #fff)),
            -1px 0 0 0 var(--cnai-table-border-color, var(--cnai-color-border-light, #f0f0f0));
        }
      }
    }
  }

  // 数据单元格固定列单元格选中
  &-data-cell.ai-table-sticky-column.ai-table-cell-selected {
    outline: none;
    box-shadow: inset 0 0 0 2px var(--cnai-table-cell-selected-border, #000000);
  }

  &-data-cell.ai-table-action-column.ai-table-sticky-column.ai-table-cell-selected {
    box-shadow:
      -4px 0 0 0 var(--cnai-table-cell-bg, var(--cnai-color-bg-base, #fff)),
      -1px 0 0 0 var(--cnai-table-border-color, var(--cnai-color-border-light, #f0f0f0)),
      inset 0 0 0 2px var(--cnai-table-cell-selected-border, #000000);
  }

  &-data-cell.ai-table-sticky-column-last.ai-table-cell-selected {
    box-shadow:
      2px 0 2px rgba(0, 0, 0, 0.04),
      inset 0 0 0 2px var(--cnai-table-cell-selected-border, #000000);
  }

  // 固定第一列的表尾单元格
  &-footer {
    &-cell {
      &.ai-table-sticky-column {
        position: sticky;
        left: 0;
        z-index: 11;
        background-color: var(--cnai-table-footer-bg, #fafafa) !important;
        max-width: 500px !important;
        border-left: 1px solid var(--cnai-table-border-color, var(--cnai-color-border-light, #f0f0f0)) !important;
        border-right: 1px solid var(--cnai-table-border-color, var(--cnai-color-border-light, #f0f0f0)) !important;

        // 右侧边框，使用伪元素避免与下一列叠加
        &::after {
          content: '';
          position: absolute;
          top: 0;
          right: -1px;
          bottom: 0;
          width: 1px;
          background-color: var(--cnai-table-footer-bg, #fafafa);
          border-right: 1px solid var(--cnai-table-border-color, var(--cnai-color-border-light, #f0f0f0));
          z-index: 12;
          pointer-events: none;
        }
      }
    }
  }

  // ============================================================================
  // 2. 行样式、行高配置、拖拽功能、行选择样式
  // ============================================================================

  // 表格行样式
  &-row {
    cursor: default;
    transition: background-color 0.2s ease;

    // 行高配置
    &-low {
      height: 40px;
      --table-cell-height: 40px;

      .ai-table-header-cell,
      .ai-table-data-cell,
      .ai-table-footer-cell {
        // low 模式下不需要额外的 padding
      }
    }

    &-medium {
      height: 42px;
      --table-cell-height: 42px;

      .ai-table-header-cell,
      .ai-table-data-cell,
      .ai-table-footer-cell {
        padding-top: 12px;
        padding-bottom: 12px;
      }
    }

    &-high {
      height: 52px;
      --table-cell-height: 52px;

      .ai-table-header-cell,
      .ai-table-data-cell,
      .ai-table-footer-cell {
        padding-top: 16px;
        padding-bottom: 16px;
      }
    }

    // 智能跟单运行中的行 - 外边框样式
    // 通过给单元格添加边框来实现行的外边框效果
    // 使用渐变色模拟：左边 #5571FF，上下 #7963FF（中间色），右边 #4463FF
    // 背景色：明确使用 fill + follow + 底色 三层叠加，确保填色与跟单色同时可见
    &-special-border {
      // 所有数据单元格：显式设置三层背景，避免被其他规则覆盖导致填色丢失
      > td.ai-table-data-cell {
        background: var(--cell-fill-bg, none), var(--cell-follow-bg, none),
          var(--cnai-table-cell-bg, var(--cnai-color-bg-base, #fff));
      }

      // 所有单元格添加上下边框（无左右边框）
      > td {
        border-top: 2px solid var(--cnai-table-special-border-color, #7963ff) !important;
        border-bottom: 2px solid var(--cnai-table-special-border-color, #7963ff) !important;
        border-left: none !important;
        border-right: none !important;
      }

      // 固定列：保持叠层，固定列伪元素也需继承填色
      > td.ai-table-sticky-column {
        background: var(--cell-fill-bg, none), var(--cell-follow-bg, none),
          var(--cnai-table-cell-bg, var(--cnai-color-bg-base, #fff));

        &::after {
          background: var(--cell-fill-bg, none), var(--cell-follow-bg, none),
            var(--cnai-table-cell-bg, var(--cnai-color-bg-base, #fff));
        }
      }

      // 操作列：保持叠层，不覆盖填色
      > td.ai-table-operate-column-cell {
        background: var(--cell-fill-bg, none), var(--cell-follow-bg, none),
          var(--cnai-table-cell-bg, var(--cnai-color-bg-base, #fff));
      }

      // 第一个单元格（功能列）添加左边框和圆角
      > td:first-child {
        border-left: 2px solid var(--cnai-table-special-border-color, #5571ff) !important;
        border-top-left-radius: 4px;
        border-bottom-left-radius: 4px;
      }

      // 最后一个单元格添加右边框和圆角
      > td:last-child {
        border-right: 2px solid var(--cnai-table-special-border-color, #4463ff) !important;
        border-top-right-radius: 4px;
        border-bottom-right-radius: 4px;
      }

      // 左上角角标样式
      .ai-table-special-border-badge {
        position: absolute;
        top: 0;
        left: 0;
        width: 16px;
        height: 16px;
        z-index: 12;
        border-radius: 0 0 8px 0;
        background: var(--cnai-gradient-brand, linear-gradient(135deg, #a17dff 36%, #4b3bff 96%));
        display: flex;
        align-items: center;
        justify-content: center;
        // animation: badge-breathe 2s infinite;

        // @keyframes badge-breathe {
        //   0%   { transform: scale(1); opacity: 1; }
        //   50%  { transform: scale(1.05); opacity: 0.92; }
        //   100% { transform: scale(1); opacity: 1; }
        // }

        img {
          width: 10px;
          height: 10px;
          margin: 0 2px 2px 0;
        }
      }

      // 如果后面紧跟着另一个特殊边框行，移除当前行的下边框圆角
      &:has(+ .ai-table-row-special-border) {
        > td:first-child {
          border-bottom-left-radius: 0;
        }

        > td:last-child {
          border-bottom-right-radius: 0;
        }
      }

      // 相邻特殊边框行：移除第二行的上边框和圆角，避免边框重叠
      & + .ai-table-row-special-border {
        > td {
          border-top: none !important;
        }

        > td:first-child {
          border-top-left-radius: 0;
        }

        > td:last-child {
          border-top-right-radius: 0;
        }

        // 相邻行不显示角标 TODO: 后续和设计确认
        .ai-table-special-border-badge {
          display: none;
        }
      }
    }

    // 行交互样式
    // hover 效果只在数据行生效，分组头部行和空白行不生效
    // 使用 background-color 长写属性只替换叠层底色，保留 fill / follow 两层渐变
    &:hover:not(.grouped-header-row):not(.grouped-spacer-row) {
      background-color: var(--cnai-color-bg-subtle, #f5f5f5);

      .ai-table-data-cell {
        background-color: var(--cnai-color-bg-subtle, #f5f5f5);

        &.ai-table-sticky-column {
          background-color: var(--cnai-color-bg-subtle, #f5f5f5) !important;

          &::after {
            background-color: var(--cnai-color-bg-subtle, #f5f5f5) !important;
          }
        }

        &.ai-table-column-selected {
          background-color: var(--cnai-table-hover-selected-bg, #e8e8e8);

          &.ai-table-sticky-column {
            background-color: var(--cnai-table-hover-selected-bg, #e8e8e8) !important;

            &::after {
              background-color: var(--cnai-table-hover-selected-bg, #e8e8e8) !important;
            }
          }
        }
      }

      // hover 行时显示拖拽把手
      .ai-table-row-drag-handle {
        opacity: 1;
        color: var(--cnai-table-drag-handle-color, #bfbfbf);

        &:hover {
          color: var(--cnai-color-link, #1890ff);
        }
      }

      // hover 行时显示多选框，隐藏序号
      // 仅当 checkbox 元素存在时才隐藏序号，避免 hasSelect=false 时 hover 出现空白
      .ai-table-row-index-selection-wrapper:has(.ai-table-row-checkbox) {
        .ai-table-row-index {
          display: none;
        }

        .ai-table-row-checkbox {
          display: flex;
        }
      }
    }
  }

  // 拖拽预览效果
  &-drag-overlay {
    opacity: 0.8;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    background-color: var(--cnai-table-cell-bg, var(--cnai-color-bg-base, #fff));
  }

  &-column-drag-preview {
    background-color: rgba(156, 159, 161, 0.15);
    pointer-events: none;
  }

  &-row-drag-preview {
    background-color: rgba(156, 159, 161, 0.15);
    pointer-events: none;
  }

  // ============================================================================
  // 3. 功能列和操作列样式
  // ============================================================================

  // 功能列样式（表头部分，数据单元格部分在 draggable-row.scss）
  &-action-column {
    &-header {
      padding: 0;
      background-color: var(--cnai-table-header-bg, var(--cnai-color-bg-base, #fff));

      // 功能列表头也需要左边框和右边框
      &.ai-table-sticky-column {
        border-left: 1px solid var(--cnai-table-border-color, var(--cnai-color-border-light, #f0f0f0));
        border-right: 1px solid var(--cnai-table-border-color, var(--cnai-color-border-light, #f0f0f0));
      }

      &.ai-table-column-selected {
        background-color: var(--cnai-table-column-selected-bg, var(--cnai-color-bg-selected-alt, #f0f5ff));
        border-color: var(--cnai-table-column-selected-border, var(--cnai-color-border-base, #e7e8ed));
      }

      // 全选checkbox容器
      .ai-table-header-select-all {
        display: flex;
        align-items: center;
        justify-content: center;
        height: 100%;

        .cn-ui-checkbox-wrapper {
          display: flex;
          align-items: center;
          justify-content: center;
        }

        // 禁用状态（没有可选的行）
        .cn-ui-checkbox-wrapper.cn-ui-checkbox-disabled {
          cursor: not-allowed;
          opacity: 0.5;
        }
      }
    }
  }

  // 操作列样式（表头部分，数据单元格部分在 draggable-row.scss）
  &-operate-column {
    &-header {
      position: sticky;
      right: 0;
      z-index: 10;
      background-color: var(--cnai-table-header-bg, var(--cnai-color-bg-base, #fff));
      box-shadow:
        -2px 0 4px rgba(0, 0, 0, 0.04),
        12px 0 0 0 var(--cnai-table-header-bg, var(--cnai-color-bg-base, #fff)),
        2px 0 6px rgba(0, 0, 0, 0.04);
      border-right: 1px solid var(--cnai-table-border-color, var(--cnai-color-border-light, #f0f0f0));
      border-left: 1px solid var(--cnai-table-border-color, var(--cnai-color-border-light, #f0f0f0));

      &.ai-table-column-selected {
        background-color: var(--cnai-table-header-bg, var(--cnai-color-bg-base, #fff));
        border-color: var(--cnai-table-column-selected-border, var(--cnai-color-border-base, #e7e8ed));

        &::after {
          background-color: var(--cnai-table-header-bg, var(--cnai-color-bg-base, #fff));
          border-color: var(--cnai-table-column-selected-border, var(--cnai-color-border-base, #e7e8ed));
        }
      }

      // 表头内容样式
      .ai-table-header-content {
        display: flex;
        align-items: center;
        gap: 6px;

        // 操作列图标
        img {
          width: 16px;
          height: 16px;
          flex-shrink: 0;
        }
      }

      // 操作列表头不需要右侧伪元素边框，使用实际边框
      &::after {
        display: none;
      }
    }
  }

  // 添加字段列样式
  &-add-column {
    &-cell {
      width: 60px;
      min-width: 60px;
      max-width: 60px;
      padding: 0 !important;
      text-align: center;
      vertical-align: middle;
    }

    &-button {
      display: flex;
      align-items: center;
      justify-content: center;
      width: 100%;
      height: 100%;
      min-height: 40px;
      cursor: pointer;
      transition: all 0.2s;
      color: #999;
      font-size: 18px;
      position: relative;
      border-radius: 4px;

      &:hover {
        background-color: var(--cnai-color-bg-subtle, #f5f5f5);
        color: var(--cnai-color-link, #1890ff);
      }

      // 自定义 Tooltip
      &[data-tooltip] {
        position: relative;

        &::after {
          content: '';
          position: absolute;
          bottom: 100%;
          left: 50%;
          transform: translateX(-50%) translateY(-4px);
          border: 4px solid transparent;
          border-top-color: rgba(0, 0, 0, 0.85);
          opacity: 0;
          pointer-events: none;
          transition:
            opacity 0.2s,
            transform 0.2s;
          z-index: 1000;
        }

        &:hover::after {
          opacity: 1;
          transform: translateX(-50%) translateY(0);
        }
      }
    }
  }
}
