@layer components {
/* Action containers and buttons with CSS nesting */

/* Vertical actions container */
.v-actions {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: var(--spacing-2);
  margin: var(--spacing-4) 0;
}

/* Horizontal actions container */
.actions {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: var(--spacing-2);
  margin: var(--spacing-4) 0;
}

/* Common styles for action links */
.actions a,
.v-actions a {
  display: inline-flex;
  align-items: center;
  min-height: var(--tap-min);
  text-decoration: none;
  padding-inline: var(--spacing-3);
}

/* Button styles */
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--tap-min);
  background-color: var(--surface);
  border: var(--border-width) solid var(--text);
  border-radius: var(--radius);
  color: var(--text);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-medium);
  padding: var(--spacing-1) var(--spacing-3);
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: all var(--transition-fast);

  &:hover {
    background-color: var(--text);
    color: var(--on-brand);
  }

  &:focus-visible {
    outline: 3px solid var(--focus-ring);
    outline-offset: 2px;
  }

  /* Primary button */
  &.primary {
    background-color: var(--brand);
    border-color: var(--brand);
    color: var(--on-brand);

    &:hover {
      background-color: var(--brand-hover);
      border-color: var(--brand-hover);
    }
  }

  /* Secondary button */
  &.secondary {
    background-color: var(--text-muted);
    border-color: var(--text-muted);
    color: var(--on-brand);

    &:hover {
      background-color: var(--gray-900);
      border-color: var(--gray-900);
    }
  }

  /* Success button */
  &.success {
    background-color: var(--green-700);
    border-color: var(--green-700);
    color: var(--on-brand);

    &:hover {
      background-color: var(--green-900);
      border-color: var(--green-900);
    }
  }

  /* Danger button */
  &.danger {
    background-color: var(--red-700);
    border-color: var(--red-700);
    color: var(--on-brand);

    &:hover {
      background-color: var(--red-900);
      border-color: var(--red-900);
    }
  }

  /* Warning button */
  &.warning {
    background-color: var(--accent);
    border-color: var(--accent);
    color: var(--on-accent);

    &:hover {
      background-color: var(--accent-hover);
      border-color: var(--accent-hover);
      color: var(--on-accent);
    }
  }

  /* Outline button variants */
  &.outline {
    background-color: transparent;

    &.primary {
      border-color: var(--brand);
      color: var(--brand);

      &:hover {
        background-color: var(--brand);
        color: var(--on-brand);
      }
    }

    &.secondary {
      border-color: var(--text-muted);
      color: var(--text-muted);

      &:hover {
        background-color: var(--text-muted);
        color: var(--on-brand);
      }
    }

    &.success {
      border-color: var(--green-700);
      color: var(--green-700);

      &:hover {
        background-color: var(--green-700);
        color: var(--on-brand);
      }
    }

    &.danger {
      border-color: var(--red-700);
      color: var(--red-700);

      &:hover {
        background-color: var(--red-700);
        color: var(--on-brand);
      }
    }

    &.warning {
      border-color: var(--accent);
      color: var(--accent-hover);

      &:hover {
        background-color: var(--accent);
        color: var(--on-accent);
      }
    }
  }

  /* Button sizes */
  &.small {
    font-size: var(--font-size-sm);
    min-height: calc(var(--tap-min) * 0.75);
    padding: var(--spacing-1) var(--spacing-2);
  }

  &.large {
    font-size: var(--font-size-lg);
    padding: var(--spacing-2) var(--spacing-4);
  }

  /* Disabled state */
  &:disabled,
  &.disabled {
    opacity: 0.65;
    cursor: not-allowed;
    pointer-events: none;
  }
}

/* Media query for smaller screens */
@media (max-width: 768px) {
  .actions {
    flex-direction: column;
    align-items: stretch;

    & .button {
      width: 100%;
      margin-bottom: var(--spacing-2);
    }
  }
}
}
