/* Link Component */

/* Flexible hyperlink styles with variants and icon support */

@layer components {
  .link {
    /* Base styles */
    display: inline-flex;
    align-items: center;
    gap: var(--space-xxs);
    font-family: inherit;
    font-size: inherit;
    font-weight: var(--font-weight-medium);
    line-height: inherit;
    text-decoration: none;
    cursor: pointer;
    transition: all var(--transition-fast);

    /* Remove button-like appearance */
    background: none;
    border: none;
    padding: 0;
  }

  /* Variant: Primary (brand color) */
  .link--primary {
    color: var(--color-brand);
  }

  .link--primary:hover {
    color: var(--color-brand-active);
    text-decoration: underline;
  }

  .link--primary:focus-visible {
    outline: 2px solid var(--color-brand);
    outline-offset: 2px;
    border-radius: var(--radius-sm);
  }

  /* Variant: Secondary (darker gray) */
  .link--secondary {
    color: var(--color-gray-4);
  }

  .link--secondary:hover {
    color: var(--color-dark);
    text-decoration: underline;
  }

  .link--secondary:focus-visible {
    outline: 2px solid var(--color-gray-3);
    outline-offset: 2px;
    border-radius: var(--radius-sm);
  }

  /* Variant: Muted (subtle gray) */
  .link--muted {
    color: var(--color-gray-3);
  }

  .link--muted:hover {
    color: var(--color-gray-4);
    text-decoration: underline;
  }

  .link--muted:focus-visible {
    outline: 2px solid var(--color-gray-2);
    outline-offset: 2px;
    border-radius: var(--radius-sm);
  }

  /* Variant: Underline (always underlined) */
  .link--underline {
    color: var(--color-brand);
    text-decoration: underline;
    text-underline-offset: 2px;
  }

  .link--underline:hover {
    color: var(--color-brand-active);
    text-decoration-thickness: 2px;
  }

  /* Variant: Danger/Destructive */
  .link--danger {
    color: var(--color-error);
  }

  .link--danger:hover {
    color: var(--color-error-active);
    text-decoration: underline;
  }

  /* External link styling */
  .link--external .link__icon--external {
    opacity: 0.7;
  }

  .link--external:hover .link__icon--external {
    opacity: 1;
  }

  /* Disabled state */
  .link--disabled {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
  }

  /* Icon styling */
  .link__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1em;
    height: 1em;
    flex-shrink: 0;
  }

  .link__icon svg {
    width: 100%;
    height: 100%;
  }

  .link__icon--before {
    margin-right: var(--space-xxs);
  }

  .link__icon--after {
    margin-left: var(--space-xxs);
  }

  .link__icon--external {
    width: 0.875em;
    height: 0.875em;
    margin-left: var(--space-xxs);
  }

  /* Text wrapper */
  .link__text {
    display: inline;
  }

  /* Active state (when clicked) */
  .link:active:not(.link--disabled) {
    transform: scale(0.98);
  }
}
