diff --git a/docs/_data/navigation.yml b/docs/_data/navigation.yml new file mode 100644 index 0000000000000000000000000000000000000000..75616451d5eeea9b0fd65b884c739c978bac8307 --- /dev/null +++ b/docs/_data/navigation.yml @@ -0,0 +1,9 @@ +- title: Home + url: / + sublinks: + - title: Meshedit + url: /meshedit + - title: Pathtracer + url: /pathtracer + - title: Animation + url: /animation diff --git a/docs/_site/animation/index.html b/docs/_site/animation/index.html new file mode 100644 index 0000000000000000000000000000000000000000..8bf63142bcf97a4cd2bc35441bd8ec9626058d42 --- /dev/null +++ b/docs/_site/animation/index.html @@ -0,0 +1 @@ + A4: Animation - A4: Animation Link Search Menu Expand Document

Animation Overview

There are four primary components that must be implemented to support Animation functionality.

A4.0

A4.5

Each task is described at the linked page.

Converting Frames to Video

Additionally, we will ask you to create your own animation. Once you’ve rendered out each frame of your animation, you can combine them into a video by using:

ffmpeg -r 30 -f image2 -s 640x360 -pix_fmt yuv420p -i ./%4d.png -vcodec libx264 out.mp4

You may want to change the default 30 and 640x360 to the frame rate and resolution you chose to render at.

If you don’t have ffmpeg installed on your system, you can get it through most package managers, or you can download it directly. Alternatively, you may use your preferred video editing tool.

diff --git a/docs/_site/animation/particles.html b/docs/_site/animation/particles.html new file mode 100644 index 0000000000000000000000000000000000000000..be421b7fb068e674b06c5e5de5e4713f2ad6c09e --- /dev/null +++ b/docs/_site/animation/particles.html @@ -0,0 +1 @@ + Particles - Particles Link Search Menu Expand Document

Particle Simulation

And now for something completely different: physics simulation for particles.

Ray traced physics

diff --git a/docs/_site/animation/skeleton_kinematics.html b/docs/_site/animation/skeleton_kinematics.html new file mode 100644 index 0000000000000000000000000000000000000000..393feb3b4688077dd2137f54f8eee592808b1ae3 --- /dev/null +++ b/docs/_site/animation/skeleton_kinematics.html @@ -0,0 +1 @@ + Skeleton Kinematics - Skeleton Kinematics Link Search Menu Expand Document

Skeleton Kinematics

A Skeleton(defined in scene/skeleton.h) is what we use to drive our animation. You can think of them like the set of bones we have in our own bodies and joints that connect these bones. For convenience, we have merged the bones and joints into the Joint class which holds the orientation of the joint relative to its parent as euler angle in its pose, and extent representing the direction and length of the bone with respect to its parent Joint. Each Mesh has an associated Skeleton class which holds a rooted tree of Joints, where each Joint can have an arbitrary number of children.

All of our joints are ball Joints which have a set of 3 rotations around the , , and axes, called Euler angles. Whenever you deal with angles in this way, a fixed order of operations must be enforced, otherwise the same set of angles will not represent the same rotation. In order to get the full rotational transformation matrix, , we can create individual rotation matrices around the , , and axes, which we call , , and respectively. The particular order of operations that we adopted for this assignment is that .

Forward Kinematics

Note: These diagrams are in 2D for visual clarity, but we will work with a 3D kinematic skeleton.

When a joint’s parent is rotated, that transformation should be propagated down to all of its children. In the diagram below, is the parent of and is the parent of . When a translation of and rotation of is applied to , all of the descendants are affected by this transformation as well. Then, is rotated by which affects itself and . Finally, when rotation of is applied to , it only affects itself because it has no children.

You need to implement these routines in student/skeleton.cpp for forward kinematics.

  • Joint::joint_to_bind Rreturn a matrix transforming points in the space of this joint to points in mesh space in bind position up to the base of this joint (end of its parent joint). You should traverse upwards from this joint’s parent all the way up to the root joint and accumulate their transformations.
  • Joint::joint_to_posed Return a matrix transforming points in the space of this joint to points in mesh space, taking into account joint poses. Again, you should traverse upwards from this joint’s parent to the root joint.
  • Skeleton::end_of Returns the end position of the joint in world coordinate frame, and you should take into account the base position of the skeleton (Skeleton::base_pos).
  • Skeleton::posed_end_of Returns the end position of the joint in world coordinate frame with poses, and you should take into account Skeleton::base_pos.
  • Skeleton::joint_to_bind Rreturn a matrix transforming points in the space of this joint to points in mesh space in bind position but with the base position of the skeleton taken in to account. Hint: use some function that you have implemented wisely!
  • Skeleton::joint_to_posed Return a matrix transforming points in the space of this joint to points in mesh space, taking into account joint poses but with the base position of the skeleton taken in to account. Hint: use some function that you have implemented wisely!

Once you have implemented these basic kinematics, you should be able to define skeletons, set their positions at a collection of keyframes, and watch the skeleton smoothly interpolate the motion (see the user guide for an explanation of the interface). The gif below shows a very hasty demo defining a few joints and interpolating their motion.

Note that the skeleton does not yet influence the geometry of the cube in this scene – that will come in Task 3!

Task 2b - Inverse Kinematics

Single Target IK

Now that we have a logical way to move joints around, we can implement Inverse Kinematics, which will move the joints around in order to reach a target point. There are a few different ways we can do this, but for this assignment we’ll implement an iterative method called gradient descent in order to find the minimum of a function. For a function , we’ll have the update scheme:

Where is a small timestep. For this task, we’ll be using gradient descent to find the minimum of the cost function:

Where is the position in world space of the target joint, and is the position in world space of the target point. More specifically, we’ll be using a technique called Jacobian Transpose, which relies on the assumption:

Where:

  • (n x 1) is the function , where is the angle of joint around the axis of rotation
  • is a constant
  • (3 x n) is the Jacobian of

Note that here refers to the number of joints in the skeleton. Although in reality this can be reduced to just the number of joints between the target joint and the root, inclusive, because all joints not on that path should stay where they are, so their columns in will be 0. So can just be the number of joints between the target and the root, inclusive. Additionally note that since this will get multiplied by anyways, you can ignore the value of , and just consider the timestep as .

Now we just need a way to calcluate the Jacobian of . For this, we can use the fact that:

Where:

  • is the column of
  • is the axis of rotation
  • is the vector from the base of joint to the end point of the target joint

For a more in-depth derivation of Jacobian transpose (and a look into other inverse kinematics algorithms), please check out this presentation. (Pages 45-56 in particular)

Now, all of this will work for updating the angle along a single axis, but we have 3 axes to deal with. Luckily, extending it to 3 dimensions isn’t very difficult, we just need to update the angle along each axis independently.

Multi-Target

We’ll extend this so we can have multiple targets, which will then use the function to minimize:

which is a simple extension actually. Since each term is independent and added together, we can get the gradient of this new cost function just by summing the gradients of each of the constituent cost functions!

You should implement multi-target IK, which will take a vector of IK_Handle*s called active_handles which stores the information a target point for a joint. See scene/skeleton.h for the definition of IK_Handle structure.

In order to implement this, you should update Joint::compute_gradient and Skeleton::step_ik. Joint::compute_gradient should calculate the gradient of in the x,y, and z directions, and add them to Joint::angle_gradient for all relevant joints. Skeleton::step_ik should actually do the gradient descent calculations and update the pose of each joint. In this function, you should probably use a very small timestep, but do several iterations (say, 10s to 100s) of gradient descent in order to speed things up. For even faster and better results, you can also implement a variable timestep instead of just using a fixed one. Note also that the root joint should never be updated.

A key thing for this part is to remember what coordinate frame you’re in, because if you calculate the gradients in the wrong coordinate frame or use the axis of rotation in the wrong coordinate frame your answers will come out very wrong!

Using your IK!

Once you have IK implemented, you should be able to create a series of joints, and get a particular joint to move to the desired final position you have selected.

diff --git a/docs/_site/animation/skinning.html b/docs/_site/animation/skinning.html new file mode 100644 index 0000000000000000000000000000000000000000..db0608c2aa9173e16dd0db40a53b34c755978df3 --- /dev/null +++ b/docs/_site/animation/skinning.html @@ -0,0 +1 @@ + Skinning - Skinning Link Search Menu Expand Document

Linear Blend Skinning

Now that we have a skeleton set up, we need to link the skeleton to the mesh in order to get the mesh to follow the movements of the skeleton. We will implement linear blend skinning using the following functions: Skeleton::skin(), Skeleton::find_joints(), and closest_on_line_segment.

The easiest way to do this is to update each of mesh vertices’ positions in relation to the bones (Joints) in the skeleton. There are 3 types of coordinate spaces: bind, joint, and pose. Bind is the initial coordinate frame of the vertices of where they are bound to relative to the mesh. Joint is the position of the vertex relative to a given joint. Pose is the world-space position after the joint transforms have been applied. You’ll want to compute transforms that take vertices in bind space and convert them to posed space (Hint: joint_to_bind, joint_to_posed, and inverse() will come in handy.)

Your implementation should have the following basic steps for each vertex:

  • Compute the vertex’s position with respect to each joint j in the skeleton in j’s coordinate frame when no transformations have been applied to the skeleton (bind pose, vertex bind position).
  • Find where this vertex would end up (in world coordinates) if it were transformed along with bone j.
  • Find the closest point on joint j’s bone segment (axis) and compute the distance to this closest point (Hint: closest_on_line_segment might come in handy).
    • Diagram of closest_on_line_segment:
  • Compute the resulting position of the vertex by doing a weighted average of the bind-to-posed transforms from each bone and applying it to the vertex. The weights for the weighted average should be the inverse distance to the joint, so closer bones have a stronger influence.

Below we have an equation representation. The ith vertex v is the new vertex position. The weight w is the weight metric computed as the inverse of distance between the ith vertex and the closest point on joint j. We multiply this term with the position of the ith vertex v with respect to joint j after joint’s transformations has been applied.

In Scotty3D, the Skeleton::skin() function gets called on every frame draw iteration, recomputing all skinning related quantities. In this function, you should read vertices from input.verts() and indices from input.indices(), and write the resulting positions and norms to v.pos and v.norm for every vertex in the input vertices list.

You will be implementing a Capsule-Radius Linear Blend Skin method, which only moves vertices with a joint if they lie in the joint’s radius. The Skeleton::skin() function also takes in a map of vertex index to relevant joints that you must compute the above distance/transformation metrics on. You are also responsible for creating this map, which is done so in Skeleton::find_joints(). Don’t worry about calling this function, it is called automatically before skin is called, populating the map field and sending it over to the skin() function. Your Skeleton::find_joints() implementation should iterate over all the vertices and add joint j to vertex index i in the map if the distance between the vertex and joint is less than j->radius (remember make sure they’re both in the same coordinate frame.)

diff --git a/docs/_site/animation/splines.html b/docs/_site/animation/splines.html new file mode 100644 index 0000000000000000000000000000000000000000..23a21bc92f33032e3cca54c623f56400890361fa --- /dev/null +++ b/docs/_site/animation/splines.html @@ -0,0 +1 @@ + Splines - Splines Link Search Menu Expand Document

Spline Interpolation

As we discussed in class, data points in time can be interpolated by constructing an approximating piecewise polynomial or spline. In this assignment you will implement a particular kind of spline, called a Catmull-Rom spline. A Catmull-Rom spline is a piecewise cubic spline defined purely in terms of the points it interpolates. It is a popular choice in real animation systems, because the animator does not need to define additional data like tangents, etc. (However, your code may still need to numerically evaluate these tangents after the fact; more on this point later.) All of the methods relevant to spline interpolation can be found in spline.h with implementations in spline.inl.

Task 1a - Hermite Curve over the Unit Interval

Recall that a cubic polynomial is a function of the form:

where , and are fixed coefficients. However, there are many different ways of specifying a cubic polynomial. In particular, rather than specifying the coefficients directly, we can specify the endpoints and tangents we wish to interpolate. This construction is called the “Hermite form” of the polynomial. In particular, the Hermite form is given by

where are endpoint positions, are endpoint tangents, and are the Hermite bases





Your first task is to implement the method Spline::cubic_unit_spline(), which evaluates a spline defined over the time interval given a pair of endpoints and tangents at endpoints.

Your basic strategy for implementing this routine should be:

  • Evaluate the time, its square, and its cube (for readability, you may want to make a local copy).
  • Using these values, as well as the position and tangent values, compute the four basis functions of a cubic polynomial in Hermite form.
  • Finally, combine the endpoint and tangent data using the evaluated bases, and return the result.

Notice that this function is templated on a type T. In C++, a templated class can operate on data of a variable type. In the case of a spline, for instance, we want to be able to interpolate all sorts of data: angles, vectors, colors, etc. So it wouldn’t make sense to rewrite our spline class once for each of these types; instead, we use templates. In terms of implementation, your code will look no different than if you were operating on a basic type (e.g., doubles). However, the compiler will complain if you try to interpolate a type for which interpolation doesn’t make sense! For instance, if you tried to interpolate Skeleton objects, the compiler would likely complain that there is no definition for the sum of two skeletons (via a + operator). In general, our spline interpolation will only make sense for data that comes from a vector space, since we need to add T values and take scalar multiples.

Task 1B: Evaluation of a Catmull-Rom spline

The routine from part 1A just defines the interpolated spline between two points, but in general we will want smooth splines between a long sequence of points. You will now use your solution from part 1A to implement the method Spline::at() which evaluates a general Catmull-Romspline at the specified time in a sequence of points (called “knots”). Since we now know how to interpolate a pair of endpoints and tangents, the only task remaining is to find the interval closest to the query time, and evaluate its endpoints and tangents.

The basic idea behind Catmull-Rom is that for a given time t, we first find the four closest knots at times

We then use t1 and t2 as the endpoints of our cubic “piece,” and for tangents we use the values



In other words, a reasonable guess for the tangent is given by the difference between neighboring points. (See the Wikipedia and our course slides for more details.)


This scheme works great if we have two well-defined knots on either side of the query time t. But what happens if we get a query time near the beginning or end of the spline? Or what if the spline contains fewer than four knots? We still have to somehow come up with a reasonable definition for the positions and tangents of the curve at these times. For this assignment, your Catmull-Rom spline interpolation should satisfy the following properties:

  • If there are no knots at all in the spline, interpolation should return the default value for the interpolated type. This value can be computed by simply calling the constructor for the type: T(). For instance, if the spline is interpolating Vector3D objects, then the default value will be .
  • If there is only one knot in the spline, interpolation should always return the value of that knot (independent of the time). In other words, we simply have a constant interpolant.
  • If the query time is less than or equal to the initial knot, return the initial knot’s value.
  • If the query time is greater than or equal to the final knot, return the final knot’s value.

Once we have two or more knots, interpolation can be handled using general-purpose code. In particular, we can adopt the following “mirroring” strategy to obtain the four knots used in our computation:

  • Any query time between the first and last knot will have at least one knot “to the left” and one “to the right” .
  • Suppose we don’t have a knot “two to the left” . Then we will define a “virtual” knot . In other words, we will “mirror” the difference be observe between and to the other side of .
  • Likewise, if we don’t have a knot “two to the right” ), then we will “mirror” the difference to get a “virtual” knot .
  • At this point, we have four valid knot values (whether “real” or “virtual”), and can compute our tangents and positions as usual.
  • These values are then handed off to our subroutine that computes cubic interpolation over the unit interval.

An important thing to keep in mind is that Spline::cubic_unit_spline() assumes that the time value t is between 0 and 1, whereas the distance between two knots on our Catmull-Rom spline can be arbitrary. Therefore, when calling this subroutine you will have to normalize t such that it is between 0 and 1, i.e., you will have to divide by the length of the current interval over which you are interpolating. You should think very carefully about how this normalization affects the value computed by the subroutine, in comparison to the values we want to return. A transformation is necessary for both the tangents that you feed in to specify the unit spline.

Internally, a Spline object stores its data in an STL map that maps knot times to knot values. A nice thing about an STL map is that it automatically keeps knots in sorted order. Therefore, we can quickly access the knot closest to a given time using the method map::upper_bound(), which returns an iterator to knot with the smallest time greater than the given query time (you can find out more about this method via online documentation for the Standard Template Library).

Using the splines

Once you have implemented the functions in spline.cpp, you should be able to make simple animations by translating, rotating or scaling the mesh in the scene. The main idea is to:

  • create an initial keyframe by clicking at a point on the white timeline at the bottom of the screen
  • specify the initial location/orientation/scale of your mesh using the controls provided
  • create more keyframes with different mesh locations/orientations/scales and watch the splines smoothly interpolate the movement of your mesh!
diff --git a/docs/_site/animation/task1_media/0000.png b/docs/_site/animation/task1_media/0000.png new file mode 100644 index 0000000000000000000000000000000000000000..efb7743163dd508a36798a3908d488d024e349b7 Binary files /dev/null and b/docs/_site/animation/task1_media/0000.png differ diff --git a/docs/_site/animation/task1_media/0001.png b/docs/_site/animation/task1_media/0001.png new file mode 100644 index 0000000000000000000000000000000000000000..9671ca19c313da50a4d6a9abc37f2d542a6a1534 Binary files /dev/null and b/docs/_site/animation/task1_media/0001.png differ diff --git a/docs/_site/animation/task1_media/0002.png b/docs/_site/animation/task1_media/0002.png new file mode 100644 index 0000000000000000000000000000000000000000..38bc2b118aad134831c5aacfb470311e1dab0dea Binary files /dev/null and b/docs/_site/animation/task1_media/0002.png differ diff --git a/docs/_site/animation/task1_media/0003.png b/docs/_site/animation/task1_media/0003.png new file mode 100644 index 0000000000000000000000000000000000000000..6b8122852cc1f66f06ba62d9e0a7f8eadd0b865e Binary files /dev/null and b/docs/_site/animation/task1_media/0003.png differ diff --git a/docs/_site/animation/task1_media/0004.png b/docs/_site/animation/task1_media/0004.png new file mode 100644 index 0000000000000000000000000000000000000000..d03443cc47a040d602f7560e52dcc4de5e5905cc Binary files /dev/null and b/docs/_site/animation/task1_media/0004.png differ diff --git a/docs/_site/animation/task1_media/0005.png b/docs/_site/animation/task1_media/0005.png new file mode 100644 index 0000000000000000000000000000000000000000..0f58715faf64fa9f8d6851f148fba2edbcad779d Binary files /dev/null and b/docs/_site/animation/task1_media/0005.png differ diff --git a/docs/_site/animation/task1_media/0006.png b/docs/_site/animation/task1_media/0006.png new file mode 100644 index 0000000000000000000000000000000000000000..05fcc793809061315b4921e3aee98e028dfbae3b Binary files /dev/null and b/docs/_site/animation/task1_media/0006.png differ diff --git a/docs/_site/animation/task1_media/0007.png b/docs/_site/animation/task1_media/0007.png new file mode 100644 index 0000000000000000000000000000000000000000..67eddf5c059f58ee506b4063f274e3f9d3dc2233 Binary files /dev/null and b/docs/_site/animation/task1_media/0007.png differ diff --git a/docs/_site/animation/task1_media/0008.png b/docs/_site/animation/task1_media/0008.png new file mode 100644 index 0000000000000000000000000000000000000000..c83f12ce72f1088708ec6fdeeb3afb157607abe8 Binary files /dev/null and b/docs/_site/animation/task1_media/0008.png differ diff --git a/docs/_site/animation/task1_media/0009.png b/docs/_site/animation/task1_media/0009.png new file mode 100644 index 0000000000000000000000000000000000000000..0f839f5852862b896608be8e0d39a98988b98b8b Binary files /dev/null and b/docs/_site/animation/task1_media/0009.png differ diff --git a/docs/_site/animation/task1_media/0010.png b/docs/_site/animation/task1_media/0010.png new file mode 100644 index 0000000000000000000000000000000000000000..a170b1824c5ea3094754df60d1bf31f3e45eb811 Binary files /dev/null and b/docs/_site/animation/task1_media/0010.png differ diff --git a/docs/_site/animation/task1_media/0011.png b/docs/_site/animation/task1_media/0011.png new file mode 100644 index 0000000000000000000000000000000000000000..e14d4c65e5e179b28fc63472416ee4835f3807cd Binary files /dev/null and b/docs/_site/animation/task1_media/0011.png differ diff --git a/docs/_site/animation/task1_media/0012.png b/docs/_site/animation/task1_media/0012.png new file mode 100644 index 0000000000000000000000000000000000000000..58d8b78ba1dc64f57422ea44d64d0bd35ede6512 Binary files /dev/null and b/docs/_site/animation/task1_media/0012.png differ diff --git a/docs/_site/animation/task1_media/0013.png b/docs/_site/animation/task1_media/0013.png new file mode 100644 index 0000000000000000000000000000000000000000..36c399cc2d11f3199ec08fffbc0ae08eb1ac747b Binary files /dev/null and b/docs/_site/animation/task1_media/0013.png differ diff --git a/docs/_site/animation/task1_media/0014.png b/docs/_site/animation/task1_media/0014.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d980ac8f557641bf39c4b4936aed749402c68d Binary files /dev/null and b/docs/_site/animation/task1_media/0014.png differ diff --git a/docs/_site/animation/task1_media/0015.png b/docs/_site/animation/task1_media/0015.png new file mode 100644 index 0000000000000000000000000000000000000000..87037b7982bd0a0b95a2b8bb63be4833f74e7217 Binary files /dev/null and b/docs/_site/animation/task1_media/0015.png differ diff --git a/docs/_site/animation/task1_media/0016.png b/docs/_site/animation/task1_media/0016.png new file mode 100644 index 0000000000000000000000000000000000000000..48b1af5f82364cc89d676189ec98dca3b1c70464 Binary files /dev/null and b/docs/_site/animation/task1_media/0016.png differ diff --git a/docs/_site/animation/task1_media/0017.png b/docs/_site/animation/task1_media/0017.png new file mode 100644 index 0000000000000000000000000000000000000000..2ee26b26997f0112fedf1b3e3f55c91cdd750d9a Binary files /dev/null and b/docs/_site/animation/task1_media/0017.png differ diff --git a/docs/_site/animation/task1_media/0018.png b/docs/_site/animation/task1_media/0018.png new file mode 100644 index 0000000000000000000000000000000000000000..8bc305dc8af17c916b8691dc6d3c50b030a4fd01 Binary files /dev/null and b/docs/_site/animation/task1_media/0018.png differ diff --git a/docs/_site/animation/task1_media/0019.png b/docs/_site/animation/task1_media/0019.png new file mode 100644 index 0000000000000000000000000000000000000000..0d087042e53b7181389afbcc31deccf637666b55 Binary files /dev/null and b/docs/_site/animation/task1_media/0019.png differ diff --git a/docs/_site/animation/task1_media/0020.png b/docs/_site/animation/task1_media/0020.png new file mode 100644 index 0000000000000000000000000000000000000000..083fbd94b59a7eae77cd2e2669b0126230af911e Binary files /dev/null and b/docs/_site/animation/task1_media/0020.png differ diff --git a/docs/_site/animation/task1_media/0021.png b/docs/_site/animation/task1_media/0021.png new file mode 100644 index 0000000000000000000000000000000000000000..833dffd95ab49a8caae8d5d7b365067c3d680d68 Binary files /dev/null and b/docs/_site/animation/task1_media/0021.png differ diff --git a/docs/_site/animation/task1_media/0022.png b/docs/_site/animation/task1_media/0022.png new file mode 100644 index 0000000000000000000000000000000000000000..0e46a18dc2ee96f8a777fe845bf8f07540f78cf0 Binary files /dev/null and b/docs/_site/animation/task1_media/0022.png differ diff --git a/docs/_site/animation/task1_media/0023.png b/docs/_site/animation/task1_media/0023.png new file mode 100644 index 0000000000000000000000000000000000000000..4f8d225921613d68f239114babf5d0f3df199437 Binary files /dev/null and b/docs/_site/animation/task1_media/0023.png differ diff --git a/docs/_site/animation/task1_media/0024.png b/docs/_site/animation/task1_media/0024.png new file mode 100644 index 0000000000000000000000000000000000000000..64ac3227c0d05ad8d19dfd9a34e9e0510581eb80 Binary files /dev/null and b/docs/_site/animation/task1_media/0024.png differ diff --git a/docs/_site/animation/task1_media/0025.png b/docs/_site/animation/task1_media/0025.png new file mode 100644 index 0000000000000000000000000000000000000000..000a98be57162ce808a001b559f33408833f137e Binary files /dev/null and b/docs/_site/animation/task1_media/0025.png differ diff --git a/docs/_site/animation/task1_media/0026.png b/docs/_site/animation/task1_media/0026.png new file mode 100644 index 0000000000000000000000000000000000000000..74b9c31b6e466a600d38a4bf1b18b4a1fc778ca2 Binary files /dev/null and b/docs/_site/animation/task1_media/0026.png differ diff --git a/docs/_site/animation/task1_media/animate_cow.gif b/docs/_site/animation/task1_media/animate_cow.gif new file mode 100644 index 0000000000000000000000000000000000000000..50cf1ffc34026ffa554bdaefae0c791aa4a935b8 Binary files /dev/null and b/docs/_site/animation/task1_media/animate_cow.gif differ diff --git a/docs/_site/animation/task1_media/evaluate_catmull_rom_spline.png b/docs/_site/animation/task1_media/evaluate_catmull_rom_spline.png new file mode 100644 index 0000000000000000000000000000000000000000..a09730767a7b5fd1597024c62c433cff3b6cb9fe Binary files /dev/null and b/docs/_site/animation/task1_media/evaluate_catmull_rom_spline.png differ diff --git a/docs/_site/animation/task1_media/spline_diagram.jpg b/docs/_site/animation/task1_media/spline_diagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..533f8c8d43c5fdd6ae127c694349c6056ffd980f Binary files /dev/null and b/docs/_site/animation/task1_media/spline_diagram.jpg differ diff --git a/docs/_site/animation/task2_media/0027.png b/docs/_site/animation/task2_media/0027.png new file mode 100644 index 0000000000000000000000000000000000000000..446b2ca746a9335798fef1f1a1af060800dfa3d9 Binary files /dev/null and b/docs/_site/animation/task2_media/0027.png differ diff --git a/docs/_site/animation/task2_media/0028.png b/docs/_site/animation/task2_media/0028.png new file mode 100644 index 0000000000000000000000000000000000000000..379c1d85a8e2fa38c6260a59c2e952d5a4e9e5a0 Binary files /dev/null and b/docs/_site/animation/task2_media/0028.png differ diff --git a/docs/_site/animation/task2_media/0029.png b/docs/_site/animation/task2_media/0029.png new file mode 100644 index 0000000000000000000000000000000000000000..0d91cdbe6e8009cb577d1589056e36e27f3b72bc Binary files /dev/null and b/docs/_site/animation/task2_media/0029.png differ diff --git a/docs/_site/animation/task2_media/0030.png b/docs/_site/animation/task2_media/0030.png new file mode 100644 index 0000000000000000000000000000000000000000..fae317874bfa0eeba5faaca78b5cf7f0ff73c1cb Binary files /dev/null and b/docs/_site/animation/task2_media/0030.png differ diff --git a/docs/_site/animation/task2_media/0031.png b/docs/_site/animation/task2_media/0031.png new file mode 100644 index 0000000000000000000000000000000000000000..2b67219b20399bde2db90696c389fd59cb330819 Binary files /dev/null and b/docs/_site/animation/task2_media/0031.png differ diff --git a/docs/_site/animation/task2_media/0032.png b/docs/_site/animation/task2_media/0032.png new file mode 100644 index 0000000000000000000000000000000000000000..673ab61a285efe42a0b0cc11932f1dd3d851b156 Binary files /dev/null and b/docs/_site/animation/task2_media/0032.png differ diff --git a/docs/_site/animation/task2_media/0033.png b/docs/_site/animation/task2_media/0033.png new file mode 100644 index 0000000000000000000000000000000000000000..a12d30158d2623116953595a70a5f6d2f4f1945f Binary files /dev/null and b/docs/_site/animation/task2_media/0033.png differ diff --git a/docs/_site/animation/task2_media/0034.png b/docs/_site/animation/task2_media/0034.png new file mode 100644 index 0000000000000000000000000000000000000000..519aeeef936e7bbe6b1771b45691cbe691926a3d Binary files /dev/null and b/docs/_site/animation/task2_media/0034.png differ diff --git a/docs/_site/animation/task2_media/0035.png b/docs/_site/animation/task2_media/0035.png new file mode 100644 index 0000000000000000000000000000000000000000..7eeb9de83733a8785ebcc79c51e82d764109a530 Binary files /dev/null and b/docs/_site/animation/task2_media/0035.png differ diff --git a/docs/_site/animation/task2_media/0036.png b/docs/_site/animation/task2_media/0036.png new file mode 100644 index 0000000000000000000000000000000000000000..e9d4d2e3ba3dc8a5cccf2e0bd1af0f49119e6fd9 Binary files /dev/null and b/docs/_site/animation/task2_media/0036.png differ diff --git a/docs/_site/animation/task2_media/0037.png b/docs/_site/animation/task2_media/0037.png new file mode 100644 index 0000000000000000000000000000000000000000..3187c99992714d81d525f31c360398a8b1c4c570 Binary files /dev/null and b/docs/_site/animation/task2_media/0037.png differ diff --git a/docs/_site/animation/task2_media/0038.png b/docs/_site/animation/task2_media/0038.png new file mode 100644 index 0000000000000000000000000000000000000000..c30d756b3c086b0321421156b0278cefac0e0f27 Binary files /dev/null and b/docs/_site/animation/task2_media/0038.png differ diff --git a/docs/_site/animation/task2_media/0039.png b/docs/_site/animation/task2_media/0039.png new file mode 100644 index 0000000000000000000000000000000000000000..3491bf6ef23149c66391b9d261d77b491f13f19f Binary files /dev/null and b/docs/_site/animation/task2_media/0039.png differ diff --git a/docs/_site/animation/task2_media/0040.png b/docs/_site/animation/task2_media/0040.png new file mode 100644 index 0000000000000000000000000000000000000000..51caa62ae2e1de1b8ef7cbe138a53c450ab0589d Binary files /dev/null and b/docs/_site/animation/task2_media/0040.png differ diff --git a/docs/_site/animation/task2_media/0041.png b/docs/_site/animation/task2_media/0041.png new file mode 100644 index 0000000000000000000000000000000000000000..d9fd442925d2b081d4d7743b9783abd85ace2645 Binary files /dev/null and b/docs/_site/animation/task2_media/0041.png differ diff --git a/docs/_site/animation/task2_media/0042.png b/docs/_site/animation/task2_media/0042.png new file mode 100644 index 0000000000000000000000000000000000000000..67056df7e23e55f10df634ccda450df836fdce79 Binary files /dev/null and b/docs/_site/animation/task2_media/0042.png differ diff --git a/docs/_site/animation/task2_media/0043.png b/docs/_site/animation/task2_media/0043.png new file mode 100644 index 0000000000000000000000000000000000000000..fb64a8ac98f983a7b24e0f79efe816711de8f2f5 Binary files /dev/null and b/docs/_site/animation/task2_media/0043.png differ diff --git a/docs/_site/animation/task2_media/0044.png b/docs/_site/animation/task2_media/0044.png new file mode 100644 index 0000000000000000000000000000000000000000..660d0a02bb0638e9eac50ae533df10bc085ab57b Binary files /dev/null and b/docs/_site/animation/task2_media/0044.png differ diff --git a/docs/_site/animation/task2_media/0045.png b/docs/_site/animation/task2_media/0045.png new file mode 100644 index 0000000000000000000000000000000000000000..8976a65346e3ae0ff89297e31d329bd67dbbbcce Binary files /dev/null and b/docs/_site/animation/task2_media/0045.png differ diff --git a/docs/_site/animation/task2_media/0046.png b/docs/_site/animation/task2_media/0046.png new file mode 100644 index 0000000000000000000000000000000000000000..807e696c2b03769037fcfb529fe631c1a49ac4e6 Binary files /dev/null and b/docs/_site/animation/task2_media/0046.png differ diff --git a/docs/_site/animation/task2_media/0047.png b/docs/_site/animation/task2_media/0047.png new file mode 100644 index 0000000000000000000000000000000000000000..b266faa89645946b07162e401d5e383f0ae6ea5a Binary files /dev/null and b/docs/_site/animation/task2_media/0047.png differ diff --git a/docs/_site/animation/task2_media/0048.png b/docs/_site/animation/task2_media/0048.png new file mode 100644 index 0000000000000000000000000000000000000000..1bc845b95e2010045dc5fe225928d2c7b4b83879 Binary files /dev/null and b/docs/_site/animation/task2_media/0048.png differ diff --git a/docs/_site/animation/task2_media/0049.png b/docs/_site/animation/task2_media/0049.png new file mode 100644 index 0000000000000000000000000000000000000000..52d0181302c7db701bb28ed16bbd54e15f9714ec Binary files /dev/null and b/docs/_site/animation/task2_media/0049.png differ diff --git a/docs/_site/animation/task2_media/0050.png b/docs/_site/animation/task2_media/0050.png new file mode 100644 index 0000000000000000000000000000000000000000..0d37081a47c891cc7857173908f37712dafddb96 Binary files /dev/null and b/docs/_site/animation/task2_media/0050.png differ diff --git a/docs/_site/animation/task2_media/0051.png b/docs/_site/animation/task2_media/0051.png new file mode 100644 index 0000000000000000000000000000000000000000..3324ee566f95970a3407bdd5357b4936a24017e8 Binary files /dev/null and b/docs/_site/animation/task2_media/0051.png differ diff --git a/docs/_site/animation/task2_media/0052.png b/docs/_site/animation/task2_media/0052.png new file mode 100644 index 0000000000000000000000000000000000000000..5e398b6e9c516952b10f13197cb1de00950c3231 Binary files /dev/null and b/docs/_site/animation/task2_media/0052.png differ diff --git a/docs/_site/animation/task2_media/0053.png b/docs/_site/animation/task2_media/0053.png new file mode 100644 index 0000000000000000000000000000000000000000..0fa97ca9b4e7b23996c13197465a11f5c6a3e041 Binary files /dev/null and b/docs/_site/animation/task2_media/0053.png differ diff --git a/docs/_site/animation/task2_media/0054.png b/docs/_site/animation/task2_media/0054.png new file mode 100644 index 0000000000000000000000000000000000000000..08385d282ca31fe5403ab61ad6b1ce3a09bfa2ec Binary files /dev/null and b/docs/_site/animation/task2_media/0054.png differ diff --git a/docs/_site/animation/task2_media/0055.png b/docs/_site/animation/task2_media/0055.png new file mode 100644 index 0000000000000000000000000000000000000000..b119cde775c6e6e9c60630daa29a7af1e7309dd9 Binary files /dev/null and b/docs/_site/animation/task2_media/0055.png differ diff --git a/docs/_site/animation/task2_media/0056.png b/docs/_site/animation/task2_media/0056.png new file mode 100644 index 0000000000000000000000000000000000000000..68a6688709eb1ea51ac937606124af266f7a4731 Binary files /dev/null and b/docs/_site/animation/task2_media/0056.png differ diff --git a/docs/_site/animation/task2_media/0057.png b/docs/_site/animation/task2_media/0057.png new file mode 100644 index 0000000000000000000000000000000000000000..864eed41cb670dc3cba9b3c15d8d148ba59ff3d4 Binary files /dev/null and b/docs/_site/animation/task2_media/0057.png differ diff --git a/docs/_site/animation/task2_media/0058.png b/docs/_site/animation/task2_media/0058.png new file mode 100644 index 0000000000000000000000000000000000000000..77da3c3fe2ba8ee6272d4a156e7cf39a3ad4bf61 Binary files /dev/null and b/docs/_site/animation/task2_media/0058.png differ diff --git a/docs/_site/animation/task2_media/0059.png b/docs/_site/animation/task2_media/0059.png new file mode 100644 index 0000000000000000000000000000000000000000..2b73fc97bd89dba99353208883dc1cbde1f246af Binary files /dev/null and b/docs/_site/animation/task2_media/0059.png differ diff --git a/docs/_site/animation/task2_media/0060.png b/docs/_site/animation/task2_media/0060.png new file mode 100644 index 0000000000000000000000000000000000000000..b6e0287c85c508a878db90c3d6dda12442b8bd14 Binary files /dev/null and b/docs/_site/animation/task2_media/0060.png differ diff --git a/docs/_site/animation/task2_media/0061.png b/docs/_site/animation/task2_media/0061.png new file mode 100644 index 0000000000000000000000000000000000000000..4549a39dbabd0ce2c68ebca460cfe6b3d0193060 Binary files /dev/null and b/docs/_site/animation/task2_media/0061.png differ diff --git a/docs/_site/animation/task2_media/0062.png b/docs/_site/animation/task2_media/0062.png new file mode 100644 index 0000000000000000000000000000000000000000..1344b6897e8b89339d5600640f50105e81f1e3e9 Binary files /dev/null and b/docs/_site/animation/task2_media/0062.png differ diff --git a/docs/_site/animation/task2_media/0063.png b/docs/_site/animation/task2_media/0063.png new file mode 100644 index 0000000000000000000000000000000000000000..163e766f7c5dc47979e15cd97620eae85746e011 Binary files /dev/null and b/docs/_site/animation/task2_media/0063.png differ diff --git a/docs/_site/animation/task2_media/0064.png b/docs/_site/animation/task2_media/0064.png new file mode 100644 index 0000000000000000000000000000000000000000..85481a2c52c850d4a4b38b71d9aa804ae785ad37 Binary files /dev/null and b/docs/_site/animation/task2_media/0064.png differ diff --git a/docs/_site/animation/task2_media/0065.png b/docs/_site/animation/task2_media/0065.png new file mode 100644 index 0000000000000000000000000000000000000000..11f2c68c4631cb8abd12d277e82c02b544ad4d5b Binary files /dev/null and b/docs/_site/animation/task2_media/0065.png differ diff --git a/docs/_site/animation/task2_media/0066.png b/docs/_site/animation/task2_media/0066.png new file mode 100644 index 0000000000000000000000000000000000000000..ef7aef34d98b59beb54f096db6ff1ea6837c9422 Binary files /dev/null and b/docs/_site/animation/task2_media/0066.png differ diff --git a/docs/_site/animation/task2_media/0067.png b/docs/_site/animation/task2_media/0067.png new file mode 100644 index 0000000000000000000000000000000000000000..dead5707801de08b58ed9fabf323a4c366d0e493 Binary files /dev/null and b/docs/_site/animation/task2_media/0067.png differ diff --git a/docs/_site/animation/task2_media/0068.png b/docs/_site/animation/task2_media/0068.png new file mode 100644 index 0000000000000000000000000000000000000000..7ae1dbf7d5f9c70f9413462e0c8f024e8f68cb91 Binary files /dev/null and b/docs/_site/animation/task2_media/0068.png differ diff --git a/docs/_site/animation/task2_media/0069.png b/docs/_site/animation/task2_media/0069.png new file mode 100644 index 0000000000000000000000000000000000000000..aa70c099fd9d1af6949530987f71a79def991cd9 Binary files /dev/null and b/docs/_site/animation/task2_media/0069.png differ diff --git a/docs/_site/animation/task2_media/0070.png b/docs/_site/animation/task2_media/0070.png new file mode 100644 index 0000000000000000000000000000000000000000..0e258cded542f2814bae1a096d041343fb5b1dfb Binary files /dev/null and b/docs/_site/animation/task2_media/0070.png differ diff --git a/docs/_site/animation/task2_media/0071.png b/docs/_site/animation/task2_media/0071.png new file mode 100644 index 0000000000000000000000000000000000000000..b54070b2f7e8edd7a6e3ffa357a22177ed241c7c Binary files /dev/null and b/docs/_site/animation/task2_media/0071.png differ diff --git a/docs/_site/animation/task2_media/0072.png b/docs/_site/animation/task2_media/0072.png new file mode 100644 index 0000000000000000000000000000000000000000..7c30d7c323e132ca12096a063101b8d37bb9eb84 Binary files /dev/null and b/docs/_site/animation/task2_media/0072.png differ diff --git a/docs/_site/animation/task2_media/0073.png b/docs/_site/animation/task2_media/0073.png new file mode 100644 index 0000000000000000000000000000000000000000..6e6cee35b5a6d2ae9fe0810bec1a522f4e65e65e Binary files /dev/null and b/docs/_site/animation/task2_media/0073.png differ diff --git a/docs/_site/animation/task2_media/0074.png b/docs/_site/animation/task2_media/0074.png new file mode 100644 index 0000000000000000000000000000000000000000..39c80ba22567f3ef0f5c18d71f503392c5df44f9 Binary files /dev/null and b/docs/_site/animation/task2_media/0074.png differ diff --git a/docs/_site/animation/task2_media/0075.png b/docs/_site/animation/task2_media/0075.png new file mode 100644 index 0000000000000000000000000000000000000000..6b8ef5e9401312c9fc507eb618800fb78489bc6d Binary files /dev/null and b/docs/_site/animation/task2_media/0075.png differ diff --git a/docs/_site/animation/task2_media/0076.png b/docs/_site/animation/task2_media/0076.png new file mode 100644 index 0000000000000000000000000000000000000000..f3aac80bd6c36a813f0432a037bde8ca4c932aa3 Binary files /dev/null and b/docs/_site/animation/task2_media/0076.png differ diff --git a/docs/_site/animation/task2_media/0077.png b/docs/_site/animation/task2_media/0077.png new file mode 100644 index 0000000000000000000000000000000000000000..15d2236a843b4f81200c39fe78431257be5daafd Binary files /dev/null and b/docs/_site/animation/task2_media/0077.png differ diff --git a/docs/_site/animation/task2_media/0078.png b/docs/_site/animation/task2_media/0078.png new file mode 100644 index 0000000000000000000000000000000000000000..6546ed1dc23bb55fc580795f11bf721f6d090d59 Binary files /dev/null and b/docs/_site/animation/task2_media/0078.png differ diff --git a/docs/_site/animation/task2_media/0079.png b/docs/_site/animation/task2_media/0079.png new file mode 100644 index 0000000000000000000000000000000000000000..4bcd606b48ac469eccd12dd60a8a7816c9e4004a Binary files /dev/null and b/docs/_site/animation/task2_media/0079.png differ diff --git a/docs/_site/animation/task2_media/animation_2a_demo.gif b/docs/_site/animation/task2_media/animation_2a_demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..6ba03622d49eabc0ec1b55969a58dfc201a1e7c8 Binary files /dev/null and b/docs/_site/animation/task2_media/animation_2a_demo.gif differ diff --git a/docs/_site/animation/task2_media/forward_kinematic_diagram.jpg b/docs/_site/animation/task2_media/forward_kinematic_diagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f0c559bc2712ed45b5ba670091ae0200fc57e4b8 Binary files /dev/null and b/docs/_site/animation/task2_media/forward_kinematic_diagram.jpg differ diff --git a/docs/_site/animation/task2_media/gif1.gif b/docs/_site/animation/task2_media/gif1.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f680a6b1665064008b8efc44ed424f6c403ff41 Binary files /dev/null and b/docs/_site/animation/task2_media/gif1.gif differ diff --git a/docs/_site/animation/task2_media/gif2.gif b/docs/_site/animation/task2_media/gif2.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5a6618e586fa9f3d319a80cd64db2b90b641f42 Binary files /dev/null and b/docs/_site/animation/task2_media/gif2.gif differ diff --git a/docs/_site/animation/task2_media/ik.gif b/docs/_site/animation/task2_media/ik.gif new file mode 100644 index 0000000000000000000000000000000000000000..53180f8180fcc5d70fc69eea07b38642b67514f2 Binary files /dev/null and b/docs/_site/animation/task2_media/ik.gif differ diff --git a/docs/_site/animation/task3_media/closest_on_line_segment.png b/docs/_site/animation/task3_media/closest_on_line_segment.png new file mode 100644 index 0000000000000000000000000000000000000000..7633fc8fae666d65644283f467ddb32bcf3d25fc Binary files /dev/null and b/docs/_site/animation/task3_media/closest_on_line_segment.png differ diff --git a/docs/_site/animation/task3_media/skinning.gif b/docs/_site/animation/task3_media/skinning.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdd8b1366b7e52016b7a70f8b1c67e10234fdf55 Binary files /dev/null and b/docs/_site/animation/task3_media/skinning.gif differ diff --git a/docs/_site/animation/task3_media/skinning_eqn1.png b/docs/_site/animation/task3_media/skinning_eqn1.png new file mode 100644 index 0000000000000000000000000000000000000000..22ce041450be7733c1c2deb52f626fb7e66e36aa Binary files /dev/null and b/docs/_site/animation/task3_media/skinning_eqn1.png differ diff --git a/docs/_site/animation/task3_media/skinning_eqn2.png b/docs/_site/animation/task3_media/skinning_eqn2.png new file mode 100644 index 0000000000000000000000000000000000000000..1fb3e99676ac8376c48273281881c887624092e6 Binary files /dev/null and b/docs/_site/animation/task3_media/skinning_eqn2.png differ diff --git a/docs/_site/animation/task3_media/skinning_equations.png b/docs/_site/animation/task3_media/skinning_equations.png new file mode 100644 index 0000000000000000000000000000000000000000..5de079b9ab1f2f54ec7ea09d69e383560de5808d Binary files /dev/null and b/docs/_site/animation/task3_media/skinning_equations.png differ diff --git a/docs/_site/assets/css/just-the-docs-dark.css b/docs/_site/assets/css/just-the-docs-dark.css new file mode 100644 index 0000000000000000000000000000000000000000..0b5aa1622c7883ef976b333d9e85be4dbd548377 --- /dev/null +++ b/docs/_site/assets/css/just-the-docs-dark.css @@ -0,0 +1,1541 @@ +@charset "UTF-8"; +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +/* Document ========================================================================== */ +/** 1. Correct the line height in all browsers. 2. Prevent adjustments of font size after orientation changes in iOS. */ +html { line-height: 1.15; /* 1 */ -webkit-text-size-adjust: 100%; /* 2 */ } + +/* Sections ========================================================================== */ +/** Remove the margin in all browsers. */ +body { margin: 0; } + +/** Render the `main` element consistently in IE. */ +main { display: block; } + +/** Correct the font size and margin on `h1` elements within `section` and `article` contexts in Chrome, Firefox, and Safari. */ +h1 { font-size: 2em; margin: 0.67em 0; } + +/* Grouping content ========================================================================== */ +/** 1. Add the correct box sizing in Firefox. 2. Show the overflow in Edge and IE. */ +hr { box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ } + +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +pre { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/* Text-level semantics ========================================================================== */ +/** Remove the gray background on active links in IE 10. */ +a { background-color: transparent; } + +/** 1. Remove the bottom border in Chrome 57- 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ +abbr[title] { border-bottom: none; /* 1 */ text-decoration: underline; /* 2 */ text-decoration: underline dotted; /* 2 */ } + +/** Add the correct font weight in Chrome, Edge, and Safari. */ +b, strong { font-weight: bolder; } + +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +code, kbd, samp { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/** Add the correct font size in all browsers. */ +small { font-size: 80%; } + +/** Prevent `sub` and `sup` elements from affecting the line height in all browsers. */ +sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } + +sub { bottom: -0.25em; } + +sup { top: -0.5em; } + +/* Embedded content ========================================================================== */ +/** Remove the border on images inside links in IE 10. */ +img { border-style: none; } + +/* Forms ========================================================================== */ +/** 1. Change the font styles in all browsers. 2. Remove the margin in Firefox and Safari. */ +button, input, optgroup, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 1 */ line-height: 1.15; /* 1 */ margin: 0; /* 2 */ } + +/** Show the overflow in IE. 1. Show the overflow in Edge. */ +button, input { /* 1 */ overflow: visible; } + +/** Remove the inheritance of text transform in Edge, Firefox, and IE. 1. Remove the inheritance of text transform in Firefox. */ +button, select { /* 1 */ text-transform: none; } + +/** Correct the inability to style clickable types in iOS and Safari. */ +button, [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; } + +/** Remove the inner border and padding in Firefox. */ +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } + +/** Restore the focus styles unset by the previous rule. */ +button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } + +/** Correct the padding in Firefox. */ +fieldset { padding: 0.35em 0.75em 0.625em; } + +/** 1. Correct the text wrapping in Edge and IE. 2. Correct the color inheritance from `fieldset` elements in IE. 3. Remove the padding so developers are not caught out when they zero out `fieldset` elements in all browsers. */ +legend { box-sizing: border-box; /* 1 */ color: inherit; /* 2 */ display: table; /* 1 */ max-width: 100%; /* 1 */ padding: 0; /* 3 */ white-space: normal; /* 1 */ } + +/** Add the correct vertical alignment in Chrome, Firefox, and Opera. */ +progress { vertical-align: baseline; } + +/** Remove the default vertical scrollbar in IE 10+. */ +textarea { overflow: auto; } + +/** 1. Add the correct box sizing in IE 10. 2. Remove the padding in IE 10. */ +[type="checkbox"], [type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } + +/** Correct the cursor style of increment and decrement buttons in Chrome. */ +[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; } + +/** 1. Correct the odd appearance in Chrome and Safari. 2. Correct the outline style in Safari. */ +[type="search"] { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } + +/** Remove the inner padding in Chrome and Safari on macOS. */ +[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +/** 1. Correct the inability to style clickable types in iOS and Safari. 2. Change font properties to `inherit` in Safari. */ +::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ } + +/* Interactive ========================================================================== */ +/* Add the correct display in Edge, IE 10+, and Firefox. */ +details { display: block; } + +/* Add the correct display in all browsers. */ +summary { display: list-item; } + +/* Misc ========================================================================== */ +/** Add the correct display in IE 10+. */ +template { display: none; } + +/** Add the correct display in IE 10. */ +[hidden] { display: none; } + +* { box-sizing: border-box; } + +::selection { color: #fff; background: #2c84fa; } + +html { font-size: 14px !important; scroll-behavior: smooth; } + +@media (min-width: 31.25rem) { html { font-size: 16px !important; } } + +body { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: inherit; line-height: 1.4; color: #e6e1e8; background-color: #27262b; } + +ol, ul, dl, pre, address, blockquote, table, div, hr, form, fieldset, noscript .table-wrapper { margin-top: 0; } + +h1, h2, h3, h4, h5, h6 { margin-top: 0; margin-bottom: 1em; font-weight: 500; line-height: 1.25; color: #f5f6fa; } + +p { margin-top: 1em; margin-bottom: 1em; } + +a { color: #2c84fa; text-decoration: none; } + +a:not([class]) { text-decoration: none; background-image: linear-gradient(#44434d 0%, #44434d 100%); background-repeat: repeat-x; background-position: 0 100%; background-size: 1px 1px; } + +a:not([class]):hover { background-image: linear-gradient(rgba(44, 132, 250, 0.45) 0%, rgba(44, 132, 250, 0.45) 100%); background-size: 1px 1px; } + +code { font-family: "SFMono-Regular", Menlo, Consolas, Monospace; font-size: 0.75em; line-height: 1.4; } + +figure, pre { margin: 0; } + +li { margin: 0.25em 0; } + +img { max-width: 100%; height: auto; } + +hr { height: 1px; padding: 0; margin: 2rem 0; background-color: #44434d; border: 0; } + +.side-bar { z-index: 0; display: flex; flex-wrap: wrap; background-color: #27262b; } + +@media (min-width: 50rem) { .side-bar { flex-wrap: nowrap; position: fixed; width: 248px; height: 100%; flex-direction: column; border-right: 1px solid #44434d; align-items: flex-end; } } + +@media (min-width: 66.5rem) { .side-bar { width: calc((100% - 1064px) / 2 + 264px); min-width: 264px; } } + +@media (min-width: 50rem) { .main { position: relative; max-width: 800px; margin-left: 248px; } } + +@media (min-width: 66.5rem) { .main { margin-left: calc( (100% - 1064px) / 2 + 264px); } } + +.main-content-wrap { padding-right: 1rem; padding-left: 1rem; padding-top: 1rem; padding-bottom: 1rem; } + +@media (min-width: 50rem) { .main-content-wrap { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 50rem) { .main-content-wrap { padding-top: 2rem; padding-bottom: 2rem; } } + +.main-header { z-index: 0; display: none; background-color: #27262b; } + +@media (min-width: 50rem) { .main-header { display: flex; justify-content: space-between; height: 60px; background-color: #27262b; border-bottom: 1px solid #44434d; } } + +.main-header.nav-open { display: block; } + +@media (min-width: 50rem) { .main-header.nav-open { display: flex; } } + +.site-nav, .site-header, .site-footer { width: 100%; } + +@media (min-width: 66.5rem) { .site-nav, .site-header, .site-footer { width: 264px; } } + +.site-nav { display: none; } + +.site-nav.nav-open { display: block; } + +@media (min-width: 50rem) { .site-nav { display: block; padding-top: 3rem; padding-bottom: 1rem; overflow-y: auto; flex: 1 1 auto; } } + +.site-header { display: flex; min-height: 60px; align-items: center; } + +@media (min-width: 50rem) { .site-header { height: 60px; max-height: 60px; border-bottom: 1px solid #44434d; } } + +.site-title { padding-right: 1rem; padding-left: 1rem; flex-grow: 1; display: flex; height: 100%; align-items: center; padding-top: 0.75rem; padding-bottom: 0.75rem; color: #f5f6fa; font-size: 18px !important; } + +@media (min-width: 50rem) { .site-title { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 31.25rem) { .site-title { font-size: 24px !important; line-height: 1.25; } } + +@media (min-width: 50rem) { .site-title { padding-top: 0.5rem; padding-bottom: 0.5rem; } } + +.site-button { display: flex; height: 100%; padding: 1rem; align-items: center; } + +@media (min-width: 50rem) { .site-header .site-button { display: none; } } + +.site-title:hover { background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 80%, rgba(32, 31, 35, 0) 100%); } + +.site-button:hover { background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 100%); } + +body { position: relative; padding-bottom: 4rem; overflow-y: scroll; } + +@media (min-width: 50rem) { body { position: static; padding-bottom: 0; } } + +.site-footer { padding-right: 1rem; padding-left: 1rem; position: absolute; bottom: 0; left: 0; padding-top: 1rem; padding-bottom: 1rem; color: #959396; font-size: 11px !important; } + +@media (min-width: 50rem) { .site-footer { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 31.25rem) { .site-footer { font-size: 12px !important; } } + +@media (min-width: 50rem) { .site-footer { position: static; justify-self: end; } } + +.icon { width: 1.5rem; height: 1.5rem; color: #2c84fa; } + +.main-content { line-height: 1.6; } + +.main-content ol, .main-content ul, .main-content dl, .main-content pre, .main-content address, .main-content blockquote, .main-content .table-wrapper { margin-top: 0.5em; } + +.main-content a { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + +.main-content ul, .main-content ol { padding-left: 1.5em; } + +.main-content li .highlight { margin-top: 0.25rem; } + +.main-content ol { list-style-type: none; counter-reset: step-counter; } + +.main-content ol > li { position: relative; } + +.main-content ol > li::before { position: absolute; top: 0.2em; left: -1.6em; color: #959396; content: counter(step-counter); counter-increment: step-counter; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .main-content ol > li::before { font-size: 14px !important; } } + +@media (min-width: 31.25rem) { .main-content ol > li::before { top: 0.11em; } } + +.main-content ol > li ol { counter-reset: sub-counter; } + +.main-content ol > li ol li::before { content: counter(sub-counter, lower-alpha); counter-increment: sub-counter; } + +.main-content ul { list-style: none; } + +.main-content ul > li::before { position: absolute; margin-left: -1.4em; color: #959396; content: "•"; } + +.main-content .task-list { padding-left: 0; } + +.main-content .task-list-item { display: flex; align-items: center; } + +.main-content .task-list-item::before { content: ""; } + +.main-content .task-list-item-checkbox { margin-right: 0.6em; } + +.main-content hr + * { margin-top: 0; } + +.main-content h1:first-of-type { margin-top: 0.5em; } + +.main-content dl { display: grid; grid-template: auto / 10em 1fr; } + +.main-content dt, .main-content dd { margin: 0.25em 0; } + +.main-content dt { grid-column: 1; font-weight: 500; text-align: right; } + +.main-content dt::after { content: ":"; } + +.main-content dd { grid-column: 2; margin-bottom: 0; margin-left: 1em; } + +.main-content dd blockquote:first-child, .main-content dd div:first-child, .main-content dd dl:first-child, .main-content dd dt:first-child, .main-content dd h1:first-child, .main-content dd h2:first-child, .main-content dd h3:first-child, .main-content dd h4:first-child, .main-content dd h5:first-child, .main-content dd h6:first-child, .main-content dd li:first-child, .main-content dd ol:first-child, .main-content dd p:first-child, .main-content dd pre:first-child, .main-content dd table:first-child, .main-content dd ul:first-child, .main-content dd .table-wrapper:first-child { margin-top: 0; } + +.main-content dd dl:first-child dt:first-child, .main-content dd dl:first-child dd:nth-child(2), .main-content ol dl:first-child dt:first-child, .main-content ol dl:first-child dd:nth-child(2), .main-content ul dl:first-child dt:first-child, .main-content ul dl:first-child dd:nth-child(2) { margin-top: 0; } + +.main-content .anchor-heading { position: absolute; right: -1rem; width: 1.5rem; height: 100%; padding-right: 0.25rem; padding-left: 0.25rem; overflow: visible; } + +@media (min-width: 50rem) { .main-content .anchor-heading { right: auto; left: -1.5rem; } } + +.main-content .anchor-heading svg { display: inline-block; width: 100%; height: 100%; color: #2c84fa; visibility: hidden; } + +.main-content .anchor-heading:hover svg, .main-content h1:hover > .anchor-heading svg, .main-content h2:hover > .anchor-heading svg, .main-content h3:hover > .anchor-heading svg, .main-content h4:hover > .anchor-heading svg, .main-content h5:hover > .anchor-heading svg, .main-content h6:hover > .anchor-heading svg { visibility: visible; } + +.main-content summary { cursor: pointer; } + +.main-content h1, .main-content h2, .main-content h3, .main-content h4, .main-content h5, .main-content h6 { position: relative; margin-top: 1.5em; margin-bottom: 0.25em; } + +.main-content h1:first-child, .main-content h2:first-child, .main-content h3:first-child, .main-content h4:first-child, .main-content h5:first-child, .main-content h6:first-child { margin-top: 0.5rem; } + +.main-content h1 + table, .main-content h1 + .table-wrapper, .main-content h1 + .code-example, .main-content h1 + .highlighter-rouge, .main-content h2 + table, .main-content h2 + .table-wrapper, .main-content h2 + .code-example, .main-content h2 + .highlighter-rouge, .main-content h3 + table, .main-content h3 + .table-wrapper, .main-content h3 + .code-example, .main-content h3 + .highlighter-rouge, .main-content h4 + table, .main-content h4 + .table-wrapper, .main-content h4 + .code-example, .main-content h4 + .highlighter-rouge, .main-content h5 + table, .main-content h5 + .table-wrapper, .main-content h5 + .code-example, .main-content h5 + .highlighter-rouge, .main-content h6 + table, .main-content h6 + .table-wrapper, .main-content h6 + .code-example, .main-content h6 + .highlighter-rouge { margin-top: 1em; } + +.main-content h1 + p, .main-content h2 + p, .main-content h3 + p, .main-content h4 + p, .main-content h5 + p, .main-content h6 + p { margin-top: 0; } + +.nav-list { padding: 0; margin-top: 0; margin-bottom: 0; list-style: none; } + +.nav-list .nav-list-item { font-size: 14px !important; position: relative; margin: 0; } + +@media (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 16px !important; } } + +@media (min-width: 50rem) { .nav-list .nav-list-item { font-size: 12px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 14px !important; } } + +.nav-list .nav-list-item .nav-list-link { display: block; min-height: 3rem; padding-top: 0.25rem; padding-bottom: 0.25rem; line-height: 2.5rem; padding-right: 3rem; padding-left: 1rem; } + +@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-link { min-height: 2rem; line-height: 1.5rem; padding-right: 2rem; padding-left: 2rem; } } + +.nav-list .nav-list-item .nav-list-link.active { font-weight: 600; text-decoration: none; } + +.nav-list .nav-list-item .nav-list-link:hover, .nav-list .nav-list-item .nav-list-link.active { background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 80%, rgba(32, 31, 35, 0) 100%); } + +.nav-list .nav-list-item .nav-list-expander { position: absolute; right: 0; width: 3rem; height: 3rem; padding-top: 0.75rem; padding-right: 0.75rem; padding-bottom: 0.75rem; padding-left: 0.75rem; color: #2c84fa; } + +@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-expander { width: 2rem; height: 2rem; padding-top: 0.5rem; padding-right: 0.5rem; padding-bottom: 0.5rem; padding-left: 0.5rem; } } + +.nav-list .nav-list-item .nav-list-expander:hover { background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 100%); } + +.nav-list .nav-list-item .nav-list-expander svg { transform: rotate(90deg); } + +.nav-list .nav-list-item > .nav-list { display: none; padding-left: 0.75rem; list-style: none; } + +.nav-list .nav-list-item > .nav-list .nav-list-item { position: relative; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { color: #959396; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-expander { color: #959396; } + +.nav-list .nav-list-item.active > .nav-list-expander svg { transform: rotate(-90deg); } + +.nav-list .nav-list-item.active > .nav-list { display: block; } + +.nav-category { padding-top: 0.5rem; padding-right: 1rem; padding-bottom: 0.5rem; padding-left: 1rem; font-weight: 600; text-align: end; text-transform: uppercase; border-bottom: 1px solid #44434d; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .nav-category { font-size: 12px !important; } } + +@media (min-width: 50rem) { .nav-category { padding-right: 2rem; padding-left: 2rem; margin-top: 1rem; text-align: start; } .nav-category:first-child { margin-top: 0; } } + +.aux-nav { height: 100%; overflow-x: auto; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .aux-nav { font-size: 12px !important; } } + +.aux-nav .aux-nav-list { display: flex; height: 100%; padding: 0; margin: 0; list-style: none; } + +.aux-nav .aux-nav-list-item { display: inline-block; height: 100%; padding: 0; margin: 0; } + +@media (min-width: 50rem) { .aux-nav { padding-right: 1rem; } } + +@media (min-width: 50rem) { .breadcrumb-nav { margin-top: -1rem; } } + +.breadcrumb-nav-list { padding-left: 0; margin-bottom: 0.75rem; list-style: none; } + +.breadcrumb-nav-list-item { display: table-cell; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .breadcrumb-nav-list-item { font-size: 12px !important; } } + +.breadcrumb-nav-list-item::before { display: none; } + +.breadcrumb-nav-list-item::after { display: inline-block; margin-right: 0.5rem; margin-left: 0.5rem; color: #959396; content: "/"; } + +.breadcrumb-nav-list-item:last-child::after { content: ""; } + +h1, .text-alpha { font-size: 32px !important; line-height: 1.25; font-weight: 300; } + +@media (min-width: 31.25rem) { h1, .text-alpha { font-size: 36px !important; } } + +h2, .text-beta { font-size: 18px !important; } + +@media (min-width: 31.25rem) { h2, .text-beta { font-size: 24px !important; line-height: 1.25; } } + +h3, .text-gamma { font-size: 16px !important; } + +@media (min-width: 31.25rem) { h3, .text-gamma { font-size: 18px !important; } } + +h4, .text-delta { font-size: 11px !important; font-weight: 400; text-transform: uppercase; letter-spacing: 0.1em; } + +@media (min-width: 31.25rem) { h4, .text-delta { font-size: 12px !important; } } + +h4 code { text-transform: none; } + +h5, .text-epsilon { font-size: 12px !important; color: #44434d; } + +@media (min-width: 31.25rem) { h5, .text-epsilon { font-size: 14px !important; } } + +h6, .text-zeta { font-size: 11px !important; color: #44434d; } + +@media (min-width: 31.25rem) { h6, .text-zeta { font-size: 12px !important; } } + +.text-small { font-size: 11px !important; } + +@media (min-width: 31.25rem) { .text-small { font-size: 12px !important; } } + +.text-mono { font-family: "SFMono-Regular", Menlo, Consolas, Monospace !important; } + +.text-left { text-align: left !important; } + +.text-center { text-align: center !important; } + +.text-right { text-align: right !important; } + +.label, .label-blue { display: inline-block; padding-top: 0.16em; padding-right: 0.56em; padding-bottom: 0.16em; padding-left: 0.56em; margin-right: 0.5rem; margin-left: 0.5rem; color: #fff; text-transform: uppercase; vertical-align: middle; background-color: #2869e6; font-size: 11px !important; border-radius: 12px; } + +@media (min-width: 31.25rem) { .label, .label-blue { font-size: 12px !important; } } + +.label-green { background-color: #009c7b; } + +.label-purple { background-color: #5e41d0; } + +.label-red { background-color: #e94c4c; } + +.label-yellow { color: #44434d; background-color: #f7d12e; } + +.btn { display: inline-block; box-sizing: border-box; padding-top: 0.3em; padding-right: 1em; padding-bottom: 0.3em; padding-left: 1em; margin: 0; font-family: inherit; font-size: inherit; font-weight: 500; line-height: 1.5; color: #2c84fa; text-decoration: none; vertical-align: baseline; cursor: pointer; background-color: #302d36; border-width: 0; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); appearance: none; } + +.btn:focus { text-decoration: none; outline: none; box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn:focus:hover, .btn.selected:focus { box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn:hover, .btn.zeroclipboard-is-hover { color: #227efa; } + +.btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active { text-decoration: none; background-color: #2e2b33; } + +.btn:active, .btn.selected, .btn.zeroclipboard-is-active { background-color: #29262e; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn.selected:hover { background-color: #cfcfcf; } + +.btn:disabled, .btn:disabled:hover, .btn.disabled, .btn.disabled:hover { color: rgba(102, 102, 102, 0.5); cursor: default; background-color: rgba(229, 229, 229, 0.5); background-image: none; box-shadow: none; } + +.btn-outline { color: #2c84fa; background: transparent; box-shadow: inset 0 0 0 2px #e6e1e8; } + +.btn-outline:hover, .btn-outline:active, .btn-outline.zeroclipboard-is-hover, .btn-outline.zeroclipboard-is-active { color: #1878fa; text-decoration: none; background-color: transparent; box-shadow: inset 0 0 0 3px #e6e1e8; } + +.btn-outline:focus { text-decoration: none; outline: none; box-shadow: inset 0 0 0 2px #5c5962, 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn-outline:focus:hover, .btn-outline.selected:focus { box-shadow: inset 0 0 0 2px #5c5962; } + +.btn-primary { color: #fff; background-color: #2448a7; background-image: linear-gradient(#2b55c4, #2448a7); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-primary:hover, .btn-primary.zeroclipboard-is-hover { color: #fff; background-color: #22459e; background-image: linear-gradient(#2850b7, #22459e); } + +.btn-primary:active, .btn-primary.selected, .btn-primary.zeroclipboard-is-active { background-color: #21439a; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-primary.selected:hover { background-color: #1d3a85; } + +.btn-purple { color: #fff; background-color: #5739ce; background-image: linear-gradient(#6f55d5, #5739ce); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-purple:hover, .btn-purple.zeroclipboard-is-hover { color: #fff; background-color: #5132cb; background-image: linear-gradient(#6549d2, #5132cb); } + +.btn-purple:active, .btn-purple.selected, .btn-purple.zeroclipboard-is-active { background-color: #4f31c6; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-purple.selected:hover { background-color: #472cb2; } + +.btn-blue { color: #fff; background-color: #227efa; background-image: linear-gradient(#4593fb, #227efa); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-blue:hover, .btn-blue.zeroclipboard-is-hover { color: #fff; background-color: #1878fa; background-image: linear-gradient(#368afa, #1878fa); } + +.btn-blue:active, .btn-blue.selected, .btn-blue.zeroclipboard-is-active { background-color: #1375f9; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-blue.selected:hover { background-color: #0669ed; } + +.btn-green { color: #fff; background-color: #10ac7d; background-image: linear-gradient(#13cc95, #10ac7d); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-green:hover, .btn-green.zeroclipboard-is-hover { color: #fff; background-color: #0fa276; background-image: linear-gradient(#12be8b, #0fa276); } + +.btn-green:active, .btn-green.selected, .btn-green.zeroclipboard-is-active { background-color: #0f9e73; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-green.selected:hover { background-color: #0d8662; } + +.search { position: relative; z-index: 2; flex-grow: 1; height: 4rem; padding: 0.5rem; transition: padding linear 200ms; } + +@media (min-width: 50rem) { .search { position: relative !important; width: auto !important; height: 100% !important; padding: 0; transition: none; } } + +.search-input-wrap { position: relative; z-index: 1; height: 3rem; overflow: hidden; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); transition: height linear 200ms; } + +@media (min-width: 50rem) { .search-input-wrap { position: absolute; width: 100%; max-width: 536px; height: 100% !important; border-radius: 0; box-shadow: none; transition: width ease 400ms; } } + +.search-input { position: absolute; width: 100%; height: 100%; padding-top: 0.5rem; padding-right: 1rem; padding-bottom: 0.5rem; padding-left: 2.5rem; font-size: 16px; background-color: #302d36; border-top: 0; border-right: 0; border-bottom: 0; border-left: 0; border-radius: 0; } + +@media (min-width: 50rem) { .search-input { padding-top: 1rem; padding-bottom: 1rem; padding-left: 3.5rem; font-size: 14px; background-color: #27262b; transition: padding-left linear 200ms; } } + +.search-input:focus { outline: 0; } + +.search-input:focus + .search-label .search-icon { color: #2c84fa; } + +.search-label { position: absolute; display: flex; height: 100%; padding-left: 1rem; } + +@media (min-width: 50rem) { .search-label { padding-left: 2rem; transition: padding-left linear 200ms; } } + +.search-label .search-icon { width: 1.2rem; height: 1.2rem; align-self: center; color: #959396; } + +.search-results { position: absolute; left: 0; display: none; width: 100%; max-height: calc(100% - 4rem); overflow-y: auto; background-color: #302d36; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +@media (min-width: 50rem) { .search-results { top: 100%; width: 536px; max-height: calc(100vh - 200%) !important; } } + +.search-results-list { padding-left: 0; margin-bottom: 0.25rem; list-style: none; font-size: 14px !important; } + +@media (min-width: 31.25rem) { .search-results-list { font-size: 16px !important; } } + +@media (min-width: 50rem) { .search-results-list { font-size: 12px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .search-results-list { font-size: 14px !important; } } + +.search-results-list-item { padding: 0; margin: 0; } + +.search-result { display: block; padding-top: 0.25rem; padding-right: 0.75rem; padding-bottom: 0.25rem; padding-left: 0.75rem; } + +.search-result:hover, .search-result.active { background-color: #201f23; } + +.search-result-title { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; } + +@media (min-width: 31.25rem) { .search-result-title { display: inline-block; width: 40%; padding-right: 0.5rem; vertical-align: top; } } + +.search-result-doc { display: flex; align-items: center; word-wrap: break-word; } + +.search-result-doc.search-result-doc-parent { opacity: 0.5; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 14px !important; } } + +@media (min-width: 50rem) { .search-result-doc.search-result-doc-parent { font-size: 11px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 12px !important; } } + +.search-result-doc .search-result-icon { width: 1rem; height: 1rem; margin-right: 0.5rem; color: #2c84fa; flex-shrink: 0; } + +.search-result-doc .search-result-doc-title { overflow: auto; } + +.search-result-section { margin-left: 1.5rem; word-wrap: break-word; } + +.search-result-rel-url { display: block; margin-left: 1.5rem; overflow: hidden; color: #959396; text-overflow: ellipsis; white-space: nowrap; font-size: 9px !important; } + +@media (min-width: 31.25rem) { .search-result-rel-url { font-size: 10px !important; } } + +.search-result-previews { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 1rem; margin-left: 0.5rem; color: #959396; word-wrap: break-word; border-left: 1px solid; border-left-color: #44434d; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .search-result-previews { font-size: 12px !important; } } + +@media (min-width: 31.25rem) { .search-result-previews { display: inline-block; width: 60%; padding-left: 0.5rem; margin-left: 0; vertical-align: top; } } + +.search-result-preview + .search-result-preview { margin-top: 0.25rem; } + +.search-result-highlight { font-weight: bold; } + +.search-no-result { padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .search-no-result { font-size: 14px !important; } } + +.search-button { position: fixed; right: 1rem; bottom: 1rem; display: flex; width: 3.5rem; height: 3.5rem; background-color: #302d36; border: 1px solid rgba(44, 132, 250, 0.3); border-radius: 1.75rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); align-items: center; justify-content: center; } + +.search-overlay { position: fixed; top: 0; left: 0; z-index: 1; width: 0; height: 0; background-color: rgba(0, 0, 0, 0.3); opacity: 0; transition: opacity ease 400ms, width 0s 400ms, height 0s 400ms; } + +.search-active .search { position: fixed; top: 0; left: 0; width: 100%; height: 100%; padding: 0; } + +.search-active .search-input-wrap { height: 4rem; border-radius: 0; } + +@media (min-width: 50rem) { .search-active .search-input-wrap { width: 536px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } } + +.search-active .search-input { background-color: #302d36; } + +@media (min-width: 50rem) { .search-active .search-input { padding-left: 2.3rem; } } + +@media (min-width: 50rem) { .search-active .search-label { padding-left: 0.6rem; } } + +.search-active .search-results { display: block; } + +.search-active .search-overlay { width: 100%; height: 100%; opacity: 1; transition: opacity ease 400ms, width 0s, height 0s; } + +@media (min-width: 50rem) { .search-active .main { position: fixed; right: 0; left: 0; } } + +.search-active .main-header { padding-top: 4rem; } + +@media (min-width: 50rem) { .search-active .main-header { padding-top: 0; } } + +.table-wrapper { display: block; width: 100%; max-width: 100%; margin-bottom: 1.5rem; overflow-x: auto; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +table { display: table; min-width: 100%; border-collapse: separate; } + +th, td { font-size: 12px !important; min-width: 120px; padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; background-color: #302d36; border-bottom: 1px solid rgba(68, 67, 77, 0.5); border-left: 1px solid #44434d; } + +@media (min-width: 31.25rem) { th, td { font-size: 14px !important; } } + +th:first-of-type, td:first-of-type { border-left: 0; } + +tbody tr:last-of-type th, tbody tr:last-of-type td { border-bottom: 0; } + +tbody tr:last-of-type td { padding-bottom: 0.75rem; } + +thead th { border-bottom: 1px solid #44434d; } + +code { padding: 0.2em 0.15em; font-weight: 400; background-color: #302d36; border: 1px solid #44434d; border-radius: 4px; } + +a:visited code { border-color: #44434d; } + +div.highlighter-rouge { padding: 0.75rem; margin-top: 0; margin-bottom: 0.75rem; overflow-x: auto; background-color: #302d36; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; } + +div.highlighter-rouge div.highlight, div.highlighter-rouge pre.highlight, div.highlighter-rouge code { padding: 0; margin: 0; border: 0; } + +figure.highlight { padding: 0.75rem; margin-top: 0; margin-bottom: 0.75rem; background-color: #302d36; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; } + +figure.highlight pre, figure.highlight code { padding: 0; margin: 0; border: 0; } + +.highlight .table-wrapper { padding: 0; margin: 0; border: 0; box-shadow: none; } + +.highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 11px !important; min-width: 0; padding: 0; background-color: #302d36; border: 0; } + +@media (min-width: 31.25rem) { .highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 12px !important; } } + +.highlight .table-wrapper td.gl { padding-right: 0.75rem; } + +.highlight .table-wrapper pre { margin: 0; line-height: 2; } + +.highlight .c { color: #586e75; } + +.highlight .err { color: #93a1a1; } + +.highlight .g { color: #93a1a1; } + +.highlight .k { color: #859900; } + +.highlight .l { color: #93a1a1; } + +.highlight .n { color: #93a1a1; } + +.highlight .o { color: #859900; } + +.highlight .x { color: #cb4b16; } + +.highlight .p { color: #93a1a1; } + +.highlight .cm { color: #586e75; } + +.highlight .cp { color: #859900; } + +.highlight .c1 { color: #586e75; } + +.highlight .cs { color: #859900; } + +.highlight .gd { color: #2aa198; } + +.highlight .ge { font-style: italic; color: #93a1a1; } + +.highlight .gr { color: #dc322f; } + +.highlight .gh { color: #cb4b16; } + +.highlight .gi { color: #859900; } + +.highlight .go { color: #93a1a1; } + +.highlight .gp { color: #93a1a1; } + +.highlight .gs { font-weight: bold; color: #93a1a1; } + +.highlight .gu { color: #cb4b16; } + +.highlight .gt { color: #93a1a1; } + +.highlight .kc { color: #cb4b16; } + +.highlight .kd { color: #268bd2; } + +.highlight .kn { color: #859900; } + +.highlight .kp { color: #859900; } + +.highlight .kr { color: #268bd2; } + +.highlight .kt { color: #dc322f; } + +.highlight .ld { color: #93a1a1; } + +.highlight .m { color: #2aa198; } + +.highlight .s { color: #2aa198; } + +.highlight .na { color: #555; } + +.highlight .nb { color: #b58900; } + +.highlight .nc { color: #268bd2; } + +.highlight .no { color: #cb4b16; } + +.highlight .nd { color: #268bd2; } + +.highlight .ni { color: #cb4b16; } + +.highlight .ne { color: #cb4b16; } + +.highlight .nf { color: #268bd2; } + +.highlight .nl { color: #555; } + +.highlight .nn { color: #93a1a1; } + +.highlight .nx { color: #555; } + +.highlight .py { color: #93a1a1; } + +.highlight .nt { color: #268bd2; } + +.highlight .nv { color: #268bd2; } + +.highlight .ow { color: #859900; } + +.highlight .w { color: #93a1a1; } + +.highlight .mf { color: #2aa198; } + +.highlight .mh { color: #2aa198; } + +.highlight .mi { color: #2aa198; } + +.highlight .mo { color: #2aa198; } + +.highlight .sb { color: #586e75; } + +.highlight .sc { color: #2aa198; } + +.highlight .sd { color: #93a1a1; } + +.highlight .s2 { color: #2aa198; } + +.highlight .se { color: #cb4b16; } + +.highlight .sh { color: #93a1a1; } + +.highlight .si { color: #2aa198; } + +.highlight .sx { color: #2aa198; } + +.highlight .sr { color: #dc322f; } + +.highlight .s1 { color: #2aa198; } + +.highlight .ss { color: #2aa198; } + +.highlight .bp { color: #268bd2; } + +.highlight .vc { color: #268bd2; } + +.highlight .vg { color: #268bd2; } + +.highlight .vi { color: #268bd2; } + +.highlight .il { color: #2aa198; } + +.code-example { padding: 0.75rem; margin-bottom: 0.75rem; overflow: auto; border: 1px solid #44434d; border-radius: 4px; } + +.code-example + .highlighter-rouge, .code-example + figure.highlight { position: relative; margin-top: -1rem; border-right: 1px solid #44434d; border-bottom: 1px solid #44434d; border-left: 1px solid #44434d; border-top-left-radius: 0; border-top-right-radius: 0; } + +.text-grey-dk-000 { color: #959396 !important; } + +.text-grey-dk-100 { color: #5c5962 !important; } + +.text-grey-dk-200 { color: #44434d !important; } + +.text-grey-dk-250 { color: #302d36 !important; } + +.text-grey-dk-300 { color: #27262b !important; } + +.text-grey-lt-000 { color: #f5f6fa !important; } + +.text-grey-lt-100 { color: #eeebee !important; } + +.text-grey-lt-200 { color: #ecebed !important; } + +.text-grey-lt-300 { color: #e6e1e8 !important; } + +.text-blue-000 { color: #2c84fa !important; } + +.text-blue-100 { color: #2869e6 !important; } + +.text-blue-200 { color: #264caf !important; } + +.text-blue-300 { color: #183385 !important; } + +.text-green-000 { color: #41d693 !important; } + +.text-green-100 { color: #11b584 !important; } + +.text-green-200 { color: #009c7b !important; } + +.text-green-300 { color: #026e57 !important; } + +.text-purple-000 { color: #7253ed !important; } + +.text-purple-100 { color: #5e41d0 !important; } + +.text-purple-200 { color: #4e26af !important; } + +.text-purple-300 { color: #381885 !important; } + +.text-yellow-000 { color: #ffeb82 !important; } + +.text-yellow-100 { color: #fadf50 !important; } + +.text-yellow-200 { color: #f7d12e !important; } + +.text-yellow-300 { color: #e7af06 !important; } + +.text-red-000 { color: #f77e7e !important; } + +.text-red-100 { color: #f96e65 !important; } + +.text-red-200 { color: #e94c4c !important; } + +.text-red-300 { color: #dd2e2e !important; } + +.bg-grey-dk-000 { background-color: #959396 !important; } + +.bg-grey-dk-100 { background-color: #5c5962 !important; } + +.bg-grey-dk-200 { background-color: #44434d !important; } + +.bg-grey-dk-250 { background-color: #302d36 !important; } + +.bg-grey-dk-300 { background-color: #27262b !important; } + +.bg-grey-lt-000 { background-color: #f5f6fa !important; } + +.bg-grey-lt-100 { background-color: #eeebee !important; } + +.bg-grey-lt-200 { background-color: #ecebed !important; } + +.bg-grey-lt-300 { background-color: #e6e1e8 !important; } + +.bg-blue-000 { background-color: #2c84fa !important; } + +.bg-blue-100 { background-color: #2869e6 !important; } + +.bg-blue-200 { background-color: #264caf !important; } + +.bg-blue-300 { background-color: #183385 !important; } + +.bg-green-000 { background-color: #41d693 !important; } + +.bg-green-100 { background-color: #11b584 !important; } + +.bg-green-200 { background-color: #009c7b !important; } + +.bg-green-300 { background-color: #026e57 !important; } + +.bg-purple-000 { background-color: #7253ed !important; } + +.bg-purple-100 { background-color: #5e41d0 !important; } + +.bg-purple-200 { background-color: #4e26af !important; } + +.bg-purple-300 { background-color: #381885 !important; } + +.bg-yellow-000 { background-color: #ffeb82 !important; } + +.bg-yellow-100 { background-color: #fadf50 !important; } + +.bg-yellow-200 { background-color: #f7d12e !important; } + +.bg-yellow-300 { background-color: #e7af06 !important; } + +.bg-red-000 { background-color: #f77e7e !important; } + +.bg-red-100 { background-color: #f96e65 !important; } + +.bg-red-200 { background-color: #e94c4c !important; } + +.bg-red-300 { background-color: #dd2e2e !important; } + +.d-block { display: block !important; } + +.d-flex { display: flex !important; } + +.d-inline { display: inline !important; } + +.d-inline-block { display: inline-block !important; } + +.d-none { display: none !important; } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +.float-left { float: left !important; } + +.float-right { float: right !important; } + +.flex-justify-start { justify-content: flex-start !important; } + +.flex-justify-end { justify-content: flex-end !important; } + +.flex-justify-between { justify-content: space-between !important; } + +.flex-justify-around { justify-content: space-around !important; } + +.v-align-baseline { vertical-align: baseline !important; } + +.v-align-bottom { vertical-align: bottom !important; } + +.v-align-middle { vertical-align: middle !important; } + +.v-align-text-bottom { vertical-align: text-bottom !important; } + +.v-align-text-top { vertical-align: text-top !important; } + +.v-align-top { vertical-align: top !important; } + +.fs-1 { font-size: 9px !important; } + +@media (min-width: 31.25rem) { .fs-1 { font-size: 10px !important; } } + +.fs-2 { font-size: 11px !important; } + +@media (min-width: 31.25rem) { .fs-2 { font-size: 12px !important; } } + +.fs-3 { font-size: 12px !important; } + +@media (min-width: 31.25rem) { .fs-3 { font-size: 14px !important; } } + +.fs-4 { font-size: 14px !important; } + +@media (min-width: 31.25rem) { .fs-4 { font-size: 16px !important; } } + +.fs-5 { font-size: 16px !important; } + +@media (min-width: 31.25rem) { .fs-5 { font-size: 18px !important; } } + +.fs-6 { font-size: 18px !important; } + +@media (min-width: 31.25rem) { .fs-6 { font-size: 24px !important; line-height: 1.25; } } + +.fs-7 { font-size: 24px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-7 { font-size: 32px !important; } } + +.fs-8 { font-size: 32px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-8 { font-size: 36px !important; } } + +.fs-9 { font-size: 36px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-9 { font-size: 42px !important; } } + +.fs-10 { font-size: 42px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-10 { font-size: 48px !important; } } + +.fw-300 { font-weight: 300 !important; } + +.fw-400 { font-weight: 400 !important; } + +.fw-500 { font-weight: 500 !important; } + +.fw-700 { font-weight: 700 !important; } + +.lh-0 { line-height: 0 !important; } + +.lh-default { line-height: 1.4; } + +.lh-tight { line-height: 1.25; } + +.ls-5 { letter-spacing: 0.05em !important; } + +.ls-10 { letter-spacing: 0.1em !important; } + +.ls-0 { letter-spacing: 0 !important; } + +.text-uppercase { text-transform: uppercase !important; } + +.list-style-none { padding: 0 !important; margin: 0 !important; list-style: none !important; } + +.list-style-none li::before { display: none !important; } + +.mx-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-0 { margin: 0 !important; } + +.mt-0 { margin-top: 0 !important; } + +.mr-0 { margin-right: 0 !important; } + +.mb-0 { margin-bottom: 0 !important; } + +.ml-0 { margin-left: 0 !important; } + +.mx-0 { margin-right: 0 !important; margin-left: 0 !important; } + +.my-0 { margin-top: 0 !important; margin-bottom: 0 !important; } + +.mxn-0 { margin-right: -0 !important; margin-left: -0 !important; } + +.mx-0-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-1 { margin: 0.25rem !important; } + +.mt-1 { margin-top: 0.25rem !important; } + +.mr-1 { margin-right: 0.25rem !important; } + +.mb-1 { margin-bottom: 0.25rem !important; } + +.ml-1 { margin-left: 0.25rem !important; } + +.mx-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } + +.my-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } + +.mxn-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } + +.mx-1-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-2 { margin: 0.5rem !important; } + +.mt-2 { margin-top: 0.5rem !important; } + +.mr-2 { margin-right: 0.5rem !important; } + +.mb-2 { margin-bottom: 0.5rem !important; } + +.ml-2 { margin-left: 0.5rem !important; } + +.mx-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } + +.my-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } + +.mxn-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } + +.mx-2-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-3 { margin: 0.75rem !important; } + +.mt-3 { margin-top: 0.75rem !important; } + +.mr-3 { margin-right: 0.75rem !important; } + +.mb-3 { margin-bottom: 0.75rem !important; } + +.ml-3 { margin-left: 0.75rem !important; } + +.mx-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } + +.my-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } + +.mxn-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } + +.mx-3-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-4 { margin: 1rem !important; } + +.mt-4 { margin-top: 1rem !important; } + +.mr-4 { margin-right: 1rem !important; } + +.mb-4 { margin-bottom: 1rem !important; } + +.ml-4 { margin-left: 1rem !important; } + +.mx-4 { margin-right: 1rem !important; margin-left: 1rem !important; } + +.my-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } + +.mxn-4 { margin-right: -1rem !important; margin-left: -1rem !important; } + +.mx-4-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-5 { margin: 1.5rem !important; } + +.mt-5 { margin-top: 1.5rem !important; } + +.mr-5 { margin-right: 1.5rem !important; } + +.mb-5 { margin-bottom: 1.5rem !important; } + +.ml-5 { margin-left: 1.5rem !important; } + +.mx-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } + +.my-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } + +.mxn-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } + +.mx-5-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-6 { margin: 2rem !important; } + +.mt-6 { margin-top: 2rem !important; } + +.mr-6 { margin-right: 2rem !important; } + +.mb-6 { margin-bottom: 2rem !important; } + +.ml-6 { margin-left: 2rem !important; } + +.mx-6 { margin-right: 2rem !important; margin-left: 2rem !important; } + +.my-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } + +.mxn-6 { margin-right: -2rem !important; margin-left: -2rem !important; } + +.mx-6-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-7 { margin: 2.5rem !important; } + +.mt-7 { margin-top: 2.5rem !important; } + +.mr-7 { margin-right: 2.5rem !important; } + +.mb-7 { margin-bottom: 2.5rem !important; } + +.ml-7 { margin-left: 2.5rem !important; } + +.mx-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } + +.my-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } + +.mxn-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } + +.mx-7-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-8 { margin: 3rem !important; } + +.mt-8 { margin-top: 3rem !important; } + +.mr-8 { margin-right: 3rem !important; } + +.mb-8 { margin-bottom: 3rem !important; } + +.ml-8 { margin-left: 3rem !important; } + +.mx-8 { margin-right: 3rem !important; margin-left: 3rem !important; } + +.my-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } + +.mxn-8 { margin-right: -3rem !important; margin-left: -3rem !important; } + +.mx-8-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-9 { margin: 3.5rem !important; } + +.mt-9 { margin-top: 3.5rem !important; } + +.mr-9 { margin-right: 3.5rem !important; } + +.mb-9 { margin-bottom: 3.5rem !important; } + +.ml-9 { margin-left: 3.5rem !important; } + +.mx-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } + +.my-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } + +.mxn-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } + +.mx-9-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-10 { margin: 4rem !important; } + +.mt-10 { margin-top: 4rem !important; } + +.mr-10 { margin-right: 4rem !important; } + +.mb-10 { margin-bottom: 4rem !important; } + +.ml-10 { margin-left: 4rem !important; } + +.mx-10 { margin-right: 4rem !important; margin-left: 4rem !important; } + +.my-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } + +.mxn-10 { margin-right: -4rem !important; margin-left: -4rem !important; } + +.mx-10-auto { margin-right: auto !important; margin-left: auto !important; } + +@media (min-width: 20rem) { .m-xs-0 { margin: 0 !important; } .mt-xs-0 { margin-top: 0 !important; } .mr-xs-0 { margin-right: 0 !important; } .mb-xs-0 { margin-bottom: 0 !important; } .ml-xs-0 { margin-left: 0 !important; } .mx-xs-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xs-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xs-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 20rem) { .m-xs-1 { margin: 0.25rem !important; } .mt-xs-1 { margin-top: 0.25rem !important; } .mr-xs-1 { margin-right: 0.25rem !important; } .mb-xs-1 { margin-bottom: 0.25rem !important; } .ml-xs-1 { margin-left: 0.25rem !important; } .mx-xs-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xs-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xs-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 20rem) { .m-xs-2 { margin: 0.5rem !important; } .mt-xs-2 { margin-top: 0.5rem !important; } .mr-xs-2 { margin-right: 0.5rem !important; } .mb-xs-2 { margin-bottom: 0.5rem !important; } .ml-xs-2 { margin-left: 0.5rem !important; } .mx-xs-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xs-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xs-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-3 { margin: 0.75rem !important; } .mt-xs-3 { margin-top: 0.75rem !important; } .mr-xs-3 { margin-right: 0.75rem !important; } .mb-xs-3 { margin-bottom: 0.75rem !important; } .ml-xs-3 { margin-left: 0.75rem !important; } .mx-xs-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xs-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xs-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 20rem) { .m-xs-4 { margin: 1rem !important; } .mt-xs-4 { margin-top: 1rem !important; } .mr-xs-4 { margin-right: 1rem !important; } .mb-xs-4 { margin-bottom: 1rem !important; } .ml-xs-4 { margin-left: 1rem !important; } .mx-xs-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xs-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xs-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 20rem) { .m-xs-5 { margin: 1.5rem !important; } .mt-xs-5 { margin-top: 1.5rem !important; } .mr-xs-5 { margin-right: 1.5rem !important; } .mb-xs-5 { margin-bottom: 1.5rem !important; } .ml-xs-5 { margin-left: 1.5rem !important; } .mx-xs-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xs-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xs-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-6 { margin: 2rem !important; } .mt-xs-6 { margin-top: 2rem !important; } .mr-xs-6 { margin-right: 2rem !important; } .mb-xs-6 { margin-bottom: 2rem !important; } .ml-xs-6 { margin-left: 2rem !important; } .mx-xs-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xs-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xs-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 20rem) { .m-xs-7 { margin: 2.5rem !important; } .mt-xs-7 { margin-top: 2.5rem !important; } .mr-xs-7 { margin-right: 2.5rem !important; } .mb-xs-7 { margin-bottom: 2.5rem !important; } .ml-xs-7 { margin-left: 2.5rem !important; } .mx-xs-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xs-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xs-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-8 { margin: 3rem !important; } .mt-xs-8 { margin-top: 3rem !important; } .mr-xs-8 { margin-right: 3rem !important; } .mb-xs-8 { margin-bottom: 3rem !important; } .ml-xs-8 { margin-left: 3rem !important; } .mx-xs-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xs-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xs-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 20rem) { .m-xs-9 { margin: 3.5rem !important; } .mt-xs-9 { margin-top: 3.5rem !important; } .mr-xs-9 { margin-right: 3.5rem !important; } .mb-xs-9 { margin-bottom: 3.5rem !important; } .ml-xs-9 { margin-left: 3.5rem !important; } .mx-xs-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xs-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xs-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-10 { margin: 4rem !important; } .mt-xs-10 { margin-top: 4rem !important; } .mr-xs-10 { margin-right: 4rem !important; } .mb-xs-10 { margin-bottom: 4rem !important; } .ml-xs-10 { margin-left: 4rem !important; } .mx-xs-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xs-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xs-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-0 { margin: 0 !important; } .mt-sm-0 { margin-top: 0 !important; } .mr-sm-0 { margin-right: 0 !important; } .mb-sm-0 { margin-bottom: 0 !important; } .ml-sm-0 { margin-left: 0 !important; } .mx-sm-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-sm-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-sm-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 31.25rem) { .m-sm-1 { margin: 0.25rem !important; } .mt-sm-1 { margin-top: 0.25rem !important; } .mr-sm-1 { margin-right: 0.25rem !important; } .mb-sm-1 { margin-bottom: 0.25rem !important; } .ml-sm-1 { margin-left: 0.25rem !important; } .mx-sm-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-sm-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-sm-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-2 { margin: 0.5rem !important; } .mt-sm-2 { margin-top: 0.5rem !important; } .mr-sm-2 { margin-right: 0.5rem !important; } .mb-sm-2 { margin-bottom: 0.5rem !important; } .ml-sm-2 { margin-left: 0.5rem !important; } .mx-sm-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-sm-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-sm-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-3 { margin: 0.75rem !important; } .mt-sm-3 { margin-top: 0.75rem !important; } .mr-sm-3 { margin-right: 0.75rem !important; } .mb-sm-3 { margin-bottom: 0.75rem !important; } .ml-sm-3 { margin-left: 0.75rem !important; } .mx-sm-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-sm-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-sm-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-4 { margin: 1rem !important; } .mt-sm-4 { margin-top: 1rem !important; } .mr-sm-4 { margin-right: 1rem !important; } .mb-sm-4 { margin-bottom: 1rem !important; } .ml-sm-4 { margin-left: 1rem !important; } .mx-sm-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-sm-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-sm-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-5 { margin: 1.5rem !important; } .mt-sm-5 { margin-top: 1.5rem !important; } .mr-sm-5 { margin-right: 1.5rem !important; } .mb-sm-5 { margin-bottom: 1.5rem !important; } .ml-sm-5 { margin-left: 1.5rem !important; } .mx-sm-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-sm-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-sm-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-6 { margin: 2rem !important; } .mt-sm-6 { margin-top: 2rem !important; } .mr-sm-6 { margin-right: 2rem !important; } .mb-sm-6 { margin-bottom: 2rem !important; } .ml-sm-6 { margin-left: 2rem !important; } .mx-sm-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-sm-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-sm-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-7 { margin: 2.5rem !important; } .mt-sm-7 { margin-top: 2.5rem !important; } .mr-sm-7 { margin-right: 2.5rem !important; } .mb-sm-7 { margin-bottom: 2.5rem !important; } .ml-sm-7 { margin-left: 2.5rem !important; } .mx-sm-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-sm-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-sm-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-8 { margin: 3rem !important; } .mt-sm-8 { margin-top: 3rem !important; } .mr-sm-8 { margin-right: 3rem !important; } .mb-sm-8 { margin-bottom: 3rem !important; } .ml-sm-8 { margin-left: 3rem !important; } .mx-sm-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-sm-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-sm-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-9 { margin: 3.5rem !important; } .mt-sm-9 { margin-top: 3.5rem !important; } .mr-sm-9 { margin-right: 3.5rem !important; } .mb-sm-9 { margin-bottom: 3.5rem !important; } .ml-sm-9 { margin-left: 3.5rem !important; } .mx-sm-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-sm-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-sm-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-10 { margin: 4rem !important; } .mt-sm-10 { margin-top: 4rem !important; } .mr-sm-10 { margin-right: 4rem !important; } .mb-sm-10 { margin-bottom: 4rem !important; } .ml-sm-10 { margin-left: 4rem !important; } .mx-sm-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-sm-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-sm-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 50rem) { .m-md-0 { margin: 0 !important; } .mt-md-0 { margin-top: 0 !important; } .mr-md-0 { margin-right: 0 !important; } .mb-md-0 { margin-bottom: 0 !important; } .ml-md-0 { margin-left: 0 !important; } .mx-md-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-md-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-md-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 50rem) { .m-md-1 { margin: 0.25rem !important; } .mt-md-1 { margin-top: 0.25rem !important; } .mr-md-1 { margin-right: 0.25rem !important; } .mb-md-1 { margin-bottom: 0.25rem !important; } .ml-md-1 { margin-left: 0.25rem !important; } .mx-md-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-md-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-md-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 50rem) { .m-md-2 { margin: 0.5rem !important; } .mt-md-2 { margin-top: 0.5rem !important; } .mr-md-2 { margin-right: 0.5rem !important; } .mb-md-2 { margin-bottom: 0.5rem !important; } .ml-md-2 { margin-left: 0.5rem !important; } .mx-md-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-md-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-md-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 50rem) { .m-md-3 { margin: 0.75rem !important; } .mt-md-3 { margin-top: 0.75rem !important; } .mr-md-3 { margin-right: 0.75rem !important; } .mb-md-3 { margin-bottom: 0.75rem !important; } .ml-md-3 { margin-left: 0.75rem !important; } .mx-md-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-md-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-md-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 50rem) { .m-md-4 { margin: 1rem !important; } .mt-md-4 { margin-top: 1rem !important; } .mr-md-4 { margin-right: 1rem !important; } .mb-md-4 { margin-bottom: 1rem !important; } .ml-md-4 { margin-left: 1rem !important; } .mx-md-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-md-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-md-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 50rem) { .m-md-5 { margin: 1.5rem !important; } .mt-md-5 { margin-top: 1.5rem !important; } .mr-md-5 { margin-right: 1.5rem !important; } .mb-md-5 { margin-bottom: 1.5rem !important; } .ml-md-5 { margin-left: 1.5rem !important; } .mx-md-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-md-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-md-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 50rem) { .m-md-6 { margin: 2rem !important; } .mt-md-6 { margin-top: 2rem !important; } .mr-md-6 { margin-right: 2rem !important; } .mb-md-6 { margin-bottom: 2rem !important; } .ml-md-6 { margin-left: 2rem !important; } .mx-md-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-md-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-md-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 50rem) { .m-md-7 { margin: 2.5rem !important; } .mt-md-7 { margin-top: 2.5rem !important; } .mr-md-7 { margin-right: 2.5rem !important; } .mb-md-7 { margin-bottom: 2.5rem !important; } .ml-md-7 { margin-left: 2.5rem !important; } .mx-md-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-md-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-md-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 50rem) { .m-md-8 { margin: 3rem !important; } .mt-md-8 { margin-top: 3rem !important; } .mr-md-8 { margin-right: 3rem !important; } .mb-md-8 { margin-bottom: 3rem !important; } .ml-md-8 { margin-left: 3rem !important; } .mx-md-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-md-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-md-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 50rem) { .m-md-9 { margin: 3.5rem !important; } .mt-md-9 { margin-top: 3.5rem !important; } .mr-md-9 { margin-right: 3.5rem !important; } .mb-md-9 { margin-bottom: 3.5rem !important; } .ml-md-9 { margin-left: 3.5rem !important; } .mx-md-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-md-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-md-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 50rem) { .m-md-10 { margin: 4rem !important; } .mt-md-10 { margin-top: 4rem !important; } .mr-md-10 { margin-right: 4rem !important; } .mb-md-10 { margin-bottom: 4rem !important; } .ml-md-10 { margin-left: 4rem !important; } .mx-md-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-md-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-md-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-0 { margin: 0 !important; } .mt-lg-0 { margin-top: 0 !important; } .mr-lg-0 { margin-right: 0 !important; } .mb-lg-0 { margin-bottom: 0 !important; } .ml-lg-0 { margin-left: 0 !important; } .mx-lg-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-lg-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-lg-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 66.5rem) { .m-lg-1 { margin: 0.25rem !important; } .mt-lg-1 { margin-top: 0.25rem !important; } .mr-lg-1 { margin-right: 0.25rem !important; } .mb-lg-1 { margin-bottom: 0.25rem !important; } .ml-lg-1 { margin-left: 0.25rem !important; } .mx-lg-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-lg-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-lg-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-2 { margin: 0.5rem !important; } .mt-lg-2 { margin-top: 0.5rem !important; } .mr-lg-2 { margin-right: 0.5rem !important; } .mb-lg-2 { margin-bottom: 0.5rem !important; } .ml-lg-2 { margin-left: 0.5rem !important; } .mx-lg-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-lg-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-lg-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-3 { margin: 0.75rem !important; } .mt-lg-3 { margin-top: 0.75rem !important; } .mr-lg-3 { margin-right: 0.75rem !important; } .mb-lg-3 { margin-bottom: 0.75rem !important; } .ml-lg-3 { margin-left: 0.75rem !important; } .mx-lg-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-lg-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-lg-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-4 { margin: 1rem !important; } .mt-lg-4 { margin-top: 1rem !important; } .mr-lg-4 { margin-right: 1rem !important; } .mb-lg-4 { margin-bottom: 1rem !important; } .ml-lg-4 { margin-left: 1rem !important; } .mx-lg-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-lg-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-lg-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-5 { margin: 1.5rem !important; } .mt-lg-5 { margin-top: 1.5rem !important; } .mr-lg-5 { margin-right: 1.5rem !important; } .mb-lg-5 { margin-bottom: 1.5rem !important; } .ml-lg-5 { margin-left: 1.5rem !important; } .mx-lg-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-lg-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-lg-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-6 { margin: 2rem !important; } .mt-lg-6 { margin-top: 2rem !important; } .mr-lg-6 { margin-right: 2rem !important; } .mb-lg-6 { margin-bottom: 2rem !important; } .ml-lg-6 { margin-left: 2rem !important; } .mx-lg-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-lg-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-lg-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-7 { margin: 2.5rem !important; } .mt-lg-7 { margin-top: 2.5rem !important; } .mr-lg-7 { margin-right: 2.5rem !important; } .mb-lg-7 { margin-bottom: 2.5rem !important; } .ml-lg-7 { margin-left: 2.5rem !important; } .mx-lg-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-lg-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-lg-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-8 { margin: 3rem !important; } .mt-lg-8 { margin-top: 3rem !important; } .mr-lg-8 { margin-right: 3rem !important; } .mb-lg-8 { margin-bottom: 3rem !important; } .ml-lg-8 { margin-left: 3rem !important; } .mx-lg-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-lg-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-lg-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-9 { margin: 3.5rem !important; } .mt-lg-9 { margin-top: 3.5rem !important; } .mr-lg-9 { margin-right: 3.5rem !important; } .mb-lg-9 { margin-bottom: 3.5rem !important; } .ml-lg-9 { margin-left: 3.5rem !important; } .mx-lg-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-lg-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-lg-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-10 { margin: 4rem !important; } .mt-lg-10 { margin-top: 4rem !important; } .mr-lg-10 { margin-right: 4rem !important; } .mb-lg-10 { margin-bottom: 4rem !important; } .ml-lg-10 { margin-left: 4rem !important; } .mx-lg-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-lg-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-lg-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-0 { margin: 0 !important; } .mt-xl-0 { margin-top: 0 !important; } .mr-xl-0 { margin-right: 0 !important; } .mb-xl-0 { margin-bottom: 0 !important; } .ml-xl-0 { margin-left: 0 !important; } .mx-xl-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xl-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xl-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 87.5rem) { .m-xl-1 { margin: 0.25rem !important; } .mt-xl-1 { margin-top: 0.25rem !important; } .mr-xl-1 { margin-right: 0.25rem !important; } .mb-xl-1 { margin-bottom: 0.25rem !important; } .ml-xl-1 { margin-left: 0.25rem !important; } .mx-xl-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xl-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xl-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-2 { margin: 0.5rem !important; } .mt-xl-2 { margin-top: 0.5rem !important; } .mr-xl-2 { margin-right: 0.5rem !important; } .mb-xl-2 { margin-bottom: 0.5rem !important; } .ml-xl-2 { margin-left: 0.5rem !important; } .mx-xl-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xl-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xl-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-3 { margin: 0.75rem !important; } .mt-xl-3 { margin-top: 0.75rem !important; } .mr-xl-3 { margin-right: 0.75rem !important; } .mb-xl-3 { margin-bottom: 0.75rem !important; } .ml-xl-3 { margin-left: 0.75rem !important; } .mx-xl-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xl-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xl-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-4 { margin: 1rem !important; } .mt-xl-4 { margin-top: 1rem !important; } .mr-xl-4 { margin-right: 1rem !important; } .mb-xl-4 { margin-bottom: 1rem !important; } .ml-xl-4 { margin-left: 1rem !important; } .mx-xl-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xl-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xl-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-5 { margin: 1.5rem !important; } .mt-xl-5 { margin-top: 1.5rem !important; } .mr-xl-5 { margin-right: 1.5rem !important; } .mb-xl-5 { margin-bottom: 1.5rem !important; } .ml-xl-5 { margin-left: 1.5rem !important; } .mx-xl-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xl-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xl-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-6 { margin: 2rem !important; } .mt-xl-6 { margin-top: 2rem !important; } .mr-xl-6 { margin-right: 2rem !important; } .mb-xl-6 { margin-bottom: 2rem !important; } .ml-xl-6 { margin-left: 2rem !important; } .mx-xl-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xl-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xl-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-7 { margin: 2.5rem !important; } .mt-xl-7 { margin-top: 2.5rem !important; } .mr-xl-7 { margin-right: 2.5rem !important; } .mb-xl-7 { margin-bottom: 2.5rem !important; } .ml-xl-7 { margin-left: 2.5rem !important; } .mx-xl-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xl-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xl-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-8 { margin: 3rem !important; } .mt-xl-8 { margin-top: 3rem !important; } .mr-xl-8 { margin-right: 3rem !important; } .mb-xl-8 { margin-bottom: 3rem !important; } .ml-xl-8 { margin-left: 3rem !important; } .mx-xl-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xl-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xl-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-9 { margin: 3.5rem !important; } .mt-xl-9 { margin-top: 3.5rem !important; } .mr-xl-9 { margin-right: 3.5rem !important; } .mb-xl-9 { margin-bottom: 3.5rem !important; } .ml-xl-9 { margin-left: 3.5rem !important; } .mx-xl-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xl-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xl-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-10 { margin: 4rem !important; } .mt-xl-10 { margin-top: 4rem !important; } .mr-xl-10 { margin-right: 4rem !important; } .mb-xl-10 { margin-bottom: 4rem !important; } .ml-xl-10 { margin-left: 4rem !important; } .mx-xl-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xl-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xl-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +.p-0 { padding: 0 !important; } + +.pt-0 { padding-top: 0 !important; } + +.pr-0 { padding-right: 0 !important; } + +.pb-0 { padding-bottom: 0 !important; } + +.pl-0 { padding-left: 0 !important; } + +.px-0 { padding-right: 0 !important; padding-left: 0 !important; } + +.py-0 { padding-top: 0 !important; padding-bottom: 0 !important; } + +.p-1 { padding: 0.25rem !important; } + +.pt-1 { padding-top: 0.25rem !important; } + +.pr-1 { padding-right: 0.25rem !important; } + +.pb-1 { padding-bottom: 0.25rem !important; } + +.pl-1 { padding-left: 0.25rem !important; } + +.px-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } + +.py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } + +.p-2 { padding: 0.5rem !important; } + +.pt-2 { padding-top: 0.5rem !important; } + +.pr-2 { padding-right: 0.5rem !important; } + +.pb-2 { padding-bottom: 0.5rem !important; } + +.pl-2 { padding-left: 0.5rem !important; } + +.px-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } + +.py-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } + +.p-3 { padding: 0.75rem !important; } + +.pt-3 { padding-top: 0.75rem !important; } + +.pr-3 { padding-right: 0.75rem !important; } + +.pb-3 { padding-bottom: 0.75rem !important; } + +.pl-3 { padding-left: 0.75rem !important; } + +.px-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } + +.py-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } + +.p-4 { padding: 1rem !important; } + +.pt-4 { padding-top: 1rem !important; } + +.pr-4 { padding-right: 1rem !important; } + +.pb-4 { padding-bottom: 1rem !important; } + +.pl-4 { padding-left: 1rem !important; } + +.px-4 { padding-right: 1rem !important; padding-left: 1rem !important; } + +.py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } + +.p-5 { padding: 1.5rem !important; } + +.pt-5 { padding-top: 1.5rem !important; } + +.pr-5 { padding-right: 1.5rem !important; } + +.pb-5 { padding-bottom: 1.5rem !important; } + +.pl-5 { padding-left: 1.5rem !important; } + +.px-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } + +.py-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } + +.p-6 { padding: 2rem !important; } + +.pt-6 { padding-top: 2rem !important; } + +.pr-6 { padding-right: 2rem !important; } + +.pb-6 { padding-bottom: 2rem !important; } + +.pl-6 { padding-left: 2rem !important; } + +.px-6 { padding-right: 2rem !important; padding-left: 2rem !important; } + +.py-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } + +.p-7 { padding: 2.5rem !important; } + +.pt-7 { padding-top: 2.5rem !important; } + +.pr-7 { padding-right: 2.5rem !important; } + +.pb-7 { padding-bottom: 2.5rem !important; } + +.pl-7 { padding-left: 2.5rem !important; } + +.px-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } + +.py-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } + +.p-8 { padding: 3rem !important; } + +.pt-8 { padding-top: 3rem !important; } + +.pr-8 { padding-right: 3rem !important; } + +.pb-8 { padding-bottom: 3rem !important; } + +.pl-8 { padding-left: 3rem !important; } + +.px-8 { padding-right: 3rem !important; padding-left: 3rem !important; } + +.py-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } + +.p-9 { padding: 3.5rem !important; } + +.pt-9 { padding-top: 3.5rem !important; } + +.pr-9 { padding-right: 3.5rem !important; } + +.pb-9 { padding-bottom: 3.5rem !important; } + +.pl-9 { padding-left: 3.5rem !important; } + +.px-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } + +.py-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } + +.p-10 { padding: 4rem !important; } + +.pt-10 { padding-top: 4rem !important; } + +.pr-10 { padding-right: 4rem !important; } + +.pb-10 { padding-bottom: 4rem !important; } + +.pl-10 { padding-left: 4rem !important; } + +.px-10 { padding-right: 4rem !important; padding-left: 4rem !important; } + +.py-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } + +@media (min-width: 20rem) { .p-xs-0 { padding: 0 !important; } .pt-xs-0 { padding-top: 0 !important; } .pr-xs-0 { padding-right: 0 !important; } .pb-xs-0 { padding-bottom: 0 !important; } .pl-xs-0 { padding-left: 0 !important; } .px-xs-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xs-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xs-1 { padding: 0.25rem !important; } .pt-xs-1 { padding-top: 0.25rem !important; } .pr-xs-1 { padding-right: 0.25rem !important; } .pb-xs-1 { padding-bottom: 0.25rem !important; } .pl-xs-1 { padding-left: 0.25rem !important; } .px-xs-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xs-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xs-2 { padding: 0.5rem !important; } .pt-xs-2 { padding-top: 0.5rem !important; } .pr-xs-2 { padding-right: 0.5rem !important; } .pb-xs-2 { padding-bottom: 0.5rem !important; } .pl-xs-2 { padding-left: 0.5rem !important; } .px-xs-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xs-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xs-3 { padding: 0.75rem !important; } .pt-xs-3 { padding-top: 0.75rem !important; } .pr-xs-3 { padding-right: 0.75rem !important; } .pb-xs-3 { padding-bottom: 0.75rem !important; } .pl-xs-3 { padding-left: 0.75rem !important; } .px-xs-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xs-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xs-4 { padding: 1rem !important; } .pt-xs-4 { padding-top: 1rem !important; } .pr-xs-4 { padding-right: 1rem !important; } .pb-xs-4 { padding-bottom: 1rem !important; } .pl-xs-4 { padding-left: 1rem !important; } .px-xs-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xs-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xs-5 { padding: 1.5rem !important; } .pt-xs-5 { padding-top: 1.5rem !important; } .pr-xs-5 { padding-right: 1.5rem !important; } .pb-xs-5 { padding-bottom: 1.5rem !important; } .pl-xs-5 { padding-left: 1.5rem !important; } .px-xs-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xs-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xs-6 { padding: 2rem !important; } .pt-xs-6 { padding-top: 2rem !important; } .pr-xs-6 { padding-right: 2rem !important; } .pb-xs-6 { padding-bottom: 2rem !important; } .pl-xs-6 { padding-left: 2rem !important; } .px-xs-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xs-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xs-7 { padding: 2.5rem !important; } .pt-xs-7 { padding-top: 2.5rem !important; } .pr-xs-7 { padding-right: 2.5rem !important; } .pb-xs-7 { padding-bottom: 2.5rem !important; } .pl-xs-7 { padding-left: 2.5rem !important; } .px-xs-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xs-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xs-8 { padding: 3rem !important; } .pt-xs-8 { padding-top: 3rem !important; } .pr-xs-8 { padding-right: 3rem !important; } .pb-xs-8 { padding-bottom: 3rem !important; } .pl-xs-8 { padding-left: 3rem !important; } .px-xs-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xs-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xs-9 { padding: 3.5rem !important; } .pt-xs-9 { padding-top: 3.5rem !important; } .pr-xs-9 { padding-right: 3.5rem !important; } .pb-xs-9 { padding-bottom: 3.5rem !important; } .pl-xs-9 { padding-left: 3.5rem !important; } .px-xs-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xs-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xs-10 { padding: 4rem !important; } .pt-xs-10 { padding-top: 4rem !important; } .pr-xs-10 { padding-right: 4rem !important; } .pb-xs-10 { padding-bottom: 4rem !important; } .pl-xs-10 { padding-left: 4rem !important; } .px-xs-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xs-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 31.25rem) { .p-sm-0 { padding: 0 !important; } .pt-sm-0 { padding-top: 0 !important; } .pr-sm-0 { padding-right: 0 !important; } .pb-sm-0 { padding-bottom: 0 !important; } .pl-sm-0 { padding-left: 0 !important; } .px-sm-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-sm-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-sm-1 { padding: 0.25rem !important; } .pt-sm-1 { padding-top: 0.25rem !important; } .pr-sm-1 { padding-right: 0.25rem !important; } .pb-sm-1 { padding-bottom: 0.25rem !important; } .pl-sm-1 { padding-left: 0.25rem !important; } .px-sm-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-sm-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-sm-2 { padding: 0.5rem !important; } .pt-sm-2 { padding-top: 0.5rem !important; } .pr-sm-2 { padding-right: 0.5rem !important; } .pb-sm-2 { padding-bottom: 0.5rem !important; } .pl-sm-2 { padding-left: 0.5rem !important; } .px-sm-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-sm-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-sm-3 { padding: 0.75rem !important; } .pt-sm-3 { padding-top: 0.75rem !important; } .pr-sm-3 { padding-right: 0.75rem !important; } .pb-sm-3 { padding-bottom: 0.75rem !important; } .pl-sm-3 { padding-left: 0.75rem !important; } .px-sm-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-sm-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-sm-4 { padding: 1rem !important; } .pt-sm-4 { padding-top: 1rem !important; } .pr-sm-4 { padding-right: 1rem !important; } .pb-sm-4 { padding-bottom: 1rem !important; } .pl-sm-4 { padding-left: 1rem !important; } .px-sm-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-sm-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-sm-5 { padding: 1.5rem !important; } .pt-sm-5 { padding-top: 1.5rem !important; } .pr-sm-5 { padding-right: 1.5rem !important; } .pb-sm-5 { padding-bottom: 1.5rem !important; } .pl-sm-5 { padding-left: 1.5rem !important; } .px-sm-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-sm-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-sm-6 { padding: 2rem !important; } .pt-sm-6 { padding-top: 2rem !important; } .pr-sm-6 { padding-right: 2rem !important; } .pb-sm-6 { padding-bottom: 2rem !important; } .pl-sm-6 { padding-left: 2rem !important; } .px-sm-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-sm-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-sm-7 { padding: 2.5rem !important; } .pt-sm-7 { padding-top: 2.5rem !important; } .pr-sm-7 { padding-right: 2.5rem !important; } .pb-sm-7 { padding-bottom: 2.5rem !important; } .pl-sm-7 { padding-left: 2.5rem !important; } .px-sm-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-sm-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-sm-8 { padding: 3rem !important; } .pt-sm-8 { padding-top: 3rem !important; } .pr-sm-8 { padding-right: 3rem !important; } .pb-sm-8 { padding-bottom: 3rem !important; } .pl-sm-8 { padding-left: 3rem !important; } .px-sm-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-sm-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-sm-9 { padding: 3.5rem !important; } .pt-sm-9 { padding-top: 3.5rem !important; } .pr-sm-9 { padding-right: 3.5rem !important; } .pb-sm-9 { padding-bottom: 3.5rem !important; } .pl-sm-9 { padding-left: 3.5rem !important; } .px-sm-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-sm-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-sm-10 { padding: 4rem !important; } .pt-sm-10 { padding-top: 4rem !important; } .pr-sm-10 { padding-right: 4rem !important; } .pb-sm-10 { padding-bottom: 4rem !important; } .pl-sm-10 { padding-left: 4rem !important; } .px-sm-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-sm-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 50rem) { .p-md-0 { padding: 0 !important; } .pt-md-0 { padding-top: 0 !important; } .pr-md-0 { padding-right: 0 !important; } .pb-md-0 { padding-bottom: 0 !important; } .pl-md-0 { padding-left: 0 !important; } .px-md-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-md-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-md-1 { padding: 0.25rem !important; } .pt-md-1 { padding-top: 0.25rem !important; } .pr-md-1 { padding-right: 0.25rem !important; } .pb-md-1 { padding-bottom: 0.25rem !important; } .pl-md-1 { padding-left: 0.25rem !important; } .px-md-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-md-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-md-2 { padding: 0.5rem !important; } .pt-md-2 { padding-top: 0.5rem !important; } .pr-md-2 { padding-right: 0.5rem !important; } .pb-md-2 { padding-bottom: 0.5rem !important; } .pl-md-2 { padding-left: 0.5rem !important; } .px-md-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-md-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-md-3 { padding: 0.75rem !important; } .pt-md-3 { padding-top: 0.75rem !important; } .pr-md-3 { padding-right: 0.75rem !important; } .pb-md-3 { padding-bottom: 0.75rem !important; } .pl-md-3 { padding-left: 0.75rem !important; } .px-md-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-md-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-md-4 { padding: 1rem !important; } .pt-md-4 { padding-top: 1rem !important; } .pr-md-4 { padding-right: 1rem !important; } .pb-md-4 { padding-bottom: 1rem !important; } .pl-md-4 { padding-left: 1rem !important; } .px-md-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-md-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-md-5 { padding: 1.5rem !important; } .pt-md-5 { padding-top: 1.5rem !important; } .pr-md-5 { padding-right: 1.5rem !important; } .pb-md-5 { padding-bottom: 1.5rem !important; } .pl-md-5 { padding-left: 1.5rem !important; } .px-md-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-md-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-md-6 { padding: 2rem !important; } .pt-md-6 { padding-top: 2rem !important; } .pr-md-6 { padding-right: 2rem !important; } .pb-md-6 { padding-bottom: 2rem !important; } .pl-md-6 { padding-left: 2rem !important; } .px-md-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-md-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-md-7 { padding: 2.5rem !important; } .pt-md-7 { padding-top: 2.5rem !important; } .pr-md-7 { padding-right: 2.5rem !important; } .pb-md-7 { padding-bottom: 2.5rem !important; } .pl-md-7 { padding-left: 2.5rem !important; } .px-md-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-md-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-md-8 { padding: 3rem !important; } .pt-md-8 { padding-top: 3rem !important; } .pr-md-8 { padding-right: 3rem !important; } .pb-md-8 { padding-bottom: 3rem !important; } .pl-md-8 { padding-left: 3rem !important; } .px-md-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-md-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-md-9 { padding: 3.5rem !important; } .pt-md-9 { padding-top: 3.5rem !important; } .pr-md-9 { padding-right: 3.5rem !important; } .pb-md-9 { padding-bottom: 3.5rem !important; } .pl-md-9 { padding-left: 3.5rem !important; } .px-md-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-md-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-md-10 { padding: 4rem !important; } .pt-md-10 { padding-top: 4rem !important; } .pr-md-10 { padding-right: 4rem !important; } .pb-md-10 { padding-bottom: 4rem !important; } .pl-md-10 { padding-left: 4rem !important; } .px-md-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-md-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 66.5rem) { .p-lg-0 { padding: 0 !important; } .pt-lg-0 { padding-top: 0 !important; } .pr-lg-0 { padding-right: 0 !important; } .pb-lg-0 { padding-bottom: 0 !important; } .pl-lg-0 { padding-left: 0 !important; } .px-lg-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-lg-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-lg-1 { padding: 0.25rem !important; } .pt-lg-1 { padding-top: 0.25rem !important; } .pr-lg-1 { padding-right: 0.25rem !important; } .pb-lg-1 { padding-bottom: 0.25rem !important; } .pl-lg-1 { padding-left: 0.25rem !important; } .px-lg-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-lg-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-lg-2 { padding: 0.5rem !important; } .pt-lg-2 { padding-top: 0.5rem !important; } .pr-lg-2 { padding-right: 0.5rem !important; } .pb-lg-2 { padding-bottom: 0.5rem !important; } .pl-lg-2 { padding-left: 0.5rem !important; } .px-lg-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-lg-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-lg-3 { padding: 0.75rem !important; } .pt-lg-3 { padding-top: 0.75rem !important; } .pr-lg-3 { padding-right: 0.75rem !important; } .pb-lg-3 { padding-bottom: 0.75rem !important; } .pl-lg-3 { padding-left: 0.75rem !important; } .px-lg-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-lg-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-lg-4 { padding: 1rem !important; } .pt-lg-4 { padding-top: 1rem !important; } .pr-lg-4 { padding-right: 1rem !important; } .pb-lg-4 { padding-bottom: 1rem !important; } .pl-lg-4 { padding-left: 1rem !important; } .px-lg-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-lg-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-lg-5 { padding: 1.5rem !important; } .pt-lg-5 { padding-top: 1.5rem !important; } .pr-lg-5 { padding-right: 1.5rem !important; } .pb-lg-5 { padding-bottom: 1.5rem !important; } .pl-lg-5 { padding-left: 1.5rem !important; } .px-lg-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-lg-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-lg-6 { padding: 2rem !important; } .pt-lg-6 { padding-top: 2rem !important; } .pr-lg-6 { padding-right: 2rem !important; } .pb-lg-6 { padding-bottom: 2rem !important; } .pl-lg-6 { padding-left: 2rem !important; } .px-lg-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-lg-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-lg-7 { padding: 2.5rem !important; } .pt-lg-7 { padding-top: 2.5rem !important; } .pr-lg-7 { padding-right: 2.5rem !important; } .pb-lg-7 { padding-bottom: 2.5rem !important; } .pl-lg-7 { padding-left: 2.5rem !important; } .px-lg-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-lg-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-lg-8 { padding: 3rem !important; } .pt-lg-8 { padding-top: 3rem !important; } .pr-lg-8 { padding-right: 3rem !important; } .pb-lg-8 { padding-bottom: 3rem !important; } .pl-lg-8 { padding-left: 3rem !important; } .px-lg-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-lg-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-lg-9 { padding: 3.5rem !important; } .pt-lg-9 { padding-top: 3.5rem !important; } .pr-lg-9 { padding-right: 3.5rem !important; } .pb-lg-9 { padding-bottom: 3.5rem !important; } .pl-lg-9 { padding-left: 3.5rem !important; } .px-lg-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-lg-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-lg-10 { padding: 4rem !important; } .pt-lg-10 { padding-top: 4rem !important; } .pr-lg-10 { padding-right: 4rem !important; } .pb-lg-10 { padding-bottom: 4rem !important; } .pl-lg-10 { padding-left: 4rem !important; } .px-lg-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-lg-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 87.5rem) { .p-xl-0 { padding: 0 !important; } .pt-xl-0 { padding-top: 0 !important; } .pr-xl-0 { padding-right: 0 !important; } .pb-xl-0 { padding-bottom: 0 !important; } .pl-xl-0 { padding-left: 0 !important; } .px-xl-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xl-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xl-1 { padding: 0.25rem !important; } .pt-xl-1 { padding-top: 0.25rem !important; } .pr-xl-1 { padding-right: 0.25rem !important; } .pb-xl-1 { padding-bottom: 0.25rem !important; } .pl-xl-1 { padding-left: 0.25rem !important; } .px-xl-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xl-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xl-2 { padding: 0.5rem !important; } .pt-xl-2 { padding-top: 0.5rem !important; } .pr-xl-2 { padding-right: 0.5rem !important; } .pb-xl-2 { padding-bottom: 0.5rem !important; } .pl-xl-2 { padding-left: 0.5rem !important; } .px-xl-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xl-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xl-3 { padding: 0.75rem !important; } .pt-xl-3 { padding-top: 0.75rem !important; } .pr-xl-3 { padding-right: 0.75rem !important; } .pb-xl-3 { padding-bottom: 0.75rem !important; } .pl-xl-3 { padding-left: 0.75rem !important; } .px-xl-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xl-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xl-4 { padding: 1rem !important; } .pt-xl-4 { padding-top: 1rem !important; } .pr-xl-4 { padding-right: 1rem !important; } .pb-xl-4 { padding-bottom: 1rem !important; } .pl-xl-4 { padding-left: 1rem !important; } .px-xl-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xl-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xl-5 { padding: 1.5rem !important; } .pt-xl-5 { padding-top: 1.5rem !important; } .pr-xl-5 { padding-right: 1.5rem !important; } .pb-xl-5 { padding-bottom: 1.5rem !important; } .pl-xl-5 { padding-left: 1.5rem !important; } .px-xl-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xl-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xl-6 { padding: 2rem !important; } .pt-xl-6 { padding-top: 2rem !important; } .pr-xl-6 { padding-right: 2rem !important; } .pb-xl-6 { padding-bottom: 2rem !important; } .pl-xl-6 { padding-left: 2rem !important; } .px-xl-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xl-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xl-7 { padding: 2.5rem !important; } .pt-xl-7 { padding-top: 2.5rem !important; } .pr-xl-7 { padding-right: 2.5rem !important; } .pb-xl-7 { padding-bottom: 2.5rem !important; } .pl-xl-7 { padding-left: 2.5rem !important; } .px-xl-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xl-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xl-8 { padding: 3rem !important; } .pt-xl-8 { padding-top: 3rem !important; } .pr-xl-8 { padding-right: 3rem !important; } .pb-xl-8 { padding-bottom: 3rem !important; } .pl-xl-8 { padding-left: 3rem !important; } .px-xl-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xl-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xl-9 { padding: 3.5rem !important; } .pt-xl-9 { padding-top: 3.5rem !important; } .pr-xl-9 { padding-right: 3.5rem !important; } .pb-xl-9 { padding-bottom: 3.5rem !important; } .pl-xl-9 { padding-left: 3.5rem !important; } .px-xl-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xl-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xl-10 { padding: 4rem !important; } .pt-xl-10 { padding-top: 4rem !important; } .pr-xl-10 { padding-right: 4rem !important; } .pb-xl-10 { padding-bottom: 4rem !important; } .pl-xl-10 { padding-left: 4rem !important; } .px-xl-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xl-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media print { .site-footer, .site-button, #edit-this-page, #back-to-top, .site-nav, .main-header { display: none !important; } .side-bar { width: 100%; height: auto; border-right: 0 !important; } .site-header { border-bottom: 1px solid #44434d; } .site-title { font-size: 16px !important; font-weight: 700 !important; } .text-small { font-size: 8pt !important; } pre.highlight { border: 1px solid #44434d; } .main { max-width: none; margin-left: 0; } } + +/*# sourceMappingURL=just-the-docs-dark.css.map */ \ No newline at end of file diff --git a/docs/_site/assets/css/just-the-docs-dark.css.map b/docs/_site/assets/css/just-the-docs-dark.css.map new file mode 100644 index 0000000000000000000000000000000000000000..916dd9cf4ead7e2becfd470f35cf27c9af198716 --- /dev/null +++ b/docs/_site/assets/css/just-the-docs-dark.css.map @@ -0,0 +1,74 @@ +{ + "version": 3, + "file": "just-the-docs-dark.css", + "sources": [ + "just-the-docs-dark.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/support.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/_variables.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/_functions.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/mixins/mixins.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_layout.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_buttons.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_typography.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/color_schemes/dark.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/modules.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/vendor/normalize.scss/normalize.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/base.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/layout.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/content.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/navigation.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/typography.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/labels.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/buttons.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/search.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/tables.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/code.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/utilities.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_colors.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_layout.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_typography.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_lists.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_spacing.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/print.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/custom/custom.scss" + ], + "sourcesContent": [ + "\n@import \"./support/support\";\n@import \"./color_schemes/dark\";\n@import \"./modules\";\n@import \"./custom/custom\";\n\n\n", + "@import \"./variables\";\n@import \"./functions\";\n@import \"./mixins/mixins\";\n", + "//\n// Typography\n//\n\n$body-font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, \"Helvetica Neue\", Arial, sans-serif !default;\n$mono-font-family: \"SFMono-Regular\", Menlo, Consolas, Monospace !default;\n$root-font-size: 16px !default; // Base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n//\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n//\n\n$font-size-1: 9px !default;\n$font-size-1-sm: 10px !default;\n$font-size-2: 11px !default; //h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 12px !default; //h5\n$font-size-4: 14px !default;\n$font-size-5: 16px !default; //h3\n$font-size-6: 18px !default; //h2\n$font-size-7: 24px !default;\n$font-size-8: 32px !default; //h1\n$font-size-9: 36px !default;\n$font-size-10: 42px !default;\n$font-size-10-sm: 48px !default;\n\n//\n// Colors\n//\n\n$white: #fff !default;\n\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n$body-background-color: $white !default;\n$sidebar-color: $grey-lt-000 !default;\n$search-background-color: $white !default;\n$table-background-color: $white !default;\n$code-background-color: $grey-lt-000 !default;\n$feedback-color: darken($sidebar-color, 3%) !default;\n\n$body-text-color: $grey-dk-100 !default;\n$body-heading-color: $grey-dk-300 !default;\n$search-result-preview-color: $grey-dk-000 !default;\n$nav-child-link-color: $grey-dk-100 !default;\n$link-color: $purple-000 !default;\n$btn-primary-color: $purple-100 !default;\n$base-button-color: #f7f7f7 !default;\n\n//\n// Spacing\n//\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n//\n// Borders\n//\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n//\n// Grid system\n//\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 264px !default;\n$nav-width-md: 248px !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 800px !default;\n$header-height: 60px !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n//\n// Media queries in pixels\n//\n\n$media-queries: (\n xs: 320px,\n sm: 500px,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 1400px,\n) !default;\n", + "@function rem($size, $unit: \"\") {\n $remSize: $size / $root-font-size;\n\n @if ($unit == false) {\n @return #{$remSize};\n } @else {\n @return #{$remSize}rem;\n }\n}\n", + "@import \"./layout\";\n@import \"./buttons\";\n@import \"./typography\";\n", + "// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value != null {\n // Prints a media query based on the value\n @media (min-width: rem($value)) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. \"\n + \"Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n", + "// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n", + "@mixin fs-1 {\n font-size: $font-size-1 !important;\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n font-size: $font-size-2 !important;\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n font-size: $font-size-3 !important;\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n font-size: $font-size-4 !important;\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n font-size: $font-size-5 !important;\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n font-size: $font-size-6 !important;\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n", + "$body-background-color: $grey-dk-300;\n$sidebar-color: $grey-dk-300;\n$border-color: $grey-dk-200;\n\n$body-text-color: $grey-lt-300;\n$body-heading-color: $grey-lt-000;\n$nav-child-link-color: $grey-dk-000;\n$search-result-preview-color: $grey-dk-000;\n\n$link-color: $blue-000;\n$btn-primary-color: $blue-200;\n$base-button-color: $grey-dk-250;\n\n$code-background-color: $grey-dk-250;\n$search-background-color: $grey-dk-250;\n$table-background-color: $grey-dk-250;\n$feedback-color: darken($sidebar-color, 3%);\n", + "//\n// Import external dependencies\n//\n@import \"./vendor/normalize.scss/normalize.scss\";\n\n//\n// Modules\n//\n@import \"./base\";\n@import \"./layout\";\n@import \"./content\";\n@import \"./navigation\";\n@import \"./typography\";\n@import \"./labels\";\n@import \"./buttons\";\n@import \"./search\";\n@import \"./tables\";\n@import \"./code\";\n@import \"./utilities/utilities\";\n@import \"./print\";\n", + "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n", + "//\n// Base element style overrides\n//\n// stylelint-disable selector-no-type, selector-max-type\n\n* {\n box-sizing: border-box;\n}\n\n::selection {\n color: $white;\n background: $link-color;\n}\n\nhtml {\n @include fs-4;\n scroll-behavior: smooth;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: none;\n background-image: linear-gradient($border-color 0%, $border-color 100%);\n background-repeat: repeat-x;\n background-position: 0 100%;\n background-size: 1px 1px;\n\n &:hover {\n background-image: linear-gradient(\n rgba($link-color, 0.45) 0%,\n rgba($link-color, 0.45) 100%\n );\n background-size: 1px 1px;\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n", + "//\n// The basic two column layout\n//\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-wrap: nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n flex-direction: column;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n}\n\n.main {\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n margin-left: calc(\n (100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}\n );\n }\n}\n\n.main-content-wrap {\n @include container;\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n background-color: $body-background-color;\n border-bottom: $border $border-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n @include container;\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n// stylelint-disable selector-max-type\n\nbody {\n position: relative;\n padding-bottom: $sp-10;\n overflow-y: scroll;\n\n @include mq(md) {\n position: static;\n padding-bottom: 0;\n }\n}\n\n// stylelint-enable selector-max-type\n\n.site-footer {\n @include container;\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n color: $grey-dk-000;\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n", + "@charset \"UTF-8\";\n\n//\n// Styles for rendered markdown in the .main-content container\n//\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list {\n padding-left: 0;\n }\n\n .task-list-item {\n display: flex;\n align-items: center;\n\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n &:first-child {\n margin-top: $sp-2;\n }\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge {\n margin-top: 1em;\n }\n\n + p {\n margin-top: 0;\n }\n }\n}\n", + "//\n// Main nav, breadcrumb, etc...\n//\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n @include fs-4;\n position: relative;\n margin: 0;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding-top: #{$nav-list-item-height-sm / 4};\n padding-right: #{$nav-list-item-height-sm / 4};\n padding-bottom: #{$nav-list-item-height-sm / 4};\n padding-left: #{$nav-list-item-height-sm / 4};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding-top: #{$nav-list-item-height / 4};\n padding-right: #{$nav-list-item-height / 4};\n padding-bottom: #{$nav-list-item-height / 4};\n padding-left: #{$nav-list-item-height / 4};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding-top: $sp-2;\n padding-right: $gutter-spacing-sm;\n padding-bottom: $sp-2;\n padding-left: $gutter-spacing-sm;\n font-weight: 600;\n text-align: end;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n", + "//\n// Typography\n//\n// stylelint-disable primer/selector-no-utility, primer/no-override, selector-no-type, selector-max-type\n\nh1,\n.text-alpha {\n @include fs-8;\n font-weight: 300;\n}\n\nh2,\n.text-beta {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n @include fs-2;\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n color: $grey-dk-200;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n color: $grey-dk-200;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n", + "//\n// Labels (not the form kind)\n//\n\n.label,\n.label-blue {\n display: inline-block;\n padding-top: 0.16em;\n padding-right: 0.56em;\n padding-bottom: 0.16em;\n padding-left: 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n @include fs-2;\n border-radius: 12px;\n}\n\n.label-green {\n background-color: $green-200;\n}\n\n.label-purple {\n background-color: $purple-100;\n}\n\n.label-red {\n background-color: $red-200;\n}\n\n.label-yellow {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n", + "//\n// Buttons and things that look like buttons\n//\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding-top: 0.3em;\n padding-right: 1em;\n padding-bottom: 0.3em;\n padding-left: 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: inset 0 0 0 2px $grey-dk-100, 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-000);\n}\n\n.btn-green {\n @include btn-color($white, $green-100);\n}\n", + "//\n// Search input and autocomplete\n//\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration / 2};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration / 2};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding-top: $sp-2;\n padding-right: $gutter-spacing-sm;\n padding-bottom: $sp-2;\n padding-left: #{$gutter-spacing-sm + $sp-5};\n font-size: 16px;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n padding-left: #{$gutter-spacing + $sp-5};\n font-size: 14px;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration / 2};\n }\n\n &:focus {\n outline: 0;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration / 2};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding-top: $sp-1;\n padding-right: $sp-3;\n padding-bottom: $sp-1;\n padding-left: $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding-top: $sp-2;\n padding-right: $sp-3;\n padding-bottom: $sp-2;\n padding-left: $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 / 2};\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition: opacity ease $transition-duration, width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition: opacity ease $transition-duration, width 0s, height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n", + "//\n// Tables\n//\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n @include fs-3;\n min-width: 120px;\n padding-top: $sp-2;\n padding-right: $sp-3;\n padding-bottom: $sp-2;\n padding-left: $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n", + "//\n// Code and syntax highlighting\n//\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type\n\ncode {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n//
...
:\n// figure.highlight > pre > code.language-LANG\n//\n//
1
+
...
+
:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\ndiv.highlighter-rouge {\n padding: $sp-3;\n margin-top: 0;\n margin-bottom: $sp-3;\n overflow-x: auto;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n\n div.highlight,\n pre.highlight,\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n//
...
,\n//
1
+
...
+
:\nfigure.highlight {\n padding: $sp-3;\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n\n pre,\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n//
1
+
...
+
:\n.highlight .table-wrapper {\n padding: 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n @include fs-2;\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n }\n\n td.gl {\n padding-right: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n.highlight .c {\n color: #586e75;\n} // comment //\n.highlight .err {\n color: #93a1a1;\n} // error //\n.highlight .g {\n color: #93a1a1;\n} // generic //\n.highlight .k {\n color: #859900;\n} // keyword //\n.highlight .l {\n color: #93a1a1;\n} // literal //\n.highlight .n {\n color: #93a1a1;\n} // name //\n.highlight .o {\n color: #859900;\n} // operator //\n.highlight .x {\n color: #cb4b16;\n} // other //\n.highlight .p {\n color: #93a1a1;\n} // punctuation //\n.highlight .cm {\n color: #586e75;\n} // comment.multiline //\n.highlight .cp {\n color: #859900;\n} // comment.preproc //\n.highlight .c1 {\n color: #586e75;\n} // comment.single //\n.highlight .cs {\n color: #859900;\n} // comment.special //\n.highlight .gd {\n color: #2aa198;\n} // generic.deleted //\n.highlight .ge {\n font-style: italic;\n color: #93a1a1;\n} // generic.emph //\n.highlight .gr {\n color: #dc322f;\n} // generic.error //\n.highlight .gh {\n color: #cb4b16;\n} // generic.heading //\n.highlight .gi {\n color: #859900;\n} // generic.inserted //\n.highlight .go {\n color: #93a1a1;\n} // generic.output //\n.highlight .gp {\n color: #93a1a1;\n} // generic.prompt //\n.highlight .gs {\n font-weight: bold;\n color: #93a1a1;\n} // generic.strong //\n.highlight .gu {\n color: #cb4b16;\n} // generic.subheading //\n.highlight .gt {\n color: #93a1a1;\n} // generic.traceback //\n.highlight .kc {\n color: #cb4b16;\n} // keyword.constant //\n.highlight .kd {\n color: #268bd2;\n} // keyword.declaration //\n.highlight .kn {\n color: #859900;\n} // keyword.namespace //\n.highlight .kp {\n color: #859900;\n} // keyword.pseudo //\n.highlight .kr {\n color: #268bd2;\n} // keyword.reserved //\n.highlight .kt {\n color: #dc322f;\n} // keyword.type //\n.highlight .ld {\n color: #93a1a1;\n} // literal.date //\n.highlight .m {\n color: #2aa198;\n} // literal.number //\n.highlight .s {\n color: #2aa198;\n} // literal.string //\n.highlight .na {\n color: #555;\n} // name.attribute //\n.highlight .nb {\n color: #b58900;\n} // name.builtin //\n.highlight .nc {\n color: #268bd2;\n} // name.class //\n.highlight .no {\n color: #cb4b16;\n} // name.constant //\n.highlight .nd {\n color: #268bd2;\n} // name.decorator //\n.highlight .ni {\n color: #cb4b16;\n} // name.entity //\n.highlight .ne {\n color: #cb4b16;\n} // name.exception //\n.highlight .nf {\n color: #268bd2;\n} // name.function //\n.highlight .nl {\n color: #555;\n} // name.label //\n.highlight .nn {\n color: #93a1a1;\n} // name.namespace //\n.highlight .nx {\n color: #555;\n} // name.other //\n.highlight .py {\n color: #93a1a1;\n} // name.property //\n.highlight .nt {\n color: #268bd2;\n} // name.tag //\n.highlight .nv {\n color: #268bd2;\n} // name.variable //\n.highlight .ow {\n color: #859900;\n} // operator.word //\n.highlight .w {\n color: #93a1a1;\n} // text.whitespace //\n.highlight .mf {\n color: #2aa198;\n} // literal.number.float //\n.highlight .mh {\n color: #2aa198;\n} // literal.number.hex //\n.highlight .mi {\n color: #2aa198;\n} // literal.number.integer //\n.highlight .mo {\n color: #2aa198;\n} // literal.number.oct //\n.highlight .sb {\n color: #586e75;\n} // literal.string.backtick //\n.highlight .sc {\n color: #2aa198;\n} // literal.string.char //\n.highlight .sd {\n color: #93a1a1;\n} // literal.string.doc //\n.highlight .s2 {\n color: #2aa198;\n} // literal.string.double //\n.highlight .se {\n color: #cb4b16;\n} // literal.string.escape //\n.highlight .sh {\n color: #93a1a1;\n} // literal.string.heredoc //\n.highlight .si {\n color: #2aa198;\n} // literal.string.interpol //\n.highlight .sx {\n color: #2aa198;\n} // literal.string.other //\n.highlight .sr {\n color: #dc322f;\n} // literal.string.regex //\n.highlight .s1 {\n color: #2aa198;\n} // literal.string.single //\n.highlight .ss {\n color: #2aa198;\n} // literal.string.symbol //\n.highlight .bp {\n color: #268bd2;\n} // name.builtin.pseudo //\n.highlight .vc {\n color: #268bd2;\n} // name.variable.class //\n.highlight .vg {\n color: #268bd2;\n} // name.variable.global //\n.highlight .vi {\n color: #268bd2;\n} // name.variable.instance //\n.highlight .il {\n color: #2aa198;\n} // literal.number.integer.long //\n\n//\n// Code examples (rendered)\n//\n\n.code-example {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n", + "@import \"./colors\";\n@import \"./layout\";\n@import \"./typography\";\n@import \"./lists\";\n@import \"./spacing\";\n", + "//\n// Utility classes for colors\n//\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n", + "// stylelint-disable primer/selector-no-utility, primer/no-override\n//\n// Utility classes for layout\n//\n\n// Display\n\n.d-block {\n display: block !important;\n}\n.d-flex {\n display: flex !important;\n}\n.d-inline {\n display: inline !important;\n}\n.d-inline-block {\n display: inline-block !important;\n}\n.d-none {\n display: none !important;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n.v-align-middle {\n vertical-align: middle !important;\n}\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n.v-align-top {\n vertical-align: top !important;\n}\n", + "//\n// Utility classes for typography\n//\n\n// stylelint-disable primer/selector-no-utility, primer/no-override\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n// stylelint-enable primer/selector-no-utility\n", + "//\n// Utility classes for lists\n//\n\n// stylelint-disable primer/selector-no-utility, primer/no-override, selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n", + "//\n// Utility classes for margins and padding\n//\n\n// scss-lint:disable SpaceAfterPropertyName\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before, primer/selector-no-utility, primer/no-override\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n", + "// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type, primer/no-override,\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: $root-font-size !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n", + "" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/docs/_site/assets/css/just-the-docs-default.css b/docs/_site/assets/css/just-the-docs-default.css new file mode 100644 index 0000000000000000000000000000000000000000..c0d9a9b126495880d9c8c6338224528ab9bdfd9b --- /dev/null +++ b/docs/_site/assets/css/just-the-docs-default.css @@ -0,0 +1,1541 @@ +@charset "UTF-8"; +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +/* Document ========================================================================== */ +/** 1. Correct the line height in all browsers. 2. Prevent adjustments of font size after orientation changes in iOS. */ +html { line-height: 1.15; /* 1 */ -webkit-text-size-adjust: 100%; /* 2 */ } + +/* Sections ========================================================================== */ +/** Remove the margin in all browsers. */ +body { margin: 0; } + +/** Render the `main` element consistently in IE. */ +main { display: block; } + +/** Correct the font size and margin on `h1` elements within `section` and `article` contexts in Chrome, Firefox, and Safari. */ +h1 { font-size: 2em; margin: 0.67em 0; } + +/* Grouping content ========================================================================== */ +/** 1. Add the correct box sizing in Firefox. 2. Show the overflow in Edge and IE. */ +hr { box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ } + +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +pre { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/* Text-level semantics ========================================================================== */ +/** Remove the gray background on active links in IE 10. */ +a { background-color: transparent; } + +/** 1. Remove the bottom border in Chrome 57- 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ +abbr[title] { border-bottom: none; /* 1 */ text-decoration: underline; /* 2 */ text-decoration: underline dotted; /* 2 */ } + +/** Add the correct font weight in Chrome, Edge, and Safari. */ +b, strong { font-weight: bolder; } + +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +code, kbd, samp { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/** Add the correct font size in all browsers. */ +small { font-size: 80%; } + +/** Prevent `sub` and `sup` elements from affecting the line height in all browsers. */ +sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } + +sub { bottom: -0.25em; } + +sup { top: -0.5em; } + +/* Embedded content ========================================================================== */ +/** Remove the border on images inside links in IE 10. */ +img { border-style: none; } + +/* Forms ========================================================================== */ +/** 1. Change the font styles in all browsers. 2. Remove the margin in Firefox and Safari. */ +button, input, optgroup, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 1 */ line-height: 1.15; /* 1 */ margin: 0; /* 2 */ } + +/** Show the overflow in IE. 1. Show the overflow in Edge. */ +button, input { /* 1 */ overflow: visible; } + +/** Remove the inheritance of text transform in Edge, Firefox, and IE. 1. Remove the inheritance of text transform in Firefox. */ +button, select { /* 1 */ text-transform: none; } + +/** Correct the inability to style clickable types in iOS and Safari. */ +button, [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; } + +/** Remove the inner border and padding in Firefox. */ +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } + +/** Restore the focus styles unset by the previous rule. */ +button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } + +/** Correct the padding in Firefox. */ +fieldset { padding: 0.35em 0.75em 0.625em; } + +/** 1. Correct the text wrapping in Edge and IE. 2. Correct the color inheritance from `fieldset` elements in IE. 3. Remove the padding so developers are not caught out when they zero out `fieldset` elements in all browsers. */ +legend { box-sizing: border-box; /* 1 */ color: inherit; /* 2 */ display: table; /* 1 */ max-width: 100%; /* 1 */ padding: 0; /* 3 */ white-space: normal; /* 1 */ } + +/** Add the correct vertical alignment in Chrome, Firefox, and Opera. */ +progress { vertical-align: baseline; } + +/** Remove the default vertical scrollbar in IE 10+. */ +textarea { overflow: auto; } + +/** 1. Add the correct box sizing in IE 10. 2. Remove the padding in IE 10. */ +[type="checkbox"], [type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } + +/** Correct the cursor style of increment and decrement buttons in Chrome. */ +[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; } + +/** 1. Correct the odd appearance in Chrome and Safari. 2. Correct the outline style in Safari. */ +[type="search"] { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } + +/** Remove the inner padding in Chrome and Safari on macOS. */ +[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +/** 1. Correct the inability to style clickable types in iOS and Safari. 2. Change font properties to `inherit` in Safari. */ +::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ } + +/* Interactive ========================================================================== */ +/* Add the correct display in Edge, IE 10+, and Firefox. */ +details { display: block; } + +/* Add the correct display in all browsers. */ +summary { display: list-item; } + +/* Misc ========================================================================== */ +/** Add the correct display in IE 10+. */ +template { display: none; } + +/** Add the correct display in IE 10. */ +[hidden] { display: none; } + +* { box-sizing: border-box; } + +::selection { color: #fff; background: #7253ed; } + +html { font-size: 14px !important; scroll-behavior: smooth; } + +@media (min-width: 31.25rem) { html { font-size: 16px !important; } } + +body { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: inherit; line-height: 1.4; color: #5c5962; background-color: #fff; } + +ol, ul, dl, pre, address, blockquote, table, div, hr, form, fieldset, noscript .table-wrapper { margin-top: 0; } + +h1, h2, h3, h4, h5, h6 { margin-top: 0; margin-bottom: 1em; font-weight: 500; line-height: 1.25; color: #27262b; } + +p { margin-top: 1em; margin-bottom: 1em; } + +a { color: #7253ed; text-decoration: none; } + +a:not([class]) { text-decoration: none; background-image: linear-gradient(#eeebee 0%, #eeebee 100%); background-repeat: repeat-x; background-position: 0 100%; background-size: 1px 1px; } + +a:not([class]):hover { background-image: linear-gradient(rgba(114, 83, 237, 0.45) 0%, rgba(114, 83, 237, 0.45) 100%); background-size: 1px 1px; } + +code { font-family: "SFMono-Regular", Menlo, Consolas, Monospace; font-size: 0.75em; line-height: 1.4; } + +figure, pre { margin: 0; } + +li { margin: 0.25em 0; } + +img { max-width: 100%; height: auto; } + +hr { height: 1px; padding: 0; margin: 2rem 0; background-color: #eeebee; border: 0; } + +.side-bar { z-index: 0; display: flex; flex-wrap: wrap; background-color: #f5f6fa; } + +@media (min-width: 50rem) { .side-bar { flex-wrap: nowrap; position: fixed; width: 248px; height: 100%; flex-direction: column; border-right: 1px solid #eeebee; align-items: flex-end; } } + +@media (min-width: 66.5rem) { .side-bar { width: calc((100% - 1064px) / 2 + 264px); min-width: 264px; } } + +@media (min-width: 50rem) { .main { position: relative; max-width: 800px; margin-left: 248px; } } + +@media (min-width: 66.5rem) { .main { margin-left: calc( (100% - 1064px) / 2 + 264px); } } + +.main-content-wrap { padding-right: 1rem; padding-left: 1rem; padding-top: 1rem; padding-bottom: 1rem; } + +@media (min-width: 50rem) { .main-content-wrap { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 50rem) { .main-content-wrap { padding-top: 2rem; padding-bottom: 2rem; } } + +.main-header { z-index: 0; display: none; background-color: #f5f6fa; } + +@media (min-width: 50rem) { .main-header { display: flex; justify-content: space-between; height: 60px; background-color: #fff; border-bottom: 1px solid #eeebee; } } + +.main-header.nav-open { display: block; } + +@media (min-width: 50rem) { .main-header.nav-open { display: flex; } } + +.site-nav, .site-header, .site-footer { width: 100%; } + +@media (min-width: 66.5rem) { .site-nav, .site-header, .site-footer { width: 264px; } } + +.site-nav { display: none; } + +.site-nav.nav-open { display: block; } + +@media (min-width: 50rem) { .site-nav { display: block; padding-top: 3rem; padding-bottom: 1rem; overflow-y: auto; flex: 1 1 auto; } } + +.site-header { display: flex; min-height: 60px; align-items: center; } + +@media (min-width: 50rem) { .site-header { height: 60px; max-height: 60px; border-bottom: 1px solid #eeebee; } } + +.site-title { padding-right: 1rem; padding-left: 1rem; flex-grow: 1; display: flex; height: 100%; align-items: center; padding-top: 0.75rem; padding-bottom: 0.75rem; color: #27262b; font-size: 18px !important; } + +@media (min-width: 50rem) { .site-title { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 31.25rem) { .site-title { font-size: 24px !important; line-height: 1.25; } } + +@media (min-width: 50rem) { .site-title { padding-top: 0.5rem; padding-bottom: 0.5rem; } } + +.site-button { display: flex; height: 100%; padding: 1rem; align-items: center; } + +@media (min-width: 50rem) { .site-header .site-button { display: none; } } + +.site-title:hover { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 80%, rgba(235, 237, 245, 0) 100%); } + +.site-button:hover { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 100%); } + +body { position: relative; padding-bottom: 4rem; overflow-y: scroll; } + +@media (min-width: 50rem) { body { position: static; padding-bottom: 0; } } + +.site-footer { padding-right: 1rem; padding-left: 1rem; position: absolute; bottom: 0; left: 0; padding-top: 1rem; padding-bottom: 1rem; color: #959396; font-size: 11px !important; } + +@media (min-width: 50rem) { .site-footer { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 31.25rem) { .site-footer { font-size: 12px !important; } } + +@media (min-width: 50rem) { .site-footer { position: static; justify-self: end; } } + +.icon { width: 1.5rem; height: 1.5rem; color: #7253ed; } + +.main-content { line-height: 1.6; } + +.main-content ol, .main-content ul, .main-content dl, .main-content pre, .main-content address, .main-content blockquote, .main-content .table-wrapper { margin-top: 0.5em; } + +.main-content a { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + +.main-content ul, .main-content ol { padding-left: 1.5em; } + +.main-content li .highlight { margin-top: 0.25rem; } + +.main-content ol { list-style-type: none; counter-reset: step-counter; } + +.main-content ol > li { position: relative; } + +.main-content ol > li::before { position: absolute; top: 0.2em; left: -1.6em; color: #959396; content: counter(step-counter); counter-increment: step-counter; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .main-content ol > li::before { font-size: 14px !important; } } + +@media (min-width: 31.25rem) { .main-content ol > li::before { top: 0.11em; } } + +.main-content ol > li ol { counter-reset: sub-counter; } + +.main-content ol > li ol li::before { content: counter(sub-counter, lower-alpha); counter-increment: sub-counter; } + +.main-content ul { list-style: none; } + +.main-content ul > li::before { position: absolute; margin-left: -1.4em; color: #959396; content: "•"; } + +.main-content .task-list { padding-left: 0; } + +.main-content .task-list-item { display: flex; align-items: center; } + +.main-content .task-list-item::before { content: ""; } + +.main-content .task-list-item-checkbox { margin-right: 0.6em; } + +.main-content hr + * { margin-top: 0; } + +.main-content h1:first-of-type { margin-top: 0.5em; } + +.main-content dl { display: grid; grid-template: auto / 10em 1fr; } + +.main-content dt, .main-content dd { margin: 0.25em 0; } + +.main-content dt { grid-column: 1; font-weight: 500; text-align: right; } + +.main-content dt::after { content: ":"; } + +.main-content dd { grid-column: 2; margin-bottom: 0; margin-left: 1em; } + +.main-content dd blockquote:first-child, .main-content dd div:first-child, .main-content dd dl:first-child, .main-content dd dt:first-child, .main-content dd h1:first-child, .main-content dd h2:first-child, .main-content dd h3:first-child, .main-content dd h4:first-child, .main-content dd h5:first-child, .main-content dd h6:first-child, .main-content dd li:first-child, .main-content dd ol:first-child, .main-content dd p:first-child, .main-content dd pre:first-child, .main-content dd table:first-child, .main-content dd ul:first-child, .main-content dd .table-wrapper:first-child { margin-top: 0; } + +.main-content dd dl:first-child dt:first-child, .main-content dd dl:first-child dd:nth-child(2), .main-content ol dl:first-child dt:first-child, .main-content ol dl:first-child dd:nth-child(2), .main-content ul dl:first-child dt:first-child, .main-content ul dl:first-child dd:nth-child(2) { margin-top: 0; } + +.main-content .anchor-heading { position: absolute; right: -1rem; width: 1.5rem; height: 100%; padding-right: 0.25rem; padding-left: 0.25rem; overflow: visible; } + +@media (min-width: 50rem) { .main-content .anchor-heading { right: auto; left: -1.5rem; } } + +.main-content .anchor-heading svg { display: inline-block; width: 100%; height: 100%; color: #7253ed; visibility: hidden; } + +.main-content .anchor-heading:hover svg, .main-content h1:hover > .anchor-heading svg, .main-content h2:hover > .anchor-heading svg, .main-content h3:hover > .anchor-heading svg, .main-content h4:hover > .anchor-heading svg, .main-content h5:hover > .anchor-heading svg, .main-content h6:hover > .anchor-heading svg { visibility: visible; } + +.main-content summary { cursor: pointer; } + +.main-content h1, .main-content h2, .main-content h3, .main-content h4, .main-content h5, .main-content h6 { position: relative; margin-top: 1.5em; margin-bottom: 0.25em; } + +.main-content h1:first-child, .main-content h2:first-child, .main-content h3:first-child, .main-content h4:first-child, .main-content h5:first-child, .main-content h6:first-child { margin-top: 0.5rem; } + +.main-content h1 + table, .main-content h1 + .table-wrapper, .main-content h1 + .code-example, .main-content h1 + .highlighter-rouge, .main-content h2 + table, .main-content h2 + .table-wrapper, .main-content h2 + .code-example, .main-content h2 + .highlighter-rouge, .main-content h3 + table, .main-content h3 + .table-wrapper, .main-content h3 + .code-example, .main-content h3 + .highlighter-rouge, .main-content h4 + table, .main-content h4 + .table-wrapper, .main-content h4 + .code-example, .main-content h4 + .highlighter-rouge, .main-content h5 + table, .main-content h5 + .table-wrapper, .main-content h5 + .code-example, .main-content h5 + .highlighter-rouge, .main-content h6 + table, .main-content h6 + .table-wrapper, .main-content h6 + .code-example, .main-content h6 + .highlighter-rouge { margin-top: 1em; } + +.main-content h1 + p, .main-content h2 + p, .main-content h3 + p, .main-content h4 + p, .main-content h5 + p, .main-content h6 + p { margin-top: 0; } + +.nav-list { padding: 0; margin-top: 0; margin-bottom: 0; list-style: none; } + +.nav-list .nav-list-item { font-size: 14px !important; position: relative; margin: 0; } + +@media (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 16px !important; } } + +@media (min-width: 50rem) { .nav-list .nav-list-item { font-size: 12px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 14px !important; } } + +.nav-list .nav-list-item .nav-list-link { display: block; min-height: 3rem; padding-top: 0.25rem; padding-bottom: 0.25rem; line-height: 2.5rem; padding-right: 3rem; padding-left: 1rem; } + +@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-link { min-height: 2rem; line-height: 1.5rem; padding-right: 2rem; padding-left: 2rem; } } + +.nav-list .nav-list-item .nav-list-link.active { font-weight: 600; text-decoration: none; } + +.nav-list .nav-list-item .nav-list-link:hover, .nav-list .nav-list-item .nav-list-link.active { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 80%, rgba(235, 237, 245, 0) 100%); } + +.nav-list .nav-list-item .nav-list-expander { position: absolute; right: 0; width: 3rem; height: 3rem; padding-top: 0.75rem; padding-right: 0.75rem; padding-bottom: 0.75rem; padding-left: 0.75rem; color: #7253ed; } + +@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-expander { width: 2rem; height: 2rem; padding-top: 0.5rem; padding-right: 0.5rem; padding-bottom: 0.5rem; padding-left: 0.5rem; } } + +.nav-list .nav-list-item .nav-list-expander:hover { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 100%); } + +.nav-list .nav-list-item .nav-list-expander svg { transform: rotate(90deg); } + +.nav-list .nav-list-item > .nav-list { display: none; padding-left: 0.75rem; list-style: none; } + +.nav-list .nav-list-item > .nav-list .nav-list-item { position: relative; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { color: #5c5962; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-expander { color: #5c5962; } + +.nav-list .nav-list-item.active > .nav-list-expander svg { transform: rotate(-90deg); } + +.nav-list .nav-list-item.active > .nav-list { display: block; } + +.nav-category { padding-top: 0.5rem; padding-right: 1rem; padding-bottom: 0.5rem; padding-left: 1rem; font-weight: 600; text-align: end; text-transform: uppercase; border-bottom: 1px solid #eeebee; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .nav-category { font-size: 12px !important; } } + +@media (min-width: 50rem) { .nav-category { padding-right: 2rem; padding-left: 2rem; margin-top: 1rem; text-align: start; } .nav-category:first-child { margin-top: 0; } } + +.aux-nav { height: 100%; overflow-x: auto; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .aux-nav { font-size: 12px !important; } } + +.aux-nav .aux-nav-list { display: flex; height: 100%; padding: 0; margin: 0; list-style: none; } + +.aux-nav .aux-nav-list-item { display: inline-block; height: 100%; padding: 0; margin: 0; } + +@media (min-width: 50rem) { .aux-nav { padding-right: 1rem; } } + +@media (min-width: 50rem) { .breadcrumb-nav { margin-top: -1rem; } } + +.breadcrumb-nav-list { padding-left: 0; margin-bottom: 0.75rem; list-style: none; } + +.breadcrumb-nav-list-item { display: table-cell; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .breadcrumb-nav-list-item { font-size: 12px !important; } } + +.breadcrumb-nav-list-item::before { display: none; } + +.breadcrumb-nav-list-item::after { display: inline-block; margin-right: 0.5rem; margin-left: 0.5rem; color: #959396; content: "/"; } + +.breadcrumb-nav-list-item:last-child::after { content: ""; } + +h1, .text-alpha { font-size: 32px !important; line-height: 1.25; font-weight: 300; } + +@media (min-width: 31.25rem) { h1, .text-alpha { font-size: 36px !important; } } + +h2, .text-beta { font-size: 18px !important; } + +@media (min-width: 31.25rem) { h2, .text-beta { font-size: 24px !important; line-height: 1.25; } } + +h3, .text-gamma { font-size: 16px !important; } + +@media (min-width: 31.25rem) { h3, .text-gamma { font-size: 18px !important; } } + +h4, .text-delta { font-size: 11px !important; font-weight: 400; text-transform: uppercase; letter-spacing: 0.1em; } + +@media (min-width: 31.25rem) { h4, .text-delta { font-size: 12px !important; } } + +h4 code { text-transform: none; } + +h5, .text-epsilon { font-size: 12px !important; color: #44434d; } + +@media (min-width: 31.25rem) { h5, .text-epsilon { font-size: 14px !important; } } + +h6, .text-zeta { font-size: 11px !important; color: #44434d; } + +@media (min-width: 31.25rem) { h6, .text-zeta { font-size: 12px !important; } } + +.text-small { font-size: 11px !important; } + +@media (min-width: 31.25rem) { .text-small { font-size: 12px !important; } } + +.text-mono { font-family: "SFMono-Regular", Menlo, Consolas, Monospace !important; } + +.text-left { text-align: left !important; } + +.text-center { text-align: center !important; } + +.text-right { text-align: right !important; } + +.label, .label-blue { display: inline-block; padding-top: 0.16em; padding-right: 0.56em; padding-bottom: 0.16em; padding-left: 0.56em; margin-right: 0.5rem; margin-left: 0.5rem; color: #fff; text-transform: uppercase; vertical-align: middle; background-color: #2869e6; font-size: 11px !important; border-radius: 12px; } + +@media (min-width: 31.25rem) { .label, .label-blue { font-size: 12px !important; } } + +.label-green { background-color: #009c7b; } + +.label-purple { background-color: #5e41d0; } + +.label-red { background-color: #e94c4c; } + +.label-yellow { color: #44434d; background-color: #f7d12e; } + +.btn { display: inline-block; box-sizing: border-box; padding-top: 0.3em; padding-right: 1em; padding-bottom: 0.3em; padding-left: 1em; margin: 0; font-family: inherit; font-size: inherit; font-weight: 500; line-height: 1.5; color: #7253ed; text-decoration: none; vertical-align: baseline; cursor: pointer; background-color: #f7f7f7; border-width: 0; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); appearance: none; } + +.btn:focus { text-decoration: none; outline: none; box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn:focus:hover, .btn.selected:focus { box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn:hover, .btn.zeroclipboard-is-hover { color: #6a4aec; } + +.btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active { text-decoration: none; background-color: #f4f4f4; } + +.btn:active, .btn.selected, .btn.zeroclipboard-is-active { background-color: #efefef; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn.selected:hover { background-color: #cfcfcf; } + +.btn:disabled, .btn:disabled:hover, .btn.disabled, .btn.disabled:hover { color: rgba(102, 102, 102, 0.5); cursor: default; background-color: rgba(229, 229, 229, 0.5); background-image: none; box-shadow: none; } + +.btn-outline { color: #7253ed; background: transparent; box-shadow: inset 0 0 0 2px #e6e1e8; } + +.btn-outline:hover, .btn-outline:active, .btn-outline.zeroclipboard-is-hover, .btn-outline.zeroclipboard-is-active { color: #6341eb; text-decoration: none; background-color: transparent; box-shadow: inset 0 0 0 3px #e6e1e8; } + +.btn-outline:focus { text-decoration: none; outline: none; box-shadow: inset 0 0 0 2px #5c5962, 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn-outline:focus:hover, .btn-outline.selected:focus { box-shadow: inset 0 0 0 2px #5c5962; } + +.btn-primary { color: #fff; background-color: #5739ce; background-image: linear-gradient(#6f55d5, #5739ce); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-primary:hover, .btn-primary.zeroclipboard-is-hover { color: #fff; background-color: #5132cb; background-image: linear-gradient(#6549d2, #5132cb); } + +.btn-primary:active, .btn-primary.selected, .btn-primary.zeroclipboard-is-active { background-color: #4f31c6; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-primary.selected:hover { background-color: #472cb2; } + +.btn-purple { color: #fff; background-color: #5739ce; background-image: linear-gradient(#6f55d5, #5739ce); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-purple:hover, .btn-purple.zeroclipboard-is-hover { color: #fff; background-color: #5132cb; background-image: linear-gradient(#6549d2, #5132cb); } + +.btn-purple:active, .btn-purple.selected, .btn-purple.zeroclipboard-is-active { background-color: #4f31c6; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-purple.selected:hover { background-color: #472cb2; } + +.btn-blue { color: #fff; background-color: #227efa; background-image: linear-gradient(#4593fb, #227efa); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-blue:hover, .btn-blue.zeroclipboard-is-hover { color: #fff; background-color: #1878fa; background-image: linear-gradient(#368afa, #1878fa); } + +.btn-blue:active, .btn-blue.selected, .btn-blue.zeroclipboard-is-active { background-color: #1375f9; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-blue.selected:hover { background-color: #0669ed; } + +.btn-green { color: #fff; background-color: #10ac7d; background-image: linear-gradient(#13cc95, #10ac7d); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-green:hover, .btn-green.zeroclipboard-is-hover { color: #fff; background-color: #0fa276; background-image: linear-gradient(#12be8b, #0fa276); } + +.btn-green:active, .btn-green.selected, .btn-green.zeroclipboard-is-active { background-color: #0f9e73; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-green.selected:hover { background-color: #0d8662; } + +.search { position: relative; z-index: 2; flex-grow: 1; height: 4rem; padding: 0.5rem; transition: padding linear 200ms; } + +@media (min-width: 50rem) { .search { position: relative !important; width: auto !important; height: 100% !important; padding: 0; transition: none; } } + +.search-input-wrap { position: relative; z-index: 1; height: 3rem; overflow: hidden; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); transition: height linear 200ms; } + +@media (min-width: 50rem) { .search-input-wrap { position: absolute; width: 100%; max-width: 536px; height: 100% !important; border-radius: 0; box-shadow: none; transition: width ease 400ms; } } + +.search-input { position: absolute; width: 100%; height: 100%; padding-top: 0.5rem; padding-right: 1rem; padding-bottom: 0.5rem; padding-left: 2.5rem; font-size: 16px; background-color: #fff; border-top: 0; border-right: 0; border-bottom: 0; border-left: 0; border-radius: 0; } + +@media (min-width: 50rem) { .search-input { padding-top: 1rem; padding-bottom: 1rem; padding-left: 3.5rem; font-size: 14px; background-color: #fff; transition: padding-left linear 200ms; } } + +.search-input:focus { outline: 0; } + +.search-input:focus + .search-label .search-icon { color: #7253ed; } + +.search-label { position: absolute; display: flex; height: 100%; padding-left: 1rem; } + +@media (min-width: 50rem) { .search-label { padding-left: 2rem; transition: padding-left linear 200ms; } } + +.search-label .search-icon { width: 1.2rem; height: 1.2rem; align-self: center; color: #959396; } + +.search-results { position: absolute; left: 0; display: none; width: 100%; max-height: calc(100% - 4rem); overflow-y: auto; background-color: #fff; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +@media (min-width: 50rem) { .search-results { top: 100%; width: 536px; max-height: calc(100vh - 200%) !important; } } + +.search-results-list { padding-left: 0; margin-bottom: 0.25rem; list-style: none; font-size: 14px !important; } + +@media (min-width: 31.25rem) { .search-results-list { font-size: 16px !important; } } + +@media (min-width: 50rem) { .search-results-list { font-size: 12px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .search-results-list { font-size: 14px !important; } } + +.search-results-list-item { padding: 0; margin: 0; } + +.search-result { display: block; padding-top: 0.25rem; padding-right: 0.75rem; padding-bottom: 0.25rem; padding-left: 0.75rem; } + +.search-result:hover, .search-result.active { background-color: #ebedf5; } + +.search-result-title { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; } + +@media (min-width: 31.25rem) { .search-result-title { display: inline-block; width: 40%; padding-right: 0.5rem; vertical-align: top; } } + +.search-result-doc { display: flex; align-items: center; word-wrap: break-word; } + +.search-result-doc.search-result-doc-parent { opacity: 0.5; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 14px !important; } } + +@media (min-width: 50rem) { .search-result-doc.search-result-doc-parent { font-size: 11px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 12px !important; } } + +.search-result-doc .search-result-icon { width: 1rem; height: 1rem; margin-right: 0.5rem; color: #7253ed; flex-shrink: 0; } + +.search-result-doc .search-result-doc-title { overflow: auto; } + +.search-result-section { margin-left: 1.5rem; word-wrap: break-word; } + +.search-result-rel-url { display: block; margin-left: 1.5rem; overflow: hidden; color: #959396; text-overflow: ellipsis; white-space: nowrap; font-size: 9px !important; } + +@media (min-width: 31.25rem) { .search-result-rel-url { font-size: 10px !important; } } + +.search-result-previews { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 1rem; margin-left: 0.5rem; color: #959396; word-wrap: break-word; border-left: 1px solid; border-left-color: #eeebee; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .search-result-previews { font-size: 12px !important; } } + +@media (min-width: 31.25rem) { .search-result-previews { display: inline-block; width: 60%; padding-left: 0.5rem; margin-left: 0; vertical-align: top; } } + +.search-result-preview + .search-result-preview { margin-top: 0.25rem; } + +.search-result-highlight { font-weight: bold; } + +.search-no-result { padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .search-no-result { font-size: 14px !important; } } + +.search-button { position: fixed; right: 1rem; bottom: 1rem; display: flex; width: 3.5rem; height: 3.5rem; background-color: #fff; border: 1px solid rgba(114, 83, 237, 0.3); border-radius: 1.75rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); align-items: center; justify-content: center; } + +.search-overlay { position: fixed; top: 0; left: 0; z-index: 1; width: 0; height: 0; background-color: rgba(0, 0, 0, 0.3); opacity: 0; transition: opacity ease 400ms, width 0s 400ms, height 0s 400ms; } + +.search-active .search { position: fixed; top: 0; left: 0; width: 100%; height: 100%; padding: 0; } + +.search-active .search-input-wrap { height: 4rem; border-radius: 0; } + +@media (min-width: 50rem) { .search-active .search-input-wrap { width: 536px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } } + +.search-active .search-input { background-color: #fff; } + +@media (min-width: 50rem) { .search-active .search-input { padding-left: 2.3rem; } } + +@media (min-width: 50rem) { .search-active .search-label { padding-left: 0.6rem; } } + +.search-active .search-results { display: block; } + +.search-active .search-overlay { width: 100%; height: 100%; opacity: 1; transition: opacity ease 400ms, width 0s, height 0s; } + +@media (min-width: 50rem) { .search-active .main { position: fixed; right: 0; left: 0; } } + +.search-active .main-header { padding-top: 4rem; } + +@media (min-width: 50rem) { .search-active .main-header { padding-top: 0; } } + +.table-wrapper { display: block; width: 100%; max-width: 100%; margin-bottom: 1.5rem; overflow-x: auto; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +table { display: table; min-width: 100%; border-collapse: separate; } + +th, td { font-size: 12px !important; min-width: 120px; padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; background-color: #fff; border-bottom: 1px solid rgba(238, 235, 238, 0.5); border-left: 1px solid #eeebee; } + +@media (min-width: 31.25rem) { th, td { font-size: 14px !important; } } + +th:first-of-type, td:first-of-type { border-left: 0; } + +tbody tr:last-of-type th, tbody tr:last-of-type td { border-bottom: 0; } + +tbody tr:last-of-type td { padding-bottom: 0.75rem; } + +thead th { border-bottom: 1px solid #eeebee; } + +code { padding: 0.2em 0.15em; font-weight: 400; background-color: #f5f6fa; border: 1px solid #eeebee; border-radius: 4px; } + +a:visited code { border-color: #eeebee; } + +div.highlighter-rouge { padding: 0.75rem; margin-top: 0; margin-bottom: 0.75rem; overflow-x: auto; background-color: #f5f6fa; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; } + +div.highlighter-rouge div.highlight, div.highlighter-rouge pre.highlight, div.highlighter-rouge code { padding: 0; margin: 0; border: 0; } + +figure.highlight { padding: 0.75rem; margin-top: 0; margin-bottom: 0.75rem; background-color: #f5f6fa; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; } + +figure.highlight pre, figure.highlight code { padding: 0; margin: 0; border: 0; } + +.highlight .table-wrapper { padding: 0; margin: 0; border: 0; box-shadow: none; } + +.highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 11px !important; min-width: 0; padding: 0; background-color: #f5f6fa; border: 0; } + +@media (min-width: 31.25rem) { .highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 12px !important; } } + +.highlight .table-wrapper td.gl { padding-right: 0.75rem; } + +.highlight .table-wrapper pre { margin: 0; line-height: 2; } + +.highlight .c { color: #586e75; } + +.highlight .err { color: #93a1a1; } + +.highlight .g { color: #93a1a1; } + +.highlight .k { color: #859900; } + +.highlight .l { color: #93a1a1; } + +.highlight .n { color: #93a1a1; } + +.highlight .o { color: #859900; } + +.highlight .x { color: #cb4b16; } + +.highlight .p { color: #93a1a1; } + +.highlight .cm { color: #586e75; } + +.highlight .cp { color: #859900; } + +.highlight .c1 { color: #586e75; } + +.highlight .cs { color: #859900; } + +.highlight .gd { color: #2aa198; } + +.highlight .ge { font-style: italic; color: #93a1a1; } + +.highlight .gr { color: #dc322f; } + +.highlight .gh { color: #cb4b16; } + +.highlight .gi { color: #859900; } + +.highlight .go { color: #93a1a1; } + +.highlight .gp { color: #93a1a1; } + +.highlight .gs { font-weight: bold; color: #93a1a1; } + +.highlight .gu { color: #cb4b16; } + +.highlight .gt { color: #93a1a1; } + +.highlight .kc { color: #cb4b16; } + +.highlight .kd { color: #268bd2; } + +.highlight .kn { color: #859900; } + +.highlight .kp { color: #859900; } + +.highlight .kr { color: #268bd2; } + +.highlight .kt { color: #dc322f; } + +.highlight .ld { color: #93a1a1; } + +.highlight .m { color: #2aa198; } + +.highlight .s { color: #2aa198; } + +.highlight .na { color: #555; } + +.highlight .nb { color: #b58900; } + +.highlight .nc { color: #268bd2; } + +.highlight .no { color: #cb4b16; } + +.highlight .nd { color: #268bd2; } + +.highlight .ni { color: #cb4b16; } + +.highlight .ne { color: #cb4b16; } + +.highlight .nf { color: #268bd2; } + +.highlight .nl { color: #555; } + +.highlight .nn { color: #93a1a1; } + +.highlight .nx { color: #555; } + +.highlight .py { color: #93a1a1; } + +.highlight .nt { color: #268bd2; } + +.highlight .nv { color: #268bd2; } + +.highlight .ow { color: #859900; } + +.highlight .w { color: #93a1a1; } + +.highlight .mf { color: #2aa198; } + +.highlight .mh { color: #2aa198; } + +.highlight .mi { color: #2aa198; } + +.highlight .mo { color: #2aa198; } + +.highlight .sb { color: #586e75; } + +.highlight .sc { color: #2aa198; } + +.highlight .sd { color: #93a1a1; } + +.highlight .s2 { color: #2aa198; } + +.highlight .se { color: #cb4b16; } + +.highlight .sh { color: #93a1a1; } + +.highlight .si { color: #2aa198; } + +.highlight .sx { color: #2aa198; } + +.highlight .sr { color: #dc322f; } + +.highlight .s1 { color: #2aa198; } + +.highlight .ss { color: #2aa198; } + +.highlight .bp { color: #268bd2; } + +.highlight .vc { color: #268bd2; } + +.highlight .vg { color: #268bd2; } + +.highlight .vi { color: #268bd2; } + +.highlight .il { color: #2aa198; } + +.code-example { padding: 0.75rem; margin-bottom: 0.75rem; overflow: auto; border: 1px solid #eeebee; border-radius: 4px; } + +.code-example + .highlighter-rouge, .code-example + figure.highlight { position: relative; margin-top: -1rem; border-right: 1px solid #eeebee; border-bottom: 1px solid #eeebee; border-left: 1px solid #eeebee; border-top-left-radius: 0; border-top-right-radius: 0; } + +.text-grey-dk-000 { color: #959396 !important; } + +.text-grey-dk-100 { color: #5c5962 !important; } + +.text-grey-dk-200 { color: #44434d !important; } + +.text-grey-dk-250 { color: #302d36 !important; } + +.text-grey-dk-300 { color: #27262b !important; } + +.text-grey-lt-000 { color: #f5f6fa !important; } + +.text-grey-lt-100 { color: #eeebee !important; } + +.text-grey-lt-200 { color: #ecebed !important; } + +.text-grey-lt-300 { color: #e6e1e8 !important; } + +.text-blue-000 { color: #2c84fa !important; } + +.text-blue-100 { color: #2869e6 !important; } + +.text-blue-200 { color: #264caf !important; } + +.text-blue-300 { color: #183385 !important; } + +.text-green-000 { color: #41d693 !important; } + +.text-green-100 { color: #11b584 !important; } + +.text-green-200 { color: #009c7b !important; } + +.text-green-300 { color: #026e57 !important; } + +.text-purple-000 { color: #7253ed !important; } + +.text-purple-100 { color: #5e41d0 !important; } + +.text-purple-200 { color: #4e26af !important; } + +.text-purple-300 { color: #381885 !important; } + +.text-yellow-000 { color: #ffeb82 !important; } + +.text-yellow-100 { color: #fadf50 !important; } + +.text-yellow-200 { color: #f7d12e !important; } + +.text-yellow-300 { color: #e7af06 !important; } + +.text-red-000 { color: #f77e7e !important; } + +.text-red-100 { color: #f96e65 !important; } + +.text-red-200 { color: #e94c4c !important; } + +.text-red-300 { color: #dd2e2e !important; } + +.bg-grey-dk-000 { background-color: #959396 !important; } + +.bg-grey-dk-100 { background-color: #5c5962 !important; } + +.bg-grey-dk-200 { background-color: #44434d !important; } + +.bg-grey-dk-250 { background-color: #302d36 !important; } + +.bg-grey-dk-300 { background-color: #27262b !important; } + +.bg-grey-lt-000 { background-color: #f5f6fa !important; } + +.bg-grey-lt-100 { background-color: #eeebee !important; } + +.bg-grey-lt-200 { background-color: #ecebed !important; } + +.bg-grey-lt-300 { background-color: #e6e1e8 !important; } + +.bg-blue-000 { background-color: #2c84fa !important; } + +.bg-blue-100 { background-color: #2869e6 !important; } + +.bg-blue-200 { background-color: #264caf !important; } + +.bg-blue-300 { background-color: #183385 !important; } + +.bg-green-000 { background-color: #41d693 !important; } + +.bg-green-100 { background-color: #11b584 !important; } + +.bg-green-200 { background-color: #009c7b !important; } + +.bg-green-300 { background-color: #026e57 !important; } + +.bg-purple-000 { background-color: #7253ed !important; } + +.bg-purple-100 { background-color: #5e41d0 !important; } + +.bg-purple-200 { background-color: #4e26af !important; } + +.bg-purple-300 { background-color: #381885 !important; } + +.bg-yellow-000 { background-color: #ffeb82 !important; } + +.bg-yellow-100 { background-color: #fadf50 !important; } + +.bg-yellow-200 { background-color: #f7d12e !important; } + +.bg-yellow-300 { background-color: #e7af06 !important; } + +.bg-red-000 { background-color: #f77e7e !important; } + +.bg-red-100 { background-color: #f96e65 !important; } + +.bg-red-200 { background-color: #e94c4c !important; } + +.bg-red-300 { background-color: #dd2e2e !important; } + +.d-block { display: block !important; } + +.d-flex { display: flex !important; } + +.d-inline { display: inline !important; } + +.d-inline-block { display: inline-block !important; } + +.d-none { display: none !important; } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +.float-left { float: left !important; } + +.float-right { float: right !important; } + +.flex-justify-start { justify-content: flex-start !important; } + +.flex-justify-end { justify-content: flex-end !important; } + +.flex-justify-between { justify-content: space-between !important; } + +.flex-justify-around { justify-content: space-around !important; } + +.v-align-baseline { vertical-align: baseline !important; } + +.v-align-bottom { vertical-align: bottom !important; } + +.v-align-middle { vertical-align: middle !important; } + +.v-align-text-bottom { vertical-align: text-bottom !important; } + +.v-align-text-top { vertical-align: text-top !important; } + +.v-align-top { vertical-align: top !important; } + +.fs-1 { font-size: 9px !important; } + +@media (min-width: 31.25rem) { .fs-1 { font-size: 10px !important; } } + +.fs-2 { font-size: 11px !important; } + +@media (min-width: 31.25rem) { .fs-2 { font-size: 12px !important; } } + +.fs-3 { font-size: 12px !important; } + +@media (min-width: 31.25rem) { .fs-3 { font-size: 14px !important; } } + +.fs-4 { font-size: 14px !important; } + +@media (min-width: 31.25rem) { .fs-4 { font-size: 16px !important; } } + +.fs-5 { font-size: 16px !important; } + +@media (min-width: 31.25rem) { .fs-5 { font-size: 18px !important; } } + +.fs-6 { font-size: 18px !important; } + +@media (min-width: 31.25rem) { .fs-6 { font-size: 24px !important; line-height: 1.25; } } + +.fs-7 { font-size: 24px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-7 { font-size: 32px !important; } } + +.fs-8 { font-size: 32px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-8 { font-size: 36px !important; } } + +.fs-9 { font-size: 36px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-9 { font-size: 42px !important; } } + +.fs-10 { font-size: 42px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-10 { font-size: 48px !important; } } + +.fw-300 { font-weight: 300 !important; } + +.fw-400 { font-weight: 400 !important; } + +.fw-500 { font-weight: 500 !important; } + +.fw-700 { font-weight: 700 !important; } + +.lh-0 { line-height: 0 !important; } + +.lh-default { line-height: 1.4; } + +.lh-tight { line-height: 1.25; } + +.ls-5 { letter-spacing: 0.05em !important; } + +.ls-10 { letter-spacing: 0.1em !important; } + +.ls-0 { letter-spacing: 0 !important; } + +.text-uppercase { text-transform: uppercase !important; } + +.list-style-none { padding: 0 !important; margin: 0 !important; list-style: none !important; } + +.list-style-none li::before { display: none !important; } + +.mx-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-0 { margin: 0 !important; } + +.mt-0 { margin-top: 0 !important; } + +.mr-0 { margin-right: 0 !important; } + +.mb-0 { margin-bottom: 0 !important; } + +.ml-0 { margin-left: 0 !important; } + +.mx-0 { margin-right: 0 !important; margin-left: 0 !important; } + +.my-0 { margin-top: 0 !important; margin-bottom: 0 !important; } + +.mxn-0 { margin-right: -0 !important; margin-left: -0 !important; } + +.mx-0-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-1 { margin: 0.25rem !important; } + +.mt-1 { margin-top: 0.25rem !important; } + +.mr-1 { margin-right: 0.25rem !important; } + +.mb-1 { margin-bottom: 0.25rem !important; } + +.ml-1 { margin-left: 0.25rem !important; } + +.mx-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } + +.my-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } + +.mxn-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } + +.mx-1-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-2 { margin: 0.5rem !important; } + +.mt-2 { margin-top: 0.5rem !important; } + +.mr-2 { margin-right: 0.5rem !important; } + +.mb-2 { margin-bottom: 0.5rem !important; } + +.ml-2 { margin-left: 0.5rem !important; } + +.mx-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } + +.my-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } + +.mxn-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } + +.mx-2-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-3 { margin: 0.75rem !important; } + +.mt-3 { margin-top: 0.75rem !important; } + +.mr-3 { margin-right: 0.75rem !important; } + +.mb-3 { margin-bottom: 0.75rem !important; } + +.ml-3 { margin-left: 0.75rem !important; } + +.mx-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } + +.my-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } + +.mxn-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } + +.mx-3-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-4 { margin: 1rem !important; } + +.mt-4 { margin-top: 1rem !important; } + +.mr-4 { margin-right: 1rem !important; } + +.mb-4 { margin-bottom: 1rem !important; } + +.ml-4 { margin-left: 1rem !important; } + +.mx-4 { margin-right: 1rem !important; margin-left: 1rem !important; } + +.my-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } + +.mxn-4 { margin-right: -1rem !important; margin-left: -1rem !important; } + +.mx-4-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-5 { margin: 1.5rem !important; } + +.mt-5 { margin-top: 1.5rem !important; } + +.mr-5 { margin-right: 1.5rem !important; } + +.mb-5 { margin-bottom: 1.5rem !important; } + +.ml-5 { margin-left: 1.5rem !important; } + +.mx-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } + +.my-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } + +.mxn-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } + +.mx-5-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-6 { margin: 2rem !important; } + +.mt-6 { margin-top: 2rem !important; } + +.mr-6 { margin-right: 2rem !important; } + +.mb-6 { margin-bottom: 2rem !important; } + +.ml-6 { margin-left: 2rem !important; } + +.mx-6 { margin-right: 2rem !important; margin-left: 2rem !important; } + +.my-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } + +.mxn-6 { margin-right: -2rem !important; margin-left: -2rem !important; } + +.mx-6-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-7 { margin: 2.5rem !important; } + +.mt-7 { margin-top: 2.5rem !important; } + +.mr-7 { margin-right: 2.5rem !important; } + +.mb-7 { margin-bottom: 2.5rem !important; } + +.ml-7 { margin-left: 2.5rem !important; } + +.mx-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } + +.my-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } + +.mxn-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } + +.mx-7-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-8 { margin: 3rem !important; } + +.mt-8 { margin-top: 3rem !important; } + +.mr-8 { margin-right: 3rem !important; } + +.mb-8 { margin-bottom: 3rem !important; } + +.ml-8 { margin-left: 3rem !important; } + +.mx-8 { margin-right: 3rem !important; margin-left: 3rem !important; } + +.my-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } + +.mxn-8 { margin-right: -3rem !important; margin-left: -3rem !important; } + +.mx-8-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-9 { margin: 3.5rem !important; } + +.mt-9 { margin-top: 3.5rem !important; } + +.mr-9 { margin-right: 3.5rem !important; } + +.mb-9 { margin-bottom: 3.5rem !important; } + +.ml-9 { margin-left: 3.5rem !important; } + +.mx-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } + +.my-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } + +.mxn-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } + +.mx-9-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-10 { margin: 4rem !important; } + +.mt-10 { margin-top: 4rem !important; } + +.mr-10 { margin-right: 4rem !important; } + +.mb-10 { margin-bottom: 4rem !important; } + +.ml-10 { margin-left: 4rem !important; } + +.mx-10 { margin-right: 4rem !important; margin-left: 4rem !important; } + +.my-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } + +.mxn-10 { margin-right: -4rem !important; margin-left: -4rem !important; } + +.mx-10-auto { margin-right: auto !important; margin-left: auto !important; } + +@media (min-width: 20rem) { .m-xs-0 { margin: 0 !important; } .mt-xs-0 { margin-top: 0 !important; } .mr-xs-0 { margin-right: 0 !important; } .mb-xs-0 { margin-bottom: 0 !important; } .ml-xs-0 { margin-left: 0 !important; } .mx-xs-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xs-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xs-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 20rem) { .m-xs-1 { margin: 0.25rem !important; } .mt-xs-1 { margin-top: 0.25rem !important; } .mr-xs-1 { margin-right: 0.25rem !important; } .mb-xs-1 { margin-bottom: 0.25rem !important; } .ml-xs-1 { margin-left: 0.25rem !important; } .mx-xs-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xs-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xs-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 20rem) { .m-xs-2 { margin: 0.5rem !important; } .mt-xs-2 { margin-top: 0.5rem !important; } .mr-xs-2 { margin-right: 0.5rem !important; } .mb-xs-2 { margin-bottom: 0.5rem !important; } .ml-xs-2 { margin-left: 0.5rem !important; } .mx-xs-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xs-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xs-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-3 { margin: 0.75rem !important; } .mt-xs-3 { margin-top: 0.75rem !important; } .mr-xs-3 { margin-right: 0.75rem !important; } .mb-xs-3 { margin-bottom: 0.75rem !important; } .ml-xs-3 { margin-left: 0.75rem !important; } .mx-xs-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xs-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xs-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 20rem) { .m-xs-4 { margin: 1rem !important; } .mt-xs-4 { margin-top: 1rem !important; } .mr-xs-4 { margin-right: 1rem !important; } .mb-xs-4 { margin-bottom: 1rem !important; } .ml-xs-4 { margin-left: 1rem !important; } .mx-xs-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xs-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xs-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 20rem) { .m-xs-5 { margin: 1.5rem !important; } .mt-xs-5 { margin-top: 1.5rem !important; } .mr-xs-5 { margin-right: 1.5rem !important; } .mb-xs-5 { margin-bottom: 1.5rem !important; } .ml-xs-5 { margin-left: 1.5rem !important; } .mx-xs-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xs-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xs-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-6 { margin: 2rem !important; } .mt-xs-6 { margin-top: 2rem !important; } .mr-xs-6 { margin-right: 2rem !important; } .mb-xs-6 { margin-bottom: 2rem !important; } .ml-xs-6 { margin-left: 2rem !important; } .mx-xs-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xs-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xs-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 20rem) { .m-xs-7 { margin: 2.5rem !important; } .mt-xs-7 { margin-top: 2.5rem !important; } .mr-xs-7 { margin-right: 2.5rem !important; } .mb-xs-7 { margin-bottom: 2.5rem !important; } .ml-xs-7 { margin-left: 2.5rem !important; } .mx-xs-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xs-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xs-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-8 { margin: 3rem !important; } .mt-xs-8 { margin-top: 3rem !important; } .mr-xs-8 { margin-right: 3rem !important; } .mb-xs-8 { margin-bottom: 3rem !important; } .ml-xs-8 { margin-left: 3rem !important; } .mx-xs-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xs-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xs-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 20rem) { .m-xs-9 { margin: 3.5rem !important; } .mt-xs-9 { margin-top: 3.5rem !important; } .mr-xs-9 { margin-right: 3.5rem !important; } .mb-xs-9 { margin-bottom: 3.5rem !important; } .ml-xs-9 { margin-left: 3.5rem !important; } .mx-xs-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xs-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xs-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-10 { margin: 4rem !important; } .mt-xs-10 { margin-top: 4rem !important; } .mr-xs-10 { margin-right: 4rem !important; } .mb-xs-10 { margin-bottom: 4rem !important; } .ml-xs-10 { margin-left: 4rem !important; } .mx-xs-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xs-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xs-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-0 { margin: 0 !important; } .mt-sm-0 { margin-top: 0 !important; } .mr-sm-0 { margin-right: 0 !important; } .mb-sm-0 { margin-bottom: 0 !important; } .ml-sm-0 { margin-left: 0 !important; } .mx-sm-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-sm-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-sm-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 31.25rem) { .m-sm-1 { margin: 0.25rem !important; } .mt-sm-1 { margin-top: 0.25rem !important; } .mr-sm-1 { margin-right: 0.25rem !important; } .mb-sm-1 { margin-bottom: 0.25rem !important; } .ml-sm-1 { margin-left: 0.25rem !important; } .mx-sm-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-sm-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-sm-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-2 { margin: 0.5rem !important; } .mt-sm-2 { margin-top: 0.5rem !important; } .mr-sm-2 { margin-right: 0.5rem !important; } .mb-sm-2 { margin-bottom: 0.5rem !important; } .ml-sm-2 { margin-left: 0.5rem !important; } .mx-sm-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-sm-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-sm-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-3 { margin: 0.75rem !important; } .mt-sm-3 { margin-top: 0.75rem !important; } .mr-sm-3 { margin-right: 0.75rem !important; } .mb-sm-3 { margin-bottom: 0.75rem !important; } .ml-sm-3 { margin-left: 0.75rem !important; } .mx-sm-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-sm-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-sm-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-4 { margin: 1rem !important; } .mt-sm-4 { margin-top: 1rem !important; } .mr-sm-4 { margin-right: 1rem !important; } .mb-sm-4 { margin-bottom: 1rem !important; } .ml-sm-4 { margin-left: 1rem !important; } .mx-sm-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-sm-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-sm-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-5 { margin: 1.5rem !important; } .mt-sm-5 { margin-top: 1.5rem !important; } .mr-sm-5 { margin-right: 1.5rem !important; } .mb-sm-5 { margin-bottom: 1.5rem !important; } .ml-sm-5 { margin-left: 1.5rem !important; } .mx-sm-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-sm-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-sm-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-6 { margin: 2rem !important; } .mt-sm-6 { margin-top: 2rem !important; } .mr-sm-6 { margin-right: 2rem !important; } .mb-sm-6 { margin-bottom: 2rem !important; } .ml-sm-6 { margin-left: 2rem !important; } .mx-sm-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-sm-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-sm-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-7 { margin: 2.5rem !important; } .mt-sm-7 { margin-top: 2.5rem !important; } .mr-sm-7 { margin-right: 2.5rem !important; } .mb-sm-7 { margin-bottom: 2.5rem !important; } .ml-sm-7 { margin-left: 2.5rem !important; } .mx-sm-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-sm-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-sm-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-8 { margin: 3rem !important; } .mt-sm-8 { margin-top: 3rem !important; } .mr-sm-8 { margin-right: 3rem !important; } .mb-sm-8 { margin-bottom: 3rem !important; } .ml-sm-8 { margin-left: 3rem !important; } .mx-sm-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-sm-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-sm-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-9 { margin: 3.5rem !important; } .mt-sm-9 { margin-top: 3.5rem !important; } .mr-sm-9 { margin-right: 3.5rem !important; } .mb-sm-9 { margin-bottom: 3.5rem !important; } .ml-sm-9 { margin-left: 3.5rem !important; } .mx-sm-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-sm-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-sm-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-10 { margin: 4rem !important; } .mt-sm-10 { margin-top: 4rem !important; } .mr-sm-10 { margin-right: 4rem !important; } .mb-sm-10 { margin-bottom: 4rem !important; } .ml-sm-10 { margin-left: 4rem !important; } .mx-sm-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-sm-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-sm-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 50rem) { .m-md-0 { margin: 0 !important; } .mt-md-0 { margin-top: 0 !important; } .mr-md-0 { margin-right: 0 !important; } .mb-md-0 { margin-bottom: 0 !important; } .ml-md-0 { margin-left: 0 !important; } .mx-md-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-md-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-md-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 50rem) { .m-md-1 { margin: 0.25rem !important; } .mt-md-1 { margin-top: 0.25rem !important; } .mr-md-1 { margin-right: 0.25rem !important; } .mb-md-1 { margin-bottom: 0.25rem !important; } .ml-md-1 { margin-left: 0.25rem !important; } .mx-md-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-md-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-md-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 50rem) { .m-md-2 { margin: 0.5rem !important; } .mt-md-2 { margin-top: 0.5rem !important; } .mr-md-2 { margin-right: 0.5rem !important; } .mb-md-2 { margin-bottom: 0.5rem !important; } .ml-md-2 { margin-left: 0.5rem !important; } .mx-md-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-md-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-md-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 50rem) { .m-md-3 { margin: 0.75rem !important; } .mt-md-3 { margin-top: 0.75rem !important; } .mr-md-3 { margin-right: 0.75rem !important; } .mb-md-3 { margin-bottom: 0.75rem !important; } .ml-md-3 { margin-left: 0.75rem !important; } .mx-md-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-md-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-md-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 50rem) { .m-md-4 { margin: 1rem !important; } .mt-md-4 { margin-top: 1rem !important; } .mr-md-4 { margin-right: 1rem !important; } .mb-md-4 { margin-bottom: 1rem !important; } .ml-md-4 { margin-left: 1rem !important; } .mx-md-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-md-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-md-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 50rem) { .m-md-5 { margin: 1.5rem !important; } .mt-md-5 { margin-top: 1.5rem !important; } .mr-md-5 { margin-right: 1.5rem !important; } .mb-md-5 { margin-bottom: 1.5rem !important; } .ml-md-5 { margin-left: 1.5rem !important; } .mx-md-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-md-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-md-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 50rem) { .m-md-6 { margin: 2rem !important; } .mt-md-6 { margin-top: 2rem !important; } .mr-md-6 { margin-right: 2rem !important; } .mb-md-6 { margin-bottom: 2rem !important; } .ml-md-6 { margin-left: 2rem !important; } .mx-md-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-md-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-md-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 50rem) { .m-md-7 { margin: 2.5rem !important; } .mt-md-7 { margin-top: 2.5rem !important; } .mr-md-7 { margin-right: 2.5rem !important; } .mb-md-7 { margin-bottom: 2.5rem !important; } .ml-md-7 { margin-left: 2.5rem !important; } .mx-md-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-md-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-md-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 50rem) { .m-md-8 { margin: 3rem !important; } .mt-md-8 { margin-top: 3rem !important; } .mr-md-8 { margin-right: 3rem !important; } .mb-md-8 { margin-bottom: 3rem !important; } .ml-md-8 { margin-left: 3rem !important; } .mx-md-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-md-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-md-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 50rem) { .m-md-9 { margin: 3.5rem !important; } .mt-md-9 { margin-top: 3.5rem !important; } .mr-md-9 { margin-right: 3.5rem !important; } .mb-md-9 { margin-bottom: 3.5rem !important; } .ml-md-9 { margin-left: 3.5rem !important; } .mx-md-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-md-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-md-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 50rem) { .m-md-10 { margin: 4rem !important; } .mt-md-10 { margin-top: 4rem !important; } .mr-md-10 { margin-right: 4rem !important; } .mb-md-10 { margin-bottom: 4rem !important; } .ml-md-10 { margin-left: 4rem !important; } .mx-md-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-md-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-md-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-0 { margin: 0 !important; } .mt-lg-0 { margin-top: 0 !important; } .mr-lg-0 { margin-right: 0 !important; } .mb-lg-0 { margin-bottom: 0 !important; } .ml-lg-0 { margin-left: 0 !important; } .mx-lg-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-lg-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-lg-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 66.5rem) { .m-lg-1 { margin: 0.25rem !important; } .mt-lg-1 { margin-top: 0.25rem !important; } .mr-lg-1 { margin-right: 0.25rem !important; } .mb-lg-1 { margin-bottom: 0.25rem !important; } .ml-lg-1 { margin-left: 0.25rem !important; } .mx-lg-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-lg-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-lg-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-2 { margin: 0.5rem !important; } .mt-lg-2 { margin-top: 0.5rem !important; } .mr-lg-2 { margin-right: 0.5rem !important; } .mb-lg-2 { margin-bottom: 0.5rem !important; } .ml-lg-2 { margin-left: 0.5rem !important; } .mx-lg-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-lg-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-lg-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-3 { margin: 0.75rem !important; } .mt-lg-3 { margin-top: 0.75rem !important; } .mr-lg-3 { margin-right: 0.75rem !important; } .mb-lg-3 { margin-bottom: 0.75rem !important; } .ml-lg-3 { margin-left: 0.75rem !important; } .mx-lg-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-lg-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-lg-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-4 { margin: 1rem !important; } .mt-lg-4 { margin-top: 1rem !important; } .mr-lg-4 { margin-right: 1rem !important; } .mb-lg-4 { margin-bottom: 1rem !important; } .ml-lg-4 { margin-left: 1rem !important; } .mx-lg-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-lg-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-lg-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-5 { margin: 1.5rem !important; } .mt-lg-5 { margin-top: 1.5rem !important; } .mr-lg-5 { margin-right: 1.5rem !important; } .mb-lg-5 { margin-bottom: 1.5rem !important; } .ml-lg-5 { margin-left: 1.5rem !important; } .mx-lg-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-lg-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-lg-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-6 { margin: 2rem !important; } .mt-lg-6 { margin-top: 2rem !important; } .mr-lg-6 { margin-right: 2rem !important; } .mb-lg-6 { margin-bottom: 2rem !important; } .ml-lg-6 { margin-left: 2rem !important; } .mx-lg-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-lg-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-lg-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-7 { margin: 2.5rem !important; } .mt-lg-7 { margin-top: 2.5rem !important; } .mr-lg-7 { margin-right: 2.5rem !important; } .mb-lg-7 { margin-bottom: 2.5rem !important; } .ml-lg-7 { margin-left: 2.5rem !important; } .mx-lg-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-lg-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-lg-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-8 { margin: 3rem !important; } .mt-lg-8 { margin-top: 3rem !important; } .mr-lg-8 { margin-right: 3rem !important; } .mb-lg-8 { margin-bottom: 3rem !important; } .ml-lg-8 { margin-left: 3rem !important; } .mx-lg-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-lg-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-lg-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-9 { margin: 3.5rem !important; } .mt-lg-9 { margin-top: 3.5rem !important; } .mr-lg-9 { margin-right: 3.5rem !important; } .mb-lg-9 { margin-bottom: 3.5rem !important; } .ml-lg-9 { margin-left: 3.5rem !important; } .mx-lg-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-lg-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-lg-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-10 { margin: 4rem !important; } .mt-lg-10 { margin-top: 4rem !important; } .mr-lg-10 { margin-right: 4rem !important; } .mb-lg-10 { margin-bottom: 4rem !important; } .ml-lg-10 { margin-left: 4rem !important; } .mx-lg-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-lg-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-lg-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-0 { margin: 0 !important; } .mt-xl-0 { margin-top: 0 !important; } .mr-xl-0 { margin-right: 0 !important; } .mb-xl-0 { margin-bottom: 0 !important; } .ml-xl-0 { margin-left: 0 !important; } .mx-xl-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xl-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xl-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 87.5rem) { .m-xl-1 { margin: 0.25rem !important; } .mt-xl-1 { margin-top: 0.25rem !important; } .mr-xl-1 { margin-right: 0.25rem !important; } .mb-xl-1 { margin-bottom: 0.25rem !important; } .ml-xl-1 { margin-left: 0.25rem !important; } .mx-xl-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xl-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xl-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-2 { margin: 0.5rem !important; } .mt-xl-2 { margin-top: 0.5rem !important; } .mr-xl-2 { margin-right: 0.5rem !important; } .mb-xl-2 { margin-bottom: 0.5rem !important; } .ml-xl-2 { margin-left: 0.5rem !important; } .mx-xl-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xl-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xl-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-3 { margin: 0.75rem !important; } .mt-xl-3 { margin-top: 0.75rem !important; } .mr-xl-3 { margin-right: 0.75rem !important; } .mb-xl-3 { margin-bottom: 0.75rem !important; } .ml-xl-3 { margin-left: 0.75rem !important; } .mx-xl-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xl-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xl-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-4 { margin: 1rem !important; } .mt-xl-4 { margin-top: 1rem !important; } .mr-xl-4 { margin-right: 1rem !important; } .mb-xl-4 { margin-bottom: 1rem !important; } .ml-xl-4 { margin-left: 1rem !important; } .mx-xl-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xl-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xl-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-5 { margin: 1.5rem !important; } .mt-xl-5 { margin-top: 1.5rem !important; } .mr-xl-5 { margin-right: 1.5rem !important; } .mb-xl-5 { margin-bottom: 1.5rem !important; } .ml-xl-5 { margin-left: 1.5rem !important; } .mx-xl-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xl-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xl-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-6 { margin: 2rem !important; } .mt-xl-6 { margin-top: 2rem !important; } .mr-xl-6 { margin-right: 2rem !important; } .mb-xl-6 { margin-bottom: 2rem !important; } .ml-xl-6 { margin-left: 2rem !important; } .mx-xl-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xl-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xl-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-7 { margin: 2.5rem !important; } .mt-xl-7 { margin-top: 2.5rem !important; } .mr-xl-7 { margin-right: 2.5rem !important; } .mb-xl-7 { margin-bottom: 2.5rem !important; } .ml-xl-7 { margin-left: 2.5rem !important; } .mx-xl-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xl-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xl-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-8 { margin: 3rem !important; } .mt-xl-8 { margin-top: 3rem !important; } .mr-xl-8 { margin-right: 3rem !important; } .mb-xl-8 { margin-bottom: 3rem !important; } .ml-xl-8 { margin-left: 3rem !important; } .mx-xl-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xl-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xl-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-9 { margin: 3.5rem !important; } .mt-xl-9 { margin-top: 3.5rem !important; } .mr-xl-9 { margin-right: 3.5rem !important; } .mb-xl-9 { margin-bottom: 3.5rem !important; } .ml-xl-9 { margin-left: 3.5rem !important; } .mx-xl-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xl-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xl-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-10 { margin: 4rem !important; } .mt-xl-10 { margin-top: 4rem !important; } .mr-xl-10 { margin-right: 4rem !important; } .mb-xl-10 { margin-bottom: 4rem !important; } .ml-xl-10 { margin-left: 4rem !important; } .mx-xl-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xl-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xl-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +.p-0 { padding: 0 !important; } + +.pt-0 { padding-top: 0 !important; } + +.pr-0 { padding-right: 0 !important; } + +.pb-0 { padding-bottom: 0 !important; } + +.pl-0 { padding-left: 0 !important; } + +.px-0 { padding-right: 0 !important; padding-left: 0 !important; } + +.py-0 { padding-top: 0 !important; padding-bottom: 0 !important; } + +.p-1 { padding: 0.25rem !important; } + +.pt-1 { padding-top: 0.25rem !important; } + +.pr-1 { padding-right: 0.25rem !important; } + +.pb-1 { padding-bottom: 0.25rem !important; } + +.pl-1 { padding-left: 0.25rem !important; } + +.px-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } + +.py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } + +.p-2 { padding: 0.5rem !important; } + +.pt-2 { padding-top: 0.5rem !important; } + +.pr-2 { padding-right: 0.5rem !important; } + +.pb-2 { padding-bottom: 0.5rem !important; } + +.pl-2 { padding-left: 0.5rem !important; } + +.px-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } + +.py-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } + +.p-3 { padding: 0.75rem !important; } + +.pt-3 { padding-top: 0.75rem !important; } + +.pr-3 { padding-right: 0.75rem !important; } + +.pb-3 { padding-bottom: 0.75rem !important; } + +.pl-3 { padding-left: 0.75rem !important; } + +.px-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } + +.py-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } + +.p-4 { padding: 1rem !important; } + +.pt-4 { padding-top: 1rem !important; } + +.pr-4 { padding-right: 1rem !important; } + +.pb-4 { padding-bottom: 1rem !important; } + +.pl-4 { padding-left: 1rem !important; } + +.px-4 { padding-right: 1rem !important; padding-left: 1rem !important; } + +.py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } + +.p-5 { padding: 1.5rem !important; } + +.pt-5 { padding-top: 1.5rem !important; } + +.pr-5 { padding-right: 1.5rem !important; } + +.pb-5 { padding-bottom: 1.5rem !important; } + +.pl-5 { padding-left: 1.5rem !important; } + +.px-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } + +.py-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } + +.p-6 { padding: 2rem !important; } + +.pt-6 { padding-top: 2rem !important; } + +.pr-6 { padding-right: 2rem !important; } + +.pb-6 { padding-bottom: 2rem !important; } + +.pl-6 { padding-left: 2rem !important; } + +.px-6 { padding-right: 2rem !important; padding-left: 2rem !important; } + +.py-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } + +.p-7 { padding: 2.5rem !important; } + +.pt-7 { padding-top: 2.5rem !important; } + +.pr-7 { padding-right: 2.5rem !important; } + +.pb-7 { padding-bottom: 2.5rem !important; } + +.pl-7 { padding-left: 2.5rem !important; } + +.px-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } + +.py-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } + +.p-8 { padding: 3rem !important; } + +.pt-8 { padding-top: 3rem !important; } + +.pr-8 { padding-right: 3rem !important; } + +.pb-8 { padding-bottom: 3rem !important; } + +.pl-8 { padding-left: 3rem !important; } + +.px-8 { padding-right: 3rem !important; padding-left: 3rem !important; } + +.py-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } + +.p-9 { padding: 3.5rem !important; } + +.pt-9 { padding-top: 3.5rem !important; } + +.pr-9 { padding-right: 3.5rem !important; } + +.pb-9 { padding-bottom: 3.5rem !important; } + +.pl-9 { padding-left: 3.5rem !important; } + +.px-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } + +.py-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } + +.p-10 { padding: 4rem !important; } + +.pt-10 { padding-top: 4rem !important; } + +.pr-10 { padding-right: 4rem !important; } + +.pb-10 { padding-bottom: 4rem !important; } + +.pl-10 { padding-left: 4rem !important; } + +.px-10 { padding-right: 4rem !important; padding-left: 4rem !important; } + +.py-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } + +@media (min-width: 20rem) { .p-xs-0 { padding: 0 !important; } .pt-xs-0 { padding-top: 0 !important; } .pr-xs-0 { padding-right: 0 !important; } .pb-xs-0 { padding-bottom: 0 !important; } .pl-xs-0 { padding-left: 0 !important; } .px-xs-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xs-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xs-1 { padding: 0.25rem !important; } .pt-xs-1 { padding-top: 0.25rem !important; } .pr-xs-1 { padding-right: 0.25rem !important; } .pb-xs-1 { padding-bottom: 0.25rem !important; } .pl-xs-1 { padding-left: 0.25rem !important; } .px-xs-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xs-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xs-2 { padding: 0.5rem !important; } .pt-xs-2 { padding-top: 0.5rem !important; } .pr-xs-2 { padding-right: 0.5rem !important; } .pb-xs-2 { padding-bottom: 0.5rem !important; } .pl-xs-2 { padding-left: 0.5rem !important; } .px-xs-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xs-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xs-3 { padding: 0.75rem !important; } .pt-xs-3 { padding-top: 0.75rem !important; } .pr-xs-3 { padding-right: 0.75rem !important; } .pb-xs-3 { padding-bottom: 0.75rem !important; } .pl-xs-3 { padding-left: 0.75rem !important; } .px-xs-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xs-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xs-4 { padding: 1rem !important; } .pt-xs-4 { padding-top: 1rem !important; } .pr-xs-4 { padding-right: 1rem !important; } .pb-xs-4 { padding-bottom: 1rem !important; } .pl-xs-4 { padding-left: 1rem !important; } .px-xs-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xs-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xs-5 { padding: 1.5rem !important; } .pt-xs-5 { padding-top: 1.5rem !important; } .pr-xs-5 { padding-right: 1.5rem !important; } .pb-xs-5 { padding-bottom: 1.5rem !important; } .pl-xs-5 { padding-left: 1.5rem !important; } .px-xs-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xs-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xs-6 { padding: 2rem !important; } .pt-xs-6 { padding-top: 2rem !important; } .pr-xs-6 { padding-right: 2rem !important; } .pb-xs-6 { padding-bottom: 2rem !important; } .pl-xs-6 { padding-left: 2rem !important; } .px-xs-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xs-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xs-7 { padding: 2.5rem !important; } .pt-xs-7 { padding-top: 2.5rem !important; } .pr-xs-7 { padding-right: 2.5rem !important; } .pb-xs-7 { padding-bottom: 2.5rem !important; } .pl-xs-7 { padding-left: 2.5rem !important; } .px-xs-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xs-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xs-8 { padding: 3rem !important; } .pt-xs-8 { padding-top: 3rem !important; } .pr-xs-8 { padding-right: 3rem !important; } .pb-xs-8 { padding-bottom: 3rem !important; } .pl-xs-8 { padding-left: 3rem !important; } .px-xs-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xs-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xs-9 { padding: 3.5rem !important; } .pt-xs-9 { padding-top: 3.5rem !important; } .pr-xs-9 { padding-right: 3.5rem !important; } .pb-xs-9 { padding-bottom: 3.5rem !important; } .pl-xs-9 { padding-left: 3.5rem !important; } .px-xs-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xs-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xs-10 { padding: 4rem !important; } .pt-xs-10 { padding-top: 4rem !important; } .pr-xs-10 { padding-right: 4rem !important; } .pb-xs-10 { padding-bottom: 4rem !important; } .pl-xs-10 { padding-left: 4rem !important; } .px-xs-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xs-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 31.25rem) { .p-sm-0 { padding: 0 !important; } .pt-sm-0 { padding-top: 0 !important; } .pr-sm-0 { padding-right: 0 !important; } .pb-sm-0 { padding-bottom: 0 !important; } .pl-sm-0 { padding-left: 0 !important; } .px-sm-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-sm-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-sm-1 { padding: 0.25rem !important; } .pt-sm-1 { padding-top: 0.25rem !important; } .pr-sm-1 { padding-right: 0.25rem !important; } .pb-sm-1 { padding-bottom: 0.25rem !important; } .pl-sm-1 { padding-left: 0.25rem !important; } .px-sm-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-sm-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-sm-2 { padding: 0.5rem !important; } .pt-sm-2 { padding-top: 0.5rem !important; } .pr-sm-2 { padding-right: 0.5rem !important; } .pb-sm-2 { padding-bottom: 0.5rem !important; } .pl-sm-2 { padding-left: 0.5rem !important; } .px-sm-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-sm-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-sm-3 { padding: 0.75rem !important; } .pt-sm-3 { padding-top: 0.75rem !important; } .pr-sm-3 { padding-right: 0.75rem !important; } .pb-sm-3 { padding-bottom: 0.75rem !important; } .pl-sm-3 { padding-left: 0.75rem !important; } .px-sm-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-sm-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-sm-4 { padding: 1rem !important; } .pt-sm-4 { padding-top: 1rem !important; } .pr-sm-4 { padding-right: 1rem !important; } .pb-sm-4 { padding-bottom: 1rem !important; } .pl-sm-4 { padding-left: 1rem !important; } .px-sm-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-sm-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-sm-5 { padding: 1.5rem !important; } .pt-sm-5 { padding-top: 1.5rem !important; } .pr-sm-5 { padding-right: 1.5rem !important; } .pb-sm-5 { padding-bottom: 1.5rem !important; } .pl-sm-5 { padding-left: 1.5rem !important; } .px-sm-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-sm-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-sm-6 { padding: 2rem !important; } .pt-sm-6 { padding-top: 2rem !important; } .pr-sm-6 { padding-right: 2rem !important; } .pb-sm-6 { padding-bottom: 2rem !important; } .pl-sm-6 { padding-left: 2rem !important; } .px-sm-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-sm-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-sm-7 { padding: 2.5rem !important; } .pt-sm-7 { padding-top: 2.5rem !important; } .pr-sm-7 { padding-right: 2.5rem !important; } .pb-sm-7 { padding-bottom: 2.5rem !important; } .pl-sm-7 { padding-left: 2.5rem !important; } .px-sm-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-sm-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-sm-8 { padding: 3rem !important; } .pt-sm-8 { padding-top: 3rem !important; } .pr-sm-8 { padding-right: 3rem !important; } .pb-sm-8 { padding-bottom: 3rem !important; } .pl-sm-8 { padding-left: 3rem !important; } .px-sm-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-sm-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-sm-9 { padding: 3.5rem !important; } .pt-sm-9 { padding-top: 3.5rem !important; } .pr-sm-9 { padding-right: 3.5rem !important; } .pb-sm-9 { padding-bottom: 3.5rem !important; } .pl-sm-9 { padding-left: 3.5rem !important; } .px-sm-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-sm-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-sm-10 { padding: 4rem !important; } .pt-sm-10 { padding-top: 4rem !important; } .pr-sm-10 { padding-right: 4rem !important; } .pb-sm-10 { padding-bottom: 4rem !important; } .pl-sm-10 { padding-left: 4rem !important; } .px-sm-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-sm-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 50rem) { .p-md-0 { padding: 0 !important; } .pt-md-0 { padding-top: 0 !important; } .pr-md-0 { padding-right: 0 !important; } .pb-md-0 { padding-bottom: 0 !important; } .pl-md-0 { padding-left: 0 !important; } .px-md-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-md-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-md-1 { padding: 0.25rem !important; } .pt-md-1 { padding-top: 0.25rem !important; } .pr-md-1 { padding-right: 0.25rem !important; } .pb-md-1 { padding-bottom: 0.25rem !important; } .pl-md-1 { padding-left: 0.25rem !important; } .px-md-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-md-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-md-2 { padding: 0.5rem !important; } .pt-md-2 { padding-top: 0.5rem !important; } .pr-md-2 { padding-right: 0.5rem !important; } .pb-md-2 { padding-bottom: 0.5rem !important; } .pl-md-2 { padding-left: 0.5rem !important; } .px-md-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-md-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-md-3 { padding: 0.75rem !important; } .pt-md-3 { padding-top: 0.75rem !important; } .pr-md-3 { padding-right: 0.75rem !important; } .pb-md-3 { padding-bottom: 0.75rem !important; } .pl-md-3 { padding-left: 0.75rem !important; } .px-md-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-md-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-md-4 { padding: 1rem !important; } .pt-md-4 { padding-top: 1rem !important; } .pr-md-4 { padding-right: 1rem !important; } .pb-md-4 { padding-bottom: 1rem !important; } .pl-md-4 { padding-left: 1rem !important; } .px-md-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-md-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-md-5 { padding: 1.5rem !important; } .pt-md-5 { padding-top: 1.5rem !important; } .pr-md-5 { padding-right: 1.5rem !important; } .pb-md-5 { padding-bottom: 1.5rem !important; } .pl-md-5 { padding-left: 1.5rem !important; } .px-md-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-md-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-md-6 { padding: 2rem !important; } .pt-md-6 { padding-top: 2rem !important; } .pr-md-6 { padding-right: 2rem !important; } .pb-md-6 { padding-bottom: 2rem !important; } .pl-md-6 { padding-left: 2rem !important; } .px-md-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-md-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-md-7 { padding: 2.5rem !important; } .pt-md-7 { padding-top: 2.5rem !important; } .pr-md-7 { padding-right: 2.5rem !important; } .pb-md-7 { padding-bottom: 2.5rem !important; } .pl-md-7 { padding-left: 2.5rem !important; } .px-md-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-md-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-md-8 { padding: 3rem !important; } .pt-md-8 { padding-top: 3rem !important; } .pr-md-8 { padding-right: 3rem !important; } .pb-md-8 { padding-bottom: 3rem !important; } .pl-md-8 { padding-left: 3rem !important; } .px-md-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-md-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-md-9 { padding: 3.5rem !important; } .pt-md-9 { padding-top: 3.5rem !important; } .pr-md-9 { padding-right: 3.5rem !important; } .pb-md-9 { padding-bottom: 3.5rem !important; } .pl-md-9 { padding-left: 3.5rem !important; } .px-md-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-md-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-md-10 { padding: 4rem !important; } .pt-md-10 { padding-top: 4rem !important; } .pr-md-10 { padding-right: 4rem !important; } .pb-md-10 { padding-bottom: 4rem !important; } .pl-md-10 { padding-left: 4rem !important; } .px-md-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-md-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 66.5rem) { .p-lg-0 { padding: 0 !important; } .pt-lg-0 { padding-top: 0 !important; } .pr-lg-0 { padding-right: 0 !important; } .pb-lg-0 { padding-bottom: 0 !important; } .pl-lg-0 { padding-left: 0 !important; } .px-lg-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-lg-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-lg-1 { padding: 0.25rem !important; } .pt-lg-1 { padding-top: 0.25rem !important; } .pr-lg-1 { padding-right: 0.25rem !important; } .pb-lg-1 { padding-bottom: 0.25rem !important; } .pl-lg-1 { padding-left: 0.25rem !important; } .px-lg-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-lg-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-lg-2 { padding: 0.5rem !important; } .pt-lg-2 { padding-top: 0.5rem !important; } .pr-lg-2 { padding-right: 0.5rem !important; } .pb-lg-2 { padding-bottom: 0.5rem !important; } .pl-lg-2 { padding-left: 0.5rem !important; } .px-lg-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-lg-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-lg-3 { padding: 0.75rem !important; } .pt-lg-3 { padding-top: 0.75rem !important; } .pr-lg-3 { padding-right: 0.75rem !important; } .pb-lg-3 { padding-bottom: 0.75rem !important; } .pl-lg-3 { padding-left: 0.75rem !important; } .px-lg-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-lg-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-lg-4 { padding: 1rem !important; } .pt-lg-4 { padding-top: 1rem !important; } .pr-lg-4 { padding-right: 1rem !important; } .pb-lg-4 { padding-bottom: 1rem !important; } .pl-lg-4 { padding-left: 1rem !important; } .px-lg-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-lg-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-lg-5 { padding: 1.5rem !important; } .pt-lg-5 { padding-top: 1.5rem !important; } .pr-lg-5 { padding-right: 1.5rem !important; } .pb-lg-5 { padding-bottom: 1.5rem !important; } .pl-lg-5 { padding-left: 1.5rem !important; } .px-lg-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-lg-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-lg-6 { padding: 2rem !important; } .pt-lg-6 { padding-top: 2rem !important; } .pr-lg-6 { padding-right: 2rem !important; } .pb-lg-6 { padding-bottom: 2rem !important; } .pl-lg-6 { padding-left: 2rem !important; } .px-lg-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-lg-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-lg-7 { padding: 2.5rem !important; } .pt-lg-7 { padding-top: 2.5rem !important; } .pr-lg-7 { padding-right: 2.5rem !important; } .pb-lg-7 { padding-bottom: 2.5rem !important; } .pl-lg-7 { padding-left: 2.5rem !important; } .px-lg-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-lg-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-lg-8 { padding: 3rem !important; } .pt-lg-8 { padding-top: 3rem !important; } .pr-lg-8 { padding-right: 3rem !important; } .pb-lg-8 { padding-bottom: 3rem !important; } .pl-lg-8 { padding-left: 3rem !important; } .px-lg-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-lg-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-lg-9 { padding: 3.5rem !important; } .pt-lg-9 { padding-top: 3.5rem !important; } .pr-lg-9 { padding-right: 3.5rem !important; } .pb-lg-9 { padding-bottom: 3.5rem !important; } .pl-lg-9 { padding-left: 3.5rem !important; } .px-lg-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-lg-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-lg-10 { padding: 4rem !important; } .pt-lg-10 { padding-top: 4rem !important; } .pr-lg-10 { padding-right: 4rem !important; } .pb-lg-10 { padding-bottom: 4rem !important; } .pl-lg-10 { padding-left: 4rem !important; } .px-lg-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-lg-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 87.5rem) { .p-xl-0 { padding: 0 !important; } .pt-xl-0 { padding-top: 0 !important; } .pr-xl-0 { padding-right: 0 !important; } .pb-xl-0 { padding-bottom: 0 !important; } .pl-xl-0 { padding-left: 0 !important; } .px-xl-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xl-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xl-1 { padding: 0.25rem !important; } .pt-xl-1 { padding-top: 0.25rem !important; } .pr-xl-1 { padding-right: 0.25rem !important; } .pb-xl-1 { padding-bottom: 0.25rem !important; } .pl-xl-1 { padding-left: 0.25rem !important; } .px-xl-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xl-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xl-2 { padding: 0.5rem !important; } .pt-xl-2 { padding-top: 0.5rem !important; } .pr-xl-2 { padding-right: 0.5rem !important; } .pb-xl-2 { padding-bottom: 0.5rem !important; } .pl-xl-2 { padding-left: 0.5rem !important; } .px-xl-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xl-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xl-3 { padding: 0.75rem !important; } .pt-xl-3 { padding-top: 0.75rem !important; } .pr-xl-3 { padding-right: 0.75rem !important; } .pb-xl-3 { padding-bottom: 0.75rem !important; } .pl-xl-3 { padding-left: 0.75rem !important; } .px-xl-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xl-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xl-4 { padding: 1rem !important; } .pt-xl-4 { padding-top: 1rem !important; } .pr-xl-4 { padding-right: 1rem !important; } .pb-xl-4 { padding-bottom: 1rem !important; } .pl-xl-4 { padding-left: 1rem !important; } .px-xl-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xl-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xl-5 { padding: 1.5rem !important; } .pt-xl-5 { padding-top: 1.5rem !important; } .pr-xl-5 { padding-right: 1.5rem !important; } .pb-xl-5 { padding-bottom: 1.5rem !important; } .pl-xl-5 { padding-left: 1.5rem !important; } .px-xl-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xl-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xl-6 { padding: 2rem !important; } .pt-xl-6 { padding-top: 2rem !important; } .pr-xl-6 { padding-right: 2rem !important; } .pb-xl-6 { padding-bottom: 2rem !important; } .pl-xl-6 { padding-left: 2rem !important; } .px-xl-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xl-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xl-7 { padding: 2.5rem !important; } .pt-xl-7 { padding-top: 2.5rem !important; } .pr-xl-7 { padding-right: 2.5rem !important; } .pb-xl-7 { padding-bottom: 2.5rem !important; } .pl-xl-7 { padding-left: 2.5rem !important; } .px-xl-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xl-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xl-8 { padding: 3rem !important; } .pt-xl-8 { padding-top: 3rem !important; } .pr-xl-8 { padding-right: 3rem !important; } .pb-xl-8 { padding-bottom: 3rem !important; } .pl-xl-8 { padding-left: 3rem !important; } .px-xl-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xl-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xl-9 { padding: 3.5rem !important; } .pt-xl-9 { padding-top: 3.5rem !important; } .pr-xl-9 { padding-right: 3.5rem !important; } .pb-xl-9 { padding-bottom: 3.5rem !important; } .pl-xl-9 { padding-left: 3.5rem !important; } .px-xl-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xl-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xl-10 { padding: 4rem !important; } .pt-xl-10 { padding-top: 4rem !important; } .pr-xl-10 { padding-right: 4rem !important; } .pb-xl-10 { padding-bottom: 4rem !important; } .pl-xl-10 { padding-left: 4rem !important; } .px-xl-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xl-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media print { .site-footer, .site-button, #edit-this-page, #back-to-top, .site-nav, .main-header { display: none !important; } .side-bar { width: 100%; height: auto; border-right: 0 !important; } .site-header { border-bottom: 1px solid #eeebee; } .site-title { font-size: 16px !important; font-weight: 700 !important; } .text-small { font-size: 8pt !important; } pre.highlight { border: 1px solid #eeebee; } .main { max-width: none; margin-left: 0; } } + +/*# sourceMappingURL=just-the-docs-default.css.map */ \ No newline at end of file diff --git a/docs/_site/assets/css/just-the-docs-default.css.map b/docs/_site/assets/css/just-the-docs-default.css.map new file mode 100644 index 0000000000000000000000000000000000000000..717417ef462d54aa9f5772a7f6b7d3460794a441 --- /dev/null +++ b/docs/_site/assets/css/just-the-docs-default.css.map @@ -0,0 +1,74 @@ +{ + "version": 3, + "file": "just-the-docs-default.css", + "sources": [ + "just-the-docs-default.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/support.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/_variables.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/_functions.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/mixins/mixins.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_layout.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_buttons.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_typography.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/color_schemes/light.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/modules.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/vendor/normalize.scss/normalize.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/base.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/layout.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/content.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/navigation.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/typography.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/labels.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/buttons.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/search.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/tables.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/code.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/utilities.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_colors.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_layout.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_typography.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_lists.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_spacing.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/print.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/custom/custom.scss" + ], + "sourcesContent": [ + "\n\n@import \"./support/support\";\n@import \"./color_schemes/light\";\n@import \"./modules\";\n@import \"./custom/custom\";\n\n\n", + "@import \"./variables\";\n@import \"./functions\";\n@import \"./mixins/mixins\";\n", + "//\n// Typography\n//\n\n$body-font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, \"Helvetica Neue\", Arial, sans-serif !default;\n$mono-font-family: \"SFMono-Regular\", Menlo, Consolas, Monospace !default;\n$root-font-size: 16px !default; // Base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n//\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n//\n\n$font-size-1: 9px !default;\n$font-size-1-sm: 10px !default;\n$font-size-2: 11px !default; //h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 12px !default; //h5\n$font-size-4: 14px !default;\n$font-size-5: 16px !default; //h3\n$font-size-6: 18px !default; //h2\n$font-size-7: 24px !default;\n$font-size-8: 32px !default; //h1\n$font-size-9: 36px !default;\n$font-size-10: 42px !default;\n$font-size-10-sm: 48px !default;\n\n//\n// Colors\n//\n\n$white: #fff !default;\n\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n$body-background-color: $white !default;\n$sidebar-color: $grey-lt-000 !default;\n$search-background-color: $white !default;\n$table-background-color: $white !default;\n$code-background-color: $grey-lt-000 !default;\n$feedback-color: darken($sidebar-color, 3%) !default;\n\n$body-text-color: $grey-dk-100 !default;\n$body-heading-color: $grey-dk-300 !default;\n$search-result-preview-color: $grey-dk-000 !default;\n$nav-child-link-color: $grey-dk-100 !default;\n$link-color: $purple-000 !default;\n$btn-primary-color: $purple-100 !default;\n$base-button-color: #f7f7f7 !default;\n\n//\n// Spacing\n//\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n//\n// Borders\n//\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n//\n// Grid system\n//\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 264px !default;\n$nav-width-md: 248px !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 800px !default;\n$header-height: 60px !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n//\n// Media queries in pixels\n//\n\n$media-queries: (\n xs: 320px,\n sm: 500px,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 1400px,\n) !default;\n", + "@function rem($size, $unit: \"\") {\n $remSize: $size / $root-font-size;\n\n @if ($unit == false) {\n @return #{$remSize};\n } @else {\n @return #{$remSize}rem;\n }\n}\n", + "@import \"./layout\";\n@import \"./buttons\";\n@import \"./typography\";\n", + "// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value != null {\n // Prints a media query based on the value\n @media (min-width: rem($value)) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. \"\n + \"Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n", + "// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n", + "@mixin fs-1 {\n font-size: $font-size-1 !important;\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n font-size: $font-size-2 !important;\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n font-size: $font-size-3 !important;\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n font-size: $font-size-4 !important;\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n font-size: $font-size-5 !important;\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n font-size: $font-size-6 !important;\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n", + "", + "//\n// Import external dependencies\n//\n@import \"./vendor/normalize.scss/normalize.scss\";\n\n//\n// Modules\n//\n@import \"./base\";\n@import \"./layout\";\n@import \"./content\";\n@import \"./navigation\";\n@import \"./typography\";\n@import \"./labels\";\n@import \"./buttons\";\n@import \"./search\";\n@import \"./tables\";\n@import \"./code\";\n@import \"./utilities/utilities\";\n@import \"./print\";\n", + "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n", + "//\n// Base element style overrides\n//\n// stylelint-disable selector-no-type, selector-max-type\n\n* {\n box-sizing: border-box;\n}\n\n::selection {\n color: $white;\n background: $link-color;\n}\n\nhtml {\n @include fs-4;\n scroll-behavior: smooth;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: none;\n background-image: linear-gradient($border-color 0%, $border-color 100%);\n background-repeat: repeat-x;\n background-position: 0 100%;\n background-size: 1px 1px;\n\n &:hover {\n background-image: linear-gradient(\n rgba($link-color, 0.45) 0%,\n rgba($link-color, 0.45) 100%\n );\n background-size: 1px 1px;\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n", + "//\n// The basic two column layout\n//\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-wrap: nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n flex-direction: column;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n}\n\n.main {\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n margin-left: calc(\n (100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}\n );\n }\n}\n\n.main-content-wrap {\n @include container;\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n background-color: $body-background-color;\n border-bottom: $border $border-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n @include container;\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n// stylelint-disable selector-max-type\n\nbody {\n position: relative;\n padding-bottom: $sp-10;\n overflow-y: scroll;\n\n @include mq(md) {\n position: static;\n padding-bottom: 0;\n }\n}\n\n// stylelint-enable selector-max-type\n\n.site-footer {\n @include container;\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n color: $grey-dk-000;\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n", + "@charset \"UTF-8\";\n\n//\n// Styles for rendered markdown in the .main-content container\n//\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list {\n padding-left: 0;\n }\n\n .task-list-item {\n display: flex;\n align-items: center;\n\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n &:first-child {\n margin-top: $sp-2;\n }\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge {\n margin-top: 1em;\n }\n\n + p {\n margin-top: 0;\n }\n }\n}\n", + "//\n// Main nav, breadcrumb, etc...\n//\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n @include fs-4;\n position: relative;\n margin: 0;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding-top: #{$nav-list-item-height-sm / 4};\n padding-right: #{$nav-list-item-height-sm / 4};\n padding-bottom: #{$nav-list-item-height-sm / 4};\n padding-left: #{$nav-list-item-height-sm / 4};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding-top: #{$nav-list-item-height / 4};\n padding-right: #{$nav-list-item-height / 4};\n padding-bottom: #{$nav-list-item-height / 4};\n padding-left: #{$nav-list-item-height / 4};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding-top: $sp-2;\n padding-right: $gutter-spacing-sm;\n padding-bottom: $sp-2;\n padding-left: $gutter-spacing-sm;\n font-weight: 600;\n text-align: end;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n", + "//\n// Typography\n//\n// stylelint-disable primer/selector-no-utility, primer/no-override, selector-no-type, selector-max-type\n\nh1,\n.text-alpha {\n @include fs-8;\n font-weight: 300;\n}\n\nh2,\n.text-beta {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n @include fs-2;\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n color: $grey-dk-200;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n color: $grey-dk-200;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n", + "//\n// Labels (not the form kind)\n//\n\n.label,\n.label-blue {\n display: inline-block;\n padding-top: 0.16em;\n padding-right: 0.56em;\n padding-bottom: 0.16em;\n padding-left: 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n @include fs-2;\n border-radius: 12px;\n}\n\n.label-green {\n background-color: $green-200;\n}\n\n.label-purple {\n background-color: $purple-100;\n}\n\n.label-red {\n background-color: $red-200;\n}\n\n.label-yellow {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n", + "//\n// Buttons and things that look like buttons\n//\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding-top: 0.3em;\n padding-right: 1em;\n padding-bottom: 0.3em;\n padding-left: 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: inset 0 0 0 2px $grey-dk-100, 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-000);\n}\n\n.btn-green {\n @include btn-color($white, $green-100);\n}\n", + "//\n// Search input and autocomplete\n//\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration / 2};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration / 2};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding-top: $sp-2;\n padding-right: $gutter-spacing-sm;\n padding-bottom: $sp-2;\n padding-left: #{$gutter-spacing-sm + $sp-5};\n font-size: 16px;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n padding-left: #{$gutter-spacing + $sp-5};\n font-size: 14px;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration / 2};\n }\n\n &:focus {\n outline: 0;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration / 2};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding-top: $sp-1;\n padding-right: $sp-3;\n padding-bottom: $sp-1;\n padding-left: $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding-top: $sp-2;\n padding-right: $sp-3;\n padding-bottom: $sp-2;\n padding-left: $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 / 2};\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition: opacity ease $transition-duration, width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition: opacity ease $transition-duration, width 0s, height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n", + "//\n// Tables\n//\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n @include fs-3;\n min-width: 120px;\n padding-top: $sp-2;\n padding-right: $sp-3;\n padding-bottom: $sp-2;\n padding-left: $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n", + "//\n// Code and syntax highlighting\n//\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type\n\ncode {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n//
...
:\n// figure.highlight > pre > code.language-LANG\n//\n//
1
+
...
+
:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\ndiv.highlighter-rouge {\n padding: $sp-3;\n margin-top: 0;\n margin-bottom: $sp-3;\n overflow-x: auto;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n\n div.highlight,\n pre.highlight,\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n//
...
,\n//
1
+
...
+
:\nfigure.highlight {\n padding: $sp-3;\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n\n pre,\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n//
1
+
...
+
:\n.highlight .table-wrapper {\n padding: 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n @include fs-2;\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n }\n\n td.gl {\n padding-right: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n.highlight .c {\n color: #586e75;\n} // comment //\n.highlight .err {\n color: #93a1a1;\n} // error //\n.highlight .g {\n color: #93a1a1;\n} // generic //\n.highlight .k {\n color: #859900;\n} // keyword //\n.highlight .l {\n color: #93a1a1;\n} // literal //\n.highlight .n {\n color: #93a1a1;\n} // name //\n.highlight .o {\n color: #859900;\n} // operator //\n.highlight .x {\n color: #cb4b16;\n} // other //\n.highlight .p {\n color: #93a1a1;\n} // punctuation //\n.highlight .cm {\n color: #586e75;\n} // comment.multiline //\n.highlight .cp {\n color: #859900;\n} // comment.preproc //\n.highlight .c1 {\n color: #586e75;\n} // comment.single //\n.highlight .cs {\n color: #859900;\n} // comment.special //\n.highlight .gd {\n color: #2aa198;\n} // generic.deleted //\n.highlight .ge {\n font-style: italic;\n color: #93a1a1;\n} // generic.emph //\n.highlight .gr {\n color: #dc322f;\n} // generic.error //\n.highlight .gh {\n color: #cb4b16;\n} // generic.heading //\n.highlight .gi {\n color: #859900;\n} // generic.inserted //\n.highlight .go {\n color: #93a1a1;\n} // generic.output //\n.highlight .gp {\n color: #93a1a1;\n} // generic.prompt //\n.highlight .gs {\n font-weight: bold;\n color: #93a1a1;\n} // generic.strong //\n.highlight .gu {\n color: #cb4b16;\n} // generic.subheading //\n.highlight .gt {\n color: #93a1a1;\n} // generic.traceback //\n.highlight .kc {\n color: #cb4b16;\n} // keyword.constant //\n.highlight .kd {\n color: #268bd2;\n} // keyword.declaration //\n.highlight .kn {\n color: #859900;\n} // keyword.namespace //\n.highlight .kp {\n color: #859900;\n} // keyword.pseudo //\n.highlight .kr {\n color: #268bd2;\n} // keyword.reserved //\n.highlight .kt {\n color: #dc322f;\n} // keyword.type //\n.highlight .ld {\n color: #93a1a1;\n} // literal.date //\n.highlight .m {\n color: #2aa198;\n} // literal.number //\n.highlight .s {\n color: #2aa198;\n} // literal.string //\n.highlight .na {\n color: #555;\n} // name.attribute //\n.highlight .nb {\n color: #b58900;\n} // name.builtin //\n.highlight .nc {\n color: #268bd2;\n} // name.class //\n.highlight .no {\n color: #cb4b16;\n} // name.constant //\n.highlight .nd {\n color: #268bd2;\n} // name.decorator //\n.highlight .ni {\n color: #cb4b16;\n} // name.entity //\n.highlight .ne {\n color: #cb4b16;\n} // name.exception //\n.highlight .nf {\n color: #268bd2;\n} // name.function //\n.highlight .nl {\n color: #555;\n} // name.label //\n.highlight .nn {\n color: #93a1a1;\n} // name.namespace //\n.highlight .nx {\n color: #555;\n} // name.other //\n.highlight .py {\n color: #93a1a1;\n} // name.property //\n.highlight .nt {\n color: #268bd2;\n} // name.tag //\n.highlight .nv {\n color: #268bd2;\n} // name.variable //\n.highlight .ow {\n color: #859900;\n} // operator.word //\n.highlight .w {\n color: #93a1a1;\n} // text.whitespace //\n.highlight .mf {\n color: #2aa198;\n} // literal.number.float //\n.highlight .mh {\n color: #2aa198;\n} // literal.number.hex //\n.highlight .mi {\n color: #2aa198;\n} // literal.number.integer //\n.highlight .mo {\n color: #2aa198;\n} // literal.number.oct //\n.highlight .sb {\n color: #586e75;\n} // literal.string.backtick //\n.highlight .sc {\n color: #2aa198;\n} // literal.string.char //\n.highlight .sd {\n color: #93a1a1;\n} // literal.string.doc //\n.highlight .s2 {\n color: #2aa198;\n} // literal.string.double //\n.highlight .se {\n color: #cb4b16;\n} // literal.string.escape //\n.highlight .sh {\n color: #93a1a1;\n} // literal.string.heredoc //\n.highlight .si {\n color: #2aa198;\n} // literal.string.interpol //\n.highlight .sx {\n color: #2aa198;\n} // literal.string.other //\n.highlight .sr {\n color: #dc322f;\n} // literal.string.regex //\n.highlight .s1 {\n color: #2aa198;\n} // literal.string.single //\n.highlight .ss {\n color: #2aa198;\n} // literal.string.symbol //\n.highlight .bp {\n color: #268bd2;\n} // name.builtin.pseudo //\n.highlight .vc {\n color: #268bd2;\n} // name.variable.class //\n.highlight .vg {\n color: #268bd2;\n} // name.variable.global //\n.highlight .vi {\n color: #268bd2;\n} // name.variable.instance //\n.highlight .il {\n color: #2aa198;\n} // literal.number.integer.long //\n\n//\n// Code examples (rendered)\n//\n\n.code-example {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n", + "@import \"./colors\";\n@import \"./layout\";\n@import \"./typography\";\n@import \"./lists\";\n@import \"./spacing\";\n", + "//\n// Utility classes for colors\n//\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n", + "// stylelint-disable primer/selector-no-utility, primer/no-override\n//\n// Utility classes for layout\n//\n\n// Display\n\n.d-block {\n display: block !important;\n}\n.d-flex {\n display: flex !important;\n}\n.d-inline {\n display: inline !important;\n}\n.d-inline-block {\n display: inline-block !important;\n}\n.d-none {\n display: none !important;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n.v-align-middle {\n vertical-align: middle !important;\n}\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n.v-align-top {\n vertical-align: top !important;\n}\n", + "//\n// Utility classes for typography\n//\n\n// stylelint-disable primer/selector-no-utility, primer/no-override\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n// stylelint-enable primer/selector-no-utility\n", + "//\n// Utility classes for lists\n//\n\n// stylelint-disable primer/selector-no-utility, primer/no-override, selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n", + "//\n// Utility classes for margins and padding\n//\n\n// scss-lint:disable SpaceAfterPropertyName\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before, primer/selector-no-utility, primer/no-override\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n", + "// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type, primer/no-override,\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: $root-font-size !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n", + "" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/docs/_site/assets/css/just-the-docs-light.css b/docs/_site/assets/css/just-the-docs-light.css new file mode 100644 index 0000000000000000000000000000000000000000..552d70bceca0bec1b7adeac8594cca05484e0c7e --- /dev/null +++ b/docs/_site/assets/css/just-the-docs-light.css @@ -0,0 +1,1541 @@ +@charset "UTF-8"; +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +/* Document ========================================================================== */ +/** 1. Correct the line height in all browsers. 2. Prevent adjustments of font size after orientation changes in iOS. */ +html { line-height: 1.15; /* 1 */ -webkit-text-size-adjust: 100%; /* 2 */ } + +/* Sections ========================================================================== */ +/** Remove the margin in all browsers. */ +body { margin: 0; } + +/** Render the `main` element consistently in IE. */ +main { display: block; } + +/** Correct the font size and margin on `h1` elements within `section` and `article` contexts in Chrome, Firefox, and Safari. */ +h1 { font-size: 2em; margin: 0.67em 0; } + +/* Grouping content ========================================================================== */ +/** 1. Add the correct box sizing in Firefox. 2. Show the overflow in Edge and IE. */ +hr { box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ } + +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +pre { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/* Text-level semantics ========================================================================== */ +/** Remove the gray background on active links in IE 10. */ +a { background-color: transparent; } + +/** 1. Remove the bottom border in Chrome 57- 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ +abbr[title] { border-bottom: none; /* 1 */ text-decoration: underline; /* 2 */ text-decoration: underline dotted; /* 2 */ } + +/** Add the correct font weight in Chrome, Edge, and Safari. */ +b, strong { font-weight: bolder; } + +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +code, kbd, samp { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/** Add the correct font size in all browsers. */ +small { font-size: 80%; } + +/** Prevent `sub` and `sup` elements from affecting the line height in all browsers. */ +sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } + +sub { bottom: -0.25em; } + +sup { top: -0.5em; } + +/* Embedded content ========================================================================== */ +/** Remove the border on images inside links in IE 10. */ +img { border-style: none; } + +/* Forms ========================================================================== */ +/** 1. Change the font styles in all browsers. 2. Remove the margin in Firefox and Safari. */ +button, input, optgroup, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 1 */ line-height: 1.15; /* 1 */ margin: 0; /* 2 */ } + +/** Show the overflow in IE. 1. Show the overflow in Edge. */ +button, input { /* 1 */ overflow: visible; } + +/** Remove the inheritance of text transform in Edge, Firefox, and IE. 1. Remove the inheritance of text transform in Firefox. */ +button, select { /* 1 */ text-transform: none; } + +/** Correct the inability to style clickable types in iOS and Safari. */ +button, [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; } + +/** Remove the inner border and padding in Firefox. */ +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } + +/** Restore the focus styles unset by the previous rule. */ +button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } + +/** Correct the padding in Firefox. */ +fieldset { padding: 0.35em 0.75em 0.625em; } + +/** 1. Correct the text wrapping in Edge and IE. 2. Correct the color inheritance from `fieldset` elements in IE. 3. Remove the padding so developers are not caught out when they zero out `fieldset` elements in all browsers. */ +legend { box-sizing: border-box; /* 1 */ color: inherit; /* 2 */ display: table; /* 1 */ max-width: 100%; /* 1 */ padding: 0; /* 3 */ white-space: normal; /* 1 */ } + +/** Add the correct vertical alignment in Chrome, Firefox, and Opera. */ +progress { vertical-align: baseline; } + +/** Remove the default vertical scrollbar in IE 10+. */ +textarea { overflow: auto; } + +/** 1. Add the correct box sizing in IE 10. 2. Remove the padding in IE 10. */ +[type="checkbox"], [type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } + +/** Correct the cursor style of increment and decrement buttons in Chrome. */ +[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; } + +/** 1. Correct the odd appearance in Chrome and Safari. 2. Correct the outline style in Safari. */ +[type="search"] { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } + +/** Remove the inner padding in Chrome and Safari on macOS. */ +[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +/** 1. Correct the inability to style clickable types in iOS and Safari. 2. Change font properties to `inherit` in Safari. */ +::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ } + +/* Interactive ========================================================================== */ +/* Add the correct display in Edge, IE 10+, and Firefox. */ +details { display: block; } + +/* Add the correct display in all browsers. */ +summary { display: list-item; } + +/* Misc ========================================================================== */ +/** Add the correct display in IE 10+. */ +template { display: none; } + +/** Add the correct display in IE 10. */ +[hidden] { display: none; } + +* { box-sizing: border-box; } + +::selection { color: #fff; background: #7253ed; } + +html { font-size: 14px !important; scroll-behavior: smooth; } + +@media (min-width: 31.25rem) { html { font-size: 16px !important; } } + +body { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: inherit; line-height: 1.4; color: #5c5962; background-color: #fff; } + +ol, ul, dl, pre, address, blockquote, table, div, hr, form, fieldset, noscript .table-wrapper { margin-top: 0; } + +h1, h2, h3, h4, h5, h6 { margin-top: 0; margin-bottom: 1em; font-weight: 500; line-height: 1.25; color: #27262b; } + +p { margin-top: 1em; margin-bottom: 1em; } + +a { color: #7253ed; text-decoration: none; } + +a:not([class]) { text-decoration: none; background-image: linear-gradient(#eeebee 0%, #eeebee 100%); background-repeat: repeat-x; background-position: 0 100%; background-size: 1px 1px; } + +a:not([class]):hover { background-image: linear-gradient(rgba(114, 83, 237, 0.45) 0%, rgba(114, 83, 237, 0.45) 100%); background-size: 1px 1px; } + +code { font-family: "SFMono-Regular", Menlo, Consolas, Monospace; font-size: 0.75em; line-height: 1.4; } + +figure, pre { margin: 0; } + +li { margin: 0.25em 0; } + +img { max-width: 100%; height: auto; } + +hr { height: 1px; padding: 0; margin: 2rem 0; background-color: #eeebee; border: 0; } + +.side-bar { z-index: 0; display: flex; flex-wrap: wrap; background-color: #f5f6fa; } + +@media (min-width: 50rem) { .side-bar { flex-wrap: nowrap; position: fixed; width: 248px; height: 100%; flex-direction: column; border-right: 1px solid #eeebee; align-items: flex-end; } } + +@media (min-width: 66.5rem) { .side-bar { width: calc((100% - 1064px) / 2 + 264px); min-width: 264px; } } + +@media (min-width: 50rem) { .main { position: relative; max-width: 800px; margin-left: 248px; } } + +@media (min-width: 66.5rem) { .main { margin-left: calc( (100% - 1064px) / 2 + 264px); } } + +.main-content-wrap { padding-right: 1rem; padding-left: 1rem; padding-top: 1rem; padding-bottom: 1rem; } + +@media (min-width: 50rem) { .main-content-wrap { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 50rem) { .main-content-wrap { padding-top: 2rem; padding-bottom: 2rem; } } + +.main-header { z-index: 0; display: none; background-color: #f5f6fa; } + +@media (min-width: 50rem) { .main-header { display: flex; justify-content: space-between; height: 60px; background-color: #fff; border-bottom: 1px solid #eeebee; } } + +.main-header.nav-open { display: block; } + +@media (min-width: 50rem) { .main-header.nav-open { display: flex; } } + +.site-nav, .site-header, .site-footer { width: 100%; } + +@media (min-width: 66.5rem) { .site-nav, .site-header, .site-footer { width: 264px; } } + +.site-nav { display: none; } + +.site-nav.nav-open { display: block; } + +@media (min-width: 50rem) { .site-nav { display: block; padding-top: 3rem; padding-bottom: 1rem; overflow-y: auto; flex: 1 1 auto; } } + +.site-header { display: flex; min-height: 60px; align-items: center; } + +@media (min-width: 50rem) { .site-header { height: 60px; max-height: 60px; border-bottom: 1px solid #eeebee; } } + +.site-title { padding-right: 1rem; padding-left: 1rem; flex-grow: 1; display: flex; height: 100%; align-items: center; padding-top: 0.75rem; padding-bottom: 0.75rem; color: #27262b; font-size: 18px !important; } + +@media (min-width: 50rem) { .site-title { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 31.25rem) { .site-title { font-size: 24px !important; line-height: 1.25; } } + +@media (min-width: 50rem) { .site-title { padding-top: 0.5rem; padding-bottom: 0.5rem; } } + +.site-button { display: flex; height: 100%; padding: 1rem; align-items: center; } + +@media (min-width: 50rem) { .site-header .site-button { display: none; } } + +.site-title:hover { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 80%, rgba(235, 237, 245, 0) 100%); } + +.site-button:hover { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 100%); } + +body { position: relative; padding-bottom: 4rem; overflow-y: scroll; } + +@media (min-width: 50rem) { body { position: static; padding-bottom: 0; } } + +.site-footer { padding-right: 1rem; padding-left: 1rem; position: absolute; bottom: 0; left: 0; padding-top: 1rem; padding-bottom: 1rem; color: #959396; font-size: 11px !important; } + +@media (min-width: 50rem) { .site-footer { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 31.25rem) { .site-footer { font-size: 12px !important; } } + +@media (min-width: 50rem) { .site-footer { position: static; justify-self: end; } } + +.icon { width: 1.5rem; height: 1.5rem; color: #7253ed; } + +.main-content { line-height: 1.6; } + +.main-content ol, .main-content ul, .main-content dl, .main-content pre, .main-content address, .main-content blockquote, .main-content .table-wrapper { margin-top: 0.5em; } + +.main-content a { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + +.main-content ul, .main-content ol { padding-left: 1.5em; } + +.main-content li .highlight { margin-top: 0.25rem; } + +.main-content ol { list-style-type: none; counter-reset: step-counter; } + +.main-content ol > li { position: relative; } + +.main-content ol > li::before { position: absolute; top: 0.2em; left: -1.6em; color: #959396; content: counter(step-counter); counter-increment: step-counter; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .main-content ol > li::before { font-size: 14px !important; } } + +@media (min-width: 31.25rem) { .main-content ol > li::before { top: 0.11em; } } + +.main-content ol > li ol { counter-reset: sub-counter; } + +.main-content ol > li ol li::before { content: counter(sub-counter, lower-alpha); counter-increment: sub-counter; } + +.main-content ul { list-style: none; } + +.main-content ul > li::before { position: absolute; margin-left: -1.4em; color: #959396; content: "•"; } + +.main-content .task-list { padding-left: 0; } + +.main-content .task-list-item { display: flex; align-items: center; } + +.main-content .task-list-item::before { content: ""; } + +.main-content .task-list-item-checkbox { margin-right: 0.6em; } + +.main-content hr + * { margin-top: 0; } + +.main-content h1:first-of-type { margin-top: 0.5em; } + +.main-content dl { display: grid; grid-template: auto / 10em 1fr; } + +.main-content dt, .main-content dd { margin: 0.25em 0; } + +.main-content dt { grid-column: 1; font-weight: 500; text-align: right; } + +.main-content dt::after { content: ":"; } + +.main-content dd { grid-column: 2; margin-bottom: 0; margin-left: 1em; } + +.main-content dd blockquote:first-child, .main-content dd div:first-child, .main-content dd dl:first-child, .main-content dd dt:first-child, .main-content dd h1:first-child, .main-content dd h2:first-child, .main-content dd h3:first-child, .main-content dd h4:first-child, .main-content dd h5:first-child, .main-content dd h6:first-child, .main-content dd li:first-child, .main-content dd ol:first-child, .main-content dd p:first-child, .main-content dd pre:first-child, .main-content dd table:first-child, .main-content dd ul:first-child, .main-content dd .table-wrapper:first-child { margin-top: 0; } + +.main-content dd dl:first-child dt:first-child, .main-content dd dl:first-child dd:nth-child(2), .main-content ol dl:first-child dt:first-child, .main-content ol dl:first-child dd:nth-child(2), .main-content ul dl:first-child dt:first-child, .main-content ul dl:first-child dd:nth-child(2) { margin-top: 0; } + +.main-content .anchor-heading { position: absolute; right: -1rem; width: 1.5rem; height: 100%; padding-right: 0.25rem; padding-left: 0.25rem; overflow: visible; } + +@media (min-width: 50rem) { .main-content .anchor-heading { right: auto; left: -1.5rem; } } + +.main-content .anchor-heading svg { display: inline-block; width: 100%; height: 100%; color: #7253ed; visibility: hidden; } + +.main-content .anchor-heading:hover svg, .main-content h1:hover > .anchor-heading svg, .main-content h2:hover > .anchor-heading svg, .main-content h3:hover > .anchor-heading svg, .main-content h4:hover > .anchor-heading svg, .main-content h5:hover > .anchor-heading svg, .main-content h6:hover > .anchor-heading svg { visibility: visible; } + +.main-content summary { cursor: pointer; } + +.main-content h1, .main-content h2, .main-content h3, .main-content h4, .main-content h5, .main-content h6 { position: relative; margin-top: 1.5em; margin-bottom: 0.25em; } + +.main-content h1:first-child, .main-content h2:first-child, .main-content h3:first-child, .main-content h4:first-child, .main-content h5:first-child, .main-content h6:first-child { margin-top: 0.5rem; } + +.main-content h1 + table, .main-content h1 + .table-wrapper, .main-content h1 + .code-example, .main-content h1 + .highlighter-rouge, .main-content h2 + table, .main-content h2 + .table-wrapper, .main-content h2 + .code-example, .main-content h2 + .highlighter-rouge, .main-content h3 + table, .main-content h3 + .table-wrapper, .main-content h3 + .code-example, .main-content h3 + .highlighter-rouge, .main-content h4 + table, .main-content h4 + .table-wrapper, .main-content h4 + .code-example, .main-content h4 + .highlighter-rouge, .main-content h5 + table, .main-content h5 + .table-wrapper, .main-content h5 + .code-example, .main-content h5 + .highlighter-rouge, .main-content h6 + table, .main-content h6 + .table-wrapper, .main-content h6 + .code-example, .main-content h6 + .highlighter-rouge { margin-top: 1em; } + +.main-content h1 + p, .main-content h2 + p, .main-content h3 + p, .main-content h4 + p, .main-content h5 + p, .main-content h6 + p { margin-top: 0; } + +.nav-list { padding: 0; margin-top: 0; margin-bottom: 0; list-style: none; } + +.nav-list .nav-list-item { font-size: 14px !important; position: relative; margin: 0; } + +@media (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 16px !important; } } + +@media (min-width: 50rem) { .nav-list .nav-list-item { font-size: 12px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 14px !important; } } + +.nav-list .nav-list-item .nav-list-link { display: block; min-height: 3rem; padding-top: 0.25rem; padding-bottom: 0.25rem; line-height: 2.5rem; padding-right: 3rem; padding-left: 1rem; } + +@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-link { min-height: 2rem; line-height: 1.5rem; padding-right: 2rem; padding-left: 2rem; } } + +.nav-list .nav-list-item .nav-list-link.active { font-weight: 600; text-decoration: none; } + +.nav-list .nav-list-item .nav-list-link:hover, .nav-list .nav-list-item .nav-list-link.active { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 80%, rgba(235, 237, 245, 0) 100%); } + +.nav-list .nav-list-item .nav-list-expander { position: absolute; right: 0; width: 3rem; height: 3rem; padding-top: 0.75rem; padding-right: 0.75rem; padding-bottom: 0.75rem; padding-left: 0.75rem; color: #7253ed; } + +@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-expander { width: 2rem; height: 2rem; padding-top: 0.5rem; padding-right: 0.5rem; padding-bottom: 0.5rem; padding-left: 0.5rem; } } + +.nav-list .nav-list-item .nav-list-expander:hover { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 100%); } + +.nav-list .nav-list-item .nav-list-expander svg { transform: rotate(90deg); } + +.nav-list .nav-list-item > .nav-list { display: none; padding-left: 0.75rem; list-style: none; } + +.nav-list .nav-list-item > .nav-list .nav-list-item { position: relative; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { color: #5c5962; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-expander { color: #5c5962; } + +.nav-list .nav-list-item.active > .nav-list-expander svg { transform: rotate(-90deg); } + +.nav-list .nav-list-item.active > .nav-list { display: block; } + +.nav-category { padding-top: 0.5rem; padding-right: 1rem; padding-bottom: 0.5rem; padding-left: 1rem; font-weight: 600; text-align: end; text-transform: uppercase; border-bottom: 1px solid #eeebee; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .nav-category { font-size: 12px !important; } } + +@media (min-width: 50rem) { .nav-category { padding-right: 2rem; padding-left: 2rem; margin-top: 1rem; text-align: start; } .nav-category:first-child { margin-top: 0; } } + +.aux-nav { height: 100%; overflow-x: auto; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .aux-nav { font-size: 12px !important; } } + +.aux-nav .aux-nav-list { display: flex; height: 100%; padding: 0; margin: 0; list-style: none; } + +.aux-nav .aux-nav-list-item { display: inline-block; height: 100%; padding: 0; margin: 0; } + +@media (min-width: 50rem) { .aux-nav { padding-right: 1rem; } } + +@media (min-width: 50rem) { .breadcrumb-nav { margin-top: -1rem; } } + +.breadcrumb-nav-list { padding-left: 0; margin-bottom: 0.75rem; list-style: none; } + +.breadcrumb-nav-list-item { display: table-cell; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .breadcrumb-nav-list-item { font-size: 12px !important; } } + +.breadcrumb-nav-list-item::before { display: none; } + +.breadcrumb-nav-list-item::after { display: inline-block; margin-right: 0.5rem; margin-left: 0.5rem; color: #959396; content: "/"; } + +.breadcrumb-nav-list-item:last-child::after { content: ""; } + +h1, .text-alpha { font-size: 32px !important; line-height: 1.25; font-weight: 300; } + +@media (min-width: 31.25rem) { h1, .text-alpha { font-size: 36px !important; } } + +h2, .text-beta { font-size: 18px !important; } + +@media (min-width: 31.25rem) { h2, .text-beta { font-size: 24px !important; line-height: 1.25; } } + +h3, .text-gamma { font-size: 16px !important; } + +@media (min-width: 31.25rem) { h3, .text-gamma { font-size: 18px !important; } } + +h4, .text-delta { font-size: 11px !important; font-weight: 400; text-transform: uppercase; letter-spacing: 0.1em; } + +@media (min-width: 31.25rem) { h4, .text-delta { font-size: 12px !important; } } + +h4 code { text-transform: none; } + +h5, .text-epsilon { font-size: 12px !important; color: #44434d; } + +@media (min-width: 31.25rem) { h5, .text-epsilon { font-size: 14px !important; } } + +h6, .text-zeta { font-size: 11px !important; color: #44434d; } + +@media (min-width: 31.25rem) { h6, .text-zeta { font-size: 12px !important; } } + +.text-small { font-size: 11px !important; } + +@media (min-width: 31.25rem) { .text-small { font-size: 12px !important; } } + +.text-mono { font-family: "SFMono-Regular", Menlo, Consolas, Monospace !important; } + +.text-left { text-align: left !important; } + +.text-center { text-align: center !important; } + +.text-right { text-align: right !important; } + +.label, .label-blue { display: inline-block; padding-top: 0.16em; padding-right: 0.56em; padding-bottom: 0.16em; padding-left: 0.56em; margin-right: 0.5rem; margin-left: 0.5rem; color: #fff; text-transform: uppercase; vertical-align: middle; background-color: #2869e6; font-size: 11px !important; border-radius: 12px; } + +@media (min-width: 31.25rem) { .label, .label-blue { font-size: 12px !important; } } + +.label-green { background-color: #009c7b; } + +.label-purple { background-color: #5e41d0; } + +.label-red { background-color: #e94c4c; } + +.label-yellow { color: #44434d; background-color: #f7d12e; } + +.btn { display: inline-block; box-sizing: border-box; padding-top: 0.3em; padding-right: 1em; padding-bottom: 0.3em; padding-left: 1em; margin: 0; font-family: inherit; font-size: inherit; font-weight: 500; line-height: 1.5; color: #7253ed; text-decoration: none; vertical-align: baseline; cursor: pointer; background-color: #f7f7f7; border-width: 0; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); appearance: none; } + +.btn:focus { text-decoration: none; outline: none; box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn:focus:hover, .btn.selected:focus { box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn:hover, .btn.zeroclipboard-is-hover { color: #6a4aec; } + +.btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active { text-decoration: none; background-color: #f4f4f4; } + +.btn:active, .btn.selected, .btn.zeroclipboard-is-active { background-color: #efefef; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn.selected:hover { background-color: #cfcfcf; } + +.btn:disabled, .btn:disabled:hover, .btn.disabled, .btn.disabled:hover { color: rgba(102, 102, 102, 0.5); cursor: default; background-color: rgba(229, 229, 229, 0.5); background-image: none; box-shadow: none; } + +.btn-outline { color: #7253ed; background: transparent; box-shadow: inset 0 0 0 2px #e6e1e8; } + +.btn-outline:hover, .btn-outline:active, .btn-outline.zeroclipboard-is-hover, .btn-outline.zeroclipboard-is-active { color: #6341eb; text-decoration: none; background-color: transparent; box-shadow: inset 0 0 0 3px #e6e1e8; } + +.btn-outline:focus { text-decoration: none; outline: none; box-shadow: inset 0 0 0 2px #5c5962, 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn-outline:focus:hover, .btn-outline.selected:focus { box-shadow: inset 0 0 0 2px #5c5962; } + +.btn-primary { color: #fff; background-color: #5739ce; background-image: linear-gradient(#6f55d5, #5739ce); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-primary:hover, .btn-primary.zeroclipboard-is-hover { color: #fff; background-color: #5132cb; background-image: linear-gradient(#6549d2, #5132cb); } + +.btn-primary:active, .btn-primary.selected, .btn-primary.zeroclipboard-is-active { background-color: #4f31c6; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-primary.selected:hover { background-color: #472cb2; } + +.btn-purple { color: #fff; background-color: #5739ce; background-image: linear-gradient(#6f55d5, #5739ce); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-purple:hover, .btn-purple.zeroclipboard-is-hover { color: #fff; background-color: #5132cb; background-image: linear-gradient(#6549d2, #5132cb); } + +.btn-purple:active, .btn-purple.selected, .btn-purple.zeroclipboard-is-active { background-color: #4f31c6; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-purple.selected:hover { background-color: #472cb2; } + +.btn-blue { color: #fff; background-color: #227efa; background-image: linear-gradient(#4593fb, #227efa); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-blue:hover, .btn-blue.zeroclipboard-is-hover { color: #fff; background-color: #1878fa; background-image: linear-gradient(#368afa, #1878fa); } + +.btn-blue:active, .btn-blue.selected, .btn-blue.zeroclipboard-is-active { background-color: #1375f9; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-blue.selected:hover { background-color: #0669ed; } + +.btn-green { color: #fff; background-color: #10ac7d; background-image: linear-gradient(#13cc95, #10ac7d); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-green:hover, .btn-green.zeroclipboard-is-hover { color: #fff; background-color: #0fa276; background-image: linear-gradient(#12be8b, #0fa276); } + +.btn-green:active, .btn-green.selected, .btn-green.zeroclipboard-is-active { background-color: #0f9e73; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-green.selected:hover { background-color: #0d8662; } + +.search { position: relative; z-index: 2; flex-grow: 1; height: 4rem; padding: 0.5rem; transition: padding linear 200ms; } + +@media (min-width: 50rem) { .search { position: relative !important; width: auto !important; height: 100% !important; padding: 0; transition: none; } } + +.search-input-wrap { position: relative; z-index: 1; height: 3rem; overflow: hidden; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); transition: height linear 200ms; } + +@media (min-width: 50rem) { .search-input-wrap { position: absolute; width: 100%; max-width: 536px; height: 100% !important; border-radius: 0; box-shadow: none; transition: width ease 400ms; } } + +.search-input { position: absolute; width: 100%; height: 100%; padding-top: 0.5rem; padding-right: 1rem; padding-bottom: 0.5rem; padding-left: 2.5rem; font-size: 16px; background-color: #fff; border-top: 0; border-right: 0; border-bottom: 0; border-left: 0; border-radius: 0; } + +@media (min-width: 50rem) { .search-input { padding-top: 1rem; padding-bottom: 1rem; padding-left: 3.5rem; font-size: 14px; background-color: #fff; transition: padding-left linear 200ms; } } + +.search-input:focus { outline: 0; } + +.search-input:focus + .search-label .search-icon { color: #7253ed; } + +.search-label { position: absolute; display: flex; height: 100%; padding-left: 1rem; } + +@media (min-width: 50rem) { .search-label { padding-left: 2rem; transition: padding-left linear 200ms; } } + +.search-label .search-icon { width: 1.2rem; height: 1.2rem; align-self: center; color: #959396; } + +.search-results { position: absolute; left: 0; display: none; width: 100%; max-height: calc(100% - 4rem); overflow-y: auto; background-color: #fff; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +@media (min-width: 50rem) { .search-results { top: 100%; width: 536px; max-height: calc(100vh - 200%) !important; } } + +.search-results-list { padding-left: 0; margin-bottom: 0.25rem; list-style: none; font-size: 14px !important; } + +@media (min-width: 31.25rem) { .search-results-list { font-size: 16px !important; } } + +@media (min-width: 50rem) { .search-results-list { font-size: 12px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .search-results-list { font-size: 14px !important; } } + +.search-results-list-item { padding: 0; margin: 0; } + +.search-result { display: block; padding-top: 0.25rem; padding-right: 0.75rem; padding-bottom: 0.25rem; padding-left: 0.75rem; } + +.search-result:hover, .search-result.active { background-color: #ebedf5; } + +.search-result-title { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; } + +@media (min-width: 31.25rem) { .search-result-title { display: inline-block; width: 40%; padding-right: 0.5rem; vertical-align: top; } } + +.search-result-doc { display: flex; align-items: center; word-wrap: break-word; } + +.search-result-doc.search-result-doc-parent { opacity: 0.5; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 14px !important; } } + +@media (min-width: 50rem) { .search-result-doc.search-result-doc-parent { font-size: 11px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 12px !important; } } + +.search-result-doc .search-result-icon { width: 1rem; height: 1rem; margin-right: 0.5rem; color: #7253ed; flex-shrink: 0; } + +.search-result-doc .search-result-doc-title { overflow: auto; } + +.search-result-section { margin-left: 1.5rem; word-wrap: break-word; } + +.search-result-rel-url { display: block; margin-left: 1.5rem; overflow: hidden; color: #959396; text-overflow: ellipsis; white-space: nowrap; font-size: 9px !important; } + +@media (min-width: 31.25rem) { .search-result-rel-url { font-size: 10px !important; } } + +.search-result-previews { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 1rem; margin-left: 0.5rem; color: #959396; word-wrap: break-word; border-left: 1px solid; border-left-color: #eeebee; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .search-result-previews { font-size: 12px !important; } } + +@media (min-width: 31.25rem) { .search-result-previews { display: inline-block; width: 60%; padding-left: 0.5rem; margin-left: 0; vertical-align: top; } } + +.search-result-preview + .search-result-preview { margin-top: 0.25rem; } + +.search-result-highlight { font-weight: bold; } + +.search-no-result { padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .search-no-result { font-size: 14px !important; } } + +.search-button { position: fixed; right: 1rem; bottom: 1rem; display: flex; width: 3.5rem; height: 3.5rem; background-color: #fff; border: 1px solid rgba(114, 83, 237, 0.3); border-radius: 1.75rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); align-items: center; justify-content: center; } + +.search-overlay { position: fixed; top: 0; left: 0; z-index: 1; width: 0; height: 0; background-color: rgba(0, 0, 0, 0.3); opacity: 0; transition: opacity ease 400ms, width 0s 400ms, height 0s 400ms; } + +.search-active .search { position: fixed; top: 0; left: 0; width: 100%; height: 100%; padding: 0; } + +.search-active .search-input-wrap { height: 4rem; border-radius: 0; } + +@media (min-width: 50rem) { .search-active .search-input-wrap { width: 536px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } } + +.search-active .search-input { background-color: #fff; } + +@media (min-width: 50rem) { .search-active .search-input { padding-left: 2.3rem; } } + +@media (min-width: 50rem) { .search-active .search-label { padding-left: 0.6rem; } } + +.search-active .search-results { display: block; } + +.search-active .search-overlay { width: 100%; height: 100%; opacity: 1; transition: opacity ease 400ms, width 0s, height 0s; } + +@media (min-width: 50rem) { .search-active .main { position: fixed; right: 0; left: 0; } } + +.search-active .main-header { padding-top: 4rem; } + +@media (min-width: 50rem) { .search-active .main-header { padding-top: 0; } } + +.table-wrapper { display: block; width: 100%; max-width: 100%; margin-bottom: 1.5rem; overflow-x: auto; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +table { display: table; min-width: 100%; border-collapse: separate; } + +th, td { font-size: 12px !important; min-width: 120px; padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; background-color: #fff; border-bottom: 1px solid rgba(238, 235, 238, 0.5); border-left: 1px solid #eeebee; } + +@media (min-width: 31.25rem) { th, td { font-size: 14px !important; } } + +th:first-of-type, td:first-of-type { border-left: 0; } + +tbody tr:last-of-type th, tbody tr:last-of-type td { border-bottom: 0; } + +tbody tr:last-of-type td { padding-bottom: 0.75rem; } + +thead th { border-bottom: 1px solid #eeebee; } + +code { padding: 0.2em 0.15em; font-weight: 400; background-color: #f5f6fa; border: 1px solid #eeebee; border-radius: 4px; } + +a:visited code { border-color: #eeebee; } + +div.highlighter-rouge { padding: 0.75rem; margin-top: 0; margin-bottom: 0.75rem; overflow-x: auto; background-color: #f5f6fa; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; } + +div.highlighter-rouge div.highlight, div.highlighter-rouge pre.highlight, div.highlighter-rouge code { padding: 0; margin: 0; border: 0; } + +figure.highlight { padding: 0.75rem; margin-top: 0; margin-bottom: 0.75rem; background-color: #f5f6fa; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; } + +figure.highlight pre, figure.highlight code { padding: 0; margin: 0; border: 0; } + +.highlight .table-wrapper { padding: 0; margin: 0; border: 0; box-shadow: none; } + +.highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 11px !important; min-width: 0; padding: 0; background-color: #f5f6fa; border: 0; } + +@media (min-width: 31.25rem) { .highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 12px !important; } } + +.highlight .table-wrapper td.gl { padding-right: 0.75rem; } + +.highlight .table-wrapper pre { margin: 0; line-height: 2; } + +.highlight .c { color: #586e75; } + +.highlight .err { color: #93a1a1; } + +.highlight .g { color: #93a1a1; } + +.highlight .k { color: #859900; } + +.highlight .l { color: #93a1a1; } + +.highlight .n { color: #93a1a1; } + +.highlight .o { color: #859900; } + +.highlight .x { color: #cb4b16; } + +.highlight .p { color: #93a1a1; } + +.highlight .cm { color: #586e75; } + +.highlight .cp { color: #859900; } + +.highlight .c1 { color: #586e75; } + +.highlight .cs { color: #859900; } + +.highlight .gd { color: #2aa198; } + +.highlight .ge { font-style: italic; color: #93a1a1; } + +.highlight .gr { color: #dc322f; } + +.highlight .gh { color: #cb4b16; } + +.highlight .gi { color: #859900; } + +.highlight .go { color: #93a1a1; } + +.highlight .gp { color: #93a1a1; } + +.highlight .gs { font-weight: bold; color: #93a1a1; } + +.highlight .gu { color: #cb4b16; } + +.highlight .gt { color: #93a1a1; } + +.highlight .kc { color: #cb4b16; } + +.highlight .kd { color: #268bd2; } + +.highlight .kn { color: #859900; } + +.highlight .kp { color: #859900; } + +.highlight .kr { color: #268bd2; } + +.highlight .kt { color: #dc322f; } + +.highlight .ld { color: #93a1a1; } + +.highlight .m { color: #2aa198; } + +.highlight .s { color: #2aa198; } + +.highlight .na { color: #555; } + +.highlight .nb { color: #b58900; } + +.highlight .nc { color: #268bd2; } + +.highlight .no { color: #cb4b16; } + +.highlight .nd { color: #268bd2; } + +.highlight .ni { color: #cb4b16; } + +.highlight .ne { color: #cb4b16; } + +.highlight .nf { color: #268bd2; } + +.highlight .nl { color: #555; } + +.highlight .nn { color: #93a1a1; } + +.highlight .nx { color: #555; } + +.highlight .py { color: #93a1a1; } + +.highlight .nt { color: #268bd2; } + +.highlight .nv { color: #268bd2; } + +.highlight .ow { color: #859900; } + +.highlight .w { color: #93a1a1; } + +.highlight .mf { color: #2aa198; } + +.highlight .mh { color: #2aa198; } + +.highlight .mi { color: #2aa198; } + +.highlight .mo { color: #2aa198; } + +.highlight .sb { color: #586e75; } + +.highlight .sc { color: #2aa198; } + +.highlight .sd { color: #93a1a1; } + +.highlight .s2 { color: #2aa198; } + +.highlight .se { color: #cb4b16; } + +.highlight .sh { color: #93a1a1; } + +.highlight .si { color: #2aa198; } + +.highlight .sx { color: #2aa198; } + +.highlight .sr { color: #dc322f; } + +.highlight .s1 { color: #2aa198; } + +.highlight .ss { color: #2aa198; } + +.highlight .bp { color: #268bd2; } + +.highlight .vc { color: #268bd2; } + +.highlight .vg { color: #268bd2; } + +.highlight .vi { color: #268bd2; } + +.highlight .il { color: #2aa198; } + +.code-example { padding: 0.75rem; margin-bottom: 0.75rem; overflow: auto; border: 1px solid #eeebee; border-radius: 4px; } + +.code-example + .highlighter-rouge, .code-example + figure.highlight { position: relative; margin-top: -1rem; border-right: 1px solid #eeebee; border-bottom: 1px solid #eeebee; border-left: 1px solid #eeebee; border-top-left-radius: 0; border-top-right-radius: 0; } + +.text-grey-dk-000 { color: #959396 !important; } + +.text-grey-dk-100 { color: #5c5962 !important; } + +.text-grey-dk-200 { color: #44434d !important; } + +.text-grey-dk-250 { color: #302d36 !important; } + +.text-grey-dk-300 { color: #27262b !important; } + +.text-grey-lt-000 { color: #f5f6fa !important; } + +.text-grey-lt-100 { color: #eeebee !important; } + +.text-grey-lt-200 { color: #ecebed !important; } + +.text-grey-lt-300 { color: #e6e1e8 !important; } + +.text-blue-000 { color: #2c84fa !important; } + +.text-blue-100 { color: #2869e6 !important; } + +.text-blue-200 { color: #264caf !important; } + +.text-blue-300 { color: #183385 !important; } + +.text-green-000 { color: #41d693 !important; } + +.text-green-100 { color: #11b584 !important; } + +.text-green-200 { color: #009c7b !important; } + +.text-green-300 { color: #026e57 !important; } + +.text-purple-000 { color: #7253ed !important; } + +.text-purple-100 { color: #5e41d0 !important; } + +.text-purple-200 { color: #4e26af !important; } + +.text-purple-300 { color: #381885 !important; } + +.text-yellow-000 { color: #ffeb82 !important; } + +.text-yellow-100 { color: #fadf50 !important; } + +.text-yellow-200 { color: #f7d12e !important; } + +.text-yellow-300 { color: #e7af06 !important; } + +.text-red-000 { color: #f77e7e !important; } + +.text-red-100 { color: #f96e65 !important; } + +.text-red-200 { color: #e94c4c !important; } + +.text-red-300 { color: #dd2e2e !important; } + +.bg-grey-dk-000 { background-color: #959396 !important; } + +.bg-grey-dk-100 { background-color: #5c5962 !important; } + +.bg-grey-dk-200 { background-color: #44434d !important; } + +.bg-grey-dk-250 { background-color: #302d36 !important; } + +.bg-grey-dk-300 { background-color: #27262b !important; } + +.bg-grey-lt-000 { background-color: #f5f6fa !important; } + +.bg-grey-lt-100 { background-color: #eeebee !important; } + +.bg-grey-lt-200 { background-color: #ecebed !important; } + +.bg-grey-lt-300 { background-color: #e6e1e8 !important; } + +.bg-blue-000 { background-color: #2c84fa !important; } + +.bg-blue-100 { background-color: #2869e6 !important; } + +.bg-blue-200 { background-color: #264caf !important; } + +.bg-blue-300 { background-color: #183385 !important; } + +.bg-green-000 { background-color: #41d693 !important; } + +.bg-green-100 { background-color: #11b584 !important; } + +.bg-green-200 { background-color: #009c7b !important; } + +.bg-green-300 { background-color: #026e57 !important; } + +.bg-purple-000 { background-color: #7253ed !important; } + +.bg-purple-100 { background-color: #5e41d0 !important; } + +.bg-purple-200 { background-color: #4e26af !important; } + +.bg-purple-300 { background-color: #381885 !important; } + +.bg-yellow-000 { background-color: #ffeb82 !important; } + +.bg-yellow-100 { background-color: #fadf50 !important; } + +.bg-yellow-200 { background-color: #f7d12e !important; } + +.bg-yellow-300 { background-color: #e7af06 !important; } + +.bg-red-000 { background-color: #f77e7e !important; } + +.bg-red-100 { background-color: #f96e65 !important; } + +.bg-red-200 { background-color: #e94c4c !important; } + +.bg-red-300 { background-color: #dd2e2e !important; } + +.d-block { display: block !important; } + +.d-flex { display: flex !important; } + +.d-inline { display: inline !important; } + +.d-inline-block { display: inline-block !important; } + +.d-none { display: none !important; } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +.float-left { float: left !important; } + +.float-right { float: right !important; } + +.flex-justify-start { justify-content: flex-start !important; } + +.flex-justify-end { justify-content: flex-end !important; } + +.flex-justify-between { justify-content: space-between !important; } + +.flex-justify-around { justify-content: space-around !important; } + +.v-align-baseline { vertical-align: baseline !important; } + +.v-align-bottom { vertical-align: bottom !important; } + +.v-align-middle { vertical-align: middle !important; } + +.v-align-text-bottom { vertical-align: text-bottom !important; } + +.v-align-text-top { vertical-align: text-top !important; } + +.v-align-top { vertical-align: top !important; } + +.fs-1 { font-size: 9px !important; } + +@media (min-width: 31.25rem) { .fs-1 { font-size: 10px !important; } } + +.fs-2 { font-size: 11px !important; } + +@media (min-width: 31.25rem) { .fs-2 { font-size: 12px !important; } } + +.fs-3 { font-size: 12px !important; } + +@media (min-width: 31.25rem) { .fs-3 { font-size: 14px !important; } } + +.fs-4 { font-size: 14px !important; } + +@media (min-width: 31.25rem) { .fs-4 { font-size: 16px !important; } } + +.fs-5 { font-size: 16px !important; } + +@media (min-width: 31.25rem) { .fs-5 { font-size: 18px !important; } } + +.fs-6 { font-size: 18px !important; } + +@media (min-width: 31.25rem) { .fs-6 { font-size: 24px !important; line-height: 1.25; } } + +.fs-7 { font-size: 24px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-7 { font-size: 32px !important; } } + +.fs-8 { font-size: 32px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-8 { font-size: 36px !important; } } + +.fs-9 { font-size: 36px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-9 { font-size: 42px !important; } } + +.fs-10 { font-size: 42px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-10 { font-size: 48px !important; } } + +.fw-300 { font-weight: 300 !important; } + +.fw-400 { font-weight: 400 !important; } + +.fw-500 { font-weight: 500 !important; } + +.fw-700 { font-weight: 700 !important; } + +.lh-0 { line-height: 0 !important; } + +.lh-default { line-height: 1.4; } + +.lh-tight { line-height: 1.25; } + +.ls-5 { letter-spacing: 0.05em !important; } + +.ls-10 { letter-spacing: 0.1em !important; } + +.ls-0 { letter-spacing: 0 !important; } + +.text-uppercase { text-transform: uppercase !important; } + +.list-style-none { padding: 0 !important; margin: 0 !important; list-style: none !important; } + +.list-style-none li::before { display: none !important; } + +.mx-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-0 { margin: 0 !important; } + +.mt-0 { margin-top: 0 !important; } + +.mr-0 { margin-right: 0 !important; } + +.mb-0 { margin-bottom: 0 !important; } + +.ml-0 { margin-left: 0 !important; } + +.mx-0 { margin-right: 0 !important; margin-left: 0 !important; } + +.my-0 { margin-top: 0 !important; margin-bottom: 0 !important; } + +.mxn-0 { margin-right: -0 !important; margin-left: -0 !important; } + +.mx-0-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-1 { margin: 0.25rem !important; } + +.mt-1 { margin-top: 0.25rem !important; } + +.mr-1 { margin-right: 0.25rem !important; } + +.mb-1 { margin-bottom: 0.25rem !important; } + +.ml-1 { margin-left: 0.25rem !important; } + +.mx-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } + +.my-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } + +.mxn-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } + +.mx-1-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-2 { margin: 0.5rem !important; } + +.mt-2 { margin-top: 0.5rem !important; } + +.mr-2 { margin-right: 0.5rem !important; } + +.mb-2 { margin-bottom: 0.5rem !important; } + +.ml-2 { margin-left: 0.5rem !important; } + +.mx-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } + +.my-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } + +.mxn-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } + +.mx-2-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-3 { margin: 0.75rem !important; } + +.mt-3 { margin-top: 0.75rem !important; } + +.mr-3 { margin-right: 0.75rem !important; } + +.mb-3 { margin-bottom: 0.75rem !important; } + +.ml-3 { margin-left: 0.75rem !important; } + +.mx-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } + +.my-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } + +.mxn-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } + +.mx-3-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-4 { margin: 1rem !important; } + +.mt-4 { margin-top: 1rem !important; } + +.mr-4 { margin-right: 1rem !important; } + +.mb-4 { margin-bottom: 1rem !important; } + +.ml-4 { margin-left: 1rem !important; } + +.mx-4 { margin-right: 1rem !important; margin-left: 1rem !important; } + +.my-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } + +.mxn-4 { margin-right: -1rem !important; margin-left: -1rem !important; } + +.mx-4-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-5 { margin: 1.5rem !important; } + +.mt-5 { margin-top: 1.5rem !important; } + +.mr-5 { margin-right: 1.5rem !important; } + +.mb-5 { margin-bottom: 1.5rem !important; } + +.ml-5 { margin-left: 1.5rem !important; } + +.mx-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } + +.my-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } + +.mxn-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } + +.mx-5-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-6 { margin: 2rem !important; } + +.mt-6 { margin-top: 2rem !important; } + +.mr-6 { margin-right: 2rem !important; } + +.mb-6 { margin-bottom: 2rem !important; } + +.ml-6 { margin-left: 2rem !important; } + +.mx-6 { margin-right: 2rem !important; margin-left: 2rem !important; } + +.my-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } + +.mxn-6 { margin-right: -2rem !important; margin-left: -2rem !important; } + +.mx-6-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-7 { margin: 2.5rem !important; } + +.mt-7 { margin-top: 2.5rem !important; } + +.mr-7 { margin-right: 2.5rem !important; } + +.mb-7 { margin-bottom: 2.5rem !important; } + +.ml-7 { margin-left: 2.5rem !important; } + +.mx-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } + +.my-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } + +.mxn-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } + +.mx-7-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-8 { margin: 3rem !important; } + +.mt-8 { margin-top: 3rem !important; } + +.mr-8 { margin-right: 3rem !important; } + +.mb-8 { margin-bottom: 3rem !important; } + +.ml-8 { margin-left: 3rem !important; } + +.mx-8 { margin-right: 3rem !important; margin-left: 3rem !important; } + +.my-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } + +.mxn-8 { margin-right: -3rem !important; margin-left: -3rem !important; } + +.mx-8-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-9 { margin: 3.5rem !important; } + +.mt-9 { margin-top: 3.5rem !important; } + +.mr-9 { margin-right: 3.5rem !important; } + +.mb-9 { margin-bottom: 3.5rem !important; } + +.ml-9 { margin-left: 3.5rem !important; } + +.mx-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } + +.my-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } + +.mxn-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } + +.mx-9-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-10 { margin: 4rem !important; } + +.mt-10 { margin-top: 4rem !important; } + +.mr-10 { margin-right: 4rem !important; } + +.mb-10 { margin-bottom: 4rem !important; } + +.ml-10 { margin-left: 4rem !important; } + +.mx-10 { margin-right: 4rem !important; margin-left: 4rem !important; } + +.my-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } + +.mxn-10 { margin-right: -4rem !important; margin-left: -4rem !important; } + +.mx-10-auto { margin-right: auto !important; margin-left: auto !important; } + +@media (min-width: 20rem) { .m-xs-0 { margin: 0 !important; } .mt-xs-0 { margin-top: 0 !important; } .mr-xs-0 { margin-right: 0 !important; } .mb-xs-0 { margin-bottom: 0 !important; } .ml-xs-0 { margin-left: 0 !important; } .mx-xs-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xs-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xs-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 20rem) { .m-xs-1 { margin: 0.25rem !important; } .mt-xs-1 { margin-top: 0.25rem !important; } .mr-xs-1 { margin-right: 0.25rem !important; } .mb-xs-1 { margin-bottom: 0.25rem !important; } .ml-xs-1 { margin-left: 0.25rem !important; } .mx-xs-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xs-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xs-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 20rem) { .m-xs-2 { margin: 0.5rem !important; } .mt-xs-2 { margin-top: 0.5rem !important; } .mr-xs-2 { margin-right: 0.5rem !important; } .mb-xs-2 { margin-bottom: 0.5rem !important; } .ml-xs-2 { margin-left: 0.5rem !important; } .mx-xs-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xs-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xs-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-3 { margin: 0.75rem !important; } .mt-xs-3 { margin-top: 0.75rem !important; } .mr-xs-3 { margin-right: 0.75rem !important; } .mb-xs-3 { margin-bottom: 0.75rem !important; } .ml-xs-3 { margin-left: 0.75rem !important; } .mx-xs-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xs-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xs-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 20rem) { .m-xs-4 { margin: 1rem !important; } .mt-xs-4 { margin-top: 1rem !important; } .mr-xs-4 { margin-right: 1rem !important; } .mb-xs-4 { margin-bottom: 1rem !important; } .ml-xs-4 { margin-left: 1rem !important; } .mx-xs-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xs-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xs-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 20rem) { .m-xs-5 { margin: 1.5rem !important; } .mt-xs-5 { margin-top: 1.5rem !important; } .mr-xs-5 { margin-right: 1.5rem !important; } .mb-xs-5 { margin-bottom: 1.5rem !important; } .ml-xs-5 { margin-left: 1.5rem !important; } .mx-xs-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xs-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xs-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-6 { margin: 2rem !important; } .mt-xs-6 { margin-top: 2rem !important; } .mr-xs-6 { margin-right: 2rem !important; } .mb-xs-6 { margin-bottom: 2rem !important; } .ml-xs-6 { margin-left: 2rem !important; } .mx-xs-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xs-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xs-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 20rem) { .m-xs-7 { margin: 2.5rem !important; } .mt-xs-7 { margin-top: 2.5rem !important; } .mr-xs-7 { margin-right: 2.5rem !important; } .mb-xs-7 { margin-bottom: 2.5rem !important; } .ml-xs-7 { margin-left: 2.5rem !important; } .mx-xs-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xs-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xs-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-8 { margin: 3rem !important; } .mt-xs-8 { margin-top: 3rem !important; } .mr-xs-8 { margin-right: 3rem !important; } .mb-xs-8 { margin-bottom: 3rem !important; } .ml-xs-8 { margin-left: 3rem !important; } .mx-xs-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xs-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xs-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 20rem) { .m-xs-9 { margin: 3.5rem !important; } .mt-xs-9 { margin-top: 3.5rem !important; } .mr-xs-9 { margin-right: 3.5rem !important; } .mb-xs-9 { margin-bottom: 3.5rem !important; } .ml-xs-9 { margin-left: 3.5rem !important; } .mx-xs-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xs-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xs-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-10 { margin: 4rem !important; } .mt-xs-10 { margin-top: 4rem !important; } .mr-xs-10 { margin-right: 4rem !important; } .mb-xs-10 { margin-bottom: 4rem !important; } .ml-xs-10 { margin-left: 4rem !important; } .mx-xs-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xs-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xs-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-0 { margin: 0 !important; } .mt-sm-0 { margin-top: 0 !important; } .mr-sm-0 { margin-right: 0 !important; } .mb-sm-0 { margin-bottom: 0 !important; } .ml-sm-0 { margin-left: 0 !important; } .mx-sm-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-sm-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-sm-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 31.25rem) { .m-sm-1 { margin: 0.25rem !important; } .mt-sm-1 { margin-top: 0.25rem !important; } .mr-sm-1 { margin-right: 0.25rem !important; } .mb-sm-1 { margin-bottom: 0.25rem !important; } .ml-sm-1 { margin-left: 0.25rem !important; } .mx-sm-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-sm-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-sm-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-2 { margin: 0.5rem !important; } .mt-sm-2 { margin-top: 0.5rem !important; } .mr-sm-2 { margin-right: 0.5rem !important; } .mb-sm-2 { margin-bottom: 0.5rem !important; } .ml-sm-2 { margin-left: 0.5rem !important; } .mx-sm-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-sm-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-sm-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-3 { margin: 0.75rem !important; } .mt-sm-3 { margin-top: 0.75rem !important; } .mr-sm-3 { margin-right: 0.75rem !important; } .mb-sm-3 { margin-bottom: 0.75rem !important; } .ml-sm-3 { margin-left: 0.75rem !important; } .mx-sm-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-sm-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-sm-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-4 { margin: 1rem !important; } .mt-sm-4 { margin-top: 1rem !important; } .mr-sm-4 { margin-right: 1rem !important; } .mb-sm-4 { margin-bottom: 1rem !important; } .ml-sm-4 { margin-left: 1rem !important; } .mx-sm-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-sm-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-sm-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-5 { margin: 1.5rem !important; } .mt-sm-5 { margin-top: 1.5rem !important; } .mr-sm-5 { margin-right: 1.5rem !important; } .mb-sm-5 { margin-bottom: 1.5rem !important; } .ml-sm-5 { margin-left: 1.5rem !important; } .mx-sm-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-sm-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-sm-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-6 { margin: 2rem !important; } .mt-sm-6 { margin-top: 2rem !important; } .mr-sm-6 { margin-right: 2rem !important; } .mb-sm-6 { margin-bottom: 2rem !important; } .ml-sm-6 { margin-left: 2rem !important; } .mx-sm-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-sm-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-sm-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-7 { margin: 2.5rem !important; } .mt-sm-7 { margin-top: 2.5rem !important; } .mr-sm-7 { margin-right: 2.5rem !important; } .mb-sm-7 { margin-bottom: 2.5rem !important; } .ml-sm-7 { margin-left: 2.5rem !important; } .mx-sm-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-sm-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-sm-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-8 { margin: 3rem !important; } .mt-sm-8 { margin-top: 3rem !important; } .mr-sm-8 { margin-right: 3rem !important; } .mb-sm-8 { margin-bottom: 3rem !important; } .ml-sm-8 { margin-left: 3rem !important; } .mx-sm-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-sm-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-sm-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-9 { margin: 3.5rem !important; } .mt-sm-9 { margin-top: 3.5rem !important; } .mr-sm-9 { margin-right: 3.5rem !important; } .mb-sm-9 { margin-bottom: 3.5rem !important; } .ml-sm-9 { margin-left: 3.5rem !important; } .mx-sm-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-sm-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-sm-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-10 { margin: 4rem !important; } .mt-sm-10 { margin-top: 4rem !important; } .mr-sm-10 { margin-right: 4rem !important; } .mb-sm-10 { margin-bottom: 4rem !important; } .ml-sm-10 { margin-left: 4rem !important; } .mx-sm-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-sm-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-sm-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 50rem) { .m-md-0 { margin: 0 !important; } .mt-md-0 { margin-top: 0 !important; } .mr-md-0 { margin-right: 0 !important; } .mb-md-0 { margin-bottom: 0 !important; } .ml-md-0 { margin-left: 0 !important; } .mx-md-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-md-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-md-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 50rem) { .m-md-1 { margin: 0.25rem !important; } .mt-md-1 { margin-top: 0.25rem !important; } .mr-md-1 { margin-right: 0.25rem !important; } .mb-md-1 { margin-bottom: 0.25rem !important; } .ml-md-1 { margin-left: 0.25rem !important; } .mx-md-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-md-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-md-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 50rem) { .m-md-2 { margin: 0.5rem !important; } .mt-md-2 { margin-top: 0.5rem !important; } .mr-md-2 { margin-right: 0.5rem !important; } .mb-md-2 { margin-bottom: 0.5rem !important; } .ml-md-2 { margin-left: 0.5rem !important; } .mx-md-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-md-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-md-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 50rem) { .m-md-3 { margin: 0.75rem !important; } .mt-md-3 { margin-top: 0.75rem !important; } .mr-md-3 { margin-right: 0.75rem !important; } .mb-md-3 { margin-bottom: 0.75rem !important; } .ml-md-3 { margin-left: 0.75rem !important; } .mx-md-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-md-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-md-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 50rem) { .m-md-4 { margin: 1rem !important; } .mt-md-4 { margin-top: 1rem !important; } .mr-md-4 { margin-right: 1rem !important; } .mb-md-4 { margin-bottom: 1rem !important; } .ml-md-4 { margin-left: 1rem !important; } .mx-md-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-md-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-md-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 50rem) { .m-md-5 { margin: 1.5rem !important; } .mt-md-5 { margin-top: 1.5rem !important; } .mr-md-5 { margin-right: 1.5rem !important; } .mb-md-5 { margin-bottom: 1.5rem !important; } .ml-md-5 { margin-left: 1.5rem !important; } .mx-md-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-md-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-md-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 50rem) { .m-md-6 { margin: 2rem !important; } .mt-md-6 { margin-top: 2rem !important; } .mr-md-6 { margin-right: 2rem !important; } .mb-md-6 { margin-bottom: 2rem !important; } .ml-md-6 { margin-left: 2rem !important; } .mx-md-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-md-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-md-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 50rem) { .m-md-7 { margin: 2.5rem !important; } .mt-md-7 { margin-top: 2.5rem !important; } .mr-md-7 { margin-right: 2.5rem !important; } .mb-md-7 { margin-bottom: 2.5rem !important; } .ml-md-7 { margin-left: 2.5rem !important; } .mx-md-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-md-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-md-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 50rem) { .m-md-8 { margin: 3rem !important; } .mt-md-8 { margin-top: 3rem !important; } .mr-md-8 { margin-right: 3rem !important; } .mb-md-8 { margin-bottom: 3rem !important; } .ml-md-8 { margin-left: 3rem !important; } .mx-md-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-md-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-md-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 50rem) { .m-md-9 { margin: 3.5rem !important; } .mt-md-9 { margin-top: 3.5rem !important; } .mr-md-9 { margin-right: 3.5rem !important; } .mb-md-9 { margin-bottom: 3.5rem !important; } .ml-md-9 { margin-left: 3.5rem !important; } .mx-md-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-md-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-md-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 50rem) { .m-md-10 { margin: 4rem !important; } .mt-md-10 { margin-top: 4rem !important; } .mr-md-10 { margin-right: 4rem !important; } .mb-md-10 { margin-bottom: 4rem !important; } .ml-md-10 { margin-left: 4rem !important; } .mx-md-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-md-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-md-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-0 { margin: 0 !important; } .mt-lg-0 { margin-top: 0 !important; } .mr-lg-0 { margin-right: 0 !important; } .mb-lg-0 { margin-bottom: 0 !important; } .ml-lg-0 { margin-left: 0 !important; } .mx-lg-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-lg-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-lg-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 66.5rem) { .m-lg-1 { margin: 0.25rem !important; } .mt-lg-1 { margin-top: 0.25rem !important; } .mr-lg-1 { margin-right: 0.25rem !important; } .mb-lg-1 { margin-bottom: 0.25rem !important; } .ml-lg-1 { margin-left: 0.25rem !important; } .mx-lg-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-lg-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-lg-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-2 { margin: 0.5rem !important; } .mt-lg-2 { margin-top: 0.5rem !important; } .mr-lg-2 { margin-right: 0.5rem !important; } .mb-lg-2 { margin-bottom: 0.5rem !important; } .ml-lg-2 { margin-left: 0.5rem !important; } .mx-lg-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-lg-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-lg-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-3 { margin: 0.75rem !important; } .mt-lg-3 { margin-top: 0.75rem !important; } .mr-lg-3 { margin-right: 0.75rem !important; } .mb-lg-3 { margin-bottom: 0.75rem !important; } .ml-lg-3 { margin-left: 0.75rem !important; } .mx-lg-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-lg-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-lg-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-4 { margin: 1rem !important; } .mt-lg-4 { margin-top: 1rem !important; } .mr-lg-4 { margin-right: 1rem !important; } .mb-lg-4 { margin-bottom: 1rem !important; } .ml-lg-4 { margin-left: 1rem !important; } .mx-lg-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-lg-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-lg-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-5 { margin: 1.5rem !important; } .mt-lg-5 { margin-top: 1.5rem !important; } .mr-lg-5 { margin-right: 1.5rem !important; } .mb-lg-5 { margin-bottom: 1.5rem !important; } .ml-lg-5 { margin-left: 1.5rem !important; } .mx-lg-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-lg-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-lg-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-6 { margin: 2rem !important; } .mt-lg-6 { margin-top: 2rem !important; } .mr-lg-6 { margin-right: 2rem !important; } .mb-lg-6 { margin-bottom: 2rem !important; } .ml-lg-6 { margin-left: 2rem !important; } .mx-lg-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-lg-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-lg-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-7 { margin: 2.5rem !important; } .mt-lg-7 { margin-top: 2.5rem !important; } .mr-lg-7 { margin-right: 2.5rem !important; } .mb-lg-7 { margin-bottom: 2.5rem !important; } .ml-lg-7 { margin-left: 2.5rem !important; } .mx-lg-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-lg-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-lg-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-8 { margin: 3rem !important; } .mt-lg-8 { margin-top: 3rem !important; } .mr-lg-8 { margin-right: 3rem !important; } .mb-lg-8 { margin-bottom: 3rem !important; } .ml-lg-8 { margin-left: 3rem !important; } .mx-lg-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-lg-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-lg-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-9 { margin: 3.5rem !important; } .mt-lg-9 { margin-top: 3.5rem !important; } .mr-lg-9 { margin-right: 3.5rem !important; } .mb-lg-9 { margin-bottom: 3.5rem !important; } .ml-lg-9 { margin-left: 3.5rem !important; } .mx-lg-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-lg-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-lg-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-10 { margin: 4rem !important; } .mt-lg-10 { margin-top: 4rem !important; } .mr-lg-10 { margin-right: 4rem !important; } .mb-lg-10 { margin-bottom: 4rem !important; } .ml-lg-10 { margin-left: 4rem !important; } .mx-lg-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-lg-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-lg-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-0 { margin: 0 !important; } .mt-xl-0 { margin-top: 0 !important; } .mr-xl-0 { margin-right: 0 !important; } .mb-xl-0 { margin-bottom: 0 !important; } .ml-xl-0 { margin-left: 0 !important; } .mx-xl-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xl-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xl-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 87.5rem) { .m-xl-1 { margin: 0.25rem !important; } .mt-xl-1 { margin-top: 0.25rem !important; } .mr-xl-1 { margin-right: 0.25rem !important; } .mb-xl-1 { margin-bottom: 0.25rem !important; } .ml-xl-1 { margin-left: 0.25rem !important; } .mx-xl-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xl-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xl-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-2 { margin: 0.5rem !important; } .mt-xl-2 { margin-top: 0.5rem !important; } .mr-xl-2 { margin-right: 0.5rem !important; } .mb-xl-2 { margin-bottom: 0.5rem !important; } .ml-xl-2 { margin-left: 0.5rem !important; } .mx-xl-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xl-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xl-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-3 { margin: 0.75rem !important; } .mt-xl-3 { margin-top: 0.75rem !important; } .mr-xl-3 { margin-right: 0.75rem !important; } .mb-xl-3 { margin-bottom: 0.75rem !important; } .ml-xl-3 { margin-left: 0.75rem !important; } .mx-xl-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xl-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xl-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-4 { margin: 1rem !important; } .mt-xl-4 { margin-top: 1rem !important; } .mr-xl-4 { margin-right: 1rem !important; } .mb-xl-4 { margin-bottom: 1rem !important; } .ml-xl-4 { margin-left: 1rem !important; } .mx-xl-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xl-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xl-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-5 { margin: 1.5rem !important; } .mt-xl-5 { margin-top: 1.5rem !important; } .mr-xl-5 { margin-right: 1.5rem !important; } .mb-xl-5 { margin-bottom: 1.5rem !important; } .ml-xl-5 { margin-left: 1.5rem !important; } .mx-xl-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xl-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xl-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-6 { margin: 2rem !important; } .mt-xl-6 { margin-top: 2rem !important; } .mr-xl-6 { margin-right: 2rem !important; } .mb-xl-6 { margin-bottom: 2rem !important; } .ml-xl-6 { margin-left: 2rem !important; } .mx-xl-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xl-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xl-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-7 { margin: 2.5rem !important; } .mt-xl-7 { margin-top: 2.5rem !important; } .mr-xl-7 { margin-right: 2.5rem !important; } .mb-xl-7 { margin-bottom: 2.5rem !important; } .ml-xl-7 { margin-left: 2.5rem !important; } .mx-xl-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xl-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xl-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-8 { margin: 3rem !important; } .mt-xl-8 { margin-top: 3rem !important; } .mr-xl-8 { margin-right: 3rem !important; } .mb-xl-8 { margin-bottom: 3rem !important; } .ml-xl-8 { margin-left: 3rem !important; } .mx-xl-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xl-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xl-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-9 { margin: 3.5rem !important; } .mt-xl-9 { margin-top: 3.5rem !important; } .mr-xl-9 { margin-right: 3.5rem !important; } .mb-xl-9 { margin-bottom: 3.5rem !important; } .ml-xl-9 { margin-left: 3.5rem !important; } .mx-xl-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xl-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xl-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-10 { margin: 4rem !important; } .mt-xl-10 { margin-top: 4rem !important; } .mr-xl-10 { margin-right: 4rem !important; } .mb-xl-10 { margin-bottom: 4rem !important; } .ml-xl-10 { margin-left: 4rem !important; } .mx-xl-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xl-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xl-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +.p-0 { padding: 0 !important; } + +.pt-0 { padding-top: 0 !important; } + +.pr-0 { padding-right: 0 !important; } + +.pb-0 { padding-bottom: 0 !important; } + +.pl-0 { padding-left: 0 !important; } + +.px-0 { padding-right: 0 !important; padding-left: 0 !important; } + +.py-0 { padding-top: 0 !important; padding-bottom: 0 !important; } + +.p-1 { padding: 0.25rem !important; } + +.pt-1 { padding-top: 0.25rem !important; } + +.pr-1 { padding-right: 0.25rem !important; } + +.pb-1 { padding-bottom: 0.25rem !important; } + +.pl-1 { padding-left: 0.25rem !important; } + +.px-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } + +.py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } + +.p-2 { padding: 0.5rem !important; } + +.pt-2 { padding-top: 0.5rem !important; } + +.pr-2 { padding-right: 0.5rem !important; } + +.pb-2 { padding-bottom: 0.5rem !important; } + +.pl-2 { padding-left: 0.5rem !important; } + +.px-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } + +.py-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } + +.p-3 { padding: 0.75rem !important; } + +.pt-3 { padding-top: 0.75rem !important; } + +.pr-3 { padding-right: 0.75rem !important; } + +.pb-3 { padding-bottom: 0.75rem !important; } + +.pl-3 { padding-left: 0.75rem !important; } + +.px-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } + +.py-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } + +.p-4 { padding: 1rem !important; } + +.pt-4 { padding-top: 1rem !important; } + +.pr-4 { padding-right: 1rem !important; } + +.pb-4 { padding-bottom: 1rem !important; } + +.pl-4 { padding-left: 1rem !important; } + +.px-4 { padding-right: 1rem !important; padding-left: 1rem !important; } + +.py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } + +.p-5 { padding: 1.5rem !important; } + +.pt-5 { padding-top: 1.5rem !important; } + +.pr-5 { padding-right: 1.5rem !important; } + +.pb-5 { padding-bottom: 1.5rem !important; } + +.pl-5 { padding-left: 1.5rem !important; } + +.px-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } + +.py-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } + +.p-6 { padding: 2rem !important; } + +.pt-6 { padding-top: 2rem !important; } + +.pr-6 { padding-right: 2rem !important; } + +.pb-6 { padding-bottom: 2rem !important; } + +.pl-6 { padding-left: 2rem !important; } + +.px-6 { padding-right: 2rem !important; padding-left: 2rem !important; } + +.py-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } + +.p-7 { padding: 2.5rem !important; } + +.pt-7 { padding-top: 2.5rem !important; } + +.pr-7 { padding-right: 2.5rem !important; } + +.pb-7 { padding-bottom: 2.5rem !important; } + +.pl-7 { padding-left: 2.5rem !important; } + +.px-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } + +.py-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } + +.p-8 { padding: 3rem !important; } + +.pt-8 { padding-top: 3rem !important; } + +.pr-8 { padding-right: 3rem !important; } + +.pb-8 { padding-bottom: 3rem !important; } + +.pl-8 { padding-left: 3rem !important; } + +.px-8 { padding-right: 3rem !important; padding-left: 3rem !important; } + +.py-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } + +.p-9 { padding: 3.5rem !important; } + +.pt-9 { padding-top: 3.5rem !important; } + +.pr-9 { padding-right: 3.5rem !important; } + +.pb-9 { padding-bottom: 3.5rem !important; } + +.pl-9 { padding-left: 3.5rem !important; } + +.px-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } + +.py-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } + +.p-10 { padding: 4rem !important; } + +.pt-10 { padding-top: 4rem !important; } + +.pr-10 { padding-right: 4rem !important; } + +.pb-10 { padding-bottom: 4rem !important; } + +.pl-10 { padding-left: 4rem !important; } + +.px-10 { padding-right: 4rem !important; padding-left: 4rem !important; } + +.py-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } + +@media (min-width: 20rem) { .p-xs-0 { padding: 0 !important; } .pt-xs-0 { padding-top: 0 !important; } .pr-xs-0 { padding-right: 0 !important; } .pb-xs-0 { padding-bottom: 0 !important; } .pl-xs-0 { padding-left: 0 !important; } .px-xs-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xs-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xs-1 { padding: 0.25rem !important; } .pt-xs-1 { padding-top: 0.25rem !important; } .pr-xs-1 { padding-right: 0.25rem !important; } .pb-xs-1 { padding-bottom: 0.25rem !important; } .pl-xs-1 { padding-left: 0.25rem !important; } .px-xs-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xs-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xs-2 { padding: 0.5rem !important; } .pt-xs-2 { padding-top: 0.5rem !important; } .pr-xs-2 { padding-right: 0.5rem !important; } .pb-xs-2 { padding-bottom: 0.5rem !important; } .pl-xs-2 { padding-left: 0.5rem !important; } .px-xs-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xs-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xs-3 { padding: 0.75rem !important; } .pt-xs-3 { padding-top: 0.75rem !important; } .pr-xs-3 { padding-right: 0.75rem !important; } .pb-xs-3 { padding-bottom: 0.75rem !important; } .pl-xs-3 { padding-left: 0.75rem !important; } .px-xs-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xs-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xs-4 { padding: 1rem !important; } .pt-xs-4 { padding-top: 1rem !important; } .pr-xs-4 { padding-right: 1rem !important; } .pb-xs-4 { padding-bottom: 1rem !important; } .pl-xs-4 { padding-left: 1rem !important; } .px-xs-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xs-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xs-5 { padding: 1.5rem !important; } .pt-xs-5 { padding-top: 1.5rem !important; } .pr-xs-5 { padding-right: 1.5rem !important; } .pb-xs-5 { padding-bottom: 1.5rem !important; } .pl-xs-5 { padding-left: 1.5rem !important; } .px-xs-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xs-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xs-6 { padding: 2rem !important; } .pt-xs-6 { padding-top: 2rem !important; } .pr-xs-6 { padding-right: 2rem !important; } .pb-xs-6 { padding-bottom: 2rem !important; } .pl-xs-6 { padding-left: 2rem !important; } .px-xs-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xs-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xs-7 { padding: 2.5rem !important; } .pt-xs-7 { padding-top: 2.5rem !important; } .pr-xs-7 { padding-right: 2.5rem !important; } .pb-xs-7 { padding-bottom: 2.5rem !important; } .pl-xs-7 { padding-left: 2.5rem !important; } .px-xs-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xs-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xs-8 { padding: 3rem !important; } .pt-xs-8 { padding-top: 3rem !important; } .pr-xs-8 { padding-right: 3rem !important; } .pb-xs-8 { padding-bottom: 3rem !important; } .pl-xs-8 { padding-left: 3rem !important; } .px-xs-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xs-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xs-9 { padding: 3.5rem !important; } .pt-xs-9 { padding-top: 3.5rem !important; } .pr-xs-9 { padding-right: 3.5rem !important; } .pb-xs-9 { padding-bottom: 3.5rem !important; } .pl-xs-9 { padding-left: 3.5rem !important; } .px-xs-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xs-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xs-10 { padding: 4rem !important; } .pt-xs-10 { padding-top: 4rem !important; } .pr-xs-10 { padding-right: 4rem !important; } .pb-xs-10 { padding-bottom: 4rem !important; } .pl-xs-10 { padding-left: 4rem !important; } .px-xs-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xs-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 31.25rem) { .p-sm-0 { padding: 0 !important; } .pt-sm-0 { padding-top: 0 !important; } .pr-sm-0 { padding-right: 0 !important; } .pb-sm-0 { padding-bottom: 0 !important; } .pl-sm-0 { padding-left: 0 !important; } .px-sm-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-sm-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-sm-1 { padding: 0.25rem !important; } .pt-sm-1 { padding-top: 0.25rem !important; } .pr-sm-1 { padding-right: 0.25rem !important; } .pb-sm-1 { padding-bottom: 0.25rem !important; } .pl-sm-1 { padding-left: 0.25rem !important; } .px-sm-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-sm-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-sm-2 { padding: 0.5rem !important; } .pt-sm-2 { padding-top: 0.5rem !important; } .pr-sm-2 { padding-right: 0.5rem !important; } .pb-sm-2 { padding-bottom: 0.5rem !important; } .pl-sm-2 { padding-left: 0.5rem !important; } .px-sm-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-sm-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-sm-3 { padding: 0.75rem !important; } .pt-sm-3 { padding-top: 0.75rem !important; } .pr-sm-3 { padding-right: 0.75rem !important; } .pb-sm-3 { padding-bottom: 0.75rem !important; } .pl-sm-3 { padding-left: 0.75rem !important; } .px-sm-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-sm-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-sm-4 { padding: 1rem !important; } .pt-sm-4 { padding-top: 1rem !important; } .pr-sm-4 { padding-right: 1rem !important; } .pb-sm-4 { padding-bottom: 1rem !important; } .pl-sm-4 { padding-left: 1rem !important; } .px-sm-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-sm-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-sm-5 { padding: 1.5rem !important; } .pt-sm-5 { padding-top: 1.5rem !important; } .pr-sm-5 { padding-right: 1.5rem !important; } .pb-sm-5 { padding-bottom: 1.5rem !important; } .pl-sm-5 { padding-left: 1.5rem !important; } .px-sm-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-sm-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-sm-6 { padding: 2rem !important; } .pt-sm-6 { padding-top: 2rem !important; } .pr-sm-6 { padding-right: 2rem !important; } .pb-sm-6 { padding-bottom: 2rem !important; } .pl-sm-6 { padding-left: 2rem !important; } .px-sm-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-sm-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-sm-7 { padding: 2.5rem !important; } .pt-sm-7 { padding-top: 2.5rem !important; } .pr-sm-7 { padding-right: 2.5rem !important; } .pb-sm-7 { padding-bottom: 2.5rem !important; } .pl-sm-7 { padding-left: 2.5rem !important; } .px-sm-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-sm-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-sm-8 { padding: 3rem !important; } .pt-sm-8 { padding-top: 3rem !important; } .pr-sm-8 { padding-right: 3rem !important; } .pb-sm-8 { padding-bottom: 3rem !important; } .pl-sm-8 { padding-left: 3rem !important; } .px-sm-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-sm-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-sm-9 { padding: 3.5rem !important; } .pt-sm-9 { padding-top: 3.5rem !important; } .pr-sm-9 { padding-right: 3.5rem !important; } .pb-sm-9 { padding-bottom: 3.5rem !important; } .pl-sm-9 { padding-left: 3.5rem !important; } .px-sm-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-sm-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-sm-10 { padding: 4rem !important; } .pt-sm-10 { padding-top: 4rem !important; } .pr-sm-10 { padding-right: 4rem !important; } .pb-sm-10 { padding-bottom: 4rem !important; } .pl-sm-10 { padding-left: 4rem !important; } .px-sm-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-sm-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 50rem) { .p-md-0 { padding: 0 !important; } .pt-md-0 { padding-top: 0 !important; } .pr-md-0 { padding-right: 0 !important; } .pb-md-0 { padding-bottom: 0 !important; } .pl-md-0 { padding-left: 0 !important; } .px-md-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-md-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-md-1 { padding: 0.25rem !important; } .pt-md-1 { padding-top: 0.25rem !important; } .pr-md-1 { padding-right: 0.25rem !important; } .pb-md-1 { padding-bottom: 0.25rem !important; } .pl-md-1 { padding-left: 0.25rem !important; } .px-md-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-md-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-md-2 { padding: 0.5rem !important; } .pt-md-2 { padding-top: 0.5rem !important; } .pr-md-2 { padding-right: 0.5rem !important; } .pb-md-2 { padding-bottom: 0.5rem !important; } .pl-md-2 { padding-left: 0.5rem !important; } .px-md-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-md-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-md-3 { padding: 0.75rem !important; } .pt-md-3 { padding-top: 0.75rem !important; } .pr-md-3 { padding-right: 0.75rem !important; } .pb-md-3 { padding-bottom: 0.75rem !important; } .pl-md-3 { padding-left: 0.75rem !important; } .px-md-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-md-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-md-4 { padding: 1rem !important; } .pt-md-4 { padding-top: 1rem !important; } .pr-md-4 { padding-right: 1rem !important; } .pb-md-4 { padding-bottom: 1rem !important; } .pl-md-4 { padding-left: 1rem !important; } .px-md-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-md-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-md-5 { padding: 1.5rem !important; } .pt-md-5 { padding-top: 1.5rem !important; } .pr-md-5 { padding-right: 1.5rem !important; } .pb-md-5 { padding-bottom: 1.5rem !important; } .pl-md-5 { padding-left: 1.5rem !important; } .px-md-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-md-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-md-6 { padding: 2rem !important; } .pt-md-6 { padding-top: 2rem !important; } .pr-md-6 { padding-right: 2rem !important; } .pb-md-6 { padding-bottom: 2rem !important; } .pl-md-6 { padding-left: 2rem !important; } .px-md-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-md-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-md-7 { padding: 2.5rem !important; } .pt-md-7 { padding-top: 2.5rem !important; } .pr-md-7 { padding-right: 2.5rem !important; } .pb-md-7 { padding-bottom: 2.5rem !important; } .pl-md-7 { padding-left: 2.5rem !important; } .px-md-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-md-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-md-8 { padding: 3rem !important; } .pt-md-8 { padding-top: 3rem !important; } .pr-md-8 { padding-right: 3rem !important; } .pb-md-8 { padding-bottom: 3rem !important; } .pl-md-8 { padding-left: 3rem !important; } .px-md-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-md-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-md-9 { padding: 3.5rem !important; } .pt-md-9 { padding-top: 3.5rem !important; } .pr-md-9 { padding-right: 3.5rem !important; } .pb-md-9 { padding-bottom: 3.5rem !important; } .pl-md-9 { padding-left: 3.5rem !important; } .px-md-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-md-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-md-10 { padding: 4rem !important; } .pt-md-10 { padding-top: 4rem !important; } .pr-md-10 { padding-right: 4rem !important; } .pb-md-10 { padding-bottom: 4rem !important; } .pl-md-10 { padding-left: 4rem !important; } .px-md-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-md-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 66.5rem) { .p-lg-0 { padding: 0 !important; } .pt-lg-0 { padding-top: 0 !important; } .pr-lg-0 { padding-right: 0 !important; } .pb-lg-0 { padding-bottom: 0 !important; } .pl-lg-0 { padding-left: 0 !important; } .px-lg-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-lg-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-lg-1 { padding: 0.25rem !important; } .pt-lg-1 { padding-top: 0.25rem !important; } .pr-lg-1 { padding-right: 0.25rem !important; } .pb-lg-1 { padding-bottom: 0.25rem !important; } .pl-lg-1 { padding-left: 0.25rem !important; } .px-lg-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-lg-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-lg-2 { padding: 0.5rem !important; } .pt-lg-2 { padding-top: 0.5rem !important; } .pr-lg-2 { padding-right: 0.5rem !important; } .pb-lg-2 { padding-bottom: 0.5rem !important; } .pl-lg-2 { padding-left: 0.5rem !important; } .px-lg-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-lg-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-lg-3 { padding: 0.75rem !important; } .pt-lg-3 { padding-top: 0.75rem !important; } .pr-lg-3 { padding-right: 0.75rem !important; } .pb-lg-3 { padding-bottom: 0.75rem !important; } .pl-lg-3 { padding-left: 0.75rem !important; } .px-lg-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-lg-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-lg-4 { padding: 1rem !important; } .pt-lg-4 { padding-top: 1rem !important; } .pr-lg-4 { padding-right: 1rem !important; } .pb-lg-4 { padding-bottom: 1rem !important; } .pl-lg-4 { padding-left: 1rem !important; } .px-lg-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-lg-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-lg-5 { padding: 1.5rem !important; } .pt-lg-5 { padding-top: 1.5rem !important; } .pr-lg-5 { padding-right: 1.5rem !important; } .pb-lg-5 { padding-bottom: 1.5rem !important; } .pl-lg-5 { padding-left: 1.5rem !important; } .px-lg-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-lg-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-lg-6 { padding: 2rem !important; } .pt-lg-6 { padding-top: 2rem !important; } .pr-lg-6 { padding-right: 2rem !important; } .pb-lg-6 { padding-bottom: 2rem !important; } .pl-lg-6 { padding-left: 2rem !important; } .px-lg-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-lg-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-lg-7 { padding: 2.5rem !important; } .pt-lg-7 { padding-top: 2.5rem !important; } .pr-lg-7 { padding-right: 2.5rem !important; } .pb-lg-7 { padding-bottom: 2.5rem !important; } .pl-lg-7 { padding-left: 2.5rem !important; } .px-lg-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-lg-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-lg-8 { padding: 3rem !important; } .pt-lg-8 { padding-top: 3rem !important; } .pr-lg-8 { padding-right: 3rem !important; } .pb-lg-8 { padding-bottom: 3rem !important; } .pl-lg-8 { padding-left: 3rem !important; } .px-lg-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-lg-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-lg-9 { padding: 3.5rem !important; } .pt-lg-9 { padding-top: 3.5rem !important; } .pr-lg-9 { padding-right: 3.5rem !important; } .pb-lg-9 { padding-bottom: 3.5rem !important; } .pl-lg-9 { padding-left: 3.5rem !important; } .px-lg-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-lg-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-lg-10 { padding: 4rem !important; } .pt-lg-10 { padding-top: 4rem !important; } .pr-lg-10 { padding-right: 4rem !important; } .pb-lg-10 { padding-bottom: 4rem !important; } .pl-lg-10 { padding-left: 4rem !important; } .px-lg-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-lg-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 87.5rem) { .p-xl-0 { padding: 0 !important; } .pt-xl-0 { padding-top: 0 !important; } .pr-xl-0 { padding-right: 0 !important; } .pb-xl-0 { padding-bottom: 0 !important; } .pl-xl-0 { padding-left: 0 !important; } .px-xl-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xl-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xl-1 { padding: 0.25rem !important; } .pt-xl-1 { padding-top: 0.25rem !important; } .pr-xl-1 { padding-right: 0.25rem !important; } .pb-xl-1 { padding-bottom: 0.25rem !important; } .pl-xl-1 { padding-left: 0.25rem !important; } .px-xl-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xl-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xl-2 { padding: 0.5rem !important; } .pt-xl-2 { padding-top: 0.5rem !important; } .pr-xl-2 { padding-right: 0.5rem !important; } .pb-xl-2 { padding-bottom: 0.5rem !important; } .pl-xl-2 { padding-left: 0.5rem !important; } .px-xl-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xl-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xl-3 { padding: 0.75rem !important; } .pt-xl-3 { padding-top: 0.75rem !important; } .pr-xl-3 { padding-right: 0.75rem !important; } .pb-xl-3 { padding-bottom: 0.75rem !important; } .pl-xl-3 { padding-left: 0.75rem !important; } .px-xl-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xl-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xl-4 { padding: 1rem !important; } .pt-xl-4 { padding-top: 1rem !important; } .pr-xl-4 { padding-right: 1rem !important; } .pb-xl-4 { padding-bottom: 1rem !important; } .pl-xl-4 { padding-left: 1rem !important; } .px-xl-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xl-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xl-5 { padding: 1.5rem !important; } .pt-xl-5 { padding-top: 1.5rem !important; } .pr-xl-5 { padding-right: 1.5rem !important; } .pb-xl-5 { padding-bottom: 1.5rem !important; } .pl-xl-5 { padding-left: 1.5rem !important; } .px-xl-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xl-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xl-6 { padding: 2rem !important; } .pt-xl-6 { padding-top: 2rem !important; } .pr-xl-6 { padding-right: 2rem !important; } .pb-xl-6 { padding-bottom: 2rem !important; } .pl-xl-6 { padding-left: 2rem !important; } .px-xl-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xl-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xl-7 { padding: 2.5rem !important; } .pt-xl-7 { padding-top: 2.5rem !important; } .pr-xl-7 { padding-right: 2.5rem !important; } .pb-xl-7 { padding-bottom: 2.5rem !important; } .pl-xl-7 { padding-left: 2.5rem !important; } .px-xl-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xl-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xl-8 { padding: 3rem !important; } .pt-xl-8 { padding-top: 3rem !important; } .pr-xl-8 { padding-right: 3rem !important; } .pb-xl-8 { padding-bottom: 3rem !important; } .pl-xl-8 { padding-left: 3rem !important; } .px-xl-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xl-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xl-9 { padding: 3.5rem !important; } .pt-xl-9 { padding-top: 3.5rem !important; } .pr-xl-9 { padding-right: 3.5rem !important; } .pb-xl-9 { padding-bottom: 3.5rem !important; } .pl-xl-9 { padding-left: 3.5rem !important; } .px-xl-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xl-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xl-10 { padding: 4rem !important; } .pt-xl-10 { padding-top: 4rem !important; } .pr-xl-10 { padding-right: 4rem !important; } .pb-xl-10 { padding-bottom: 4rem !important; } .pl-xl-10 { padding-left: 4rem !important; } .px-xl-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xl-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media print { .site-footer, .site-button, #edit-this-page, #back-to-top, .site-nav, .main-header { display: none !important; } .side-bar { width: 100%; height: auto; border-right: 0 !important; } .site-header { border-bottom: 1px solid #eeebee; } .site-title { font-size: 16px !important; font-weight: 700 !important; } .text-small { font-size: 8pt !important; } pre.highlight { border: 1px solid #eeebee; } .main { max-width: none; margin-left: 0; } } + +/*# sourceMappingURL=just-the-docs-light.css.map */ \ No newline at end of file diff --git a/docs/_site/assets/css/just-the-docs-light.css.map b/docs/_site/assets/css/just-the-docs-light.css.map new file mode 100644 index 0000000000000000000000000000000000000000..8bff09b408a55ac26dd175468a6470c9236a5b8e --- /dev/null +++ b/docs/_site/assets/css/just-the-docs-light.css.map @@ -0,0 +1,74 @@ +{ + "version": 3, + "file": "just-the-docs-light.css", + "sources": [ + "just-the-docs-light.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/support.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/_variables.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/_functions.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/mixins/mixins.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_layout.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_buttons.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_typography.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/color_schemes/light.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/modules.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/vendor/normalize.scss/normalize.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/base.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/layout.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/content.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/navigation.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/typography.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/labels.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/buttons.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/search.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/tables.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/code.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/utilities.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_colors.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_layout.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_typography.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_lists.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/utilities/_spacing.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/print.scss", + "vendor/bundle/ruby/2.5.0/gems/just-the-docs-0.3.3/_sass/custom/custom.scss" + ], + "sourcesContent": [ + "\n@import \"./support/support\";\n@import \"./color_schemes/light\";\n@import \"./modules\";\n@import \"./custom/custom\";\n\n\n", + "@import \"./variables\";\n@import \"./functions\";\n@import \"./mixins/mixins\";\n", + "//\n// Typography\n//\n\n$body-font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, \"Helvetica Neue\", Arial, sans-serif !default;\n$mono-font-family: \"SFMono-Regular\", Menlo, Consolas, Monospace !default;\n$root-font-size: 16px !default; // Base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n//\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n//\n\n$font-size-1: 9px !default;\n$font-size-1-sm: 10px !default;\n$font-size-2: 11px !default; //h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 12px !default; //h5\n$font-size-4: 14px !default;\n$font-size-5: 16px !default; //h3\n$font-size-6: 18px !default; //h2\n$font-size-7: 24px !default;\n$font-size-8: 32px !default; //h1\n$font-size-9: 36px !default;\n$font-size-10: 42px !default;\n$font-size-10-sm: 48px !default;\n\n//\n// Colors\n//\n\n$white: #fff !default;\n\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n$body-background-color: $white !default;\n$sidebar-color: $grey-lt-000 !default;\n$search-background-color: $white !default;\n$table-background-color: $white !default;\n$code-background-color: $grey-lt-000 !default;\n$feedback-color: darken($sidebar-color, 3%) !default;\n\n$body-text-color: $grey-dk-100 !default;\n$body-heading-color: $grey-dk-300 !default;\n$search-result-preview-color: $grey-dk-000 !default;\n$nav-child-link-color: $grey-dk-100 !default;\n$link-color: $purple-000 !default;\n$btn-primary-color: $purple-100 !default;\n$base-button-color: #f7f7f7 !default;\n\n//\n// Spacing\n//\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n//\n// Borders\n//\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n//\n// Grid system\n//\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 264px !default;\n$nav-width-md: 248px !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 800px !default;\n$header-height: 60px !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n//\n// Media queries in pixels\n//\n\n$media-queries: (\n xs: 320px,\n sm: 500px,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 1400px,\n) !default;\n", + "@function rem($size, $unit: \"\") {\n $remSize: $size / $root-font-size;\n\n @if ($unit == false) {\n @return #{$remSize};\n } @else {\n @return #{$remSize}rem;\n }\n}\n", + "@import \"./layout\";\n@import \"./buttons\";\n@import \"./typography\";\n", + "// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value != null {\n // Prints a media query based on the value\n @media (min-width: rem($value)) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. \"\n + \"Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n", + "// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n", + "@mixin fs-1 {\n font-size: $font-size-1 !important;\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n font-size: $font-size-2 !important;\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n font-size: $font-size-3 !important;\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n font-size: $font-size-4 !important;\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n font-size: $font-size-5 !important;\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n font-size: $font-size-6 !important;\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n", + "", + "//\n// Import external dependencies\n//\n@import \"./vendor/normalize.scss/normalize.scss\";\n\n//\n// Modules\n//\n@import \"./base\";\n@import \"./layout\";\n@import \"./content\";\n@import \"./navigation\";\n@import \"./typography\";\n@import \"./labels\";\n@import \"./buttons\";\n@import \"./search\";\n@import \"./tables\";\n@import \"./code\";\n@import \"./utilities/utilities\";\n@import \"./print\";\n", + "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n", + "//\n// Base element style overrides\n//\n// stylelint-disable selector-no-type, selector-max-type\n\n* {\n box-sizing: border-box;\n}\n\n::selection {\n color: $white;\n background: $link-color;\n}\n\nhtml {\n @include fs-4;\n scroll-behavior: smooth;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: none;\n background-image: linear-gradient($border-color 0%, $border-color 100%);\n background-repeat: repeat-x;\n background-position: 0 100%;\n background-size: 1px 1px;\n\n &:hover {\n background-image: linear-gradient(\n rgba($link-color, 0.45) 0%,\n rgba($link-color, 0.45) 100%\n );\n background-size: 1px 1px;\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n", + "//\n// The basic two column layout\n//\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-wrap: nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n flex-direction: column;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n}\n\n.main {\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n margin-left: calc(\n (100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}\n );\n }\n}\n\n.main-content-wrap {\n @include container;\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n background-color: $body-background-color;\n border-bottom: $border $border-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n @include container;\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n// stylelint-disable selector-max-type\n\nbody {\n position: relative;\n padding-bottom: $sp-10;\n overflow-y: scroll;\n\n @include mq(md) {\n position: static;\n padding-bottom: 0;\n }\n}\n\n// stylelint-enable selector-max-type\n\n.site-footer {\n @include container;\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n color: $grey-dk-000;\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n", + "@charset \"UTF-8\";\n\n//\n// Styles for rendered markdown in the .main-content container\n//\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list {\n padding-left: 0;\n }\n\n .task-list-item {\n display: flex;\n align-items: center;\n\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n &:first-child {\n margin-top: $sp-2;\n }\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge {\n margin-top: 1em;\n }\n\n + p {\n margin-top: 0;\n }\n }\n}\n", + "//\n// Main nav, breadcrumb, etc...\n//\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n @include fs-4;\n position: relative;\n margin: 0;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding-top: #{$nav-list-item-height-sm / 4};\n padding-right: #{$nav-list-item-height-sm / 4};\n padding-bottom: #{$nav-list-item-height-sm / 4};\n padding-left: #{$nav-list-item-height-sm / 4};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding-top: #{$nav-list-item-height / 4};\n padding-right: #{$nav-list-item-height / 4};\n padding-bottom: #{$nav-list-item-height / 4};\n padding-left: #{$nav-list-item-height / 4};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding-top: $sp-2;\n padding-right: $gutter-spacing-sm;\n padding-bottom: $sp-2;\n padding-left: $gutter-spacing-sm;\n font-weight: 600;\n text-align: end;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n", + "//\n// Typography\n//\n// stylelint-disable primer/selector-no-utility, primer/no-override, selector-no-type, selector-max-type\n\nh1,\n.text-alpha {\n @include fs-8;\n font-weight: 300;\n}\n\nh2,\n.text-beta {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n @include fs-2;\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n color: $grey-dk-200;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n color: $grey-dk-200;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n", + "//\n// Labels (not the form kind)\n//\n\n.label,\n.label-blue {\n display: inline-block;\n padding-top: 0.16em;\n padding-right: 0.56em;\n padding-bottom: 0.16em;\n padding-left: 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n @include fs-2;\n border-radius: 12px;\n}\n\n.label-green {\n background-color: $green-200;\n}\n\n.label-purple {\n background-color: $purple-100;\n}\n\n.label-red {\n background-color: $red-200;\n}\n\n.label-yellow {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n", + "//\n// Buttons and things that look like buttons\n//\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding-top: 0.3em;\n padding-right: 1em;\n padding-bottom: 0.3em;\n padding-left: 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: inset 0 0 0 2px $grey-dk-100, 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-000);\n}\n\n.btn-green {\n @include btn-color($white, $green-100);\n}\n", + "//\n// Search input and autocomplete\n//\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration / 2};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration / 2};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding-top: $sp-2;\n padding-right: $gutter-spacing-sm;\n padding-bottom: $sp-2;\n padding-left: #{$gutter-spacing-sm + $sp-5};\n font-size: 16px;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n padding-left: #{$gutter-spacing + $sp-5};\n font-size: 14px;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration / 2};\n }\n\n &:focus {\n outline: 0;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration / 2};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding-top: $sp-1;\n padding-right: $sp-3;\n padding-bottom: $sp-1;\n padding-left: $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding-top: $sp-2;\n padding-right: $sp-3;\n padding-bottom: $sp-2;\n padding-left: $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 / 2};\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition: opacity ease $transition-duration, width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition: opacity ease $transition-duration, width 0s, height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n", + "//\n// Tables\n//\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n @include fs-3;\n min-width: 120px;\n padding-top: $sp-2;\n padding-right: $sp-3;\n padding-bottom: $sp-2;\n padding-left: $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n", + "//\n// Code and syntax highlighting\n//\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type\n\ncode {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n//
...
:\n// figure.highlight > pre > code.language-LANG\n//\n//
1
+
...
+
:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\ndiv.highlighter-rouge {\n padding: $sp-3;\n margin-top: 0;\n margin-bottom: $sp-3;\n overflow-x: auto;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n\n div.highlight,\n pre.highlight,\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n//
...
,\n//
1
+
...
+
:\nfigure.highlight {\n padding: $sp-3;\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n\n pre,\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n//
1
+
...
+
:\n.highlight .table-wrapper {\n padding: 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n @include fs-2;\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n }\n\n td.gl {\n padding-right: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n.highlight .c {\n color: #586e75;\n} // comment //\n.highlight .err {\n color: #93a1a1;\n} // error //\n.highlight .g {\n color: #93a1a1;\n} // generic //\n.highlight .k {\n color: #859900;\n} // keyword //\n.highlight .l {\n color: #93a1a1;\n} // literal //\n.highlight .n {\n color: #93a1a1;\n} // name //\n.highlight .o {\n color: #859900;\n} // operator //\n.highlight .x {\n color: #cb4b16;\n} // other //\n.highlight .p {\n color: #93a1a1;\n} // punctuation //\n.highlight .cm {\n color: #586e75;\n} // comment.multiline //\n.highlight .cp {\n color: #859900;\n} // comment.preproc //\n.highlight .c1 {\n color: #586e75;\n} // comment.single //\n.highlight .cs {\n color: #859900;\n} // comment.special //\n.highlight .gd {\n color: #2aa198;\n} // generic.deleted //\n.highlight .ge {\n font-style: italic;\n color: #93a1a1;\n} // generic.emph //\n.highlight .gr {\n color: #dc322f;\n} // generic.error //\n.highlight .gh {\n color: #cb4b16;\n} // generic.heading //\n.highlight .gi {\n color: #859900;\n} // generic.inserted //\n.highlight .go {\n color: #93a1a1;\n} // generic.output //\n.highlight .gp {\n color: #93a1a1;\n} // generic.prompt //\n.highlight .gs {\n font-weight: bold;\n color: #93a1a1;\n} // generic.strong //\n.highlight .gu {\n color: #cb4b16;\n} // generic.subheading //\n.highlight .gt {\n color: #93a1a1;\n} // generic.traceback //\n.highlight .kc {\n color: #cb4b16;\n} // keyword.constant //\n.highlight .kd {\n color: #268bd2;\n} // keyword.declaration //\n.highlight .kn {\n color: #859900;\n} // keyword.namespace //\n.highlight .kp {\n color: #859900;\n} // keyword.pseudo //\n.highlight .kr {\n color: #268bd2;\n} // keyword.reserved //\n.highlight .kt {\n color: #dc322f;\n} // keyword.type //\n.highlight .ld {\n color: #93a1a1;\n} // literal.date //\n.highlight .m {\n color: #2aa198;\n} // literal.number //\n.highlight .s {\n color: #2aa198;\n} // literal.string //\n.highlight .na {\n color: #555;\n} // name.attribute //\n.highlight .nb {\n color: #b58900;\n} // name.builtin //\n.highlight .nc {\n color: #268bd2;\n} // name.class //\n.highlight .no {\n color: #cb4b16;\n} // name.constant //\n.highlight .nd {\n color: #268bd2;\n} // name.decorator //\n.highlight .ni {\n color: #cb4b16;\n} // name.entity //\n.highlight .ne {\n color: #cb4b16;\n} // name.exception //\n.highlight .nf {\n color: #268bd2;\n} // name.function //\n.highlight .nl {\n color: #555;\n} // name.label //\n.highlight .nn {\n color: #93a1a1;\n} // name.namespace //\n.highlight .nx {\n color: #555;\n} // name.other //\n.highlight .py {\n color: #93a1a1;\n} // name.property //\n.highlight .nt {\n color: #268bd2;\n} // name.tag //\n.highlight .nv {\n color: #268bd2;\n} // name.variable //\n.highlight .ow {\n color: #859900;\n} // operator.word //\n.highlight .w {\n color: #93a1a1;\n} // text.whitespace //\n.highlight .mf {\n color: #2aa198;\n} // literal.number.float //\n.highlight .mh {\n color: #2aa198;\n} // literal.number.hex //\n.highlight .mi {\n color: #2aa198;\n} // literal.number.integer //\n.highlight .mo {\n color: #2aa198;\n} // literal.number.oct //\n.highlight .sb {\n color: #586e75;\n} // literal.string.backtick //\n.highlight .sc {\n color: #2aa198;\n} // literal.string.char //\n.highlight .sd {\n color: #93a1a1;\n} // literal.string.doc //\n.highlight .s2 {\n color: #2aa198;\n} // literal.string.double //\n.highlight .se {\n color: #cb4b16;\n} // literal.string.escape //\n.highlight .sh {\n color: #93a1a1;\n} // literal.string.heredoc //\n.highlight .si {\n color: #2aa198;\n} // literal.string.interpol //\n.highlight .sx {\n color: #2aa198;\n} // literal.string.other //\n.highlight .sr {\n color: #dc322f;\n} // literal.string.regex //\n.highlight .s1 {\n color: #2aa198;\n} // literal.string.single //\n.highlight .ss {\n color: #2aa198;\n} // literal.string.symbol //\n.highlight .bp {\n color: #268bd2;\n} // name.builtin.pseudo //\n.highlight .vc {\n color: #268bd2;\n} // name.variable.class //\n.highlight .vg {\n color: #268bd2;\n} // name.variable.global //\n.highlight .vi {\n color: #268bd2;\n} // name.variable.instance //\n.highlight .il {\n color: #2aa198;\n} // literal.number.integer.long //\n\n//\n// Code examples (rendered)\n//\n\n.code-example {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n", + "@import \"./colors\";\n@import \"./layout\";\n@import \"./typography\";\n@import \"./lists\";\n@import \"./spacing\";\n", + "//\n// Utility classes for colors\n//\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n", + "// stylelint-disable primer/selector-no-utility, primer/no-override\n//\n// Utility classes for layout\n//\n\n// Display\n\n.d-block {\n display: block !important;\n}\n.d-flex {\n display: flex !important;\n}\n.d-inline {\n display: inline !important;\n}\n.d-inline-block {\n display: inline-block !important;\n}\n.d-none {\n display: none !important;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n.v-align-middle {\n vertical-align: middle !important;\n}\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n.v-align-top {\n vertical-align: top !important;\n}\n", + "//\n// Utility classes for typography\n//\n\n// stylelint-disable primer/selector-no-utility, primer/no-override\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n// stylelint-enable primer/selector-no-utility\n", + "//\n// Utility classes for lists\n//\n\n// stylelint-disable primer/selector-no-utility, primer/no-override, selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n", + "//\n// Utility classes for margins and padding\n//\n\n// scss-lint:disable SpaceAfterPropertyName\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before, primer/selector-no-utility, primer/no-override\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n", + "// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type, primer/no-override,\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: $root-font-size !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n", + "" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/docs/_site/assets/images/just-the-docs.png b/docs/_site/assets/images/just-the-docs.png new file mode 100644 index 0000000000000000000000000000000000000000..81c33065f2794814cbe1a53791d8bc4bfbb91cb1 Binary files /dev/null and b/docs/_site/assets/images/just-the-docs.png differ diff --git a/docs/_site/assets/images/search.svg b/docs/_site/assets/images/search.svg new file mode 100644 index 0000000000000000000000000000000000000000..421ca4df01aa718ba40ee39ab0f23153cfffb2d1 --- /dev/null +++ b/docs/_site/assets/images/search.svg @@ -0,0 +1 @@ +Search diff --git a/docs/_site/assets/js/just-the-docs.js b/docs/_site/assets/js/just-the-docs.js new file mode 100644 index 0000000000000000000000000000000000000000..67412ac90c2ce74ba85b61c6883b2ebbbe9c3618 --- /dev/null +++ b/docs/_site/assets/js/just-the-docs.js @@ -0,0 +1,445 @@ +(function (jtd, undefined) { + +// Event handling + +jtd.addEvent = function(el, type, handler) { + if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler); +} +jtd.removeEvent = function(el, type, handler) { + if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler); +} +jtd.onReady = function(ready) { + // in case the document is already rendered + if (document.readyState!='loading') ready(); + // modern browsers + else if (document.addEventListener) document.addEventListener('DOMContentLoaded', ready); + // IE <= 8 + else document.attachEvent('onreadystatechange', function(){ + if (document.readyState=='complete') ready(); + }); +} + +// Show/hide mobile menu + +function initNav() { + jtd.addEvent(document, 'click', function(e){ + var target = e.target; + while (target && !(target.classList && target.classList.contains('nav-list-expander'))) { + target = target.parentNode; + } + if (target) { + e.preventDefault(); + target.parentNode.classList.toggle('active'); + } + }); + + const siteNav = document.getElementById('site-nav'); + const mainHeader = document.getElementById('main-header'); + const menuButton = document.getElementById('menu-button'); + + jtd.addEvent(menuButton, 'click', function(e){ + e.preventDefault(); + + if (menuButton.classList.toggle('nav-open')) { + siteNav.classList.add('nav-open'); + mainHeader.classList.add('nav-open'); + } else { + siteNav.classList.remove('nav-open'); + mainHeader.classList.remove('nav-open'); + } + }); +} +// Site search + +function initSearch() { + var request = new XMLHttpRequest(); + request.open('GET', '/assets/js/search-data.json', true); + + request.onload = function(){ + if (request.status >= 200 && request.status < 400) { + var docs = JSON.parse(request.responseText); + + lunr.tokenizer.separator = /[\s\-/]+/ + + var index = lunr(function(){ + this.ref('id'); + this.field('title', { boost: 200 }); + this.field('content', { boost: 2 }); + this.field('relUrl'); + this.metadataWhitelist = ['position'] + + for (var i in docs) { + this.add({ + id: i, + title: docs[i].title, + content: docs[i].content, + relUrl: docs[i].relUrl + }); + } + }); + + searchLoaded(index, docs); + } else { + console.log('Error loading ajax request. Request status:' + request.status); + } + }; + + request.onerror = function(){ + console.log('There was a connection error'); + }; + + request.send(); +} + +function searchLoaded(index, docs) { + var index = index; + var docs = docs; + var searchInput = document.getElementById('search-input'); + var searchResults = document.getElementById('search-results'); + var mainHeader = document.getElementById('main-header'); + var currentInput; + var currentSearchIndex = 0; + + function showSearch() { + document.documentElement.classList.add('search-active'); + } + + function hideSearch() { + document.documentElement.classList.remove('search-active'); + } + + function update() { + currentSearchIndex++; + + var input = searchInput.value; + if (input === '') { + hideSearch(); + } else { + showSearch(); + // scroll search input into view, workaround for iOS Safari + window.scroll(0, -1); + setTimeout(function(){ window.scroll(0, 0); }, 0); + } + if (input === currentInput) { + return; + } + currentInput = input; + searchResults.innerHTML = ''; + if (input === '') { + return; + } + + var results = index.query(function (query) { + var tokens = lunr.tokenizer(input) + query.term(tokens, { + boost: 10 + }); + query.term(tokens, { + wildcard: lunr.Query.wildcard.TRAILING + }); + }); + + if ((results.length == 0) && (input.length > 2)) { + var tokens = lunr.tokenizer(input).filter(function(token, i) { + return token.str.length < 20; + }) + if (tokens.length > 0) { + results = index.query(function (query) { + query.term(tokens, { + editDistance: Math.round(Math.sqrt(input.length / 2 - 1)) + }); + }); + } + } + + if (results.length == 0) { + var noResultsDiv = document.createElement('div'); + noResultsDiv.classList.add('search-no-result'); + noResultsDiv.innerText = 'No results found'; + searchResults.appendChild(noResultsDiv); + + } else { + var resultsList = document.createElement('ul'); + resultsList.classList.add('search-results-list'); + searchResults.appendChild(resultsList); + + addResults(resultsList, results, 0, 10, 100, currentSearchIndex); + } + + function addResults(resultsList, results, start, batchSize, batchMillis, searchIndex) { + if (searchIndex != currentSearchIndex) { + return; + } + for (var i = start; i < (start + batchSize); i++) { + if (i == results.length) { + return; + } + addResult(resultsList, results[i]); + } + setTimeout(function() { + addResults(resultsList, results, start + batchSize, batchSize, batchMillis, searchIndex); + }, batchMillis); + } + + function addResult(resultsList, result) { + var doc = docs[result.ref]; + + var resultsListItem = document.createElement('li'); + resultsListItem.classList.add('search-results-list-item'); + resultsList.appendChild(resultsListItem); + + var resultLink = document.createElement('a'); + resultLink.classList.add('search-result'); + resultLink.setAttribute('href', doc.url); + resultsListItem.appendChild(resultLink); + + var resultTitle = document.createElement('div'); + resultTitle.classList.add('search-result-title'); + resultLink.appendChild(resultTitle); + + var resultDoc = document.createElement('div'); + resultDoc.classList.add('search-result-doc'); + resultDoc.innerHTML = ''; + resultTitle.appendChild(resultDoc); + + var resultDocTitle = document.createElement('div'); + resultDocTitle.classList.add('search-result-doc-title'); + resultDocTitle.innerHTML = doc.doc; + resultDoc.appendChild(resultDocTitle); + var resultDocOrSection = resultDocTitle; + + if (doc.doc != doc.title) { + resultDoc.classList.add('search-result-doc-parent'); + var resultSection = document.createElement('div'); + resultSection.classList.add('search-result-section'); + resultSection.innerHTML = doc.title; + resultTitle.appendChild(resultSection); + resultDocOrSection = resultSection; + } + + var metadata = result.matchData.metadata; + var titlePositions = []; + var contentPositions = []; + for (var j in metadata) { + var meta = metadata[j]; + if (meta.title) { + var positions = meta.title.position; + for (var k in positions) { + titlePositions.push(positions[k]); + } + } + if (meta.content) { + var positions = meta.content.position; + for (var k in positions) { + var position = positions[k]; + var previewStart = position[0]; + var previewEnd = position[0] + position[1]; + var ellipsesBefore = true; + var ellipsesAfter = true; + for (var k = 0; k < 5; k++) { + var nextSpace = doc.content.lastIndexOf(' ', previewStart - 2); + var nextDot = doc.content.lastIndexOf('. ', previewStart - 2); + if ((nextDot >= 0) && (nextDot > nextSpace)) { + previewStart = nextDot + 1; + ellipsesBefore = false; + break; + } + if (nextSpace < 0) { + previewStart = 0; + ellipsesBefore = false; + break; + } + previewStart = nextSpace + 1; + } + for (var k = 0; k < 10; k++) { + var nextSpace = doc.content.indexOf(' ', previewEnd + 1); + var nextDot = doc.content.indexOf('. ', previewEnd + 1); + if ((nextDot >= 0) && (nextDot < nextSpace)) { + previewEnd = nextDot; + ellipsesAfter = false; + break; + } + if (nextSpace < 0) { + previewEnd = doc.content.length; + ellipsesAfter = false; + break; + } + previewEnd = nextSpace; + } + contentPositions.push({ + highlight: position, + previewStart: previewStart, previewEnd: previewEnd, + ellipsesBefore: ellipsesBefore, ellipsesAfter: ellipsesAfter + }); + } + } + } + + if (titlePositions.length > 0) { + titlePositions.sort(function(p1, p2){ return p1[0] - p2[0] }); + resultDocOrSection.innerHTML = ''; + addHighlightedText(resultDocOrSection, doc.title, 0, doc.title.length, titlePositions); + } + + if (contentPositions.length > 0) { + contentPositions.sort(function(p1, p2){ return p1.highlight[0] - p2.highlight[0] }); + var contentPosition = contentPositions[0]; + var previewPosition = { + highlight: [contentPosition.highlight], + previewStart: contentPosition.previewStart, previewEnd: contentPosition.previewEnd, + ellipsesBefore: contentPosition.ellipsesBefore, ellipsesAfter: contentPosition.ellipsesAfter + }; + var previewPositions = [previewPosition]; + for (var j = 1; j < contentPositions.length; j++) { + contentPosition = contentPositions[j]; + if (previewPosition.previewEnd < contentPosition.previewStart) { + previewPosition = { + highlight: [contentPosition.highlight], + previewStart: contentPosition.previewStart, previewEnd: contentPosition.previewEnd, + ellipsesBefore: contentPosition.ellipsesBefore, ellipsesAfter: contentPosition.ellipsesAfter + } + previewPositions.push(previewPosition); + } else { + previewPosition.highlight.push(contentPosition.highlight); + previewPosition.previewEnd = contentPosition.previewEnd; + previewPosition.ellipsesAfter = contentPosition.ellipsesAfter; + } + } + + var resultPreviews = document.createElement('div'); + resultPreviews.classList.add('search-result-previews'); + resultLink.appendChild(resultPreviews); + + var content = doc.content; + for (var j = 0; j < Math.min(previewPositions.length, 3); j++) { + var position = previewPositions[j]; + + var resultPreview = document.createElement('div'); + resultPreview.classList.add('search-result-preview'); + resultPreviews.appendChild(resultPreview); + + if (position.ellipsesBefore) { + resultPreview.appendChild(document.createTextNode('... ')); + } + addHighlightedText(resultPreview, content, position.previewStart, position.previewEnd, position.highlight); + if (position.ellipsesAfter) { + resultPreview.appendChild(document.createTextNode(' ...')); + } + } + } + var resultRelUrl = document.createElement('span'); + resultRelUrl.classList.add('search-result-rel-url'); + resultRelUrl.innerText = doc.relUrl; + resultTitle.appendChild(resultRelUrl); + } + + function addHighlightedText(parent, text, start, end, positions) { + var index = start; + for (var i in positions) { + var position = positions[i]; + var span = document.createElement('span'); + span.innerHTML = text.substring(index, position[0]); + parent.appendChild(span); + index = position[0] + position[1]; + var highlight = document.createElement('span'); + highlight.classList.add('search-result-highlight'); + highlight.innerHTML = text.substring(position[0], index); + parent.appendChild(highlight); + } + var span = document.createElement('span'); + span.innerHTML = text.substring(index, end); + parent.appendChild(span); + } + } + + jtd.addEvent(searchInput, 'focus', function(){ + setTimeout(update, 0); + }); + + jtd.addEvent(searchInput, 'keyup', function(e){ + switch (e.keyCode) { + case 27: // When esc key is pressed, hide the results and clear the field + searchInput.value = ''; + break; + case 38: // arrow up + case 40: // arrow down + case 13: // enter + e.preventDefault(); + return; + } + update(); + }); + + jtd.addEvent(searchInput, 'keydown', function(e){ + switch (e.keyCode) { + case 38: // arrow up + e.preventDefault(); + var active = document.querySelector('.search-result.active'); + if (active) { + active.classList.remove('active'); + if (active.parentElement.previousSibling) { + var previous = active.parentElement.previousSibling.querySelector('.search-result'); + previous.classList.add('active'); + } + } + return; + case 40: // arrow down + e.preventDefault(); + var active = document.querySelector('.search-result.active'); + if (active) { + if (active.parentElement.nextSibling) { + var next = active.parentElement.nextSibling.querySelector('.search-result'); + active.classList.remove('active'); + next.classList.add('active'); + } + } else { + var next = document.querySelector('.search-result'); + if (next) { + next.classList.add('active'); + } + } + return; + case 13: // enter + e.preventDefault(); + var active = document.querySelector('.search-result.active'); + if (active) { + active.click(); + } else { + var first = document.querySelector('.search-result'); + if (first) { + first.click(); + } + } + return; + } + }); + + jtd.addEvent(document, 'click', function(e){ + if (e.target != searchInput) { + hideSearch(); + } + }); +} + +// Switch theme + +jtd.getTheme = function() { + var cssFileHref = document.querySelector('[rel="stylesheet"]').getAttribute('href'); + return cssFileHref.substring(cssFileHref.lastIndexOf('-') + 1, cssFileHref.length - 4); +} + +jtd.setTheme = function(theme) { + var cssFile = document.querySelector('[rel="stylesheet"]'); + cssFile.setAttribute('href', '/assets/css/just-the-docs-' + theme + '.css'); +} + +// Document ready + +jtd.onReady(function(){ + initNav(); + initSearch(); +}); + +})(window.jtd = window.jtd || {}); + + diff --git a/docs/_site/assets/js/search-data.json b/docs/_site/assets/js/search-data.json new file mode 100644 index 0000000000000000000000000000000000000000..ecef052a43fcc6b88de9609cc3b6632e74c9c451 --- /dev/null +++ b/docs/_site/assets/js/search-data.json @@ -0,0 +1,242 @@ +{"0": { + "doc": "Animate", + "title": "Animate", + "content": "# Animate When you select the Animate tab, a timeline window will show up at the bottom of your screen. Animation is performed by creating **keyframes** and **interpolating** between them. ### Keyframes A keyframe associates an object's pose and properties with a specific frame in the timeline. Keyframes can be associated with all objects (including the camera and individual joints associated with an object) in the scene. To create a keyframe for an object: - Select a frame location along that objects timeline by clicking on the timeline. Remember to do this *before* editing the pose. - Change the pose or properties of the selected object and press `Set`. To set a keyframe for every object in the scene, use `Set All`. Note that only the poses (rotations) of joints can be animated, not their extents. To remove a keyframe in the timeline, click on it and press `Clear` to remove it. Press `Clear All` to clear the current keyframe of every object in the scene. ![animating-cow](../../animation/task1_media/animate_cow.gif) To see your animation, press `Play [space]` . Once you've implemented **spline interpolation**, intermediate frames are generated by interpolating object poses between keyframes. Check `Draw Splines` to visualize the spline along which objects are animated. ![view-spline](../animate_mode/guide-animate-spline.png) `Add Frames` inserts 90 empty frames into the timeline. `Crop End` deletes frames from the selected location to the end of the timeline. ### Posing Once you have [rigged](../rig) an object with a skeleton, it can now be posed by selecting a joint and changing its pose i.e., rotating the joint. This is called Forward Kinematics. Joint poses can also be indirectly changed by using the IK (Inverse Kinematics) handles to provide target positions. Note that IK handles need to be explicitly enabled using the checkbox. Once you've implemented **forward kinematics**, **inverse kinematics** and **skinning**, as you change the pose, the mesh will deform. Different poses can be set as keyframes to animate the object. ", + "url": "/guide/animate_mode/", + "relUrl": "/guide/animate_mode/" + },"1": { + "doc": "Bevelling", + "title": "Bevelling", + "content": "# Beveling Here we provide some additional detail about the bevel operations and their implementation in Scotty3D. Each bevel operation has two components: 1. a method that modifies the _connectivity_ of the mesh, creating new beveled elements, and 2. a method the updates the _geometry_ of the mesh, insetting and offseting the new vertices according to user input. The methods that update the connectivity are `HalfedgeMesh::bevel_vertex`, `halfedgeMesh::bevel_edge`, and `HalfedgeMesh::bevel_face`. The methods that update geometry are `HalfedgeMesh::bevel_vertex_positions`, `HalfedgeMesh::bevel_edge_positions`, and `HalfedgeMesh::bevel_face_positions`. The methods for updating connectivity can be implemented following the general strategy outlined in [edge flip tutorial](edge_flip). **Note that the methods that update geometry will be called repeatedly for the same bevel, in order to adjust positions according to user mouse input. See the gif in the [User Guide](../guide/model).** To update the _geometry_ of a beveled element, you are provided with the following data: * `start_positions` - These are the original vertex positions of the beveled mesh element, without any insetting or offsetting. * `face` - This is a reference to the face currently being beveled. This was returned by one of the connectivity functions. * `tangent_offset` - The amount by which the new face should be inset (i.e., \"shrunk\" or \"expanded\") * `normal_offset` - (faces only) The amount by which the new face should be offset in the normal direction. Also note that we provide code to gather the halfedges contained in the beveled face, creating the array `new_halfedges`. You should only have to update the position (`Vertex::pos`) of the vertices associated with this list of halfedges. The basic recipe for updating these positions is: * Iterate over the list of halfedges (`new_halfedges`) * Grab the vertex coordinates that are needed to compute the new, updated vertex coordinates (this could be a mix of values from `start_positions`, or the members `Vertex::pos`) * Compute the updated vertex positions using the current values of `tangent_offset` (and possibly `normal_offset`) * Store the new vertex positions in `Vertex::pos` _for the vertices of the new, beveled polygon only_ (i.e., the vertices associated with each of `new_halfedges`). The reason for storing `new_halfedges` and `start_positions` in an array is that it makes it easy to access positions \"to the left\" and \"to the right\" of a given vertex. For instance, suppose we want to figure out the offset from the corner of a polygon. We might want to compute some geometric quantity involving the three vertex positions `start_positions[i-1]`, `start_positions[i]`, and `start_positions[i+1]` (as well as `inset`), then set the new vertex position `new_halfedges[i]->vertex()->pos` to this new value: A useful trick here is _modular arithmetic_: since we really have a \"loop\" of vertices, we want to make sure that indexing the next element (+1) and the previous element (-1) properly \"wraps around.\" This can be achieved via code like // Get the number of vertices in the new polygon int N = (int)hs.size(); // Assuming we're looking at vertex i, compute the indices // of the next and previous elements in the list using // modular arithmetic---note that to get the previous index, // we can't just subtract 1 because the mod operation in C++ // doesn't behave quite how you might expect for negative // values! int a = (i+N-1) % N; int b = i; int c = (i+1) % N; // Get the actual 3D vertex coordinates at these vertices Vec3 pa = start_positions[a]; Vec3 pb = start_positions[b]; Vec3 pc = start_positions[c]; From here, you will need to compute new coordinates for vertex `i`, which can be accessed from `new_halfedges[i]->vertex()->pos`. As a \"dummy\" example (i.e., this is NOT what you should actually do!!) this code will set the position of the new vertex to the average of the vertices above: new_halfedges[i].vertex()->pos = ( pa + pb + pc ) / 3.; // replace with something that actually makes sense! The only question remaining is: where _should_ you put the beveled vertex? **We will leave this decision up to you.** This question is one where you will have to think a little bit about what a good design would be. Questions to ask yourself: * How do I compute a point that is inset from the original geometry? * For faces, how do I shift the geometry in the normal direction? (You may wish to use the method `Face::normal()` here.) * What should I do as the offset geometry starts to look degenerate, e.g., shrinks to a point, or goes outside some reasonable bounds? * What should I do when the geometry is nonplanar? * Etc. The best way to get a feel for whether you have a good design is _to try it out!_ Can you successfully and easily use this tool to edit your mesh? Or is it a total pain, producing bizarre results? You be the judge! ", + "url": "/meshedit/local/bevel/", + "relUrl": "/meshedit/local/bevel/" + },"2": { + "doc": "(Task 3) BVH", + "title": "(Task 3) BVH", + "content": "# (Task 3) Bounding Volume Hierarchy In this task you will implement a bounding volume hierarchy that accelerates ray-scene intersection. Most of this work will be in `student/bvh.inl`. Note that this file has an unusual extension (`.inl` = inline) because it is an implementation file for a template class. This means `bvh.h` must `#include` it, so all code that sees `bvh.h` will also see `bvh.inl`. First, take a look at the definition for our `BVH` in `rays/bvh.h`. We represent our BVH using a vector of `Node`s, `nodes`, as an implicit tree data structure in the same fashion as heaps that you probably have seen in some other courses. A `Node` has the following fields: * `BBox bbox`: the bounding box of the node (bounds all primitives in the subtree rooted by this node) * `size_t start`: start index of primitives in the `BVH`'s primitive array * `size_t size`: range of index in the primitive list (number of primitives in the subtree rooted by the node) * `size_t l`: the index of the left child node * `size_t r`: the index of the right child node The BVH class also maintains a vector of all primitives in the BVH. The fields start and size in the BVH `Node` refer the range of contained primitives in this array. The primitives in this array are not initially in any particular order, and you will need to _rearrange the order_ as you build the BVH so that your BVH can accurately represent the spacial hierarchy. The starter code constructs a valid BVH, but it is a trivial BVH with a single node containing all scene primitives. Once you are done with this task, you can check the box for BVH in the left bar under \"Visualize\" when you start render to visualize your BVH and see each levels. Finally, note that the BVH visualizer will start drawing from `BVH::root_idx`, so be sure to set this to the proper index (probably 0 or `nodes.size() - 1`, depending on your implementation) when you build the BVH. ## Step 0: Bounding Box Calculation Implement `BBox::hit` in `student/bbox.cpp`. Also if you haven't already, implement `Triangle::bbox` in `student/tri_mesh.cpp` (`Triangle::bbox` should be fairly straightforward). We recommend checking out this [Scratchapixel article](https://www.scratchapixel.com/lessons/3d-basic-rendering/minimal-ray-tracer-rendering-simple-shapes/ray-box-intersection). ## Step 1: BVH Construction Your job is to construct a `BVH` using the [Surface Area Heuristic](http://15462.courses.cs.cmu.edu/fall2017/lecture/acceleratingqueries/slide_025) discussed in class. Tree construction would occur when the BVH object is constructed. Below is the pseudocode by which your BVH construction procedure should generally follow (copied from lecture slides). ## Step 2: Ray-BVH Intersection Implement the ray-BVH intersection routine `Trace BVH::hit(const Ray& ray)`. You may wish to consider the node visit order optimizations we discussed in class. Once complete, your renderer should be able to render all of the test scenes in a reasonable amount of time. [Visualization of normals](visualization_of_normals.md) may help with debugging. ## Visualization In Render mode, simply check the box for \"BVH\", and you would be able to see the BVH you generated in task 3 when you **start rendering**. You can click on the horizontal bar to see each level of your BVH. ## Sample BVHs The BVH constructed for Spot the Cow on the 10th level. The BVH constructed for a scene composed of several cubes and spheres on the 0th and 1st levels. The BVH constructed for the Stanford Bunny on the 10th level. ", + "url": "/pathtracer/bounding_volume_hierarchy", + "relUrl": "/pathtracer/bounding_volume_hierarchy" + },"3": { + "doc": "Building Scotty3D", + "title": "Building Scotty3D", + "content": "# Building Scotty3D ![Ubuntu Build Status](https://github.com/CMU-Graphics/Scotty3D/workflows/Ubuntu/badge.svg) ![MacOS Build Status](https://github.com/CMU-Graphics/Scotty3D/workflows/MacOS/badge.svg) ![Windows Build Status](https://github.com/CMU-Graphics/Scotty3D/workflows/Windows/badge.svg) To get a copy of the codebase, see [Git Setup](git). Note: the first build on any platform will be very slow, as it must compile most dependencies. Subsequent builds will only need to re-compile your edited Scotty3D code. ### Linux The following packages (ubuntu/debian) are required, as well as CMake and either gcc or clang: ``` sudo apt install pkg-config libgtk-3-dev libsdl2-dev ``` The version of CMake packaged with apt may be too old (we are using the latest version). If this is the case, you can install the latest version through pip: ``` pip install cmake export PATH=$PATH:/usr/local/bin ``` Finally, to build the project: ``` mkdir build cd build cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. make -j4 ``` The same process should also work modified for your distro/package manager of choice. Note that if you are using Wayland, you may need to set the environment variable ``SDL_VIDEODRIVER=wayland`` when running ``Scotty3D`` for acceptable performance. Notes: - You can instead use ``cmake -DCMAKE_BUILD_TYPE=Debug ..`` to build in debug mode, which, while far slower, makes the debugging experience much more intuitive. - You can replace ``4`` with the number of build processes to run in parallel (set to the number of cores in your machine for maximum utilization). - If you have both gcc and clang installed and want to build with clang, you should run ``CC=clang CXX=clang++ cmake ..`` instead. ### Windows The windows build is easiest to set up using the Visual Studio compiler (for now). To get the compiler, download and install the Visual Studio 2019 Build Tools [here](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019). If you want to instead use the full Visual Studio IDE, you can download Visual Studio Community 2019 [here](https://visualstudio.microsoft.com/downloads/). Be sure to install the \"Desktop development with C++\" component. You can download CMake for windows [here](https://cmake.org/download/). Once the Visual Studio compiler (MSVC) is installed, you can access it by running \"Developer Command Prompt for VS 2019,\" which opens a terminal with the utilities in scope. The compiler is called ``cl``. You can also import these utilities in any terminal session by running the script installed at ``C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat``. We also provide a simple script, ``build_win.bat``, that will automatically import the compiler and build the project. You should be able to simply run it in the project root to build. ``Scotty3D.exe`` will be generated under ``build/RelWithDebInfo/``. If you want to build manually, the steps (assuming MSVC is in scope) are: ``` mkdir build cd build cmake .. cmake --build . --config RelWithDebInfo ``` You can also use ``--config Debug`` to build in debug mode, which, while far slower, makes the debugging experience much more intuitive. If you swap this, be sure to make a new build directory for it. Finally, also note that ``cmake ..`` generates a Visual Studio solution file in the current directory. You can open this solution (``Scotty3D.sln``) in Visual Studio itself and use its interface to build, run, and debug the project. (Using the Visual Studio debugger or the provided VSCode launch options for debugging is highly recommended.) ### MacOS The following packages are required, as well as CMake and clang. You can install them with [homebrew](https://brew.sh/): ``` brew install pkg-config sdl2 ``` To build the project: ``` mkdir build cd build cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. make -j4 ``` Notes: - You can instead use ``cmake -DCMAKE_BUILD_TYPE=Debug ..`` to build in debug mode, which, while far slower, makes the debugging experience much more intuitive. - You can replace ``4`` with the number of build processes to run in parallel (set to the number of cores in your machine for maximum utilization). ", + "url": "/build/", + "relUrl": "/build/" + },"4": { + "doc": "(Task 1) Camera Rays", + "title": "(Task 1) Camera Rays", + "content": "# (Task 1) Generating Camera Rays ### Walkthrough Video \"Camera rays\" emanate from the camera and measure the amount of scene radiance that reaches a point on the camera's sensor plane. (Given a point on the virtual sensor plane, there is a corresponding camera ray that is traced into the scene.) Take a look at `Pathtracer::trace_pixel` in `student/pathtracer.cpp`. The job of this function is to compute the amount of energy arriving at this pixel of the image. Conveniently, we've given you a function `Pathtracer::trace_ray(r)` that provides a measurement of incoming scene radiance along the direction given by ray `r`. See `lib/ray.h` for the interface of ray. Here are some [rough notes](https://drive.google.com/file/d/0B4d7cujZGEBqVnUtaEsxOUI4dTMtUUItOFR1alQ4bmVBbnU0/view) giving more detail on how to generate camera rays. This tutorial from [Scratchapixel](https://www.scratchapixel.com/lessons/3d-basic-rendering/ray-tracing-generating-camera-rays/generating-camera-rays) also provides a detailed walkthrough of what you need to do. (Note that the coordinate convention that Scratchpixel adopted is different from the one we use, and you should stick to the coordinate system from the [rough notes](https://drive.google.com/file/d/0B4d7cujZGEBqVnUtaEsxOUI4dTMtUUItOFR1alQ4bmVBbnU0/view) all the time.) **Step 1:** Given the width and height of the screen, and point in screen space, compute the corresponding coordinates of the point in normalized ([0-1]x[0-1]) screen space in `Pathtracer::trace_pixel`. Pass these coordinates to the camera via `Camera::generate_ray` in `camera.cpp`. **Step 2:** Implement `Camera::generate_ray`. This function should return a ray **in world space** that reaches the given sensor sample point. We recommend that you compute this ray in camera space (where the camera pinhole is at the origin, the camera is looking down the -Z axis, and +Y is at the top of the screen.). In `util/camera.h`, the `Camera` class stores `vert_fov` and `aspect_ratio` indicating the vertical field of view of the camera (in degrees, not radians) as well as the aspect ratio. Note that the camera maintains camera-space-to-world space transform matrix `iview` that will come in handy. **Step 3:** Your implementation of `Pathtracer::trace_pixel` must support super-sampling. The member `Pathtracer::n_samples` specifies the number of samples of scene radiance to evaluate per pixel. The starter code will hence call `Pathtracer::trace_pixel` one time for each sample, so your implementation of `Pathtracer::trace_pixel` should choose a new location within the pixel each time. To choose a sample within the pixel, you should implement `Rect::Uniform::sample` (see `src/student/samplers.cpp`), such that it provides (random) uniformly distributed 2D points within the rectangular region specified by the origin and the member `Rect::Uniform::size`. Then you may then create a `Rect::Uniform` sampler with a one-by-one region and call `sample()` to obtain randomly chosen offsets within the pixel. Once you have implemented `Pathtracer::trace_pixel`, `Rect::Uniform::sample` and `Camera::generate_ray`, you should have a working camera. **Tip:** Since it'll be hard to know if you camera rays are correct until you implement primitive intersection, we recommend debugging your camera rays by checking what your implementation of `Camera::generate_ray` does with rays at the center of the screen (0.5, 0.5) and at the corners of the image. The code can log the results of raytracing for visualization and debugging. To do so, simply call function `Pathtracer::log_ray` in your `Pathtracer::trace_pixel`. Function `Pathtracer::log_ray` takes in 3 arguments: the ray tat you want to log, a float that specifies the distance to log that ray up to, and a color for the ray. If you don't pass a color, it will default to white. You should only log only a portion of the generated rays, or else the result will be hard to interpret. To do so, you can add `if(RNG::coin_flip(0.0005f)) log_ray(out, 10.0f);` to log 0.05% of camera rays. Finally, you can visualize the logged rays by checking the box for Logged rays under Visualize and then **starting the render** (Open Render Window -> Start Render). After running the path tracer, rays will be shown as lines in visualizer. Be sure to wait for rendering to complete so you see all rays while visualizing. ![logged_rays](new_results/log_rays.png) **Step 4:** `Camera` also includes the members `aperture` and `focal_dist`. These parameters are used to simulate the effects of de-focus blur and bokeh found in real cameras. Focal distance represents the distance between the camera aperture and the plane that is perfectly in focus. To use it, you must simply scale up the sensor position from step 2 (and hence ray direction) by `focal_dist` instead of leaving it on the `z = -1` plane. You might notice that this doesn't actually change anything about your result, since this is just scaling up a vector that is later normalized. However, now aperture comes in: by default, all rays start a single point, representing a pinhole camera. But when `aperture > 0`, we want to randomly choose the ray origin from an `aperture`x`aperture` square centered at the origin and facing the camera direction (-Z). Then, we use this point as the starting point of the ray while keeping its sensor position fixed (consider how that changes the ray direction). Now it's as if the same image was taken from slightly off origin. This simulates real cameras with non-pinhole apertures: the final photo is equivalent to averaging images taken by pinhole cameras placed at every point in the aperture. Finally, we can see that non-zero aperture makes focal distance matter: objects on the focal plane are unaffected, since where the ray hits on the sensor is the same regardless of the ray's origin. However, rays that hit objects objects closer or farther than the focal distance will be able to \"see\" slightly different parts of the object based on the ray origin. Averaging over many rays within a pixel, this results in collecting colors from a region larger slightly than that pixel would cover given zero aperture, causing the object to become blurry. We are using a square aperture, so bokeh effects will reflect this. You can test aperture/focal distance by adjusting `aperture` and `focal_dist` using the camera UI and examining logging rays. Once you have implemented primitive intersections and path tracing (tasks 3/5), you will be able to properly render `dof.dae`: ![depth of field test](new_results/dof.png) **Extra credit ideas:** * Write your own camera pixel sampler (replacing Rect::Uniform) that generates samples with improved distribution. Some examples include: * Jittered Sampling * Multi-jittered sampling * N-Rooks (Latin Hypercube) sampling * Sobol sequence sampling * Halton sequence sampling * Hammersley sequence sampling ", + "url": "/pathtracer/camera_rays", + "relUrl": "/pathtracer/camera_rays" + },"5": { + "doc": "Catmull-Clark Subdivision", + "title": "Catmull-Clark Subdivision", + "content": "# Catmull-Clark Subdivision For an in-practice example, see the [User Guide](/Scotty3D/guide/model). The only difference between Catmull-Clark and [linear](../linear) subdivision is the choice of positions for new vertices. Whereas linear subdivision simply takes a uniform average of the old vertex positions, Catmull-Clark uses a very carefully-designed _weighted_ average to ensure that the surface converges to a nice, round surface as the number of subdivision steps increases. The original scheme is described in the paper _\"Recursively generated B-spline surfaces on arbitrary topological meshes\"_ by (Pixar co-founder) Ed Catmull and James Clark. Since then, the scheme has been thoroughly discussed, extended, and analyzed; more modern descriptions of the algorithm may be easier to read, including those from the [Wikipedia](https://en.wikipedia.org/wiki/Catmull-Clark_subdivision_surface) and [this webpage](http://www.rorydriscoll.com/2008/08/01/catmull-clark-subdivision-the-basics/). In short, the new vertex positions can be calculated by: 1. setting the new vertex position at each face f to the average of all its original vertices (exactly as in linear subdivision), 2. setting the new vertex position at each edge e to the average of the new face positions (from step 1) and the original endpoint positions, and 3. setting the new vertex position at each vertex v to the weighted sum where _n_ is the degree of vertex _v_ (i.e., the number of faces containing _v_), and * _Q_ is the average of all new face position for faces containing _v_, * _R_ is the average of all original edge midpoints for edges containing _v_, and * _S_ is the original vertex position for vertex _v_. In other words, the new vertex positions are an \"average of averages.\" (Note that you _will_ need to divide by _n_ _both_ when computing _Q_ and _R_, _and_ when computing the final, weighted value---this is not a typo!) Apart from changing the way vertex positions are computed, there should be no difference in your implementation of linear and Catmull-Clark subdivision. This step should be implemented in the method `HalfedgeMesh::catmullclark_subdivide_positions` in `student/meshedit.cpp`. This subdivision rule **is not** required to support meshes with boundary, unless the implementer wishes to go above and beyond. ", + "url": "/meshedit/global/catmull/", + "relUrl": "/meshedit/global/catmull/" + },"6": { + "doc": "Dielectrics and Transmission", + "title": "Dielectrics and Transmission", + "content": "# Dielectrics and Transmission ## Fresnel Equations for a Dielectric The [Fresnel Equations](https://en.wikipedia.org/wiki/Fresnel_equations) (another [link](http://hyperphysics.phy-astr.gsu.edu/hbase/phyopt/freseq.html) here) describe the amount of reflection from a surface. The description below is an approximation for dielectric materials (materials that don't conduct electricity). In this assignment you're asked to implement a glass material, which is a dielectric. In the description below, and refer to the index of refraction of the medium containing an incoming ray, and the zenith angle of the ray to the surface of a new medium. and refer to the index of refraction of the new medium and the angle to the surface normal of a transmitted ray. The Fresnel equations state that reflection from a surface is a function of the surface's index of refraction, as well as the polarity of the incoming light. Since our renderer doesn't account for polarity, we'll apply a common approximation of averaging the reflectance of polarizes light in perpendicular and parallel polarized light: The parallel and perpendicular terms are given by: Therefore, for a dielectric material, the fraction of reflected light will be given by , and the amount of transmitted light will be given by . Alternatively, you may compute using [Schlick's approximation](https://en.wikipedia.org/wiki/Schlick%27s_approximation). ## Distribution Function for Transmitted Light We described the BRDF for perfect specular reflection in class, however we did not discuss the distribution function for transmitted light. Since refraction \"spreads\" or \"condenses\" a beam, unlike perfect reflection, the radiance along the ray changes due to a refraction event. In your assignment you should use Snell's Law to compute the direction of refraction rays, and use the following distribution function to compute the radiance of transmitted rays. We refer you guys to Pharr, Jakob, and and Humphries's book [Physically Based Rendering](http://www.pbr-book.org/) for a derivation based on Snell's Law and the relation . (But you are more than welcome to attempt a derivation on your own!) ", + "url": "/pathtracer/dielectrics_and_transmission", + "relUrl": "/pathtracer/dielectrics_and_transmission" + },"7": { + "doc": "Edge Flip Tutorial", + "title": "Edge Flip Tutorial", + "content": "# Edge Flip Tutorial Here we provide a step-by-step guide to implementing a simplified version of the _EdgeFlip_ operation for a pair of triangles---the final version, however, must be implemented for general polygons (i.e., any _n_-gon). The basic strategy for implementing the other local operations is quite similar to the procedure outlined below. **Note:** if you're not familiar with C++, you should definitely take a moment to learn about the [standard library class](http://en.cppreference.com/w/cpp/container/vector) `std::vector`, especially the method `push_back()`, which will make it easy to accumulate a list of pointers as you walk around a polygon, vertex, etc. We now consider the case of a triangle-triangle edge flip. ### PHASE 0: Draw a Diagram Suppose we have a pair of triangles (a,b,c) and (c,b,d). After flipping the edge (b,c), we should now have triangles (a,d,c) and (a,b,d). A good first step for implementing any local mesh operation is to draw a diagram that clearly labels all elements affected by the operation: Here we have drawn a diagram of the region around the edge both before and after the edge operation (in this case, \"flip\"), labeling each type of element (halfedge, vertex, edge, and face) from zero to the number of elements. It is important to include every element affected by the operation, thinking very carefully about which elements will be affected. If elements are omitted during this phase, everything will break---even if the code written in the two phases is correct! In this example, for instance, we need to remember to include the halfedges \"outside\" the neighborhood, since their \"twin\" pointers will be affected. ### PHASE I: Collect elements Once you've drawn your diagram, simply collect all the elements from the \"before\" picture. Give them the same names as in your diagram, so that you can debug your code by comparing with the picture. // HALFEDGES HalfedgeRef h0 = e0->halfedge(); HalfedgeRef h1 = h0->next(); HalfedgeRef h2 = h1->next(); HalfedgeRef h3 = h0->twin(); HalfedgeRef h4 = h3->next(); HalfedgeRef h5 = h4->next(); HalfedgeRef h6 = h1->twin(); HalfedgeRef h7 = h2->twin(); HalfedgeRef h8 = h4->twin(); HalfedgeRef h9 = h5->twin(); // VERTICES VertexRef v0 = h0->vertex(); VertexRef v1 = h3->vertex(); // ...you fill in the rest!... // EDGES EdgeRef e1 = h5->edge(); EdgeRef e2 = h4->edge(); // ...you fill in the rest!... // FACES FaceRef f0 = h0->face(); // ...you fill in the rest!... ### PHASE II: Allocate new elements If your edge operation requires new elements, now is the time to allocate them. For the edge flip, we don't need any new elements; but suppose that for some reason we needed a new vertex v4\\. At this point we would allocate the new vertex via VertexRef v4 = mesh.new_vertex(); (The name used for this new vertex should correspond to the label you give it in your \"after\" picture.) Likewise, new edges, halfedges, and faces can be allocated via the methods `mesh.new_edge()`, `mesh.new_halfedge()`, and `mesh.new_face()`. ### PHASE III: Reassign Elements Next, update the pointers for all the mesh elements that are affected by the edge operation. Be exhaustive! In other words, go ahead and specify every pointer for every element, even if it did not change. Once things are working correctly, you can always optimize by removing unnecessary assignments. But get it working correctly first! Correctness is more important than efficiency. // HALFEDGES h0->next() = h1; h0->twin() = h3; h0->vertex() = v2; h0->edge() = e0; h0->face() = f0; h1->next() = h2; h1->twin() = h7; h1->vertex() = v3; h1->edge() = e3; h1->face() = f0; // ...you fill in the rest!... // ...and don't forget about the \"outside\" elements!... h9->next() = h9->next(); // didn't change, but set it anyway! h9->twin() = h4; h9->vertex() = v1; h9->edge() = e1; h9->face() = h9->face(); // didn't change, but set it anyway! // VERTICES v0->halfedge() = h2; v1->halfedge() = h5; v2->halfedge() = h4; v3->halfedge() = h3; // EDGES e0->halfedge() = h0; //...you fill in the rest!... // FACES f0->halfedge() = h0; //...you fill in the rest!... ### PHASE IV: Delete unused elements If your edge operation eliminates elements, now is the best time to deallocate them: at this point, you can be sure that they are no longer needed. For instance, since we do not need the vertex allocated in PHASE II, we could write mesh.erase(v4); You should be careful that this mesh element is not referenced by any other element in the mesh. But if your \"before\" and \"after\" diagrams are correct, that should not be an issue! ### Design considerations The basic algorithm outlined above will handle most edge flips, but you should also think carefully about possible corner-cases. You should also think about other design issues, like \"how much should this operation cost?\" For instance, for this simple triangle-triangle edge flip it might be reasonable to: * Ignore requests to flip boundary edges (i.e., just return immediately if either neighboring face is a boundary loop). * Ignore requests to perform any edge flip that would make the surface non-manifold or otherwise invalidate the mesh. * Not add or delete any elements. Since there are the same number of mesh elements before and after the flip, you should only need to reassign pointers. * Perform only a constant amount of work -- the cost of flipping a single edge should **not** be proportional to the size of the mesh! Formally proving that your code is correct in all cases is challenging, but at least try to think about what could go wrong in degenerate cases (e.g., vertices of low degree, or very small meshes like a tetrahedron). The biggest challenge in properly implementing this type of local operation is making sure that all the pointers still point to the right place in the modified mesh, and will likely be the cause of most of your crashes! To help mitigate this, Scotty3D will automatically attempt to ``validate`` your mesh after each operation, and will warn you if it detects abnormalities. Note that it will still crash if you leave references to deleted mesh elements! ", + "url": "/meshedit/local/edge_flip", + "relUrl": "/meshedit/local/edge_flip" + },"8": { + "doc": "(Task 7) Environment Lighting", + "title": "(Task 7) Environment Lighting", + "content": "# (Task 7) Environment Lighting The final task of this assignment will be to implement a new type of light source: an infinite environment light. An environment light is a light that supplies incident radiance (really, the light intensity dPhi/dOmega) from all directions on the sphere. Rather than using a predefined collection of explicit lights, an environment light is a capture of the actual incoming light from some real-world scene; rendering using environment lighting can be quite striking. The intensity of incoming light from each direction is defined by a texture map parameterized by phi and theta, as shown below. ![envmap_figure](envmap_figure.jpg) In this task you need to implement the `Env_Map::sample` and `Env_Map::sample_direction` method in `student/env_light.cpp`. You'll start with uniform direction sampling to get things working, and then move to a more advanced implementation that uses **importance sampling** to significantly reduce variance in rendered images. ## Step 1: Uniform sampling To get things working, your first implementation of `Env_Map::sample` will be quite simple. You should generate a random direction on the sphere (**with uniform (1/4pi) probability with respect to solid angle**), convert this direction to coordinates (phi, theta) and then look up the appropriate radiance value in the texture map using **bilinear interpolation** (note: we recommend you begin with bilinear interpolation to keep things simple.) Since high dynamic range environment maps can be large files, we have not included them in the starter code repo. You can download a set of environment maps from this [link](http://15462.courses.cs.cmu.edu/fall2015content/misc/asst3_images/asst3_exr_archive.zip). You can designate rendering to use a particular environment map from the GUI: go to `layout` -> `new light` -> `environment map`-> `add`, and then select one of the environment maps that you have just downloaded. ![envmap_gui](envmap_gui.png) For more HDRIs for creative environment maps, check out [HDRIHAVEN](https://hdrihaven.com/) **Tips:** * You must write your own code to uniformly sample the sphere. * check out the interface of `Env_Map` in `rays/env_light.h`. For `Env_Map`, the `image` field is the actual map being represented as a `HDR_Image`, which contains the pixels of the environment map and size of the environment texture. The interface for `HDR_Image` is in `util/hdr_image.h`. ## Step 2: Importance sampling the environment map Much like light in the real world, most of the energy provided by an environment light source is concentrated in the directions toward bright light sources. **Therefore, it makes sense to bias selection of sampled directions towards the directions for which incoming radiance is the greatest.** In this final task you will implement an importance sampling scheme for environment lights. For environment lights with large variation in incoming light intensities, good importance sampling will significantly improve the quality of renderings. The basic idea is that you will assign a probability to each pixel in the environment map based on the total flux passing through the solid angle it represents. A pixel with coordinate subtends an area on the unit sphere (where and the angles subtended by each pixel -- as determined by the resolution of the texture). Thus, the flux through a pixel is proportional to . (We only care about the relative flux through each pixel to create a distribution.) **Summing the fluxes for all pixels, then normalizing the values so that they sum to one, yields a discrete probability distribution for picking a pixel based on flux through its corresponding solid angle on the sphere.** The question is now how to sample from this 2D discrete probability distribution. We recommend the following process which reduces the problem to drawing samples from two 1D distributions, each time using the inversion method discussed in class: * Given the probability distribution for all pixels, compute the marginal probability distribution for selecting a value from each row of pixels. * Given for any pixel, compute the conditional probability . Given the marginal distribution for and the conditional distributions for environment map rows, it is easy to select a pixel as follows: 1. Use the inversion method to first select a \"row\" of the environment map according to . 2. Given this row, use the inversion method to select a pixel in the row according to . **Here are a few tips:** * When computing areas corresponding to a pixel, use the value of theta at the pixel centers. * We recommend precomputing the joint distributions p(phi, theta) and marginal distributions p(theta) in the constructor of `Sampler::Sphere::Image` and storing the resulting values in fields `pdf`. See `rays/sampler.h`. * `Spectrum::luma()` returns the luminance (brightness) of a Spectrum. The probability of a pixel should be proportional to the product of its luminance and the solid angle it subtends. * `std::lower_bound` is your friend. Documentation is [here](https://en.cppreference.com/w/cpp/algorithm/lower_bound). ## Sample results for importance sampling: ennis.exr with 32 spp ![ennis](new_results/ennis32importance.png) uffiz.exr with 32 spp ![uffiz](new_results/uffiz32importance.png) field.exr with 1024 spp ![ennis](new_results/field1024importance.png) ", + "url": "/pathtracer/environment_lighting", + "relUrl": "/pathtracer/environment_lighting" + },"9": { + "doc": "GitHub Setup", + "title": "GitHub Setup", + "content": "# Github Setup Please do not use a public github fork of this repository! We do not want solutions to be public. You should work in your own private repo. We recommended creating a mirrored private repository with multiple remotes. The following steps go over how to achieve this. The easiest (but not recommended) way is to download a zip from GitHub and make a private repository from that. The main disadvantage with this is that whenever there is an update to the base code, you will have to re-download the zip and manually merge the differences into your code. This is a pain, and you already have a lot to do in 15462/662, so instead, let `git` take care of this cumbersome \"merging-updates\" task: 1. Clone Scotty3D normally - `git clone https://github.com/CMU-Graphics/Scotty3D.git` 2. Create a new private repository (e.g. `MyScotty3D`) - Do not initialize this repository - keep it completely empty. - Let's say your repository is now hosted here: `https://github.com/your_id/MyScotty3D.git` 3. Ensure that you understand the concept of `remote`s in git. - When you clone a git repository, the default remote is named 'origin' and set to the URL you cloned from. - We will set the `origin` of our local clone to point to `MyScotty3D.git`, but also have a remote called `sourcerepo` for the public `Scotty3D` repository. 4. Now go back to your clone of Scotty3D. This is how we add the private remote: - Since we cloned from the `CMU-Graphics/Scotty3D.git` repository, the current value of `origin` should be `https://github.com/CMU-Graphics/Scotty3D.git` - You can check this using `git remote -v`, which should show: ``` origin https://github.com/CMU-Graphics/Scotty3D.git (fetch) origin https://github.com/CMU-Graphics/Scotty3D.git (push) ``` - Rename `origin` to `sourcerepo`: - `git remote rename origin sourcerepo` - Add a new remote called `origin`: - `git remote add origin https://github.com/your_id/MyScotty3D.git` - We can now push the starter code to our private copy: - `git push origin -u master` 5. Congratulations! you have successfully _mirrored_ a git repository with all past commits intact. Let's see a case where this becomes very useful: we start doing an assignment and commit regularly to our private repo (our `origin`). Then the 15-462 staff push some new changes to the Scotty3D skeleton code. We now want to pull the changes from our `sourcerepo`. But, we don't want to mess up the changes we've added to our private copy. Here's where git comes to the rescue: - First commit all current changes to your `origin` - Run `git pull sourcerepo master` - this pulls all the changes from `sourcerepo` into your local folder - If there are files that differ in your `origin` and in the `sourcerepo`, git will attempt to automatically merge the changes. Git may create a \"merge\" commit for this. - Unfortunately, there may be merge conflicts. Git will handle as many merges as it can, and then will then tell you which files have conflicts that need manual resolution. You can resolve those conflicts in your text editor and create a new commit to complete the `merge` process. - After you have completed the merge, you now have all the updates locally. Push to your private origin to include the changes there too: - `git push origin master` ", + "url": "/git/", + "relUrl": "/git/" + },"10": { + "doc": "Global Operations", + "title": "Global Operations", + "content": "# Global Mesh Operations In addition to local operations on mesh connectivity, Scotty3D provides several global remeshing operations (as outlined in the [User Guide](/Scotty3D/guide/model)). Two different mechanisms are used to implement global operations: * _Repeated application of local operations._ Some mesh operations are most easily expressed by applying local operations (edge flips, etc.) to a sequence of mesh elements until the target output is achieved. A good example is [mesh simplification](simplify), which is a greedy algorithm that collapses one edge at a time. * _Global replacement of the mesh._ Other mesh operations are better expressed by temporarily storing new mesh elements in a simpler mesh data structure (e.g., an indexed list of faces) and completely re-building the halfedge data structure from this data. A good example is [Catmull-Clark subdivision](catmull), where every polygon must be simultaneously split into quadrilaterals. Note that in general there are no inter-dependencies among global remeshing operations (except that some of them require a triangle mesh as input, which can be achieved via the method `Halfedge_Mesh::triangulate`). ## Subdivision In image processing, we often have a low resolution image that we want to display at a higher resolution. Since we only have a few samples of the original signal, we need to somehow interpolate or _upsample_ the image. One idea would be to simply cut each pixel into four, leaving the color values unchanged, but this leads to a blocky appearance. Instead we might try a more sophisticated scheme (like bilinear or trilinear interpolation) that yields a smoother appearance. In geometry processing, one encounters the same situation: we may have a low-resolution polygon mesh that we wish to upsample for display, simulation, etc. Simply splitting each polygon into smaller pieces doesn't help, because it does nothing to alleviate blocky silhouettes or chunky features. Instead, we need an upsampling scheme that nicely interpolates or approximates the original data. Polygon meshes are quite a bit trickier than images, however, since our sample points are generally at _irregular_ locations, i.e., they are no longer found at regular intervals on a grid. Three subdivision schemes are supported by Scotty3D: [Linear](linear), [Catmull-Clark](catmull), and [Loop](loop). The first two can be used on any polygon mesh without boundary, and should be implemented via the global replacement strategy described above. Loop subdivision can be implemented using repeated application of local operations. For further details, see the linked pages. ## Performance All subdivision operations, as well as re-meshing and simplification, should complete almost instantaneously (no more than a second) on meshes of a few hundred polygons or fewer. If performance is worse than this, ensure that implementations are not repeatedly iterating over more elements than needed, or allocating/deallocating more memory than necessary. A useful debugging technique is to print out (or otherwise keep track of, e.g., via an integer counter or a profiler) the number of times basic methods like `Halfedge::next()` or `Halfedge_Mesh::new_vertex()` are called during a single execution of one of the methods; for most methods this number should be some reasonably small constant (no more than, say, 1000!) times the number of elements in the mesh. ", + "url": "/meshedit/global/", + "relUrl": "/meshedit/global/" + },"11": { + "doc": "User Guide", + "title": "User Guide", + "content": "# User Guide ## Modes and Actions The basic paradigm in Scotty3D is that there are six different _modes_, each of which lets you perform certain class of actions. For instance, in `Model` mode, you can perform actions associated with modeling, such as moving mesh elements and performing global mesh operations. When in `Animate` mode, you can perform actions associated with animation. Etc. Within a given mode, you can switch between actions by hitting the appropriate key; keyboard commands are listed below for each mode. Note that the input scheme may change depending on the mode. For instance, key commands in `Model` mode may result in different actions in `Render` mode. The current mode is displayed as the \"pressed\" button in the menu bar, and available actions are are detailed in the left sidebar. Note that some actions are only available when a model/element/etc. is selected. ## Global Navigation In all modes, you can move the camera around and select scene elements. Information about your selection will be shown in the left sidebar. The camera can be manipulated in three ways: - Rotate: holding shift, left-clicking, and dragging will orbit the camera about the scene. Holding middle click and dragging has the same effect. - Zoom: using the scroll wheel or scrolling on your trackpad will move the camera towards or away from its center. - Translate: right-clicking (or using multi-touch on a trackpad, e.g., two-finger click-and-drag) and dragging will move the camera around the scene. ## Global Preferences You can open the preferences window from the edit option in the menu bar. - Multisampling: this controls how many samples are used for MSAA when rendering scene objects in the Scotty3D interface. If your computer struggles to render complex scenes, try changing this to `1`. ## Global Undo As is typical, all operations on scene objects, meshes, etc. are un and re-doable using Control/Command-Z to undo and Control/Command-Y to redo. These actions are also available from the `Edit` option in the menu bar. ", + "url": "/guide/", + "relUrl": "/guide/" + },"12": { + "doc": "Halfedge Mesh", + "title": "Halfedge Mesh", + "content": "# Halfedge Mesh ## Geometric Data Structures Scotty3D uses a variety of geometric data structures, depending on the task. Some operations (e.g., ray tracing) use a simple list of triangles that can be compactly encoded and efficiently cached. For more sophisticated geometric tasks like mesh editing and sampling, a simple triangle list is no longer sufficient (or leads to unnecessarily poor asymptotic performance). Most actions in MeshEdit mode therefore use a topological data structure called a _halfedge mesh_ (also known as a _doubly-connected_ edge list), which provides a good tradeoff between simplicity and sophistication. ### The Halfedge Data Structure The basic idea behind the halfedge data structure is that, in addition to the usual vertices, edges, and faces that make up a polygonal mesh, we also have an entity called a _halfedge_ that acts like \"glue\" connecting the different elements. It is this glue that allow us to easily \"navigate\" the mesh, i.e., easily access mesh elements adjacent to a given element. In particular, there are two halfedges associated with each edge (see picture above). For an edge connecting two vertices i and j, one of its halfedges points from i to j; the other one points from j to i. In other words, we say that the two halfedges are _oppositely oriented_. On of the halfedges is associated with the face to the \"left\" of the edge; the other is associated with the face to the \"right.\" Each halfedge knows about the opposite halfedge, which we call its _twin_. It also knows about the _next_ halfedge around its face, as well as its associated edge, face, and vertex. In contrast, the standard mesh elements (vertices, edges, and faces) know only about _one_ of their halfedges. In particular: * a vertex knows about one of its \"outgoing\" halfedges, * an edge knows about one of its two halfedges, and * a face knows about one of the many halfedges circulating around its interior. In summary, we have the following relationships: | Mesh Element | Pointers | ------------ | ------------------------------ | Vertex | halfedge (just one) | Edge | halfedge (just one) | Face | halfedge (just one) | Halfedge | next, twin, vertex, edge, face | This list emphasizes that it is really the **halfedges** that connect everything up. An easy example is if we want to visit all the vertices of a given face. We can start at the face's halfedge, and follow the \"next\" pointer until we're back at the beginning. A more interesting example is visiting all the vertices adjacent to a given vertex v. We can start by getting its outgoing halfedge, then its twin, then its next halfedge; this final halfedge will also point out of vertex v, but it will point **toward** a different vertex than the first halfedge. By repeating this process, we can visit all the neighboring vertices: In some sense, a halfedge mesh is kind of like a supercharged linked list. For instance, the halfedges around a given face (connected by `next` pointers) form a sort of \"cyclic\" linked list, where the tail points back to the head. A nice consequence of the halfedge representation is that any valid halfedge mesh **must** be manifold and orientable. Scotty3D will therefore only produce manifold, oriented meshes as output (and will complain if the input does not satisfy these criteria). ### The `Halfedge_Mesh` Class The Scotty3D skeleton code already provides a fairly sophisticated implementation of the half edge data structure, in the `Halfedge_Mesh` class (see `geometry/halfedge.h` and `geometry/halfedge.cpp`). Although the detailed implementation may appear a bit complicated, the basic interface is not much different from the abstract description given above. For instance, suppose we have a face f and want to print out the positions of all its vertices. We would write a routine like this: void printVertexPositions(FaceRef f) { HalfEdgeRef h = f->halfedge(); // get the first halfedge of the face do { VertexRef v = h->vertex(); // get the vertex of the current halfedge cout pos next(); // move to the next halfedge around the face } while (h != f->halfedge()); // keep going until we're back at the beginning } Notice that we refer to a face as a `FaceRef` rather than just a `Face`. You can think of a `Ref` as a kind of _pointer_. Note that members of an iterator are accessed with an arrow `->` rather than a dot `.`, just as with pointers. (A more in-depth explanation of some of these details can be found in the inline documentation.) Similarly, to print out the positions of all the neighbors of a given vertex we could write a routine like this: void printNeighborPositions(VertexRef v) { HalfEdgeRef h = v->halfedge(); // get one of the outgoing halfedges of the vertex do { HalfEdgeRef h_twin = h->twin(); // get the vertex of the current halfedge VertexRef vN = h_twin->vertex(); // vertex is 'source' of the half edge. // so h->vertex() is v, // whereas h_twin->vertex() is the neighbor vertex. cout pos next(); // move to the next outgoing halfedge of the vertex. } while(h != v->halfedge()); // keep going until we're back at the beginning } To iterate over **all** the vertices in a halfedge mesh, we could write a loop like this: for(VertexRef v = mesh.vertices_begin(); v != mesh.vertices_end(); v++) { printNeighborPositions(v); // do something interesting here } Internally, the lists of vertices, edges, faces, and halfedges are stored as **linked lists**, which allows us to easily add or delete elements to our mesh. For instance, to add a new vertex we can write VertexRef v = mesh.new_vertex(); Likewise, to delete a vertex we can write mesh.erase(v); Note, however, that one should be **very, very careful** when adding or deleting mesh elements. New mesh elements must be properly linked to the mesh -- for instance, this new vertex must be pointed to one of its associated halfedges by writing something like v->halfedge() = h; Likewise, if we delete a mesh element, we must be certain that no existing elements still point to it; the halfedge data structure does not take care of these relationships for you automatically. In fact, that is exactly the point of this assignment: to get some practice directly manipulating the halfedge data structure. Being able to perform these low-level manipulations will enable you to write useful and interesting mesh code far beyond the basic operations in this assignment. The `Halfedge_Mesh` class provides a helper function called `validate` that checks whether the mesh iterators are valid. You might find it worthwhile calling this function to debug your implementation (please note that `validate` only checks that your mesh is valid - passing it does not imply that your specific operation is correct). Finally, the **boundary** of the surface (e.g., the ankles and waist of a pair of pants) requires special care in our halfedge implementation. At first glance, it would seem that the routine `printNeighborPositions()` above might break if the vertex `v` is on the boundary, because at some point we worry that we have no `twin()` element to visit. Fortunately, our implementation has been designed to avoid this kind of catastrophe. In particular, rather than having an actual hole in the mesh, we create a \"virtual\" boundary face whose edges are all the edges of the boundary loop. This way, we can iterate over boundary elements just like any other mesh element. If we ever need to check whether an element is on the boundary, we have the methods. Vertex::on_boundary() Edge::on_boundary() Face::is_boundary() Halfedge::is_boundary() These methods return true if and only if the element is contained in the domain boundary. Additionally, we store an explicit list of boundary faces, which we can iterate over like any other type of mesh element: for(FaceRef b = mesh.boundaries_begin(); b != mesh.boundaries_end(); b++) { // do something interesting with this boundary loop } These virtual faces are not stored in the usual face list, i.e., they will not show up when iterating over faces. The figure below should help to further explain the behavior of `Halfedge_Mesh` for surfaces with boundary: Dark blue regions indicate interior faces, whereas light blue regions indicate virtual boundary faces. Note that for vertices and edges, ``on_boundary()`` will return true if the element is attached to a boundary face, but ``is_boundary()`` for halfedges is only true if the halfedge is 'inside' the boundary face. For example, in the figure above the region ``b`` is a virtual boundary face, which means that vertex ``v'``, edge ``e'``, and halfedge ``h'`` are all part of the boundary; their methods will return true. In contrast, vertex ``v``, edge ``e``, face `f`, and halfedge `h` are not part of the boundary, and their methods will return false. Notice also that the boundary face b is a polygon with 12 edges. _Note:_ _the edge degree and face degree of a boundary vertex is not the same!_ Notice, for instance, that vertex `v'` is contained in three edges but only two interior faces. By convention, `Vertex::degree()` returns the face degree, not the edge degree. The edge degree can be computed by finding the face degree, and adding 1 if the vertex is a boundary vertex. Please refer to the inline comments (e.g. of `geometry/halfedge.h`) for further details about the `Halfedge_Mesh` data structure. ", + "url": "/meshedit/halfedge", + "relUrl": "/meshedit/halfedge" + },"13": { + "doc": "Environment Light Importance Sampling", + "title": "Environment Light Importance Sampling", + "content": "# Environment Light Importance Sampling A pixel with coordinate subtends an area on the unit sphere (where and the angles subtended by each pixel -- as determined by the resolution of the texture). Thus, the flux through a pixel is proportional to . (We only care about the relative flux through each pixel to create a distribution.) **Summing the fluxes for all pixels, then normalizing the values so that they sum to one, yields a discrete probability distribution for picking a pixel based on flux through its corresponding solid angle on the sphere.** The question is now how to sample from this 2D discrete probability distribution. We recommend the following process which reduces the problem to drawing samples from two 1D distributions, each time using the inversion method discussed in class: * Given the probability distribution for all pixels, compute the marginal probability distribution for selecting a value from each row of pixels. * Given for any pixel, compute the conditional probability . Given the marginal distribution for and the conditional distributions for environment map rows, it is easy to select a pixel as follows: 1. Use the inversion method to first select a \"row\" of the environment map according to . 2. Given this row, use the inversion method to select a pixel in the row according to . ", + "url": "/pathtracer/importance_sampling", + "relUrl": "/pathtracer/importance_sampling" + },"14": { + "doc": "Home", + "title": "Home", + "content": "![15-462 F20 Renders](results/me_f20_crop.png) # Scotty3D Welcome to Scotty3D! This 3D graphics software package includes components for interactive mesh editing, realistic path tracing, and dynamic animation. Implementing functionality in each of these areas constitutes the majority of the coursework for 15-462/662 (Computer Graphics) at Carnegie Mellon University These pages describe how to set up and use Scotty3D. Start here! - [Git Setup](git): create a private git mirror that can pull changes from Scotty3D. - [Building Scotty3D](build): build and run Scotty3D on various platforms. - [User Guide](guide): learn the intended functionality for end users. The developer manual describes what you must implement to complete Scotty3D. It is organized under the three main components of the software: - [MeshEdit](meshedit) - [PathTracer](pathtracer) - [Animation](animation) ## Project Philosophy Welcome to your first day of work at Scotty Industries! Over the next few months you will implement core features in Scotty Industries' flagship product Scotty3D, which is a modern package for 3D modeling, rendering, and animation. In terms of basic structure, this package doesn't look much different from \"real\" 3D tools like Maya, Blender, modo, or Houdini. Your overarching goal is to use the developer manual to implement a package that works as described in the [User Guide](guide), much as you would at a real software company (more details below). Note that the User Guide is **not** an Assignment Writeup. The User Guide contains only instructions on how to use the software, and serves as a high-level specification of _what the software should do_. The Developer Guide contains information about the internals of the code, i.e., _how the software works_. This division is quite common in software development: there is a **design specification** or \"design spec\", and an **implementation** that implements that spec. Also, as in the real world, the design spec does _not_ necessarily specify every tiny detail of how the software should behave! Some behaviors may be undefined, and some of these details are left up to the party who implements the specification. A good example you have already seen is OpenGL, which defines some important rules about how rasterization should behave, but is not a \"pixel-exact\" specification. In other words, two different OpenGL implementations from two different vendors (Intel and NVIDIA, say) may produce images that differ by a number of pixels. Likewise, in this assignment, your implementation may differ from the implementation of your classmates in terms of the exact values it produces, or the particular collection of corner-cases it handles. However, as a developer you should strive to provide a solution that meets a few fundamental criteria: * [Failing gracefully](https://en.wikipedia.org/wiki/Fault_tolerance) is preferable to failing utterly---for instance, if a rare corner case is difficult to handle, it is far better to simply refuse to perform the operation than to let the program crash! * Your implementation should follow the [principle of least surprise](https://en.wikipedia.org/wiki/Principle_of_least_astonishment). A user should be able to expect that things behave more or less as they are described in the User Guide. * You should not use an algorithm whose performance is [asymptotically worse](https://en.wikipedia.org/wiki/Asymptotic_computational_complexity) just because it makes your code easier to write (for instance, using [bubble sort](https://en.wikipedia.org/wiki/Bubble_sort) rather than [merge sort](https://en.wikipedia.org/wiki/Merge_sort) on large data sets). * That being said, when it comes to performance, [premature optimization is the root of all evil!](https://en.wikipedia.org/wiki/Program_optimization#When_to_optimize) The only way to know whether an optimization matters is to [measure performance](https://en.wikipedia.org/wiki/Profiling_(computer_programming)), and understand [bottlenecks](https://en.wikipedia.org/wiki/Program_optimization#Bottlenecks). * Finally, you should take pride in your craft. Beautiful things just tend to work better. Just to reiterate the main point above: **As in real-world software development, we will not specify every little detail about how methods in this assignment should work!** If you encounter a tough corner case (e.g., \"how should edge flip behave for a tetrahedron\"), we want you to _think about what a good **design choice** might be_, and implement it to the best of your ability. This activity is part of becoming a world-class developer. However, we are more than happy to discuss good design choices with you, and you should also feel free to discuss these choices with your classmates. Practically speaking, it is ok for routines to simply show an error if they encounter a rare and difficult corner case---as long as it does not interfere with successful operation of the program (i.e., if it does not crash or yield bizarre behavior). Your main goal here above all else should be to develop _effective tool for modeling, rendering, and animation_. ", + "url": "/", + "relUrl": "/" + },"15": { + "doc": "(Task 2) Intersections", + "title": "(Task 2) Intersections", + "content": "# (Task 2) Intersecting Objects Now that your ray tracer generates camera rays, we need to be able to answer the core query in ray tracing: \"does this ray hit this object?\" Here, you will start by implementing ray-object intersection routines against the two types of objects in the starter code: triangles and spheres. Later, we will use a BVH to accelerate these queries, but for now we consider an intersection test against a single object. First, take a look at the `rays/object.h` for the interface of `Object` class. An `Object` can be **either** a `Tri_Mesh`, a `Shape`, a BVH(which you will implement in Task 3), or a list of `Objects`. Right now, we are only dealing with `Tri_Mesh`'s case and `Shape`'s case, and their interfaces are in `rays/tri_mesh.h` and `rays/shapes.h`, respectively. `Tri_Mesh` contains a BVH of `Triangle`, and in this task you will be working with the `Triangle` class. For `Shape`, you are going to work with `Sphere`s, which is the major type of `Shape` in Scotty 3D. Now, you need to implement the `hit` routine for both `Triangle` and `Sphere`. `hit` takes in a ray, and returns a `Trace` structure, which contains information on whether the ray hits the object and if hits, the information describing the surface at the point of the hit. See `rays/trace.h` for the definition of `Trace`. In order to correctly implement `hit` you need to understand some of the fields in the Ray structure defined in `lib/ray.h`. * `point`: represents the 3D point of origin of the ray * `dir`: represents the 3D direction of the ray (this direction will be normalized) * `time_bounds`: correspond to the minimum and maximum points on the ray with its x-component as the lower bound and y-component as the upper bound. That is, intersections that lie outside the [`ray.time_bounds.x`, `ray.time_bounds.y`] range should not be considered valid intersections with the primitive. One important detail of the Ray structure is that `time_bounds` is a mutable field of the Ray. This means that this fields can be modified by constant member functions such as `Triangle::hit`. When finding the first intersection of a ray and the scene, you almost certainly want to update the ray's `time_bounds` value after finding each hit with scene geometry. By bounding the ray as tightly as possible, your ray tracer will be able to avoid unnecessary tests with scene geometry that is known to not be able to result in a closest hit, resulting in higher performance. --- ### **Step 1: Intersecting Triangles** The first intersect routine that the `hit` routines for the triangle mesh in `student/tri_mesh.cpp`. While faster implementations are possible, we recommend you implement ray-triangle intersection using the method described in the [lecture slides](http://15462.courses.cs.cmu.edu/fall2017/lecture/acceleratingqueries). Further details of implementing this method efficiently are given in [these notes](ray_triangle_intersection.md). There are two important details you should be aware of about intersection: * When finding the first-hit intersection with a triangle, you need to fill in the `Trace` structure with details of the hit. The structure should be initialized with: * `hit`: a boolean representing if there is a hit or not * `time`: the ray's _t_-value of the hit point * `position`: the exact position of the hit point. This can be easily computed by the `time` above as with the ray's `point` and `dir`. * `normal`: the normal of the surface at the hit point. This normal should be the interpolated normal (obtained via interpolation of the per-vertex normals according to the barycentric coordinates of the hit point) Once you've successfully implemented triangle intersection, you will be able to render many of the scenes in the media directory. However, your ray tracer will be very slow! While you are working with `student/tri_mesh.cpp`, you should implement `Triangle::bbox` as well, which are important for task 3. ### **Step 2: Intersecting Spheres** You also need to implement the `hit` routines for the `Sphere` class in `student/sphapes.cpp`. Remember that your intersection tests should respect the ray's `time_bound`. Because spheres always represent closed surfaces, you should not flip back-facing normals you did with triangles. Note: take care **not** to use the `Vec3::normalize()` method when computing your normal vector. You should instead use `Vec3::unit()`, since `Vec3::normalize()` will actually change the `Vec3` object passed in rather than returning a normalized version. --- [Visualization of normals](visualization_of_normals.md) might be very helpful with debugging. ", + "url": "/pathtracer/intersecting_objects", + "relUrl": "/pathtracer/intersecting_objects" + },"16": { + "doc": "Layout", + "title": "Layout", + "content": "# Layout This is the main scene editing mode in Scotty3D, and does not contain tasks for the student to implement. This mode allows you to load full scenes from disk, create or load new objects, export your scene (COLLADA format), and edit transformations that place each object into your scene. ## Creating Objects There are three ways to add objects to your scene: - `Import New Scene`: clears the current scene (!) and replaces it with objects loaded from a file on disk. - `Import Objects`: loads objects from a file, adding them to the current scene. - `New Object`: creates a new object from a choice of various platonic solids. To save your scene to disk (including all meshes and their transformations) use the `Export Scene` option. Scotty3D supports loading objects from the following file formats: - dae (COLLADA) - obj - fbx - gltf / glb - 3ds - stl - blend - ply Scotty3D only supports exporting scenes to COLLADA. ## Managing Objects Left clicking on or enabling the check box of your object under `Select an Object` will select it. Information about that object's transformation will appear under `Edit Object` beneath the \"Select an Object\" options. Under `Edit Object`, you may directly edit the values of the object's position, rotation (X->Y->Z Euler angles), and scale. Note that clicking and dragging on the values will smoothly scale them, and Control/Command-clicking on the value will let you edit it as text. You can also edit the transformation using the `Move`, `Rotate`, and `Scale` tools. One of these options is always active. This determines the transformation widgets that appear at the origin of the object model. - `Move`: click and drag on the red (X), green (Y), or blue (Z) arrow to move the object along the X/Y/Z axis. Click and drag on the red (YZ), green (XZ), or blue (XY) squares to move the object in the YZ/XZ/XY plane. - `Rotate`: click and drag on the red (X), green (Y), or blue (Z) loop to rotate the object about the X/Y/Z axis. Note that these rotations are applied relative to the current pose, so they do not necessarily correspond to smooth transformations of the X/Y/Z Euler angles. - `Scale`: click and drag on the red (X), green (Y), or blue(Z) block to scale the object about the X/Y/Z axis. Again note that this scale is applied relative to the current pose. Finally, you may remove the object from the scene by pressing `Delete` or hitting the Delete key. You may swap to `Model` mode with this mesh selected by pressing `Edit Mesh`. Note that if this mesh is non-manifold, this option will not appear. ## Key Bindings | Key | Command | :-------------------: | :--------------------------------------------: | `m` | Use the `Move` tool. | `r` | Use the `Rotate` tool. | `s` | Use the `Scale` tool. | `delete` | Delete the currently selected object. | ## Demo ", + "url": "/guide/layout_mode/", + "relUrl": "/guide/layout_mode/" + },"17": { + "doc": "Linear Subdivision", + "title": "Linear Subdivision", + "content": "# Linear Subdivision For an in-practice example, see the [User Guide](/Scotty3D/guide/model). Unlike most other global remeshing operations, linear (and Catmull-Clark) subdivision will proceed by completely replacing the original halfedge mesh with a new one. The high-level procedure is: 1. Generate a list of vertex positions for the new mesh. 2. Generate a list of polygons for the new mesh, as a list of indices into the new vertex list (a la \"polygon soup\"). 3. Using these two lists, rebuild the halfedge connectivity from scratch. Given these lists, `Halfedge_Mesh::from_poly` will take care of allocating halfedges, setting up `next` and `twin` pointers, etc., based on the list of polygons generated in step 2---this routine is already implemented in the Scotty3D skeleton code. Both linear and Catmull-Clark subdivision schemes will handle general _n_-gons (i.e., polygons with _n_ sides) rather than, say, quads only or triangles only. Each _n_-gon (including but not limited to quadrilaterals) will be split into _n_ quadrilaterals according to the following template: The high-level procedure is outlined in greater detail in `student/meshedit.cpp`. ### Vertex Positions For global linear or Catmull-Clark subdivision, the strategy for assigning new vertex positions may at first appear a bit strange: in addition to updating positions at vertices, we will also calculate vertex positions associated with the _edges_ and _faces_ of the original mesh. Storing new vertex positions on edges and faces will make it extremely convenient to generate the polygons in our new mesh, since we can still use the halfedge data structure to decide which four positions get connected up to form a quadrilateral. In particular, each quad in the new mesh will consist of: * one new vertex associated with a face from the original mesh, * two new vertices associated with edges from the original mesh, and * one vertex from the original mesh. For linear subdivision, the rules for computing new vertex positions are very simple: * New vertices at original faces are assigned the average coordinates of all corners of that face (i.e., the arithmetic mean). * New vertices at original edges are assigned the average coordinates of the two edge endpoints. * New vertices at original vertices are assigned the same coordinates as in the original mesh. These values should be assigned to the members `Face::new_pos`, `Edge::new_pos`, and `Vertex::new_pos`, respectively. For instance, `f->new_pos = Vec3( x, y, z );` will assign the coordinates (x,y,z) to the new vertex associated with face `f`. The general strategy for assigning these new positions is to iterate over all vertices, then all edges, then all faces, assigning appropriate values to `new_pos`. **Note:** you _must_ copy the original vertex position `Vertex::pos` to the new vertex position `Vertex::new_pos`; these values will not be used automatically. This step should be implemented in the method `Halfedge_Mesh::linear_subdivide_positions` in `student/meshedit.cpp`. Steps 2 and 3 are already implemented by `Halfedge_Mesh::subdivide` in `geometry/halfedge.cpp`. For your understanding, an explanation of how these are implemented is provided below: ### Polygons Recall that in linear and Catmull-Clark subdivision _all polygons are subdivided simultaneously_. In other words, if we focus on the whole mesh (rather than a single polygon), then we are globally * creating one new vertex for each edge, * creating one new vertex for each face, and * keeping all the vertices of the original mesh. These vertices are then connected up to form quadrilaterals (_n_ quadrilaterals for each _n_-gon in the input mesh). Rather than directly modifying the halfedge connectivity, these new quads will be collected in a much simpler mesh data structure: a list of polygons. Note that with this subdivision scheme, _every_ polygon in the output mesh will be a quadrilateral, even if the input contains triangles, pentagons, etc. In Scotty3D, a list of polygons can be declared as std::vector> quads; where `std::vector` is a [class from the C++ standard template library](http://en.cppreference.com/w/cpp/container/vector), representing a dynamically-sized array. An `Index` is just another name for a `size_t`, which is the standard C++ type for integers that specify an element of an array. Polygons can be created by allocating a list of appropriate size, then specifying the indices of each vertex in the polygon. For example: std::vector quad( 4 ); // allocate an array with four elements // Build a quad with vertices specified by integers (a,b,c,d), starting at zero. // These indices should correspond to the indices computing when assigning vertex // positions, as described above. quad[0] = a; quad[1] = b; quad[2] = c; quad[3] = d; Once a quad has been created, it can be added to the list of quads by using the method `vector::push_back`, which appends an item to a vector: std::vector> newPolygons; newPolygons.push_back( quad ); The full array of new polygons will then be passed to the method `Halfedge_Mesh::from_poly`, together with the new vertex positions. ", + "url": "/meshedit/global/linear/", + "relUrl": "/meshedit/global/linear/" + },"18": { + "doc": "Local Operations", + "title": "Local Operations", + "content": "# Local Mesh Operations Many of the actions that need to be implemented in the MeshEdit mode are local mesh operations (like edge collapse, face bevel, etc.). A good recipe for ensuring that all pointers are still valid after a local remeshing operation is: 1. Draw a picture of all the elements (vertices, edges, faces, halfedges) that will be needed from the original mesh, and all the elements that should appear in the modified mesh. 2. Allocate any new elements that are needed in the modified mesh, but do not appear in the original mesh. 3. For every element in the \"modified\" picture, set **all** of its pointers -- even if they didn't change. For instance, for each halfedge, make sure to set `next`, `twin`, `vertex`, `edge`, and `face` to the correct values in the new (modified) picture. For each vertex, make sure to set its `halfedge` pointer. Etc. A convenience method `Halfedge::set_neighbors()` has been created for this purpose. 4. Deallocate any elements that are no longer used in the modified mesh, which can be done by calling `Halfedge_Mesh::erase()`. The reason for setting all the pointers (and not just the ones that changed) is that it is very easy to miss a pointer, causing your code to crash. ### Interface with global mesh operations To facilitate user interaction, as well as global mesh processing operations (described below), local mesh operations should return the following values when possible. However, should it happen that the specified values are not available, or that the operation should not work on the given input, we need a way to signify the failure case. To do so, each local operation actually returns a ``std::optional`` value parameterized on the type of element it returns. For example, ``Halfedge_Mesh::erase_vertex`` returns a ``std::optional``. An ``optional`` can hold a value of the specified type, or, similarly to a pointer, a null value (``std::nullopt``). See ``student/meshedit.cpp`` for specific examples. Also, remember that in any case, _the program should not crash!_ So for instance, you should never return a pointer to an element that was deleted. See the [User Guide](/Scotty3D/guide/model) for demonstrations of each local operation. * `Halfedge_Mesh::flip_edge` - should return the edge that was flipped ![](flip_edge.svg) * `Halfedge_Mesh::split_edge` - should return the inserted vertex ![](split_edge.svg) * `Halfedge_Mesh::collapse_edge` - should return the new vertex, corresponding to the collapsed edge ![](collapse_edge.svg) * `Halfedge_Mesh::collapse_face` - should return the new vertex, corresponding to the collapsed face ![](collapse_face.svg) * `Halfedge_Mesh::erase_vertex` - should return the new face, corresponding to the faces originally containing the vertex ![](erase_vertex.svg) * `Halfedge_Mesh::erase_edge` - should return the new face, corresponding to the faces originally containing the edge ![](erase_edge.svg) * `Halfedge_Mesh::bevel_vertex` - should return the new face, corresponding to the beveled vertex ![](bevel_vertex.svg) * `Halfedge_Mesh::bevel_edge` - should return the new face, corresponding to the beveled edge ![](bevel_edge.svg) * `Halfedge_Mesh::bevel_face` - should return the new, inset face ![](bevel_face.svg) ", + "url": "/meshedit/local/", + "relUrl": "/meshedit/local/" + },"19": { + "doc": "Loop Subdivision", + "title": "Loop Subdivision", + "content": "# Loop Subdivision For an in-practice example, see the [User Guide](/Scotty3D/guide/model). Loop subdivision (named after [Charles Loop](http://charlesloop.com/)) is a standard approximating subdivision scheme for triangle meshes. At a high level, it consists of two basic steps: 1. Split each triangle into four by connecting edge midpoints (sometimes called \"4-1 subdivision\"). 2. Update vertex positions as a particular weighted average of neighboring positions. The 4-1 subdivision looks like this: ![4-1 Subdivision](loop_41.png) And the following picture illustrates the weighted average: ![Loop subdivision weights](loop_weights.png) In words, the new position of an old vertex is (1 - nu) times the old position + u times the sum of the positions of all of its neighbors. The new position for a newly created vertex v that splits Edge AB and is flanked by opposite vertices C and D across the two faces connected to AB in the original mesh will be 3/8 * (A + B) + 1/8 * (C + D). If we repeatedly apply these two steps, we will converge to a fairly smooth approximation of our original mesh. We will implement Loop subdivision as the `Halfedge_Mesh::loop_subdivide()` method. In contrast to linear and Catmull-Clark subdivision, Loop subdivision **must** be implemented using the local mesh operations described above (simply because it provides an alternative perspective on subdivision implementation, which can be useful in different scenarios). In particular, 4-1 subdivision can be achieved by applying the following strategy: 1. Split every edge of the mesh _in any order whatsoever_. 2. Flip any new edge that touches a new vertex and an old vertex. The following pictures (courtesy Denis Zorin) illustrate this idea: ![Subdivision via flipping](loop_flipping.png) Notice that only blue (and not black) edges are flipped in this procedure; as described above, edges in the split mesh should be flipped if and only if they touch both an original vertex _and_ a new vertex (i.e., a midpoint of an original edge). When working with dynamic mesh data structures (like a halfedge mesh), one must think **very carefully** about the order in which mesh elements are processed---it is quite easy to delete an element at one point in the code, then try to access it later (typically resulting in a crash!). For instance, suppose we write a loop like this: // iterate over all edges in the mesh for (EdgeRef e = mesh.edges_begin(); e != mesh.edges_end(); e++) { if (some condition is met) { mesh.split_edge(e); } } Although this routine looks straightforward, it can very easily crash! The reason is fairly subtle: we are iterating over edges in the mesh by incrementing the iterator `e` (via the expression `e++`). But since `split_edge()` is allowed to create and delete mesh elements, it might deallocate the edge pointed to by `e` before we increment it! To be safe, one should instead write a loop like this: // iterate over all edges in the mesh int n = mesh.n_edges(); EdgeRef e = mesh.edges_begin(); for (int i = 0; i < n; i++) { // get the next edge NOW! EdgeRef nextEdge = e; nextEdge++; // now, even if splitting the edge deletes it... if (some condition is met) { mesh.split_edge(e); } // ...we still have a valid reference to the next edge. e = nextEdge; } Note that this loop is just a representative example, the implementer must consider which elements might be affected by a local mesh operation when writing such loops. We recommend ensuring that your atomic edge operations provide certain guarantees. For instance, if the implementation of `Halfedge_Mesh::flip_edge()` guarantees that no edges will be created or destroyed (as it should), then you can safely do edge flips inside a loop without worrying about these kinds of side effects. For Loop subdivision, there are some additional data members that will make it easy to keep track of the data needed to update the connectivity and vertex positions. In particular: * `Vertex::new_pos` can be used as temporary storage for the new position (computed via the weighted average above). Note that one should _not_ change the value of `Vertex::pos` until _all_ the new vertex positions have been computed -- otherwise, subsequent computation will take averages of values that have already been averaged! * Likewise, `Edge::new_pos` can be used to store the position of the vertices that will ultimately be inserted at edge midpoints. Again, these values should be computed from the original values (before subdivision), and applied to the new vertices only at the very end. The `Edge::new_pos` value will be used for the position of the vertex that will appear along the old edge after the edge is split. We precompute the position of the new vertex before splitting the edges and allocating the new vertices because it is easier to traverse the simpler original mesh to find the positions for the weighted average that determines the positions of the new vertices. * `Vertex::is_new` can be used to flag whether a vertex was part of the original mesh, or is a vertex newly inserted by subdivision (at an edge midpoint). * `Edge::is_new` likewise flags whether an edge is a piece of an edge in the original mesh, or is an entirely new edge created during the subdivision step. Given this setup, we strongly suggest that it will be easiest to implement subdivision according to the following \"recipe\" (though the implementer is of course welcome to try doing things a different way!). The basic strategy is to _first_ compute the new vertex positions (storing the results in the `new_pos` members of both vertices and edges), and only _then_ update the connectivity. Doing it this way will be much easier, since traversal of the original (coarse) connectivity is much simpler than traversing the new (fine) connectivity. In more detail: 1. Mark all vertices as belonging to the original mesh by setting `Vertex::is_new` to `false` for all vertices in the mesh. 2. Compute updated positions for all vertices in the original mesh using the vertex subdivision rule, and store them in `Vertex::new_pos`. 3. Compute new positions associated with the vertices that will be inserted at edge midpoints, and store them in `Edge::new_pos`. 4. Split every edge in the mesh, being careful about how the loop is written. In particular, you should make sure to iterate only over edges of the original mesh. Otherwise, the loop will keep splitting edges that you just created! 5. Flip any new edge that connects an old and new vertex. 6. Finally, copy the new vertex positions (`Vertex::new_pos`) into the usual vertex positions (`Vertex::pos`). It may be useful to ensure `Halfedge_Mesh::split_edge()` will now return an iterator to the newly inserted vertex, and particularly that the halfedge of this vertex will point along the edge of the original mesh. This iterator is useful because it can be used to (i) flag the vertex returned by the split operation as a new vertex, and (ii) flag each outgoing edge as either being new or part of the original mesh. (In other words, Step 3 is a great time to set the members `is_new` for vertices and edges created by the split. It is also a good time to copy the `new_pos` field from the edge being split into the `new_pos` field of the newly inserted vertex.) We recommend implementing this algorithm in stages, e.g., _first_ see if you can correctly update the connectivity, _then_ worry about getting the vertex positions right. Some examples below illustrate the correct behavior of the algorithm. This subdivision rule **is not** required to support meshes with boundary, unless the implementer wishes to go above and beyond. ", + "url": "/meshedit/global/loop/", + "relUrl": "/meshedit/global/loop/" + },"20": { + "doc": "(Task 6) Materials", + "title": "(Task 6) Materials", + "content": "# (Task 6) Materials Now that you have implemented the ability to sample more complex light paths, it's finally time to add support for more types of materials (other than the fully Lambertian material that you have implemented in Task 5). In this task you will add support for two types of materials: a perfect mirror and glass (a material featuring both specular reflection and transmittance) in `student/bsdf.cpp`. To get started take a look at the BSDF interface in `rays/bsdf.h`. There are a number of key methods you should understand in `BSDF class`: * `Spectrum evaluate(Vec3 out_dir, Vec3 in_dir)`: evaluates the distribution function for a given pair of directions. * `BSDF_Sample sample(Vec3 out_dir)`: given the `out_dir`, generates a random sample of the in-direction (which may be a reflection direction or a refracted transmitted light direction). It returns a `BSDF_Sample`, which contains the in-direction(`direction`), its probability (`pdf`), as well as the `attenuation` for this pair of directions. (You do not need to worry about the `emissive` for the materials that we are asking you to implement, since those materials do not emit light.) There are also two helper functions in the BSDF class in `student/bsdf.cpp` that you will need to implement: * `Vec3 reflect(Vec3 dir)` returns a direction that is the **perfect specular reflection** direction corresponding to `dir` (reflection of `dir` about the normal, which in the surface coordinate space is [0,1,0]). More detail about specular reflection is [here](http://15462.courses.cs.cmu.edu/fall2015/lecture/reflection/slide_028). * `Vec3 refract(Vec3 out_dir, float index_of_refraction, bool& was_internal)` returns the ray that results from refracting the ray in `out_dir` about the surface according to [Snell's Law](http://15462.courses.cs.cmu.edu/fall2015/lecture/reflection/slide_032). The surface's index of refraction is given by the argument `index_of_refraction`. Your implementation should assume that if the ray in `out_dir` **is entering the surface** (that is, if `cos(out_dir, N=[0,1,0]) > 0`) then the ray is currently in vacuum (index of refraction = 1.0). If `cos(out_dir, N=[0,1,0]) ## Step 1 Implement the class `BSDF_Mirror` which represents a material with perfect specular reflection (a perfect mirror). You should Implement `BSDF_Mirror::sample`, `BSDF_Mirror::evaluate`, and `reflect`. **(Hint: what should the pdf sampled by `BSDF_Mirror::sample` be? What should the reflectance function `BSDF_Mirror::evalute` be?)** ## Step 2 Implement the class `BSDF_Glass` which is a glass-like material that both reflects light and transmit light. As discussed in class the fraction of light that is reflected and transmitted through glass is given by the dielectric Fresnel equations. Specifically your implementation should: * Implement `refract` to add support for refracted ray paths. * Implement `BSDF_refract::sample` as well as `BSDF_Glass::sample`. Your implementation should use the Fresnel equations to compute the fraction of reflected light and the fraction of transmitted light. The returned ray sample should be either a reflection ray or a refracted ray, with the probability of which type of ray to use for the current path proportional to the Fresnel reflectance. (e.g., If the Fresnel reflectance is 0.9, then you should generate a reflection ray 90% of the time. What should the pdf be in this case?) Note that you can also use [Schlick's approximation](https://en.wikipedia.org/wiki/Schlick's_approximation) instead. * You should read the notes below on the Fresnel equations as well as on how to compute a transmittance BSDF. ### Dielectrics and Transmission ### Fresnel Equations for Dielectric The [Fresnel Equations](https://en.wikipedia.org/wiki/Fresnel_equations) (another [link](http://hyperphysics.phy-astr.gsu.edu/hbase/phyopt/freseq.html) here) describe the amount of reflection from a surface. The description below is an approximation for dielectric materials (materials that don't conduct electricity). In this assignment you're asked to implement a glass material, which is a dielectric. In the description below, and refer to the index of refraction of the medium containing an incoming ray, and the zenith angle of the ray to the surface of a new medium. and refer to the index of refraction of the new medium and the angle to the surface normal of a transmitted ray. The Fresnel equations state that reflection from a surface is a function of the surface's index of refraction, as well as the polarity of the incoming light. Since our renderer doesn't account for polarity, we'll apply a common approximation of averaging the reflectance of polarizes light in perpendicular and parallel polarized light: The parallel and perpendicular terms are given by: Therefore, for a dielectric material, the fraction of reflected light will be given by , and the amount of transmitted light will be given by . Alternatively, you may compute using [Schlick's approximation](https://en.wikipedia.org/wiki/Schlick%27s_approximation). ### Distribution Function for Transmitted Light We described the BRDF for perfect specular reflection in class, however we did not discuss the distribution function for transmitted light. Since refraction \"spreads\" or \"condenses\" a beam, unlike perfect reflection, the radiance along the ray changes due to a refraction event. In your assignment you should use Snell's Law to compute the direction of refraction rays, and use the following distribution function to compute the radiance of transmitted rays. We refer you guys to Pharr, Jakob, and and Humphries's book [Physically Based Rendering](http://www.pbr-book.org/) for a derivation based on Snell's Law and the relation . (But you are more than welcome to attempt a derivation on your own!) When you are done, you will be able to render images like these: ", + "url": "/pathtracer/materials", + "relUrl": "/pathtracer/materials" + },"21": { + "doc": "Model", + "title": "Model", + "content": "# Model When in `Model` mode, Scotty3D provides a polygon-based 3D modeler with basic subdivision capabilities. The central modeling paradigm is \"box modeling\", i.e., starting with a simple cube, you can add progressively more detail to produce interesting 3D shapes. You can also use _subdivision_ to get smooth approximations of these shapes. MeshEdit supports four basic actions on mesh elements (move, rotate, scale, and bevel), plus a collection of local and global mesh editing commands. Note that MeshEdit (and more broadly, Scotty3D) will only operate on meshes that are _manifold_ (i.e., the union of faces containing any given vertex _v_ is a topological disk). Likewise, all mesh operations in Scotty3D will preserve the manifold property, i.e., manifold input will always get mapped to manifold output. This property is key for ensuring that many algorithms in Scotty3D are \"well-behaved\", and that it always produces nice output for other programs to use. If you load a mesh that is non-manifold, you can still use it in your scene and render with it, but editing will not be supported. ### Editing Mesh Elements In `Model` mode you can inspect mesh elements by left-clicking on vertices, edges, faces, and halfedges. Information about these elements will be shown in the left sidebar. In this mode you can change the geometry (i.e., the shape) of the mesh by transforming mesh elements in the same way you can transform scene objects. Note that the transformation widget again has three modes of operation, which you can toggle through by pressing the `r` key. - `Move`: click and drag on the red (X), green (Y), or blue (Z) arrow to move the object along the X/Y/Z axis. Click and drag on the red (YZ), green (XZ), or blue (XY) squares to move the object in the YZ/XZ/XY plane. - `Rotate`: click and drag on the red (X), green (Y), or blue (Z) loop to rotate the object about the X/Y/Z axis. Note that these rotations are applied relative to the current pose, so they do not necessarily correspond to smooth transformations of the X/Y/Z Euler angles. - `Scale`: click and drag on the red (X), green (Y), or blue(Z) block to scale the object about the X/Y/Z axis. Again note that this scale is applied relative to the current pose. ![selecting an edge](model_select.png) ### Beveling The bevel action creates a new copy of the selected element that is inset and offset from the original element. Clicking and dragging on an element will perform a bevel; the horizontal motion of the cursor controls the amount by which the new element shrinks or expands relative to the original element, and the vertical motion of the cursor controls the amount by which the new element is offset (in the normal direction) from the original element. It is important to note that a new element will be created upon click _even if no inset or offset is applied_. Therefore, if you're not careful you may end up with duplicate elements that are not immediately visible. (To check, you can drag one of the vertices mode.) There are three possible types of bevels: - Vertex Bevel: The selected vertex _v_ is replaced by a face _f_ whose vertices are connected to the edges originally incident on _v_. The new face is inset (i.e., shunken or expanded) by a user-controllable amount. - Edge Bevel: The selected edge _e_ is replaced by a face _f_ whose vertices are connected to the edges originally incident on the endpoints of _e_. The new face is inset and offset by some user-controllable amount, as with the vertex bevel. - Face Bevel: The selected face _f_ is replaced by a new face _g_, as well as a ring of faces around _g_, such that the vertices of _g_ connect to the original vertices of _f_. The new face is inset and offset by some user-controllable amount. ### Local Connectivity Editing In addition to beveling, a variety of commands can be used to alter the connectivity of the mesh (for instance, splitting or collapsing edges). These commands are applied by selecting a mesh element (in any mode) and pressing the appropriate key, as listed below. Local mesh editing operations include: - Erase Vertex: The selected vertex _v_ together with all incident edges and faces will be replaced with a single face _f_, that is the union of all faces originally incident on _v_. - Erase Edge: The selected edge _e_ will be replaced with the union of the faces containing it, producing a new face _e_ (if _e_ is a boundary edge, nothing happens). - Edge Collapse: The selected edge _e_ is replaced by a single vertex _v_. This vertex is connected by edges to all vertices previously connected to either endpoint of _e_. Moreover, if either of the polygons containing _e_ was a triangle, it will be replaced by an edge (rather than a degenerate polygon with only two edges). - Face Collapse: The selected face _f_ is replaced by a single vertex _v_. All edges previously connected to vertices of _f_ are now connected directly to _v_. - Edge Flip: The selected edge _e_ is \"rotated\" around the face, in the sense that each endpoint moves to the next vertex (in counter-clockwise order) along the boundary of the two polygons containing _e_. - Edge Split: [Note: this method is for triangle meshes only!] The selected edge _e_ is split at its midpoint, and the new vertex _v_ is connected to the two opposite vertices (or one in the case of a surface with boundary). ### Global Mesh Processing A number of commands can be used to create a more global change in the mesh (e.g., subdivision or simplification). These commands can be applied by pressing the appropriate sidebar button with a mesh selected. Note that in scenes with multiple meshes (e.g., those used by the path tracer), this command will be applied only to the selected mesh. - Triangulate: Each polygon is split into triangles. - Linear Subdivision: Each polygon in the selected mesh is split into quadrilaterals by inserting a vertex at the midpoint and connecting it to the midpoint of all edges. New vertices are placed at the average of old vertices so that, e.g., flat faces stay flat, and old vertices remain where they were. - Catmull-Clark Subdivision: _[Note: this method is for meshes without boundary only!]_ Just as with linear subdivision, each polygon is split into quadrilaterals, but this time the vertex positions are updated according to the [Catmull-Clark subdivision rules](https://en.wikipedia.org/wiki/Catmull_Clark_subdivision_surface), ultimately generating a nice rounded surface. - Loop Subdivision: _[Note: this method is for triangle meshes without boundary only!]_ Each triangle is split into four by connecting the edge midpoints. Vertex positions are updated according to the [Loop subdivision rules](https://en.wikipedia.org/wiki/Loop_subdivision_surface). - Isotropic Remeshing: _[Note: this method is for triangle meshes only!]_ The mesh is resampled so that triangles all have roughly the same size and shape, and vertex valence is close to regular (i.e., about six edges incident on every vertex). - Simplification _[Note: this method is for triangle meshes only!]_ The number of triangles in the mesh is reduced by a factor of about four, aiming to preserve the appearance of the original mesh as closely as possible. ### Key Bindings | Key | Command | :-------------------: | :--------------------------------------------: | `c` | Center the camera on the current element. | `m` | Use the `Move` tool. | `r` | Use the `Rotate` tool. | `s` | Use the `Scale` tool. | `b` | Use the `Bevel` tool. | `v` | Select the current halfedge's vertex | `e` | Select the current halfedge's edge | `f` | Select the current halfedge's face | `t` | Select the current halfedge's twin | `n` | Select the current halfedge's next | `h` | Select the current element's halfedge | `delete` | Erase the currently selected vertex or edge. | ", + "url": "/guide/model_mode/", + "relUrl": "/guide/model_mode/" + },"22": { + "doc": "A4: Animation", + "title": "A4: Animation", + "content": "# Animation Overview There are four primary components that must be implemented to support Animation functionality. **A4.0** - [(Task 1) Spline Interpolation](splines) - [(Task 2) Skeleton Kinematics](skeleton_kinematics) **A4.5** - [(Task 3) Linear Blend Skinning](skinning) - [(Task 4) Particle Simulation](particles) Each task is described at the linked page. ## Converting Frames to Video Additionally, we will ask you to create your own animation. Once you've rendered out each frame of your animation, you can combine them into a video by using: `ffmpeg -r 30 -f image2 -s 640x360 -pix_fmt yuv420p -i ./%4d.png -vcodec libx264 out.mp4` You may want to change the default `30` and `640x360` to the frame rate and resolution you chose to render at. If you don't have ffmpeg installed on your system, you can get it through most package managers, or you can [download it directly](https://ffmpeg.org/download.html). Alternatively, you may use your preferred video editing tool. ", + "url": "/animation/", + "relUrl": "/animation/" + },"23": { + "doc": "A2: MeshEdit", + "title": "A2: MeshEdit", + "content": "# MeshEdit Overview MeshEdit is the first major component of Scotty3D, which performs 3D modeling, subdivision, and mesh processing. When implementation of this tool is completed, it will enable the user to transform a simple cube model into beautiful, organic 3D surfaces described by high-quality polygon meshes. This tool can import, modify, and export industry-standard COLLADA files, allowing Scotty3D to interact with the broader ecosystem of computer graphics software. The `media/` subdirectory of the project contains a variety of meshes and scenes on which the implementation may be tested. The simple `cube.dae` input should be treated as the primary test case -- when properly implemented MeshEdit contains all of the modeling tools to transform this starting mesh into a variety of functional and beautiful geometries. For further testing, a collection of other models are also included in this directory, but it is not necessarily reasonable to expect every algorithm to be effective on every input. The implementer must use judgement in selecting meaningful test inputs for the algorithms in MeshEdit. The following sections contain guidelines for implementing the functionality of MeshEdit: - [Halfedge Mesh](halfedge) - [Local Mesh Operations](local) - [Tutorial: Edge Flip](local/edge_flip) - [Beveling](local/bevel) - [Global Mesh Operations](global) - [Triangulation](global/triangulate) - [Linear Subdivision](global/linear) - [Catmull-Clark Subdivision](global/catmull) - [Loop Subdivision](global/loop) - [Isotropic Remeshing](global/remesh) - [Simplification](global/simplify) As always, be mindful of the [project philosophy](..). ", + "url": "/meshedit/", + "relUrl": "/meshedit/" + },"24": { + "doc": "A3: Pathtracer", + "title": "A3: Pathtracer", + "content": "# PathTracer Overview PathTracer is (as the name suggests) a simple path tracer that can render scenes with global illumination. The first part of the assignment will focus on providing an efficient implementation of **ray-scene geometry queries**. In the second half of the assignment you will **add the ability to simulate how light bounces around the scene**, which will allow your renderer to synthesize much higher-quality images. Much like in MeshEdit, input scenes are defined in COLLADA files, so you can create your own scenes to render using Scotty3D or other free software like [Blender](https://www.blender.org/). Implementing the functionality of PathTracer is split in to 7 tasks, and here are the instructions for each of them: - [(Task 1) Generating Camera Rays](camera_rays) - [(Task 2) Intersecting Objects](intersecting_objects) - [(Task 3) Bounding Volume Hierarchy](bounding_volume_hierarchy) - [(Task 4) Shadow Rays](shadow_rays) - [(Task 5) Path Tracing](path_tracing) - [(Task 6) Materials](materials) - [(Task 7) Environment Lighting](environment_lighting) The files that you will work with for PathTracer are all under `src/student` directory. Some of the particularly important ones are outlined below. Methods that we expect you to implement are marked with \"TODO (PathTracer)\", which you may search for. You are also provided with some very useful debugging tool in `src/student/debug.h` and `src/student/debug.cpp`. Please read the comments in those two files to learn how to use them effectively. | File(s) | Purpose | Need to modify? |----------|-------------------|------------------| `student/pathtracer.cpp` | This is the main workhorse class. Inside the ray tracer class everything begins with the method `Pathtracer::trace_pixel` in pathtracer.cpp. This method computes the value of the specified pixel in the output image. | Yes | `student/camera.cpp` | You will need to modify `Camera::generate_ray` in Part 1 of the assignment to generate the camera rays that are sent out into the scene. | Yes | `student/tri_mesh.cpp`, `student/shapes.cpp` | Scene objects (e.g., triangles and spheres) are instances of the `Object` class interface defined in `rays/object.h`. You will need to implement the `bbox` and intersect routine `hit` for both triangles and spheres. | Yes |`student/bvh.inl`|A major portion of the first half of the assignment concerns implementing a bounding volume hierarchy (BVH) that accelerates ray-scene intersection queries. Note that a BVH is also an instance of the Object interface (A BVH is a scene object that itself contains other primitives.)|Yes|`rays/light.h`|Describes lights in the scene. The initial starter code has working implementations of directional lights and constant hemispherical lights.|No|`lib/spectrum.h`|Light energy is represented by instances of the Spectrum class. While it's tempting, we encourage you to avoid thinking of spectrums as colors -- think of them as a measurement of energy over many wavelengths. Although our current implementation only represents spectrums by red, green, and blue components (much like the RGB representations of color you've used previously in this class), this abstraction makes it possible to consider other implementations of spectrum in the future. Spectrums can be converted into a vector using the `Spectrum::to_vec` method.| No|`student/bsdf.cpp`|Contains implementations of several BSDFs (diffuse, mirror, glass). For each, you will define the distribution of the BSDF and write a method to sample from that distribution.|Yes|`student/samplers.cpp`|When implementing raytracing and environment light, we often want to sample randomly from a hemisphere, uniform grid, or shphere. This file contains various functions that simulate such random sampling.|Yes| ", + "url": "/pathtracer/", + "relUrl": "/pathtracer/" + },"25": { + "doc": "Particles", + "title": "Particles", + "content": "# Particle Simulation And now for something completely different: physics simulation for particles. ## Ray traced physics ", + "url": "/animation/particles", + "relUrl": "/animation/particles" + },"26": { + "doc": "(Task 5) Path Tracing", + "title": "(Task 5) Path Tracing", + "content": "# (Task 5) Path Tracing Up to this point, your renderer simulates light which begins at a source, bounces off a surface, and hits a camera. However in the real world, light can take much more complicated paths, bouncing of many surfaces before eventually reaching the camera. Simulating this multi-bounce light is referred to as _indirect illumination_, and it is critical to producing realistic images, especially when specular surfaces are present. In this task you will modify your ray tracer to simulate multi-bounce light, adding support for indirect illumination. You must modify `Pathtracer::trace_ray` to simulate multiple bounces. We recommend using the [Russian Roulette](http://15462.courses.cs.cmu.edu/spring2020/lecture/montecarloraytracing/slide_044) algorithm discussed in class. The basic structure will be as follows: * (1) Randomly select a new ray direction using `bsdf.sample` (which you will implement in Step 2) * (2) Potentially terminate the path (using Russian roulette) * (3) Recursively trace the ray to evaluate weighted reflectance contribution due to light from this direction. Remember to respect the maximum number of bounces from `max_depth` (which is a member of class `Pathtracer`). Don't forget to add in the BSDF emissive component! ## Step 2 Implement `BSDF_Lambertian::sample` for diffuse reflections, which randomly samples a direction from a uniform hemisphere distribution and returns a `BSDF_Sample`. Note that the interface is in `rays/bsdf.h`. Task 6 contains further discussion of sampling BSDFs, reading ahead may help your understanding. The implementation of `BSDF_Lambertian::evaluate` is already provided to you. Note: * When adding the recursive term to the total radiance, you will need to account for emissive materials, like the ceiling light in the Cornell Box (cbox.dae). To do this, simply add the BSDF sample's emissive term to your total radiance, i.e. `L += sample.emisssive`. * Functions in `student/sampler.cpp` from class `Sampler` contains helper functions for random sampling, which you will use for sampling. Our starter code uses uniform hemisphere sampling `Samplers::Hemisphere::Uniform sampler`(see `rays/bsdf.h` and `student/sampler.cpp`) which is already implemented. You are welcome to implement Cosine-Weighted Hemisphere sampling for extra credit, but it is not required. If you want to implement Cosine-Weighted Hemisphere sampling, fill in `Hemisphere::Cosine::sample` in `student/samplers.cpp` and then change `Samplers::Hemisphere::Uniform sampler` to `Samplers::Hemisphere::Cosine sampler` in `rays/bsdf.h`. --- After correctly implementing path tracing, your renderer should be able to make a beautifully lit picture of the Cornell Box. Below is the rendering result of 1024 sample per pixel. ![cornell_lambertian](new_results/lambertian.png) Note the time-quality tradeoff here. With these commandline arguments, your path tracer will be running with 8 worker threads at a sample rate of 1024 camera rays per pixel, with a max ray depth of 4. This will produce an image with relatively high quality but will take quite some time to render. Rendering a high quality image will take a very long time as indicated by the image sequence below, so start testing your path tracer early! Below are the result and runtime of rendering cornell box with different sample per pixel at 640 by 430 on Macbook Pro(3.1 GHz Dual-Core Intel Core i5). ![spheres](new_results/timing.png) Also note that if you have enabled Russian Roulette, your result may seem noisier, but should complete faster. The point of Russian roulette is not to increase sample quality, but to allow the computation of more samples in the same amount of time, resulting in a higher quality result. Here are a few tips: * The path termination probability should be computed based on the [overall throughput](http://15462.courses.cs.cmu.edu/fall2015/lecture/globalillum/slide_044) of the path. The throughput of the ray is recorded in its `throughput` member, which represents the multiplicative factor the current radiance will be affected by before contributing to the final pixel color. Hence, you should both use and update this field. To update it, simply multiply in the rendering equation factors: BSDF attenuation, `cos(theta)`, and (inverse) BSDF PDF. Remember to apply the coefficients from the current step before deriving the termination probability. Finally, note that the updated throughput should be copied to the recursive ray for later steps. Keep in mind that delta function BSDFs can take on values greater than one, so clamping termination probabilities derived from BSDF values to 1 is wise. * To convert a Spectrum to a termination probability, we recommend you use the luminance (overall brightness) of the Spectrum, which is available via `Spectrum::luma` * We've given you some [pretty good notes](http://15462.courses.cs.cmu.edu/fall2015/lecture/globalillum/slide_047) on how to do this part of the assignment, but it can still be tricky to get correct. ", + "url": "/pathtracer/path_tracing", + "relUrl": "/pathtracer/path_tracing" + },"27": { + "doc": "Ray Sphere Intersection", + "title": "Ray Sphere Intersection", + "content": "# Ray Sphere Intersection ", + "url": "/pathtracer/ray_sphere_intersection", + "relUrl": "/pathtracer/ray_sphere_intersection" + },"28": { + "doc": "Ray Triangle Intersection", + "title": "Ray Triangle Intersection", + "content": "# Ray Triangle Intersection We recommend that you implement the *Moller-Trumbore algorithm*, a fast algorithm that takes advantage of a barycentric coordinates parameterization of the intersection point, for ray-triangle intersection. A few final notes and thoughts: If the denominator _dot((e1 x d), e2)_ is zero, what does that mean about the relationship of the ray and the triangle? Can a triangle with this area be hit by a ray? Given _u_ and _v_, how do you know if the ray hits the triangle? Don't forget that the intersection point on the ray should be within the ray's `time_bound`. ", + "url": "/pathtracer/ray_triangle_intersection", + "relUrl": "/pathtracer/ray_triangle_intersection" + },"29": { + "doc": "Isotropic Remeshing", + "title": "Isotropic Remeshing", + "content": "# Isotropic Remeshing For an in-practice example, see the [User Guide](/Scotty3D/guide/model). Scotty3D also supports remeshing, an operation that keeps the number of samples roughly the same while improving the shape of individual triangles. The isotropic remeshing algorithm tries to make the mesh as \"uniform\" as possible, i.e., triangles as close as possible to equilateral triangles of equal size, and vertex degrees as close as possible to 6 (note: this algorithm is for **triangle meshes only**). The algorithm to be implemented is based on the paper [Botsch and Kobbelt, \"A Remeshing Approach to Multiresolution Modeling\"](http://graphics.uni-bielefeld.de/publications/disclaimer.php?dlurl=sgp04.pdf) (Section 4), and can be summarized in just a few simple steps: 1. If an edge is too long, split it. 2. If an edge is too short, collapse it. 3. If flipping an edge improves the degree of neighboring vertices, flip it. 4. Move vertices toward the average of their neighbors. Repeating this simple process several times typically produces a mesh with fairly uniform triangle areas, angles, and vertex degrees. However, each of the steps deserves slightly more explanation. ### Edge Splitting / Collapsing Ultimately we want all of our triangles to be about the same size, which means we want edges to all have roughly the same length. As suggested in the paper by Botsch and Kobbelt, we will aim to keep our edges no longer than 4/3rds of the **mean** edge length _L_ in the input mesh, and no shorter than 4/5ths of _L_. In other words, if an edge is longer than 4L/3, split it; if it is shorter than 4L/5, collapse it. We recommend performing all of the splits first, then doing all of the collapses (though as usual, you should be careful to think about when and how mesh elements are being allocated/deallocated). ### Edge Flipping We want to flip an edge any time it reduces the total deviation from regular degree (degree 6). In particular, let _a1_, _a2_ be the degrees of an edge that we're thinking about flipping, and let _b1_, _b2_ be the degrees of the two vertices across from this edge. The total deviation in the initial configuration is `|a1-6| + |a2-6| + |b1-6| + |b2-6|`. You should be able to easily compute the deviation after the edge flip **without actually performing the edge flip**; if this number decreases, then the edge flip should be performed. We recommend flipping all edges in a single pass, after the edge collapse step. ### Vertex Averaging Finally, we also want to optimize the geometry of the vertices. A very simple heuristic is that a mesh will have reasonably well-shaped elements if each vertex is located at the center of its neighbors. To keep your code clean and simple, we recommend using the method `Vertex::neighborhood_center()`, which computes the average position of the vertex's neighbors. Note that you should not use this to immediately replace the current position: we don't want to be taking averages of vertices that have already been averaged. Doing so can yield some bizarre behavior that depends on the order in which vertices are traversed (if you're interested in learning more about this issue, Google around for the terms \"Jacobi iterations\" and \"Gauss-Seidel). So, the code should (i) first compute the new positions (stored in `Vertex::new_pos`) for all vertices using their neighborhood centroids, and (ii) _then_ update the vertices with new positions (copy `new_pos` to `pos`). How exactly should the positions be updated? One idea is to simply replace each vertex position with its centroid. We can make the algorithm slightly more stable by moving _gently_ toward the centroid, rather than immediately snapping the vertex to the center. For instance, if _p_ is the original vertex position and _c_ is the centroid, we might compute the new vertex position as _q_ = _p_ + _w_(_c_ - _p_) where _w_ is some weighting factor between 0 and 1 (we use 1/5 in the examples below). In other words, we start out at _p_ and move a little bit in the update direction _v_ = _c_ - _p_. Another important issue arises if the update direction _v_ has a large _normal_ component, then we'll end up pushing the surface in or out, rather than just sliding our sample points around on the surface. As a result, the shape of the surface will change much more than we'd like (try it!). To ameliorate this issue, we will move the vertex only in the _tangent_ direction, which we can do by projecting out the normal component, i.e., by replacing _v_ with _v_ - dot(_N_,_v_)_N_, where _N_ is the unit normal at the vertex. To get this normal, you will implement the method `Vertex::normal()`, which computes the vertex normal as the area-weighted average of the incident triangle normals. In other words, at a vertex i the normal points in the direction where A_ijk is the area of triangle ijk, and N_ijk is its unit normal; this quantity can be computed directly by just taking the cross product of two of the triangle's edge vectors (properly oriented). ### Implementation The final implementation requires very little information beyond the description above; the basic recipe is: 1. Compute the mean edge length _L_ of the input. 2. Split all edges that are longer than 4L/3. 3. Collapse all edges that are shorter than 4L/5. 4. Flip all edges that decrease the total deviation from degree 6. 5. Compute the centroids for all the vertices. 6. Move each vertex in the tangent direction toward its centroid. Repeating this procedure about 5 or 6 times should yield results like the ones seen below; you may want to repeat the smoothing step 10-20 times for each \"outer\" iteration. ", + "url": "/meshedit/global/remesh/", + "relUrl": "/meshedit/global/remesh/" + },"30": { + "doc": "Render", + "title": "Render", + "content": "# Render Welcome! This is Scotty3D's realistic, globally illuminated renderer, capable of creating images of complex scenes using path tracing. ## Render Window In render mode, click on \"Open Render Window\", and you will be able to set the parameters to render your model. Enjoy the excitement of seeing the images becoming clearer and clearer ;-) ![light](window.png) ## Moving Camera The render mode comes with its own camera, representing the position, view direction, field of view, and aspect ratio with which to render the scene. These parameters are visually represented by the camera control cage, which shows up as a black wire-frame pyramid that traces out the unit-distance view plane. Note that changing camera settings (e.g. field of view) will adjust the geometry of the camera cage. To move the render camera to the current view, click \"Move to View.\" This will reposition the camera so that it has exactly what you have on screen in view. To freely move the camera without updating its field of view/aspect ratio to match the current viewport, click \"Free Move,\" and use the normal 3D navigation tools to position the camera. When you are done, click \"Confirm Move\" or \"Cancel Move\" to apply or cancel the updated camera position. Feel free to play around with the field of view (FOV) and aspect ratio (AR) sliders while in the free move mode - they will adjust your current view to use these values, so you can see how exactly the effect the visible region. ## Create light To create a lighting for your scene, simply go to the menu on the left side, click \"New Light\", and you will be able to choose from a variaty of light objects and environmental lights. (you will implement the support for environmental light in Task 7. See the corresponding documentation for more guide.) ![light](light.png) ## Enable Ray Logging for Debugging In Render mode, simply check the box for \"Logged Rays\", and you would be able to see the camera rays that you generated in task 1 when you start render. ![ray](log_ray.png) ## Visualize BVH In Render mode, simply check the box for \"BVH\", and you would be able to see the BVH you generated in task 3 when you start rendering. You can click on the horizontal bar to see each level of your BVH. ![ray](bvh.png) ## Materials and Other Object Options You can change the material and other property of your mesh by selecting the object and choose \"Edit Pose\", \"Edit Mesh\", and \"Edit Material\". For example, you can make a colored cow by \"Edit Material\" -> \"Diffuse light\", and pick a color that you like. ![material](material.png) ", + "url": "/guide/render_mode/", + "relUrl": "/guide/render_mode/" + },"31": { + "doc": "Rig", + "title": "Rig", + "content": "# Rig ### Rigging Setup Select the `Rig` tab to create a skeletal rig for an object. You can create new bone by first selecting a parent joint and pressing `New Bone`, then click anywhere else on the object to place the bone. From thereon, you can repeat this process to create a chain of bones connected along the selected joint. If you want to branch off at a joint, simply click on the joint to branch off of, then start another chain by adding a new bone from there. To view a rigged example, see `media/human.dae` example and select the object in the Rig tab to view its joints. Once you've implemented forward kinematics the skeleton should be setup like so: ![rigged-human](guide-rigging-human.png) ### Editing Skinning Weight Threshold Radius Each joint has an associated `Radius` which controls the part of the mesh influenced by the selected bone during animaton. The radius is visualized by the blue capsule around each bone and can be edited using the menu. The position of the joint can also be edited using the `Extent` values in the menu. Note that rigging only uses extents of the bone for skeleton setup, joint pose does not influence the skeleton. Once rigging is done, the object can be posed by changing joint rotations in the [animate](../animate_mode) mode. ## Inverse Kinematics Instead of computing the positions of the bones from the joint poses (forward kinematics), in inverse kinematics, joint positions are computed from target positions. To associate a target position with a joint, select `Add IK` and edit the target position. Multiple target positions can be associated with the same joint but targets need to be explicitly enabled using the checkbox. In the [animate](../animate_mode) mode, once inverse kinematics is implemented, joint rotation(pose) is updated based on the enabled IK handles. ", + "url": "/guide/rigging_mode/", + "relUrl": "/guide/rigging_mode/" + },"32": { + "doc": "(Task 4) Shadow Rays", + "title": "(Task 4) Shadow Rays", + "content": "# (Task 4) Shadow Rays In this task you will modify `Pathtracer::trace_ray` to implement accurate shadows. Currently `Pathtracer::trace_ray` computes the following: * It computes the intersection of ray `r` with the scene. * It computes the amount of light arriving at the hit point `hit.position` (the irradiance at the hit point) by integrating radiance from all scene light sources. * It computes the radiance reflected from the hit point in the direction of -`r`. (The amount of reflected light is based on the BSDF of the surface at the hit point.) Shadows occur when another scene object blocks light emitted from scene light sources towards the hit point. Fortunately, determining whether or not a ray of light from a light source to the hit point is occluded by another object is easy given a working ray tracer (which you have at this point!). **You simply want to know whether a ray originating from the hit point (`hit.position`), and traveling towards the light source (direction to light) hits any scene geometry before reaching the light.** (Note that you need to consider light's distance from the hit point is given, more on this in the notes below.) Your job is to implement the logic needed to compute whether hit point is in shadow with respect to the current light source sample. Below are a few notes: * In the starter code, when we call `light.sample(hit.position)`, it returns us a `Light_sample sample` at the hit point . (You might want to take a look at `rays/light.h` for the definition of `struct Light_sample` and `class light`.) A `Light_sample` contains fields `radiance`, `pdf`, `direction`, and `distance`. In particular, `sample.direction` is the direction from the hit point to the light source, and `sample.distance` is the distance from the hit point to the light source. * A common ray tracing pitfall is for the \"shadow ray\" shot into the scene to accidentally hit the same objecr as `r` (the surface is erroneously determined to be occluded because the shadow ray is determined to hit the surface!). We recommend that you make sure the origin of the shadow ray is offset from the surface to avoid these erroneous \"self-intersections\". For example, consider setting the origin of the shadow ray to be `hit.position + epsilon * sample.direction` instead of simply `hit.position`. `EPS_F` is defined in for this purpose(see `lib/mathlib.h`). * Another common pitfall is forgetting that it doesn't matter if the shadow ray hits any scene geometry after reaching the light. Note that the light's distance from the hit point is given by `sample.distance`. Also note that `Ray` has a member called `time_bound`... * You will find it useful to debug your shadow code using the `DirectionalLight` since it produces hard shadows that are easy to reason about. * You would want to comment out the line `Spectrum radiance_out = Spectrum(0.5f);` and initialize the `radiance_out` to a more reasonable value. Hint: is there supposed to have any amount of light before we even start considering each light sample? At this point you should be able to render very striking images. ## Sample results: At this point, you can add all kinds of lights among the options you have when you create \"New Light\" in Layout mode, except for Sphere Light and Environment Map which you will implement in task 7 (Note that you can still fill in `Sphere::Uniform::sample` in `Samplers.cpp` now to view the result of a mesh under Sphere Light). The head of Peter Schröder rendered with hemishphere lighting. A sphere and a cube with hemishphere lighting Hex and cube under directional lighting Bunny on a plane under point light Spot on a sphere under diretional lighting Spot on a sphere under hemisphere lighting ", + "url": "/pathtracer/shadow_rays", + "relUrl": "/pathtracer/shadow_rays" + },"33": { + "doc": "Simplification", + "title": "Simplification", + "content": "# Simplification ![Surface simplification via quadric error metric](quad_simplify.png) For an in-practice example, see the [User Guide](/Scotty3D/guide/model). Just as with images, meshes often have far more samples than we really need. The simplification method in Scotty3D simplifies a given triangle mesh by applying _quadric error simplification_ (note that this method is for **triangle meshes only**!). This method was originally developed at CMU by Michael Garland and Paul Heckbert, in their paper [Surface Simplification Using Quadric Error Metrics](http://www.cs.cmu.edu/~./garland/quadrics/quadrics.html). (Looking at this paper -- or the many slides and presentations online that reference it -- may be very helpful in understanding and implementing this part of the assignment!) The basic idea is to iteratively collapse edges until we reach the desired number of triangles. The more edges we collapse, the simpler the mesh becomes. The only question is: which edges should we collapse? And where should we put the new vertex when we collapse an edge? Finding the sequence of edge collapses (and vertex positions) that give an _optimal_ approximation of the surface would be very difficult -- likely impossible! Garland and Heckbert instead proposed a simple, greedy scheme that works quite well in practice, and is the basis of many mesh simplification tools today. Roughly speaking, we're going to write down a function that measures the distance to a given triangle, and then \"accumulate\" this function as many triangles get merged together. More precisely, we can write the distance d of a point _x_ to a plane with normal _N_ passing through a point _p_ as dist(_x_) = dot(_N_, _x_ - _p_) In other words, we measure the extent of the vector from _p_ to _x_ along the normal direction. This quantity gives us a value that is either _positive_ (above the plane), or _negative_ (below the plane). Suppose that _x_ has coordinates (_x_,_y_,_z_), _N_ has coordinates (_a_,_b_,_c_), and let _d_(_x_) = -dot(_N_, _p_), then in _homogeneous_ coordinates, the distance to the plane is just dot(_u_, _v_) where _u_ = (_x_,_y_,_z_,_1_) and _v_ = (_a_,_b_,_c_,_d_). When we're measuring the quality of an approximation, we don't care whether we're above or below the surface; just how _far away_ we are from the original surface. Therefore, we're going to consider the _square_ of the distance, which we can write in homogeneous coordinates as where T denotes the transpose of a vector. The term _vv_^T is an [outer product](https://en.wikipedia.org/wiki/Outer_product) of the vector _v_ with itself, which gives us a symmetric matrix _K_ = _vv_^T. In components, this matrix would look like a^2 ab ac ad ab b^2 bc bd ac bc c^2 cd ad bd cd d^2 but in Scotty3D it can be constructed by simply calling the method `outer( Vec4, Vec4 )` in `lib/mat4.h` that takes a pair of vectors in homogeneous coordinates and returns the outer product as a 4x4 matrix. We will refer to this matrix as a \"quadric,\" because it also describes a [quadric surface](https://en.wikipedia.org/wiki/Quadric). The matrix _K_ tells us something about the distance to a plane. We can also get some idea of how far we are from a _vertex_ by considering the sum of the squared distances to the planes passing through all triangles that touch that vertex. In other words, we will say that the distance to a small neighborhood around the vertex i can be approximated by the sum of the quadrics on the incident faces ijk: Likewise, the distance to an _edge_ ij will be approximated by the sum of the quadrics at its two endpoints: The sums above should then be easy to compute -- you can just add up the `Mat4` objects around a vertex or along an edge using the usual \"+\" operator. You do not need to write an explicit loop over the 16 entries of the matrix. Once you have a quadric _K_ associated with an edge _ij_, you can ask the following question: if we collapse the edge to a point _x_, where should we put the new point so that it minimizes the (approximate) distance to the original surface? In other words, where should it go so that it minimizes the quantity _x_^T _K x_? Just like any other function, we can look for the minimum by taking the derivative with respect to _x_ and setting it equal to zero. (By the way, in this case we're always going to get a _minimum_ and not a _maximum_ because the matrices K are all [positive-definite](https://en.wikipedia.org/wiki/Positive-definite_matrix).) In other words, we want to solve the small (4x4) linear system _K u_ = _0_ for the optimal position _u_, expressed in homogeneous coordinates. We can simplify this situation a bit by remembering that the homogeneous coordinate for a point in 3-space is just 1\\. After a few simple manipulations, then, we can rewrite this same system as an even smaller 3x3 linear system _Ax_ = _b_ where A is the upper-left 3x3 block of K, and b is _minus_ the upper-right 3x1 column. In other words, the entries of A are just and the entries of b are The cost associated with this solution can be found by plugging _x_ back into our original expression, i.e., the cost is just _x_^T _K_ _x_ where _K_ is the quadric associated with the edge. Fortunately, _you do not need to write any code to solve this linear system_. It can be solved using the method `Mat4::inverse()` which computes the inverse of a 4x4 matrix. Note that while we really want to work with a 3x3 matrix here, using the upper left 3x3 block of a 4x4 matrix is equivalent, given that the 4th row/column remain as in the identity matrix. In particular, you can write something like this: Mat4 A; // computed by accumulating quadrics and then extacting the upper-left 3x3 block Vec3 b; // computed by extracting minus the upper-right 3x1 column from the same matrix Vec3 x = A.inverse() * b; // solve Ax = b for x by hitting both sides with the inverse of A However, A might not always be invertible: consider the case where the mesh is composed of points all on the same plane. In this case, you need to select an optimal point along the original edge. Please read [Garland's paper](http://reports-archive.adm.cs.cmu.edu/anon/1999/CMU-CS-99-105.pdf) on page 62 section 3.5 for more details. If you're a bit lost at this point, don't worry! There are a lot of details to go through, and we'll summarize everything again in the implementation section. The main idea to keep in mind right now is: * we're storing a matrix at every vertex that encodes (roughly) the distance to the surface, and * for each edge, we want to find the point that is (roughly) as close as possible to the surface, according to the matrices at its endpoints. As we collapse edges, the matrices at endpoints will be combined by just adding them together. So, as we perform more and more edge collapses, these matrices will try to capture the distance to a larger and larger region of the original surface. The one final thing we want to think about is performance. At each iteration, we want to collapse the edge that results in the _least_ deviation from our original surface. But testing every edge, every single iteration sounds pretty expensive! (Something like O(n^2).) Instead, we're going to put all our edges into a [priority queue](https://en.wikipedia.org/wiki/Priority_queue) that efficiently keeps track of the \"best\" edge for us, even as we add and remove edges from our mesh. In the code framework, we actually introduce a new class called an `Edge_Record` that encodes all the essential information about our edge: // An edge record keeps track of all the information about edges // that we need while applying our mesh simplification algorithm. class Edge_Record { public: Edge_Record() {} Edge_Record(std::unordered_map& vertex_quadrics, Halfedge_Mesh::EdgeRef e) : edge(e) { // The second constructor takes a dictionary mapping vertices // to quadric error matrices and an edge reference. It then // computes the sum of the quadrics at the two endpoints // and solves for the optimal midpoint position as measured // by this quadric. It also stores the value of this quadric // as the \"score\" used by the priority queue. } EdgeRef edge; // the edge referred to by this record Vec3 optimal; // the optimal point, if we were // to collapse this edge next float cost; // the cost associated with collapsing this edge, // which is very (very!) roughly something like // the distance we'll deviate from the original // surface if this edge is collapsed }; Within `Halfedge_Mesh::simplify`, you will create a dictionary `vertex_quadrics` mapping vertices to quadric error matrices. We will use a `std::unordered_map` for this purpose, which is the hash map provided by the STL. Its usage is detailed in the [C++ documentation](https://en.cppreference.com/w/cpp/container/unordered_map). To initialize the record for a given edge `e`, you can use this dictionary to write Edge_Record record(vertex_quadrics, e); Similarly to how we created a dictionary mapping vertices to quadric matrices, we will also want to associate this record with its edge using the `edge_records` dictionary: edge_records[e] = record; Further, we will want to add the record to a priority queue, which is always sorted according to the cost of collapsing each edge. The starter code also provides the helper class `PQueue` for this purpose. For example: PQueue queue; queue.insert(record); If we ever want to know what the best edge is to collapse, we can just look at the top of the priority queue: Edge_Record bestEdge = queue.top(); More documentation is provided inline in `student/meshedit.cpp`. Though conceptually sophisticated, quadric error simplification is actually not too hard to implement. It basically boils down to two methods: Edge_Record::Edge_Record(std::unordered_map& vertex_quadrics, EdgeIter e); Halfedge_Mesh::simplify(); As discussed above, the edge record initializer should: 1. Compute a quadric for the edge as the sum of the quadrics at endpoints. 2. Build a 3x3 linear system for the optimal collapsed point, as described above. 3. Solve this system and store the optimal point in `Edge_Record::optimal`. 4. Compute the corresponding error value and store it in `Edge_Record::cost`. 5. Store the edge in `Edge_Record::edge`. The downsampling routine can then be implemented by following this basic recipe: 1. Compute quadrics for each face by simply writing the plane equation for that face in homogeneous coordinates, and building the corresponding quadric matrix using `outer()`. This matrix should be stored in the yet-unmentioned dictionary `face_quadrics`. 2. Compute an initial quadric for each vertex by adding up the quadrics at all the faces touching that vertex. This matrix should be stored in `vertex_quadrics`. (Note that these quadrics must be updated as edges are collapsed.) 3. For each edge, create an `Edge_Record`, insert it into the `edge_records` dictionary, and add it to one global `PQueue` queue. 4. Until a target number of triangles is reached, collapse the best/cheapest edge (as determined by the priority queue) and set the quadric at the new vertex to the sum of the quadrics at the endpoints of the original edge. You will also have to update the cost of any edge connected to this vertex. The algorithm should terminate when a target number of triangles is reached -- for the purpose of this assignment, you should set this number to 1/4th the number of triangles in the input (since subdivision will give you a factor of 4 in the opposite direction). Note that to _get_ the best element from the queue you call `PQueue::top()`, whereas to _remove_ the best element from the top you must call `PQueue::pop()` (the separation of these two tasks is fairly standard in STL-like data structures). As with subdivision, it is critical that you carefully reason about which mesh elements get added/deleted in what order -- particularly in Step 4\\. A good way to implement Step 4 would be: 1. Get the cheapest edge from the queue. 2. **Remove the cheapest edge from the queue by calling `pop()`.** 3. Compute the new quadric by summing the quadrics at its two endpoints. 4. **Remove any edge touching either of its endpoints from the queue.** 5. Collapse the edge. 6. Set the quadric of the new vertex to the quadric computed in Step 3. 7. **Insert any edge touching the new vertex into the queue, creating new edge records for each of them.** Steps 4 and 7 are highlighted because it is easy to get these steps wrong. For instance, if you collapse the edge first, you may no longer be able to access the edges that need to be removed from the queue. A working implementation should look something like the examples below. You may find it easiest to implement this algorithm in stages. For instance, _first_ get the edge collapses working, using just the edge midpoint rather than the optimal point, _then_ worry about solving for the point that minimizes quadric error. ", + "url": "/meshedit/global/simplify/", + "relUrl": "/meshedit/global/simplify/" + },"34": { + "doc": "Simulate", + "title": "Simulate", + "content": "# Simulate The simulation view provides a way to create and manage particle emitters. To add an emitter, open the dropdown menu, adjust desired parameters, and press `Add`. ![add emitter](simulate_mode/add_emitter.png) - Color: color with which to render the particles. - Angle: angle of cone within which particles are generated (pointing in the emitter object's direction). - Scale: the scale factor to apply to the particle mesh when rendering particles. - Lifetime: how long (in seconds) each particle should live before it is deleted. - Particles/Sec: how many particles should be generated per second. The total amount of live particles is hence `lifetime * particles_per_second`. - Particle: choose the shape of each particle. If mesh objects are present in the scene, they will also show up here, allowing the creation of particles with custom shapes. - Enabled: whether to immediately enable the emitter Once an enabled emitter is added to the scene (and animation task 4: particle simulation is implemented), particles will start generating and following trajectories based on the emitter parameters. Particles should collide with scene objects. When moving existing objects that particles interact with, the simulation will not be updated until the movement is completed. For example, the `particles.dae` test scene: Finally, note that you can render particles just like any other scene objects. In the path tracer, each particle is also a point light source! Rendering `particles.dae` with depth of field: ![particles render](simulate_mode/render.png) ", + "url": "/guide/simulate_mode/", + "relUrl": "/guide/simulate_mode/" + },"35": { + "doc": "Skeleton Kinematics", + "title": "Skeleton Kinematics", + "content": "# Skeleton Kinematics A `Skeleton`(defined in `scene/skeleton.h`) is what we use to drive our animation. You can think of them like the set of bones we have in our own bodies and joints that connect these bones. For convenience, we have merged the bones and joints into the `Joint` class which holds the orientation of the joint relative to its parent as euler angle in its `pose`, and `extent` representing the direction and length of the bone with respect to its parent `Joint`. Each `Mesh` has an associated `Skeleton` class which holds a rooted tree of `Joint`s, where each `Joint` can have an arbitrary number of children. All of our joints are ball `Joint`s which have a set of 3 rotations around the , , and axes, called _Euler angles_. Whenever you deal with angles in this way, a fixed order of operations must be enforced, otherwise the same set of angles will not represent the same rotation. In order to get the full rotational transformation matrix, , we can create individual rotation matrices around the , , and axes, which we call , , and respectively. The particular order of operations that we adopted for this assignment is that . ### Forward Kinematics _Note: These diagrams are in 2D for visual clarity, but we will work with a 3D kinematic skeleton._ When a joint's parent is rotated, that transformation should be propagated down to all of its children. In the diagram below, is the parent of and is the parent of . When a translation of and rotation of is applied to , all of the descendants are affected by this transformation as well. Then, is rotated by which affects itself and . Finally, when rotation of is applied to , it only affects itself because it has no children. You need to implement these routines in `student/skeleton.cpp` for forward kinematics. * `Joint::joint_to_bind` Rreturn a matrix transforming points in the space of this joint to points in mesh space in bind position up to the base of this joint (end of its parent joint). You should traverse upwards from this joint's parent all the way up to the root joint and accumulate their transformations. * `Joint::joint_to_posed` Return a matrix transforming points in the space of this joint to points in mesh space, taking into account joint poses. Again, you should traverse upwards from this joint's parent to the root joint. * `Skeleton::end_of` Returns the end position of the joint in world coordinate frame, and you should take into account the base position of the skeleton (`Skeleton::base_pos`). * `Skeleton::posed_end_of` Returns the end position of the joint in world coordinate frame with poses, and you should take into account `Skeleton::base_pos`. * `Skeleton::joint_to_bind` Rreturn a matrix transforming points in the space of this joint to points in mesh space in bind position but with the base position of the skeleton taken in to account. Hint: use some function that you have implemented wisely! * `Skeleton::joint_to_posed` Return a matrix transforming points in the space of this joint to points in mesh space, taking into account joint poses but with the base position of the skeleton taken in to account. Hint: use some function that you have implemented wisely! Once you have implemented these basic kinematics, you should be able to define skeletons, set their positions at a collection of keyframes, and watch the skeleton smoothly interpolate the motion (see the [user guide](../guide/animate.md) for an explanation of the interface). The gif below shows a very hasty demo defining a few joints and interpolating their motion. Note that the skeleton does not yet influence the geometry of the cube in this scene -- that will come in Task 3! ### Task 2b - Inverse Kinematics ### Single Target IK Now that we have a logical way to move joints around, we can implement Inverse Kinematics, which will move the joints around in order to reach a target point. There are a few different ways we can do this, but for this assignment we'll implement an iterative method called gradient descent in order to find the minimum of a function. For a function , we'll have the update scheme: Where is a small timestep. For this task, we'll be using gradient descent to find the minimum of the cost function: Where is the position in world space of the target joint, and is the position in world space of the target point. More specifically, we'll be using a technique called Jacobian Transpose, which relies on the assumption: Where: * (n x 1) is the function , where is the angle of joint around the axis of rotation * is a constant * (3 x n) is the Jacobian of Note that here refers to the number of joints in the skeleton. Although in reality this can be reduced to just the number of joints between the target joint and the root, inclusive, because all joints not on that path should stay where they are, so their columns in will be 0\\. So can just be the number of joints between the target and the root, inclusive. Additionally note that since this will get multiplied by anyways, you can ignore the value of , and just consider the timestep as . Now we just need a way to calcluate the Jacobian of . For this, we can use the fact that: Where: * is the column of * is the axis of rotation * is the vector from the base of joint to the end point of the target joint For a more in-depth derivation of Jacobian transpose (and a look into other inverse kinematics algorithms), please check out [this presentation](https://web.archive.org/web/20190501035728/https://autorob.org/lectures/autorob_11_ik_jacobian.pdf). (Pages 45-56 in particular) Now, all of this will work for updating the angle along a single axis, but we have 3 axes to deal with. Luckily, extending it to 3 dimensions isn't very difficult, we just need to update the angle along each axis independently. ### Multi-Target We'll extend this so we can have multiple targets, which will then use the function to minimize: which is a simple extension actually. Since each term is independent and added together, we can get the gradient of this new cost function just by summing the gradients of each of the constituent cost functions! You should implement multi-target IK, which will take a `vector` of `IK_Handle*`s called `active_handles` which stores the information a target point for a joint. See `scene/skeleton.h` for the definition of `IK_Handle` structure. In order to implement this, you should update `Joint::compute_gradient` and `Skeleton::step_ik`. `Joint::compute_gradient` should calculate the gradient of in the x,y, and z directions, and add them to `Joint::angle_gradient` for all relevant joints. `Skeleton::step_ik` should actually do the gradient descent calculations and update the `pose` of each joint. In this function, you should probably use a very small timestep, but do several iterations (say, 10s to 100s) of gradient descent in order to speed things up. For even faster and better results, you can also implement a variable timestep instead of just using a fixed one. Note also that the root joint should never be updated. A key thing for this part is to _remember what coordinate frame you're in_, because if you calculate the gradients in the wrong coordinate frame or use the axis of rotation in the wrong coordinate frame your answers will come out very wrong! ### Using your IK! Once you have IK implemented, you should be able to create a series of joints, and get a particular joint to move to the desired final position you have selected. ", + "url": "/animation/skeleton_kinematics", + "relUrl": "/animation/skeleton_kinematics" + },"36": { + "doc": "Skinning", + "title": "Skinning", + "content": "# Linear Blend Skinning Now that we have a skeleton set up, we need to link the skeleton to the mesh in order to get the mesh to follow the movements of the skeleton. We will implement linear blend skinning using the following functions: `Skeleton::skin()`, `Skeleton::find_joints()`, and `closest_on_line_segment`. The easiest way to do this is to update each of mesh vertices' positions in relation to the bones (Joints) in the skeleton. There are 3 types of coordinate spaces: bind, joint, and pose. Bind is the initial coordinate frame of the vertices of where they are bound to relative to the mesh. Joint is the position of the vertex relative to a given joint. Pose is the world-space position after the joint transforms have been applied. You'll want to compute transforms that take vertices in bind space and convert them to posed space (Hint: `joint_to_bind`, `joint_to_posed`, and `inverse()` will come in handy.) Your implementation should have the following basic steps for each vertex: - Compute the vertex's position with respect to each joint j in the skeleton in j's coordinate frame when no transformations have been applied to the skeleton (bind pose, vertex bind position). - Find where this vertex would end up (in world coordinates) if it were transformed along with bone j. - Find the closest point on joint j's bone segment (axis) and compute the distance to this closest point (Hint: `closest_on_line_segment` might come in handy). - Diagram of `closest_on_line_segment`: - Compute the resulting position of the vertex by doing a weighted average of the bind-to-posed transforms from each bone and applying it to the vertex. The weights for the weighted average should be the inverse distance to the joint, so closer bones have a stronger influence. Below we have an equation representation. The ith vertex v is the new vertex position. The weight w is the weight metric computed as the inverse of distance between the ith vertex and the closest point on joint j. We multiply this term with the position of the ith vertex v with respect to joint j after joint's transformations has been applied. In Scotty3D, the `Skeleton::skin()` function gets called on every frame draw iteration, recomputing all skinning related quantities. In this function, you should read vertices from `input.verts()` and indices from `input.indices()`, and write the resulting positions and norms to `v.pos` and `v.norm` for every vertex in the input vertices list. You will be implementing a Capsule-Radius Linear Blend Skin method, which only moves vertices with a joint if they lie in the joint's radius. The `Skeleton::skin()` function also takes in a `map` of vertex index to relevant joints that you must compute the above distance/transformation metrics on. You are also responsible for creating this `map`, which is done so in `Skeleton::find_joints()`. Don't worry about calling this function, it is called automatically before skin is called, populating the `map` field and sending it over to the `skin()` function. Your `Skeleton::find_joints()` implementation should iterate over all the vertices and add joint j to vertex index i in the map if the distance between the vertex and joint is less than `j->radius` (remember make sure they're both in the same coordinate frame.) ", + "url": "/animation/skinning", + "relUrl": "/animation/skinning" + },"37": { + "doc": "Splines", + "title": "Splines", + "content": "# Spline Interpolation As we discussed in class, data points in time can be interpolated by constructing an approximating piecewise polynomial or spline. In this assignment you will implement a particular kind of spline, called a Catmull-Rom spline. A Catmull-Rom spline is a piecewise cubic spline defined purely in terms of the points it interpolates. It is a popular choice in real animation systems, because the animator does not need to define additional data like tangents, etc. (However, your code may still need to numerically evaluate these tangents after the fact; more on this point later.) All of the methods relevant to spline interpolation can be found in `spline.h` with implementations in `spline.inl`. ### Task 1a - Hermite Curve over the Unit Interval Recall that a cubic polynomial is a function of the form: where , and are fixed coefficients. However, there are many different ways of specifying a cubic polynomial. In particular, rather than specifying the coefficients directly, we can specify the endpoints and tangents we wish to interpolate. This construction is called the \"Hermite form\" of the polynomial. In particular, the Hermite form is given by where are endpoint positions, are endpoint tangents, and are the Hermite bases Your first task is to implement the method `Spline::cubic_unit_spline()`, which evaluates a spline defined over the time interval given a pair of endpoints and tangents at endpoints. Your basic strategy for implementing this routine should be: * Evaluate the time, its square, and its cube (for readability, you may want to make a local copy). * Using these values, as well as the position and tangent values, compute the four basis functions of a cubic polynomial in Hermite form. * Finally, combine the endpoint and tangent data using the evaluated bases, and return the result. Notice that this function is templated on a type T. In C++, a templated class can operate on data of a variable type. In the case of a spline, for instance, we want to be able to interpolate all sorts of data: angles, vectors, colors, etc. So it wouldn't make sense to rewrite our spline class once for each of these types; instead, we use templates. In terms of implementation, your code will look no different than if you were operating on a basic type (e.g., doubles). However, the compiler will complain if you try to interpolate a type for which interpolation doesn't make sense! For instance, if you tried to interpolate `Skeleton` objects, the compiler would likely complain that there is no definition for the sum of two skeletons (via a + operator). In general, our spline interpolation will only make sense for data that comes from a vector space, since we need to add T values and take scalar multiples. ### Task 1B: Evaluation of a Catmull-Rom spline The routine from part 1A just defines the interpolated spline between two points, but in general we will want smooth splines between a long sequence of points. You will now use your solution from part 1A to implement the method `Spline::at()` which evaluates a general Catmull-Romspline at the specified time in a sequence of points (called \"knots\"). Since we now know how to interpolate a pair of endpoints and tangents, the only task remaining is to find the interval closest to the query time, and evaluate its endpoints and tangents. The basic idea behind Catmull-Rom is that for a given time t, we first find the four closest knots at times We then use t1 and t2 as the endpoints of our cubic \"piece,\" and for tangents we use the values In other words, a reasonable guess for the tangent is given by the difference between neighboring points. (See the Wikipedia and our course slides for more details.) This scheme works great if we have two well-defined knots on either side of the query time t. But what happens if we get a query time near the beginning or end of the spline? Or what if the spline contains fewer than four knots? We still have to somehow come up with a reasonable definition for the positions and tangents of the curve at these times. For this assignment, your Catmull-Rom spline interpolation should satisfy the following properties: * If there are no knots at all in the spline, interpolation should return the default value for the interpolated type. This value can be computed by simply calling the constructor for the type: T(). For instance, if the spline is interpolating Vector3D objects, then the default value will be . * If there is only one knot in the spline, interpolation should always return the value of that knot (independent of the time). In other words, we simply have a constant interpolant. * If the query time is less than or equal to the initial knot, return the initial knot's value. * If the query time is greater than or equal to the final knot, return the final knot's value. Once we have two or more knots, interpolation can be handled using general-purpose code. In particular, we can adopt the following \"mirroring\" strategy to obtain the four knots used in our computation: * Any query time between the first and last knot will have at least one knot \"to the left\" and one \"to the right\" . * Suppose we don't have a knot \"two to the left\" . Then we will define a \"virtual\" knot . In other words, we will \"mirror\" the difference be observe between and to the other side of . * Likewise, if we don't have a knot \"two to the right\" ), then we will \"mirror\" the difference to get a \"virtual\" knot . * At this point, we have four valid knot values (whether \"real\" or \"virtual\"), and can compute our tangents and positions as usual. * These values are then handed off to our subroutine that computes cubic interpolation over the unit interval. An important thing to keep in mind is that `Spline::cubic_unit_spline()` assumes that the time value t is between 0 and 1, whereas the distance between two knots on our Catmull-Rom spline can be arbitrary. Therefore, when calling this subroutine you will have to normalize t such that it is between 0 and 1, i.e., you will have to divide by the length of the current interval over which you are interpolating. You should think very carefully about how this normalization affects the value computed by the subroutine, in comparison to the values we want to return. A transformation is necessary for both the tangents that you feed in to specify the unit spline. Internally, a Spline object stores its data in an STL map that maps knot times to knot values. A nice thing about an STL map is that it automatically keeps knots in sorted order. Therefore, we can quickly access the knot closest to a given time using the method `map::upper_bound()`, which returns an iterator to knot with the smallest time greater than the given query time (you can find out more about this method via online documentation for the Standard Template Library). ### Using the splines Once you have implemented the functions in `spline.cpp`, you should be able to make simple animations by translating, rotating or scaling the mesh in the scene. The main idea is to: * create an initial keyframe by clicking at a point on the white timeline at the bottom of the screen * specify the initial location/orientation/scale of your mesh using the controls provided * create more keyframes with different mesh locations/orientations/scales and watch the splines smoothly interpolate the movement of your mesh! ", + "url": "/animation/splines", + "relUrl": "/animation/splines" + },"38": { + "doc": "Triangulation", + "title": "Triangulation", + "content": "# Triangulation For an in-practice example, see the [User Guide](/Scotty3D/guide/model). A variety of geometry processing algorithms become easier to implement (or are only well defined) when the input consists purely of triangles. The method `Halfedge_Mesh::triangulate` converts any polygon mesh into a triangle mesh by splitting each polygon into triangles. This transformation is performed in-place, i.e., the original mesh data is replaced with the new, triangulated data (rather than making a copy). The implementation of this method will look much like the implementation of the local mesh operations, with the addition of looping over every face in the mesh. There is more than one way to split a polygon into triangles. Two common patterns are to connect every vertex to a single vertex, or to \"zig-zag\" the triangulation across the polygon: The `triangulate` routine is not required to produce any particular triangulation so long as: * all polygons in the output are triangles, * the vertex positions remain unchanged, and * the output is a valid, manifold halfedge mesh. Note that triangulation of nonconvex or nonplanar polygons may lead to geometry that is unattractive or difficult to interpret. However, the purpose of this method is simply to produce triangular _connectivity_ for a given polygon mesh, and correct halfedge connectivity is the only invariant that must be preserved by the implementation. The _geometric_ quality of the triangulation can later be improved by running other global algorithms (e.g., isotropic remeshing); ambitious developers may also wish to consult the following reference: * Zou et al, [\"An Algorithm for Triangulating Multiple 3D Polygons\"](http://www.cs.wustl.edu/~taoju/research/triangulate_final.pdf) ", + "url": "/meshedit/global/triangulate/", + "relUrl": "/meshedit/global/triangulate/" + },"39": { + "doc": "Visualization of normals", + "title": "Visualization of normals", + "content": "# Visualization of normals For debugging purposes: You can set the `bool normal_colors` to true in `student/debug.h` to check if the normals that you have computed at the hit point are correct or not for debugging purposes. Here are some reference results: ", + "url": "/pathtracer/visualization_of_normals", + "relUrl": "/pathtracer/visualization_of_normals" + } +} diff --git a/docs/_site/assets/js/vendor/lunr.min.js b/docs/_site/assets/js/vendor/lunr.min.js new file mode 100644 index 0000000000000000000000000000000000000000..34b279dac0d52672a135c25a435981c13a3ca3d8 --- /dev/null +++ b/docs/_site/assets/js/vendor/lunr.min.js @@ -0,0 +1,6 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.6 + * Copyright (C) 2019 Oliver Nightingale + * @license MIT + */ +!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.6",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docs/_site/assets/test_cow.jpeg b/docs/_site/assets/test_cow.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..2add93f5b4a9c38b80619157a54cbabd03a112c2 Binary files /dev/null and b/docs/_site/assets/test_cow.jpeg differ diff --git a/docs/_site/git/index.html b/docs/_site/git/index.html new file mode 100644 index 0000000000000000000000000000000000000000..6a3730d2fa6173b13fa8ccb1a7802720dcc5b31c --- /dev/null +++ b/docs/_site/git/index.html @@ -0,0 +1,3 @@ + GitHub Setup - GitHub Setup Link Search Menu Expand Document

Github Setup

Please do not use a public github fork of this repository! We do not want solutions to be public. You should work in your own private repo. We recommended creating a mirrored private repository with multiple remotes. The following steps go over how to achieve this.

The easiest (but not recommended) way is to download a zip from GitHub and make a private repository from that. The main disadvantage with this is that whenever there is an update to the base code, you will have to re-download the zip and manually merge the differences into your code. This is a pain, and you already have a lot to do in 15462/662, so instead, let git take care of this cumbersome “merging-updates” task:

  1. Clone Scotty3D normally
    • git clone https://github.com/CMU-Graphics/Scotty3D.git
  2. Create a new private repository (e.g. MyScotty3D)
    • Do not initialize this repository - keep it completely empty.
    • Let’s say your repository is now hosted here: https://github.com/your_id/MyScotty3D.git
  3. Ensure that you understand the concept of remotes in git.
    • When you clone a git repository, the default remote is named ‘origin’ and set to the URL you cloned from.
    • We will set the origin of our local clone to point to MyScotty3D.git, but also have a remote called sourcerepo for the public Scotty3D repository.
  4. Now go back to your clone of Scotty3D. This is how we add the private remote:
    • Since we cloned from the CMU-Graphics/Scotty3D.git repository, the current value of origin should be https://github.com/CMU-Graphics/Scotty3D.git
      • You can check this using git remote -v, which should show:
          origin      https://github.com/CMU-Graphics/Scotty3D.git (fetch)
        +  origin      https://github.com/CMU-Graphics/Scotty3D.git (push)
        +
    • Rename origin to sourcerepo:
      • git remote rename origin sourcerepo
    • Add a new remote called origin:
      • git remote add origin https://github.com/your_id/MyScotty3D.git
    • We can now push the starter code to our private copy:
      • git push origin -u master
  5. Congratulations! you have successfully mirrored a git repository with all past commits intact. Let’s see a case where this becomes very useful: we start doing an assignment and commit regularly to our private repo (our origin). Then the 15-462 staff push some new changes to the Scotty3D skeleton code. We now want to pull the changes from our sourcerepo. But, we don’t want to mess up the changes we’ve added to our private copy. Here’s where git comes to the rescue:
    • First commit all current changes to your origin
    • Run git pull sourcerepo master - this pulls all the changes from sourcerepo into your local folder
    • If there are files that differ in your origin and in the sourcerepo, git will attempt to automatically merge the changes. Git may create a “merge” commit for this.
    • Unfortunately, there may be merge conflicts. Git will handle as many merges as it can, and then will then tell you which files have conflicts that need manual resolution. You can resolve those conflicts in your text editor and create a new commit to complete the merge process.
    • After you have completed the merge, you now have all the updates locally. Push to your private origin to include the changes there too:
      • git push origin master
diff --git a/docs/_site/guide/animate_mode/guide-animate-spline.png b/docs/_site/guide/animate_mode/guide-animate-spline.png new file mode 100644 index 0000000000000000000000000000000000000000..a1256ed963f4d13ba78295dab098c5768b5fe201 Binary files /dev/null and b/docs/_site/guide/animate_mode/guide-animate-spline.png differ diff --git a/docs/_site/guide/animate_mode/guide-posing-rig.mp4 b/docs/_site/guide/animate_mode/guide-posing-rig.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..5b2dc80dae14b65106d0db5cd3888e3f8d07cb68 Binary files /dev/null and b/docs/_site/guide/animate_mode/guide-posing-rig.mp4 differ diff --git a/docs/_site/guide/animate_mode/index.html b/docs/_site/guide/animate_mode/index.html new file mode 100644 index 0000000000000000000000000000000000000000..fb16d1214be2bccea7fa8c0325b9cc6bc1042977 --- /dev/null +++ b/docs/_site/guide/animate_mode/index.html @@ -0,0 +1 @@ + Animate - Animate Link Search Menu Expand Document

Animate

When you select the Animate tab, a timeline window will show up at the bottom of your screen. Animation is performed by creating keyframes and interpolating between them.

Keyframes

A keyframe associates an object’s pose and properties with a specific frame in the timeline. Keyframes can be associated with all objects (including the camera and individual joints associated with an object) in the scene.

To create a keyframe for an object:

  • Select a frame location along that objects timeline by clicking on the timeline. Remember to do this before editing the pose.
  • Change the pose or properties of the selected object and press Set. To set a keyframe for every object in the scene, use Set All. Note that only the poses (rotations) of joints can be animated, not their extents.

To remove a keyframe in the timeline, click on it and press Clear to remove it. Press Clear All to clear the current keyframe of every object in the scene.

animating-cow

To see your animation, press Play [space] . Once you’ve implemented spline interpolation, intermediate frames are generated by interpolating object poses between keyframes.

Check Draw Splines to visualize the spline along which objects are animated.

view-spline

Add Frames inserts 90 empty frames into the timeline. Crop End deletes frames from the selected location to the end of the timeline.

Posing

Once you have rigged an object with a skeleton, it can now be posed by selecting a joint and changing its pose i.e., rotating the joint. This is called Forward Kinematics. Joint poses can also be indirectly changed by using the IK (Inverse Kinematics) handles to provide target positions. Note that IK handles need to be explicitly enabled using the checkbox.

Once you’ve implemented forward kinematics, inverse kinematics and skinning, as you change the pose, the mesh will deform. Different poses can be set as keyframes to animate the object.

diff --git a/docs/_site/guide/index.html b/docs/_site/guide/index.html new file mode 100644 index 0000000000000000000000000000000000000000..609a86aefa8c4ab90988050c33414957f943db09 --- /dev/null +++ b/docs/_site/guide/index.html @@ -0,0 +1 @@ + User Guide - User Guide Link Search Menu Expand Document

User Guide

Modes and Actions

The basic paradigm in Scotty3D is that there are six different modes, each of which lets you perform certain class of actions. For instance, in Model mode, you can perform actions associated with modeling, such as moving mesh elements and performing global mesh operations. When in Animate mode, you can perform actions associated with animation. Etc. Within a given mode, you can switch between actions by hitting the appropriate key; keyboard commands are listed below for each mode. Note that the input scheme may change depending on the mode. For instance, key commands in Model mode may result in different actions in Render mode.

The current mode is displayed as the “pressed” button in the menu bar, and available actions are are detailed in the left sidebar. Note that some actions are only available when a model/element/etc. is selected.

In all modes, you can move the camera around and select scene elements. Information about your selection will be shown in the left sidebar.

The camera can be manipulated in three ways:

  • Rotate: holding shift, left-clicking, and dragging will orbit the camera about the scene. Holding middle click and dragging has the same effect.
  • Zoom: using the scroll wheel or scrolling on your trackpad will move the camera towards or away from its center.
  • Translate: right-clicking (or using multi-touch on a trackpad, e.g., two-finger click-and-drag) and dragging will move the camera around the scene.

Global Preferences

You can open the preferences window from the edit option in the menu bar.

  • Multisampling: this controls how many samples are used for MSAA when rendering scene objects in the Scotty3D interface. If your computer struggles to render complex scenes, try changing this to 1.

Global Undo

As is typical, all operations on scene objects, meshes, etc. are un and re-doable using Control/Command-Z to undo and Control/Command-Y to redo. These actions are also available from the Edit option in the menu bar.

diff --git a/docs/_site/guide/layout_mode/index.html b/docs/_site/guide/layout_mode/index.html new file mode 100644 index 0000000000000000000000000000000000000000..6d9a651aa08089430936c19ddfb3b0ee4f245e9c --- /dev/null +++ b/docs/_site/guide/layout_mode/index.html @@ -0,0 +1 @@ + Layout - Layout Link Search Menu Expand Document

Layout

This is the main scene editing mode in Scotty3D, and does not contain tasks for the student to implement. This mode allows you to load full scenes from disk, create or load new objects, export your scene (COLLADA format), and edit transformations that place each object into your scene.

Creating Objects

There are three ways to add objects to your scene:

  • Import New Scene: clears the current scene (!) and replaces it with objects loaded from a file on disk.
  • Import Objects: loads objects from a file, adding them to the current scene.
  • New Object: creates a new object from a choice of various platonic solids.

To save your scene to disk (including all meshes and their transformations) use the Export Scene option.

Scotty3D supports loading objects from the following file formats:

  • dae (COLLADA)
  • obj
  • fbx
  • gltf / glb
  • 3ds
  • stl
  • blend
  • ply

Scotty3D only supports exporting scenes to COLLADA.

Managing Objects

Left clicking on or enabling the check box of your object under Select an Object will select it. Information about that object’s transformation will appear under Edit Object beneath the “Select an Object” options.

Under Edit Object, you may directly edit the values of the object’s position, rotation (X->Y->Z Euler angles), and scale. Note that clicking and dragging on the values will smoothly scale them, and Control/Command-clicking on the value will let you edit it as text.

You can also edit the transformation using the Move, Rotate, and Scale tools. One of these options is always active. This determines the transformation widgets that appear at the origin of the object model.

  • Move: click and drag on the red (X), green (Y), or blue (Z) arrow to move the object along the X/Y/Z axis. Click and drag on the red (YZ), green (XZ), or blue (XY) squares to move the object in the YZ/XZ/XY plane.
  • Rotate: click and drag on the red (X), green (Y), or blue (Z) loop to rotate the object about the X/Y/Z axis. Note that these rotations are applied relative to the current pose, so they do not necessarily correspond to smooth transformations of the X/Y/Z Euler angles.
  • Scale: click and drag on the red (X), green (Y), or blue(Z) block to scale the object about the X/Y/Z axis. Again note that this scale is applied relative to the current pose.

Finally, you may remove the object from the scene by pressing Delete or hitting the Delete key. You may swap to Model mode with this mesh selected by pressing Edit Mesh. Note that if this mesh is non-manifold, this option will not appear.

Key Bindings

Key Command
m Use the Move tool.
r Use the Rotate tool.
s Use the Scale tool.
delete Delete the currently selected object.

Demo

diff --git a/docs/_site/guide/layout_mode/layout.mp4 b/docs/_site/guide/layout_mode/layout.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c677e8add19adaac8e368db2178344fa1e184177 Binary files /dev/null and b/docs/_site/guide/layout_mode/layout.mp4 differ diff --git a/docs/_site/guide/model_mode/catmull_subd.mp4 b/docs/_site/guide/model_mode/catmull_subd.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..529a0c94c3b1a1fd081784f5df1234208ebea986 Binary files /dev/null and b/docs/_site/guide/model_mode/catmull_subd.mp4 differ diff --git a/docs/_site/guide/model_mode/collapse_edge.mp4 b/docs/_site/guide/model_mode/collapse_edge.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..e98641f2167202d8a1fbe88122ab2af167304bf3 Binary files /dev/null and b/docs/_site/guide/model_mode/collapse_edge.mp4 differ diff --git a/docs/_site/guide/model_mode/collapse_face.mp4 b/docs/_site/guide/model_mode/collapse_face.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..66a85da50e76c2176e30233bab1dc4b00e39f951 Binary files /dev/null and b/docs/_site/guide/model_mode/collapse_face.mp4 differ diff --git a/docs/_site/guide/model_mode/edge_bevel.mp4 b/docs/_site/guide/model_mode/edge_bevel.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..964546ccd340afef1aa3844ee114036d4be3c0f1 Binary files /dev/null and b/docs/_site/guide/model_mode/edge_bevel.mp4 differ diff --git a/docs/_site/guide/model_mode/edge_flip.mp4 b/docs/_site/guide/model_mode/edge_flip.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..addae375695a0400f66cc5fd6b27e20dbdf536f6 Binary files /dev/null and b/docs/_site/guide/model_mode/edge_flip.mp4 differ diff --git a/docs/_site/guide/model_mode/edge_split.mp4 b/docs/_site/guide/model_mode/edge_split.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..f7f3fd2eed233f1f7d4bd763080288e29fbdd2db Binary files /dev/null and b/docs/_site/guide/model_mode/edge_split.mp4 differ diff --git a/docs/_site/guide/model_mode/erase_edge.mp4 b/docs/_site/guide/model_mode/erase_edge.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..9a5ecbb9bf95b2d1f27f193f9e647585c54db460 Binary files /dev/null and b/docs/_site/guide/model_mode/erase_edge.mp4 differ diff --git a/docs/_site/guide/model_mode/erase_vertex.mp4 b/docs/_site/guide/model_mode/erase_vertex.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..5cbd4ecd4f1fc7e07842e947e59161696bd353f6 Binary files /dev/null and b/docs/_site/guide/model_mode/erase_vertex.mp4 differ diff --git a/docs/_site/guide/model_mode/face_bevel.mp4 b/docs/_site/guide/model_mode/face_bevel.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..5f0f1f15ad2f3e6f1c9d52408b8ef2bb0204715e Binary files /dev/null and b/docs/_site/guide/model_mode/face_bevel.mp4 differ diff --git a/docs/_site/guide/model_mode/index.html b/docs/_site/guide/model_mode/index.html new file mode 100644 index 0000000000000000000000000000000000000000..6ae86385ae30ea8db58005a1d3fb20f9e6e240a4 --- /dev/null +++ b/docs/_site/guide/model_mode/index.html @@ -0,0 +1 @@ + Model - Model Link Search Menu Expand Document

Model

When in Model mode, Scotty3D provides a polygon-based 3D modeler with basic subdivision capabilities. The central modeling paradigm is “box modeling”, i.e., starting with a simple cube, you can add progressively more detail to produce interesting 3D shapes. You can also use subdivision to get smooth approximations of these shapes.

MeshEdit supports four basic actions on mesh elements (move, rotate, scale, and bevel), plus a collection of local and global mesh editing commands.

Note that MeshEdit (and more broadly, Scotty3D) will only operate on meshes that are manifold (i.e., the union of faces containing any given vertex v is a topological disk). Likewise, all mesh operations in Scotty3D will preserve the manifold property, i.e., manifold input will always get mapped to manifold output. This property is key for ensuring that many algorithms in Scotty3D are “well-behaved”, and that it always produces nice output for other programs to use. If you load a mesh that is non-manifold, you can still use it in your scene and render with it, but editing will not be supported.

Editing Mesh Elements

In Model mode you can inspect mesh elements by left-clicking on vertices, edges, faces, and halfedges. Information about these elements will be shown in the left sidebar.

In this mode you can change the geometry (i.e., the shape) of the mesh by transforming mesh elements in the same way you can transform scene objects. Note that the transformation widget again has three modes of operation, which you can toggle through by pressing the r key.

  • Move: click and drag on the red (X), green (Y), or blue (Z) arrow to move the object along the X/Y/Z axis. Click and drag on the red (YZ), green (XZ), or blue (XY) squares to move the object in the YZ/XZ/XY plane.
  • Rotate: click and drag on the red (X), green (Y), or blue (Z) loop to rotate the object about the X/Y/Z axis. Note that these rotations are applied relative to the current pose, so they do not necessarily correspond to smooth transformations of the X/Y/Z Euler angles.
  • Scale: click and drag on the red (X), green (Y), or blue(Z) block to scale the object about the X/Y/Z axis. Again note that this scale is applied relative to the current pose.

selecting an edge

Beveling

The bevel action creates a new copy of the selected element that is inset and offset from the original element. Clicking and dragging on an element will perform a bevel; the horizontal motion of the cursor controls the amount by which the new element shrinks or expands relative to the original element, and the vertical motion of the cursor controls the amount by which the new element is offset (in the normal direction) from the original element. It is important to note that a new element will be created upon click even if no inset or offset is applied. Therefore, if you’re not careful you may end up with duplicate elements that are not immediately visible. (To check, you can drag one of the vertices mode.)

There are three possible types of bevels:

  • Vertex Bevel: The selected vertex v is replaced by a face f whose vertices are connected to the edges originally incident on v. The new face is inset (i.e., shunken or expanded) by a user-controllable amount.
  • Edge Bevel: The selected edge e is replaced by a face f whose vertices are connected to the edges originally incident on the endpoints of e. The new face is inset and offset by some user-controllable amount, as with the vertex bevel.
  • Face Bevel: The selected face f is replaced by a new face g, as well as a ring of faces around g, such that the vertices of g connect to the original vertices of f. The new face is inset and offset by some user-controllable amount.

Local Connectivity Editing

In addition to beveling, a variety of commands can be used to alter the connectivity of the mesh (for instance, splitting or collapsing edges). These commands are applied by selecting a mesh element (in any mode) and pressing the appropriate key, as listed below. Local mesh editing operations include:

  • Erase Vertex: The selected vertex v together with all incident edges and faces will be replaced with a single face f, that is the union of all faces originally incident on v.
  • Erase Edge: The selected edge e will be replaced with the union of the faces containing it, producing a new face e (if e is a boundary edge, nothing happens).
  • Edge Collapse: The selected edge e is replaced by a single vertex v. This vertex is connected by edges to all vertices previously connected to either endpoint of e. Moreover, if either of the polygons containing e was a triangle, it will be replaced by an edge (rather than a degenerate polygon with only two edges).
  • Face Collapse: The selected face f is replaced by a single vertex v. All edges previously connected to vertices of f are now connected directly to v.
  • Edge Flip: The selected edge e is “rotated” around the face, in the sense that each endpoint moves to the next vertex (in counter-clockwise order) along the boundary of the two polygons containing e.
  • Edge Split: [Note: this method is for triangle meshes only!] The selected edge e is split at its midpoint, and the new vertex v is connected to the two opposite vertices (or one in the case of a surface with boundary).

Global Mesh Processing

A number of commands can be used to create a more global change in the mesh (e.g., subdivision or simplification). These commands can be applied by pressing the appropriate sidebar button with a mesh selected. Note that in scenes with multiple meshes (e.g., those used by the path tracer), this command will be applied only to the selected mesh.

  • Triangulate: Each polygon is split into triangles.
  • Linear Subdivision: Each polygon in the selected mesh is split into quadrilaterals by inserting a vertex at the midpoint and connecting it to the midpoint of all edges. New vertices are placed at the average of old vertices so that, e.g., flat faces stay flat, and old vertices remain where they were.
  • Catmull-Clark Subdivision: [Note: this method is for meshes without boundary only!] Just as with linear subdivision, each polygon is split into quadrilaterals, but this time the vertex positions are updated according to the Catmull-Clark subdivision rules, ultimately generating a nice rounded surface.
  • Loop Subdivision: [Note: this method is for triangle meshes without boundary only!] Each triangle is split into four by connecting the edge midpoints. Vertex positions are updated according to the Loop subdivision rules.
  • Isotropic Remeshing: [Note: this method is for triangle meshes only!] The mesh is resampled so that triangles all have roughly the same size and shape, and vertex valence is close to regular (i.e., about six edges incident on every vertex).
  • Simplification [Note: this method is for triangle meshes only!] The number of triangles in the mesh is reduced by a factor of about four, aiming to preserve the appearance of the original mesh as closely as possible.

Key Bindings

Key Command
c Center the camera on the current element.
m Use the Move tool.
r Use the Rotate tool.
s Use the Scale tool.
b Use the Bevel tool.
v Select the current halfedge’s vertex
e Select the current halfedge’s edge
f Select the current halfedge’s face
t Select the current halfedge’s twin
n Select the current halfedge’s next
h Select the current element’s halfedge
delete Erase the currently selected vertex or edge.
diff --git a/docs/_site/guide/model_mode/linear_subd.mp4 b/docs/_site/guide/model_mode/linear_subd.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..1dd434016a9a8d16b00dab846e1be26bdb50a36e Binary files /dev/null and b/docs/_site/guide/model_mode/linear_subd.mp4 differ diff --git a/docs/_site/guide/model_mode/loop_subd.mp4 b/docs/_site/guide/model_mode/loop_subd.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..e3a07132dde44e069c51876557704d36fa7cbdf9 Binary files /dev/null and b/docs/_site/guide/model_mode/loop_subd.mp4 differ diff --git a/docs/_site/guide/model_mode/model_select.png b/docs/_site/guide/model_mode/model_select.png new file mode 100644 index 0000000000000000000000000000000000000000..fddab771bcc0e7ae6ed8c87d9fa0f0077de689f4 Binary files /dev/null and b/docs/_site/guide/model_mode/model_select.png differ diff --git a/docs/_site/guide/model_mode/remesh.mp4 b/docs/_site/guide/model_mode/remesh.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..247c51801fcb9a7afee44bd4daa227243b04dcb9 Binary files /dev/null and b/docs/_site/guide/model_mode/remesh.mp4 differ diff --git a/docs/_site/guide/model_mode/simplify.mp4 b/docs/_site/guide/model_mode/simplify.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..d20276721a05acf20870e214c8cff41e4e77899e Binary files /dev/null and b/docs/_site/guide/model_mode/simplify.mp4 differ diff --git a/docs/_site/guide/model_mode/triangulate.mp4 b/docs/_site/guide/model_mode/triangulate.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..38bfa43471e2c1b5744140d51cb7c2da883fe3ac Binary files /dev/null and b/docs/_site/guide/model_mode/triangulate.mp4 differ diff --git a/docs/_site/guide/model_mode/vertex_bevel.mp4 b/docs/_site/guide/model_mode/vertex_bevel.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..a07c86cc37ef4ba5e51e4b881b4e19b37eabfca3 Binary files /dev/null and b/docs/_site/guide/model_mode/vertex_bevel.mp4 differ diff --git a/docs/_site/guide/render_mode/bvh.png b/docs/_site/guide/render_mode/bvh.png new file mode 100644 index 0000000000000000000000000000000000000000..d8a2f58b79e6cc717b6521300f7305ba58682ca1 Binary files /dev/null and b/docs/_site/guide/render_mode/bvh.png differ diff --git a/docs/_site/guide/render_mode/index.html b/docs/_site/guide/render_mode/index.html new file mode 100644 index 0000000000000000000000000000000000000000..61bc551aa0e98bddb77f41a731673afe45ff86f2 --- /dev/null +++ b/docs/_site/guide/render_mode/index.html @@ -0,0 +1 @@ + Render - Render Link Search Menu Expand Document

Render

Welcome! This is Scotty3D’s realistic, globally illuminated renderer, capable of creating images of complex scenes using path tracing.

Render Window

In render mode, click on “Open Render Window”, and you will be able to set the parameters to render your model. Enjoy the excitement of seeing the images becoming clearer and clearer ;-)

light

Moving Camera

The render mode comes with its own camera, representing the position, view direction, field of view, and aspect ratio with which to render the scene. These parameters are visually represented by the camera control cage, which shows up as a black wire-frame pyramid that traces out the unit-distance view plane. Note that changing camera settings (e.g. field of view) will adjust the geometry of the camera cage.

To move the render camera to the current view, click “Move to View.” This will reposition the camera so that it has exactly what you have on screen in view.

To freely move the camera without updating its field of view/aspect ratio to match the current viewport, click “Free Move,” and use the normal 3D navigation tools to position the camera. When you are done, click “Confirm Move” or “Cancel Move” to apply or cancel the updated camera position. Feel free to play around with the field of view (FOV) and aspect ratio (AR) sliders while in the free move mode - they will adjust your current view to use these values, so you can see how exactly the effect the visible region.

Create light

To create a lighting for your scene, simply go to the menu on the left side, click “New Light”, and you will be able to choose from a variaty of light objects and environmental lights. (you will implement the support for environmental light in Task 7. See the corresponding documentation for more guide.)

light

Enable Ray Logging for Debugging

In Render mode, simply check the box for “Logged Rays”, and you would be able to see the camera rays that you generated in task 1 when you start render.

ray

Visualize BVH

In Render mode, simply check the box for “BVH”, and you would be able to see the BVH you generated in task 3 when you start rendering. You can click on the horizontal bar to see each level of your BVH.

ray

Materials and Other Object Options

You can change the material and other property of your mesh by selecting the object and choose “Edit Pose”, “Edit Mesh”, and “Edit Material”. For example, you can make a colored cow by “Edit Material” -> “Diffuse light”, and pick a color that you like.

material

diff --git a/docs/_site/guide/render_mode/light.png b/docs/_site/guide/render_mode/light.png new file mode 100644 index 0000000000000000000000000000000000000000..cd952ef8a44ff013689504ce4d02e49f85df54a3 Binary files /dev/null and b/docs/_site/guide/render_mode/light.png differ diff --git a/docs/_site/guide/render_mode/material.png b/docs/_site/guide/render_mode/material.png new file mode 100644 index 0000000000000000000000000000000000000000..b4e5194dffd5f3593a6929e314b03c9ff99ea4b7 Binary files /dev/null and b/docs/_site/guide/render_mode/material.png differ diff --git a/docs/_site/guide/render_mode/window.png b/docs/_site/guide/render_mode/window.png new file mode 100644 index 0000000000000000000000000000000000000000..ea6bc17794d9c44009514faff1c5d2a8358a1536 Binary files /dev/null and b/docs/_site/guide/render_mode/window.png differ diff --git a/docs/_site/guide/rigging_mode/guide-ik.mp4 b/docs/_site/guide/rigging_mode/guide-ik.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..1226135c266c988fb0b714c0c0d0cecf1d235af5 Binary files /dev/null and b/docs/_site/guide/rigging_mode/guide-ik.mp4 differ diff --git a/docs/_site/guide/rigging_mode/guide-rigging-1.mov b/docs/_site/guide/rigging_mode/guide-rigging-1.mov new file mode 100644 index 0000000000000000000000000000000000000000..e8ad7533029eb6a20568ef67721752b863fcd133 Binary files /dev/null and b/docs/_site/guide/rigging_mode/guide-rigging-1.mov differ diff --git a/docs/_site/guide/rigging_mode/guide-rigging-2.mov b/docs/_site/guide/rigging_mode/guide-rigging-2.mov new file mode 100644 index 0000000000000000000000000000000000000000..b020dba169e4c64a695c324412229584fd67c521 Binary files /dev/null and b/docs/_site/guide/rigging_mode/guide-rigging-2.mov differ diff --git a/docs/_site/guide/rigging_mode/guide-rigging-human.png b/docs/_site/guide/rigging_mode/guide-rigging-human.png new file mode 100644 index 0000000000000000000000000000000000000000..dad2fe3ed8b9640c8c793e5fdb71e8319143a6a4 Binary files /dev/null and b/docs/_site/guide/rigging_mode/guide-rigging-human.png differ diff --git a/docs/_site/guide/rigging_mode/index.html b/docs/_site/guide/rigging_mode/index.html new file mode 100644 index 0000000000000000000000000000000000000000..ebf897e97cbf6a867d1416895835cb90c2261d3a --- /dev/null +++ b/docs/_site/guide/rigging_mode/index.html @@ -0,0 +1 @@ + Rig - Rig Link Search Menu Expand Document

Rig

Rigging Setup

Select the Rig tab to create a skeletal rig for an object.

You can create new bone by first selecting a parent joint and pressing New Bone, then click anywhere else on the object to place the bone. From thereon, you can repeat this process to create a chain of bones connected along the selected joint. If you want to branch off at a joint, simply click on the joint to branch off of, then start another chain by adding a new bone from there.

To view a rigged example, see media/human.dae example and select the object in the Rig tab to view its joints. Once you’ve implemented forward kinematics the skeleton should be setup like so:

rigged-human

Editing Skinning Weight Threshold Radius

Each joint has an associated Radius which controls the part of the mesh influenced by the selected bone during animaton. The radius is visualized by the blue capsule around each bone and can be edited using the menu. The position of the joint can also be edited using the Extent values in the menu.

Note that rigging only uses extents of the bone for skeleton setup, joint pose does not influence the skeleton. Once rigging is done, the object can be posed by changing joint rotations in the animate mode.

Inverse Kinematics

Instead of computing the positions of the bones from the joint poses (forward kinematics), in inverse kinematics, joint positions are computed from target positions. To associate a target position with a joint, select Add IK and edit the target position. Multiple target positions can be associated with the same joint but targets need to be explicitly enabled using the checkbox.

In the animate mode, once inverse kinematics is implemented, joint rotation(pose) is updated based on the enabled IK handles.

diff --git a/docs/_site/guide/simulate_mode/add_emitter.png b/docs/_site/guide/simulate_mode/add_emitter.png new file mode 100644 index 0000000000000000000000000000000000000000..2e0b9d397cc91297dcb354cc6fe53ae334865649 Binary files /dev/null and b/docs/_site/guide/simulate_mode/add_emitter.png differ diff --git a/docs/_site/guide/simulate_mode/guide-simulate-1.mp4 b/docs/_site/guide/simulate_mode/guide-simulate-1.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..1079a5550cd63426b8d81e473f60693222262e70 Binary files /dev/null and b/docs/_site/guide/simulate_mode/guide-simulate-1.mp4 differ diff --git a/docs/_site/guide/simulate_mode/index.html b/docs/_site/guide/simulate_mode/index.html new file mode 100644 index 0000000000000000000000000000000000000000..9caab0af880b45df82fb8e0c6096e8551368beda --- /dev/null +++ b/docs/_site/guide/simulate_mode/index.html @@ -0,0 +1 @@ + Simulate - Simulate Link Search Menu Expand Document

Simulate

The simulation view provides a way to create and manage particle emitters.

To add an emitter, open the dropdown menu, adjust desired parameters, and press Add.

add emitter

  • Color: color with which to render the particles.
  • Angle: angle of cone within which particles are generated (pointing in the emitter object’s direction).
  • Scale: the scale factor to apply to the particle mesh when rendering particles.
  • Lifetime: how long (in seconds) each particle should live before it is deleted.
  • Particles/Sec: how many particles should be generated per second. The total amount of live particles is hence lifetime * particles_per_second.
  • Particle: choose the shape of each particle. If mesh objects are present in the scene, they will also show up here, allowing the creation of particles with custom shapes.
  • Enabled: whether to immediately enable the emitter

Once an enabled emitter is added to the scene (and animation task 4: particle simulation is implemented), particles will start generating and following trajectories based on the emitter parameters. Particles should collide with scene objects. When moving existing objects that particles interact with, the simulation will not be updated until the movement is completed.

For example, the particles.dae test scene:

Finally, note that you can render particles just like any other scene objects. In the path tracer, each particle is also a point light source! Rendering particles.dae with depth of field:

particles render

diff --git a/docs/_site/guide/simulate_mode/render.png b/docs/_site/guide/simulate_mode/render.png new file mode 100644 index 0000000000000000000000000000000000000000..0b296fde76b639907b6914f96af809732e7df52e Binary files /dev/null and b/docs/_site/guide/simulate_mode/render.png differ diff --git a/docs/_site/index.html b/docs/_site/index.html new file mode 100644 index 0000000000000000000000000000000000000000..fd731a3f852606804a8665665913dd9fbe771a54 --- /dev/null +++ b/docs/_site/index.html @@ -0,0 +1 @@ + Home - Home Link Search Menu Expand Document

15-462 F20 Renders

Scotty3D

Welcome to Scotty3D! This 3D graphics software package includes components for interactive mesh editing, realistic path tracing, and dynamic animation. Implementing functionality in each of these areas constitutes the majority of the coursework for 15-462/662 (Computer Graphics) at Carnegie Mellon University

These pages describe how to set up and use Scotty3D. Start here!

  • Git Setup: create a private git mirror that can pull changes from Scotty3D.
  • Building Scotty3D: build and run Scotty3D on various platforms.
  • User Guide: learn the intended functionality for end users.

The developer manual describes what you must implement to complete Scotty3D. It is organized under the three main components of the software:

Project Philosophy

Welcome to your first day of work at Scotty Industries! Over the next few months you will implement core features in Scotty Industries’ flagship product Scotty3D, which is a modern package for 3D modeling, rendering, and animation. In terms of basic structure, this package doesn’t look much different from “real” 3D tools like Maya, Blender, modo, or Houdini. Your overarching goal is to use the developer manual to implement a package that works as described in the User Guide, much as you would at a real software company (more details below).

Note that the User Guide is not an Assignment Writeup. The User Guide contains only instructions on how to use the software, and serves as a high-level specification of what the software should do. The Developer Guide contains information about the internals of the code, i.e., how the software works. This division is quite common in software development: there is a design specification or “design spec”, and an implementation that implements that spec. Also, as in the real world, the design spec does not necessarily specify every tiny detail of how the software should behave! Some behaviors may be undefined, and some of these details are left up to the party who implements the specification. A good example you have already seen is OpenGL, which defines some important rules about how rasterization should behave, but is not a “pixel-exact” specification. In other words, two different OpenGL implementations from two different vendors (Intel and NVIDIA, say) may produce images that differ by a number of pixels. Likewise, in this assignment, your implementation may differ from the implementation of your classmates in terms of the exact values it produces, or the particular collection of corner-cases it handles. However, as a developer you should strive to provide a solution that meets a few fundamental criteria:

  • Failing gracefully is preferable to failing utterly—for instance, if a rare corner case is difficult to handle, it is far better to simply refuse to perform the operation than to let the program crash!
  • Your implementation should follow the principle of least surprise. A user should be able to expect that things behave more or less as they are described in the User Guide.
  • You should not use an algorithm whose performance is asymptotically worse just because it makes your code easier to write (for instance, using bubble sort rather than merge sort on large data sets).
  • That being said, when it comes to performance, premature optimization is the root of all evil! The only way to know whether an optimization matters is to measure performance, and understand bottlenecks.
  • Finally, you should take pride in your craft. Beautiful things just tend to work better.

Just to reiterate the main point above:

As in real-world software development, we will not specify every little detail about how methods in this assignment should work!

If you encounter a tough corner case (e.g., “how should edge flip behave for a tetrahedron”), we want you to think about what a good design choice might be, and implement it to the best of your ability. This activity is part of becoming a world-class developer. However, we are more than happy to discuss good design choices with you, and you should also feel free to discuss these choices with your classmates. Practically speaking, it is ok for routines to simply show an error if they encounter a rare and difficult corner case—as long as it does not interfere with successful operation of the program (i.e., if it does not crash or yield bizarre behavior). Your main goal here above all else should be to develop effective tool for modeling, rendering, and animation.

diff --git a/docs/_site/meshedit/boundary_conventions.png b/docs/_site/meshedit/boundary_conventions.png new file mode 100644 index 0000000000000000000000000000000000000000..d1809971ca87707a74f7db5a2f614e355ab8e2c1 Binary files /dev/null and b/docs/_site/meshedit/boundary_conventions.png differ diff --git a/docs/_site/meshedit/global/catmull/catmull_clark_positions.png b/docs/_site/meshedit/global/catmull/catmull_clark_positions.png new file mode 100644 index 0000000000000000000000000000000000000000..bb16ea29e967f9f573f6e53235c5ec24a65869cd Binary files /dev/null and b/docs/_site/meshedit/global/catmull/catmull_clark_positions.png differ diff --git a/docs/_site/meshedit/global/catmull/index.html b/docs/_site/meshedit/global/catmull/index.html new file mode 100644 index 0000000000000000000000000000000000000000..b701dea9db75624c91f0517979986d28de64a5de --- /dev/null +++ b/docs/_site/meshedit/global/catmull/index.html @@ -0,0 +1 @@ + Catmull-Clark Subdivision - Catmull-Clark Subdivision Link Search Menu Expand Document

Catmull-Clark Subdivision

For an in-practice example, see the User Guide.

The only difference between Catmull-Clark and linear subdivision is the choice of positions for new vertices. Whereas linear subdivision simply takes a uniform average of the old vertex positions, Catmull-Clark uses a very carefully-designed weighted average to ensure that the surface converges to a nice, round surface as the number of subdivision steps increases. The original scheme is described in the paper “Recursively generated B-spline surfaces on arbitrary topological meshes” by (Pixar co-founder) Ed Catmull and James Clark. Since then, the scheme has been thoroughly discussed, extended, and analyzed; more modern descriptions of the algorithm may be easier to read, including those from the Wikipedia and this webpage. In short, the new vertex positions can be calculated by:

  1. setting the new vertex position at each face f to the average of all its original vertices (exactly as in linear subdivision),
  2. setting the new vertex position at each edge e to the average of the new face positions (from step 1) and the original endpoint positions, and
  3. setting the new vertex position at each vertex v to the weighted sum

where n is the degree of vertex v (i.e., the number of faces containing v), and

  • Q is the average of all new face position for faces containing v,
  • R is the average of all original edge midpoints for edges containing v, and
  • S is the original vertex position for vertex v.

In other words, the new vertex positions are an “average of averages.” (Note that you will need to divide by n both when computing Q and R, and when computing the final, weighted value—this is not a typo!)

Apart from changing the way vertex positions are computed, there should be no difference in your implementation of linear and Catmull-Clark subdivision.

This step should be implemented in the method HalfedgeMesh::catmullclark_subdivide_positions in student/meshedit.cpp.

This subdivision rule is not required to support meshes with boundary, unless the implementer wishes to go above and beyond.

diff --git a/docs/_site/meshedit/global/index.html b/docs/_site/meshedit/global/index.html new file mode 100644 index 0000000000000000000000000000000000000000..4a54319d04bfb3299ee868d6e43e8b1d85695ed0 --- /dev/null +++ b/docs/_site/meshedit/global/index.html @@ -0,0 +1 @@ + Global Operations - Global Operations Link Search Menu Expand Document

Global Mesh Operations

In addition to local operations on mesh connectivity, Scotty3D provides several global remeshing operations (as outlined in the User Guide). Two different mechanisms are used to implement global operations:

  • Repeated application of local operations. Some mesh operations are most easily expressed by applying local operations (edge flips, etc.) to a sequence of mesh elements until the target output is achieved. A good example is mesh simplification, which is a greedy algorithm that collapses one edge at a time.
  • Global replacement of the mesh. Other mesh operations are better expressed by temporarily storing new mesh elements in a simpler mesh data structure (e.g., an indexed list of faces) and completely re-building the halfedge data structure from this data. A good example is Catmull-Clark subdivision, where every polygon must be simultaneously split into quadrilaterals.

Note that in general there are no inter-dependencies among global remeshing operations (except that some of them require a triangle mesh as input, which can be achieved via the method Halfedge_Mesh::triangulate).

Subdivision

In image processing, we often have a low resolution image that we want to display at a higher resolution. Since we only have a few samples of the original signal, we need to somehow interpolate or upsample the image. One idea would be to simply cut each pixel into four, leaving the color values unchanged, but this leads to a blocky appearance. Instead we might try a more sophisticated scheme (like bilinear or trilinear interpolation) that yields a smoother appearance.

In geometry processing, one encounters the same situation: we may have a low-resolution polygon mesh that we wish to upsample for display, simulation, etc. Simply splitting each polygon into smaller pieces doesn’t help, because it does nothing to alleviate blocky silhouettes or chunky features. Instead, we need an upsampling scheme that nicely interpolates or approximates the original data. Polygon meshes are quite a bit trickier than images, however, since our sample points are generally at irregular locations, i.e., they are no longer found at regular intervals on a grid.

Three subdivision schemes are supported by Scotty3D: Linear, Catmull-Clark, and Loop. The first two can be used on any polygon mesh without boundary, and should be implemented via the global replacement strategy described above. Loop subdivision can be implemented using repeated application of local operations. For further details, see the linked pages.

Performance

All subdivision operations, as well as re-meshing and simplification, should complete almost instantaneously (no more than a second) on meshes of a few hundred polygons or fewer. If performance is worse than this, ensure that implementations are not repeatedly iterating over more elements than needed, or allocating/deallocating more memory than necessary. A useful debugging technique is to print out (or otherwise keep track of, e.g., via an integer counter or a profiler) the number of times basic methods like Halfedge::next() or Halfedge_Mesh::new_vertex() are called during a single execution of one of the methods; for most methods this number should be some reasonably small constant (no more than, say, 1000!) times the number of elements in the mesh.

diff --git a/docs/_site/meshedit/global/linear/index.html b/docs/_site/meshedit/global/linear/index.html new file mode 100644 index 0000000000000000000000000000000000000000..ce23208aa5d8b458fdab523e00052344a19dfeea --- /dev/null +++ b/docs/_site/meshedit/global/linear/index.html @@ -0,0 +1,12 @@ + Linear Subdivision - Linear Subdivision Link Search Menu Expand Document

Linear Subdivision

For an in-practice example, see the User Guide.

Unlike most other global remeshing operations, linear (and Catmull-Clark) subdivision will proceed by completely replacing the original halfedge mesh with a new one. The high-level procedure is:

  1. Generate a list of vertex positions for the new mesh.
  2. Generate a list of polygons for the new mesh, as a list of indices into the new vertex list (a la “polygon soup”).
  3. Using these two lists, rebuild the halfedge connectivity from scratch.

Given these lists, Halfedge_Mesh::from_poly will take care of allocating halfedges, setting up next and twin pointers, etc., based on the list of polygons generated in step 2—this routine is already implemented in the Scotty3D skeleton code.

Both linear and Catmull-Clark subdivision schemes will handle general n-gons (i.e., polygons with n sides) rather than, say, quads only or triangles only. Each n-gon (including but not limited to quadrilaterals) will be split into n quadrilaterals according to the following template:

The high-level procedure is outlined in greater detail in student/meshedit.cpp.

Vertex Positions

For global linear or Catmull-Clark subdivision, the strategy for assigning new vertex positions may at first appear a bit strange: in addition to updating positions at vertices, we will also calculate vertex positions associated with the edges and faces of the original mesh. Storing new vertex positions on edges and faces will make it extremely convenient to generate the polygons in our new mesh, since we can still use the halfedge data structure to decide which four positions get connected up to form a quadrilateral. In particular, each quad in the new mesh will consist of:

  • one new vertex associated with a face from the original mesh,
  • two new vertices associated with edges from the original mesh, and
  • one vertex from the original mesh.

For linear subdivision, the rules for computing new vertex positions are very simple:

  • New vertices at original faces are assigned the average coordinates of all corners of that face (i.e., the arithmetic mean).
  • New vertices at original edges are assigned the average coordinates of the two edge endpoints.
  • New vertices at original vertices are assigned the same coordinates as in the original mesh.

These values should be assigned to the members Face::new_pos, Edge::new_pos, and Vertex::new_pos, respectively. For instance, f->new_pos = Vec3( x, y, z ); will assign the coordinates (x,y,z) to the new vertex associated with face f. The general strategy for assigning these new positions is to iterate over all vertices, then all edges, then all faces, assigning appropriate values to new_pos. Note: you must copy the original vertex position Vertex::pos to the new vertex position Vertex::new_pos; these values will not be used automatically.

This step should be implemented in the method Halfedge_Mesh::linear_subdivide_positions in student/meshedit.cpp.

Steps 2 and 3 are already implemented by Halfedge_Mesh::subdivide in geometry/halfedge.cpp. For your understanding, an explanation of how these are implemented is provided below:

Polygons

Recall that in linear and Catmull-Clark subdivision all polygons are subdivided simultaneously. In other words, if we focus on the whole mesh (rather than a single polygon), then we are globally

  • creating one new vertex for each edge,
  • creating one new vertex for each face, and
  • keeping all the vertices of the original mesh.

These vertices are then connected up to form quadrilaterals (n quadrilaterals for each n-gon in the input mesh). Rather than directly modifying the halfedge connectivity, these new quads will be collected in a much simpler mesh data structure: a list of polygons. Note that with this subdivision scheme, every polygon in the output mesh will be a quadrilateral, even if the input contains triangles, pentagons, etc.

In Scotty3D, a list of polygons can be declared as

std::vector<std::vector<Index>> quads;
+

where std::vector is a class from the C++ standard template library, representing a dynamically-sized array. An Index is just another name for a size_t, which is the standard C++ type for integers that specify an element of an array. Polygons can be created by allocating a list of appropriate size, then specifying the indices of each vertex in the polygon. For example:

std::vector<Index> quad( 4 ); // allocate an array with four elements
+// Build a quad with vertices specified by integers (a,b,c,d), starting at zero.
+// These indices should correspond to the indices computing when assigning vertex
+// positions, as described above.
+quad[0] = a;
+quad[1] = b;
+quad[2] = c;
+quad[3] = d;
+

Once a quad has been created, it can be added to the list of quads by using the method vector::push_back, which appends an item to a vector:

std::vector<std::vector<Index>> newPolygons;
+newPolygons.push_back( quad );
+

The full array of new polygons will then be passed to the method Halfedge_Mesh::from_poly, together with the new vertex positions.

diff --git a/docs/_site/meshedit/global/linear/subdivide_quad.png b/docs/_site/meshedit/global/linear/subdivide_quad.png new file mode 100644 index 0000000000000000000000000000000000000000..611a5349d2976d0fd37c15b536c7e980a5b9ff1e Binary files /dev/null and b/docs/_site/meshedit/global/linear/subdivide_quad.png differ diff --git a/docs/_site/meshedit/global/loop/index.html b/docs/_site/meshedit/global/loop/index.html new file mode 100644 index 0000000000000000000000000000000000000000..2616936195c2cdc1d06a67f39c2d9efe73101800 --- /dev/null +++ b/docs/_site/meshedit/global/loop/index.html @@ -0,0 +1,24 @@ + Loop Subdivision - Loop Subdivision Link Search Menu Expand Document

Loop Subdivision

For an in-practice example, see the User Guide.

Loop subdivision (named after Charles Loop) is a standard approximating subdivision scheme for triangle meshes. At a high level, it consists of two basic steps:

  1. Split each triangle into four by connecting edge midpoints (sometimes called “4-1 subdivision”).
  2. Update vertex positions as a particular weighted average of neighboring positions.

The 4-1 subdivision looks like this:

4-1 Subdivision

And the following picture illustrates the weighted average:

Loop subdivision weights

In words, the new position of an old vertex is (1 - nu) times the old position + u times the sum of the positions of all of its neighbors. The new position for a newly created vertex v that splits Edge AB and is flanked by opposite vertices C and D across the two faces connected to AB in the original mesh will be 3/8 * (A + B) + 1/8 * (C + D). If we repeatedly apply these two steps, we will converge to a fairly smooth approximation of our original mesh.

We will implement Loop subdivision as the Halfedge_Mesh::loop_subdivide() method. In contrast to linear and Catmull-Clark subdivision, Loop subdivision must be implemented using the local mesh operations described above (simply because it provides an alternative perspective on subdivision implementation, which can be useful in different scenarios). In particular, 4-1 subdivision can be achieved by applying the following strategy:

  1. Split every edge of the mesh in any order whatsoever.
  2. Flip any new edge that touches a new vertex and an old vertex.

The following pictures (courtesy Denis Zorin) illustrate this idea:

Subdivision via flipping

Notice that only blue (and not black) edges are flipped in this procedure; as described above, edges in the split mesh should be flipped if and only if they touch both an original vertex and a new vertex (i.e., a midpoint of an original edge).

When working with dynamic mesh data structures (like a halfedge mesh), one must think very carefully about the order in which mesh elements are processed—it is quite easy to delete an element at one point in the code, then try to access it later (typically resulting in a crash!). For instance, suppose we write a loop like this:

// iterate over all edges in the mesh
+for (EdgeRef e = mesh.edges_begin(); e != mesh.edges_end(); e++) {
+  if (some condition is met) {
+    mesh.split_edge(e);
+  }
+}
+

Although this routine looks straightforward, it can very easily crash! The reason is fairly subtle: we are iterating over edges in the mesh by incrementing the iterator e (via the expression e++). But since split_edge() is allowed to create and delete mesh elements, it might deallocate the edge pointed to by e before we increment it! To be safe, one should instead write a loop like this:

// iterate over all edges in the mesh
+int n = mesh.n_edges();
+EdgeRef e = mesh.edges_begin();
+for (int i = 0; i < n; i++) {
+
+  // get the next edge NOW!
+  EdgeRef nextEdge = e;
+  nextEdge++;
+
+  // now, even if splitting the edge deletes it...
+  if (some condition is met) {
+    mesh.split_edge(e);
+  }
+
+  // ...we still have a valid reference to the next edge.
+  e = nextEdge;
+}
+

Note that this loop is just a representative example, the implementer must consider which elements might be affected by a local mesh operation when writing such loops. We recommend ensuring that your atomic edge operations provide certain guarantees. For instance, if the implementation of Halfedge_Mesh::flip_edge() guarantees that no edges will be created or destroyed (as it should), then you can safely do edge flips inside a loop without worrying about these kinds of side effects.

For Loop subdivision, there are some additional data members that will make it easy to keep track of the data needed to update the connectivity and vertex positions. In particular:

  • Vertex::new_pos can be used as temporary storage for the new position (computed via the weighted average above). Note that one should not change the value of Vertex::pos until all the new vertex positions have been computed – otherwise, subsequent computation will take averages of values that have already been averaged!
  • Likewise, Edge::new_pos can be used to store the position of the vertices that will ultimately be inserted at edge midpoints. Again, these values should be computed from the original values (before subdivision), and applied to the new vertices only at the very end. The Edge::new_pos value will be used for the position of the vertex that will appear along the old edge after the edge is split. We precompute the position of the new vertex before splitting the edges and allocating the new vertices because it is easier to traverse the simpler original mesh to find the positions for the weighted average that determines the positions of the new vertices.
  • Vertex::is_new can be used to flag whether a vertex was part of the original mesh, or is a vertex newly inserted by subdivision (at an edge midpoint).
  • Edge::is_new likewise flags whether an edge is a piece of an edge in the original mesh, or is an entirely new edge created during the subdivision step.

Given this setup, we strongly suggest that it will be easiest to implement subdivision according to the following “recipe” (though the implementer is of course welcome to try doing things a different way!). The basic strategy is to first compute the new vertex positions (storing the results in the new_pos members of both vertices and edges), and only then update the connectivity. Doing it this way will be much easier, since traversal of the original (coarse) connectivity is much simpler than traversing the new (fine) connectivity. In more detail:

  1. Mark all vertices as belonging to the original mesh by setting Vertex::is_new to false for all vertices in the mesh.
  2. Compute updated positions for all vertices in the original mesh using the vertex subdivision rule, and store them in Vertex::new_pos.
  3. Compute new positions associated with the vertices that will be inserted at edge midpoints, and store them in Edge::new_pos.
  4. Split every edge in the mesh, being careful about how the loop is written. In particular, you should make sure to iterate only over edges of the original mesh. Otherwise, the loop will keep splitting edges that you just created!
  5. Flip any new edge that connects an old and new vertex.
  6. Finally, copy the new vertex positions (Vertex::new_pos) into the usual vertex positions (Vertex::pos).

It may be useful to ensure Halfedge_Mesh::split_edge() will now return an iterator to the newly inserted vertex, and particularly that the halfedge of this vertex will point along the edge of the original mesh. This iterator is useful because it can be used to (i) flag the vertex returned by the split operation as a new vertex, and (ii) flag each outgoing edge as either being new or part of the original mesh. (In other words, Step 3 is a great time to set the members is_new for vertices and edges created by the split. It is also a good time to copy the new_pos field from the edge being split into the new_pos field of the newly inserted vertex.)

We recommend implementing this algorithm in stages, e.g., first see if you can correctly update the connectivity, then worry about getting the vertex positions right. Some examples below illustrate the correct behavior of the algorithm.

This subdivision rule is not required to support meshes with boundary, unless the implementer wishes to go above and beyond.

diff --git a/docs/_site/meshedit/global/loop/loop_41.png b/docs/_site/meshedit/global/loop/loop_41.png new file mode 100644 index 0000000000000000000000000000000000000000..2dba7da29f0846a33dd51d97d427cc65a6096b11 Binary files /dev/null and b/docs/_site/meshedit/global/loop/loop_41.png differ diff --git a/docs/_site/meshedit/global/loop/loop_flipping.png b/docs/_site/meshedit/global/loop/loop_flipping.png new file mode 100644 index 0000000000000000000000000000000000000000..f3093b09bef5abb95fa3145e8c6873c08a875643 Binary files /dev/null and b/docs/_site/meshedit/global/loop/loop_flipping.png differ diff --git a/docs/_site/meshedit/global/loop/loop_weights.png b/docs/_site/meshedit/global/loop/loop_weights.png new file mode 100644 index 0000000000000000000000000000000000000000..80e06fdcfdfa39a50cd80a05a27de496fc2a66bd Binary files /dev/null and b/docs/_site/meshedit/global/loop/loop_weights.png differ diff --git a/docs/_site/meshedit/global/remesh/index.html b/docs/_site/meshedit/global/remesh/index.html new file mode 100644 index 0000000000000000000000000000000000000000..de3fe7567b6968f6a52cd481f6b36279f5a0f701 --- /dev/null +++ b/docs/_site/meshedit/global/remesh/index.html @@ -0,0 +1 @@ + Isotropic Remeshing - Isotropic Remeshing Link Search Menu Expand Document

Isotropic Remeshing

For an in-practice example, see the User Guide.

Scotty3D also supports remeshing, an operation that keeps the number of samples roughly the same while improving the shape of individual triangles. The isotropic remeshing algorithm tries to make the mesh as “uniform” as possible, i.e., triangles as close as possible to equilateral triangles of equal size, and vertex degrees as close as possible to 6 (note: this algorithm is for triangle meshes only). The algorithm to be implemented is based on the paper Botsch and Kobbelt, “A Remeshing Approach to Multiresolution Modeling” (Section 4), and can be summarized in just a few simple steps:

  1. If an edge is too long, split it.
  2. If an edge is too short, collapse it.
  3. If flipping an edge improves the degree of neighboring vertices, flip it.
  4. Move vertices toward the average of their neighbors.

Repeating this simple process several times typically produces a mesh with fairly uniform triangle areas, angles, and vertex degrees. However, each of the steps deserves slightly more explanation.

Edge Splitting / Collapsing

Ultimately we want all of our triangles to be about the same size, which means we want edges to all have roughly the same length. As suggested in the paper by Botsch and Kobbelt, we will aim to keep our edges no longer than 4/3rds of the mean edge length L in the input mesh, and no shorter than 4/5ths of L. In other words, if an edge is longer than 4L/3, split it; if it is shorter than 4L/5, collapse it. We recommend performing all of the splits first, then doing all of the collapses (though as usual, you should be careful to think about when and how mesh elements are being allocated/deallocated).

Edge Flipping

We want to flip an edge any time it reduces the total deviation from regular degree (degree 6). In particular, let a1, a2 be the degrees of an edge that we’re thinking about flipping, and let b1, b2 be the degrees of the two vertices across from this edge. The total deviation in the initial configuration is |a1-6| + |a2-6| + |b1-6| + |b2-6|. You should be able to easily compute the deviation after the edge flip without actually performing the edge flip; if this number decreases, then the edge flip should be performed. We recommend flipping all edges in a single pass, after the edge collapse step.

Vertex Averaging

Finally, we also want to optimize the geometry of the vertices. A very simple heuristic is that a mesh will have reasonably well-shaped elements if each vertex is located at the center of its neighbors. To keep your code clean and simple, we recommend using the method Vertex::neighborhood_center(), which computes the average position of the vertex’s neighbors. Note that you should not use this to immediately replace the current position: we don’t want to be taking averages of vertices that have already been averaged. Doing so can yield some bizarre behavior that depends on the order in which vertices are traversed (if you’re interested in learning more about this issue, Google around for the terms “Jacobi iterations” and “Gauss-Seidel). So, the code should (i) first compute the new positions (stored in Vertex::new_pos) for all vertices using their neighborhood centroids, and (ii) then update the vertices with new positions (copy new_pos to pos).

How exactly should the positions be updated? One idea is to simply replace each vertex position with its centroid. We can make the algorithm slightly more stable by moving gently toward the centroid, rather than immediately snapping the vertex to the center. For instance, if p is the original vertex position and c is the centroid, we might compute the new vertex position as q = p + w(c - p) where w is some weighting factor between 0 and 1 (we use 1/5 in the examples below). In other words, we start out at p and move a little bit in the update direction v = c - p.

Another important issue arises if the update direction v has a large normal component, then we’ll end up pushing the surface in or out, rather than just sliding our sample points around on the surface. As a result, the shape of the surface will change much more than we’d like (try it!). To ameliorate this issue, we will move the vertex only in the tangent direction, which we can do by projecting out the normal component, i.e., by replacing v with v - dot(N,v)N, where N is the unit normal at the vertex. To get this normal, you will implement the method Vertex::normal(), which computes the vertex normal as the area-weighted average of the incident triangle normals. In other words, at a vertex i the normal points in the direction

where A_ijk is the area of triangle ijk, and N_ijk is its unit normal; this quantity can be computed directly by just taking the cross product of two of the triangle’s edge vectors (properly oriented).

Implementation

The final implementation requires very little information beyond the description above; the basic recipe is:

  1. Compute the mean edge length L of the input.
  2. Split all edges that are longer than 4L/3.
  3. Collapse all edges that are shorter than 4L/5.
  4. Flip all edges that decrease the total deviation from degree 6.
  5. Compute the centroids for all the vertices.
  6. Move each vertex in the tangent direction toward its centroid.

Repeating this procedure about 5 or 6 times should yield results like the ones seen below; you may want to repeat the smoothing step 10-20 times for each “outer” iteration.

diff --git a/docs/_site/meshedit/global/remesh/laplacian_smoothing.png b/docs/_site/meshedit/global/remesh/laplacian_smoothing.png new file mode 100644 index 0000000000000000000000000000000000000000..2bb73f639bf5e6b009fd35e8f6d272a48dd5e813 Binary files /dev/null and b/docs/_site/meshedit/global/remesh/laplacian_smoothing.png differ diff --git a/docs/_site/meshedit/global/remesh/remesh_example.png b/docs/_site/meshedit/global/remesh/remesh_example.png new file mode 100644 index 0000000000000000000000000000000000000000..1495cb78366674e97585cde2135d64a3e6e9844a Binary files /dev/null and b/docs/_site/meshedit/global/remesh/remesh_example.png differ diff --git a/docs/_site/meshedit/global/remesh/vert_normal_eq.png b/docs/_site/meshedit/global/remesh/vert_normal_eq.png new file mode 100644 index 0000000000000000000000000000000000000000..29afa0ce7097d974e4c71c1422af61f7052bdcd3 Binary files /dev/null and b/docs/_site/meshedit/global/remesh/vert_normal_eq.png differ diff --git a/docs/_site/meshedit/global/simplify/K_A_block.png b/docs/_site/meshedit/global/simplify/K_A_block.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ae5baca34eeeb4ba4d4a7eba293518f16a5781 Binary files /dev/null and b/docs/_site/meshedit/global/simplify/K_A_block.png differ diff --git a/docs/_site/meshedit/global/simplify/K_sum.png b/docs/_site/meshedit/global/simplify/K_sum.png new file mode 100644 index 0000000000000000000000000000000000000000..b23561a63b48cfcb788f1f21fe6908fe3af8a06f Binary files /dev/null and b/docs/_site/meshedit/global/simplify/K_sum.png differ diff --git a/docs/_site/meshedit/global/simplify/b_vec.png b/docs/_site/meshedit/global/simplify/b_vec.png new file mode 100644 index 0000000000000000000000000000000000000000..096ed198d8dbcf07ba4d192b4f88b6a1b0e7f4bb Binary files /dev/null and b/docs/_site/meshedit/global/simplify/b_vec.png differ diff --git a/docs/_site/meshedit/global/simplify/edge_k_sum.png b/docs/_site/meshedit/global/simplify/edge_k_sum.png new file mode 100644 index 0000000000000000000000000000000000000000..7bc0b7ff2435c3f50e386a22cc10aabfc70f3bb5 Binary files /dev/null and b/docs/_site/meshedit/global/simplify/edge_k_sum.png differ diff --git a/docs/_site/meshedit/global/simplify/homogeneous_coord.png b/docs/_site/meshedit/global/simplify/homogeneous_coord.png new file mode 100644 index 0000000000000000000000000000000000000000..dd40eaac7d561a2d0cfeafd6ebbecefa46a71a24 Binary files /dev/null and b/docs/_site/meshedit/global/simplify/homogeneous_coord.png differ diff --git a/docs/_site/meshedit/global/simplify/index.html b/docs/_site/meshedit/global/simplify/index.html new file mode 100644 index 0000000000000000000000000000000000000000..14dfaf6b3061642446270d31d3ec35e29de0c8c7 --- /dev/null +++ b/docs/_site/meshedit/global/simplify/index.html @@ -0,0 +1,41 @@ + Simplification - Simplification Link Search Menu Expand Document

Simplification

Surface simplification via quadric error metric

For an in-practice example, see the User Guide.

Just as with images, meshes often have far more samples than we really need. The simplification method in Scotty3D simplifies a given triangle mesh by applying quadric error simplification (note that this method is for triangle meshes only!). This method was originally developed at CMU by Michael Garland and Paul Heckbert, in their paper Surface Simplification Using Quadric Error Metrics. (Looking at this paper – or the many slides and presentations online that reference it – may be very helpful in understanding and implementing this part of the assignment!)

The basic idea is to iteratively collapse edges until we reach the desired number of triangles. The more edges we collapse, the simpler the mesh becomes. The only question is: which edges should we collapse? And where should we put the new vertex when we collapse an edge? Finding the sequence of edge collapses (and vertex positions) that give an optimal approximation of the surface would be very difficult – likely impossible! Garland and Heckbert instead proposed a simple, greedy scheme that works quite well in practice, and is the basis of many mesh simplification tools today. Roughly speaking, we’re going to write down a function that measures the distance to a given triangle, and then “accumulate” this function as many triangles get merged together.

More precisely, we can write the distance d of a point x to a plane with normal N passing through a point p as dist(x) = dot(N, x - p)

In other words, we measure the extent of the vector from p to x along the normal direction. This quantity gives us a value that is either positive (above the plane), or negative (below the plane). Suppose that x has coordinates (x,y,z), N has coordinates (a,b,c), and let d(x) = -dot(N, p), then in homogeneous coordinates, the distance to the plane is just

dot(u, v)

where u = (x,y,z,1) and v = (a,b,c,d). When we’re measuring the quality of an approximation, we don’t care whether we’re above or below the surface; just how far away we are from the original surface. Therefore, we’re going to consider the square of the distance, which we can write in homogeneous coordinates as

where T denotes the transpose of a vector. The term vv^T is an outer product of the vector v with itself, which gives us a symmetric matrix K = vv^T. In components, this matrix would look like

a^2   ab    ac   ad
+ab    b^2   bc   bd
+ac    bc    c^2  cd
+ad    bd    cd   d^2
+

but in Scotty3D it can be constructed by simply calling the method outer( Vec4, Vec4 ) in lib/mat4.h that takes a pair of vectors in homogeneous coordinates and returns the outer product as a 4x4 matrix. We will refer to this matrix as a “quadric,” because it also describes a quadric surface.

The matrix K tells us something about the distance to a plane. We can also get some idea of how far we are from a vertex by considering the sum of the squared distances to the planes passing through all triangles that touch that vertex. In other words, we will say that the distance to a small neighborhood around the vertex i can be approximated by the sum of the quadrics on the incident faces ijk:

Likewise, the distance to an edge ij will be approximated by the sum of the quadrics at its two endpoints:

The sums above should then be easy to compute – you can just add up the Mat4 objects around a vertex or along an edge using the usual “+” operator. You do not need to write an explicit loop over the 16 entries of the matrix.

Once you have a quadric K associated with an edge ij, you can ask the following question: if we collapse the edge to a point x, where should we put the new point so that it minimizes the (approximate) distance to the original surface? In other words, where should it go so that it minimizes the quantity x^T K x?

Just like any other function, we can look for the minimum by taking the derivative with respect to x and setting it equal to zero. (By the way, in this case we’re always going to get a minimum and not a maximum because the matrices K are all positive-definite.) In other words, we want to solve the small (4x4) linear system

K u = 0

for the optimal position u, expressed in homogeneous coordinates. We can simplify this situation a bit by remembering that the homogeneous coordinate for a point in 3-space is just 1. After a few simple manipulations, then, we can rewrite this same system as an even smaller 3x3 linear system

Ax = b

where A is the upper-left 3x3 block of K, and b is minus the upper-right 3x1 column. In other words, the entries of A are just

and the entries of b are

The cost associated with this solution can be found by plugging x back into our original expression, i.e., the cost is just

x^T K x

where K is the quadric associated with the edge. Fortunately, you do not need to write any code to solve this linear system. It can be solved using the method Mat4::inverse() which computes the inverse of a 4x4 matrix. Note that while we really want to work with a 3x3 matrix here, using the upper left 3x3 block of a 4x4 matrix is equivalent, given that the 4th row/column remain as in the identity matrix. In particular, you can write something like this:

Mat4 A; // computed by accumulating quadrics and then extacting the upper-left 3x3 block
+Vec3 b;  // computed by extracting minus the upper-right 3x1 column from the same matrix
+Vec3 x = A.inverse() * b; // solve Ax = b for x by hitting both sides with the inverse of A
+

However, A might not always be invertible: consider the case where the mesh is composed of points all on the same plane. In this case, you need to select an optimal point along the original edge. Please read Garland’s paper on page 62 section 3.5 for more details.

If you’re a bit lost at this point, don’t worry! There are a lot of details to go through, and we’ll summarize everything again in the implementation section. The main idea to keep in mind right now is:

  • we’re storing a matrix at every vertex that encodes (roughly) the distance to the surface, and
  • for each edge, we want to find the point that is (roughly) as close as possible to the surface, according to the matrices at its endpoints.

As we collapse edges, the matrices at endpoints will be combined by just adding them together. So, as we perform more and more edge collapses, these matrices will try to capture the distance to a larger and larger region of the original surface.

The one final thing we want to think about is performance. At each iteration, we want to collapse the edge that results in the least deviation from our original surface. But testing every edge, every single iteration sounds pretty expensive! (Something like O(n^2).) Instead, we’re going to put all our edges into a priority queue that efficiently keeps track of the “best” edge for us, even as we add and remove edges from our mesh. In the code framework, we actually introduce a new class called an Edge_Record that encodes all the essential information about our edge:

// An edge record keeps track of all the information about edges
+// that we need while applying our mesh simplification algorithm.
+class Edge_Record {
+public:
+    Edge_Record() {}
+    Edge_Record(std::unordered_map<Halfedge_Mesh::VertexRef, Mat4>& vertex_quadrics,
+                Halfedge_Mesh::EdgeRef e) : edge(e) {
+
+        // The second constructor takes a dictionary mapping vertices
+        // to quadric error matrices and an edge reference. It then
+        // computes the sum of the quadrics at the two endpoints
+        // and solves for the optimal midpoint position as measured
+        // by this quadric. It also stores the value of this quadric
+        // as the "score" used by the priority queue.
+    }
+
+    EdgeRef edge; // the edge referred to by this record
+
+    Vec3 optimal; // the optimal point, if we were
+                  // to collapse this edge next
+
+    float cost; // the cost associated with collapsing this edge,
+                // which is very (very!) roughly something like
+                // the distance we'll deviate from the original
+                // surface if this edge is collapsed
+};
+

Within Halfedge_Mesh::simplify, you will create a dictionary vertex_quadrics mapping vertices to quadric error matrices. We will use a std::unordered_map for this purpose, which is the hash map provided by the STL. Its usage is detailed in the C++ documentation. To initialize the record for a given edge e, you can use this dictionary to write

Edge_Record record(vertex_quadrics, e);
+

Similarly to how we created a dictionary mapping vertices to quadric matrices, we will also want to associate this record with its edge using the edge_records dictionary:

edge_records[e] = record;
+

Further, we will want to add the record to a priority queue, which is always sorted according to the cost of collapsing each edge. The starter code also provides the helper class PQueue for this purpose. For example:

PQueue<Edge_Record> queue;
+queue.insert(record);
+

If we ever want to know what the best edge is to collapse, we can just look at the top of the priority queue:

Edge_Record bestEdge = queue.top();
+

More documentation is provided inline in student/meshedit.cpp.

Though conceptually sophisticated, quadric error simplification is actually not too hard to implement. It basically boils down to two methods:

Edge_Record::Edge_Record(std::unordered_map<Halfedge_Mesh::VertexRef, Mat4>& vertex_quadrics, EdgeIter e);
+Halfedge_Mesh::simplify();
+

As discussed above, the edge record initializer should:

  1. Compute a quadric for the edge as the sum of the quadrics at endpoints.
  2. Build a 3x3 linear system for the optimal collapsed point, as described above.
  3. Solve this system and store the optimal point in Edge_Record::optimal.
  4. Compute the corresponding error value and store it in Edge_Record::cost.
  5. Store the edge in Edge_Record::edge.

The downsampling routine can then be implemented by following this basic recipe:

  1. Compute quadrics for each face by simply writing the plane equation for that face in homogeneous coordinates, and building the corresponding quadric matrix using outer(). This matrix should be stored in the yet-unmentioned dictionary face_quadrics.
  2. Compute an initial quadric for each vertex by adding up the quadrics at all the faces touching that vertex. This matrix should be stored in vertex_quadrics. (Note that these quadrics must be updated as edges are collapsed.)
  3. For each edge, create an Edge_Record, insert it into the edge_records dictionary, and add it to one global PQueue<Edge_Record> queue.
  4. Until a target number of triangles is reached, collapse the best/cheapest edge (as determined by the priority queue) and set the quadric at the new vertex to the sum of the quadrics at the endpoints of the original edge. You will also have to update the cost of any edge connected to this vertex.

The algorithm should terminate when a target number of triangles is reached – for the purpose of this assignment, you should set this number to 1/4th the number of triangles in the input (since subdivision will give you a factor of 4 in the opposite direction). Note that to get the best element from the queue you call PQueue::top(), whereas to remove the best element from the top you must call PQueue::pop() (the separation of these two tasks is fairly standard in STL-like data structures).

As with subdivision, it is critical that you carefully reason about which mesh elements get added/deleted in what order – particularly in Step 4. A good way to implement Step 4 would be:

  1. Get the cheapest edge from the queue.
  2. Remove the cheapest edge from the queue by calling pop().
  3. Compute the new quadric by summing the quadrics at its two endpoints.
  4. Remove any edge touching either of its endpoints from the queue.
  5. Collapse the edge.
  6. Set the quadric of the new vertex to the quadric computed in Step 3.
  7. Insert any edge touching the new vertex into the queue, creating new edge records for each of them.

Steps 4 and 7 are highlighted because it is easy to get these steps wrong. For instance, if you collapse the edge first, you may no longer be able to access the edges that need to be removed from the queue.

A working implementation should look something like the examples below. You may find it easiest to implement this algorithm in stages. For instance, first get the edge collapses working, using just the edge midpoint rather than the optimal point, then worry about solving for the point that minimizes quadric error.

diff --git a/docs/_site/meshedit/global/simplify/plane_normal.png b/docs/_site/meshedit/global/simplify/plane_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..6934fb020bf293c3f9bce42c4a39ad076fff3b3e Binary files /dev/null and b/docs/_site/meshedit/global/simplify/plane_normal.png differ diff --git a/docs/_site/meshedit/global/simplify/quad_example.png b/docs/_site/meshedit/global/simplify/quad_example.png new file mode 100644 index 0000000000000000000000000000000000000000..f238d12745d5230f88d3fd8315c813576f648b7f Binary files /dev/null and b/docs/_site/meshedit/global/simplify/quad_example.png differ diff --git a/docs/_site/meshedit/global/simplify/quad_simplify.png b/docs/_site/meshedit/global/simplify/quad_simplify.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b59daa2e2b1996f28cfeaca00ef6127d83489e Binary files /dev/null and b/docs/_site/meshedit/global/simplify/quad_simplify.png differ diff --git a/docs/_site/meshedit/global/simplify/vert_normals.png b/docs/_site/meshedit/global/simplify/vert_normals.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0c8a95765183897119483002bd9d8a1806e993 Binary files /dev/null and b/docs/_site/meshedit/global/simplify/vert_normals.png differ diff --git a/docs/_site/meshedit/global/triangulate/index.html b/docs/_site/meshedit/global/triangulate/index.html new file mode 100644 index 0000000000000000000000000000000000000000..165ebf939cec9d0c9b913f21e9a65e2c20bcaf3a --- /dev/null +++ b/docs/_site/meshedit/global/triangulate/index.html @@ -0,0 +1 @@ + Triangulation - Triangulation Link Search Menu Expand Document

Triangulation

For an in-practice example, see the User Guide.

A variety of geometry processing algorithms become easier to implement (or are only well defined) when the input consists purely of triangles. The method Halfedge_Mesh::triangulate converts any polygon mesh into a triangle mesh by splitting each polygon into triangles.

This transformation is performed in-place, i.e., the original mesh data is replaced with the new, triangulated data (rather than making a copy). The implementation of this method will look much like the implementation of the local mesh operations, with the addition of looping over every face in the mesh.

There is more than one way to split a polygon into triangles. Two common patterns are to connect every vertex to a single vertex, or to “zig-zag” the triangulation across the polygon:

The triangulate routine is not required to produce any particular triangulation so long as:

  • all polygons in the output are triangles,
  • the vertex positions remain unchanged, and
  • the output is a valid, manifold halfedge mesh.

Note that triangulation of nonconvex or nonplanar polygons may lead to geometry that is unattractive or difficult to interpret. However, the purpose of this method is simply to produce triangular connectivity for a given polygon mesh, and correct halfedge connectivity is the only invariant that must be preserved by the implementation. The geometric quality of the triangulation can later be improved by running other global algorithms (e.g., isotropic remeshing); ambitious developers may also wish to consult the following reference:

diff --git a/docs/_site/meshedit/global/triangulate/triangulate.png b/docs/_site/meshedit/global/triangulate/triangulate.png new file mode 100644 index 0000000000000000000000000000000000000000..bcaa9c89f409b55642fc18a7bd6b09b10f66770a Binary files /dev/null and b/docs/_site/meshedit/global/triangulate/triangulate.png differ diff --git a/docs/_site/meshedit/halfedge.html b/docs/_site/meshedit/halfedge.html new file mode 100644 index 0000000000000000000000000000000000000000..60a34214e3964abacb37036ecacb9fcb52b6a203 --- /dev/null +++ b/docs/_site/meshedit/halfedge.html @@ -0,0 +1,33 @@ + Halfedge Mesh - Halfedge Mesh Link Search Menu Expand Document

Halfedge Mesh

Geometric Data Structures

Scotty3D uses a variety of geometric data structures, depending on the task. Some operations (e.g., ray tracing) use a simple list of triangles that can be compactly encoded and efficiently cached. For more sophisticated geometric tasks like mesh editing and sampling, a simple triangle list is no longer sufficient (or leads to unnecessarily poor asymptotic performance). Most actions in MeshEdit mode therefore use a topological data structure called a halfedge mesh (also known as a doubly-connected edge list), which provides a good tradeoff between simplicity and sophistication.

The Halfedge Data Structure

The basic idea behind the halfedge data structure is that, in addition to the usual vertices, edges, and faces that make up a polygonal mesh, we also have an entity called a halfedge that acts like “glue” connecting the different elements. It is this glue that allow us to easily “navigate” the mesh, i.e., easily access mesh elements adjacent to a given element.

In particular, there are two halfedges associated with each edge (see picture above). For an edge connecting two vertices i and j, one of its halfedges points from i to j; the other one points from j to i. In other words, we say that the two halfedges are oppositely oriented. On of the halfedges is associated with the face to the “left” of the edge; the other is associated with the face to the “right.” Each halfedge knows about the opposite halfedge, which we call its twin. It also knows about the next halfedge around its face, as well as its associated edge, face, and vertex.

In contrast, the standard mesh elements (vertices, edges, and faces) know only about one of their halfedges. In particular:

  • a vertex knows about one of its “outgoing” halfedges,
  • an edge knows about one of its two halfedges, and
  • a face knows about one of the many halfedges circulating around its interior.

In summary, we have the following relationships:

Mesh Element Pointers
Vertex halfedge (just one)
Edge halfedge (just one)
Face halfedge (just one)
Halfedge next, twin, vertex, edge, face

This list emphasizes that it is really the halfedges that connect everything up. An easy example is if we want to visit all the vertices of a given face. We can start at the face’s halfedge, and follow the “next” pointer until we’re back at the beginning. A more interesting example is visiting all the vertices adjacent to a given vertex v. We can start by getting its outgoing halfedge, then its twin, then its next halfedge; this final halfedge will also point out of vertex v, but it will point toward a different vertex than the first halfedge. By repeating this process, we can visit all the neighboring vertices:

In some sense, a halfedge mesh is kind of like a supercharged linked list. For instance, the halfedges around a given face (connected by next pointers) form a sort of “cyclic” linked list, where the tail points back to the head.

A nice consequence of the halfedge representation is that any valid halfedge mesh must be manifold and orientable. Scotty3D will therefore only produce manifold, oriented meshes as output (and will complain if the input does not satisfy these criteria).

The Halfedge_Mesh Class

The Scotty3D skeleton code already provides a fairly sophisticated implementation of the half edge data structure, in the Halfedge_Mesh class (see geometry/halfedge.h and geometry/halfedge.cpp). Although the detailed implementation may appear a bit complicated, the basic interface is not much different from the abstract description given above. For instance, suppose we have a face f and want to print out the positions of all its vertices. We would write a routine like this:

void printVertexPositions(FaceRef f) {
+  HalfEdgeRef h = f->halfedge(); // get the first halfedge of the face
+  do {
+    VertexRef v = h->vertex();   // get the vertex of the current halfedge
+    cout << v->pos << endl;      // print the vertex position
+    h = h->next();               // move to the next halfedge around the face
+  } while (h != f->halfedge());  // keep going until we're back at the beginning
+}
+

Notice that we refer to a face as a FaceRef rather than just a Face. You can think of a Ref as a kind of pointer. Note that members of an iterator are accessed with an arrow -> rather than a dot ., just as with pointers. (A more in-depth explanation of some of these details can be found in the inline documentation.) Similarly, to print out the positions of all the neighbors of a given vertex we could write a routine like this:

void printNeighborPositions(VertexRef v) {
+  HalfEdgeRef h = v->halfedge();    // get one of the outgoing halfedges of the vertex
+  do {
+    HalfEdgeRef h_twin = h->twin();   // get the vertex of the current halfedge
+    VertexRef vN = h_twin->vertex();  // vertex is 'source' of the half edge.
+                                      // so h->vertex() is v,
+                                      // whereas h_twin->vertex() is the neighbor vertex.
+    cout << vN->pos << endl;          // print the vertex position
+    h = h_twin->next();               // move to the next outgoing halfedge of the vertex.
+  } while(h != v->halfedge());        // keep going until we're back at the beginning
+}
+

To iterate over all the vertices in a halfedge mesh, we could write a loop like this:

for(VertexRef v = mesh.vertices_begin(); v != mesh.vertices_end(); v++) {
+  printNeighborPositions(v); // do something interesting here
+}
+

Internally, the lists of vertices, edges, faces, and halfedges are stored as linked lists, which allows us to easily add or delete elements to our mesh. For instance, to add a new vertex we can write

VertexRef v = mesh.new_vertex();
+

Likewise, to delete a vertex we can write

mesh.erase(v);
+

Note, however, that one should be very, very careful when adding or deleting mesh elements. New mesh elements must be properly linked to the mesh – for instance, this new vertex must be pointed to one of its associated halfedges by writing something like

v->halfedge() = h;
+

Likewise, if we delete a mesh element, we must be certain that no existing elements still point to it; the halfedge data structure does not take care of these relationships for you automatically. In fact, that is exactly the point of this assignment: to get some practice directly manipulating the halfedge data structure. Being able to perform these low-level manipulations will enable you to write useful and interesting mesh code far beyond the basic operations in this assignment. The Halfedge_Mesh class provides a helper function called validate that checks whether the mesh iterators are valid. You might find it worthwhile calling this function to debug your implementation (please note that validate only checks that your mesh is valid - passing it does not imply that your specific operation is correct).

Finally, the boundary of the surface (e.g., the ankles and waist of a pair of pants) requires special care in our halfedge implementation. At first glance, it would seem that the routine printNeighborPositions() above might break if the vertex v is on the boundary, because at some point we worry that we have no twin() element to visit. Fortunately, our implementation has been designed to avoid this kind of catastrophe. In particular, rather than having an actual hole in the mesh, we create a “virtual” boundary face whose edges are all the edges of the boundary loop. This way, we can iterate over boundary elements just like any other mesh element. If we ever need to check whether an element is on the boundary, we have the methods.

Vertex::on_boundary()
+Edge::on_boundary()
+Face::is_boundary()
+Halfedge::is_boundary()
+

These methods return true if and only if the element is contained in the domain boundary. Additionally, we store an explicit list of boundary faces, which we can iterate over like any other type of mesh element:

for(FaceRef b = mesh.boundaries_begin(); b != mesh.boundaries_end(); b++) {
+  // do something interesting with this boundary loop
+}
+

These virtual faces are not stored in the usual face list, i.e., they will not show up when iterating over faces. The figure below should help to further explain the behavior of Halfedge_Mesh for surfaces with boundary:

Dark blue regions indicate interior faces, whereas light blue regions indicate virtual boundary faces. Note that for vertices and edges, on_boundary() will return true if the element is attached to a boundary face, but is_boundary() for halfedges is only true if the halfedge is ‘inside’ the boundary face. For example, in the figure above the region b is a virtual boundary face, which means that vertex v', edge e', and halfedge h' are all part of the boundary; their methods will return true. In contrast, vertex v, edge e, face f, and halfedge h are not part of the boundary, and their methods will return false. Notice also that the boundary face b is a polygon with 12 edges.

Note: the edge degree and face degree of a boundary vertex is not the same! Notice, for instance, that vertex v' is contained in three edges but only two interior faces. By convention, Vertex::degree() returns the face degree, not the edge degree. The edge degree can be computed by finding the face degree, and adding 1 if the vertex is a boundary vertex.

Please refer to the inline comments (e.g. of geometry/halfedge.h) for further details about the Halfedge_Mesh data structure.

diff --git a/docs/_site/meshedit/halfedge_pointers.png b/docs/_site/meshedit/halfedge_pointers.png new file mode 100644 index 0000000000000000000000000000000000000000..2db933895af394c0fb8615a9aea4489d096e758f Binary files /dev/null and b/docs/_site/meshedit/halfedge_pointers.png differ diff --git a/docs/_site/meshedit/index.html b/docs/_site/meshedit/index.html new file mode 100644 index 0000000000000000000000000000000000000000..e5381d986fde4648435cf1ab763efb36bb0a41ae --- /dev/null +++ b/docs/_site/meshedit/index.html @@ -0,0 +1 @@ + A2: MeshEdit - A2: MeshEdit Link Search Menu Expand Document

MeshEdit Overview

MeshEdit is the first major component of Scotty3D, which performs 3D modeling, subdivision, and mesh processing. When implementation of this tool is completed, it will enable the user to transform a simple cube model into beautiful, organic 3D surfaces described by high-quality polygon meshes. This tool can import, modify, and export industry-standard COLLADA files, allowing Scotty3D to interact with the broader ecosystem of computer graphics software.

The media/ subdirectory of the project contains a variety of meshes and scenes on which the implementation may be tested. The simple cube.dae input should be treated as the primary test case – when properly implemented MeshEdit contains all of the modeling tools to transform this starting mesh into a variety of functional and beautiful geometries. For further testing, a collection of other models are also included in this directory, but it is not necessarily reasonable to expect every algorithm to be effective on every input. The implementer must use judgement in selecting meaningful test inputs for the algorithms in MeshEdit.

The following sections contain guidelines for implementing the functionality of MeshEdit:

As always, be mindful of the project philosophy.

diff --git a/docs/_site/meshedit/local/bevel/bevel_diagram.png b/docs/_site/meshedit/local/bevel/bevel_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..4610bfabf4a845d19e71c86f8c20cd98e1e0f472 Binary files /dev/null and b/docs/_site/meshedit/local/bevel/bevel_diagram.png differ diff --git a/docs/_site/meshedit/local/bevel/bevel_indexing.png b/docs/_site/meshedit/local/bevel/bevel_indexing.png new file mode 100644 index 0000000000000000000000000000000000000000..ecca624d4fc7a1ab325e73048539284a77dec5a3 Binary files /dev/null and b/docs/_site/meshedit/local/bevel/bevel_indexing.png differ diff --git a/docs/_site/meshedit/local/bevel/index.html b/docs/_site/meshedit/local/bevel/index.html new file mode 100644 index 0000000000000000000000000000000000000000..00d48ca5da75c539443ffb7b8a526d7761de7a7f --- /dev/null +++ b/docs/_site/meshedit/local/bevel/index.html @@ -0,0 +1,19 @@ + Bevelling - Bevelling Link Search Menu Expand Document

Beveling

Here we provide some additional detail about the bevel operations and their implementation in Scotty3D. Each bevel operation has two components:

  1. a method that modifies the connectivity of the mesh, creating new beveled elements, and
  2. a method the updates the geometry of the mesh, insetting and offseting the new vertices according to user input.

The methods that update the connectivity are HalfedgeMesh::bevel_vertex, halfedgeMesh::bevel_edge, and HalfedgeMesh::bevel_face. The methods that update geometry are HalfedgeMesh::bevel_vertex_positions, HalfedgeMesh::bevel_edge_positions, and HalfedgeMesh::bevel_face_positions.

The methods for updating connectivity can be implemented following the general strategy outlined in edge flip tutorial. Note that the methods that update geometry will be called repeatedly for the same bevel, in order to adjust positions according to user mouse input. See the gif in the User Guide.

To update the geometry of a beveled element, you are provided with the following data:

  • start_positions - These are the original vertex positions of the beveled mesh element, without any insetting or offsetting.
  • face - This is a reference to the face currently being beveled. This was returned by one of the connectivity functions.
  • tangent_offset - The amount by which the new face should be inset (i.e., “shrunk” or “expanded”)
  • normal_offset - (faces only) The amount by which the new face should be offset in the normal direction.

Also note that we provide code to gather the halfedges contained in the beveled face, creating the array new_halfedges. You should only have to update the position (Vertex::pos) of the vertices associated with this list of halfedges. The basic recipe for updating these positions is:

  • Iterate over the list of halfedges (new_halfedges)
  • Grab the vertex coordinates that are needed to compute the new, updated vertex coordinates (this could be a mix of values from start_positions, or the members Vertex::pos)
  • Compute the updated vertex positions using the current values of tangent_offset (and possibly normal_offset)
  • Store the new vertex positions in Vertex::pos for the vertices of the new, beveled polygon only (i.e., the vertices associated with each of new_halfedges).

The reason for storing new_halfedges and start_positions in an array is that it makes it easy to access positions “to the left” and “to the right” of a given vertex. For instance, suppose we want to figure out the offset from the corner of a polygon. We might want to compute some geometric quantity involving the three vertex positions start_positions[i-1], start_positions[i], and start_positions[i+1] (as well as inset), then set the new vertex position new_halfedges[i]->vertex()->pos to this new value:

A useful trick here is modular arithmetic: since we really have a “loop” of vertices, we want to make sure that indexing the next element (+1) and the previous element (-1) properly “wraps around.” This can be achieved via code like

// Get the number of vertices in the new polygon
+int N = (int)hs.size();
+
+// Assuming we're looking at vertex i, compute the indices
+// of the next and previous elements in the list using
+// modular arithmetic---note that to get the previous index,
+// we can't just subtract 1 because the mod operation in C++
+// doesn't behave quite how you might expect for negative
+// values!
+int a = (i+N-1) % N;
+int b = i;
+int c = (i+1) % N;
+
+// Get the actual 3D vertex coordinates at these vertices
+Vec3 pa = start_positions[a];
+Vec3 pb = start_positions[b];
+Vec3 pc = start_positions[c];
+

From here, you will need to compute new coordinates for vertex i, which can be accessed from new_halfedges[i]->vertex()->pos. As a “dummy” example (i.e., this is NOT what you should actually do!!) this code will set the position of the new vertex to the average of the vertices above:

new_halfedges[i].vertex()->pos = ( pa + pb + pc ) / 3.; // replace with something that actually makes sense!
+

The only question remaining is: where should you put the beveled vertex? We will leave this decision up to you. This question is one where you will have to think a little bit about what a good design would be. Questions to ask yourself:

  • How do I compute a point that is inset from the original geometry?
  • For faces, how do I shift the geometry in the normal direction? (You may wish to use the method Face::normal() here.)
  • What should I do as the offset geometry starts to look degenerate, e.g., shrinks to a point, or goes outside some reasonable bounds?
  • What should I do when the geometry is nonplanar?
  • Etc.

The best way to get a feel for whether you have a good design is to try it out! Can you successfully and easily use this tool to edit your mesh? Or is it a total pain, producing bizarre results? You be the judge!

diff --git a/docs/_site/meshedit/local/bevel_edge.svg b/docs/_site/meshedit/local/bevel_edge.svg new file mode 100644 index 0000000000000000000000000000000000000000..6bd23b21ee06043d07c31f05539041ea991b4cea --- /dev/null +++ b/docs/_site/meshedit/local/bevel_edge.svg @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_site/meshedit/local/bevel_face.svg b/docs/_site/meshedit/local/bevel_face.svg new file mode 100644 index 0000000000000000000000000000000000000000..e3934d0899c2715c40d071a7389c2f30c02a0802 --- /dev/null +++ b/docs/_site/meshedit/local/bevel_face.svg @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_site/meshedit/local/bevel_vertex.svg b/docs/_site/meshedit/local/bevel_vertex.svg new file mode 100644 index 0000000000000000000000000000000000000000..2f5703499deb6436850c464a7a27d8f312076150 --- /dev/null +++ b/docs/_site/meshedit/local/bevel_vertex.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_site/meshedit/local/collapse_edge.svg b/docs/_site/meshedit/local/collapse_edge.svg new file mode 100644 index 0000000000000000000000000000000000000000..a5b7f129372ea99dabdada47b49128313142e3a7 --- /dev/null +++ b/docs/_site/meshedit/local/collapse_edge.svg @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_site/meshedit/local/collapse_face.svg b/docs/_site/meshedit/local/collapse_face.svg new file mode 100644 index 0000000000000000000000000000000000000000..aa84efdfb553288bc91323e107851c73100117ab --- /dev/null +++ b/docs/_site/meshedit/local/collapse_face.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_site/meshedit/local/edge_flip.html b/docs/_site/meshedit/local/edge_flip.html new file mode 100644 index 0000000000000000000000000000000000000000..396d6b4a7cb90b8b718355ec93e2fb5e5db57c90 --- /dev/null +++ b/docs/_site/meshedit/local/edge_flip.html @@ -0,0 +1,59 @@ + Edge Flip Tutorial - Edge Flip Tutorial Link Search Menu Expand Document

Edge Flip Tutorial

Here we provide a step-by-step guide to implementing a simplified version of the EdgeFlip operation for a pair of triangles—the final version, however, must be implemented for general polygons (i.e., any n-gon). The basic strategy for implementing the other local operations is quite similar to the procedure outlined below.

Note: if you’re not familiar with C++, you should definitely take a moment to learn about the standard library class std::vector, especially the method push_back(), which will make it easy to accumulate a list of pointers as you walk around a polygon, vertex, etc.

We now consider the case of a triangle-triangle edge flip.

PHASE 0: Draw a Diagram

Suppose we have a pair of triangles (a,b,c) and (c,b,d). After flipping the edge (b,c), we should now have triangles (a,d,c) and (a,b,d). A good first step for implementing any local mesh operation is to draw a diagram that clearly labels all elements affected by the operation:

Here we have drawn a diagram of the region around the edge both before and after the edge operation (in this case, “flip”), labeling each type of element (halfedge, vertex, edge, and face) from zero to the number of elements. It is important to include every element affected by the operation, thinking very carefully about which elements will be affected. If elements are omitted during this phase, everything will break—even if the code written in the two phases is correct! In this example, for instance, we need to remember to include the halfedges “outside” the neighborhood, since their “twin” pointers will be affected.

PHASE I: Collect elements

Once you’ve drawn your diagram, simply collect all the elements from the “before” picture. Give them the same names as in your diagram, so that you can debug your code by comparing with the picture.

// HALFEDGES
+HalfedgeRef h0 = e0->halfedge();
+HalfedgeRef h1 = h0->next();
+HalfedgeRef h2 = h1->next();
+HalfedgeRef h3 = h0->twin();
+HalfedgeRef h4 = h3->next();
+HalfedgeRef h5 = h4->next();
+HalfedgeRef h6 = h1->twin();
+HalfedgeRef h7 = h2->twin();
+HalfedgeRef h8 = h4->twin();
+HalfedgeRef h9 = h5->twin();
+
+// VERTICES
+VertexRef v0 = h0->vertex();
+VertexRef v1 = h3->vertex();
+// ...you fill in the rest!...
+
+// EDGES
+EdgeRef e1 = h5->edge();
+EdgeRef e2 = h4->edge();
+// ...you fill in the rest!...
+
+// FACES
+FaceRef f0 = h0->face();
+// ...you fill in the rest!...
+

PHASE II: Allocate new elements

If your edge operation requires new elements, now is the time to allocate them. For the edge flip, we don’t need any new elements; but suppose that for some reason we needed a new vertex v4. At this point we would allocate the new vertex via

VertexRef v4 = mesh.new_vertex();
+

(The name used for this new vertex should correspond to the label you give it in your “after” picture.) Likewise, new edges, halfedges, and faces can be allocated via the methods mesh.new_edge(), mesh.new_halfedge(), and mesh.new_face().

PHASE III: Reassign Elements

Next, update the pointers for all the mesh elements that are affected by the edge operation. Be exhaustive! In other words, go ahead and specify every pointer for every element, even if it did not change. Once things are working correctly, you can always optimize by removing unnecessary assignments. But get it working correctly first! Correctness is more important than efficiency.

// HALFEDGES
+h0->next() = h1;
+h0->twin() = h3;
+h0->vertex() = v2;
+h0->edge() = e0;
+h0->face() = f0;
+h1->next() = h2;
+h1->twin() = h7;
+h1->vertex() = v3;
+h1->edge() = e3;
+h1->face() = f0;
+// ...you fill in the rest!...
+
+// ...and don't forget about the "outside" elements!...
+h9->next() = h9->next(); // didn't change, but set it anyway!
+h9->twin() = h4;
+h9->vertex() = v1;
+h9->edge() = e1;
+h9->face() = h9->face(); // didn't change, but set it anyway!
+
+// VERTICES
+v0->halfedge() = h2;
+v1->halfedge() = h5;
+v2->halfedge() = h4;
+v3->halfedge() = h3;
+
+// EDGES
+e0->halfedge() = h0; //...you fill in the rest!...
+
+// FACES
+f0->halfedge() = h0; //...you fill in the rest!...
+

PHASE IV: Delete unused elements

If your edge operation eliminates elements, now is the best time to deallocate them: at this point, you can be sure that they are no longer needed. For instance, since we do not need the vertex allocated in PHASE II, we could write

mesh.erase(v4);
+

You should be careful that this mesh element is not referenced by any other element in the mesh. But if your “before” and “after” diagrams are correct, that should not be an issue!

Design considerations

The basic algorithm outlined above will handle most edge flips, but you should also think carefully about possible corner-cases. You should also think about other design issues, like “how much should this operation cost?” For instance, for this simple triangle-triangle edge flip it might be reasonable to:

  • Ignore requests to flip boundary edges (i.e., just return immediately if either neighboring face is a boundary loop).
  • Ignore requests to perform any edge flip that would make the surface non-manifold or otherwise invalidate the mesh.
  • Not add or delete any elements. Since there are the same number of mesh elements before and after the flip, you should only need to reassign pointers.
  • Perform only a constant amount of work – the cost of flipping a single edge should not be proportional to the size of the mesh!

Formally proving that your code is correct in all cases is challenging, but at least try to think about what could go wrong in degenerate cases (e.g., vertices of low degree, or very small meshes like a tetrahedron). The biggest challenge in properly implementing this type of local operation is making sure that all the pointers still point to the right place in the modified mesh, and will likely be the cause of most of your crashes! To help mitigate this, Scotty3D will automatically attempt to validate your mesh after each operation, and will warn you if it detects abnormalities. Note that it will still crash if you leave references to deleted mesh elements!

diff --git a/docs/_site/meshedit/local/edge_flip_diagram.png b/docs/_site/meshedit/local/edge_flip_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..104f4ca2476dec09934de2a63634ae3a6b9c3a6e Binary files /dev/null and b/docs/_site/meshedit/local/edge_flip_diagram.png differ diff --git a/docs/_site/meshedit/local/erase_edge.svg b/docs/_site/meshedit/local/erase_edge.svg new file mode 100644 index 0000000000000000000000000000000000000000..5b089844d2866e11ca04f8f186a667387cd589c6 --- /dev/null +++ b/docs/_site/meshedit/local/erase_edge.svg @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_site/meshedit/local/erase_vertex.svg b/docs/_site/meshedit/local/erase_vertex.svg new file mode 100644 index 0000000000000000000000000000000000000000..360e3e8b017af63f52cbf1f541bfb0fe95b221af --- /dev/null +++ b/docs/_site/meshedit/local/erase_vertex.svg @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_site/meshedit/local/flip_edge.svg b/docs/_site/meshedit/local/flip_edge.svg new file mode 100644 index 0000000000000000000000000000000000000000..d8f7c695c517d88c0c4faa5ee34fac932917597f --- /dev/null +++ b/docs/_site/meshedit/local/flip_edge.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_site/meshedit/local/index.html b/docs/_site/meshedit/local/index.html new file mode 100644 index 0000000000000000000000000000000000000000..452c6a7b88e0b9020b76eb667dd0269bfd113509 --- /dev/null +++ b/docs/_site/meshedit/local/index.html @@ -0,0 +1 @@ + Local Operations - Local Operations Link Search Menu Expand Document

Local Mesh Operations

Many of the actions that need to be implemented in the MeshEdit mode are local mesh operations (like edge collapse, face bevel, etc.).

A good recipe for ensuring that all pointers are still valid after a local remeshing operation is:

  1. Draw a picture of all the elements (vertices, edges, faces, halfedges) that will be needed from the original mesh, and all the elements that should appear in the modified mesh.
  2. Allocate any new elements that are needed in the modified mesh, but do not appear in the original mesh.
  3. For every element in the “modified” picture, set all of its pointers – even if they didn’t change. For instance, for each halfedge, make sure to set next, twin, vertex, edge, and face to the correct values in the new (modified) picture. For each vertex, make sure to set its halfedge pointer. Etc. A convenience method Halfedge::set_neighbors() has been created for this purpose.
  4. Deallocate any elements that are no longer used in the modified mesh, which can be done by calling Halfedge_Mesh::erase().

The reason for setting all the pointers (and not just the ones that changed) is that it is very easy to miss a pointer, causing your code to crash.

Interface with global mesh operations

To facilitate user interaction, as well as global mesh processing operations (described below), local mesh operations should return the following values when possible. However, should it happen that the specified values are not available, or that the operation should not work on the given input, we need a way to signify the failure case. To do so, each local operation actually returns a std::optional value parameterized on the type of element it returns. For example, Halfedge_Mesh::erase_vertex returns a std::optional<Halfedge_Mesh::Face>. An optional can hold a value of the specified type, or, similarly to a pointer, a null value (std::nullopt). See student/meshedit.cpp for specific examples.

Also, remember that in any case, the program should not crash! So for instance, you should never return a pointer to an element that was deleted.

See the User Guide for demonstrations of each local operation.

  • Halfedge_Mesh::flip_edge - should return the edge that was flipped

  • Halfedge_Mesh::split_edge - should return the inserted vertex

  • Halfedge_Mesh::collapse_edge - should return the new vertex, corresponding to the collapsed edge

  • Halfedge_Mesh::collapse_face - should return the new vertex, corresponding to the collapsed face

  • Halfedge_Mesh::erase_vertex - should return the new face, corresponding to the faces originally containing the vertex

  • Halfedge_Mesh::erase_edge - should return the new face, corresponding to the faces originally containing the edge

  • Halfedge_Mesh::bevel_vertex - should return the new face, corresponding to the beveled vertex

  • Halfedge_Mesh::bevel_edge - should return the new face, corresponding to the beveled edge

  • Halfedge_Mesh::bevel_face - should return the new, inset face

diff --git a/docs/_site/meshedit/local/split_edge.svg b/docs/_site/meshedit/local/split_edge.svg new file mode 100644 index 0000000000000000000000000000000000000000..326c30cd353596bbe7e8f95d4aad23ad7905bc97 --- /dev/null +++ b/docs/_site/meshedit/local/split_edge.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_site/meshedit/vertex_traversal.png b/docs/_site/meshedit/vertex_traversal.png new file mode 100644 index 0000000000000000000000000000000000000000..751bd34c9254089973ba5f4a9b6eda143a55efe0 Binary files /dev/null and b/docs/_site/meshedit/vertex_traversal.png differ diff --git a/docs/_site/pathtracer/BVH_construction_pseudocode.png b/docs/_site/pathtracer/BVH_construction_pseudocode.png new file mode 100644 index 0000000000000000000000000000000000000000..e7dc6ebed1de0374cbc1d55933dddc2086ac234a Binary files /dev/null and b/docs/_site/pathtracer/BVH_construction_pseudocode.png differ diff --git a/docs/_site/pathtracer/CBsphere.png b/docs/_site/pathtracer/CBsphere.png new file mode 100644 index 0000000000000000000000000000000000000000..6561cb434e1c3399d7b93f3a5c608357cb28ca99 Binary files /dev/null and b/docs/_site/pathtracer/CBsphere.png differ diff --git a/docs/_site/pathtracer/Task1_Camera_Rays_1.mp4 b/docs/_site/pathtracer/Task1_Camera_Rays_1.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..0742db24fd326da6e90b4b511bf1b428213d0f61 Binary files /dev/null and b/docs/_site/pathtracer/Task1_Camera_Rays_1.mp4 differ diff --git a/docs/_site/pathtracer/bounding_volume_hierarchy.html b/docs/_site/pathtracer/bounding_volume_hierarchy.html new file mode 100644 index 0000000000000000000000000000000000000000..e40eefcb5485d5708eac1fdb0b6a63ebff0f6da0 --- /dev/null +++ b/docs/_site/pathtracer/bounding_volume_hierarchy.html @@ -0,0 +1 @@ + (Task 3) BVH - (Task 3) BVH Link Search Menu Expand Document

(Task 3) Bounding Volume Hierarchy

In this task you will implement a bounding volume hierarchy that accelerates ray-scene intersection. Most of this work will be in student/bvh.inl. Note that this file has an unusual extension (.inl = inline) because it is an implementation file for a template class. This means bvh.h must #include it, so all code that sees bvh.h will also see bvh.inl.

First, take a look at the definition for our BVH in rays/bvh.h. We represent our BVH using a vector of Nodes, nodes, as an implicit tree data structure in the same fashion as heaps that you probably have seen in some other courses. A Node has the following fields:

  • BBox bbox: the bounding box of the node (bounds all primitives in the subtree rooted by this node)
  • size_t start: start index of primitives in the BVH’s primitive array
  • size_t size: range of index in the primitive list (number of primitives in the subtree rooted by the node)
  • size_t l: the index of the left child node
  • size_t r: the index of the right child node

The BVH class also maintains a vector of all primitives in the BVH. The fields start and size in the BVH Node refer the range of contained primitives in this array. The primitives in this array are not initially in any particular order, and you will need to rearrange the order as you build the BVH so that your BVH can accurately represent the spacial hierarchy.

The starter code constructs a valid BVH, but it is a trivial BVH with a single node containing all scene primitives. Once you are done with this task, you can check the box for BVH in the left bar under “Visualize” when you start render to visualize your BVH and see each levels.

Finally, note that the BVH visualizer will start drawing from BVH::root_idx, so be sure to set this to the proper index (probably 0 or nodes.size() - 1, depending on your implementation) when you build the BVH.

Step 0: Bounding Box Calculation

Implement BBox::hit in student/bbox.cpp. Also if you haven’t already, implement Triangle::bbox in student/tri_mesh.cpp (Triangle::bbox should be fairly straightforward). We recommend checking out this Scratchapixel article.

Step 1: BVH Construction

Your job is to construct a BVH using the Surface Area Heuristic discussed in class. Tree construction would occur when the BVH object is constructed. Below is the pseudocode by which your BVH construction procedure should generally follow (copied from lecture slides).

Step 2: Ray-BVH Intersection

Implement the ray-BVH intersection routine Trace BVH<Primitive>::hit(const Ray& ray). You may wish to consider the node visit order optimizations we discussed in class. Once complete, your renderer should be able to render all of the test scenes in a reasonable amount of time. Visualization of normals may help with debugging.

Visualization

In Render mode, simply check the box for “BVH”, and you would be able to see the BVH you generated in task 3 when you start rendering. You can click on the horizontal bar to see each level of your BVH.

Sample BVHs

The BVH constructed for Spot the Cow on the 10th level.

The BVH constructed for a scene composed of several cubes and spheres on the 0th and 1st levels.

The BVH constructed for the Stanford Bunny on the 10th level.

diff --git a/docs/_site/pathtracer/bsdf_diagrams.png b/docs/_site/pathtracer/bsdf_diagrams.png new file mode 100644 index 0000000000000000000000000000000000000000..f2e8927306c98275c6c1c474fa5ff8b15ce4efd4 Binary files /dev/null and b/docs/_site/pathtracer/bsdf_diagrams.png differ diff --git a/docs/_site/pathtracer/camera_rays.html b/docs/_site/pathtracer/camera_rays.html new file mode 100644 index 0000000000000000000000000000000000000000..0a5c0b3201a080b14c1013859d4ccae8db314981 --- /dev/null +++ b/docs/_site/pathtracer/camera_rays.html @@ -0,0 +1 @@ + (Task 1) Camera Rays - (Task 1) Camera Rays Link Search Menu Expand Document

(Task 1) Generating Camera Rays

Walkthrough Video

“Camera rays” emanate from the camera and measure the amount of scene radiance that reaches a point on the camera’s sensor plane. (Given a point on the virtual sensor plane, there is a corresponding camera ray that is traced into the scene.)

Take a look at Pathtracer::trace_pixel in student/pathtracer.cpp. The job of this function is to compute the amount of energy arriving at this pixel of the image. Conveniently, we’ve given you a function Pathtracer::trace_ray(r) that provides a measurement of incoming scene radiance along the direction given by ray r. See lib/ray.h for the interface of ray.

Here are some rough notes giving more detail on how to generate camera rays.

This tutorial from Scratchapixel also provides a detailed walkthrough of what you need to do. (Note that the coordinate convention that Scratchpixel adopted is different from the one we use, and you should stick to the coordinate system from the rough notes all the time.)

Step 1: Given the width and height of the screen, and point in screen space, compute the corresponding coordinates of the point in normalized ([0-1]x[0-1]) screen space in Pathtracer::trace_pixel. Pass these coordinates to the camera via Camera::generate_ray in camera.cpp.

Step 2: Implement Camera::generate_ray. This function should return a ray in world space that reaches the given sensor sample point. We recommend that you compute this ray in camera space (where the camera pinhole is at the origin, the camera is looking down the -Z axis, and +Y is at the top of the screen.). In util/camera.h, the Camera class stores vert_fov and aspect_ratio indicating the vertical field of view of the camera (in degrees, not radians) as well as the aspect ratio. Note that the camera maintains camera-space-to-world space transform matrix iview that will come in handy.

Step 3: Your implementation of Pathtracer::trace_pixel must support super-sampling. The member Pathtracer::n_samples specifies the number of samples of scene radiance to evaluate per pixel. The starter code will hence call Pathtracer::trace_pixel one time for each sample, so your implementation of Pathtracer::trace_pixel should choose a new location within the pixel each time.

To choose a sample within the pixel, you should implement Rect::Uniform::sample (see src/student/samplers.cpp), such that it provides (random) uniformly distributed 2D points within the rectangular region specified by the origin and the member Rect::Uniform::size. Then you may then create a Rect::Uniform sampler with a one-by-one region and call sample() to obtain randomly chosen offsets within the pixel.

Once you have implemented Pathtracer::trace_pixel, Rect::Uniform::sample and Camera::generate_ray, you should have a working camera.

Tip: Since it’ll be hard to know if you camera rays are correct until you implement primitive intersection, we recommend debugging your camera rays by checking what your implementation of Camera::generate_ray does with rays at the center of the screen (0.5, 0.5) and at the corners of the image.

The code can log the results of raytracing for visualization and debugging. To do so, simply call function Pathtracer::log_ray in your Pathtracer::trace_pixel. Function Pathtracer::log_ray takes in 3 arguments: the ray tat you want to log, a float that specifies the distance to log that ray up to, and a color for the ray. If you don’t pass a color, it will default to white. You should only log only a portion of the generated rays, or else the result will be hard to interpret. To do so, you can add if(RNG::coin_flip(0.0005f)) log_ray(out, 10.0f); to log 0.05% of camera rays.

Finally, you can visualize the logged rays by checking the box for Logged rays under Visualize and then starting the render (Open Render Window -> Start Render). After running the path tracer, rays will be shown as lines in visualizer. Be sure to wait for rendering to complete so you see all rays while visualizing.

logged_rays

Step 4: Camera also includes the members aperture and focal_dist. These parameters are used to simulate the effects of de-focus blur and bokeh found in real cameras. Focal distance represents the distance between the camera aperture and the plane that is perfectly in focus. To use it, you must simply scale up the sensor position from step 2 (and hence ray direction) by focal_dist instead of leaving it on the z = -1 plane. You might notice that this doesn’t actually change anything about your result, since this is just scaling up a vector that is later normalized. However, now aperture comes in: by default, all rays start a single point, representing a pinhole camera. But when aperture > 0, we want to randomly choose the ray origin from an aperturexaperture square centered at the origin and facing the camera direction (-Z). Then, we use this point as the starting point of the ray while keeping its sensor position fixed (consider how that changes the ray direction). Now it’s as if the same image was taken from slightly off origin. This simulates real cameras with non-pinhole apertures: the final photo is equivalent to averaging images taken by pinhole cameras placed at every point in the aperture.

Finally, we can see that non-zero aperture makes focal distance matter: objects on the focal plane are unaffected, since where the ray hits on the sensor is the same regardless of the ray’s origin. However, rays that hit objects objects closer or farther than the focal distance will be able to “see” slightly different parts of the object based on the ray origin. Averaging over many rays within a pixel, this results in collecting colors from a region larger slightly than that pixel would cover given zero aperture, causing the object to become blurry. We are using a square aperture, so bokeh effects will reflect this.

You can test aperture/focal distance by adjusting aperture and focal_dist using the camera UI and examining logging rays. Once you have implemented primitive intersections and path tracing (tasks 3/5), you will be able to properly render dof.dae:

depth of field test

Extra credit ideas:

  • Write your own camera pixel sampler (replacing Rect::Uniform) that generates samples with improved distribution. Some examples include:
    • Jittered Sampling
    • Multi-jittered sampling
    • N-Rooks (Latin Hypercube) sampling
    • Sobol sequence sampling
    • Halton sequence sampling
    • Hammersley sequence sampling
diff --git a/docs/_site/pathtracer/cornell_classic.png b/docs/_site/pathtracer/cornell_classic.png new file mode 100644 index 0000000000000000000000000000000000000000..48905ceffbf93dfd66ce070da86a348712764035 Binary files /dev/null and b/docs/_site/pathtracer/cornell_classic.png differ diff --git a/docs/_site/pathtracer/cornell_lambertian.png b/docs/_site/pathtracer/cornell_lambertian.png new file mode 100644 index 0000000000000000000000000000000000000000..1721cb2fed4d9cd0b0ab847cff332cbd1ffb987a Binary files /dev/null and b/docs/_site/pathtracer/cornell_lambertian.png differ diff --git a/docs/_site/pathtracer/dielectric_eq1.png b/docs/_site/pathtracer/dielectric_eq1.png new file mode 100644 index 0000000000000000000000000000000000000000..a971fce9a55fdff8a8fe09f9b77032364db0c94e Binary files /dev/null and b/docs/_site/pathtracer/dielectric_eq1.png differ diff --git a/docs/_site/pathtracer/dielectric_eq10.png b/docs/_site/pathtracer/dielectric_eq10.png new file mode 100644 index 0000000000000000000000000000000000000000..931aee84c47878aa103d18d304e09dd2b3963756 Binary files /dev/null and b/docs/_site/pathtracer/dielectric_eq10.png differ diff --git a/docs/_site/pathtracer/dielectric_eq2.png b/docs/_site/pathtracer/dielectric_eq2.png new file mode 100644 index 0000000000000000000000000000000000000000..d84a2046fc0f5e8ae539ad461de507339c3c0086 Binary files /dev/null and b/docs/_site/pathtracer/dielectric_eq2.png differ diff --git a/docs/_site/pathtracer/dielectric_eq3.png b/docs/_site/pathtracer/dielectric_eq3.png new file mode 100644 index 0000000000000000000000000000000000000000..5f3ee82867625dfd55df47b37ec3a850fe013915 Binary files /dev/null and b/docs/_site/pathtracer/dielectric_eq3.png differ diff --git a/docs/_site/pathtracer/dielectric_eq4.png b/docs/_site/pathtracer/dielectric_eq4.png new file mode 100644 index 0000000000000000000000000000000000000000..966b27bc39c4a74df41525cacc3e63ad4ea5186a Binary files /dev/null and b/docs/_site/pathtracer/dielectric_eq4.png differ diff --git a/docs/_site/pathtracer/dielectric_eq5.png b/docs/_site/pathtracer/dielectric_eq5.png new file mode 100644 index 0000000000000000000000000000000000000000..eb38cd114400fb66f7ec372ad680843814360b1b Binary files /dev/null and b/docs/_site/pathtracer/dielectric_eq5.png differ diff --git a/docs/_site/pathtracer/dielectric_eq6.png b/docs/_site/pathtracer/dielectric_eq6.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f52f1df31a77affd3637c2b295d969d5dff78f Binary files /dev/null and b/docs/_site/pathtracer/dielectric_eq6.png differ diff --git a/docs/_site/pathtracer/dielectric_eq7.png b/docs/_site/pathtracer/dielectric_eq7.png new file mode 100644 index 0000000000000000000000000000000000000000..00a56046fa13df567b886f0a9911a20e4e6bc2b3 Binary files /dev/null and b/docs/_site/pathtracer/dielectric_eq7.png differ diff --git a/docs/_site/pathtracer/dielectric_eq8.png b/docs/_site/pathtracer/dielectric_eq8.png new file mode 100644 index 0000000000000000000000000000000000000000..5de8ca5b318f6fb62f1ec32a40bdc48b4b2e4e25 Binary files /dev/null and b/docs/_site/pathtracer/dielectric_eq8.png differ diff --git a/docs/_site/pathtracer/dielectric_eq9.png b/docs/_site/pathtracer/dielectric_eq9.png new file mode 100644 index 0000000000000000000000000000000000000000..b430e9bdd447376d0016f331099248a99781b4dc Binary files /dev/null and b/docs/_site/pathtracer/dielectric_eq9.png differ diff --git a/docs/_site/pathtracer/dielectrics_and_transmission.html b/docs/_site/pathtracer/dielectrics_and_transmission.html new file mode 100644 index 0000000000000000000000000000000000000000..f42d1cc46079ee4b68f8b98b411a635c7a31f0e6 --- /dev/null +++ b/docs/_site/pathtracer/dielectrics_and_transmission.html @@ -0,0 +1 @@ + Dielectrics and Transmission - Dielectrics and Transmission Link Search Menu Expand Document

Dielectrics and Transmission

Fresnel Equations for a Dielectric

The Fresnel Equations (another link here) describe the amount of reflection from a surface. The description below is an approximation for dielectric materials (materials that don’t conduct electricity). In this assignment you’re asked to implement a glass material, which is a dielectric.

In the description below, and refer to the index of refraction of the medium containing an incoming ray, and the zenith angle of the ray to the surface of a new medium. and refer to the index of refraction of the new medium and the angle to the surface normal of a transmitted ray.

The Fresnel equations state that reflection from a surface is a function of the surface’s index of refraction, as well as the polarity of the incoming light. Since our renderer doesn’t account for polarity, we’ll apply a common approximation of averaging the reflectance of polarizes light in perpendicular and parallel polarized light:

The parallel and perpendicular terms are given by:

Therefore, for a dielectric material, the fraction of reflected light will be given by , and the amount of transmitted light will be given by .

Alternatively, you may compute using Schlick’s approximation.

Distribution Function for Transmitted Light

We described the BRDF for perfect specular reflection in class, however we did not discuss the distribution function for transmitted light. Since refraction “spreads” or “condenses” a beam, unlike perfect reflection, the radiance along the ray changes due to a refraction event. In your assignment you should use Snell’s Law to compute the direction of refraction rays, and use the following distribution function to compute the radiance of transmitted rays. We refer you guys to Pharr, Jakob, and and Humphries’s book Physically Based Rendering for a derivation based on Snell’s Law and the relation . (But you are more than welcome to attempt a derivation on your own!)

diff --git a/docs/_site/pathtracer/environment_eq1.png b/docs/_site/pathtracer/environment_eq1.png new file mode 100644 index 0000000000000000000000000000000000000000..405e5949c094d5b767a3d3ed4bc16a8475a04ffb Binary files /dev/null and b/docs/_site/pathtracer/environment_eq1.png differ diff --git a/docs/_site/pathtracer/environment_eq10.png b/docs/_site/pathtracer/environment_eq10.png new file mode 100644 index 0000000000000000000000000000000000000000..87c7fd6c23bf15a5239461839e1710650c29a471 Binary files /dev/null and b/docs/_site/pathtracer/environment_eq10.png differ diff --git a/docs/_site/pathtracer/environment_eq11.png b/docs/_site/pathtracer/environment_eq11.png new file mode 100644 index 0000000000000000000000000000000000000000..23e4402bc62927d0f7173cb3c141689c3b34996c Binary files /dev/null and b/docs/_site/pathtracer/environment_eq11.png differ diff --git a/docs/_site/pathtracer/environment_eq12.png b/docs/_site/pathtracer/environment_eq12.png new file mode 100644 index 0000000000000000000000000000000000000000..b08988d6e51d199913bb37b117aa4dd7a46f3c60 Binary files /dev/null and b/docs/_site/pathtracer/environment_eq12.png differ diff --git a/docs/_site/pathtracer/environment_eq2.png b/docs/_site/pathtracer/environment_eq2.png new file mode 100644 index 0000000000000000000000000000000000000000..86a72e4bf0a35f93afdd8bc9880a5b7bf4287263 Binary files /dev/null and b/docs/_site/pathtracer/environment_eq2.png differ diff --git a/docs/_site/pathtracer/environment_eq3.png b/docs/_site/pathtracer/environment_eq3.png new file mode 100644 index 0000000000000000000000000000000000000000..0197f24f2a52f965995f33358ac58870994cf59b Binary files /dev/null and b/docs/_site/pathtracer/environment_eq3.png differ diff --git a/docs/_site/pathtracer/environment_eq4.png b/docs/_site/pathtracer/environment_eq4.png new file mode 100644 index 0000000000000000000000000000000000000000..8c7948913fd513a09adf2ded2b6f837c4ad31097 Binary files /dev/null and b/docs/_site/pathtracer/environment_eq4.png differ diff --git a/docs/_site/pathtracer/environment_eq5.png b/docs/_site/pathtracer/environment_eq5.png new file mode 100644 index 0000000000000000000000000000000000000000..5f9c7bdbfcd0eccae2d3f728d9b7adc0372b927d Binary files /dev/null and b/docs/_site/pathtracer/environment_eq5.png differ diff --git a/docs/_site/pathtracer/environment_eq6.png b/docs/_site/pathtracer/environment_eq6.png new file mode 100644 index 0000000000000000000000000000000000000000..1242aeab548dae65abca51afbf5c4b47903665ef Binary files /dev/null and b/docs/_site/pathtracer/environment_eq6.png differ diff --git a/docs/_site/pathtracer/environment_eq7.png b/docs/_site/pathtracer/environment_eq7.png new file mode 100644 index 0000000000000000000000000000000000000000..23ae17557acf6aac520f2924aa2eb632e063a326 Binary files /dev/null and b/docs/_site/pathtracer/environment_eq7.png differ diff --git a/docs/_site/pathtracer/environment_eq8.png b/docs/_site/pathtracer/environment_eq8.png new file mode 100644 index 0000000000000000000000000000000000000000..01d2be26e2d166c45bd8b673c8d7b1badd8710f7 Binary files /dev/null and b/docs/_site/pathtracer/environment_eq8.png differ diff --git a/docs/_site/pathtracer/environment_eq9.png b/docs/_site/pathtracer/environment_eq9.png new file mode 100644 index 0000000000000000000000000000000000000000..887a8b9c19c08e07db30a652f031c61a31c5878b Binary files /dev/null and b/docs/_site/pathtracer/environment_eq9.png differ diff --git a/docs/_site/pathtracer/environment_lighting.html b/docs/_site/pathtracer/environment_lighting.html new file mode 100644 index 0000000000000000000000000000000000000000..5de39ec4327b294143901a456646b3eaeb0faef9 --- /dev/null +++ b/docs/_site/pathtracer/environment_lighting.html @@ -0,0 +1 @@ + (Task 7) Environment Lighting - (Task 7) Environment Lighting Link Search Menu Expand Document

(Task 7) Environment Lighting

The final task of this assignment will be to implement a new type of light source: an infinite environment light. An environment light is a light that supplies incident radiance (really, the light intensity dPhi/dOmega) from all directions on the sphere. Rather than using a predefined collection of explicit lights, an environment light is a capture of the actual incoming light from some real-world scene; rendering using environment lighting can be quite striking.

The intensity of incoming light from each direction is defined by a texture map parameterized by phi and theta, as shown below.

envmap_figure

In this task you need to implement the Env_Map::sample and Env_Map::sample_direction method in student/env_light.cpp. You’ll start with uniform direction sampling to get things working, and then move to a more advanced implementation that uses importance sampling to significantly reduce variance in rendered images.

Step 1: Uniform sampling

To get things working, your first implementation of Env_Map::sample will be quite simple. You should generate a random direction on the sphere (with uniform (1/4pi) probability with respect to solid angle), convert this direction to coordinates (phi, theta) and then look up the appropriate radiance value in the texture map using bilinear interpolation (note: we recommend you begin with bilinear interpolation to keep things simple.)

Since high dynamic range environment maps can be large files, we have not included them in the starter code repo. You can download a set of environment maps from this link. You can designate rendering to use a particular environment map from the GUI: go to layout -> new light -> environment map-> add, and then select one of the environment maps that you have just downloaded.

envmap_gui

For more HDRIs for creative environment maps, check out HDRIHAVEN

Tips:

  • You must write your own code to uniformly sample the sphere.
  • check out the interface of Env_Map in rays/env_light.h. For Env_Map, the image field is the actual map being represented as a HDR_Image, which contains the pixels of the environment map and size of the environment texture. The interface for HDR_Image is in util/hdr_image.h.

Step 2: Importance sampling the environment map

Much like light in the real world, most of the energy provided by an environment light source is concentrated in the directions toward bright light sources. Therefore, it makes sense to bias selection of sampled directions towards the directions for which incoming radiance is the greatest. In this final task you will implement an importance sampling scheme for environment lights. For environment lights with large variation in incoming light intensities, good importance sampling will significantly improve the quality of renderings.

The basic idea is that you will assign a probability to each pixel in the environment map based on the total flux passing through the solid angle it represents.

A pixel with coordinate subtends an area on the unit sphere (where and the angles subtended by each pixel – as determined by the resolution of the texture). Thus, the flux through a pixel is proportional to . (We only care about the relative flux through each pixel to create a distribution.)

Summing the fluxes for all pixels, then normalizing the values so that they sum to one, yields a discrete probability distribution for picking a pixel based on flux through its corresponding solid angle on the sphere.

The question is now how to sample from this 2D discrete probability distribution. We recommend the following process which reduces the problem to drawing samples from two 1D distributions, each time using the inversion method discussed in class:

  • Given the probability distribution for all pixels, compute the marginal probability distribution for selecting a value from each row of pixels.

  • Given for any pixel, compute the conditional probability .

Given the marginal distribution for and the conditional distributions for environment map rows, it is easy to select a pixel as follows:

  1. Use the inversion method to first select a “row” of the environment map according to .
  2. Given this row, use the inversion method to select a pixel in the row according to .

Here are a few tips:

  • When computing areas corresponding to a pixel, use the value of theta at the pixel centers.
  • We recommend precomputing the joint distributions p(phi, theta) and marginal distributions p(theta) in the constructor of Sampler::Sphere::Image and storing the resulting values in fields pdf. See rays/sampler.h.
  • Spectrum::luma() returns the luminance (brightness) of a Spectrum. The probability of a pixel should be proportional to the product of its luminance and the solid angle it subtends.
  • std::lower_bound is your friend. Documentation is here.

Sample results for importance sampling:

ennis.exr with 32 spp

ennis

uffiz.exr with 32 spp

uffiz

field.exr with 1024 spp

ennis

diff --git a/docs/_site/pathtracer/envmap_figure.jpg b/docs/_site/pathtracer/envmap_figure.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53e677f1981b08eab549308ecddf7323575d24b0 Binary files /dev/null and b/docs/_site/pathtracer/envmap_figure.jpg differ diff --git a/docs/_site/pathtracer/envmap_gui.png b/docs/_site/pathtracer/envmap_gui.png new file mode 100644 index 0000000000000000000000000000000000000000..6af2b8bea6444291e96c3f34666dd02632bee6c5 Binary files /dev/null and b/docs/_site/pathtracer/envmap_gui.png differ diff --git a/docs/_site/pathtracer/importance_sampling.html b/docs/_site/pathtracer/importance_sampling.html new file mode 100644 index 0000000000000000000000000000000000000000..7b89861963108cc285eb51d78706be80c3f8de8a --- /dev/null +++ b/docs/_site/pathtracer/importance_sampling.html @@ -0,0 +1 @@ + Environment Light Importance Sampling - Environment Light Importance Sampling Link Search Menu Expand Document

Environment Light Importance Sampling

A pixel with coordinate subtends an area on the unit sphere (where and the angles subtended by each pixel – as determined by the resolution of the texture). Thus, the flux through a pixel is proportional to . (We only care about the relative flux through each pixel to create a distribution.)

Summing the fluxes for all pixels, then normalizing the values so that they sum to one, yields a discrete probability distribution for picking a pixel based on flux through its corresponding solid angle on the sphere.

The question is now how to sample from this 2D discrete probability distribution. We recommend the following process which reduces the problem to drawing samples from two 1D distributions, each time using the inversion method discussed in class:

  • Given the probability distribution for all pixels, compute the marginal probability distribution for selecting a value from each row of pixels.

  • Given for any pixel, compute the conditional probability .

Given the marginal distribution for and the conditional distributions for environment map rows, it is easy to select a pixel as follows:

  1. Use the inversion method to first select a “row” of the environment map according to .
  2. Given this row, use the inversion method to select a pixel in the row according to .
diff --git a/docs/_site/pathtracer/index.html b/docs/_site/pathtracer/index.html new file mode 100644 index 0000000000000000000000000000000000000000..30a76cdb83a9b912817fe2aead2ce1a43d0ed612 --- /dev/null +++ b/docs/_site/pathtracer/index.html @@ -0,0 +1 @@ + A3: Pathtracer - A3: Pathtracer Link Search Menu Expand Document

PathTracer Overview

PathTracer is (as the name suggests) a simple path tracer that can render scenes with global illumination. The first part of the assignment will focus on providing an efficient implementation of ray-scene geometry queries. In the second half of the assignment you will add the ability to simulate how light bounces around the scene, which will allow your renderer to synthesize much higher-quality images. Much like in MeshEdit, input scenes are defined in COLLADA files, so you can create your own scenes to render using Scotty3D or other free software like Blender.

Implementing the functionality of PathTracer is split in to 7 tasks, and here are the instructions for each of them:

The files that you will work with for PathTracer are all under src/student directory. Some of the particularly important ones are outlined below. Methods that we expect you to implement are marked with “TODO (PathTracer)”, which you may search for.

You are also provided with some very useful debugging tool in src/student/debug.h and src/student/debug.cpp. Please read the comments in those two files to learn how to use them effectively.

File(s) Purpose Need to modify?
student/pathtracer.cpp This is the main workhorse class. Inside the ray tracer class everything begins with the method Pathtracer::trace_pixel in pathtracer.cpp. This method computes the value of the specified pixel in the output image. Yes
student/camera.cpp You will need to modify Camera::generate_ray in Part 1 of the assignment to generate the camera rays that are sent out into the scene. Yes
student/tri_mesh.cpp, student/shapes.cpp Scene objects (e.g., triangles and spheres) are instances of the Object class interface defined in rays/object.h. You will need to implement the bbox and intersect routine hit for both triangles and spheres. Yes
student/bvh.inl A major portion of the first half of the assignment concerns implementing a bounding volume hierarchy (BVH) that accelerates ray-scene intersection queries. Note that a BVH is also an instance of the Object interface (A BVH is a scene object that itself contains other primitives.) Yes
rays/light.h Describes lights in the scene. The initial starter code has working implementations of directional lights and constant hemispherical lights. No
lib/spectrum.h Light energy is represented by instances of the Spectrum class. While it’s tempting, we encourage you to avoid thinking of spectrums as colors – think of them as a measurement of energy over many wavelengths. Although our current implementation only represents spectrums by red, green, and blue components (much like the RGB representations of color you’ve used previously in this class), this abstraction makes it possible to consider other implementations of spectrum in the future. Spectrums can be converted into a vector using the Spectrum::to_vec method. No
student/bsdf.cpp Contains implementations of several BSDFs (diffuse, mirror, glass). For each, you will define the distribution of the BSDF and write a method to sample from that distribution. Yes
student/samplers.cpp When implementing raytracing and environment light, we often want to sample randomly from a hemisphere, uniform grid, or shphere. This file contains various functions that simulate such random sampling. Yes
diff --git a/docs/_site/pathtracer/intersecting_objects.html b/docs/_site/pathtracer/intersecting_objects.html new file mode 100644 index 0000000000000000000000000000000000000000..f4ee3281979f87f527128b63eacde7a5a810ecfe --- /dev/null +++ b/docs/_site/pathtracer/intersecting_objects.html @@ -0,0 +1 @@ + (Task 2) Intersections - (Task 2) Intersections Link Search Menu Expand Document

(Task 2) Intersecting Objects

Now that your ray tracer generates camera rays, we need to be able to answer the core query in ray tracing: “does this ray hit this object?” Here, you will start by implementing ray-object intersection routines against the two types of objects in the starter code: triangles and spheres. Later, we will use a BVH to accelerate these queries, but for now we consider an intersection test against a single object.

First, take a look at the rays/object.h for the interface of Object class. An Object can be either a Tri_Mesh, a Shape, a BVH(which you will implement in Task 3), or a list of Objects. Right now, we are only dealing with Tri_Mesh’s case and Shape’s case, and their interfaces are in rays/tri_mesh.h and rays/shapes.h, respectively. Tri_Mesh contains a BVH of Triangle, and in this task you will be working with the Triangle class. For Shape, you are going to work with Spheres, which is the major type of Shape in Scotty 3D.

Now, you need to implement the hit routine for both Triangle and Sphere. hit takes in a ray, and returns a Trace structure, which contains information on whether the ray hits the object and if hits, the information describing the surface at the point of the hit. See rays/trace.h for the definition of Trace.

In order to correctly implement hit you need to understand some of the fields in the Ray structure defined in lib/ray.h.

  • point: represents the 3D point of origin of the ray
  • dir: represents the 3D direction of the ray (this direction will be normalized)
  • time_bounds: correspond to the minimum and maximum points on the ray with its x-component as the lower bound and y-component as the upper bound. That is, intersections that lie outside the [ray.time_bounds.x, ray.time_bounds.y] range should not be considered valid intersections with the primitive.

One important detail of the Ray structure is that time_bounds is a mutable field of the Ray. This means that this fields can be modified by constant member functions such as Triangle::hit. When finding the first intersection of a ray and the scene, you almost certainly want to update the ray’s time_bounds value after finding each hit with scene geometry. By bounding the ray as tightly as possible, your ray tracer will be able to avoid unnecessary tests with scene geometry that is known to not be able to result in a closest hit, resulting in higher performance.


Step 1: Intersecting Triangles

The first intersect routine that the hit routines for the triangle mesh in student/tri_mesh.cpp.

While faster implementations are possible, we recommend you implement ray-triangle intersection using the method described in the lecture slides. Further details of implementing this method efficiently are given in these notes.

There are two important details you should be aware of about intersection:

  • When finding the first-hit intersection with a triangle, you need to fill in the Trace structure with details of the hit. The structure should be initialized with:

    • hit: a boolean representing if there is a hit or not
    • time: the ray’s t-value of the hit point
    • position: the exact position of the hit point. This can be easily computed by the time above as with the ray’s point and dir.
    • normal: the normal of the surface at the hit point. This normal should be the interpolated normal (obtained via interpolation of the per-vertex normals according to the barycentric coordinates of the hit point)

Once you’ve successfully implemented triangle intersection, you will be able to render many of the scenes in the media directory. However, your ray tracer will be very slow!

While you are working with student/tri_mesh.cpp, you should implement Triangle::bbox as well, which are important for task 3.

Step 2: Intersecting Spheres

You also need to implement the hit routines for the Sphere class in student/sphapes.cpp. Remember that your intersection tests should respect the ray’s time_bound. Because spheres always represent closed surfaces, you should not flip back-facing normals you did with triangles.

Note: take care not to use the Vec3::normalize() method when computing your normal vector. You should instead use Vec3::unit(), since Vec3::normalize() will actually change the Vec3 object passed in rather than returning a normalized version.


Visualization of normals might be very helpful with debugging.

diff --git a/docs/_site/pathtracer/materials.html b/docs/_site/pathtracer/materials.html new file mode 100644 index 0000000000000000000000000000000000000000..130c3981772c06b7320d74edb144f4a6f0640b39 --- /dev/null +++ b/docs/_site/pathtracer/materials.html @@ -0,0 +1 @@ + (Task 6) Materials - (Task 6) Materials Link Search Menu Expand Document

(Task 6) Materials

Now that you have implemented the ability to sample more complex light paths, it’s finally time to add support for more types of materials (other than the fully Lambertian material that you have implemented in Task 5). In this task you will add support for two types of materials: a perfect mirror and glass (a material featuring both specular reflection and transmittance) in student/bsdf.cpp.

To get started take a look at the BSDF interface in rays/bsdf.h. There are a number of key methods you should understand in BSDF class:

  • Spectrum evaluate(Vec3 out_dir, Vec3 in_dir): evaluates the distribution function for a given pair of directions.
  • BSDF_Sample sample(Vec3 out_dir): given the out_dir, generates a random sample of the in-direction (which may be a reflection direction or a refracted transmitted light direction). It returns a BSDF_Sample, which contains the in-direction(direction), its probability (pdf), as well as the attenuation for this pair of directions. (You do not need to worry about the emissive for the materials that we are asking you to implement, since those materials do not emit light.)

There are also two helper functions in the BSDF class in student/bsdf.cpp that you will need to implement:

  • Vec3 reflect(Vec3 dir) returns a direction that is the perfect specular reflection direction corresponding to dir (reflection of dir about the normal, which in the surface coordinate space is [0,1,0]). More detail about specular reflection is here.

  • Vec3 refract(Vec3 out_dir, float index_of_refraction, bool& was_internal) returns the ray that results from refracting the ray in out_dir about the surface according to Snell’s Law. The surface’s index of refraction is given by the argument index_of_refraction. Your implementation should assume that if the ray in out_dir is entering the surface (that is, if cos(out_dir, N=[0,1,0]) > 0) then the ray is currently in vacuum (index of refraction = 1.0). If cos(out_dir, N=[0,1,0]) < 0 then your code should assume the ray is leaving the surface and entering vacuum. In the case of total internal reflection, you should set *was_internal to true.

  • Note that in reflect and refract, both the out_dir and the returned in-direction are pointing away from the intersection point of the ray and the surface, as illustrated in this picture below.

Step 1

Implement the class BSDF_Mirror which represents a material with perfect specular reflection (a perfect mirror). You should Implement BSDF_Mirror::sample, BSDF_Mirror::evaluate, and reflect. (Hint: what should the pdf sampled by BSDF_Mirror::sample be? What should the reflectance function BSDF_Mirror::evalute be?)

Step 2

Implement the class BSDF_Glass which is a glass-like material that both reflects light and transmit light. As discussed in class the fraction of light that is reflected and transmitted through glass is given by the dielectric Fresnel equations.

Specifically your implementation should:

  • Implement refract to add support for refracted ray paths.
  • Implement BSDF_refract::sample as well as BSDF_Glass::sample. Your implementation should use the Fresnel equations to compute the fraction of reflected light and the fraction of transmitted light. The returned ray sample should be either a reflection ray or a refracted ray, with the probability of which type of ray to use for the current path proportional to the Fresnel reflectance. (e.g., If the Fresnel reflectance is 0.9, then you should generate a reflection ray 90% of the time. What should the pdf be in this case?) Note that you can also use Schlick’s approximation instead.
  • You should read the notes below on the Fresnel equations as well as on how to compute a transmittance BSDF.

Dielectrics and Transmission

Fresnel Equations for Dielectric

The Fresnel Equations (another link here) describe the amount of reflection from a surface. The description below is an approximation for dielectric materials (materials that don’t conduct electricity). In this assignment you’re asked to implement a glass material, which is a dielectric.

In the description below, and refer to the index of refraction of the medium containing an incoming ray, and the zenith angle of the ray to the surface of a new medium. and refer to the index of refraction of the new medium and the angle to the surface normal of a transmitted ray.

The Fresnel equations state that reflection from a surface is a function of the surface’s index of refraction, as well as the polarity of the incoming light. Since our renderer doesn’t account for polarity, we’ll apply a common approximation of averaging the reflectance of polarizes light in perpendicular and parallel polarized light:

The parallel and perpendicular terms are given by:

Therefore, for a dielectric material, the fraction of reflected light will be given by , and the amount of transmitted light will be given by .

Alternatively, you may compute using Schlick’s approximation.

Distribution Function for Transmitted Light

We described the BRDF for perfect specular reflection in class, however we did not discuss the distribution function for transmitted light. Since refraction “spreads” or “condenses” a beam, unlike perfect reflection, the radiance along the ray changes due to a refraction event. In your assignment you should use Snell’s Law to compute the direction of refraction rays, and use the following distribution function to compute the radiance of transmitted rays. We refer you guys to Pharr, Jakob, and and Humphries’s book Physically Based Rendering for a derivation based on Snell’s Law and the relation . (But you are more than welcome to attempt a derivation on your own!)

When you are done, you will be able to render images like these:

diff --git a/docs/_site/pathtracer/new_results/1.png b/docs/_site/pathtracer/new_results/1.png new file mode 100644 index 0000000000000000000000000000000000000000..3b43dc98bd64430d5ede62b6bff5082e95fe45bf Binary files /dev/null and b/docs/_site/pathtracer/new_results/1.png differ diff --git a/docs/_site/pathtracer/new_results/1024.png b/docs/_site/pathtracer/new_results/1024.png new file mode 100644 index 0000000000000000000000000000000000000000..d3cc767ba624d8ecb7ef160dbc7683a34c862971 Binary files /dev/null and b/docs/_site/pathtracer/new_results/1024.png differ diff --git a/docs/_site/pathtracer/new_results/16.png b/docs/_site/pathtracer/new_results/16.png new file mode 100644 index 0000000000000000000000000000000000000000..1a1457649a53618a0f1c5f9bbea61d6b96856cfb Binary files /dev/null and b/docs/_site/pathtracer/new_results/16.png differ diff --git a/docs/_site/pathtracer/new_results/256.png b/docs/_site/pathtracer/new_results/256.png new file mode 100644 index 0000000000000000000000000000000000000000..3413565e1f9240bae30ebfa666f5056273a29dd8 Binary files /dev/null and b/docs/_site/pathtracer/new_results/256.png differ diff --git a/docs/_site/pathtracer/new_results/32.png b/docs/_site/pathtracer/new_results/32.png new file mode 100644 index 0000000000000000000000000000000000000000..7afc63f44067f7613e95e7d4502f97b910b74f49 Binary files /dev/null and b/docs/_site/pathtracer/new_results/32.png differ diff --git a/docs/_site/pathtracer/new_results/32k.png b/docs/_site/pathtracer/new_results/32k.png new file mode 100644 index 0000000000000000000000000000000000000000..996738a769f425b25ef99b3af93d62385afa6c7e Binary files /dev/null and b/docs/_site/pathtracer/new_results/32k.png differ diff --git a/docs/_site/pathtracer/new_results/32k_large.png b/docs/_site/pathtracer/new_results/32k_large.png new file mode 100644 index 0000000000000000000000000000000000000000..f3ebfd9a37a8239f43b235ff1d34b24fd90e263a Binary files /dev/null and b/docs/_site/pathtracer/new_results/32k_large.png differ diff --git a/docs/_site/pathtracer/new_results/4.png b/docs/_site/pathtracer/new_results/4.png new file mode 100644 index 0000000000000000000000000000000000000000..f4ace889be9fed9b396ec70715195a5f76caf1ad Binary files /dev/null and b/docs/_site/pathtracer/new_results/4.png differ diff --git a/docs/_site/pathtracer/new_results/64.png b/docs/_site/pathtracer/new_results/64.png new file mode 100644 index 0000000000000000000000000000000000000000..e95e964501629e5241ff857203218e22cd73a11c Binary files /dev/null and b/docs/_site/pathtracer/new_results/64.png differ diff --git a/docs/_site/pathtracer/new_results/bunny_plane.png b/docs/_site/pathtracer/new_results/bunny_plane.png new file mode 100644 index 0000000000000000000000000000000000000000..04764b368ec91f0521db4df9b5ac51c569c27f6a Binary files /dev/null and b/docs/_site/pathtracer/new_results/bunny_plane.png differ diff --git a/docs/_site/pathtracer/new_results/bunny_point.png b/docs/_site/pathtracer/new_results/bunny_point.png new file mode 100644 index 0000000000000000000000000000000000000000..4db8b705ff7ff29d455158816c77fbde2e67ca87 Binary files /dev/null and b/docs/_site/pathtracer/new_results/bunny_point.png differ diff --git a/docs/_site/pathtracer/new_results/bunny_point_light.png b/docs/_site/pathtracer/new_results/bunny_point_light.png new file mode 100644 index 0000000000000000000000000000000000000000..316e657ad8b5f17fbc7690a0effa46bacad981b8 Binary files /dev/null and b/docs/_site/pathtracer/new_results/bunny_point_light.png differ diff --git a/docs/_site/pathtracer/new_results/bvh.png b/docs/_site/pathtracer/new_results/bvh.png new file mode 100644 index 0000000000000000000000000000000000000000..d8a2f58b79e6cc717b6521300f7305ba58682ca1 Binary files /dev/null and b/docs/_site/pathtracer/new_results/bvh.png differ diff --git a/docs/_site/pathtracer/new_results/bvh_bunny_10.png b/docs/_site/pathtracer/new_results/bvh_bunny_10.png new file mode 100644 index 0000000000000000000000000000000000000000..78ac54c843859ab0d55d8749d0b7cf2e4ac02ad8 Binary files /dev/null and b/docs/_site/pathtracer/new_results/bvh_bunny_10.png differ diff --git a/docs/_site/pathtracer/new_results/bvh_button.png b/docs/_site/pathtracer/new_results/bvh_button.png new file mode 100644 index 0000000000000000000000000000000000000000..5b46bee12c9902e61ce74339ebaa4ade90db87ca Binary files /dev/null and b/docs/_site/pathtracer/new_results/bvh_button.png differ diff --git a/docs/_site/pathtracer/new_results/cbox_normal.png b/docs/_site/pathtracer/new_results/cbox_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..f42b188004d39870f0bf4b83383adf1d33551efa Binary files /dev/null and b/docs/_site/pathtracer/new_results/cbox_normal.png differ diff --git a/docs/_site/pathtracer/new_results/cow.png b/docs/_site/pathtracer/new_results/cow.png new file mode 100644 index 0000000000000000000000000000000000000000..a00153e22acb45ca27ecbd83f685d4af4c448ec5 Binary files /dev/null and b/docs/_site/pathtracer/new_results/cow.png differ diff --git a/docs/_site/pathtracer/new_results/cow_ball_dir.png b/docs/_site/pathtracer/new_results/cow_ball_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..3a3a9508d24eb1342aa4ec17f56eea0f7fa38b6d Binary files /dev/null and b/docs/_site/pathtracer/new_results/cow_ball_dir.png differ diff --git a/docs/_site/pathtracer/new_results/cow_ball_hemisphere.png b/docs/_site/pathtracer/new_results/cow_ball_hemisphere.png new file mode 100644 index 0000000000000000000000000000000000000000..213c410c4aecd037091878d4cdf37105370f3828 Binary files /dev/null and b/docs/_site/pathtracer/new_results/cow_ball_hemisphere.png differ diff --git a/docs/_site/pathtracer/new_results/cow_hemisphere.png b/docs/_site/pathtracer/new_results/cow_hemisphere.png new file mode 100644 index 0000000000000000000000000000000000000000..c1506e1e2860579a217dec9d6939c1eade4c8389 Binary files /dev/null and b/docs/_site/pathtracer/new_results/cow_hemisphere.png differ diff --git a/docs/_site/pathtracer/new_results/cube_sphere_hemisphere.png b/docs/_site/pathtracer/new_results/cube_sphere_hemisphere.png new file mode 100644 index 0000000000000000000000000000000000000000..8bfdc04a733b475f0c866073d7e42f92bdd73e21 Binary files /dev/null and b/docs/_site/pathtracer/new_results/cube_sphere_hemisphere.png differ diff --git a/docs/_site/pathtracer/new_results/dof.png b/docs/_site/pathtracer/new_results/dof.png new file mode 100644 index 0000000000000000000000000000000000000000..28e9afad235b66f7323d8fa36cb3fd5fdc239d08 Binary files /dev/null and b/docs/_site/pathtracer/new_results/dof.png differ diff --git a/docs/_site/pathtracer/new_results/ennis32importance.png b/docs/_site/pathtracer/new_results/ennis32importance.png new file mode 100644 index 0000000000000000000000000000000000000000..7e4781670412afe4adce72902fa31f9603efb522 Binary files /dev/null and b/docs/_site/pathtracer/new_results/ennis32importance.png differ diff --git a/docs/_site/pathtracer/new_results/field1024importance.png b/docs/_site/pathtracer/new_results/field1024importance.png new file mode 100644 index 0000000000000000000000000000000000000000..b90fcf87340e0ef175d69fc77ef33119e004d16c Binary files /dev/null and b/docs/_site/pathtracer/new_results/field1024importance.png differ diff --git a/docs/_site/pathtracer/new_results/hex.png b/docs/_site/pathtracer/new_results/hex.png new file mode 100644 index 0000000000000000000000000000000000000000..5bbc0b487213e558a818b232f01302dff18f44cd Binary files /dev/null and b/docs/_site/pathtracer/new_results/hex.png differ diff --git a/docs/_site/pathtracer/new_results/hex_ball_directional_light.png b/docs/_site/pathtracer/new_results/hex_ball_directional_light.png new file mode 100644 index 0000000000000000000000000000000000000000..11f5ce492faad98bad1a0ee98db9ee246a6a5c44 Binary files /dev/null and b/docs/_site/pathtracer/new_results/hex_ball_directional_light.png differ diff --git a/docs/_site/pathtracer/new_results/l0.png b/docs/_site/pathtracer/new_results/l0.png new file mode 100644 index 0000000000000000000000000000000000000000..df9172fbeece769ddeeee2dc16ab02f9093ff15a Binary files /dev/null and b/docs/_site/pathtracer/new_results/l0.png differ diff --git a/docs/_site/pathtracer/new_results/l2.png b/docs/_site/pathtracer/new_results/l2.png new file mode 100644 index 0000000000000000000000000000000000000000..1c494765d395d00e98a5f164d223552ff4f18875 Binary files /dev/null and b/docs/_site/pathtracer/new_results/l2.png differ diff --git a/docs/_site/pathtracer/new_results/lambertian.png b/docs/_site/pathtracer/new_results/lambertian.png new file mode 100644 index 0000000000000000000000000000000000000000..c1ba627114c7f2e3b0202c523891cd9ea1e6b1f8 Binary files /dev/null and b/docs/_site/pathtracer/new_results/lambertian.png differ diff --git a/docs/_site/pathtracer/new_results/norm1.png b/docs/_site/pathtracer/new_results/norm1.png new file mode 100644 index 0000000000000000000000000000000000000000..d1ce3e4d014870fd3f55fdff465a47400f4a0876 Binary files /dev/null and b/docs/_site/pathtracer/new_results/norm1.png differ diff --git a/docs/_site/pathtracer/new_results/norm2.png b/docs/_site/pathtracer/new_results/norm2.png new file mode 100644 index 0000000000000000000000000000000000000000..d1f5f9679829004914dbc5e708f9e3c7028358b6 Binary files /dev/null and b/docs/_site/pathtracer/new_results/norm2.png differ diff --git a/docs/_site/pathtracer/new_results/norm3.png b/docs/_site/pathtracer/new_results/norm3.png new file mode 100644 index 0000000000000000000000000000000000000000..6ce0c55107935fa36648409aa02af4a71aa163c1 Binary files /dev/null and b/docs/_site/pathtracer/new_results/norm3.png differ diff --git a/docs/_site/pathtracer/new_results/ref1.png b/docs/_site/pathtracer/new_results/ref1.png new file mode 100644 index 0000000000000000000000000000000000000000..ac5f370fc2a2c83c8c08c26ba2be68d5231aa2c7 Binary files /dev/null and b/docs/_site/pathtracer/new_results/ref1.png differ diff --git a/docs/_site/pathtracer/new_results/ref2.png b/docs/_site/pathtracer/new_results/ref2.png new file mode 100644 index 0000000000000000000000000000000000000000..045ab08cd12cc10fcb6b93d701ca9157ee1c18fe Binary files /dev/null and b/docs/_site/pathtracer/new_results/ref2.png differ diff --git a/docs/_site/pathtracer/new_results/ref3.png b/docs/_site/pathtracer/new_results/ref3.png new file mode 100644 index 0000000000000000000000000000000000000000..834cbc2905e88038e5598d21c986be3f232bf8d6 Binary files /dev/null and b/docs/_site/pathtracer/new_results/ref3.png differ diff --git a/docs/_site/pathtracer/new_results/ref4.png b/docs/_site/pathtracer/new_results/ref4.png new file mode 100644 index 0000000000000000000000000000000000000000..36d6e990e0ae69b67f373185c76c97319f9fe23b Binary files /dev/null and b/docs/_site/pathtracer/new_results/ref4.png differ diff --git a/docs/_site/pathtracer/new_results/shadow_peter.png b/docs/_site/pathtracer/new_results/shadow_peter.png new file mode 100644 index 0000000000000000000000000000000000000000..2d2f7412018f4681b68fcf177ad284fdd0878327 Binary files /dev/null and b/docs/_site/pathtracer/new_results/shadow_peter.png differ diff --git a/docs/_site/pathtracer/new_results/timing.png b/docs/_site/pathtracer/new_results/timing.png new file mode 100644 index 0000000000000000000000000000000000000000..98f097bea0b84d7ecdf632283812c1707e89b217 Binary files /dev/null and b/docs/_site/pathtracer/new_results/timing.png differ diff --git a/docs/_site/pathtracer/new_results/uffiz32importance.png b/docs/_site/pathtracer/new_results/uffiz32importance.png new file mode 100644 index 0000000000000000000000000000000000000000..ec18a8848e4f94b49073dbde4e96901688934f75 Binary files /dev/null and b/docs/_site/pathtracer/new_results/uffiz32importance.png differ diff --git a/docs/_site/pathtracer/normalviz.png b/docs/_site/pathtracer/normalviz.png new file mode 100644 index 0000000000000000000000000000000000000000..4c2af8f11bcfa25aefd4e65b0f17b578a017c321 Binary files /dev/null and b/docs/_site/pathtracer/normalviz.png differ diff --git a/docs/_site/pathtracer/path_tracing.html b/docs/_site/pathtracer/path_tracing.html new file mode 100644 index 0000000000000000000000000000000000000000..44852314ae2d15b743bb8899280ddb739012d8e8 --- /dev/null +++ b/docs/_site/pathtracer/path_tracing.html @@ -0,0 +1 @@ + (Task 5) Path Tracing - (Task 5) Path Tracing Link Search Menu Expand Document

(Task 5) Path Tracing

Up to this point, your renderer simulates light which begins at a source, bounces off a surface, and hits a camera. However in the real world, light can take much more complicated paths, bouncing of many surfaces before eventually reaching the camera. Simulating this multi-bounce light is referred to as indirect illumination, and it is critical to producing realistic images, especially when specular surfaces are present. In this task you will modify your ray tracer to simulate multi-bounce light, adding support for indirect illumination.

You must modify Pathtracer::trace_ray to simulate multiple bounces. We recommend using the Russian Roulette algorithm discussed in class.

The basic structure will be as follows:

  • (1) Randomly select a new ray direction using bsdf.sample (which you will implement in Step 2)
  • (2) Potentially terminate the path (using Russian roulette)
  • (3) Recursively trace the ray to evaluate weighted reflectance contribution due to light from this direction. Remember to respect the maximum number of bounces from max_depth (which is a member of class Pathtracer). Don’t forget to add in the BSDF emissive component!

Step 2

Implement BSDF_Lambertian::sample for diffuse reflections, which randomly samples a direction from a uniform hemisphere distribution and returns a BSDF_Sample. Note that the interface is in rays/bsdf.h. Task 6 contains further discussion of sampling BSDFs, reading ahead may help your understanding. The implementation of BSDF_Lambertian::evaluate is already provided to you.

Note:

  • When adding the recursive term to the total radiance, you will need to account for emissive materials, like the ceiling light in the Cornell Box (cbox.dae). To do this, simply add the BSDF sample’s emissive term to your total radiance, i.e. L += sample.emisssive.

  • Functions in student/sampler.cpp from class Sampler contains helper functions for random sampling, which you will use for sampling. Our starter code uses uniform hemisphere sampling Samplers::Hemisphere::Uniform sampler(see rays/bsdf.h and student/sampler.cpp) which is already implemented. You are welcome to implement Cosine-Weighted Hemisphere sampling for extra credit, but it is not required. If you want to implement Cosine-Weighted Hemisphere sampling, fill in Hemisphere::Cosine::sample in student/samplers.cpp and then change Samplers::Hemisphere::Uniform sampler to Samplers::Hemisphere::Cosine sampler in rays/bsdf.h.


After correctly implementing path tracing, your renderer should be able to make a beautifully lit picture of the Cornell Box. Below is the rendering result of 1024 sample per pixel.

cornell_lambertian

Note the time-quality tradeoff here. With these commandline arguments, your path tracer will be running with 8 worker threads at a sample rate of 1024 camera rays per pixel, with a max ray depth of 4. This will produce an image with relatively high quality but will take quite some time to render. Rendering a high quality image will take a very long time as indicated by the image sequence below, so start testing your path tracer early! Below are the result and runtime of rendering cornell box with different sample per pixel at 640 by 430 on Macbook Pro(3.1 GHz Dual-Core Intel Core i5).

spheres

Also note that if you have enabled Russian Roulette, your result may seem noisier, but should complete faster. The point of Russian roulette is not to increase sample quality, but to allow the computation of more samples in the same amount of time, resulting in a higher quality result.

Here are a few tips:

  • The path termination probability should be computed based on the overall throughput of the path. The throughput of the ray is recorded in its throughput member, which represents the multiplicative factor the current radiance will be affected by before contributing to the final pixel color. Hence, you should both use and update this field. To update it, simply multiply in the rendering equation factors: BSDF attenuation, cos(theta), and (inverse) BSDF PDF. Remember to apply the coefficients from the current step before deriving the termination probability. Finally, note that the updated throughput should be copied to the recursive ray for later steps.

Keep in mind that delta function BSDFs can take on values greater than one, so clamping termination probabilities derived from BSDF values to 1 is wise.

  • To convert a Spectrum to a termination probability, we recommend you use the luminance (overall brightness) of the Spectrum, which is available via Spectrum::luma

  • We’ve given you some pretty good notes on how to do this part of the assignment, but it can still be tricky to get correct.

diff --git a/docs/_site/pathtracer/ray_bvh_pseudocode.png b/docs/_site/pathtracer/ray_bvh_pseudocode.png new file mode 100644 index 0000000000000000000000000000000000000000..a9b898248001275d114f129a90274ca323c5c7de Binary files /dev/null and b/docs/_site/pathtracer/ray_bvh_pseudocode.png differ diff --git a/docs/_site/pathtracer/ray_sphere_intersection.html b/docs/_site/pathtracer/ray_sphere_intersection.html new file mode 100644 index 0000000000000000000000000000000000000000..4118d39d4f8a39df3101b105224676ebdb26aa87 --- /dev/null +++ b/docs/_site/pathtracer/ray_sphere_intersection.html @@ -0,0 +1 @@ + Ray Sphere Intersection - Ray Sphere Intersection Link Search Menu Expand Document

Ray Sphere Intersection

diff --git a/docs/_site/pathtracer/ray_triangle_intersection.html b/docs/_site/pathtracer/ray_triangle_intersection.html new file mode 100644 index 0000000000000000000000000000000000000000..263e8e3cd4bb6c9c4249e6e0cfb5d13c9f47e500 --- /dev/null +++ b/docs/_site/pathtracer/ray_triangle_intersection.html @@ -0,0 +1 @@ + Ray Triangle Intersection - Ray Triangle Intersection Link Search Menu Expand Document

Ray Triangle Intersection

We recommend that you implement the Moller-Trumbore algorithm, a fast algorithm that takes advantage of a barycentric coordinates parameterization of the intersection point, for ray-triangle intersection.

A few final notes and thoughts:

If the denominator dot((e1 x d), e2) is zero, what does that mean about the relationship of the ray and the triangle? Can a triangle with this area be hit by a ray? Given u and v, how do you know if the ray hits the triangle? Don’t forget that the intersection point on the ray should be within the ray’s time_bound.

diff --git a/docs/_site/pathtracer/rays_dir.png b/docs/_site/pathtracer/rays_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..28ff1023560d9f1ac098039f76c4a1de6135a307 Binary files /dev/null and b/docs/_site/pathtracer/rays_dir.png differ diff --git a/docs/_site/pathtracer/raytracing_diagram.png b/docs/_site/pathtracer/raytracing_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..a87fbca08bb400369e0c1f16532d852999818c9f Binary files /dev/null and b/docs/_site/pathtracer/raytracing_diagram.png differ diff --git a/docs/_site/pathtracer/shadow_directional.png b/docs/_site/pathtracer/shadow_directional.png new file mode 100644 index 0000000000000000000000000000000000000000..72587922f28022524f48636dbb2aa5a2ee784a1a Binary files /dev/null and b/docs/_site/pathtracer/shadow_directional.png differ diff --git a/docs/_site/pathtracer/shadow_hemisphere.png b/docs/_site/pathtracer/shadow_hemisphere.png new file mode 100644 index 0000000000000000000000000000000000000000..4cf8795a7cdb9f4255833769d6c0c92f68057372 Binary files /dev/null and b/docs/_site/pathtracer/shadow_hemisphere.png differ diff --git a/docs/_site/pathtracer/shadow_rays.html b/docs/_site/pathtracer/shadow_rays.html new file mode 100644 index 0000000000000000000000000000000000000000..b92151f107ffcdf85149dffca79f31a2b970835f --- /dev/null +++ b/docs/_site/pathtracer/shadow_rays.html @@ -0,0 +1 @@ + (Task 4) Shadow Rays - (Task 4) Shadow Rays Link Search Menu Expand Document

(Task 4) Shadow Rays

In this task you will modify Pathtracer::trace_ray to implement accurate shadows.

Currently Pathtracer::trace_ray computes the following:

  • It computes the intersection of ray r with the scene.
  • It computes the amount of light arriving at the hit point hit.position (the irradiance at the hit point) by integrating radiance from all scene light sources.
  • It computes the radiance reflected from the hit point in the direction of -r. (The amount of reflected light is based on the BSDF of the surface at the hit point.)

Shadows occur when another scene object blocks light emitted from scene light sources towards the hit point. Fortunately, determining whether or not a ray of light from a light source to the hit point is occluded by another object is easy given a working ray tracer (which you have at this point!). You simply want to know whether a ray originating from the hit point (hit.position), and traveling towards the light source (direction to light) hits any scene geometry before reaching the light. (Note that you need to consider light’s distance from the hit point is given, more on this in the notes below.)

Your job is to implement the logic needed to compute whether hit point is in shadow with respect to the current light source sample. Below are a few notes:

  • In the starter code, when we call light.sample(hit.position), it returns us a Light_sample sample at the hit point . (You might want to take a look at rays/light.h for the definition of struct Light_sample and class light.) A Light_sample contains fields radiance, pdf, direction, and distance. In particular, sample.direction is the direction from the hit point to the light source, and sample.distance is the distance from the hit point to the light source.

  • A common ray tracing pitfall is for the “shadow ray” shot into the scene to accidentally hit the same objecr as r (the surface is erroneously determined to be occluded because the shadow ray is determined to hit the surface!). We recommend that you make sure the origin of the shadow ray is offset from the surface to avoid these erroneous “self-intersections”. For example, consider setting the origin of the shadow ray to be hit.position + epsilon * sample.direction instead of simply hit.position. EPS_F is defined in for this purpose(see lib/mathlib.h).

  • Another common pitfall is forgetting that it doesn’t matter if the shadow ray hits any scene geometry after reaching the light. Note that the light’s distance from the hit point is given by sample.distance. Also note that Ray has a member called time_bound
  • You will find it useful to debug your shadow code using the DirectionalLight since it produces hard shadows that are easy to reason about.
  • You would want to comment out the line Spectrum radiance_out = Spectrum(0.5f); and initialize the radiance_out to a more reasonable value. Hint: is there supposed to have any amount of light before we even start considering each light sample?

At this point you should be able to render very striking images.

Sample results:

At this point, you can add all kinds of lights among the options you have when you create “New Light” in Layout mode, except for Sphere Light and Environment Map which you will implement in task 7 (Note that you can still fill in Sphere::Uniform::sample in Samplers.cpp now to view the result of a mesh under Sphere Light).

The head of Peter Schröder rendered with hemishphere lighting.

A sphere and a cube with hemishphere lighting

Hex and cube under directional lighting

Bunny on a plane under point light

Spot on a sphere under diretional lighting

Spot on a sphere under hemisphere lighting

diff --git a/docs/_site/pathtracer/sphere_intersect_diagram.png b/docs/_site/pathtracer/sphere_intersect_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..1c53b0189b3914ca8ffc5292810c4d5c69f1bd5c Binary files /dev/null and b/docs/_site/pathtracer/sphere_intersect_diagram.png differ diff --git a/docs/_site/pathtracer/sphere_intersect_eqns.png b/docs/_site/pathtracer/sphere_intersect_eqns.png new file mode 100644 index 0000000000000000000000000000000000000000..e549f3925447afd1e1f07a0b05a5d4aed9edd65c Binary files /dev/null and b/docs/_site/pathtracer/sphere_intersect_eqns.png differ diff --git a/docs/_site/pathtracer/spheres.png b/docs/_site/pathtracer/spheres.png new file mode 100644 index 0000000000000000000000000000000000000000..4b2b45e0c8c1086fcf80dd0d79f370b415549a2b Binary files /dev/null and b/docs/_site/pathtracer/spheres.png differ diff --git a/docs/_site/pathtracer/triangle_eq1.png b/docs/_site/pathtracer/triangle_eq1.png new file mode 100644 index 0000000000000000000000000000000000000000..427d0441dd68e75c7d1525b5d329e92779e47198 Binary files /dev/null and b/docs/_site/pathtracer/triangle_eq1.png differ diff --git a/docs/_site/pathtracer/triangle_eq2.png b/docs/_site/pathtracer/triangle_eq2.png new file mode 100644 index 0000000000000000000000000000000000000000..5182efd4c941aad91439859f021c1eabe005f677 Binary files /dev/null and b/docs/_site/pathtracer/triangle_eq2.png differ diff --git a/docs/_site/pathtracer/triangle_eq3.png b/docs/_site/pathtracer/triangle_eq3.png new file mode 100644 index 0000000000000000000000000000000000000000..f3aa0fbb5e32e0690c4fd0de3cf7d3858bed2607 Binary files /dev/null and b/docs/_site/pathtracer/triangle_eq3.png differ diff --git a/docs/_site/pathtracer/triangle_eq4.png b/docs/_site/pathtracer/triangle_eq4.png new file mode 100644 index 0000000000000000000000000000000000000000..83b6a0ee922c9e5573907ff11d2703d1c16aae46 Binary files /dev/null and b/docs/_site/pathtracer/triangle_eq4.png differ diff --git a/docs/_site/pathtracer/triangle_eq5.png b/docs/_site/pathtracer/triangle_eq5.png new file mode 100644 index 0000000000000000000000000000000000000000..a41d51892640f0b5bfaf7bc3fc960f5db23858bd Binary files /dev/null and b/docs/_site/pathtracer/triangle_eq5.png differ diff --git a/docs/_site/pathtracer/triangle_intersect_diagram.png b/docs/_site/pathtracer/triangle_intersect_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..ff06184633d8badf9c4dfda3b30ea5d998cb623b Binary files /dev/null and b/docs/_site/pathtracer/triangle_intersect_diagram.png differ diff --git a/docs/_site/pathtracer/triangle_intersect_eqns.png b/docs/_site/pathtracer/triangle_intersect_eqns.png new file mode 100644 index 0000000000000000000000000000000000000000..ee6a50aa840c384a3e956c2c874e23fe69103e4b Binary files /dev/null and b/docs/_site/pathtracer/triangle_intersect_eqns.png differ diff --git a/docs/_site/pathtracer/visualization_of_normals.html b/docs/_site/pathtracer/visualization_of_normals.html new file mode 100644 index 0000000000000000000000000000000000000000..3b5710fd55b4646c34542e651cf9f22994f93ad7 --- /dev/null +++ b/docs/_site/pathtracer/visualization_of_normals.html @@ -0,0 +1 @@ + Visualization of normals - Visualization of normals Link Search Menu Expand Document

Visualization of normals

For debugging purposes:

You can set the bool normal_colors to true in student/debug.h to check if the normals that you have computed at the hit point are correct or not for debugging purposes.

Here are some reference results:

diff --git a/docs/_site/results/me_f20.png b/docs/_site/results/me_f20.png new file mode 100644 index 0000000000000000000000000000000000000000..17f35151925579b0d4a4bb88e9e2bf126fc86034 Binary files /dev/null and b/docs/_site/results/me_f20.png differ diff --git a/docs/_site/results/me_f20_crop.png b/docs/_site/results/me_f20_crop.png new file mode 100644 index 0000000000000000000000000000000000000000..e7928c63ecd3fd2c725fe7aa36db21cf56778e4f Binary files /dev/null and b/docs/_site/results/me_f20_crop.png differ diff --git a/docs/_site/results/pt_f20_0.jpg b/docs/_site/results/pt_f20_0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c714d7c90f0ce68bbe3896090fa78180cae00d41 Binary files /dev/null and b/docs/_site/results/pt_f20_0.jpg differ diff --git a/docs/_site/results/pt_f20_1.png b/docs/_site/results/pt_f20_1.png new file mode 100644 index 0000000000000000000000000000000000000000..808e3c647761662475305d303807bab443cbcba3 Binary files /dev/null and b/docs/_site/results/pt_f20_1.png differ diff --git a/docs/_site/results/pt_f20_2.png b/docs/_site/results/pt_f20_2.png new file mode 100644 index 0000000000000000000000000000000000000000..551639635c0de0a87cdb4d1b75b7b85f76e2ba51 Binary files /dev/null and b/docs/_site/results/pt_f20_2.png differ diff --git a/docs/_site/results/pt_f20_3.png b/docs/_site/results/pt_f20_3.png new file mode 100644 index 0000000000000000000000000000000000000000..268ac48e0b7e58ad7dac51fd038ca9b300a1a120 Binary files /dev/null and b/docs/_site/results/pt_f20_3.png differ diff --git a/docs/_site/robots.txt b/docs/_site/robots.txt new file mode 100644 index 0000000000000000000000000000000000000000..e087884e682559c1df7e6aa684321a693dc4b6b1 --- /dev/null +++ b/docs/_site/robots.txt @@ -0,0 +1 @@ +Sitemap: /sitemap.xml diff --git a/docs/_site/sitemap.xml b/docs/_site/sitemap.xml new file mode 100644 index 0000000000000000000000000000000000000000..8cde0a005dda4c4c7eed96b705f72731b03d899b --- /dev/null +++ b/docs/_site/sitemap.xml @@ -0,0 +1,123 @@ + + + +/guide/animate_mode/ + + +/meshedit/local/bevel/ + + +/pathtracer/bounding_volume_hierarchy + + +/build/ + + +/pathtracer/camera_rays + + +/meshedit/global/catmull/ + + +/pathtracer/dielectrics_and_transmission + + +/meshedit/local/edge_flip + + +/pathtracer/environment_lighting + + +/git/ + + +/meshedit/global/ + + +/guide/ + + +/meshedit/halfedge + + +/pathtracer/importance_sampling + + +/ + + +/pathtracer/intersecting_objects + + +/guide/layout_mode/ + + +/meshedit/global/linear/ + + +/meshedit/local/ + + +/meshedit/global/loop/ + + +/pathtracer/materials + + +/guide/model_mode/ + + +/animation/ + + +/meshedit/ + + +/pathtracer/ + + +/animation/particles + + +/pathtracer/path_tracing + + +/pathtracer/ray_sphere_intersection + + +/pathtracer/ray_triangle_intersection + + +/meshedit/global/remesh/ + + +/guide/render_mode/ + + +/guide/rigging_mode/ + + +/pathtracer/shadow_rays + + +/meshedit/global/simplify/ + + +/guide/simulate_mode/ + + +/animation/skeleton_kinematics + + +/animation/skinning + + +/animation/splines + + +/meshedit/global/triangulate/ + + +/pathtracer/visualization_of_normals + +