/*
 * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.
 * This file is licensed to you under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License. You may obtain a copy
 * of the License at https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under
 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
 * OF ANY KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */

@reference '@accelint/design-foundation/styles';

@layer components.l1 {
  .list {
    @apply rounded-medium bg-surface-overlay shadow-elevation-overlay outline-static overflow-x-clip overflow-y-auto outline select-none;
    max-height: 200px;
  }

  .section {
    @apply mt-s;
  }

  .header {
    @apply fg-primary-muted m-xs my-s text-header-xs;
  }

  .item {
    @apply fg-primary-bold gap-s p-s text-body-s relative flex cursor-pointer items-center outline outline-transparent;

    &:before {
      @apply pointer-events-none absolute top-0 left-0 h-full;
      width: 4px;
      content: '';
    }

    @variant hover {
      @apply fg-a11y-on-accent;
    }

    @variant focus-visible {
      @apply fg-a11y-on-accent;
    }

    @variant color-info {
      @variant hover {
        @apply bg-accent-primary-muted;
      }

      @variant focus-visible {
        @apply bg-accent-primary-muted;
      }

      @variant pressed {
        @apply bg-accent-primary-pressed;
      }

      @variant selected {
        @apply bg-accent-primary-muted;

        &:before {
          @apply bg-(--outline-accent-primary-bold);
        }

        @variant hover {
          @apply fg-a11y-on-accent bg-accent-primary-bold;
        }

        @variant focus-visible {
          @apply bg-accent-primary-bold;
        }

        @variant pressed {
          @apply fg-accent-primary-bold bg-accent-primary-pressed;

          &:before {
            @apply bg-(--outline-accent-primary-pressed);
          }
        }
      }
    }

    @variant color-serious {
      @variant hover {
        @apply bg-serious-muted;
      }

      @variant focus-visible {
        @apply bg-serious-muted;
      }

      @variant pressed {
        @apply bg-serious-pressed;
      }

      @variant selected {
        @apply bg-serious-muted;

        &:before {
          @apply bg-(--outline-serious-bold);
        }

        @variant hover {
          @apply fg-a11y-on-utility bg-serious-bold;

          &:before {
            @apply bg-(--outline-serious-hover);
          }
        }

        @variant focus-visible {
          @apply fg-a11y-on-utility bg-serious-bold;
        }

        @variant pressed {
          @apply fg-serious-bold bg-serious-pressed;

          &:before {
            @apply bg-(--outline-serious-pressed);
          }
        }
      }
    }

    @variant color-critical {
      @variant hover {
        @apply bg-critical-muted;
      }

      @variant focus-visible {
        @apply bg-critical-muted;
      }

      @variant pressed {
        @apply bg-critical-pressed;
      }

      @variant selected {
        @apply bg-critical-muted;

        &:before {
          @apply bg-(--outline-critical-bold);
        }

        @variant hover {
          @apply fg-a11y-on-utility bg-critical-bold;

          &:before {
            @apply bg-(--outline-critical-hover);
          }
        }

        @variant focus-visible {
          @apply fg-a11y-on-utility bg-critical-bold;
        }

        @variant pressed {
          @apply fg-critical-bold bg-critical-pressed;

          &:before {
            @apply bg-(--outline-critical-pressed);
          }
        }
      }
    }

    @variant disabled {
      @apply cursor-not-allowed bg-transparent;

      @variant selected {
        @apply bg-interactive-disabled;

        &:before {
          @apply bg-(--outline-interactive);
        }
      }
    }

    @variant group-size-small/options {
      @apply pt-xs pb-xs;
    }

    @variant group-size-large/options {
      @apply pt-s pb-s;
    }
  }

  .content {
    @apply gap-xxs flex min-w-0 flex-auto flex-col;
  }

  /* TODO: simplify, icon & label have the same colors, move up to item, and there is some overlap with description (only apply overrides for description) */
  .icon {
    @variant group-hover/options-item {
      @apply fg-primary-bold;
    }

    @variant group-focus-visible/options-item {
      @apply fg-primary-bold;
    }

    @variant group-selected/options-item {
      @apply fg-primary-bold;

      @variant group-hover/options-item {
        @apply fg-a11y-on-accent;
      }

      @variant group-focus-visible/options-item {
        @apply fg-a11y-on-accent;
      }
    }

    @variant group-color-info/options-item {
      @apply fg-primary-bold;

      @variant group-pressed/options-item {
        @apply fg-accent-primary-bold;
      }

      @variant group-selected/options-item {
        @variant group-hover/options-item {
          @apply fg-a11y-on-accent;
        }

        @variant group-focus-visible/options-item {
          @apply fg-a11y-on-accent;
        }

        @variant group-pressed/options-item {
          @apply fg-accent-primary-bold;
        }
      }
    }

    @variant group-color-serious/options-item {
      @apply fg-serious-bold;

      @variant group-pressed/options-item {
        @apply fg-serious-bold;
      }

      @variant group-selected/options-item {
        @variant group-hover/options-item {
          @apply fg-a11y-on-utility;
        }

        @variant group-focus-visible/options-item {
          @apply fg-a11y-on-utility;
        }

        @variant group-pressed/options-item {
          @apply fg-serious-bold;
        }
      }
    }

    @variant group-color-critical/options-item {
      @apply fg-critical-bold;

      @variant group-pressed/options-item {
        @apply fg-critical-bold;
      }

      @variant group-selected/options-item {
        @variant group-hover/options-item {
          @apply fg-a11y-on-utility;
        }

        @variant group-focus-visible/options-item {
          @apply fg-a11y-on-utility;
        }

        @variant group-pressed/options-item {
          @apply fg-critical-bold;
        }
      }
    }

    @variant group-disabled/options-item {
      @apply fg-disabled;
    }
  }

  .label {
    @apply truncate;

    @variant group-hover/options-item {
      @apply fg-primary-bold;
    }

    @variant group-focus-visible/options-item {
      @apply fg-primary-bold;
    }

    @variant group-selected/options-item {
      @apply fg-primary-bold;

      @variant group-hover/options-item {
        @apply fg-a11y-on-accent;
      }

      @variant group-focus-visible/options-item {
        @apply fg-a11y-on-accent;
      }
    }

    @variant group-color-info/options-item {
      @apply fg-primary-bold;

      @variant group-pressed/options-item {
        @apply fg-accent-primary-bold;
      }

      @variant group-selected/options-item {
        @variant group-hover/options-item {
          @apply fg-a11y-on-accent;
        }

        @variant group-focus-visible/options-item {
          @apply fg-a11y-on-accent;
        }

        @variant group-pressed/options-item {
          @apply fg-accent-primary-bold;
        }
      }
    }

    @variant group-color-serious/options-item {
      @apply fg-serious-bold;

      @variant group-pressed/options-item {
        @apply fg-serious-bold;
      }

      @variant group-selected/options-item {
        @variant group-hover/options-item {
          @apply fg-a11y-on-utility;
        }

        @variant group-focus-visible/options-item {
          @apply fg-a11y-on-utility;
        }

        @variant group-pressed/options-item {
          @apply fg-serious-bold;
        }
      }
    }

    @variant group-color-critical/options-item {
      @apply fg-critical-bold;

      @variant group-pressed/options-item {
        @apply fg-critical-bold;
      }

      @variant group-selected/options-item {
        @variant group-hover/options-item {
          @apply fg-a11y-on-utility;
        }

        @variant group-focus-visible/options-item {
          @apply fg-a11y-on-utility;
        }

        @variant group-pressed/options-item {
          @apply fg-critical-bold;
        }
      }
    }

    @variant group-disabled/options-item {
      @apply fg-disabled;
    }
  }

  .highlight {
    @apply fg-accent-primary-bold bg-transparent;

    @variant group-hover/options-item {
      color: inherit;
    }

    @variant group-focus-visible/options-item {
      color: inherit;
    }

    @variant group-selected/options-item {
      color: inherit;
    }

    @variant group-disabled/options-item {
      color: inherit;
    }
  }

  .description {
    @apply fg-primary-muted text-body-xs truncate;

    @variant group-hover/options-item {
      @apply fg-primary-bold;
    }

    @variant group-focus-visible/options-item {
      @apply fg-primary-bold;
    }

    @variant group-selected/options-item {
      @variant group-hover/options-item {
        @apply fg-a11y-on-accent;
      }

      @variant group-focus-visible/options-item {
        @apply fg-a11y-on-accent;
      }
    }

    @variant group-color-info/options-item {
      @variant group-pressed/options-item {
        @apply fg-accent-primary-bold;
      }

      @variant group-selected/options-item {
        @variant group-hover/options-item {
          @apply fg-a11y-on-accent;
        }

        @variant group-focus-visible/options-item {
          @apply fg-a11y-on-accent;
        }

        @variant group-pressed/options-item {
          @apply fg-accent-primary-bold;
        }
      }
    }

    @variant group-color-serious/options-item {
      @variant group-pressed/options-item {
        @apply fg-serious-bold;
      }

      @variant group-selected/options-item {
        @apply fg-primary-bold;

        @variant group-hover/options-item {
          @apply fg-a11y-on-utility;
        }

        @variant group-focus-visible/options-item {
          @apply fg-a11y-on-utility;
        }

        @variant group-pressed/options-item {
          @apply fg-serious-bold;
        }
      }
    }

    @variant group-color-critical/options-item {
      @variant group-pressed/options-item {
        @apply fg-critical-bold;
      }

      @variant group-selected/options-item {
        @apply fg-primary-bold;

        @variant group-hover/options-item {
          @apply fg-a11y-on-utility;
        }

        @variant group-focus-visible/options-item {
          @apply fg-a11y-on-utility;
        }

        @variant group-pressed/options-item {
          @apply fg-critical-bold;
        }
      }
    }

    @variant group-disabled/options-item {
      @apply fg-disabled;
    }
  }
}
