diff --git a/web/config.toml b/web/config.toml
index 1c066ebc6aa212c864cf10d0df1a7c5fa9cd39fd..fe1a088a26a1893ed170e8987092eeee796b2c44 100644
--- a/web/config.toml
+++ b/web/config.toml
@@ -1,9 +1,5 @@
 baseURL = "http://alexandre.meyer.pages.univ-lyon1.fr/hugo-web-minimal/"
 title = "UE Bidule"
-#theme = "etch"
-#theme = "ucax"
-#theme = "paige"
-#theme = "hugo-flex"
 theme = "congo"
 languageCode = "fr-FR"
 enableInlineShortcodes = true
@@ -14,7 +10,7 @@ publishDir = "public"
 
 
 [params]
-  description = "Animation en synthèse d'images"
+  description = "UE Bidule"
   copyright = ""
   dark = "auto"
   highlight = true
@@ -36,24 +32,24 @@ publishDir = "public"
 
 [menu]
     [[menu.main]]
-        identifier = "Physique"
-        name = "Physique"
-        title = "Physique"
-        url = "https://perso.liris.cnrs.fr/fzara/Web/M1Animation.html"
+        identifier = "PartieA"
+        name = "PartieA"
+        title = "PartieA"
+        url = "https://partiea.html"
         weight = 1
  
     [[menu.main]]
-        identifier = "Personnage"
-        name = "Personnage"
-        title = "Personnage"
-        url = "/personnage/"
+        identifier = "PartieB"
+        name = "PartieB"
+        title = "PartieB"
+        url = "/partieb/"
         weight = 2
 
     [[menu.main]]
-        identifier = "Controle"
-        name = "Controle"
-        title = "Controle"
-        url = "/controle/"
+        identifier = "PartieC"
+        name = "PartieC"
+        title = "PartieC"
+        url = "/partiec/"
         weight = 3
 
   
diff --git a/web/content/personnage/_index.md b/web/content/partiea/_index.md
similarity index 97%
rename from web/content/personnage/_index.md
rename to web/content/partiea/_index.md
index baf471a903e96c06dc144c042edcb1310b6e2f98..2d441280e403543f79bb6e70cd9b0f3bdddadaa0 100644
--- a/web/content/personnage/_index.md
+++ b/web/content/partiea/_index.md
@@ -1,51 +1,51 @@
-
----
-title: ""
-description: "Partie Animation de personnage"
----
-
-
-
-# Partie Animation de personnage
-  * Alexandre Meyer
-  * 4h30 CM, 6h30 TP
-  * [L'ancienne page de cette partie](https://perso.liris.cnrs.fr/alexandre.meyer/public_html/www/doku.php?id=charanim_m1#master_1_informatique_-_ue_m1if37_animation_en_synthese_d_image)
-
-![](../doc_charanim/charanim_tpose.jpg)
-
-
-
-
-## Cours
-  * [Systèmes articulés : cinématique directe](https://perso.liris.cnrs.fr/alexandre.meyer/teaching/master_charanim/aPDF_COURS_M1/M1_1_SkeletonBasedAnimation.pdf)
-  * [Edition d'animations, Graphe d'animations](https://perso.liris.cnrs.fr/alexandre.meyer/teaching/master_charanim/aPDF_COURS_M1/M1_2_MotionControlAndEditing.pdf)
-  * [Capture de mouvements](https://perso.liris.cnrs.fr/alexandre.meyer/teaching/master_charanim/aPDF_COURS_M1/M1_3_MotionCapture.pdf)
-
-
-## Les vidéos des 3 CM (2020)
-[Les vidéos](video)
-
-
-
-## Le TP
-  * [TP animation de personnage virtuel](tp)
-  * [[master_charanim_code|Le code initial]]
-
-#### Rendu
-Les archives sont à rendre sur TOMUSS
-  * TP Animation de personnage virtuel
-    * vous devez rendre une archive avec un readme.txt ou readme.md expliquant ce que vous avez fait et comment lancer le programme
-    * une VIDEO de DEMO ou une démo en LIVE
-  * Barème "Personnage" 
-    * (5 points) TP 1ère partie : affichage d'une animation BVH
-    * (3 points) Contrôleur d'animation :  la base (pilotage au clavier d'un déplacement)
-    * Machine à état (4 points maximum)
-      * basique : pour une machine à état de base avec 4 animations : iddle, marcher, courir, sauter ou kick
-      * avancé : une machine à état plus complète avec de nombreuses animations (une dizaine) : voir celles du répertoire motionGraph_second_life, etc.
-    * Motion Graphe (6 points max)
-      * basique : transition vers un autre animation en cherchant à la volée une transition compatible
-      * avancé : un motion graph construit automatiquement en pré-calcul (voir la fin de l'énoncé qui pointe vers un complément de sujet).
-    * (3 points) Interpolation entre 2 frames, à utilise pour les transitions ou pour une bonne gestion du temps
-    * (1 points) Collision entre personnage et sphères (voir le code PhysicalWorld)
-    * (1 points) bonus de qualité/cohérence de la scène
-    * Le total fait plus que 20 car les points FSM/graphe d'animation sont à comprendre avec un OU : la machine à état rapporte moins de points, car bien moins difficile.
+
+---
+title: ""
+description: "Partie Animation de personnage"
+---
+
+
+
+# Partie Animation de personnage
+  * Alexandre Meyer
+  * 4h30 CM, 6h30 TP
+  * [L'ancienne page de cette partie](https://perso.liris.cnrs.fr/alexandre.meyer/public_html/www/doku.php?id=charanim_m1#master_1_informatique_-_ue_m1if37_animation_en_synthese_d_image)
+
+![](../doc_charanim/charanim_tpose.jpg)
+
+
+
+
+## Cours
+  * [Systèmes articulés : cinématique directe](https://perso.liris.cnrs.fr/alexandre.meyer/teaching/master_charanim/aPDF_COURS_M1/M1_1_SkeletonBasedAnimation.pdf)
+  * [Edition d'animations, Graphe d'animations](https://perso.liris.cnrs.fr/alexandre.meyer/teaching/master_charanim/aPDF_COURS_M1/M1_2_MotionControlAndEditing.pdf)
+  * [Capture de mouvements](https://perso.liris.cnrs.fr/alexandre.meyer/teaching/master_charanim/aPDF_COURS_M1/M1_3_MotionCapture.pdf)
+
+
+## Les vidéos des 3 CM (2020)
+[Les vidéos](video)
+
+
+
+## Le TP
+  * [TP animation de personnage virtuel](tp)
+  * [[master_charanim_code|Le code initial]]
+
+#### Rendu
+Les archives sont à rendre sur TOMUSS
+  * TP Animation de personnage virtuel
+    * vous devez rendre une archive avec un readme.txt ou readme.md expliquant ce que vous avez fait et comment lancer le programme
+    * une VIDEO de DEMO ou une démo en LIVE
+  * Barème "Personnage" 
+    * (5 points) TP 1ère partie : affichage d'une animation BVH
+    * (3 points) Contrôleur d'animation :  la base (pilotage au clavier d'un déplacement)
+    * Machine à état (4 points maximum)
+      * basique : pour une machine à état de base avec 4 animations : iddle, marcher, courir, sauter ou kick
+      * avancé : une machine à état plus complète avec de nombreuses animations (une dizaine) : voir celles du répertoire motionGraph_second_life, etc.
+    * Motion Graphe (6 points max)
+      * basique : transition vers un autre animation en cherchant à la volée une transition compatible
+      * avancé : un motion graph construit automatiquement en pré-calcul (voir la fin de l'énoncé qui pointe vers un complément de sujet).
+    * (3 points) Interpolation entre 2 frames, à utilise pour les transitions ou pour une bonne gestion du temps
+    * (1 points) Collision entre personnage et sphères (voir le code PhysicalWorld)
+    * (1 points) bonus de qualité/cohérence de la scène
+    * Le total fait plus que 20 car les points FSM/graphe d'animation sont à comprendre avec un OU : la machine à état rapporte moins de points, car bien moins difficile.
diff --git a/web/content/personnage/tp.md b/web/content/partiea/tp.md
similarity index 97%
rename from web/content/personnage/tp.md
rename to web/content/partiea/tp.md
index 8da0040e58e3c2d3d2f35956294291b721bb4741..e07e3324bf1a1702530b28cc216b04073cb657a4 100644
--- a/web/content/personnage/tp.md
+++ b/web/content/partiea/tp.md
@@ -1,309 +1,309 @@
-  
-
-# TP d'Animation de personnage (M1)
-
-  
-  
-
-## TP partie 1 : affichage
-
-![](/charanim_interpolation.png)  
-Vous allez créer un module Skeleton.h/.cpp (ce code n'est qu'indicatif, vous êtes libre de vos structures de données). Cette classe va stocker un tableau de toutes les articulations (SkeletonJoint) du squelette et pour chaque articulation stocke l'identifiant de l'articulation parent et la matrice de passage de l'articulation vers le monde.
-
-Le fichier est déjà présent dans le code départ avec des TODO à compléter :
-
-``` 
-
-class Skeleton
-{
-public:
-
-   struct SkeletonJoint
-   {
-      int m_parentId;    // Le numéro du père dans le tableau de CAJoint de CASkeleton
-      Transform m_l2w;  // La matrice passant du repère de l'articulation vers le monde
-   };
-
-   Skeleton() {}
-
-   //! Créer un squelette ayant la même structure que définit dans le BVH c'est à dire
-   //! creer le tableau de SkeletonJoint à la bonne taille, avec les parentId initialsé pour chaque case
-   void init(const BVH& bvh);
-
-   //! Renvoie la position de l'articulation i en multipliant le m_l2w par le Point(0,0,0)
-   Point getJointPosition(int i) const;
-
-   //! Renvoie l'identifiant de l'articulation père de l'articulation numéro i
-   int getParentId(const int i) const;
-   
-   //! Renvoie le nombre d'articulation
-   int numberOfJoint() const;
-
-   //! Positionne ce squelette dans la position n du BVH. 
-   //! Assez proche de la fonction récursive (question 1), mais range la matrice (Transform)
-   //! dans la case du tableau. Pour obtenir la matrice allant de l'articulation local vers le monde,
-   //! il faut multiplier la matrice allant de l'articulation vers son père à la matrice du père allant de
-   //! l'articulation du père vers le monde.
-   void setPose(const BVH& bvh, int frameNumber);
-
-
-protected:
-   //! L'ensemble des articulations.
-   //! Remarque : la notion de hiérarchie (arbre) n'est plus nécessaire ici,
-   //! pour tracer les os on utilise l'information "parentID" de la class CAJoint
-   std::vector<SkeletonJoint> m_joint;
-};
-
-```
-
-  
-Dans le Viewer vous devez :
- * Déclarer un Skeleton en variable de la classe
- * écrire une fonction qui fait l'affichage
-
-``` 
-    void CharAnimViewer::skeletonDraw(const Skeleton& ske);
-```
-
- * initaliser l'instance de Skeleton dans la fonction init
- * Appeler setPose dans la fonction update
-
-  
-Remarques :
- * On sépare bien l'affichage de la gestion du squelette pour pouvoir réutiliser le code Skeleton avec une autre librairie d'affichage.
- * On ne s'occupe pas du temps pour l'instant mais uniquement du numéro de la posture.\\
- * Vous pouvez trouvez des BVH dans le répertoire data du code de départ. Notamment le fichier robot.bvh pour debuguer.
-
-  
-  
-## TP partie 2 : Contrôleur d'animation
-
-##### Déplacer une sphère au clavier
-
-Ecrivez une class CharacterControler qui à partir des touches claviers contrôlera le déplacement d'un personnage. Dans une 1er temps faites juste déplacer une boule : accélérer, freiner, tourner à droite, tourner à gauche, sauter. Ce contrôleur comportera une position et une vitesse. La vitesse sera modifiée par les flèches (ou un pad) et la position sera mise à jour dans la fonction update du Viewer en utilisant le paramètre "delta" recu par la fonction update.
-
-Une classe de Controller peut ressembler à ceci.
-
-``` 
-    class CharacterController
-    {
-    public:
-        CharacterController() : ... {}
-
-        void update(const float dt);
-
-        void turnXZ(const float& rot_angle_v);
-        void accelerate(const float& speed_inc);
-        void setVelocityMax(const float vmax);
-
-        const Point position() const;
-        const Vector direction() const;
-        float velocity() const;
-                const Transform& controller2world() const { return m_ch2w; }
-
-    protected:
-                Transform m_ch2w;   // matrice du character vers le monde
-                                    // le personnage se déplace vers X
-                                    // il tourne autour de Y
-                                    // Z est sa direction droite
-                                    
-        float m_v;          // le vecteur vitesse est m_v * m_ch2w * Vector(1,0,0)
-        float m_vMax;       // ne peut pas accélérer plus que m_vMax
-    };
-```
-
-  
-
-##### Déplacer un personnage au clavier
-
-Dans un 2e temps, votre contrôleur comportera également une série
-d'animation bvh : attendre, marcher, courir, et donner un coup de pied.
-En fonction de l'action que veut faire le joueur appuyant sur des
-touches vous changerez d'animation. Vous coderez la machine à états
-finis (FiniteStateMachine) de l'image ci-dessous. Les cercles sont les
-états (l'animation en train d'être jouée), les rectangles rouges sont
-les éventements et les carrés bleus sont les actions à effectuer
-(fonction de la classe). Ce changement se fera brutalement. Ne vous
-occupez pas non plus des pieds qui glissent sur le sol. Un meilleur
-contrôle peut-être fait la construction d'un graphe d'animation.
-
-![](/fsm.png)
-
-  
-  
-
-## TP partie 3 : Transition et plus
-
-a) Pour améliorer le réalisme, il serait bon de faire les transitions
-entre deux animations en choisissant deux poses des animations qui sont
-proches. Pour cela il faut calculer la distance entre deux poses
-d'animations (Voir les infos dans le sujet Graphe d'animation).  
-  
-
-b) Pour aller encore plus loin, on peut construire un automate de
-manière complètement automatique, on appelle alors ceci un graphe
-d'animation. [Voir le sujets de TP
-suivants.](https://perso.liris.cnrs.fr/alexandre.meyer/public_html/www/doku.php?id=master_charanim_tp_m2_cpp&s[]=graphe#tp_3e_partiegraphe_d_animation)  
-  
-
-a.bis) Indépendamment de la machine à état ou du graphe, si vous voulez
-gérer le temps de manière plus juste, il faudrait récupérer le temps
-réellement écoulé depuis l'affichage précédent. Ceci vous fera ne vous
-fera pas tomber précisément sur une frame stocké dans le clip (BVH). Il
-faudra donc interpoler entre les 2 frames. Le résultat sera de l'ordre
-du détail lors de l'affichage mais si vous voulez que votre moteur
-d'animation tourne sur toutes les machines indépendamment du CPU, il
-faut le faire. Cette interpolation peut également servir pour passer
-d'un clip à un autre.
-
-  
-  
-  
-
-## TP partie 3.PLUS : graphe d'animation
-
-*  -* [Motion Graph de l'article original](http://www.cs.wisc.edu/graphics/Gallery/kovar.vol/MoGraphs/);
-* Des BVH avec squelette compatible pour le graphe sont donné dans le git, répertoire Second\_Life.  
-
-Nous avons remarqué dans la partie 1 que la transition d'animation ne fonctionne bien que lorsque les deux poses du squelette sont assez proches (il faut bien sûr également que les deux squelettes aient la même topologie). L'idée d'un graphe d'animation est de construire un graphe où chaque noeud correspond à une pose d'une animation et où chaque arrête définit qu'une transition est possible entre les deux poses.
-
-  
-
-#### Comparaison de deux poses d'animation
-
-Pour construire un graphe d'animation à partir d'une ou plusieurs animations, on doit être capable de comparer deux poses d'animation. Une distance de 0 indique que les deux poses sont identiques. Une distance grande indique que les 2 poses sont très différentes.
-
-A partir de la classe Skeleton, écrivez la fonction de calcul de distance entre deux poses de squelette. Cette fonction est déjà présente dans la classe Skeleton plus haut mais en commentaire. Cette fonction calcule itérativement sur toutes les articulations la somme des distances euclidienne entre chaque articulation de deux squelettes aillant la même topologie mais dans des poses différentes.
-
-```
-    friend float Skeleton::Distance(const Skeleton& a, const Skeleton& b);
-```
-
-  
-Remarque : il est important de ne pas tenir compte de la translation et de la rotation de l'articulation racine. Une même pose a deux endroits du monde doit donner une distance de 0. Dans un 1er temps, votre personnage aura son noeud root centré en (0,0,0), puis dans la dernière partie de cette question, vous traiterez le centre de gravité.
-
-  
-  
-
-#### Construction du graphe
-
-Ecrivez un module MotionGraph qui contiendra un ensemble de BVH et le graphe d'animation définissant des transitions dans cette ensemble d'animation.
- * Un noeud du graphe=(Identifiant d'une animation + un numéro de pose); 
- * un arc du graphe entre deux poses indique la transition possible entre ces deux poses. Deux poses sont compatibles à la transition quand la distance entre les deux squelettes sont inférieurs à un certain seuil fixé empiriquement.
-
-  
-Vous pouvez créer un module CACore/CAMotionGraph.h/.cpp
-
-```
-    class MotionGraph
-    {
-       ...
-    protected:
-       //! L'ensemble des BVH du graphe d'animation
-       std::vector<BVH> m_BVH;
-    
-       //! Un noeud du graphe d'animation est repéré par un entier=un identifiant
-       typedef int GrapheNodeID;
-    
-       //! Une animation BVH est repérée par un identifiant=un entier 
-       typedef int BVH_ID;
-       
-       //! Un noeud du graphe contient l'identifiant de l'animation, le numéro 
-       //! de la frame et les identifiants des noeuds successeurs 
-       //! Remarque : du code plus "joli" aurait créer une classe CAGrapheNode
-       struct GrapheNode
-       {
-         BVH_ID id_bvh;
-         int frame;
-         std::vector<GrapheNodeID> ids_next;     //! Liste des nœuds successeurs 
-       };
-    
-    
-       //! Tous les noeuds du graphe d'animation
-       std::vector<GrapheNode> m_GrapheNode;
-    
-    };
-```
-  
-  
-
-#### Navigation dans le graphe
-
-Une fois ce graphe construit, on peut définir différente manière de naviguer dedans :
-   * Un parcours aléatoire dans le graphe (juste pour vérifier que le graphe est ok);
-   * L'utilisateur donne des directions au clavier => le parcours dans le graphe est conditionné par ces contraintes.
-
-
-#### Gestion correcte du centre de gravité
-
-Pour chaque arc du graphe, vous devez stocker la transformation (soit une matrice 4x4, soit un quaternion et une translation) du noeud root (souvent le centre de gravité) entre la pose i et la pose i+1. Cette transformation sera appliqué au noeud root de votre personnage quand il empruntera l'arc.
-
-  
-  
-  
-
-## NON DEMANDE CETTE ANNEE : Animation physique (voir la partie de F. Zara à la place)
-
-#### Particules
-
-![](/charanim_ball.png)
-
-Dans la fonction init de la class CharAnimViewer indiquez un nombre de particules non nul :
-
-``` 
-    m_world.setParticlesCount( 10 );
-```
-
-Dans la fonction render, il faut afficher les particules en dé-commentant cette ligne :
-
-``` 
-    m_world.draw();
-```
-
-Vous verrez alors les particules s'afficher, mais elles ne seront pas animées. Pour calculer la physique sur les particules, il y a deux
-classes **PhysicalWorld** et **Particle**. Regardez le fichier Particles.h. Il faudra compléter les fonctions update, collision et groundCollision :
-
-``` 
-    void update(const float dt = 0.1f)
-    void groundCollision()
-    void collision(const Point& p, const float radius)
-```
-
-Le code de update doit mettre à jour la vitesse avec l'équation F=m.a où a = dv/dt  
-Et mettre à jour la position avec l'équation habituelle p = p + v.t  
-
-[Regardez les explications dans la vidéo de cours ou ici](https://perso.liris.cnrs.fr/alexandre.meyer/teaching/master_charanim/aPDF_COURS_M1/M1_TP_PhysicsAnimation_ParticulesMassesRessorts.pdf).
-
-  
-
-#### Interaction personnage/particules
-
-Pour ajouter l'interaction entre votre personnage et des boules/sphères se trouvant dans l'environnement, il faut appeler PhysicalWorld::collision depuis CharAnimViewer::update en parcourant toutes les articulations du personnage. Dans un 1er temps, vous pouvez juste faire disparaitre les particules touchées en faisant passer le rayon de la particule à -1 et faire en sorte que les particules de rayon négatif ne soient pas affichées. Puis ajoutez dans Particle::collision du code pour déplacer les particules en collisions (résoudre les collisions) et changer leur vecteur vitesse.
-
-#### Tissus
-
-Un tissu est composé d'un maillage de Masses/Ressorts. Ajoutez une classe Spring qui va comporter :
- * la raideur du ressort
- * la longueur au repos du ressort
- * idA et idB : l'identifiant des 2 particules aux extrémités du ressort. Ces 2 identifiants sont l'indices de deux particules dans le tableau de particules stocké dans la classe PhysicalWorld.
-
-Munissez cette classe d'une fonction *addForce* qui calcule les forces qu'applique le ressort sur les 2 particules.
-```
-    void Spring::addForce(vector<Particles>& part, const float dt)
-```
-
-
-Dans la classe PhysicalWorld, ajoutez un tableau de ressort :
-
-``` 
-   std::vector<Spring> m_springs;
-```
-
-Le constructeur de PhysicalWorld créera un tissu avec des masses ressorts sous la forme de l'image ci-dessous. La génération se fera procéduralement.
-
-![](/mass-spring.jpg)
-
-
-#### Interaction avec le personnage
-
-Normalement, le personnage va pouvoir interagir avec le tissu en passant dessous ...
+  
+
+# TP d'Animation de personnage (M1)
+
+  
+  
+
+## TP partie 1 : affichage
+
+![](/charanim_interpolation.png)  
+Vous allez créer un module Skeleton.h/.cpp (ce code n'est qu'indicatif, vous êtes libre de vos structures de données). Cette classe va stocker un tableau de toutes les articulations (SkeletonJoint) du squelette et pour chaque articulation stocke l'identifiant de l'articulation parent et la matrice de passage de l'articulation vers le monde.
+
+Le fichier est déjà présent dans le code départ avec des TODO à compléter :
+
+``` 
+
+class Skeleton
+{
+public:
+
+   struct SkeletonJoint
+   {
+      int m_parentId;    // Le numéro du père dans le tableau de CAJoint de CASkeleton
+      Transform m_l2w;  // La matrice passant du repère de l'articulation vers le monde
+   };
+
+   Skeleton() {}
+
+   //! Créer un squelette ayant la même structure que définit dans le BVH c'est à dire
+   //! creer le tableau de SkeletonJoint à la bonne taille, avec les parentId initialsé pour chaque case
+   void init(const BVH& bvh);
+
+   //! Renvoie la position de l'articulation i en multipliant le m_l2w par le Point(0,0,0)
+   Point getJointPosition(int i) const;
+
+   //! Renvoie l'identifiant de l'articulation père de l'articulation numéro i
+   int getParentId(const int i) const;
+   
+   //! Renvoie le nombre d'articulation
+   int numberOfJoint() const;
+
+   //! Positionne ce squelette dans la position n du BVH. 
+   //! Assez proche de la fonction récursive (question 1), mais range la matrice (Transform)
+   //! dans la case du tableau. Pour obtenir la matrice allant de l'articulation local vers le monde,
+   //! il faut multiplier la matrice allant de l'articulation vers son père à la matrice du père allant de
+   //! l'articulation du père vers le monde.
+   void setPose(const BVH& bvh, int frameNumber);
+
+
+protected:
+   //! L'ensemble des articulations.
+   //! Remarque : la notion de hiérarchie (arbre) n'est plus nécessaire ici,
+   //! pour tracer les os on utilise l'information "parentID" de la class CAJoint
+   std::vector<SkeletonJoint> m_joint;
+};
+
+```
+
+  
+Dans le Viewer vous devez :
+ * Déclarer un Skeleton en variable de la classe
+ * écrire une fonction qui fait l'affichage
+
+``` 
+    void CharAnimViewer::skeletonDraw(const Skeleton& ske);
+```
+
+ * initaliser l'instance de Skeleton dans la fonction init
+ * Appeler setPose dans la fonction update
+
+  
+Remarques :
+ * On sépare bien l'affichage de la gestion du squelette pour pouvoir réutiliser le code Skeleton avec une autre librairie d'affichage.
+ * On ne s'occupe pas du temps pour l'instant mais uniquement du numéro de la posture.\\
+ * Vous pouvez trouvez des BVH dans le répertoire data du code de départ. Notamment le fichier robot.bvh pour debuguer.
+
+  
+  
+## TP partie 2 : Contrôleur d'animation
+
+##### Déplacer une sphère au clavier
+
+Ecrivez une class CharacterControler qui à partir des touches claviers contrôlera le déplacement d'un personnage. Dans une 1er temps faites juste déplacer une boule : accélérer, freiner, tourner à droite, tourner à gauche, sauter. Ce contrôleur comportera une position et une vitesse. La vitesse sera modifiée par les flèches (ou un pad) et la position sera mise à jour dans la fonction update du Viewer en utilisant le paramètre "delta" recu par la fonction update.
+
+Une classe de Controller peut ressembler à ceci.
+
+``` 
+    class CharacterController
+    {
+    public:
+        CharacterController() : ... {}
+
+        void update(const float dt);
+
+        void turnXZ(const float& rot_angle_v);
+        void accelerate(const float& speed_inc);
+        void setVelocityMax(const float vmax);
+
+        const Point position() const;
+        const Vector direction() const;
+        float velocity() const;
+                const Transform& controller2world() const { return m_ch2w; }
+
+    protected:
+                Transform m_ch2w;   // matrice du character vers le monde
+                                    // le personnage se déplace vers X
+                                    // il tourne autour de Y
+                                    // Z est sa direction droite
+                                    
+        float m_v;          // le vecteur vitesse est m_v * m_ch2w * Vector(1,0,0)
+        float m_vMax;       // ne peut pas accélérer plus que m_vMax
+    };
+```
+
+  
+
+##### Déplacer un personnage au clavier
+
+Dans un 2e temps, votre contrôleur comportera également une série
+d'animation bvh : attendre, marcher, courir, et donner un coup de pied.
+En fonction de l'action que veut faire le joueur appuyant sur des
+touches vous changerez d'animation. Vous coderez la machine à états
+finis (FiniteStateMachine) de l'image ci-dessous. Les cercles sont les
+états (l'animation en train d'être jouée), les rectangles rouges sont
+les éventements et les carrés bleus sont les actions à effectuer
+(fonction de la classe). Ce changement se fera brutalement. Ne vous
+occupez pas non plus des pieds qui glissent sur le sol. Un meilleur
+contrôle peut-être fait la construction d'un graphe d'animation.
+
+![](/fsm.png)
+
+  
+  
+
+## TP partie 3 : Transition et plus
+
+a) Pour améliorer le réalisme, il serait bon de faire les transitions
+entre deux animations en choisissant deux poses des animations qui sont
+proches. Pour cela il faut calculer la distance entre deux poses
+d'animations (Voir les infos dans le sujet Graphe d'animation).  
+  
+
+b) Pour aller encore plus loin, on peut construire un automate de
+manière complètement automatique, on appelle alors ceci un graphe
+d'animation. [Voir le sujets de TP
+suivants.](https://perso.liris.cnrs.fr/alexandre.meyer/public_html/www/doku.php?id=master_charanim_tp_m2_cpp&s[]=graphe#tp_3e_partiegraphe_d_animation)  
+  
+
+a.bis) Indépendamment de la machine à état ou du graphe, si vous voulez
+gérer le temps de manière plus juste, il faudrait récupérer le temps
+réellement écoulé depuis l'affichage précédent. Ceci vous fera ne vous
+fera pas tomber précisément sur une frame stocké dans le clip (BVH). Il
+faudra donc interpoler entre les 2 frames. Le résultat sera de l'ordre
+du détail lors de l'affichage mais si vous voulez que votre moteur
+d'animation tourne sur toutes les machines indépendamment du CPU, il
+faut le faire. Cette interpolation peut également servir pour passer
+d'un clip à un autre.
+
+  
+  
+  
+
+## TP partie 3.PLUS : graphe d'animation
+
+*  -* [Motion Graph de l'article original](http://www.cs.wisc.edu/graphics/Gallery/kovar.vol/MoGraphs/);
+* Des BVH avec squelette compatible pour le graphe sont donné dans le git, répertoire Second\_Life.  
+
+Nous avons remarqué dans la partie 1 que la transition d'animation ne fonctionne bien que lorsque les deux poses du squelette sont assez proches (il faut bien sûr également que les deux squelettes aient la même topologie). L'idée d'un graphe d'animation est de construire un graphe où chaque noeud correspond à une pose d'une animation et où chaque arrête définit qu'une transition est possible entre les deux poses.
+
+  
+
+#### Comparaison de deux poses d'animation
+
+Pour construire un graphe d'animation à partir d'une ou plusieurs animations, on doit être capable de comparer deux poses d'animation. Une distance de 0 indique que les deux poses sont identiques. Une distance grande indique que les 2 poses sont très différentes.
+
+A partir de la classe Skeleton, écrivez la fonction de calcul de distance entre deux poses de squelette. Cette fonction est déjà présente dans la classe Skeleton plus haut mais en commentaire. Cette fonction calcule itérativement sur toutes les articulations la somme des distances euclidienne entre chaque articulation de deux squelettes aillant la même topologie mais dans des poses différentes.
+
+```
+    friend float Skeleton::Distance(const Skeleton& a, const Skeleton& b);
+```
+
+  
+Remarque : il est important de ne pas tenir compte de la translation et de la rotation de l'articulation racine. Une même pose a deux endroits du monde doit donner une distance de 0. Dans un 1er temps, votre personnage aura son noeud root centré en (0,0,0), puis dans la dernière partie de cette question, vous traiterez le centre de gravité.
+
+  
+  
+
+#### Construction du graphe
+
+Ecrivez un module MotionGraph qui contiendra un ensemble de BVH et le graphe d'animation définissant des transitions dans cette ensemble d'animation.
+ * Un noeud du graphe=(Identifiant d'une animation + un numéro de pose); 
+ * un arc du graphe entre deux poses indique la transition possible entre ces deux poses. Deux poses sont compatibles à la transition quand la distance entre les deux squelettes sont inférieurs à un certain seuil fixé empiriquement.
+
+  
+Vous pouvez créer un module CACore/CAMotionGraph.h/.cpp
+
+```
+    class MotionGraph
+    {
+       ...
+    protected:
+       //! L'ensemble des BVH du graphe d'animation
+       std::vector<BVH> m_BVH;
+    
+       //! Un noeud du graphe d'animation est repéré par un entier=un identifiant
+       typedef int GrapheNodeID;
+    
+       //! Une animation BVH est repérée par un identifiant=un entier 
+       typedef int BVH_ID;
+       
+       //! Un noeud du graphe contient l'identifiant de l'animation, le numéro 
+       //! de la frame et les identifiants des noeuds successeurs 
+       //! Remarque : du code plus "joli" aurait créer une classe CAGrapheNode
+       struct GrapheNode
+       {
+         BVH_ID id_bvh;
+         int frame;
+         std::vector<GrapheNodeID> ids_next;     //! Liste des nœuds successeurs 
+       };
+    
+    
+       //! Tous les noeuds du graphe d'animation
+       std::vector<GrapheNode> m_GrapheNode;
+    
+    };
+```
+  
+  
+
+#### Navigation dans le graphe
+
+Une fois ce graphe construit, on peut définir différente manière de naviguer dedans :
+   * Un parcours aléatoire dans le graphe (juste pour vérifier que le graphe est ok);
+   * L'utilisateur donne des directions au clavier => le parcours dans le graphe est conditionné par ces contraintes.
+
+
+#### Gestion correcte du centre de gravité
+
+Pour chaque arc du graphe, vous devez stocker la transformation (soit une matrice 4x4, soit un quaternion et une translation) du noeud root (souvent le centre de gravité) entre la pose i et la pose i+1. Cette transformation sera appliqué au noeud root de votre personnage quand il empruntera l'arc.
+
+  
+  
+  
+
+## NON DEMANDE CETTE ANNEE : Animation physique (voir la partie de F. Zara à la place)
+
+#### Particules
+
+![](/charanim_ball.png)
+
+Dans la fonction init de la class CharAnimViewer indiquez un nombre de particules non nul :
+
+``` 
+    m_world.setParticlesCount( 10 );
+```
+
+Dans la fonction render, il faut afficher les particules en dé-commentant cette ligne :
+
+``` 
+    m_world.draw();
+```
+
+Vous verrez alors les particules s'afficher, mais elles ne seront pas animées. Pour calculer la physique sur les particules, il y a deux
+classes **PhysicalWorld** et **Particle**. Regardez le fichier Particles.h. Il faudra compléter les fonctions update, collision et groundCollision :
+
+``` 
+    void update(const float dt = 0.1f)
+    void groundCollision()
+    void collision(const Point& p, const float radius)
+```
+
+Le code de update doit mettre à jour la vitesse avec l'équation F=m.a où a = dv/dt  
+Et mettre à jour la position avec l'équation habituelle p = p + v.t  
+
+[Regardez les explications dans la vidéo de cours ou ici](https://perso.liris.cnrs.fr/alexandre.meyer/teaching/master_charanim/aPDF_COURS_M1/M1_TP_PhysicsAnimation_ParticulesMassesRessorts.pdf).
+
+  
+
+#### Interaction personnage/particules
+
+Pour ajouter l'interaction entre votre personnage et des boules/sphères se trouvant dans l'environnement, il faut appeler PhysicalWorld::collision depuis CharAnimViewer::update en parcourant toutes les articulations du personnage. Dans un 1er temps, vous pouvez juste faire disparaitre les particules touchées en faisant passer le rayon de la particule à -1 et faire en sorte que les particules de rayon négatif ne soient pas affichées. Puis ajoutez dans Particle::collision du code pour déplacer les particules en collisions (résoudre les collisions) et changer leur vecteur vitesse.
+
+#### Tissus
+
+Un tissu est composé d'un maillage de Masses/Ressorts. Ajoutez une classe Spring qui va comporter :
+ * la raideur du ressort
+ * la longueur au repos du ressort
+ * idA et idB : l'identifiant des 2 particules aux extrémités du ressort. Ces 2 identifiants sont l'indices de deux particules dans le tableau de particules stocké dans la classe PhysicalWorld.
+
+Munissez cette classe d'une fonction *addForce* qui calcule les forces qu'applique le ressort sur les 2 particules.
+```
+    void Spring::addForce(vector<Particles>& part, const float dt)
+```
+
+
+Dans la classe PhysicalWorld, ajoutez un tableau de ressort :
+
+``` 
+   std::vector<Spring> m_springs;
+```
+
+Le constructeur de PhysicalWorld créera un tissu avec des masses ressorts sous la forme de l'image ci-dessous. La génération se fera procéduralement.
+
+![](/mass-spring.jpg)
+
+
+#### Interaction avec le personnage
+
+Normalement, le personnage va pouvoir interagir avec le tissu en passant dessous ...
diff --git a/web/themes/etch/.gitignore b/web/themes/etch/.gitignore
deleted file mode 100644
index e43b0f988953ae3a84b00331d0ccf5f7d51cb3cf..0000000000000000000000000000000000000000
--- a/web/themes/etch/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-.DS_Store
diff --git a/web/themes/etch/LICENSE b/web/themes/etch/LICENSE
deleted file mode 100644
index 37209a97311f6ddcf85c81df6ab3ad622de1914b..0000000000000000000000000000000000000000
--- a/web/themes/etch/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2020 Lukas Joswiak
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/web/themes/etch/README.md b/web/themes/etch/README.md
deleted file mode 100644
index e46750b41d03d3f40e776667634168a96b4ad34e..0000000000000000000000000000000000000000
--- a/web/themes/etch/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Etch
-
-Etch is a simple, responsive theme for [Hugo](https://gohugo.io) with a focus on writing. A live demo is available at https://lukasjoswiak.github.io/etch/.
-
-<img src="https://raw.githubusercontent.com/LukasJoswiak/etch/master/images/screenshot_small.png" alt="screenshot" width="545px">
-
-## Features:
-
-* Homepage with list of posts.
-* Support for pages.
-* Responsive design for optimized mobile experience.
-* Syntax highlighting with customizable theme.
-* Dark theme which automatically adjusts based on users' setting ([example](https://github.com/LukasJoswiak/etch/wiki/Dark-mode)).
-* No external dependencies, no JavaScript, no web fonts.
-* Internationalization friendly: use default English translations or create your own
-
-## Installation
-
-To install `etch`, download the repository into the `themes` folder in the root of your site.
-
-```
-$ git submodule add https://github.com/LukasJoswiak/etch.git themes/etch
-```
-
-Then, use the theme to generate your site.
-
-```
-$ hugo server -t etch
-```
-
-Use the [sample configuration](https://github.com/LukasJoswiak/etch/wiki/Configuration#sample-configuration) as a starting point. See the [configuration](https://github.com/LukasJoswiak/etch/wiki/Configuration) page for more info.
-
-Read the [wiki](https://github.com/LukasJoswiak/etch/wiki) to learn about more options.
diff --git a/web/themes/etch/archetypes/default.md b/web/themes/etch/archetypes/default.md
deleted file mode 100644
index ac36e0622776b9ea3aff3dd3e2b43b1cdf833eed..0000000000000000000000000000000000000000
--- a/web/themes/etch/archetypes/default.md
+++ /dev/null
@@ -1,2 +0,0 @@
-+++
-+++
diff --git a/web/themes/etch/assets/css/dark.css b/web/themes/etch/assets/css/dark.css
deleted file mode 100644
index 8007b2fcd80a2f4e651fd970050a2aa439064588..0000000000000000000000000000000000000000
--- a/web/themes/etch/assets/css/dark.css
+++ /dev/null
@@ -1,53 +0,0 @@
-{{ if not (eq .Site.Params.dark "on") -}}
-@media (prefers-color-scheme: dark) {
-{{ end -}}
-html {
-    scrollbar-color: #6c6c6c #2e2e2e;
-}
-
-body {
-    color: #ebebeb;
-    background: #121212;
-    -webkit-font-smoothing: antialiased;
-    -moz-osx-font-smoothing: grayscale;
-}
-
-header#banner a {
-    color: #e0e0e0;
-    text-decoration: none;
-}
-
-header#banner nav ul li a {
-    color: #cccccc;
-}
-
-main#content a {
-    color: #00b1ed;
-}
-
-main#content p {
-    color: #f5f5f5;
-}
-
-main#content hr {
-    background: #5c5c5c;
-}
-
-main#content #toc h4 {
-    color: #d4d4d4;
-}
-
-main#content ul#posts small {
-    color: #a7a7a7;
-}
-
-main#content ul#posts li a:hover {
-    color: #21c7ff;
-}
-
-main#content header#post-header div {
-    color: #a7a7a7;
-}
-{{- if not (eq .Site.Params.dark "on") -}}
-}
-{{- end -}}
diff --git a/web/themes/etch/assets/css/main.css b/web/themes/etch/assets/css/main.css
deleted file mode 100644
index 4c2f2ea80995967ccb50ed5c781f73970d9b84c7..0000000000000000000000000000000000000000
--- a/web/themes/etch/assets/css/main.css
+++ /dev/null
@@ -1,282 +0,0 @@
-*, *:before, *:after {
-    box-sizing: border-box;
-}
-
-html {
-    font-size: 62.5%;
-}
-
-body {
-    font-size: 16px;
-    font-size: 1.6rem;
-    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
-    color: #313a3d;
-    width: 100%;
-    margin: 0 auto;
-    padding: 0 16px;
-    line-height: 1.6;
-    overflow-wrap: break-word;
-}
-
-header#banner {
-    margin: 25px 0;
-}
-
-header#banner a {
-    color: #313a3d;
-    text-decoration: none;
-}
-
-header#banner a:hover {
-    text-decoration: underline;
-}
-
-header#banner h2 {
-    display: inline;
-    font-size: 21px;
-    font-size: 2.1rem;
-    margin: 0 8px 0 0;
-}
-
-header#banner nav {
-    display: inline-block;
-}
-
-header#banner nav ul {
-    list-style-type: none;
-    font-size: 1.05em;
-    text-transform: lowercase;
-    margin: 0;
-    padding: 0;
-}
-
-header#banner nav ul li {
-    display: inline;
-    margin: 0 3px;
-}
-
-header#banner nav ul li a {
-    color: #454545;
-}
-
-main#content a {
-    color: #007dfa;
-    text-decoration: none;
-}
-
-main#content a:hover {
-    text-decoration: underline;
-}
-
-main#content h1,
-main#content h2,
-main#content h3,
-main#content h4,
-main#content h5,
-main#content h6 {
-    margin-bottom: 0;
-    line-height: 1.15;
-}
-
-main#content h3 {
-    font-size: 19px;
-    font-size: 1.9rem;
-}
-
-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: 5px;
-}
-
-main#content p {
-    color: #394548;
-    margin: 16px 0;
-}
-
-main#content hr {
-    height: 1px;
-    border: 0;
-    background: #d8d8d8;
-}
-
-main#content abbr {
-    cursor: help;
-}
-
-/* index.html styles */
-main#content ul#posts {
-    list-style-type: none;
-    font-size: 16px;
-    font-size: 1.6rem;
-    margin-top: 0;
-    padding: 0;
-}
-
-main#content ul#posts li {
-    margin: 5px 0;
-    padding: 0;
-}
-
-main#content ul#posts small {
-    font-size: 0.8em;
-    color: #767676;
-    margin-left: 10px;
-}
-
-main#content ul#posts li a {
-    text-decoration: none;
-}
-
-main#content ul#posts li a:hover {
-    color: #369aff;
-}
-
-main#content ul#posts li a:hover small {
-    color: inherit;
-}
-
-/* single.html styles */
-main#content header#post-header h1 {
-    display: block;
-    font-size: 23px;
-    font-size: 2.3rem;
-    font-weight: 600;
-    line-height: 1.15;
-}
-
-main#content header#post-header > div {
-    display: block;
-    font-size: 0.85em;
-    color: #767676;
-}
-
-main#content #toc {
-    border: 1px solid #b1b1b1;
-    border-radius: 1px;
-    line-height: 26px;
-    margin: 16px 0;
-    padding: 9px 14px;
-}
-
-main#content #toc h4 {
-    font-size: 1.06em;
-    color: #3d3d3d;
-    margin: 0;
-}
-
-main#content #toc nav#TableOfContents {
-    margin-top: 4px;
-}
-
-main#content #toc nav#TableOfContents > ul, main#content #toc nav#TableOfContents > ol {
-    margin-left: -40px;
-}
-
-main#content #toc ul, main#content #toc ol {
-    font-size: 0.98em;
-    margin: 0;
-    padding: 0 0 0 40px;
-}
-
-main#content #toc ul {
-    list-style-type: none;
-}
-
-main#content #toc ol {
-    counter-reset: item;
-}
-
-main#content #toc ol li {
-    display: block;
-}
-
-main#content #toc ol li:before {
-    content: counters(item, ".") ". ";
-    counter-increment: item;
-}
-
-main#content img {
-    max-width: 100%;
-    margin: 0 auto;
-}
-
-main#content figure {
-    margin: 16px 0;
-}
-
-main#content figure img {
-    display: block;
-    max-width: 100%;
-    margin: 0 auto;
-}
-
-main#content figure figcaption {
-    font-size: 0.92em;
-    font-style: italic;
-    line-height: 22px;
-    text-align: center;
-    margin-top: 6px;
-    padding: 0 10px;
-}
-
-main#content figure figcaption h4 {
-    font-style: normal;
-    display: inline;
-    margin: 0;
-}
-
-main#content figure figcaption p {
-    display: inline;
-    margin: 0;
-    padding-left: 8px;
-}
-
-main#content blockquote {
-    font-style: italic;
-    margin-top: 10px;
-    margin-bottom: 10px;
-    margin-left: 50px;
-    padding-left: 15px;
-    border-left: 3px solid #ccc;
-}
-
-main#content code,
-main#content pre {
-    font-family: 'Menlo', monospace;
-}
-
-main#content code {
-    font-size: 0.96em;
-    padding: 0 5px;
-}
-
-main#content pre {
-    display: block;
-    overflow-x: auto;
-    font-size: 14px;
-    font-size: 1.4rem;
-    white-space: pre;
-    margin: 20px 0;
-    padding: 1.5rem 1.5rem;
-    line-height: 1.4;
-}
-
-main#content pre code {
-    padding: 0;
-}
-
-main#content .footnotes {
-    font-size: 0.9em;
-}
-
-footer#footer {
-    font-size: 14px;
-    font-size: 1.4rem;
-    font-weight: 400;
-    color: #b3b3b3;
-    margin: 40px 0;
-}
diff --git a/web/themes/etch/assets/css/min770px.css b/web/themes/etch/assets/css/min770px.css
deleted file mode 100644
index 076fdeeed0b3bfb1cf09aa35a2bef0db406bfd1d..0000000000000000000000000000000000000000
--- a/web/themes/etch/assets/css/min770px.css
+++ /dev/null
@@ -1,52 +0,0 @@
-@media (min-width: 770px) {
-body {
-    width: 600px;
-    line-height: 1.5;
-}
-
-main#content hr {
-    width: 108%;
-    margin-left: -3.8%;
-}
-
-/* index.html styles */
-header#banner h2 {
-    font-size: 25px;
-    font-size: 2.5rem;
-}
-
-main#content h3 {
-    font-size: 20px;
-    font-size: 2rem;
-}
-
-main#content ul#posts {
-    font-size: 18px;
-    font-size: 1.8rem;
-}
-
-/* single.html styles */
-main#content header#post-header h1 {
-    font-size: 24px;
-    font-size: 2.4rem;
-}
-
-main#content img {
-    max-width: 108%;
-    margin-left: -3.8%;
-}
-
-main#content figure {
-    margin-left: -3.8%;
-}
-
-main#content figure img {
-    max-width: 108%;
-}
-
-main#content pre {
-    width: 108%;
-    margin-left: -3.8%;
-    padding: 1.5rem 2.2rem;
-}
-}
diff --git a/web/themes/etch/assets/css/syntax.css b/web/themes/etch/assets/css/syntax.css
deleted file mode 100644
index 350286e4d295b20deec086852742cc5d527611d2..0000000000000000000000000000000000000000
--- a/web/themes/etch/assets/css/syntax.css
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Background */ .chroma { color: #f8f8f2; background-color: #272822 }
-/* Error */ .chroma .err { color: #960050; background-color: #1e0010 }
-/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
-/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
-/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc }
-/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
-/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
-/* Keyword */ .chroma .k { color: #66d9ef }
-/* KeywordConstant */ .chroma .kc { color: #66d9ef }
-/* KeywordDeclaration */ .chroma .kd { color: #66d9ef }
-/* KeywordNamespace */ .chroma .kn { color: #f92672 }
-/* KeywordPseudo */ .chroma .kp { color: #66d9ef }
-/* KeywordReserved */ .chroma .kr { color: #66d9ef }
-/* KeywordType */ .chroma .kt { color: #66d9ef }
-/* NameAttribute */ .chroma .na { color: #a6e22e }
-/* NameClass */ .chroma .nc { color: #a6e22e }
-/* NameConstant */ .chroma .no { color: #66d9ef }
-/* NameDecorator */ .chroma .nd { color: #a6e22e }
-/* NameException */ .chroma .ne { color: #a6e22e }
-/* NameFunction */ .chroma .nf { color: #a6e22e }
-/* NameOther */ .chroma .nx { color: #a6e22e }
-/* NameTag */ .chroma .nt { color: #f92672 }
-/* Literal */ .chroma .l { color: #ae81ff }
-/* LiteralDate */ .chroma .ld { color: #e6db74 }
-/* LiteralString */ .chroma .s { color: #e6db74 }
-/* LiteralStringAffix */ .chroma .sa { color: #e6db74 }
-/* LiteralStringBacktick */ .chroma .sb { color: #e6db74 }
-/* LiteralStringChar */ .chroma .sc { color: #e6db74 }
-/* LiteralStringDelimiter */ .chroma .dl { color: #e6db74 }
-/* LiteralStringDoc */ .chroma .sd { color: #e6db74 }
-/* LiteralStringDouble */ .chroma .s2 { color: #e6db74 }
-/* LiteralStringEscape */ .chroma .se { color: #ae81ff }
-/* LiteralStringHeredoc */ .chroma .sh { color: #e6db74 }
-/* LiteralStringInterpol */ .chroma .si { color: #e6db74 }
-/* LiteralStringOther */ .chroma .sx { color: #e6db74 }
-/* LiteralStringRegex */ .chroma .sr { color: #e6db74 }
-/* LiteralStringSingle */ .chroma .s1 { color: #e6db74 }
-/* LiteralStringSymbol */ .chroma .ss { color: #e6db74 }
-/* LiteralNumber */ .chroma .m { color: #ae81ff }
-/* LiteralNumberBin */ .chroma .mb { color: #ae81ff }
-/* LiteralNumberFloat */ .chroma .mf { color: #ae81ff }
-/* LiteralNumberHex */ .chroma .mh { color: #ae81ff }
-/* LiteralNumberInteger */ .chroma .mi { color: #ae81ff }
-/* LiteralNumberIntegerLong */ .chroma .il { color: #ae81ff }
-/* LiteralNumberOct */ .chroma .mo { color: #ae81ff }
-/* Operator */ .chroma .o { color: #f92672 }
-/* OperatorWord */ .chroma .ow { color: #f92672 }
-/* Comment */ .chroma .c { color: #75715e }
-/* CommentHashbang */ .chroma .ch { color: #75715e }
-/* CommentMultiline */ .chroma .cm { color: #75715e }
-/* CommentSingle */ .chroma .c1 { color: #75715e }
-/* CommentSpecial */ .chroma .cs { color: #75715e }
-/* CommentPreproc */ .chroma .cp { color: #75715e }
-/* CommentPreprocFile */ .chroma .cpf { color: #75715e }
-/* GenericDeleted */ .chroma .gd { color: #f92672 }
-/* GenericEmph */ .chroma .ge { font-style: italic }
-/* GenericInserted */ .chroma .gi { color: #a6e22e }
-/* GenericStrong */ .chroma .gs { font-weight: bold }
-/* GenericSubheading */ .chroma .gu { color: #75715e }
diff --git a/web/themes/etch/exampleSite/config.toml b/web/themes/etch/exampleSite/config.toml
deleted file mode 100644
index 527434a2b51573c973c8ef708050171b86a41126..0000000000000000000000000000000000000000
--- a/web/themes/etch/exampleSite/config.toml
+++ /dev/null
@@ -1,38 +0,0 @@
-baseURL = "https://example.com"
-title = "Website Name"
-theme = "etch"
-languageCode = "en-US"
-enableInlineShortcodes = true
-pygmentsCodeFences = true
-pygmentsUseClasses = true
-
-[params]
-  description = "Your site description"
-  copyright = "Copyright © 2021 Your Name"
-  dark = "auto"
-  highlight = true
-
-[menu]
-  [[menu.main]]
-    identifier = "posts"
-    name = "posts"
-    title = "posts"
-    url = "/"
-    weight = 10
-
-  [[menu.main]]
-    identifier = "about"
-    name = "about"
-    title = "about"
-    url = "/about/"
-    weight = 20
-
-[permalinks]
-  posts = "/:title/"
-
-[markup.goldmark.renderer]
-  # Allow HTML in Markdown
-  unsafe = true
-
-  [markup.tableOfContents]
-    ordered = true
diff --git a/web/themes/etch/exampleSite/content/_index.md b/web/themes/etch/exampleSite/content/_index.md
deleted file mode 100644
index 2a7449026498f344f5188ac312a5a1e9d0b994ba..0000000000000000000000000000000000000000
--- a/web/themes/etch/exampleSite/content/_index.md
+++ /dev/null
@@ -1,4 +0,0 @@
----
-title: "Home"
----
-This is some info about me.
diff --git a/web/themes/etch/exampleSite/content/about/index.md b/web/themes/etch/exampleSite/content/about/index.md
deleted file mode 100644
index eb5384b9160a4b2cc1360cb238a193cc4204a923..0000000000000000000000000000000000000000
--- a/web/themes/etch/exampleSite/content/about/index.md
+++ /dev/null
@@ -1,21 +0,0 @@
-+++
-title = "About"
-+++
-
-Written in Go, Hugo is an open source static site generator available under the [Apache Licence 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows.
-
-Hugo makes use of a variety of open source projects including:
-
-* https://github.com/yuin/goldmark
-* https://github.com/alecthomas/chroma
-* https://github.com/muesli/smartcrop
-* https://github.com/spf13/cobra
-* https://github.com/spf13/viper
-
-Hugo is ideal for blogs, corporate websites, creative portfolios, online magazines, single page applications or even a website with thousands of pages.
-
-Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases.
-
-Websites built with Hugo are extremelly fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider.
-
-Learn more and contribute on [GitHub](https://github.com/gohugoio).
diff --git a/web/themes/etch/exampleSite/content/posts/emoji-support.md b/web/themes/etch/exampleSite/content/posts/emoji-support.md
deleted file mode 100644
index ecf6c86103c3d54208bfa8e551afa365e17ff5ce..0000000000000000000000000000000000000000
--- a/web/themes/etch/exampleSite/content/posts/emoji-support.md
+++ /dev/null
@@ -1,47 +0,0 @@
-+++
-author = "Hugo Authors"
-title = "Emoji Support"
-date = "2019-03-05"
-description = "Guide to emoji usage in Hugo"
-tags = [
-    "emoji",
-]
-+++
-
-Emoji can be enabled in a Hugo project in a number of ways. 
-<!--more-->
-The [`emojify`](https://gohugo.io/functions/emojify/) function can be called directly in templates or [Inline Shortcodes](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes). 
-
-To enable emoji globally, set `enableEmoji` to `true` in your site’s [configuration](https://gohugo.io/getting-started/configuration/) and then you can type emoji shorthand codes directly in content files; e.g.
-
-
-<p><span class="nowrap"><span class="emojify">🙈</span> <code>:see_no_evil:</code></span>  <span class="nowrap"><span class="emojify">🙉</span> <code>:hear_no_evil:</code></span>  <span class="nowrap"><span class="emojify">🙊</span> <code>:speak_no_evil:</code></span></p>
-<br>
-
-The [Emoji cheat sheet](http://www.emoji-cheat-sheet.com/) is a useful reference for emoji shorthand codes.
-
-***
-
-**N.B.** The above steps enable Unicode Standard emoji characters and sequences in Hugo, however the rendering of these glyphs depends on the browser and the platform. To style the emoji you can either use a third party emoji font or a font stack; e.g.
-
-{{< highlight html >}}
-.emoji {
-font-family: Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols;
-}
-{{< /highlight >}}
-
-{{< css.inline >}}
-<style>
-.emojify {
-	font-family: Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols;
-	font-size: 2rem;
-	vertical-align: middle;
-}
-@media screen and (max-width:650px) {
-    .nowrap {
-	display: block;
-	margin: 25px 0;
-}
-}
-</style>
-{{< /css.inline >}}
\ No newline at end of file
diff --git a/web/themes/etch/exampleSite/content/posts/markdown-syntax.md b/web/themes/etch/exampleSite/content/posts/markdown-syntax.md
deleted file mode 100644
index d60c404ec4102a86fe97dc93e142ee176761899a..0000000000000000000000000000000000000000
--- a/web/themes/etch/exampleSite/content/posts/markdown-syntax.md
+++ /dev/null
@@ -1,147 +0,0 @@
-+++
-author = "Hugo Authors"
-title = "Markdown Syntax Guide"
-date = "2019-03-11"
-description = "Sample article showcasing basic Markdown syntax and formatting for HTML elements."
-tags = [
-    "markdown",
-    "css",
-    "html",
-    "themes",
-]
-categories = [
-    "themes",
-    "syntax",
-]
-series = ["Themes Guide"]
-aliases = ["migrate-from-jekyl"]
-+++
-
-This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.
-<!--more-->
-
-## Headings
-
-The following HTML `<h1>`—`<h6>` elements represent six levels of section headings. `<h1>` is the highest section level while `<h6>` is the lowest.
-
-# H1
-## H2
-### H3
-#### H4
-##### H5
-###### H6
-
-## Paragraph
-
-Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat.
-
-Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat.
-
-## Blockquotes
-
-The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations.
-
-#### Blockquote without attribution
-
-> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
-> **Note** that you can use *Markdown syntax* within a blockquote.
-
-#### Blockquote with attribution
-
-> Don't communicate by sharing memory, share memory by communicating.</p>
-> — <cite>Rob Pike[^1]</cite>
-
-
-[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
-
-## Tables
-
-Tables aren't part of the core Markdown spec, but Hugo supports supports them out-of-the-box.
-
-   Name | Age
---------|------
-    Bob | 27
-  Alice | 23
-
-#### Inline Markdown within tables
-
-| Inline&nbsp;&nbsp;&nbsp;     | Markdown&nbsp;&nbsp;&nbsp;  | In&nbsp;&nbsp;&nbsp;                | Table      |
-| ---------- | --------- | ----------------- | ---------- |
-| *italics*  | **bold**  | ~~strikethrough~~&nbsp;&nbsp;&nbsp; | `code`     |
-
-## Code Blocks
-
-#### Code block with backticks
-
-```
-html
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <meta charset="UTF-8">
-  <title>Example HTML5 Document</title>
-</head>
-<body>
-  <p>Test</p>
-</body>
-</html>
-```
-#### Code block indented with four spaces
-
-    <!DOCTYPE html>
-    <html lang="en">
-    <head>
-      <meta charset="UTF-8">
-      <title>Example HTML5 Document</title>
-    </head>
-    <body>
-      <p>Test</p>
-    </body>
-    </html>
-
-#### Code block with Hugo's internal highlight shortcode
-{{< highlight html >}}
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <meta charset="UTF-8">
-  <title>Example HTML5 Document</title>
-</head>
-<body>
-  <p>Test</p>
-</body>
-</html>
-{{< /highlight >}}
-
-## List Types
-
-#### Ordered List
-
-1. First item
-2. Second item
-3. Third item
-
-#### Unordered List
-
-* List item
-* Another item
-* And another item
-
-#### Nested list
-
-* Item
-1. First Sub-item
-2. Second Sub-item
-
-## Other Elements — abbr, sub, sup, kbd, mark
-
-<abbr title="Graphics Interchange Format">GIF</abbr> is a bitmap image format.
-
-H<sub>2</sub>O
-
-X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup>
-
-Press <kbd><kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>Delete</kbd></kbd> to end the session.
-
-Most <mark>salamanders</mark> are nocturnal, and hunt for insects, worms, and other small creatures.
-
diff --git a/web/themes/etch/exampleSite/content/posts/placeholder-text.md b/web/themes/etch/exampleSite/content/posts/placeholder-text.md
deleted file mode 100644
index 378b9954ecc1118b4f6c053836853393b71717e8..0000000000000000000000000000000000000000
--- a/web/themes/etch/exampleSite/content/posts/placeholder-text.md
+++ /dev/null
@@ -1,58 +0,0 @@
-+++
-author = "Hugo Authors"
-title = "Placeholder Text"
-date = "2019-03-09"
-description = "Lorem Ipsum Dolor Si Amet"
-tags = [
-    "markdown",
-    "text",
-]
-+++
-
-Lorem est tota propiore conpellat pectoribus de
-pectora summo. <!--more-->Redit teque digerit hominumque toris verebor lumina non cervice
-subde tollit usus habet Arctonque, furores quas nec ferunt. Quoque montibus nunc
-caluere tempus inhospita parcite confusaque translucet patri vestro qui optatis
-lumine cognoscere flos nubis! Fronde ipsamque patulos Dryopen deorum.
-
-1. Exierant elisi ambit vivere dedere
-2. Duce pollice
-3. Eris modo
-4. Spargitque ferrea quos palude
-
-Rursus nulli murmur; hastile inridet ut ab gravi sententia! Nomine potitus
-silentia flumen, sustinet placuit petis in dilapsa erat sunt. Atria
-tractus malis.
-
-1. Comas hunc haec pietate fetum procerum dixit
-2. Post torum vates letum Tiresia
-3. Flumen querellas
-4. Arcanaque montibus omnes
-5. Quidem et
-
-# Vagus elidunt
-
-<svg class="canon" xmlns="http://www.w3.org/2000/svg" overflow="visible" viewBox="0 0 496 373" height="373" width="496"><g fill="none"><path stroke="#000" stroke-width=".75" d="M.599 372.348L495.263 1.206M.312.633l494.95 370.853M.312 372.633L247.643.92M248.502.92l246.76 370.566M330.828 123.869V1.134M330.396 1.134L165.104 124.515"></path><path stroke="#ED1C24" stroke-width=".75" d="M275.73 41.616h166.224v249.05H275.73zM54.478 41.616h166.225v249.052H54.478z"></path><path stroke="#000" stroke-width=".75" d="M.479.375h495v372h-495zM247.979.875v372"></path><ellipse cx="498.729" cy="177.625" rx=".75" ry="1.25"></ellipse><ellipse cx="247.229" cy="377.375" rx=".75" ry="1.25"></ellipse></g></svg>
-
-[The Van de Graaf Canon](https://en.wikipedia.org/wiki/Canons_of_page_construction#Van_de_Graaf_canon)
-
-## Mane refeci capiebant unda mulcebat
-
-Victa caducifer, malo vulnere contra
-dicere aurato, ludit regale, voca! Retorsit colit est profanae esse virescere
-furit nec; iaculi matertera et visa est, viribus. Divesque creatis, tecta novat collumque vulnus est, parvas. **Faces illo pepulere** tempus adest. Tendit flamma, ab opes virum sustinet, sidus sequendo urbis.
-
-Iubar proles corpore raptos vero auctor imperium; sed et huic: manus caeli
-Lelegas tu lux. Verbis obstitit intus oblectamina fixis linguisque ausus sperare
-Echionides cornuaque tenent clausit possit. Omnia putatur. Praeteritae refert
-ausus; ferebant e primus lora nutat, vici quae mea ipse. Et iter nil spectatae
-vulnus haerentia iuste et exercebat, sui et.
-
-Eurytus Hector, materna ipsumque ut Politen, nec, nate, ignari, vernum cohaesit sequitur. Vel **mitis temploque** vocatus, inque alis, *oculos nomen* non silvis corpore coniunx ne displicet illa. Crescunt non unus, vidit visa quantum inmiti flumina mortis facto sic: undique a alios vincula sunt iactata abdita! Suspenderat ego fuit tendit: luna, ante urbem
-Propoetides **parte**.
-
-{{< css.inline >}}
-<style>
-.canon { background: white; width: 100%; height: auto;}
-</style>
-{{< /css.inline >}}
diff --git a/web/themes/etch/exampleSite/content/posts/rich-content.md b/web/themes/etch/exampleSite/content/posts/rich-content.md
deleted file mode 100644
index 8cb88610d38db7862252c1bdd94ee65a9b56d11c..0000000000000000000000000000000000000000
--- a/web/themes/etch/exampleSite/content/posts/rich-content.md
+++ /dev/null
@@ -1,34 +0,0 @@
-+++
-author = "Hugo Authors"
-title = "Rich Content"
-date = "2019-03-10"
-description = "A brief description of Hugo Shortcodes"
-tags = [
-    "shortcodes",
-    "privacy",
-]
-+++
-
-Hugo ships with several [Built-in Shortcodes](https://gohugo.io/content-management/shortcodes/#use-hugo-s-built-in-shortcodes) for rich content, along with a [Privacy Config](https://gohugo.io/about/hugo-and-gdpr/) and a set of Simple Shortcodes that enable static and no-JS versions of various social media embeds.
-<!--more-->
----
-
-## YouTube Privacy Enhanced Shortcode
-
-{{< youtube ZJthWmvUzzc >}}
-
-<br>
-
----
-
-## Twitter Shortcode
-
-{{< tweet user="DesignReviewed" id="1085870671291310081" >}}
-
-<br>
-
----
-
-## Vimeo Simple Shortcode
-
-{{< vimeo_simple 48912912 >}}
diff --git a/web/themes/etch/i18n/en.toml b/web/themes/etch/i18n/en.toml
deleted file mode 100644
index e30f8ceb328032074ca4062fa134222717c80f81..0000000000000000000000000000000000000000
--- a/web/themes/etch/i18n/en.toml
+++ /dev/null
@@ -1,19 +0,0 @@
-# Learn how to use Date format (date, created, updated)
-# -> https://gohugo.io/functions/dateformat/
-
-[posts]
-
-[posts.title]
-other = "Posts"
-
-[posts.date]
-other = "Jan 2, 2006"
-
-
-[post]
-
-[post.created]
-other = "January 2, 2006"
-
-[post.updated]
-other = "Updated January 2, 2006"
diff --git a/web/themes/etch/images/screenshot.png b/web/themes/etch/images/screenshot.png
deleted file mode 100644
index fed95539144c65be63381d6443d2dbc65bf748ac..0000000000000000000000000000000000000000
Binary files a/web/themes/etch/images/screenshot.png and /dev/null differ
diff --git a/web/themes/etch/images/screenshot_dark.png b/web/themes/etch/images/screenshot_dark.png
deleted file mode 100644
index 11505f93a946889ddd3442f998c743087ea11e75..0000000000000000000000000000000000000000
Binary files a/web/themes/etch/images/screenshot_dark.png and /dev/null differ
diff --git a/web/themes/etch/images/screenshot_small.png b/web/themes/etch/images/screenshot_small.png
deleted file mode 100644
index d320a7c5cbb53f111e742b3c391da85a362dee06..0000000000000000000000000000000000000000
Binary files a/web/themes/etch/images/screenshot_small.png and /dev/null differ
diff --git a/web/themes/etch/images/tn.png b/web/themes/etch/images/tn.png
deleted file mode 100644
index 0556f2476d85f6074117115669d17866f3eb32eb..0000000000000000000000000000000000000000
Binary files a/web/themes/etch/images/tn.png and /dev/null differ
diff --git a/web/themes/etch/images/tn_dark.png b/web/themes/etch/images/tn_dark.png
deleted file mode 100644
index b40629b0e59c518c2817033ea66c4f75f5aa5244..0000000000000000000000000000000000000000
Binary files a/web/themes/etch/images/tn_dark.png and /dev/null differ
diff --git a/web/themes/etch/layouts/404.html b/web/themes/etch/layouts/404.html
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/web/themes/etch/layouts/_default/baseof.html b/web/themes/etch/layouts/_default/baseof.html
deleted file mode 100644
index 0a5d1f7329ba493ecdcb399474f814c77b0c50fb..0000000000000000000000000000000000000000
--- a/web/themes/etch/layouts/_default/baseof.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="{{ .Site.Language.Lang }}">
-    {{- partial "head.html" . -}}
-    <body>
-        {{- partial "header.html" . -}}
-        <main id="content">
-        {{- block "main" . }}{{- end }}
-        </main>
-        {{- partial "footer.html" . -}}
-    </body>
-</html>
diff --git a/web/themes/etch/layouts/_default/li.html b/web/themes/etch/layouts/_default/li.html
deleted file mode 100644
index f418cb93d0234d773b3611d0cd93bcd9fa76e08e..0000000000000000000000000000000000000000
--- a/web/themes/etch/layouts/_default/li.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<li>
-    <a href="{{ .Permalink }}">
-        {{ .Title }}
-        <small><time>{{ .Date | time.Format (i18n "posts.date") }}</time></small>
-    </a>
-</li>
diff --git a/web/themes/etch/layouts/_default/list.html b/web/themes/etch/layouts/_default/list.html
deleted file mode 100644
index 97af0e385ef9a40c6f83ec657813b41906e714b5..0000000000000000000000000000000000000000
--- a/web/themes/etch/layouts/_default/list.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{{ define "main" }}
-{{- partial "posts.html" . -}}
-{{ end }}
diff --git a/web/themes/etch/layouts/_default/rss.xml b/web/themes/etch/layouts/_default/rss.xml
deleted file mode 100644
index 4acceddbccfa8caf7aa7d1d8fd51c8ccf1482e62..0000000000000000000000000000000000000000
--- a/web/themes/etch/layouts/_default/rss.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-{{- $pctx := . -}}
-{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
-{{- $pages := slice -}}
-{{- if or $.IsHome $.IsSection -}}
-{{- $pages = $pctx.RegularPages -}}
-{{- else -}}
-{{- $pages = $pctx.Pages -}}
-{{- end -}}
-{{- $limit := .Site.Config.Services.RSS.Limit -}}
-{{- if ge $limit 1 -}}
-{{- $pages = $pages | first $limit -}}
-{{- end -}}
-{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>{{ if eq  .Title  .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
-    <link>{{ .Permalink }}</link>
-    <description>Recent content {{ if ne  .Title  .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
-    <generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
-    <language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
-    <managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
-    <webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
-    <copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
-    <lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
-    {{ with .OutputFormats.Get "RSS" }}
-	{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
-    {{ end }}
-    {{ range where .Site.Pages "Kind" "page" }}
-    {{ if or (eq .Section "posts") (eq .Section "post") }}
-    <item>
-      <title>{{ .Title }}</title>
-      <link>{{ .Permalink }}</link>
-      <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
-      {{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
-      <guid>{{ .Permalink }}</guid>
-      <description>{{ .Content | html }}</description>
-    </item>
-    {{ end }}
-    {{ end }}
-  </channel>
-</rss>
diff --git a/web/themes/etch/layouts/_default/single.html b/web/themes/etch/layouts/_default/single.html
deleted file mode 100644
index 281e0644bc18bbc83a56b2ee338b76f918c7d88e..0000000000000000000000000000000000000000
--- a/web/themes/etch/layouts/_default/single.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{{ define "main" }}
-<article>
-    <header id="post-header">
-        <h1>{{ .Title }}</h1>
-        <div>
-        {{- if isset .Params "date" -}}
-            {{ if eq .Lastmod .Date }}
-                <time>{{ .Date | time.Format (i18n "post.created") }}</time>
-            {{ else }}
-                <time>{{ .Lastmod | time.Format (i18n "post.updated") }}</time>
-            {{ end }}
-        {{- end -}}
-        </div>
-    </header>
-    {{- .Content -}}
-</article>
-{{ end }}
diff --git a/web/themes/etch/layouts/_default/taxonomy.html b/web/themes/etch/layouts/_default/taxonomy.html
deleted file mode 100644
index 86677c22bebafa5094f5a7aee4a519b525c8b156..0000000000000000000000000000000000000000
--- a/web/themes/etch/layouts/_default/taxonomy.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{{ define "main" }}
-<h3>{{ .Title }}</h3>
-<ul id="posts">
-{{- range .Pages }}
-    {{ .Render "li" }}
-{{- end }}
-</ul>
-{{ end }}
diff --git a/web/themes/etch/layouts/index.html b/web/themes/etch/layouts/index.html
deleted file mode 100644
index 9983b08160deb42e133ae4ecf205442907eca1e8..0000000000000000000000000000000000000000
--- a/web/themes/etch/layouts/index.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{{ define "main" }}
-{{ .Content }}
-{{ end }}
diff --git a/web/themes/etch/layouts/partials/footer.html b/web/themes/etch/layouts/partials/footer.html
deleted file mode 100644
index 73420ef3dd1c2453227607dc6bec59122a3357d6..0000000000000000000000000000000000000000
--- a/web/themes/etch/layouts/partials/footer.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<footer id="footer">
-    {{ .Site.Params.copyright }}
-</footer>
diff --git a/web/themes/etch/layouts/partials/head.html b/web/themes/etch/layouts/partials/head.html
deleted file mode 100644
index bb7ef8bdcc7780ae599013d435aa4e893f24311d..0000000000000000000000000000000000000000
--- a/web/themes/etch/layouts/partials/head.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    {{ with .Site.Params.description -}}
-    <meta name="description" content="{{ . }}">
-    {{ end }}
-    {{ printf `<link rel="shortcut icon" href="%s">` ("favicon.ico" | absURL) | safeHTML }}
-    {{ with .OutputFormats.Get "rss" -}}
-        {{ printf `<link rel="%s" type="%s" href="%s" title="%s">` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
-    {{ end -}}
-
-    {{ $resources := slice -}}
-
-    {{ $resources = $resources | append (resources.Get "css/main.css") -}}
-
-    {{ $resources = $resources | append (resources.Get "css/min770px.css") -}}
-
-    {{ $dark := .Site.Params.dark | default "auto" -}}
-    {{ if not (eq $dark "off") -}}
-        {{ $resources = $resources | append (resources.Get "css/dark.css" | resources.ExecuteAsTemplate "dark.css" .) -}}
-    {{ end -}}
-
-    {{ if .Site.Params.highlight -}}
-        {{ $resources = $resources | append (resources.Get "css/syntax.css") -}}
-    {{ end -}}
-
-    {{ $css := $resources | resources.Concat "css/style.css" | minify }}
-    {{ printf `<link rel="stylesheet" href="%s">` $css.RelPermalink | safeHTML }}
-
-    <link rel="canonical" href="{{ .Permalink }}" />
-    <title>{{ .Title }}</title>
-</head>
diff --git a/web/themes/etch/layouts/partials/header.html b/web/themes/etch/layouts/partials/header.html
deleted file mode 100644
index 9a6644970d96946ea006770b829942281cdde942..0000000000000000000000000000000000000000
--- a/web/themes/etch/layouts/partials/header.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<header id="banner">
-    <h2><a href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a></h2>
-    <nav>
-        <ul>
-            {{ range .Site.Menus.main.ByWeight -}}
-            <li>
-                {{ .Pre }}<a href="{{ .URL }}" title="{{ .Title }}">{{- .Name -}}</a>{{ .Post }}
-            </li>
-            {{- end }}
-        </ul>
-    </nav>
-</header>
diff --git a/web/themes/etch/layouts/partials/posts.html b/web/themes/etch/layouts/partials/posts.html
deleted file mode 100644
index a741908be82679f1e95b89fcdd3b343f73b4cd9c..0000000000000000000000000000000000000000
--- a/web/themes/etch/layouts/partials/posts.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<h3>{{ i18n "posts.title" }}</h3>
-<ul id="posts">
-{{- range where site.RegularPages "Type" "in" site.Params.mainSections }}
-    {{ .Render "li" }}
-{{- end }}
-</ul>
diff --git a/web/themes/etch/layouts/shortcodes/toc.html b/web/themes/etch/layouts/shortcodes/toc.html
deleted file mode 100644
index 22da6e7b469787f786aa851804648c07872a34b3..0000000000000000000000000000000000000000
--- a/web/themes/etch/layouts/shortcodes/toc.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<aside id="toc">
-    <h4>Table of Contents</h4>
-    {{ .Page.TableOfContents }}
-</aside>
diff --git a/web/themes/etch/theme.toml b/web/themes/etch/theme.toml
deleted file mode 100644
index 07f201a39d93d6a247b6153e96e1e0f51b579319..0000000000000000000000000000000000000000
--- a/web/themes/etch/theme.toml
+++ /dev/null
@@ -1,13 +0,0 @@
-name = "Etch"
-license = "MIT"
-licenselink = "https://github.com/LukasJoswiak/etch/blob/master/LICENSE"
-description = "Lightweight Hugo theme with a focus on content"
-homepage = "https://github.com/LukasJoswiak/etch"
-demosite = "https://lukasjoswiak.github.io/etch/"
-tags = ["simple", "minimal", "clean", "fast", "blog", "responsive", "dark mode", "privacy"]
-features = ["fast", "blog", "syntax highlighting", "dark mode"]
-min_version = "0.41"
-
-[author]
-  name = "Lukas Joswiak"
-  homepage = "https://lukasjoswiak.com"
diff --git a/web/themes/hugo-flex/LICENSE b/web/themes/hugo-flex/LICENSE
deleted file mode 100644
index 73deed2d1f03c8dfe3296e209106b5cdd6da7dba..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "{}"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright 2019 Léo de Souza
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/web/themes/hugo-flex/README.md b/web/themes/hugo-flex/README.md
deleted file mode 100644
index 035b7023a17835384887e184c8c3e89b513db94f..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/README.md
+++ /dev/null
@@ -1,186 +0,0 @@
-# Hugo Flex
-
-A lightweight Hugo theme leveraging CSS Flexbox.
-
-This theme is verified to work with Hugo versions v0.65–v0.104.
-
-
-## Features
-
-- Flexbox-based responsive layout
-- 100% speed score on PageSpeed Insight
-- No framework
-- No javascript
-- Full posts in RSS feed
-- RSS page looks like a normal page
-
-Optional features:
-
-- Show summaries on homepage
-- Schema.org, Open Graph and Twitter Cards metadata
-- Utterances comments widget
-- Custom CSS and JS may be added [site-wide](#custom-css-and-js), or [dynamically](#dynamically-embedded) with shortcodes
-- Built-in shortcodes:
-  - Netlify contact form
-  - On-click Soundcloud player
-
-
-## Example
-
-The [demo site](https://de-souza.github.io/hugo-flex/) is built from the [hugoBasicExample](https://github.com/gohugoio/hugoBasicExample) repository.
-
-A complete starter template specifically made for this theme is also available at [scivision/hugo-flex-example](https://github.com/scivision/hugo-flex-example).
-
-
-## Installation
-
-1. [Install Hugo](https://gohugo.io/getting-started/installing/).
-
-2. [Create a Hugo site](https://gohugo.io/getting-started/quick-start/).
-
-3. Open a command prompt at the root of the site and download the theme:
-
-```bash
-git init
-git submodule add https://github.com/de-souza/hugo-flex.git themes/hugo-flex
-```
-
-4. Add the theme to the site configuration:
-
-```bash
-echo 'theme: hugo-flex' >> config.yaml
-```
-
-
-## Updating
-
-Open a command prompt at the root of the site and update the theme:
-
-```bash
-git submodule update --remote --rebase
-```
-
-
-## Configuration
-
-Any part of the default theme configuration can be overwritten in the site configuration:
-
-```yaml
-params:
-  color: teal           # Any color in CSS syntax
-  width: 42rem          # Any length in CSS syntax
-  footer: >-            # HTML spaces (&#32;) are needed before HTML elements
-    Except where otherwise noted, content on this site is licensed under a &#32;
-    <a href="http://creativecommons.org/licenses/by/4.0/" rel="license">Creative
-    Commons Attribution 4.0 International License</a>.
-  rss: To subscribe to this RSS feed, copy its address and paste it into your
-    favorite feed reader.
-  summaries: false      # Set to true to show summaries of posts on homepage
-  divider: \a0          # Set to false to remove divider below posts on homepage
-  schema: false         # Set to true to add Schema.org metadata
-  opengraph: false      # Set to true to add Open Graph metadata
-  twittercards: false   # Set to true to add Twitter Cards metadata
-  utterances:
-    repo:               # Set to Utterances repo URL to add Utterances comments
-    issueterm: pathname
-    theme: github-light
-  netlify:
-    honeypot: false     # Set to true to add honeypot field in contact form
-    recaptcha: false    # Set to true to add recaptcha challenge in contact form
-  # css:                # Uncomment to add custom CSS from the assets directory
-  #   - css/foo.css
-  #   - bar.css
-  # js:                 # Uncomment to add custom JS from the assets directory
-  #   - js/foo.js
-  #   - bar.js
-
-menu:
-  nav:
-  - name: About
-    url: about/
-    weight: 1
-  - name: Posts
-    url: post/
-    weight: 2
-  - name: Tags
-    url: tags/
-    weight: 3
-  - name: Categories
-    url: categories/
-    weight: 4
-  - name: RSS
-    url: index.xml
-    weight: 5
-```
-
-
-## Built-In Shortcodes
-
-### Netlify Contact Form
-
-A contact form working with the Netlify form handling service may be inserted with the shortcode:
-
-```
-{{< contact >}}
-```
-
-A custom success page URL may be given as a parameter:
-
-```
-{{< contact "/success" >}}
-```
-
-### Soundcloud Player
-
-A Soundcloud Player may be inserted with the shortcode:
-
-```
-{{< soundcloud 123456789 >}}
-```
-
-The parameter is a track ID that can be extracted from the "embed" sharing menu on the track page.
-
-
-## Custom CSS and JS
-
-### Site-Wide
-
-Custom CSS and JS can be added to all the site pages at once. To do so, their filenames can be added to the site configuration:
-
-```yaml
-params:
-  css:
-    - css/foo.css
-    - bar.css
-  js:
-    - js/foo.js
-    - bar.js
-```
-
-The paths are relative to the project working directory.
-In this example, the file paths relative to the site root would be `assets/css/foo.css`,  `assets/bar.css`,  `assets/js/foo.js`,  `assets/bar.js`.
-
-
-### Dynamically Embedded
-
-CSS and JS resources may be embedded on specific pages of the site using [shortcodes](https://gohugo.io/content-management/shortcodes).
-
-To load a resource on each page where a shortcode is used, the template for this shortcode must add the resource to the `css` or `js` key of the `.Scratch` variable. For instance, a shortcode template `myshortcode.html` containing the line
-
-```html
-{{ resources.Get "myscript.js" | fingerprint | .Page.Scratch.SetInMap "js" "myscript" }}
-```
-
-will load `myscript.js` on every page where `myshortcode` is used.
-
-As an example, this is the template for the built-in Soundcloud shortcode:
-
-```html
-{{ resources.Get "css/soundcloud.css" | minify | fingerprint | .Page.Scratch.SetInMap "css" "soundcloud" }}
-{{ resources.Get "js/soundcloud.js" | minify | fingerprint  | .Page.Scratch.SetInMap "js" "soundcloud" }}
-<div class="Soundcloud" data-id="{{ .Get 0 }}"></div>
-```
-
-## License
-
-This theme is licensed under the [Apache License 2.0](https://github.com/de-souza/hugo-flex/blob/master/LICENSE).
diff --git a/web/themes/hugo-flex/assets/css/base.tpl.css b/web/themes/hugo-flex/assets/css/base.tpl.css
deleted file mode 100644
index 327007da2090260a92c7b592cd05dcd2d68ba29a..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/assets/css/base.tpl.css
+++ /dev/null
@@ -1,136 +0,0 @@
-body {
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  line-height: 1.6;
-  display: flex;
-  flex-direction: column;
-  min-height: 100vh;
-  margin: 0;
-  padding: 0;
-}
-
-main {
-  flex-grow: 1;
-}
-
-img {
-  max-width: 100%;
-  border-radius: 0.2rem;
-}
-
-pre {
-  overflow-x: auto;
-  border: 0.1rem solid lightgray;
-  padding: 1rem;
-}
-
-code {
-  font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace;
-}
-
-.Banner {
-  list-style: none;
-  display: flex;
-  flex-flow: row-reverse wrap-reverse;
-  justify-content: space-between;
-  margin: 0;
-  padding: 0;
-}
-
-{{ $len := len site.Menus.nav }}
-{{ range seq $len }}
-
-  .Banner-item:nth-child({{ . }}) {
-    order: {{ sub $len . | add 1 }};
-  }
-
-{{ end }}
-
-.Banner-item--title {
-  flex-grow: 1;
-}
-
-.Banner-link {
-  font-size: 1.25rem;
-  color: white;
-  padding: 0.5rem 1rem;
-}
-
-.Heading {
-  display: flex;
-  flex-wrap: wrap;
-  justify-content: space-between;
-  align-items: baseline;
-}
-
-.Heading-title {
-  margin: 1.5rem 0.5rem 0 0;
-}
-
-.Heading-link {
-  color: inherit;
-}
-
-.Tags {
-  list-style: none;
-  display: flex;
-  flex-wrap: wrap;
-  justify-content: center;
-  margin: 1.5rem 0;
-  padding: 0;
-}
-
-.Tags-item {
-  border-radius: 0.2rem;
-  margin: 0.2rem;
-  padding: 0 0.3rem;
-}
-
-.Tags-link {
-  color: white;
-}
-
-{{ with site.Params.divider }}
-
-  .Divider {
-    display: flex;
-    justify-content: center;
-  }
-
-  .Divider::after {
-    content: "{{ . }}";
-  }
-
-{{ end }}
-
-.Pagination {
-  font-size: 1.25rem;
-  color: inherit;
-}
-
-.Pagination--right {
-  float: right;
-}
-
-.Footer {
-  text-align: center;
-  margin: 1rem 0;
-}
-
-.u-wrapper {
-  {{ with site.Params.width }}max-width: {{ . }};{{ end }}
-  margin: auto;
-}
-
-.u-padding {
-  padding: 0 1rem;
-}
-
-.u-background {
-  background: {{ site.Params.color }};
-}
-
-.u-clickable {
-  font-weight: bold;
-  text-decoration: none;
-  display: inline-block;
-}
diff --git a/web/themes/hugo-flex/assets/css/contact.css b/web/themes/hugo-flex/assets/css/contact.css
deleted file mode 100644
index 5241a52875cc88b66f312bf5299cb9e72b4ae7da..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/assets/css/contact.css
+++ /dev/null
@@ -1,39 +0,0 @@
-.Contact {
-  max-width: 30rem;
-  margin: 1.5rem auto;
-}
-
-.Contact-group {
-  list-style-type: none;
-  margin: 0;
-  padding: 0;
-}
-
-.Contact-hidden {
-  display: none;
-}
-
-.Contact-item {
-  display: flex;
-  flex-wrap: wrap;
-  justify-content: space-between;
-  margin: 0.5rem 0;
-}
-
-.Contact-label {
-  flex-basis: 5rem;
-}
-
-.Contact-input {
-  flex-grow: 1;
-  flex-basis: 15rem;
-}
-
-.Contact-input--textbox {
-  resize: vertical;
-  height: 5rem;
-}
-
-.Contact-button {
-  margin-left: auto;
-}
diff --git a/web/themes/hugo-flex/assets/css/soundcloud.css b/web/themes/hugo-flex/assets/css/soundcloud.css
deleted file mode 100644
index 69fbfb2768e8122cc985615fd64624b6ae622d67..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/assets/css/soundcloud.css
+++ /dev/null
@@ -1,26 +0,0 @@
-.Soundcloud {
-  height: 166px;
-}
-
-.Soundcloud:empty {
-  display: none;
-}
-
-.Soundcloud-iframe {
-  height: 100%;
-  width: 100%;
-  border: 0;
-}
-
-.Soundcloud-player {
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-  width: 100%;
-  height: 100%;
-  border: 0.1rem solid lightgray;
-  border-radius: 0.3rem;
-  background: whitesmoke;
-  cursor: pointer;
-}
diff --git a/web/themes/hugo-flex/assets/js/soundcloud.js b/web/themes/hugo-flex/assets/js/soundcloud.js
deleted file mode 100644
index 22c425b47c396dc71a6160acb4a01d999fa47b8b..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/assets/js/soundcloud.js
+++ /dev/null
@@ -1,20 +0,0 @@
-const soundcloud = (() => {
-  for (const wrapper of document.querySelectorAll(".Soundcloud")) {
-    const iframe = document.createElement("iframe");
-    iframe.className = "Soundcloud-iframe";
-    iframe.setAttribute("src", `https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/${wrapper.getAttribute('data-id')}&show_comments=false`);
-    const link = document.createElement("a");
-    link.setAttribute("href", "https://soundcloud.com/pages/cookies");
-    link.textContent = "cookie policy";
-    link.onclick = e => e.stopPropagation();
-    link.onkeydown = e => e.stopPropagation();
-    const player = document.createElement("div");
-    player.className = "Soundcloud-player";
-    player.setAttribute("tabindex", "0");
-    player.textContent = 'Load player';
-    player.appendChild(link);
-    player.onclick = () => wrapper.replaceChild(iframe, player);
-    player.onkeydown = e => { if (e.keyCode == 13) wrapper.replaceChild(iframe, player) };
-    wrapper.appendChild(player);
-  };
-})();
diff --git a/web/themes/hugo-flex/assets/xml/base.tpl.xml b/web/themes/hugo-flex/assets/xml/base.tpl.xml
deleted file mode 100644
index de6aaf6242691ea8b7b007964ee994c7d871dab4..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/assets/xml/base.tpl.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-{{ safeHTML `<?xml version="1.0" encoding="utf-8" ?>` }}
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-  <xsl:output method="html" doctype-system="about:legacy-compat" />
-  <xsl:template match="/rss/channel">
-    <html lang="{{ site.LanguageCode }}">
-      <head>
-        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-        {{ hugo.Generator }}
-        <title><xsl:value-of select="title" /></title>
-        {{ $site_css := (.Scratch.Get "css").base }}
-        <link rel="stylesheet" href="{{ $site_css.Permalink }}" integrity="{{ $site_css.Data.Integrity }}" />
-      </head>
-      <body>
-        <nav class="u-background">
-          <div class="u-wrapper">
-            <ul class="Banner">
-              <li class="Banner-item Banner-item--title">
-                <a class="Banner-link u-clickable" href="{{ absURL nil }}">{{ site.Title }}</a>
-              </li>
-              {{ range site.Menus.nav }}
-                <li class="Banner-item">
-                  <a class="Banner-link u-clickable" href="{{ absURL .URL }}">{{ .Name }}</a>
-                </li>
-              {{ end }}
-            </ul>
-          </div>
-        </nav>
-        <main>
-          <div class="u-wrapper">
-            <div class="u-padding">
-              <h2 class="Heading-title">
-                <a class="Heading-link u-clickable" href="{link}" rel="bookmark"><xsl:value-of select="title" /></a>
-              </h2>
-              {{ with site.Params.rss }}
-                <p>
-                  {{ safeHTML . }}
-                </p>
-              {{ end }}
-            </div>
-          </div>
-        </main>
-        {{ with site.Params.footer }}
-          <footer class="Footer">
-            <div class="u-wrapper">
-              <div class="u-padding">
-                {{ safeHTML . }}
-              </div>
-            </div>
-          </footer>
-        {{ end }}
-      </body>
-    </html>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/web/themes/hugo-flex/config.yaml b/web/themes/hugo-flex/config.yaml
deleted file mode 100644
index ac72d507f23e6f61e68fa112207c3a57765bd84f..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/config.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
-params:
-  color: teal           # Any color in CSS syntax
-  width: 42rem          # Any length in CSS syntax
-  footer: >-            # A hardcoded space is needed before each html element
-    Except where otherwise noted, content on this site is licensed under a &#32;
-    <a href="http://creativecommons.org/licenses/by/4.0/" rel="license">Creative
-    Commons Attribution 4.0 International License</a>.
-  rss: To subscribe to this RSS feed, copy its address and paste it into your
-    favorite feed reader.
-  summaries: false      # Set to true to show summaries of posts on homepage
-  divider: \a0          # Set to false to remove divider below posts on homepage
-  schema: false         # Set to true to add Schema.org metadata
-  opengraph: false      # Set to true to add Open Graph metadata
-  twittercards: false   # Set to true to add Twitter Cards metadata
-  utterances:
-    repo:               # Set to Utterances repo URL to add Utterances comments
-    issueterm: pathname
-    theme: github-light
-  netlify:
-    honeypot: false     # Set to true to add honeypot field in contact form
-    recaptcha: false    # Set to true to add recaptcha challenge in contact form
-  # css:                # Uncomment to add custom CSS from a list of files
-  #   - css/foo.css
-  #   - bar.css
-  # js:                 # Uncomment to add custom JS from a list of files
-  #   - js/foo.js
-  #   - bar.js
-
-
-menu:
-  nav:
-  - name: About
-    url: about/
-    weight: 1
-  - name: Posts
-    url: posts/
-    weight: 2
-  - name: Tags
-    url: tags/
-    weight: 3
-  - name: Categories
-    url: categories/
-    weight: 4
-  - name: RSS
-    url: index.xml
-    weight: 5
\ No newline at end of file
diff --git a/web/themes/hugo-flex/images/screenshot.png b/web/themes/hugo-flex/images/screenshot.png
deleted file mode 100644
index de05a3c8b9d4c6587339e8cfad42fea79ffb7a32..0000000000000000000000000000000000000000
Binary files a/web/themes/hugo-flex/images/screenshot.png and /dev/null differ
diff --git a/web/themes/hugo-flex/images/tn.png b/web/themes/hugo-flex/images/tn.png
deleted file mode 100644
index bbd09af8452d535cc1ffd22e7f51aef21f413e08..0000000000000000000000000000000000000000
Binary files a/web/themes/hugo-flex/images/tn.png and /dev/null differ
diff --git a/web/themes/hugo-flex/layouts.test/404.html b/web/themes/hugo-flex/layouts.test/404.html
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/web/themes/hugo-flex/layouts.test/_default/baseof.html b/web/themes/hugo-flex/layouts.test/_default/baseof.html
deleted file mode 100644
index 0a5d1f7329ba493ecdcb399474f814c77b0c50fb..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts.test/_default/baseof.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="{{ .Site.Language.Lang }}">
-    {{- partial "head.html" . -}}
-    <body>
-        {{- partial "header.html" . -}}
-        <main id="content">
-        {{- block "main" . }}{{- end }}
-        </main>
-        {{- partial "footer.html" . -}}
-    </body>
-</html>
diff --git a/web/themes/hugo-flex/layouts.test/_default/li.html b/web/themes/hugo-flex/layouts.test/_default/li.html
deleted file mode 100644
index f418cb93d0234d773b3611d0cd93bcd9fa76e08e..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts.test/_default/li.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<li>
-    <a href="{{ .Permalink }}">
-        {{ .Title }}
-        <small><time>{{ .Date | time.Format (i18n "posts.date") }}</time></small>
-    </a>
-</li>
diff --git a/web/themes/hugo-flex/layouts.test/_default/list.html b/web/themes/hugo-flex/layouts.test/_default/list.html
deleted file mode 100644
index 97af0e385ef9a40c6f83ec657813b41906e714b5..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts.test/_default/list.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{{ define "main" }}
-{{- partial "posts.html" . -}}
-{{ end }}
diff --git a/web/themes/hugo-flex/layouts.test/_default/rss.xml b/web/themes/hugo-flex/layouts.test/_default/rss.xml
deleted file mode 100644
index 4acceddbccfa8caf7aa7d1d8fd51c8ccf1482e62..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts.test/_default/rss.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-{{- $pctx := . -}}
-{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
-{{- $pages := slice -}}
-{{- if or $.IsHome $.IsSection -}}
-{{- $pages = $pctx.RegularPages -}}
-{{- else -}}
-{{- $pages = $pctx.Pages -}}
-{{- end -}}
-{{- $limit := .Site.Config.Services.RSS.Limit -}}
-{{- if ge $limit 1 -}}
-{{- $pages = $pages | first $limit -}}
-{{- end -}}
-{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>{{ if eq  .Title  .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
-    <link>{{ .Permalink }}</link>
-    <description>Recent content {{ if ne  .Title  .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
-    <generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
-    <language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
-    <managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
-    <webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
-    <copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
-    <lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
-    {{ with .OutputFormats.Get "RSS" }}
-	{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
-    {{ end }}
-    {{ range where .Site.Pages "Kind" "page" }}
-    {{ if or (eq .Section "posts") (eq .Section "post") }}
-    <item>
-      <title>{{ .Title }}</title>
-      <link>{{ .Permalink }}</link>
-      <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
-      {{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
-      <guid>{{ .Permalink }}</guid>
-      <description>{{ .Content | html }}</description>
-    </item>
-    {{ end }}
-    {{ end }}
-  </channel>
-</rss>
diff --git a/web/themes/hugo-flex/layouts.test/_default/single.html b/web/themes/hugo-flex/layouts.test/_default/single.html
deleted file mode 100644
index 281e0644bc18bbc83a56b2ee338b76f918c7d88e..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts.test/_default/single.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{{ define "main" }}
-<article>
-    <header id="post-header">
-        <h1>{{ .Title }}</h1>
-        <div>
-        {{- if isset .Params "date" -}}
-            {{ if eq .Lastmod .Date }}
-                <time>{{ .Date | time.Format (i18n "post.created") }}</time>
-            {{ else }}
-                <time>{{ .Lastmod | time.Format (i18n "post.updated") }}</time>
-            {{ end }}
-        {{- end -}}
-        </div>
-    </header>
-    {{- .Content -}}
-</article>
-{{ end }}
diff --git a/web/themes/hugo-flex/layouts.test/_default/taxonomy.html b/web/themes/hugo-flex/layouts.test/_default/taxonomy.html
deleted file mode 100644
index 86677c22bebafa5094f5a7aee4a519b525c8b156..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts.test/_default/taxonomy.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{{ define "main" }}
-<h3>{{ .Title }}</h3>
-<ul id="posts">
-{{- range .Pages }}
-    {{ .Render "li" }}
-{{- end }}
-</ul>
-{{ end }}
diff --git a/web/themes/hugo-flex/layouts.test/index.html b/web/themes/hugo-flex/layouts.test/index.html
deleted file mode 100644
index 9983b08160deb42e133ae4ecf205442907eca1e8..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts.test/index.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{{ define "main" }}
-{{ .Content }}
-{{ end }}
diff --git a/web/themes/hugo-flex/layouts.test/partials/footer.html b/web/themes/hugo-flex/layouts.test/partials/footer.html
deleted file mode 100644
index 73420ef3dd1c2453227607dc6bec59122a3357d6..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts.test/partials/footer.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<footer id="footer">
-    {{ .Site.Params.copyright }}
-</footer>
diff --git a/web/themes/hugo-flex/layouts.test/partials/head.html b/web/themes/hugo-flex/layouts.test/partials/head.html
deleted file mode 100644
index bb7ef8bdcc7780ae599013d435aa4e893f24311d..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts.test/partials/head.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    {{ with .Site.Params.description -}}
-    <meta name="description" content="{{ . }}">
-    {{ end }}
-    {{ printf `<link rel="shortcut icon" href="%s">` ("favicon.ico" | absURL) | safeHTML }}
-    {{ with .OutputFormats.Get "rss" -}}
-        {{ printf `<link rel="%s" type="%s" href="%s" title="%s">` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
-    {{ end -}}
-
-    {{ $resources := slice -}}
-
-    {{ $resources = $resources | append (resources.Get "css/main.css") -}}
-
-    {{ $resources = $resources | append (resources.Get "css/min770px.css") -}}
-
-    {{ $dark := .Site.Params.dark | default "auto" -}}
-    {{ if not (eq $dark "off") -}}
-        {{ $resources = $resources | append (resources.Get "css/dark.css" | resources.ExecuteAsTemplate "dark.css" .) -}}
-    {{ end -}}
-
-    {{ if .Site.Params.highlight -}}
-        {{ $resources = $resources | append (resources.Get "css/syntax.css") -}}
-    {{ end -}}
-
-    {{ $css := $resources | resources.Concat "css/style.css" | minify }}
-    {{ printf `<link rel="stylesheet" href="%s">` $css.RelPermalink | safeHTML }}
-
-    <link rel="canonical" href="{{ .Permalink }}" />
-    <title>{{ .Title }}</title>
-</head>
diff --git a/web/themes/hugo-flex/layouts.test/partials/header.html b/web/themes/hugo-flex/layouts.test/partials/header.html
deleted file mode 100644
index 9a6644970d96946ea006770b829942281cdde942..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts.test/partials/header.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<header id="banner">
-    <h2><a href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a></h2>
-    <nav>
-        <ul>
-            {{ range .Site.Menus.main.ByWeight -}}
-            <li>
-                {{ .Pre }}<a href="{{ .URL }}" title="{{ .Title }}">{{- .Name -}}</a>{{ .Post }}
-            </li>
-            {{- end }}
-        </ul>
-    </nav>
-</header>
diff --git a/web/themes/hugo-flex/layouts.test/partials/posts.html b/web/themes/hugo-flex/layouts.test/partials/posts.html
deleted file mode 100644
index a741908be82679f1e95b89fcdd3b343f73b4cd9c..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts.test/partials/posts.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<h3>{{ i18n "posts.title" }}</h3>
-<ul id="posts">
-{{- range where site.RegularPages "Type" "in" site.Params.mainSections }}
-    {{ .Render "li" }}
-{{- end }}
-</ul>
diff --git a/web/themes/hugo-flex/layouts.test/shortcodes/toc.html b/web/themes/hugo-flex/layouts.test/shortcodes/toc.html
deleted file mode 100644
index 22da6e7b469787f786aa851804648c07872a34b3..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts.test/shortcodes/toc.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<aside id="toc">
-    <h4>Table of Contents</h4>
-    {{ .Page.TableOfContents }}
-</aside>
diff --git a/web/themes/hugo-flex/layouts/_default/baseof.html b/web/themes/hugo-flex/layouts/_default/baseof.html
deleted file mode 100644
index bc7f8097b4fadaa4dea4b08d1d103bba8921621b..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/_default/baseof.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE html>
-<html lang="{{ site.LanguageCode }}">
-
-<head>
-  {{ partial "meta.html" . }}
-  {{ partial "title.html" . }}
-  {{ partial "link.html" . }}
-  {{ partial "load_site_assets.html" . }}
-  {{ block "load_page_assets" . }}
-    {{ with .Content }}{{ end }}
-  {{ end }}
-  {{ partial "assets.html" . }}
-</head>
-
-<body>
-  {{ partialCached "banner.html" . }}
-  <main>
-    <div class="u-wrapper">
-      <div class="u-padding">
-        {{ block "main" . }}{{ end }}
-      </div>
-    </div>
-  </main>
-  {{ partialCached "footer.html" . }}
-</body>
-
-</html>
diff --git a/web/themes/hugo-flex/layouts/_default/home.html b/web/themes/hugo-flex/layouts/_default/home.html
deleted file mode 100644
index 02bbee5d965d46b8ebea7fcdd5c2c99278b21eca..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/_default/home.html
+++ /dev/null
@@ -1,51 +0,0 @@
-{{ define "load_page_assets" }}
-
-  {{ $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
-
-  {{ $paginator := .Paginate $pages }}
-
-  {{ range $paginator.Pages }}
-    {{ with .Content }}{{ end }}
-    {{ $page_css := .Scratch.Get "css" }}
-    {{ with $page_css }}
-      {{ $css_list := $.Scratch.Get "css" }}
-      {{ . | merge $css_list | $.Scratch.Set "css" }}
-    {{ end }}
-    {{ $page_js := .Scratch.Get "js" }}
-    {{ with $page_js }}
-      {{ $js_list := $.Scratch.Get "js" }}
-      {{ . | merge $js_list | $.Scratch.Set "js" }}
-    {{ end }}
-  {{ end }}
-
-  {{ $paginator | .Scratch.Set "paginator" }}
-
-{{ end }}
-
-{{ define "main" }}
-
-  {{ $paginator := .Scratch.Get "paginator" }}
-
-  {{ range $paginator.Pages }}
-    <article>
-      {{ partial "heading.html" . }}
-      {{ if site.Params.summaries }}
-        {{ .Summary }}
-        {{ if .Truncated }}
-          <p>
-            <a class="u-clickable" href="{{ .RelPermalink }}">Read More…</a>
-          </p>
-        {{ end }}
-      {{ else }}
-        {{ .Content }}
-      {{ end }}
-      {{ partial "tags.html" . }}
-    </article>
-    {{ with site.Params.divider }}
-      <div class="Divider"></div>
-    {{ end }}
-  {{ end }}
-
-  {{ partial "pagination.html" . }}
-
-{{ end }}
diff --git a/web/themes/hugo-flex/layouts/_default/list.html b/web/themes/hugo-flex/layouts/_default/list.html
deleted file mode 100644
index dca50cc2576b2ab1f5e0afcc2424ecfe076bc30d..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/_default/list.html
+++ /dev/null
@@ -1,18 +0,0 @@
-{{ define "main" }}
-
-  {{ partial "heading.html" . }}
-
-  {{ .Content }}
-
-  {{ range .Pages.GroupByPublishDate "2006" }}
-    <h3>{{ .Key }}</h3>
-    <ul>
-      {{ range .Pages }}
-        <li>
-          {{ .PublishDate.Format "2006-01-02" }} – <a href="{{ .RelPermalink }}">{{ .Title }}</a>
-        </li>
-      {{ end }}
-    </ul>
-  {{ end }}
-
-{{ end }}
diff --git a/web/themes/hugo-flex/layouts/_default/rss.xml b/web/themes/hugo-flex/layouts/_default/rss.xml
deleted file mode 100644
index ea9e46a7181c364c415debf4a04bbd20620de31f..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/_default/rss.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-{{- $base_xml := resources.Get "xml/base.tpl.xml" | resources.ExecuteAsTemplate "xml/base.xml" . | minify }}
-{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
-{{- $limit := .Site.Config.Services.RSS.Limit }}
-{{- if ge $limit 1 }}
-  {{- $pages = $pages | first $limit }}
-{{- end }}
-{{- safeHTML `<?xml version="1.0" encoding="utf-8" ?>` }}
-{{ printf `<?xml-stylesheet type="text/xsl" href=%q ?>` $base_xml.Permalink | safeHTML }}
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>{{ if eq .Title site.Title }}{{ site.Title }}{{ else }}{{ with .Title }}{{ . }} on {{ end }}{{ site.Title }}{{ end }}</title>
-    <link>{{ .Permalink }}</link>
-    <description>Recent content {{ if ne .Title site.Title }}{{ with .Title }}in {{ . }} {{ end }}{{ end }}on {{ site.Title }}</description>
-    <generator>Hugo -- gohugo.io</generator>{{ with site.LanguageCode }}
-    <language>{{ . }}</language>{{ end }}{{ with site.Author.email }}
-    <managingEditor>{{ . }}{{ with site.Author.name }} ({{ . }}){{ end }}</managingEditor>{{ end }}{{ with site.Author.email }}
-    <webMaster>{{ . }}{{ with site.Author.name }} ({{ . }}){{ end }}</webMaster>{{ end }}{{ with site.Copyright }}
-    <copyright>{{ . }}</copyright>{{ end }}{{ with .Date | default nil }}
-    <lastBuildDate>{{ .Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}{{ with .OutputFormats.Get "RSS" }}
-    {{ printf `<atom:link href=%q rel="self" type=%q />` .Permalink .MediaType | safeHTML }}{{ end }}{{ range $pages }}
-    <item>
-      <title>{{ .Title }}</title>
-      <link>{{ .Permalink }}</link>{{ with .PublishDate | default nil }}
-      <pubDate>{{ .Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>{{ end }}{{ with site.Author.email }}
-      <author>{{ . }}{{ with site.Author.name }} ({{ . }}){{ end }}</author>{{ end }}
-      <guid>{{ .Permalink }}</guid>
-      <description>{{ html .Content }}</description>
-    </item>{{ end }}
-  </channel>
-</rss>
diff --git a/web/themes/hugo-flex/layouts/_default/single.html b/web/themes/hugo-flex/layouts/_default/single.html
deleted file mode 100644
index f1c4fc53005fdaedbba4b6f0da512ba48618370d..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/_default/single.html
+++ /dev/null
@@ -1,10 +0,0 @@
-{{ define "main" }}
-
-  <article>
-    {{ partial "heading.html" . }}
-    {{ .Content }}
-    {{ partial "tags.html" . }}
-    {{ partial "comments.html" . }}
-  </article>
-
-{{ end }}
diff --git a/web/themes/hugo-flex/layouts/_default/terms.html b/web/themes/hugo-flex/layouts/_default/terms.html
deleted file mode 100644
index a93860a8ecf18f6c2ddaba5790060f1b285fc689..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/_default/terms.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{{ define "main" }}
-
-  {{ partial "heading.html" . }}
-
-  {{ .Content }}
-
-  <ul class="Tags">
-    {{ range .Pages }}
-      <li class="Tags-item u-background">
-        <a class="Tags-link u-clickable" href="{{ .RelPermalink }}">{{ .Title }}</a>
-      </li>
-    {{ end }}
-  </ul>
-
-{{ end }}
diff --git a/web/themes/hugo-flex/layouts/partials/assets.html b/web/themes/hugo-flex/layouts/partials/assets.html
deleted file mode 100644
index 43a533be0a5a630ab2aef1dc4f1705172804364b..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/partials/assets.html
+++ /dev/null
@@ -1,7 +0,0 @@
-{{ range .Scratch.GetSortedMapValues "css" }}
-  <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
-{{ end }}
-
-{{ range .Scratch.GetSortedMapValues "js" }}
-  <script defer src="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous"></script>
-{{ end }}
\ No newline at end of file
diff --git a/web/themes/hugo-flex/layouts/partials/banner.html b/web/themes/hugo-flex/layouts/partials/banner.html
deleted file mode 100644
index dc123b8c1027a668761271772129203ec0075959..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/partials/banner.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<nav class="u-background">
-  <div class="u-wrapper">
-    <ul class="Banner">
-      <li class="Banner-item Banner-item--title">
-        <a class="Banner-link u-clickable" href="{{ relURL nil }}">{{ site.Title }}</a>
-      </li>
-      {{ range site.Menus.nav }}
-        <li class="Banner-item">
-          <a class="Banner-link u-clickable" href="{{ relURL .URL }}">{{ .Name }}</a>
-        </li>
-      {{ end }}
-    </ul>
-  </div>
-</nav>
\ No newline at end of file
diff --git a/web/themes/hugo-flex/layouts/partials/comments.html b/web/themes/hugo-flex/layouts/partials/comments.html
deleted file mode 100644
index 0f6b002928752d9eea0157bc8ca57d3616577ebf..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/partials/comments.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{{ with site.Params.utterances }}
-  {{ if $.Type | in site.Params.mainSections | and .repo }}
-    <script src="https://utteranc.es/client.js" repo="{{ .repo }}" issue-term="{{ .issueterm }}" theme="{{ .theme }}" crossorigin="anonymous" async></script>
-  {{end}}
-{{end}}
\ No newline at end of file
diff --git a/web/themes/hugo-flex/layouts/partials/footer.html b/web/themes/hugo-flex/layouts/partials/footer.html
deleted file mode 100644
index 0c631d643d64b45c6fd998d7983639de250d5813..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/partials/footer.html
+++ /dev/null
@@ -1,9 +0,0 @@
-{{ with site.Params.footer }}
-  <footer class="Footer">
-    <div class="u-wrapper">
-      <div class="u-padding">
-        {{ safeHTML . }}
-      </div>
-    </div>
-  </footer>
-{{ end }}
\ No newline at end of file
diff --git a/web/themes/hugo-flex/layouts/partials/heading.html b/web/themes/hugo-flex/layouts/partials/heading.html
deleted file mode 100644
index e62f2162a2031d43d4ece693bea2655461a7399a..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/partials/heading.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<header class="Heading">
-  <h2 class="Heading-title">
-    <a class="Heading-link u-clickable" href="{{ .RelPermalink }}" rel="bookmark">{{ .Title }}</a>
-  </h2>
-  {{ with .PublishDate | default nil }}
-    <time datetime="{{ .Format "2006-01-02T15:04:05Z07:00" }}">
-      {{- .Format "2 January, 2006" -}}
-    </time>
-  {{ end }}
-</header>
\ No newline at end of file
diff --git a/web/themes/hugo-flex/layouts/partials/link.html b/web/themes/hugo-flex/layouts/partials/link.html
deleted file mode 100644
index 8a6ac9c1cc2a7fc7b0cb715ad6607427f32a10cc..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/partials/link.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<link rel="canonical" href="{{ .RelPermalink }}">
-
-{{ range .AlternativeOutputFormats }}
-  {{ printf "<link rel=%q type=%q href=%q title=%q>" .Rel .MediaType .RelPermalink site.Title | safeHTML }}
-{{ end }}
\ No newline at end of file
diff --git a/web/themes/hugo-flex/layouts/partials/load_site_assets.html b/web/themes/hugo-flex/layouts/partials/load_site_assets.html
deleted file mode 100644
index 8f3ee7c962ab7975fd6e8acdfd290376b9050040..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/partials/load_site_assets.html
+++ /dev/null
@@ -1,24 +0,0 @@
-{{ $base_css := resources.Get "css/base.tpl.css" | resources.ExecuteAsTemplate "css/base.css" . }}
-
-{{ $site_css := $base_css }}
-
-{{ with site.Params.css }}
-  {{ $css_list := slice $site_css }}
-  {{ range . }}
-    {{ $custom_css := resources.Get . }}
-    {{ $css_list = $css_list | append $custom_css }}
-  {{ end }}
-  {{ $site_css = $css_list | resources.Concat "css/base.css" }}
-{{ end }}
-
-{{ minify $site_css | fingerprint | .Page.Scratch.SetInMap "css" "base" }}
-
-{{ with site.Params.js }}
-  {{ $js_list := slice }}
-  {{ range . }}
-    {{ $custom_js := resources.Get . }}
-    {{ $js_list = $js_list | append $custom_js }}
-  {{ end }}
-  {{ $site_js := $js_list | resources.Concat "js/base.js" }}
-  {{ minify $site_js | fingerprint | $.Page.Scratch.SetInMap "js" "base" }}
-{{ end }}
\ No newline at end of file
diff --git a/web/themes/hugo-flex/layouts/partials/meta.html b/web/themes/hugo-flex/layouts/partials/meta.html
deleted file mode 100644
index 6a1448e394e96c4e3d60036f0711b35558699a42..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/partials/meta.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<meta charset="utf-8">
-
-<meta name="viewport" content="width=device-width, initial-scale=1.0">
-
-{{ with .Description }}
-  <meta name="description" content="{{ . }}">
-{{ else }}
-  {{ if .IsPage }}
-    <meta name="description" content="{{ .Summary }}">
-  {{ else }}
-    {{ with site.Params.description }}
-      <meta name="description" content="{{ . }}">
-    {{ end }}
-  {{ end }}
-{{ end }}
-
-{{ if site.Params.schema }}
-  {{ template "_internal/schema.html" . }}
-{{ end }}
-
-{{ if site.Params.opengraph }}
-  {{ template "_internal/opengraph.html" . }}
-{{ end }}
-
-{{ if site.Params.twittercards }}
-  {{ template "_internal/twitter_cards.html" . }}
-{{ end }}
-
-{{ hugo.Generator }}
\ No newline at end of file
diff --git a/web/themes/hugo-flex/layouts/partials/pagination.html b/web/themes/hugo-flex/layouts/partials/pagination.html
deleted file mode 100644
index 25fca9742a7fef60dce54f35a6a04bd4cfa23be1..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/partials/pagination.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{{ $paginator := .Scratch.Get "paginator" }}
-
-{{ if gt $paginator.TotalPages 1 }}
-  <nav>
-    {{ with $paginator.Next }}
-      <a class="Pagination u-clickable" href="{{ .URL }}" rel="prev">« Previous</a>
-    {{ end }}
-    {{ with $paginator.Prev }}
-      <a class="Pagination Pagination--right u-clickable" href="{{ .URL }}" rel="next">Next »</a>
-    {{ end }}
-  </nav>
-{{ end }}
\ No newline at end of file
diff --git a/web/themes/hugo-flex/layouts/partials/tags.html b/web/themes/hugo-flex/layouts/partials/tags.html
deleted file mode 100644
index 198ceca46f25cb5cdca5f61983651428abaf0179..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/partials/tags.html
+++ /dev/null
@@ -1,23 +0,0 @@
-{{ $taxonomy_list := slice }}
-
-{{ range $taxonomy, $_ := site.Taxonomies }}
-  {{ $taxonomy_list = $taxonomy_list | append $taxonomy }}
-{{ end }}
-
-{{ $taxonomy_is_used_list := apply $taxonomy_list "isset" .Params "." }}
-
-{{ if true | in $taxonomy_is_used_list }}
-  <footer>
-    {{ range $taxonomy := $taxonomy_list }}
-      {{ if isset $.Params $taxonomy }}
-        <ul class="Tags">
-          {{ range $.GetTerms $taxonomy }}
-            <li class="Tags-item u-background">
-              <a class="Tags-link u-clickable" href="{{ .RelPermalink }}" rel="tag">{{ .LinkTitle }}</a>
-            </li>
-          {{ end }}
-        </ul>
-      {{ end }}
-    {{ end }}
-  </footer>
-{{ end }}
\ No newline at end of file
diff --git a/web/themes/hugo-flex/layouts/partials/title.html b/web/themes/hugo-flex/layouts/partials/title.html
deleted file mode 100644
index 7ed2b42e4fc8534449f95995b226e661a19d5487..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/partials/title.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<title>
-  {{- if eq .Title site.Title -}}
-    {{ site.Title }}
-  {{- else -}}
-    {{ with .Title }}{{ . }} | {{ end }}{{ site.Title }}
-  {{- end -}}
-</title>
\ No newline at end of file
diff --git a/web/themes/hugo-flex/layouts/shortcodes/contact.html b/web/themes/hugo-flex/layouts/shortcodes/contact.html
deleted file mode 100644
index f6d800a7b6e60cf729135351771233e623d17d75..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/shortcodes/contact.html
+++ /dev/null
@@ -1,32 +0,0 @@
-{{ resources.Get "css/contact.css" | minify | fingerprint | .Page.Scratch.SetInMap "css" "contact" }}
-
-<form class="Contact" name="contact" method="POST" data-netlify="true"{{ if site.Params.netlify.honeypot }} data-netlify-honeypot="bot"{{ end }}{{ if site.Params.netlify.recaptcha }} data-netlify-recaptcha="true"{{ end }}{{ with .Get 0 }} action="{{ . }}"{{ end }}>
-  <ul class="Contact-group">
-    {{ if site.Params.netlify.honeypot }}
-      <li class="Contact-hidden">
-        <label>Don’t fill this out if you're human:</label>
-        <input name="bot">
-      </li>
-    {{ end }}
-    <li class="Contact-item">
-      <label class="Contact-label" for="Contact-name">Name:</label>
-      <input class="Contact-input" id="Contact-name" type="text" name="name" autofocus>
-    </li>
-    <li class="Contact-item">
-      <label class="Contact-label" for="Contact-email">Email:</label>
-      <input class="Contact-input" id="Contact-email" type="email" name="email">
-    </li>
-    <li class="Contact-item">
-      <label class="Contact-label" for="Contact-subject">Subject:</label>
-      <input class="Contact-input" id="Contact-subject" type="text" name="subject">
-    </li>
-    <li class="Contact-item">
-      <label class="Contact-label" for="Contact-message">Message:</label>
-      <textarea class="Contact-input Contact-input--textbox" id="Contact-message" name="message"></textarea>
-    </li>
-    <li class="Contact-item">
-      <button class="Contact-button" type="submit">Send</button>
-    </li>
-  </ul>
-  {{ if site.Params.netlify.recaptcha }}<div data-netlify-recaptcha="true"></div>{{ end }}
-</form>
diff --git a/web/themes/hugo-flex/layouts/shortcodes/soundcloud.html b/web/themes/hugo-flex/layouts/shortcodes/soundcloud.html
deleted file mode 100644
index b3d28016a6d95a23d0e32df1bbfacbe2dd9b4b90..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/layouts/shortcodes/soundcloud.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{{ resources.Get "css/soundcloud.css" | minify | fingerprint | .Page.Scratch.SetInMap "css" "soundcloud" }}
-
-{{ resources.Get "js/soundcloud.js" | minify | fingerprint | .Page.Scratch.SetInMap "js" "soundcloud" }}
-
-<div class="Soundcloud" data-id="{{ .Get 0 }}"></div>
diff --git a/web/themes/hugo-flex/theme.toml b/web/themes/hugo-flex/theme.toml
deleted file mode 100644
index 0009ae6e1be6dbb43f7cf5fcffe25079fe637559..0000000000000000000000000000000000000000
--- a/web/themes/hugo-flex/theme.toml
+++ /dev/null
@@ -1,13 +0,0 @@
-name = "Hugo Flex"
-license = "Apache-2.0"
-licenselink = "https://github.com/de-souza/hugo-flex/blob/master/LICENSE"
-description = "A lightweight Hugo theme leveraging CSS Flexbox"
-homepage = "https://github.com/de-souza/hugo-flex/"
-demosite = "https://de-souza.github.io/hugo-flex/"
-tags = ["responsive", "minimal", "flexbox", "no-javascript"]
-features = ["posts"]
-min_version = "0.65"
-
-[author]
-  name = "Léo De Souza"
-  homepage = "https://github.com/de-souza/"
diff --git a/web/themes/paige/.github/workflows/pages.yml b/web/themes/paige/.github/workflows/pages.yml
deleted file mode 100644
index bd73265fe964df63a6477b2d5d82333559bcdbdf..0000000000000000000000000000000000000000
--- a/web/themes/paige/.github/workflows/pages.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-# Sample workflow for building and deploying a Hugo site to GitHub Pages
-name: Deploy Hugo site to Pages
-
-on:
-  # Runs on pushes targeting the default branch
-  push:
-    branches: ["master"]
-
-  # Allows you to run this workflow manually from the Actions tab
-  workflow_dispatch:
-
-# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
-permissions:
-  contents: read
-  pages: write
-  id-token: write
-
-# Allow one concurrent deployment
-concurrency:
-  group: "pages"
-  cancel-in-progress: true
-
-# Default to bash
-defaults:
-  run:
-    shell: bash
-
-jobs:
-  # Build job
-  build:
-    runs-on: ubuntu-latest
-    env:
-      HUGO_VERSION: 0.102.3
-    steps:
-      - name: Install Hugo CLI
-        run: |
-          wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_Linux-64bit.deb \
-          && sudo dpkg -i ${{ runner.temp }}/hugo.deb
-      - name: Checkout
-        uses: actions/checkout@v3
-        with:
-          submodules: recursive
-      - name: Setup Pages
-        id: pages
-        uses: actions/configure-pages@v2
-      - name: Build with Hugo
-        env:
-          # For maximum backward compatibility with Hugo modules
-          HUGO_ENVIRONMENT: production
-          HUGO_ENV: production
-        run: |
-          cd exampleSite
-          hugo --minify --baseURL ${{ steps.pages.outputs.base_url }} --themesDir ../..
-      - name: Upload artifact
-        uses: actions/upload-pages-artifact@v1
-        with:
-          path: ./exampleSite/public
-
-  # Deployment job
-  deploy:
-    environment:
-      name: github-pages
-      url: ${{ steps.pages.outputs.base_url }}
-    runs-on: ubuntu-latest
-    needs: build
-    steps:
-      - name: Deploy to GitHub Pages
-        id: deployment
-        uses: actions/deploy-pages@v1
diff --git a/web/themes/paige/LICENSE b/web/themes/paige/LICENSE
deleted file mode 100644
index 4c6930728fc54147b9051dbd4b304c2d1614ceba..0000000000000000000000000000000000000000
--- a/web/themes/paige/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright 2022 Will Faught
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/web/themes/paige/README.md b/web/themes/paige/README.md
deleted file mode 100644
index 117c31abbc6240463fad8f80180b279a7a18387b..0000000000000000000000000000000000000000
--- a/web/themes/paige/README.md
+++ /dev/null
@@ -1,82 +0,0 @@
-# paige
-
-A simple Hugo theme. [Try it out.](https://willfaught.com/paige)
-
-<img src="https://github.com/willfaught/paige/raw/master/images/screenshot.png" style="width: 100%">
-
-## Features
-
-- Blog
-- Facebook sharing support
-- Google Analytics support
-- Landing page
-- Light color scheme
-- Menu navigation
-- Minimal design
-- Responsive, mobile-first layout
-- Sections for other kinds of content
-- Single column presentation
-- Social links
-- Twitter sharing support
-
-## Design
-
-HTML metadata is set automatically. The HTML author is the site author.
-The HTML description is the page description. The HTML keywords is a
-union of the page keywords, tags, and categories. Enhanced Facebook and
-Twitter sharing is enabled. Google Analytics is included at the bottom
-of the body, if configured. You must create favicons yourself.
-
-The HTML title is the page title, followed by a middle dot, followed by
-the site title. If one is missing, the other is used without the middle
-dot. If both are the same, only one is used without the middle dot.
-
-The HTML body can have a header, a body, and a footer. The header has
-the section menus, if any; the page title, if any; the page description,
-if any; and the page date, if any. The body has the page content, if
-any. The footer has the site copyright notice, if any.
-
-The section menus are activated if their path matches the current page.
-Pages in the directory `content/` match the section path `/`. Pages in
-the directory `content/foo/` match the section path `/foo/`. The section
-menu identifiers, names, weights, paths, and order are configured in
-`config.yaml`.
-
-The page date is the publish date, if any; otherwise, it's the creation
-date.
-
-Everything is stacked vertically in one column and aligned to the
-center.
-
-The home page shows the `blurb`, `description`, `greeting`, and `title`
-parameters from `content/_index.md`, the `avatar.jpg` and `cover.jpg`
-images at the site root, and linked icons for all the social sites
-configured in `config.yaml`.
-
-Single pages use the `link` front matter parameter, if any, as the
-reference for an anchor around the page title, if any.
-
-List and term pages show page titles and descriptions per month and year
-in descending order. An empty list has a "Nothing Here" header, and no
-body.
-
-Taxonomy pages list term links in an inline, unordered, sorted list.
-
-The 404 page has a "Not Found" header, and no body.
-
-If `partials/head.html` exists in the site, it is included at the end of
-the head tag. If `partials/body.html` exists in the site, it is included
-at the end of the body tag.
-
-Stock Bootstrap 5.2.2 CSS and JavaScript, and Bootstrap Icons 1.10.2,
-are used for style, functionality, and icons. They're loaded from the
-Bootstrap CDN for every page.
-
-## Configuration
-
-See the example site directory for an example configuration.
-
-## Credits
-
-- Avatar photo by [Yuvraj Singh](https://unsplash.com/photos/ljziSm0DXg8)
-- Cover photo by [Kamran Sabir](https://www.pexels.com/photo/green-lake-surrounded-by-mountain-127753/)
diff --git a/web/themes/paige/archetypes/default.md b/web/themes/paige/archetypes/default.md
deleted file mode 100644
index a4d718f89e305b6e9bf96d4c817bb7bad8890df3..0000000000000000000000000000000000000000
--- a/web/themes/paige/archetypes/default.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-categories: []
-date: {{ .Date }}
-description: ""
-draft: true
-keywords: []
-link: ""
-tags: []
-title: "{{ replace .Name "-" " " | title }}"
----
diff --git a/web/themes/paige/config.toml b/web/themes/paige/config.toml
deleted file mode 100644
index a4adb24046ee8acef8b3cb32064e35706a9e278a..0000000000000000000000000000000000000000
--- a/web/themes/paige/config.toml
+++ /dev/null
@@ -1,4 +0,0 @@
-[module]
-  [module.hugoVersion]
-    extended = true
-    min = "0.101.0"
diff --git a/web/themes/paige/exampleSite/config.yaml b/web/themes/paige/exampleSite/config.yaml
deleted file mode 100644
index 29f6191074661e97eefd409af69c09ed9e30ee4d..0000000000000000000000000000000000000000
--- a/web/themes/paige/exampleSite/config.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-author:
-  email: example@example.com
-  name: Michael Bluth
-baseurl: https://example.com
-copyright: © Michael Bluth
-languagecode: en-us
-enablerobotstxt: true
-markup:
-  goldmark:
-    renderer:
-      unsafe: true
-  highlight:
-    style: vs
-menu:
-  main:
-  - identifier: home
-    name: Home
-    weight: 10
-    url: /
-  - identifier: about
-    name: About
-    weight: 20
-    url: /about/
-  - identifier: blog
-    name: Blog
-    weight: 30
-    url: /blog/
-  - identifier: articles
-    name: Articles
-    weight: 40
-    url: /articles/
-  - identifier: projects
-    name: Projects
-    weight: 50
-    url: /projects/
-  - identifier: categories
-    name: Categories
-    weight: 60
-    url: /categories/
-  - identifier: tags
-    name: Tags
-    weight: 70
-    url: /tags/
-paginate: 50
-permalinks:
-  blog: /blog/:year/:month/:day/:title/
-social:
-  envelope: mailto:example@example.com
-  discord: https://discord.com/users/example
-  github: https://github.com/example
-  facebook: https://facebook.com/example
-  instagram: https://instagram.com/example
-  linkedin: https://www.linkedin.com/in/example
-  reddit: https://reddit.com/u/example
-  twitch: https://www.twitch.tv/example
-  twitter: https://twitter.com/example
-  youtube: https://www.youtube.com/user/example
-theme: paige
-timezone: America/Los_Angeles
-title: No Borders, No Limits
-titlecasestyle: Go
diff --git a/web/themes/paige/exampleSite/content/LICENSE b/web/themes/paige/exampleSite/content/LICENSE
deleted file mode 100644
index 4527efb9c067932d21b145e55cc7a38d58b24c13..0000000000000000000000000000000000000000
--- a/web/themes/paige/exampleSite/content/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Steve Francia
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
diff --git a/web/themes/paige/exampleSite/content/_index.md b/web/themes/paige/exampleSite/content/_index.md
deleted file mode 100644
index 6783288fa99a3ab9fe223a2bebb01664e006b073..0000000000000000000000000000000000000000
--- a/web/themes/paige/exampleSite/content/_index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-blurb: <p class="lead">There's a new daddy in town. A discipline daddy. If I make this comeback, I'll buy you a hundred George Michaels that you can teach to drive! These are my awards, Mother. From Army. The seal is for marksmanship, and the gorilla is for sand racing. We'll have to find something to do so that people can look at you without wanting to kill <a href="https://bluthipsum.com">themselves</a>.</p><p class="lead"><a href="https://github.com/willfaught/paige">A simple Hugo theme.</a></p>
-description: Go ahead, touch the Cornballer
-greeting: You know [best](https://www.youtube.com/watch?v=1WDW8XKEGgU)
-title: No Borders, No Limits
----
diff --git a/web/themes/paige/exampleSite/content/about.md b/web/themes/paige/exampleSite/content/about.md
deleted file mode 100644
index b31bf1da953485da446a4d372f0c07bae585e95b..0000000000000000000000000000000000000000
--- a/web/themes/paige/exampleSite/content/about.md
+++ /dev/null
@@ -1,25 +0,0 @@
-+++
-title = "About"
-description = "Hugo, the world's fastest framework for building websites"
-date = "2019-02-28"
-aliases = ["about-us", "about-hugo", "contact"]
-author = "Hugo Authors"
-+++
-
-Written in Go, Hugo is an open source static site generator available under the [Apache Licence 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows.
-
-Hugo makes use of a variety of open source projects including:
-
-* https://github.com/yuin/goldmark
-* https://github.com/alecthomas/chroma
-* https://github.com/muesli/smartcrop
-* https://github.com/spf13/cobra
-* https://github.com/spf13/viper
-
-Hugo is ideal for blogs, corporate websites, creative portfolios, online magazines, single page applications or even a website with thousands of pages.
-
-Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases.
-
-Websites built with Hugo are extremely fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider.
-
-Learn more and contribute on [GitHub](https://github.com/gohugoio).
diff --git a/web/themes/paige/exampleSite/content/articles/_index.md b/web/themes/paige/exampleSite/content/articles/_index.md
deleted file mode 100644
index d0cf847455262ad740775e08d6235a5e4cdb535f..0000000000000000000000000000000000000000
--- a/web/themes/paige/exampleSite/content/articles/_index.md
+++ /dev/null
@@ -1,3 +0,0 @@
----
-title: Articles
----
diff --git a/web/themes/paige/exampleSite/content/articles/bluth-ipsum.md b/web/themes/paige/exampleSite/content/articles/bluth-ipsum.md
deleted file mode 100644
index 5528e1cb69136fa1cd7260d302d77bda48ab88b0..0000000000000000000000000000000000000000
--- a/web/themes/paige/exampleSite/content/articles/bluth-ipsum.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-categories:
-- bluth
-- ipsum
-date: 2022-09-07T12:45:03-07:00
-description: Helpful dummy text from Arrested Development
-tags:
-- bluth
-- ipsum
-title: Bluth Ipsum
----
-
-Yes, she happens to be more experienced than a normal girl, but sometimes love should be... terrifying. Talk you off what, Pop Pop? Monday morning. COME ON! If I make this comeback, I'll buy you a hundred George Michaels that you can teach to drive! Those are balls. Ohhh little guy. The tears aren't coming. The tears just aren't coming. These are my awards, Mother. From Army. The seal is for marksmanship, and the gorilla is for sand racing. 
-
-Let me take off my assistant's skirt and put on my Barbra-Streisand-in-The-Prince-of-Tides ass-masking therapist pantsuit. Although George Michael had only got to second base, he'd gone in head first, like Pete Rose. Let me give that oatmeal some brown sugar. No! These are just strippers! Look how hot they are! Stop licking my hand, you horse's ass! This is the best free scrapbooking class I've ever taken! 
-
-Bob Loblaw Lobs Law Bomb. But I'm the oldest. The matriarch if you will. See for more good stuff. I don't criticize you! And if you're worried about criticism, sometimes a diet is the best defense. Can't a guy call his mother pretty without it seeming strange? Amen. And how about that little piece of tail on her? Cute! You stay on top of her, Buddy. Don't be afraid to ride her. Hard. Did you know that more frozen bananas are sold right here on this boardwalk than anywhere in the OC? I hear the jury's still out on science. 
-
-I don't want no part of yo' tight-ass country club, ya freak bitch! I just dont want him to point out my cracker ass in front of Ann. Buster's in what we like to call a light to no coma. In layman's terms, it might be considered a very heavy nap. When a.. man.. needs to prove to a woman that he's actually.. \[pause\].. When a man loves a woman.. One of the guys told me to take my head out of my BOTTOM and get back to work...my BOTTOM! Hahahaha. Either I zip down, or he zips up, and that is a mighty long zipper on Mother's Cher jumpsuit. It's a wonderful restaurant! 
-
-There's a new daddy in town. A discipline daddy. I never thought I'd miss a hand so much! 
-
-She's a girl, I need to teach her how to be a woman. Within her lies a queen. Let me out that queen. Fun and failure both start out the same way. I hear the jury's still out on science. 
-
-No borders, no limits... go ahead, touch the Cornballer... you know best? Did you know that more frozen bananas are sold right here on this boardwalk than anywhere on the OC? I'll buy you a hundred George Michaels that you can teach to drive! You can always tell a Milford man. It walked on my pillow! 
-
-I see you've wasted no time in filling my seat hole. It's as Ann as the nose on plain's face. I was once called the worst audience participant Cirque du Soleil ever had. Gosh Mom... after all these years, God's not going to take a call from you. We need a name. Maybe 'Operation Hot Mother'. What, so the guy we are meeting with can't even grow his own hair? COME ON! Tobias Fünke costume. I've always been deeply passionate about nature. Perhaps you remember Neuterfest? *M:* I'll never forget your wedding. 
-
-We'll have to find something to do so that people can look at you without wanting to kill themselves. A lady of the evening. Working girl. She turns illusions for money. When a.. man.. needs to prove to a woman that he's actually.. \[pause\].. When a man loves a woman.. Quicken! Premiere! I'm afraid I'm with Michael on this one. The guy runs a prison, he can have any piece of ass he wants. We'll have to find something to do so that people can look at you without wanting to kill themselves. I'm gonna build me an airport, put my name on it. Why, Michael? So you can fly away from your feelings? 
-
-I \[bleeped\] the business model. Yeah, she had all kinds of orgasms. So did you see the new Poof? His name's Gary, and we don't need anymore lawsuits. Yeah, like anyone would want to R her. Yo quiero leche. Yo quiero leche de madre. Buster's in what we like to call a light to no coma. In layman's terms, it might be considered a very heavy nap.
diff --git a/web/themes/paige/exampleSite/content/blog/_index.md b/web/themes/paige/exampleSite/content/blog/_index.md
deleted file mode 100644
index 8a084d901075c012f34b484ffdc0352f8c1f2b40..0000000000000000000000000000000000000000
--- a/web/themes/paige/exampleSite/content/blog/_index.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-aliases = ["posts", "articles", "blog", "showcase", "docs"]
-title = "Posts"
-author = "Hugo Authors"
-tags = ["index"]
-+++
diff --git a/web/themes/paige/exampleSite/content/blog/emoji-support.md b/web/themes/paige/exampleSite/content/blog/emoji-support.md
deleted file mode 100644
index f17f49a2b2ebf3a204e4a1dff6e4690a4af798c7..0000000000000000000000000000000000000000
--- a/web/themes/paige/exampleSite/content/blog/emoji-support.md
+++ /dev/null
@@ -1,46 +0,0 @@
-+++
-author = "Hugo Authors"
-title = "Emoji Support"
-date = "2019-03-05"
-description = "Guide to emoji usage in Hugo"
-tags = [
-    "emoji",
-]
-+++
-
-Emoji can be enabled in a Hugo project in a number of ways.
-<!--more-->
-The [`emojify`](https://gohugo.io/functions/emojify/) function can be called directly in templates or [Inline Shortcodes](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes).
-
-To enable emoji globally, set `enableEmoji` to `true` in your site's [configuration](https://gohugo.io/getting-started/configuration/) and then you can type emoji shorthand codes directly in content files; e.g.
-
-<p><span class="nowrap"><span class="emojify">🙈</span> <code>:see_no_evil:</code></span>  <span class="nowrap"><span class="emojify">🙉</span> <code>:hear_no_evil:</code></span>  <span class="nowrap"><span class="emojify">🙊</span> <code>:speak_no_evil:</code></span></p>
-<br>
-
-The [Emoji cheat sheet](http://www.emoji-cheat-sheet.com/) is a useful reference for emoji shorthand codes.
-
-***
-
-**N.B.** The above steps enable Unicode Standard emoji characters and sequences in Hugo, however the rendering of these glyphs depends on the browser and the platform. To style the emoji you can either use a third party emoji font or a font stack; e.g.
-
-{{< highlight html >}}
-.emoji {
-  font-family: Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols;
-}
-{{< /highlight >}}
-
-{{< css.inline >}}
-<style>
-.emojify {
-	font-family: Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols;
-	font-size: 2rem;
-	vertical-align: middle;
-}
-@media screen and (max-width:650px) {
-  .nowrap {
-    display: block;
-    margin: 25px 0;
-  }
-}
-</style>
-{{< /css.inline >}}
diff --git a/web/themes/paige/exampleSite/content/blog/markdown-syntax.md b/web/themes/paige/exampleSite/content/blog/markdown-syntax.md
deleted file mode 100644
index ad74a692e5c8d834cbd2a252739ac0bc6e04c641..0000000000000000000000000000000000000000
--- a/web/themes/paige/exampleSite/content/blog/markdown-syntax.md
+++ /dev/null
@@ -1,147 +0,0 @@
-+++
-author = "Hugo Authors"
-title = "Markdown Syntax Guide"
-date = "2019-03-11"
-description = "Sample article showcasing basic Markdown syntax and formatting for HTML elements."
-tags = [
-    "markdown",
-    "css",
-    "html",
-]
-categories = [
-    "themes",
-    "syntax",
-]
-aliases = ["migrate-from-jekyl"]
-+++
-
-This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.
-<!--more-->
-
-## Headings
-
-The following HTML `<h1>`—`<h6>` elements represent six levels of section headings. `<h1>` is the highest section level while `<h6>` is the lowest.
-
-# H1
-## H2
-### H3
-#### H4
-##### H5
-###### H6
-
-## Paragraph
-
-Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat.
-
-Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat.
-
-## Blockquotes
-
-The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations.
-
-#### Blockquote without attribution
-
-> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
-> **Note** that you can use *Markdown syntax* within a blockquote.
-
-#### Blockquote with attribution
-
-> Don't communicate by sharing memory, share memory by communicating.<br>
-> — <cite>Rob Pike[^1]</cite>
-
-[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
-
-## Tables
-
-Tables aren't part of the core Markdown spec, but Hugo supports supports them out-of-the-box.
-
-   Name | Age
---------|------
-    Bob | 27
-  Alice | 23
-
-#### Inline Markdown within tables
-
-| Italics   | Bold     | Code   |
-| --------  | -------- | ------ |
-| *italics* | **bold** | `code` |
-
-## Code Blocks
-
-#### Code block with backticks
-
-```html
-<!doctype html>
-<html lang="en">
-<head>
-  <meta charset="utf-8">
-  <title>Example HTML5 Document</title>
-</head>
-<body>
-  <p>Test</p>
-</body>
-</html>
-```
-
-#### Code block indented with four spaces
-
-    <!doctype html>
-    <html lang="en">
-    <head>
-      <meta charset="utf-8">
-      <title>Example HTML5 Document</title>
-    </head>
-    <body>
-      <p>Test</p>
-    </body>
-    </html>
-
-#### Code block with Hugo's internal highlight shortcode
-{{< highlight html >}}
-<!doctype html>
-<html lang="en">
-<head>
-  <meta charset="utf-8">
-  <title>Example HTML5 Document</title>
-</head>
-<body>
-  <p>Test</p>
-</body>
-</html>
-{{< /highlight >}}
-
-## List Types
-
-#### Ordered List
-
-1. First item
-2. Second item
-3. Third item
-
-#### Unordered List
-
-* List item
-* Another item
-* And another item
-
-#### Nested list
-
-* Fruit
-  * Apple
-  * Orange
-  * Banana
-* Dairy
-  * Milk
-  * Cheese
-
-## Other Elements — abbr, sub, sup, kbd, mark
-
-<abbr title="Graphics Interchange Format">GIF</abbr> is a bitmap image format.
-
-H<sub>2</sub>O
-
-X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup>
-
-Press <kbd><kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>Delete</kbd></kbd> to end the session.
-
-Most <mark>salamanders</mark> are nocturnal, and hunt for insects, worms, and other small creatures.
diff --git a/web/themes/paige/exampleSite/content/blog/math-typesetting.md b/web/themes/paige/exampleSite/content/blog/math-typesetting.md
deleted file mode 100644
index 62831a9c122e1126dd8709cbd30cbaeca3c089af..0000000000000000000000000000000000000000
--- a/web/themes/paige/exampleSite/content/blog/math-typesetting.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-author: Hugo Authors
-title: Math Typesetting
-date: 2019-03-08
-description: A brief guide to setup KaTeX
-math: true
----
-
-Mathematical notation in a Hugo project can be enabled by using third party JavaScript libraries.
-<!--more-->
-
-In this example we will be using [KaTeX](https://katex.org/)
-
-- Create a partial under `/layouts/partials/math.html`
-- Within this partial reference the [Auto-render Extension](https://katex.org/docs/autorender.html) or host these scripts locally.
-- Include the partial in your templates like so:
-
-```bash
-{{ if or .Params.math .Site.Params.math }}
-{{ partial "math.html" . }}
-{{ end }}
-```
-
-- To enable KaTex globally set the parameter `math` to `true` in a project's configuration
-- To enable KaTex on a per page basis include the parameter `math: true` in content files
-
-**Note:** Use the online reference of [Supported TeX Functions](https://katex.org/docs/supported.html)
-
-{{< math.inline >}}
-{{ if or .Page.Params.math .Site.Params.math }}
-<!-- KaTeX -->
-<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" integrity="sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" crossorigin="anonymous">
-<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js" integrity="sha384-y23I5Q6l+B6vatafAwxRu/0oK/79VlbSz7Q9aiSZUvyWYIYsd+qj+o24G5ZU2zJz" crossorigin="anonymous"></script>
-<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
-{{ end }}
-{{</ math.inline >}}
-
-### Examples
-
-{{< math.inline >}}
-<p>
-Inline math: \(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\)
-</p>
-{{</ math.inline >}}
-
-Block math:
-$$
- \varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } }
-$$
diff --git a/web/themes/paige/exampleSite/content/blog/placeholder-text.md b/web/themes/paige/exampleSite/content/blog/placeholder-text.md
deleted file mode 100644
index 9ed5f69a52331b1ac102807eea15062d715cf6d0..0000000000000000000000000000000000000000
--- a/web/themes/paige/exampleSite/content/blog/placeholder-text.md
+++ /dev/null
@@ -1,45 +0,0 @@
-+++
-author = "Hugo Authors"
-title = "Placeholder Text"
-date = "2019-03-09"
-description = "Lorem Ipsum Dolor Si Amet"
-tags = [
-    "markdown",
-    "text",
-]
-+++
-
-Lorem est tota propiore conpellat pectoribus de pectora summo. <!--more-->Redit teque digerit hominumque toris verebor lumina non cervice subde tollit usus habet Arctonque, furores quas nec ferunt. Quoque montibus nunc caluere tempus inhospita parcite confusaque translucet patri vestro qui optatis lumine cognoscere flos nubis! Fronde ipsamque patulos Dryopen deorum.
-
-1. Exierant elisi ambit vivere dedere
-2. Duce pollice
-3. Eris modo
-4. Spargitque ferrea quos palude
-
-Rursus nulli murmur; hastile inridet ut ab gravi sententia! Nomine potitus silentia flumen, sustinet placuit petis in dilapsa erat sunt. Atria tractus malis.
-
-1. Comas hunc haec pietate fetum procerum dixit
-2. Post torum vates letum Tiresia
-3. Flumen querellas
-4. Arcanaque montibus omnes
-5. Quidem et
-
-# Vagus elidunt
-
-<svg class="canon" xmlns="http://www.w3.org/2000/svg" overflow="visible" viewBox="0 0 496 373" height="373" width="496"><g fill="none"><path stroke="#000" stroke-width=".75" d="M.599 372.348L495.263 1.206M.312.633l494.95 370.853M.312 372.633L247.643.92M248.502.92l246.76 370.566M330.828 123.869V1.134M330.396 1.134L165.104 124.515"></path><path stroke="#ED1C24" stroke-width=".75" d="M275.73 41.616h166.224v249.05H275.73zM54.478 41.616h166.225v249.052H54.478z"></path><path stroke="#000" stroke-width=".75" d="M.479.375h495v372h-495zM247.979.875v372"></path><ellipse cx="498.729" cy="177.625" rx=".75" ry="1.25"></ellipse><ellipse cx="247.229" cy="377.375" rx=".75" ry="1.25"></ellipse></g></svg>
-
-[The Van de Graaf Canon](https://en.wikipedia.org/wiki/Canons_of_page_construction#Van_de_Graaf_canon)
-
-## Mane refeci capiebant unda mulcebat
-
-Victa caducifer, malo vulnere contra dicere aurato, ludit regale, voca! Retorsit colit est profanae esse virescere furit nec; iaculi matertera et visa est, viribus. Divesque creatis, tecta novat collumque vulnus est, parvas. **Faces illo pepulere** tempus adest. Tendit flamma, ab opes virum sustinet, sidus sequendo urbis.
-
-Iubar proles corpore raptos vero auctor imperium; sed et huic: manus caeli Lelegas tu lux. Verbis obstitit intus oblectamina fixis linguisque ausus sperare Echionides cornuaque tenent clausit possit. Omnia putatur. Praeteritae refert ausus; ferebant e primus lora nutat, vici quae mea ipse. Et iter nil spectatae vulnus haerentia iuste et exercebat, sui et.
-
-Eurytus Hector, materna ipsumque ut Politen, nec, nate, ignari, vernum cohaesit sequitur. Vel **mitis temploque** vocatus, inque alis, *oculos nomen* non silvis corpore coniunx ne displicet illa. Crescunt non unus, vidit visa quantum inmiti flumina mortis facto sic: undique a alios vincula sunt iactata abdita! Suspenderat ego fuit tendit: luna, ante urbem Propoetides **parte**.
-
-{{< css.inline >}}
-<style>
-.canon { background: white; width: 100%; height: auto; }
-</style>
-{{< /css.inline >}}
diff --git a/web/themes/paige/exampleSite/content/blog/rich-content.md b/web/themes/paige/exampleSite/content/blog/rich-content.md
deleted file mode 100644
index 92b4b03f36956213a87028bcf5b59ec51e6b0f9d..0000000000000000000000000000000000000000
--- a/web/themes/paige/exampleSite/content/blog/rich-content.md
+++ /dev/null
@@ -1,34 +0,0 @@
-+++
-author = "Hugo Authors"
-title = "Rich Content"
-date = "2019-03-10"
-description = "A brief description of Hugo Shortcodes"
-tags = [
-    "shortcodes",
-    "privacy",
-]
-+++
-
-Hugo ships with several [Built-in Shortcodes](https://gohugo.io/content-management/shortcodes/#use-hugos-built-in-shortcodes) for rich content, along with a [Privacy Config](https://gohugo.io/about/hugo-and-gdpr/) and a set of Simple Shortcodes that enable static and no-JS versions of various social media embeds.
-<!--more-->
----
-
-## YouTube Privacy Enhanced Shortcode
-
-{{< youtube ZJthWmvUzzc >}}
-
-<br>
-
----
-
-## Twitter Simple Shortcode
-
-{{< twitter_simple 1085870671291310081 >}}
-
-<br>
-
----
-
-## Vimeo Simple Shortcode
-
-{{< vimeo_simple 48912912 >}}
diff --git a/web/themes/paige/exampleSite/content/projects/_index.md b/web/themes/paige/exampleSite/content/projects/_index.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/web/themes/paige/exampleSite/static/avatar.jpg b/web/themes/paige/exampleSite/static/avatar.jpg
deleted file mode 100644
index dad7e2cc13ca52eaf0a4dd76ad7b96ac93434821..0000000000000000000000000000000000000000
Binary files a/web/themes/paige/exampleSite/static/avatar.jpg and /dev/null differ
diff --git a/web/themes/paige/exampleSite/static/cover.jpg b/web/themes/paige/exampleSite/static/cover.jpg
deleted file mode 100644
index fc303c42e427fa9460e73c2004b52fc25094631f..0000000000000000000000000000000000000000
Binary files a/web/themes/paige/exampleSite/static/cover.jpg and /dev/null differ
diff --git a/web/themes/paige/go.mod b/web/themes/paige/go.mod
deleted file mode 100644
index 32ca2ec5c2d3a4edfe1c618bc5a2bc9c24110146..0000000000000000000000000000000000000000
--- a/web/themes/paige/go.mod
+++ /dev/null
@@ -1,3 +0,0 @@
-module github.com/willfaught/paige
-
-go 1.19
diff --git a/web/themes/paige/images/screenshot.png b/web/themes/paige/images/screenshot.png
deleted file mode 100644
index 8ee1ca21f166e88b0777c48690a82082c3704e03..0000000000000000000000000000000000000000
Binary files a/web/themes/paige/images/screenshot.png and /dev/null differ
diff --git a/web/themes/paige/images/tn.png b/web/themes/paige/images/tn.png
deleted file mode 100644
index e193be67555136027556d2d08c946dc379b02d8f..0000000000000000000000000000000000000000
Binary files a/web/themes/paige/images/tn.png and /dev/null differ
diff --git a/web/themes/paige/layouts/404.html b/web/themes/paige/layouts/404.html
deleted file mode 100644
index fc50110aeb01c88ad540f0f227900779efd374a4..0000000000000000000000000000000000000000
--- a/web/themes/paige/layouts/404.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{{ define "main" -}}
-<h1 class="display-5 fw-bold text-center">Not Found</h1>
-{{- end }}
diff --git a/web/themes/paige/layouts/_default/baseof.html b/web/themes/paige/layouts/_default/baseof.html
deleted file mode 100644
index 5cbfd48cfbbe5a08c44f8bc83b45e899aeda7db1..0000000000000000000000000000000000000000
--- a/web/themes/paige/layouts/_default/baseof.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!doctype html>
-<html lang="{{ .Site.LanguageCode }}">
-    <head>
-        <meta charset="utf-8">
-        {{ if .Site.Author.name }}
-        <meta content="{{ .Site.Author.name }}" name="author">
-        {{ end }}
-        {{ if .Description }}
-        <meta content="{{ .Description }}" name="description">
-        {{ end }}
-        {{ if or .Keywords .Params.tags .Params.categories }}
-        <meta content="{{ delimit (sort (union (union .Keywords .Params.tags) .Params.categories)) `, ` }}" name="keywords">
-        {{ end }}
-        <meta content="width=device-width, initial-scale=1" name="viewport">
-        {{ template "_internal/opengraph.html" . }}
-        {{ template "_internal/twitter_cards.html" . }}
-        {{ if and (and .Title .Site.Title) (or (not (eq .Title .Site.Title)) (not .IsHome)) }}
-        <title>{{ .Title | markdownify | plainify | htmlUnescape }} &middot; {{ .Site.Title | markdownify | plainify | htmlUnescape }}</title>
-        {{ else if .Title }}
-        <title>{{ .Title | markdownify | plainify | htmlUnescape }}</title>
-        {{ else if .Site.Title }}
-        <title>{{ .Site.Title | markdownify | plainify | htmlUnescape }}</title>
-        {{ end }}
-        <link crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" rel="stylesheet">
-        <link crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.2/font/bootstrap-icons.css" rel="stylesheet">
-        {{ if or .Params.math .Site.Params.math }}
-        <link crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/katex@0.16.3/dist/katex.min.css" integrity="sha384-Juol1FqnotbkyZUT5Z7gUPjQ9gzlwCENvUZTpQBAPxtusdwFLRy382PSDx5UUJ4/" rel="stylesheet">
-        {{ end }}
-        {{ range .AlternativeOutputFormats }}
-        <link href="{{ .Permalink }}" rel="{{ .Rel }}" title="{{ $.Site.Title }}" type="{{ .MediaType.Type }}">
-        {{ end }}
-        {{ if templates.Exists "partials/head.html" }}
-        {{ partial "head" . }}
-        {{ end }}
-        <style>
-            #content div {
-                margin-bottom: 1rem;
-            }
-        </style>
-    </head>
-    <body class="d-flex flex-column">
-        <div class="container flex-fill">
-            {{ if .Site.Menus.main }}
-            <header>
-                <div class="row">
-                    <div class="col">
-                        <nav class="d-flex justify-content-center my-3">
-                            <ul class="justify-content-center nav nav-pills">
-                                {{ $p := . }}
-                                {{ $basePath := path.Clean (urls.Parse .Site.BaseURL).Path }}
-                                {{ if eq $basePath "/" }}
-                                {{ $basePath = "" }}
-                                {{ end }}
-                                {{ range .Site.Menus.main }}
-                                {{ $pagePath := strings.TrimPrefix $basePath $p.RelPermalink }}
-                                {{ $menuPath := strings.TrimPrefix $basePath .URL }}
-                                {{ $active := or (and (eq $menuPath `/`) (eq $pagePath `/`)) (and (ne $menuPath `/`) (hasPrefix $pagePath $menuPath)) }}
-                                <li class="nav-item"><a href="{{ .URL }}" class="nav-link{{if $active }} active{{ end }}">{{ .Name }}</a></li>
-                                {{ end }}
-                            </ul>
-                        </nav>
-                    </div>
-                </div>
-            </header>
-            {{ end }}
-            <main>
-                {{ block "main" . }}{{ end }}
-            </main>
-            {{ if .Site.Copyright }}
-            <footer>
-                <div class="justify-content-center row">
-                    <div class="col col-auto">
-                        <p class="text-muted">{{ .Site.Copyright | markdownify }}</p>
-                    </div>
-                </div>
-            </footer>
-            {{ end }}
-        </div>
-        <script crossorigin="anonymous" src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3"></script>
-        {{ if or .Params.math .Site.Params.math }}
-        <script crossorigin="anonymous" defer integrity="sha384-97gW6UIJxnlKemYavrqDHSX3SiygeOwIZhwyOKRfSaf0JWKRVj9hLASHgFTzT+0O" src="https://cdn.jsdelivr.net/npm/katex@0.16.3/dist/katex.min.js"></script>
-        <script crossorigin="anonymous" defer integrity="sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05" onload="renderMathInElement(document.body);" src="https://cdn.jsdelivr.net/npm/katex@0.16.3/dist/contrib/auto-render.min.js"></script>
-        {{ end }}
-        {{ if .Site.GoogleAnalytics }}
-        {{ template "_internal/google_analytics.html" . }}
-        {{ end }}
-        {{ if templates.Exists "partials/body.html" }}
-        {{ partial "body" . }}
-        {{ end }}
-    </body>
-</html>
diff --git a/web/themes/paige/layouts/_default/home.html b/web/themes/paige/layouts/_default/home.html
deleted file mode 100644
index 2cc38e5c4ecb9d0ab3caba287da9a49b5bdb8d3d..0000000000000000000000000000000000000000
--- a/web/themes/paige/layouts/_default/home.html
+++ /dev/null
@@ -1,41 +0,0 @@
-{{ define "main" }}
-{{ if or .Title .Description }}
-<div class="row text-center">
-    <div class="col">
-        {{ if .Title }}
-        <h1 class="display-1 fw-bold">{{ .Title | markdownify }}</h1>
-        {{ end }}
-        {{ if .Description }}
-        <p class="lead">{{ .Description | markdownify }}</p>
-        {{ end }}
-    </div>
-</div>
-{{ end }}
-<div class="row py-3">
-    <div class="col">
-        <div class="rounded-4" style="background-image: url('{{ .Site.BaseURL }}/cover.jpg'); background-position: center; background-size: cover; height: 20rem; width: 100%"></div>
-    </div>
-</div>
-<div class="d-flex justify-content-center py-3 row">
-    <div class="col-12 col-xl-10">
-        <div class="d-flex justify-content-evenly align-items-center row">
-            <div class="col-12 col-md-6">
-                <p class="display-5 fw-bold lh-1">{{ .Params.greeting | markdownify }}</p>
-                <p class="lead">{{ .Params.blurb | markdownify }}</p>
-            </div>
-            <div class="col-12 col-md-6 text-center">
-                <img alt="Avatar" class="rounded-4" src="{{ .Site.BaseURL }}/avatar.jpg" style="max-height: 20rem; max-width: 100%">
-            </div>
-        </div>
-    </div>
-</div>
-{{ if .Site.Social }}
-<div class="py-3 row">
-    <div class="col text-center">
-        {{ range $k, $v := .Site.Social }}
-        <a href="{{ $v }}"><i class="bi bi-{{ $k }} display-6 px-2"></i></a>
-        {{ end }}
-    </div>
-</div>
-{{ end }}
-{{ end }}
diff --git a/web/themes/paige/layouts/_default/list.html b/web/themes/paige/layouts/_default/list.html
deleted file mode 100644
index 9385f92085d9ae5ca3134cbbd436185f6835b702..0000000000000000000000000000000000000000
--- a/web/themes/paige/layouts/_default/list.html
+++ /dev/null
@@ -1,73 +0,0 @@
-{{ define "main" }}
-{{ if not (or .Title .Description .Content .Pages) }}
-<section>
-    <h1 class="display-5 fw-bold text-center">Nothing Here</h1>
-</section>
-{{ else }}
-<section>
-    {{ if or .Title .Description }}
-    <header>
-        <div class="row text-center justify-content-center">
-            <div class="col">
-                {{ if .Title }}
-                <h1 class="display-5 fw-bold">
-                    {{ if .Params.link }}
-                    <a href="{{ .Params.link }}">{{ .Title | markdownify }}</a>
-                    {{ else }}
-                    {{ .Title | markdownify }}
-                    {{ end }}
-                </h1>
-                {{ end }}
-                {{ if .Description }}
-                <p class="lead">{{ .Description | markdownify }}</p>
-                {{ end }}
-            </div>
-        </div>
-    </header>
-    {{ end }}
-    {{ if .Content }}
-    <div class="row">
-        <div class="col">
-            <div class="mx-auto">
-                {{ .Content }}
-            </div>
-        </div>
-    </div>
-    {{ end }}
-    {{ if .Pages }}
-    {{ $p := .Paginate (.Pages.ByDate.Reverse.GroupByDate "January 2006") }}
-    <section>
-        <div class="row">
-            <div class="col">
-                <div class="mx-auto text-center">
-                    {{ range $p.PageGroups }}
-                    <h5>{{ .Key }}</h5>
-                    {{ range .Pages }}
-                    <p>
-                        <a href="{{ .RelPermalink }}">{{ .Title | markdownify }}</a>
-                        {{- if .Description -}}
-                        <br/>
-                        {{- .Description | markdownify -}}
-                        {{- end -}}
-                    </p>
-                    {{ end }}
-                    {{ end }}
-                </div>
-            </div>
-        </div>
-    </section>
-    {{ if or $p.HasPrev $p.HasNext }}
-    <footer>
-        <div class="row">
-            <div class="col">
-                <div class="d-flex justify-content-center pt-3">
-                    {{ partial "pagination" . }}
-                </div>
-            </div>
-        </div>
-    </footer>
-    {{ end }}
-    {{ end }}
-</section>
-{{ end }}
-{{ end }}
diff --git a/web/themes/paige/layouts/_default/rss.xml b/web/themes/paige/layouts/_default/rss.xml
deleted file mode 100644
index 1b850dbac3e40002ace8a7aabc37868f5eaca4eb..0000000000000000000000000000000000000000
--- a/web/themes/paige/layouts/_default/rss.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-{{ $pctx := . }}
-{{ if .IsHome }}{{ $pctx = .Site }}{{ end }}
-{{ $pages := slice }}
-{{ if or $.IsHome $.IsSection }}
-{{ $pages = $pctx.RegularPages }}
-{{ else }}
-{{ $pages = $pctx.Pages }}
-{{ end }}
-{{ $limit := .Site.Config.Services.RSS.Limit }}
-{{ if ge $limit 1 }}
-{{ $pages = $pages | first $limit }}
-{{ end }}
-{{ $title := "" }}
-{{ if or .Title .Site.Title }}
-{{ if and .Title .Site.Title }}
-{{ if eq .Title .Site.Title }}
-{{ $title = .Title }}
-{{ else }}
-{{ $title = printf "%s · %s" .Title .Site.Title }}
-{{ end }}
-{{ else if .Title }}
-{{ $title = .Title }}
-{{ else }}
-{{ $title = .Site.Title }}
-{{ end }}
-{{ end }}
-{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    {{ with $title }}
-    <title>{{ . }}</title>
-    {{ end }}
-    <link>{{ .Permalink }}</link>
-    <description>Recent content{{ with $title }} in {{ . }}{{ end }}</description>
-    {{ with .Site.LanguageCode }}
-    <language>{{ . }}</language>
-    {{ end }}
-    {{ with .Site.Author.email }}
-    <managingEditor>{{ . }}</managingEditor>
-    <webMaster>{{ . }}</webMaster>
-    {{ end }}
-    {{ with .Site.Copyright }}
-    <copyright>{{ . }}</copyright>
-    {{ end }}
-    {{ if and .Date (not .Date.IsZero) }}
-    <lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>
-    {{ end }}
-    {{ with .OutputFormats.Get "RSS" }}
-    {{ printf "<atom:link href=%q rel=\"self\" type=%q/>" .Permalink .MediaType | safeHTML }}
-    {{ end }}
-    {{ range $pages }}
-    <item>
-      {{ with .Title }}
-      <title>{{ . }}</title>
-      {{ end }}
-      {{ with .Permalink }}
-      <link>{{ . }}</link>
-      <guid>{{ . }}</guid>
-      {{ end }}
-      {{ with .Date }}
-      <pubDate>{{ .Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
-      {{ end }}
-      {{ with .Site.Author.email }}
-      <author>{{ . }}</author>
-      {{ end }}
-      {{ if .Content }}
-      <description>{{ printf "<![CDATA[%s]]>" .Content | safeHTML }}</description>
-      {{ else if .Summary }}
-      <description>{{ .Summary | html }}</description>
-      {{ else if .Description }}
-      <description>{{ .Description | html }}</description>
-      {{ end }}
-    </item>
-    {{ end }}
-  </channel>
-</rss>
diff --git a/web/themes/paige/layouts/_default/single.html b/web/themes/paige/layouts/_default/single.html
deleted file mode 100644
index 91aa1d3902a74b040a1ec04436edb10a9b27e61f..0000000000000000000000000000000000000000
--- a/web/themes/paige/layouts/_default/single.html
+++ /dev/null
@@ -1,40 +0,0 @@
-{{ define "main" }}
-{{ if not (or .Title .Description .PublishDate .Content) }}
-<section>
-    <h1 class="display-5 fw-bold text-center">Nothing Here</h1>
-</section>
-{{ else }}
-<article>
-    {{ if or .Title .Description .PublishDate }}
-    <header>
-        <div class="justify-content-center row">
-            <div class="col col-auto text-center">
-                {{ if .Title }}
-                <h1 class="display-5 fw-bold">
-                    {{ if .Params.link }}
-                    <a href="{{ .Params.link }}">{{ .Title | markdownify }}</a>
-                    {{ else }}
-                    {{ .Title | markdownify }}
-                    {{ end }}
-                </h1>
-                {{ end }}
-                {{ if .Description }}
-                <p class="lead">{{ .Description | markdownify }}</p>
-                {{ end }}
-                {{ if .PublishDate }}
-                <p class="text-muted"><time datetime="{{ .PublishDate.Format `2006-01-02` }}">{{ .PublishDate.Format "January 2, 2006" }}</time></p>
-                {{ end }}
-            </div>
-        </div>
-    </header>
-    {{ end }}
-    {{ if .Content }}
-    <div class="justify-content-center row">
-        <div class="col col-auto" id="content">
-            {{ .Content }}
-        </div>
-    </div>
-    {{ end }}
-</article>
-{{ end }}
-{{ end }}
diff --git a/web/themes/paige/layouts/_default/taxonomy.html b/web/themes/paige/layouts/_default/taxonomy.html
deleted file mode 100644
index e33b084aa5fbcc5a25a8b02e8e17876d99a261e7..0000000000000000000000000000000000000000
--- a/web/themes/paige/layouts/_default/taxonomy.html
+++ /dev/null
@@ -1,40 +0,0 @@
-{{ define "main" }}
-{{ if not (or .Title .Pages) }}
-<section>
-    <h1 class="display-5 fw-bold text-center">Nothing Here</h1>
-</section>
-{{ else }}
-<section>
-    {{ if .Title }}
-    <header>
-        <div class="row text-center">
-            <div class="col">
-                <h1 class="display-5 fw-bold">
-                    {{ if .Params.link }}
-                    <a href="{{ .Params.link }}">{{ .Title | markdownify }}</a>
-                    {{ else }}
-                    {{ .Title | markdownify }}
-                    {{ end }}
-                </h1>
-            </div>
-        </div>
-    </header>
-    {{ end }}
-    {{ if .Pages }}
-    <div class="row">
-        <div class="col">
-            <div class="mx-auto text-center">
-                <ul class="list-inline">
-                    {{ range (sort .Pages "Title") }}
-                    <li class="list-inline-item">
-                        <a href="{{ .RelPermalink }}">{{ .Title | markdownify }}</a>
-                    </li>
-                    {{ end }}
-                </ul>
-            </div>
-        </div>
-    </div>
-    {{ end }}
-</section>
-{{ end }}
-{{ end }}
diff --git a/web/themes/paige/layouts/_default/term.html b/web/themes/paige/layouts/_default/term.html
deleted file mode 100644
index 4aeae7306cf1f1e8d071cbc1640c9028d2618765..0000000000000000000000000000000000000000
--- a/web/themes/paige/layouts/_default/term.html
+++ /dev/null
@@ -1,34 +0,0 @@
-{{ define "main" }}
-<section>
-    <header>
-        <div class="row text-center justify-content-center">
-            <div class="col">
-                <h1 class="display-5 fw-bold">
-                    {{ .Title }}
-                </h1>
-            </div>
-        </div>
-    </header>
-    {{ $p := .Paginate (.Pages.ByDate.Reverse.GroupByDate "January 2006") }}
-    <section>
-        <div class="row">
-            <div class="col">
-                <div class="mx-auto text-center">
-                    {{ range $p.PageGroups }}
-                    <h5>{{ .Key }}</h5>
-                    {{ range .Pages }}
-                    <p>
-                        <a href="{{ .RelPermalink }}">{{ .Title | markdownify }}</a>
-                        {{- if .Description -}}
-                        <br/>
-                        {{- .Description | markdownify -}}
-                        {{- end -}}
-                    </p>
-                    {{ end }}
-                    {{ end }}
-                </div>
-            </div>
-        </div>
-    </section>
-</section>
-{{ end }}
diff --git a/web/themes/paige/layouts/partials/pagination.html b/web/themes/paige/layouts/partials/pagination.html
deleted file mode 100644
index e2c862cc37cdb0703ca25f2a53e7f476e264e2f4..0000000000000000000000000000000000000000
--- a/web/themes/paige/layouts/partials/pagination.html
+++ /dev/null
@@ -1,365 +0,0 @@
-{{/*
-Copied from:
-    https://github.com/gohugoio/hugo/blob/133e4bfbeee47bf6843fbcad90f14501f3d3a099/tpl/tplimpl/embedded/templates/pagination.html
-
-License:
-    https://github.com/gohugoio/hugo/blob/133e4bfbeee47bf6843fbcad90f14501f3d3a099/LICENSE
-
-License content:
-    Apache License
-    Version 2.0, January 2004
-    http://www.apache.org/licenses/
-
-    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-    1. Definitions.
-
-    "License" shall mean the terms and conditions for use, reproduction,
-    and distribution as defined by Sections 1 through 9 of this document.
-
-    "Licensor" shall mean the copyright owner or entity authorized by
-    the copyright owner that is granting the License.
-
-    "Legal Entity" shall mean the union of the acting entity and all
-    other entities that control, are controlled by, or are under common
-    control with that entity. For the purposes of this definition,
-    "control" means (i) the power, direct or indirect, to cause the
-    direction or management of such entity, whether by contract or
-    otherwise, or (ii) ownership of fifty percent (50%) or more of the
-    outstanding shares, or (iii) beneficial ownership of such entity.
-
-    "You" (or "Your") shall mean an individual or Legal Entity
-    exercising permissions granted by this License.
-
-    "Source" form shall mean the preferred form for making modifications,
-    including but not limited to software source code, documentation
-    source, and configuration files.
-
-    "Object" form shall mean any form resulting from mechanical
-    transformation or translation of a Source form, including but
-    not limited to compiled object code, generated documentation,
-    and conversions to other media types.
-
-    "Work" shall mean the work of authorship, whether in Source or
-    Object form, made available under the License, as indicated by a
-    copyright notice that is included in or attached to the work
-    (an example is provided in the Appendix below).
-
-    "Derivative Works" shall mean any work, whether in Source or Object
-    form, that is based on (or derived from) the Work and for which the
-    editorial revisions, annotations, elaborations, or other modifications
-    represent, as a whole, an original work of authorship. For the purposes
-    of this License, Derivative Works shall not include works that remain
-    separable from, or merely link (or bind by name) to the interfaces of,
-    the Work and Derivative Works thereof.
-
-    "Contribution" shall mean any work of authorship, including
-    the original version of the Work and any modifications or additions
-    to that Work or Derivative Works thereof, that is intentionally
-    submitted to Licensor for inclusion in the Work by the copyright owner
-    or by an individual or Legal Entity authorized to submit on behalf of
-    the copyright owner. For the purposes of this definition, "submitted"
-    means any form of electronic, verbal, or written communication sent
-    to the Licensor or its representatives, including but not limited to
-    communication on electronic mailing lists, source code control systems,
-    and issue tracking systems that are managed by, or on behalf of, the
-    Licensor for the purpose of discussing and improving the Work, but
-    excluding communication that is conspicuously marked or otherwise
-    designated in writing by the copyright owner as "Not a Contribution."
-
-    "Contributor" shall mean Licensor and any individual or Legal Entity
-    on behalf of whom a Contribution has been received by Licensor and
-    subsequently incorporated within the Work.
-
-    2. Grant of Copyright License. Subject to the terms and conditions of
-    this License, each Contributor hereby grants to You a perpetual,
-    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-    copyright license to reproduce, prepare Derivative Works of,
-    publicly display, publicly perform, sublicense, and distribute the
-    Work and such Derivative Works in Source or Object form.
-
-    3. Grant of Patent License. Subject to the terms and conditions of
-    this License, each Contributor hereby grants to You a perpetual,
-    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-    (except as stated in this section) patent license to make, have made,
-    use, offer to sell, sell, import, and otherwise transfer the Work,
-    where such license applies only to those patent claims licensable
-    by such Contributor that are necessarily infringed by their
-    Contribution(s) alone or by combination of their Contribution(s)
-    with the Work to which such Contribution(s) was submitted. If You
-    institute patent litigation against any entity (including a
-    cross-claim or counterclaim in a lawsuit) alleging that the Work
-    or a Contribution incorporated within the Work constitutes direct
-    or contributory patent infringement, then any patent licenses
-    granted to You under this License for that Work shall terminate
-    as of the date such litigation is filed.
-
-    4. Redistribution. You may reproduce and distribute copies of the
-    Work or Derivative Works thereof in any medium, with or without
-    modifications, and in Source or Object form, provided that You
-    meet the following conditions:
-
-    (a) You must give any other recipients of the Work or
-    Derivative Works a copy of this License; and
-
-    (b) You must cause any modified files to carry prominent notices
-    stating that You changed the files; and
-
-    (c) You must retain, in the Source form of any Derivative Works
-    that You distribute, all copyright, patent, trademark, and
-    attribution notices from the Source form of the Work,
-    excluding those notices that do not pertain to any part of
-    the Derivative Works; and
-
-    (d) If the Work includes a "NOTICE" text file as part of its
-    distribution, then any Derivative Works that You distribute must
-    include a readable copy of the attribution notices contained
-    within such NOTICE file, excluding those notices that do not
-    pertain to any part of the Derivative Works, in at least one
-    of the following places: within a NOTICE text file distributed
-    as part of the Derivative Works; within the Source form or
-    documentation, if provided along with the Derivative Works; or,
-    within a display generated by the Derivative Works, if and
-    wherever such third-party notices normally appear. The contents
-    of the NOTICE file are for informational purposes only and
-    do not modify the License. You may add Your own attribution
-    notices within Derivative Works that You distribute, alongside
-    or as an addendum to the NOTICE text from the Work, provided
-    that such additional attribution notices cannot be construed
-    as modifying the License.
-
-    You may add Your own copyright statement to Your modifications and
-    may provide additional or different license terms and conditions
-    for use, reproduction, or distribution of Your modifications, or
-    for any such Derivative Works as a whole, provided Your use,
-    reproduction, and distribution of the Work otherwise complies with
-    the conditions stated in this License.
-
-    5. Submission of Contributions. Unless You explicitly state otherwise,
-    any Contribution intentionally submitted for inclusion in the Work
-    by You to the Licensor shall be under the terms and conditions of
-    this License, without any additional terms or conditions.
-    Notwithstanding the above, nothing herein shall supersede or modify
-    the terms of any separate license agreement you may have executed
-    with Licensor regarding such Contributions.
-
-    6. Trademarks. This License does not grant permission to use the trade
-    names, trademarks, service marks, or product names of the Licensor,
-    except as required for reasonable and customary use in describing the
-    origin of the Work and reproducing the content of the NOTICE file.
-
-    7. Disclaimer of Warranty. Unless required by applicable law or
-    agreed to in writing, Licensor provides the Work (and each
-    Contributor provides its Contributions) on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-    implied, including, without limitation, any warranties or conditions
-    of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-    PARTICULAR PURPOSE. You are solely responsible for determining the
-    appropriateness of using or redistributing the Work and assume any
-    risks associated with Your exercise of permissions under this License.
-
-    8. Limitation of Liability. In no event and under no legal theory,
-    whether in tort (including negligence), contract, or otherwise,
-    unless required by applicable law (such as deliberate and grossly
-    negligent acts) or agreed to in writing, shall any Contributor be
-    liable to You for damages, including any direct, indirect, special,
-    incidental, or consequential damages of any character arising as a
-    result of this License or out of the use or inability to use the
-    Work (including but not limited to damages for loss of goodwill,
-    work stoppage, computer failure or malfunction, or any and all
-    other commercial damages or losses), even if such Contributor
-    has been advised of the possibility of such damages.
-
-    9. Accepting Warranty or Additional Liability. While redistributing
-    the Work or Derivative Works thereof, You may choose to offer,
-    and charge a fee for, acceptance of support, warranty, indemnity,
-    or other liability obligations and/or rights consistent with this
-    License. However, in accepting such obligations, You may act only
-    on Your own behalf and on Your sole responsibility, not on behalf
-    of any other Contributor, and only if You agree to indemnify,
-    defend, and hold each Contributor harmless for any liability
-    incurred by, or claims asserted against, such Contributor by reason
-    of your accepting any such warranty or additional liability.
-
-    END OF TERMS AND CONDITIONS
-
-    APPENDIX: How to apply the Apache License to your work.
-
-    To apply the Apache License to your work, attach the following
-    boilerplate notice, with the fields enclosed by brackets "[]"
-    replaced with your own identifying information. (Don't include
-    the brackets!)  The text should be enclosed in the appropriate
-    comment syntax for the file format. We also recommend that a
-    file or class name and description of purpose be included on the
-    same "printed page" as the copyright notice for easier
-    identification within third-party archives.
-
-    Copyright [yyyy] [name of copyright owner]
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-*/}}
-
-{{- $validFormats := slice "default" "terse" }}
-
-{{- $msg1 := "When passing a map to the internal pagination template, one of the elements must be named 'page', and it must be set to the context of the current page." }}
-{{- $msg2 := "The 'format' specified in the map passed to the internal pagination template is invalid. Valid choices are: %s." }}
-
-{{- $page := . }}
-{{- $format := "default" }}
-
-{{- if reflect.IsMap . }}
-  {{- with .page }}
-    {{- $page = . }}
-  {{- else }}
-    {{- errorf $msg1 }}
-  {{- end }}
-  {{- with .format }}
-    {{- $format = lower . }}
-  {{- end }}
-{{- end }}
-
-{{- if in $validFormats $format }}
-  {{- if gt $page.Paginator.TotalPages 1 }}
-    <ul class="pagination pagination-{{ $format }}">
-      {{- partial (printf "partials/inline/pagination/%s" $format) $page }}
-    </ul>
-  {{- end }}
-{{- else }}
-  {{- errorf $msg2 (delimit $validFormats ", ") }}
-{{- end -}}
-
-{{/* Format: default
-{{/* --------------------------------------------------------------------- */}}
-{{- define "partials/inline/pagination/default" }}
-  {{- with .Paginator }}
-    {{- $currentPageNumber := .PageNumber }}
-
-    {{- with .First }}
-      {{- if ne $currentPageNumber .PageNumber }}
-      <li class="page-item">
-        <a href="{{ .URL }}" aria-label="First" class="page-link" role="button"><span aria-hidden="true">&laquo;</span></a>
-      </li>
-      {{- else }}
-      <li class="page-item disabled">
-        <a aria-disabled="true" aria-label="First" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">&laquo;</span></a>
-      </li>
-      {{- end }}
-    {{- end }}
-
-    {{- with .Prev }}
-      <li class="page-item">
-        <a href="{{ .URL }}" aria-label="Previous" class="page-link" role="button"><span aria-hidden="true">&lsaquo;</span></a>
-      </li>
-    {{- else }}
-      <li class="page-item disabled">
-        <a aria-disabled="true" aria-label="Previous" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">&lsaquo;</span></a>
-      </li>
-    {{- end }}
-
-    {{- $slots := 5 }}
-    {{- $start := math.Max 1 (sub .PageNumber (math.Floor (div $slots 2))) }}
-    {{- $end := math.Min .TotalPages (sub (add $start $slots) 1) }}
-    {{- if lt (add (sub $end $start) 1) $slots }}
-      {{- $start = math.Max 1 (add (sub $end $slots) 1) }}
-    {{- end }}
-
-    {{- range $k := seq $start $end }}
-      {{- if eq $.Paginator.PageNumber $k }}
-      <li class="page-item active">
-        <a aria-current="page" aria-label="Page {{ $k }}" class="page-link" role="button">{{ $k }}</a>
-      </li>
-      {{- else }}
-      <li class="page-item">
-        <a href="{{ (index $.Paginator.Pagers (sub $k 1)).URL }}" aria-label="Page {{ $k }}" class="page-link" role="button">{{ $k }}</a>
-      </li>
-      {{- end }}
-    {{- end }}
-
-    {{- with .Next }}
-      <li class="page-item">
-        <a href="{{ .URL }}" aria-label="Next" class="page-link" role="button"><span aria-hidden="true">&rsaquo;</span></a>
-      </li>
-    {{- else }}
-      <li class="page-item disabled">
-        <a aria-disabled="true" aria-label="Next" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">&rsaquo;</span></a>
-      </li>
-    {{- end }}
-
-    {{- with .Last }}
-      {{- if ne $currentPageNumber .PageNumber }}
-      <li class="page-item">
-        <a href="{{ .URL }}" aria-label="Last" class="page-link" role="button"><span aria-hidden="true">&raquo;</span></a>
-      </li>
-      {{- else }}
-      <li class="page-item disabled">
-        <a aria-disabled="true" aria-label="Last" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">&raquo;</span></a>
-      </li>
-      {{- end }}
-    {{- end }}
-  {{- end }}
-{{- end -}}
-
-{{/* Format: terse
-{{/* --------------------------------------------------------------------- */}}
-{{- define "partials/inline/pagination/terse" }}
-  {{- with .Paginator }}
-    {{- $currentPageNumber := .PageNumber }}
-
-    {{- with .First }}
-      {{- if ne $currentPageNumber .PageNumber }}
-      <li class="page-item">
-        <a href="{{ .URL }}" aria-label="First" class="page-link" role="button"><span aria-hidden="true">&laquo;</span></a>
-      </li>
-      {{- end }}
-    {{- end }}
-
-    {{- with .Prev }}
-      <li class="page-item">
-        <a href="{{ .URL }}" aria-label="Previous" class="page-link" role="button"><span aria-hidden="true">&lsaquo;</span></a>
-      </li>
-    {{- end }}
-
-    {{- $slots := 3 }}
-    {{- $start := math.Max 1 (sub .PageNumber (math.Floor (div $slots 2))) }}
-    {{- $end := math.Min .TotalPages (sub (add $start $slots) 1) }}
-    {{- if lt (add (sub $end $start) 1) $slots }}
-      {{- $start = math.Max 1 (add (sub $end $slots) 1) }}
-    {{- end }}
-
-    {{- range $k := seq $start $end }}
-      {{- if eq $.Paginator.PageNumber $k }}
-      <li class="page-item active">
-        <a aria-current="page" aria-label="Page {{ $k }}" class="page-link" role="button">{{ $k }}</a>
-      </li>
-      {{- else }}
-      <li class="page-item">
-        <a href="{{ (index $.Paginator.Pagers (sub $k 1)).URL }}" aria-label="Page {{ $k }}" class="page-link" role="button">{{ $k }}</a>
-      </li>
-      {{- end }}
-    {{- end }}
-
-    {{- with .Next }}
-      <li class="page-item">
-        <a href="{{ .URL }}" aria-label="Next" class="page-link" role="button"><span aria-hidden="true">&rsaquo;</span></a>
-      </li>
-    {{- end }}
-
-    {{- with .Last }}
-      {{- if ne $currentPageNumber .PageNumber }}
-      <li class="page-item">
-        <a href="{{ .URL }}" aria-label="Last" class="page-link" role="button"><span aria-hidden="true">&raquo;</span></a>
-      </li>
-      {{- end }}
-    {{- end }}
-  {{- end }}
-{{- end -}}
diff --git a/web/themes/paige/theme.toml b/web/themes/paige/theme.toml
deleted file mode 100644
index 52aa0391be3369b3de6d1ccdfe7fd3b9f7185e86..0000000000000000000000000000000000000000
--- a/web/themes/paige/theme.toml
+++ /dev/null
@@ -1,12 +0,0 @@
-demosite = "https://willfaught.com/paige"
-description = "A simple Hugo theme"
-features = ["blog", "landing page", "responsive", "single column", "menus", "social links"]
-homepage = "https://github.com/willfaught/paige"
-license = "Apache-2.0"
-licenselink = "https://www.apache.org/licenses/LICENSE-2.0"
-name = "Paige"
-tags = ["articles", "blog", "bootstrap", "landing", "light", "minimal", "personal", "projects", "responsive", "social"]
-
-[author]
-  homepage = "https://willfaught.com"
-  name = "Will Faught"
diff --git a/web/themes/ucax/LICENSE b/web/themes/ucax/LICENSE
deleted file mode 100644
index 147d5944c76cacbc868a040786b44909fc8d8541..0000000000000000000000000000000000000000
--- a/web/themes/ucax/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2022 YOUR_NAME_HERE
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/web/themes/ucax/archetypes/default.md b/web/themes/ucax/archetypes/default.md
deleted file mode 100644
index ac36e0622776b9ea3aff3dd3e2b43b1cdf833eed..0000000000000000000000000000000000000000
--- a/web/themes/ucax/archetypes/default.md
+++ /dev/null
@@ -1,2 +0,0 @@
-+++
-+++
diff --git a/web/themes/ucax/layouts/404.html b/web/themes/ucax/layouts/404.html
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/web/themes/ucax/layouts/_default/baseof.html b/web/themes/ucax/layouts/_default/baseof.html
deleted file mode 100644
index 5f8e2ec023617e039fca216fbce12e2cf3abc73d..0000000000000000000000000000000000000000
--- a/web/themes/ucax/layouts/_default/baseof.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html>
-    {{- partial "head.html" . -}}
-    <body>
-        {{- partial "header.html" . -}}
-        <div id="content">
-        {{- block "main" . }}{{- end }}
-        </div>
-        {{- partial "footer.html" . -}}
-    </body>
-</html>
diff --git a/web/themes/ucax/layouts/_default/list.html b/web/themes/ucax/layouts/_default/list.html
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/web/themes/ucax/layouts/_default/single.html b/web/themes/ucax/layouts/_default/single.html
deleted file mode 100644
index f7e8c656dbe695ba0f7276689eff30945d38f86a..0000000000000000000000000000000000000000
--- a/web/themes/ucax/layouts/_default/single.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{{ define "main" }}
-{{ .Content }}
-{{ end }}
diff --git a/web/themes/ucax/layouts/index.html b/web/themes/ucax/layouts/index.html
deleted file mode 100644
index f7e8c656dbe695ba0f7276689eff30945d38f86a..0000000000000000000000000000000000000000
--- a/web/themes/ucax/layouts/index.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{{ define "main" }}
-{{ .Content }}
-{{ end }}
diff --git a/web/themes/ucax/layouts/partials/footer.html b/web/themes/ucax/layouts/partials/footer.html
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/web/themes/ucax/layouts/partials/head.html b/web/themes/ucax/layouts/partials/head.html
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/web/themes/ucax/layouts/partials/header.html b/web/themes/ucax/layouts/partials/header.html
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/web/themes/ucax/theme.toml b/web/themes/ucax/theme.toml
deleted file mode 100644
index 6df1107fd8d5b6b5da97ef98155ffffabcccac9a..0000000000000000000000000000000000000000
--- a/web/themes/ucax/theme.toml
+++ /dev/null
@@ -1,21 +0,0 @@
-# theme.toml template for a Hugo theme
-# See https://github.com/gohugoio/hugoThemes#themetoml for an example
-
-name = "Ucax"
-license = "MIT"
-licenselink = "https://github.com/yourname/yourtheme/blob/master/LICENSE"
-description = ""
-homepage = "http://example.com/"
-tags = []
-features = []
-min_version = "0.41.0"
-
-[author]
-  name = ""
-  homepage = ""
-
-# If porting an existing theme
-[original]
-  name = ""
-  homepage = ""
-  repo = ""