diff --git a/docs/tutorial_spitfire_wing_gordon.rst b/docs/tutorial_spitfire_wing_gordon.rst
new file mode 100644
index 0000000..716f862
--- /dev/null
+++ b/docs/tutorial_spitfire_wing_gordon.rst
@@ -0,0 +1,106 @@
+#############################################
+Tutorial: Spitfire Wing with Gordon Surface
+#############################################
+
+In this advanced tutorial we construct a Supermarine Spitfire wing as a
+:meth:`~topology.Face.make_gordon_surface`—a powerful technique for surfacing
+from intersecting *profiles* and *guides*. A Gordon surface blends a grid of
+curves into a smooth, coherent surface as long as the profiles and guides
+intersect consistently.
+
+.. note::
+ Gordon surfaces work best when *each profile intersects each guide exactly
+ once*, producing a well‑formed curve network.
+
+Overview
+========
+
+We will:
+
+1. Define overall wing dimensions and elliptic leading/trailing edge guide curves
+2. Sample the guides to size the root and tip airfoils (different NACA profiles)
+3. Build the Gordon surface from the airfoil *profiles* and wing‑edge *guides*
+4. Close the root with a planar face and build the final :class:`~topology.Solid`
+
+.. raw:: html
+
+
+
+
+Step 1 — Dimensions and guide curves
+====================================
+
+We model a single wing (half‑span), with an elliptic leading and trailing edge.
+These two edges act as the *guides* for the Gordon surface.
+
+.. literalinclude:: spitfire_wing_gordon.py
+ :start-after: [Code]
+ :end-before: [AirfoilSizes]
+
+
+Step 2 — Root and tip airfoil sizing
+====================================
+
+We intersect the guides with planes normal to the span to size the airfoil sections.
+The resulting chord lengths define uniform scales for each airfoil curve.
+
+.. literalinclude:: spitfire_wing_gordon.py
+ :start-after: [AirfoilSizes]
+ :end-before: [Airfoils]
+
+Step 3 — Build airfoil profiles (root and tip)
+==============================================
+
+We place two different NACA airfoils on :data:`Plane.YZ`—with the airfoil origins
+shifted so the leading edge fraction is aligned—then scale to the chord lengths
+from Step 2.
+
+.. literalinclude:: spitfire_wing_gordon.py
+ :start-after: [Airfoils]
+ :end-before: [Profiles]
+
+
+Step 4 — Gordon surface construction
+====================================
+
+A Gordon surface needs *profiles* and *guides*. Here the airfoil edges are the
+profiles; the elliptic edges are the guides. We also add the wing tip section
+so the profile grid closes at the tip.
+
+.. literalinclude:: spitfire_wing_gordon.py
+ :start-after: [Profiles]
+ :end-before: [Solid]
+
+.. image:: ./assets/surface_modeling/spitfire_wing_profiles_guides.svg
+ :align: center
+ :alt: Elliptic leading/trailing guides
+
+
+Step 5 — Cap the root and create the solid
+==========================================
+
+We extract the closed root edge loop, make a planar cap, and form a solid shell.
+
+.. literalinclude:: spitfire_wing_gordon.py
+ :start-after: [Solid]
+ :end-before: [End]
+
+.. image:: ./assets/surface_modeling/spitfire_wing.png
+ :align: center
+ :alt: Final wing solid
+
+Tips for robust Gordon surfaces
+-------------------------------
+
+- Ensure each profile intersects each guide once and only once
+- Keep the curve network coherent (no duplicated or missing intersections)
+- When possible, reuse the same :class:`~topology.Edge` objects across adjacent faces
+
+Complete listing
+================
+
+For convenience, here is the full script in one block:
+
+.. literalinclude:: spitfire_wing_gordon.py
+ :start-after: [Code]
+ :end-before: [End]