Camera/MainMenuCameraEffects.cs
using Sandbox;

public sealed class MainMenuCameraEffects : Component
{
	[Property] public GameObject Camera { get; set; }

	[Property] public float BobSpeed { get; set; } = 1f;
	[Property] public float PitchTimeOffset { get; set; } = 0.5f;

	protected override void OnUpdate()
	{
		var sin = MathF.Sin( Time.Now );
		var sinTwo = MathF.Sin( Time.Now + PitchTimeOffset );

		Camera.LocalRotation = Rotation.FromYaw( sin.SnapToGrid( 0.025f ) * BobSpeed );
		Camera.LocalRotation *= Rotation.FromPitch( ( sinTwo / 2f ) .SnapToGrid( 0.025f ) * BobSpeed );
	}
}