How to tween rotation off a pivot point

I made a very simple door script that utilizes the TweenService to rotate the door when prompted, but when the door rotates, it rotates off of the original pivot point position despite having pivot offset.

Script:

local door = game.Workspace:WaitForChild("Door")
local prox = door:WaitForChild("ProximityPrompt")
local tweenService = game:GetService("TweenService")

local goal = {}
goal.Rotation = Vector3.new(0,90,0)


local tweenInfo = TweenInfo.new(	
	2,	
	
	Enum.EasingStyle.Sine,
	
	Enum.EasingDirection.Out,
	
	0,	
	
	false,
	
	0
)

local tween = tweenService:Create(door, tweenInfo, goal)

prox.Triggered:Connect(function(player)
	tween:Play()
end)

Likely because you can only tween the CFrame. I believe pivots are based of Position.

If you are tweening a door it’s best to use an anchored Part as the hinge and tween that, then weld your unanchored door to it so the door acts according to physics in-game.
An anchored Part doesn’t react to physics, meaning it’ll tween through a player when it moves.