From 3f08cede4c4e71244a5c5f8f6cfe1ce98e5e908b Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 26 Apr 2026 22:06:20 +0000
Subject: [PATCH] =Switching to new jvb system

---
 content/soap.php                        |  226 ++++++++++---
 assets/css/icons.css                    |    1 
 taxonomies/_setup.php                   |   14 
 assets/icons/background.svg             |   49 +++
 blocks/_setup.php                       |   36 ++
 /dev/null                               |    1 
 assets/icons/outline-flower-outline.svg |    7 
 assets/tatty-soap-rose-header.webp      |    0 
 taxonomies/flags.php                    |  128 ++++++-
 assets/icons/flower.svg                 |    1 
 assets/icons/outline-full-flower.svg    |   20 +
 atatty.php                              |   64 +++
 content/_setup.php                      |   14 
 assets/icons/outline-flower-only.svg    |    9 
 assets/icons/outline-leaves-only.svg    |    9 
 seo.php                                 |  359 ++++++++++++++++++++++
 16 files changed, 832 insertions(+), 106 deletions(-)

diff --git a/assets/css/icons.css b/assets/css/icons.css
new file mode 100644
index 0000000..8179d99
--- /dev/null
+++ b/assets/css/icons.css
@@ -0,0 +1 @@
+.icon-google-logo{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjIsMTI4YTk0LDk0LDAsMSwxLTIxLjQ5LTU5LjgyLDYsNiwwLDEsMS05LjI1LDcuNjRBODIsODIsMCwxLDAsMjA5Ljc4LDEzNEgxMjhhNiw2LDAsMCwxLDAtMTJoODhBNiw2LDAsMCwxLDIyMiwxMjhaIi8+PC9zdmc+');}.icon-apple-logo{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTkuNCwxNjcuODRDMjAxLjcxLDE1NS42OSwxOTgsMTM1LjEyLDE5OCwxMjBjMC0xOC40MiwxMy44Ni0zNC4yOSwyMi4xMi00Mi4xMmE2LDYsMCwwLDAsMC04LjcxQzIwOCw1Ny43LDE4Ny4wNyw1MCwxNjgsNTBhNzAuMjMsNzAuMjMsMCwwLDAtNDAsMTIuNTUsNjkuNiw2OS42LDAsMCwwLTg5LjMxLDguMDhBNzIuNjMsNzIuNjMsMCwwLDAsMTgsMTIzLjM1YTEyNS4xMSwxMjUuMTEsMCwwLDAsMzkuNTMsODguMzNBMzcuODUsMzcuODUsMCwwLDAsODMuNiwyMjJoODcuN0EzNy44MywzNy44MywwLDAsMCwxOTksMjEwLjA3YTEyMi42LDEyMi42LDAsMCwwLDE3LjU0LTI0LjJjNi41NS0xMiw1Ljc3LTEzLjc1LDUtMTUuNDhBNi4wNyw2LjA3LDAsMCwwLDIxOS40LDE2Ny44NFptLTI5LjIzLDM0QTI1LjgyLDI1LjgyLDAsMCwxLDE3MS4zLDIxMEg4My42QTI1Ljg1LDI1Ljg1LDAsMCwxLDY1Ljc4LDIwMywxMTMuMjEsMTEzLjIxLDAsMCwxLDMwLDEyM2E2MC41NSw2MC41NSwwLDAsMSwxNy4yMS00NEE1Ni44Miw1Ni44MiwwLDAsMSw4OCw2MmguODFhNTcuMzUsNTcuMzUsMCwwLDEsMzUuNDQsMTIuNzEsNiw2LDAsMCwwLDcuNSwwQTU3LjM5LDU3LjM5LDAsMCwxLDE2OCw2MmMxMy44OSwwLDI4LjgxLDQuNjgsMzkuMTEsMTItOS40NCwxMC4xNC0yMS4xLDI2LjU5LTIxLjEsNDYsMCwyMy43OCw3LjgxLDQyLjYsMjIuNjYsNTQuNzdBMTA3LjMzLDEwNy4zMywwLDAsMSwxOTAuMTcsMjAxLjg5Wm0tNjAtMTcxLjM5QTM4LDM4LDAsMCwxLDE2NywyaDFhNiw2LDAsMCwxLDAsMTJoLTFhMjYsMjYsMCwwLDAtMjUuMTgsMTkuNSw2LDYsMCwxLDEtMTEuNjItM1oiLz48L3N2Zz4=');}.icon-check-circle{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNzIuMjQsOTkuNzZhNiw2LDAsMCwxLDAsOC40OGwtNTYsNTZhNiw2LDAsMCwxLTguNDgsMGwtMjQtMjRhNiw2LDAsMCwxLDguNDgtOC40OEwxMTIsMTUxLjUxbDUxLjc2LTUxLjc1QTYsNiwwLDAsMSwxNzIuMjQsOTkuNzZaTTIzMCwxMjhBMTAyLDEwMiwwLDEsMSwxMjgsMjYsMTAyLjEyLDEwMi4xMiwwLDAsMSwyMzAsMTI4Wm0tMTIsMGE5MCw5MCwwLDEsMC05MCw5MEE5MC4xLDkwLjEsMCwwLDAsMjE4LDEyOFoiLz48L3N2Zz4=');}.icon-cloud-slash{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik01Mi40NCwzNkE2LDYsMCwwLDAsNDMuNTYsNDRsNDAuMTgsNDQuMmMtLjQ1Ljg3LS45LDEuNzUtMS4zMiwyLjY0QTYyLDYyLDAsMSwwLDcyLDIxNGg4OGE4NS4yMyw4NS4yMywwLDAsMCwzMi4zNS02LjNMMjAzLjU2LDIyMGE2LDYsMCwwLDAsOC44OC04LjA4Wk0xNjAsMjAySDcyYTUwLDUwLDAsMSwxLDUuOS05OS42NEE4Ni4yNSw4Ni4yNSwwLDAsMCw3NCwxMjhhNiw2LDAsMCwwLDEyLDAsNzMuOTIsNzMuOTIsMCwwLDEsNi40NC0zMC4ybDkxLjIyLDEwMC4zNEE3My42NSw3My42NSwwLDAsMSwxNjAsMjAyWm04Ni03NGE4NS44NSw4NS44NSwwLDAsMS0yMS44NSw1Ny4yNyw2LDYsMCwwLDEtNC40NywyLDYsNiwwLDAsMS00LjQ3LTEwLDc0LDc0LDAsMCwwLTk5LTEwOC45Miw2LDYsMCwxLDEtNy4xMS05LjY3QTg2LDg2LDAsMCwxLDI0NiwxMjhaIi8+PC9zdmc+');}.icon-exclamation-mark{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNDIsMjAwYTE0LDE0LDAsMSwxLTE0LTE0QTE0LDE0LDAsMCwxLDE0MiwyMDBabS0xNC00MmE2LDYsMCwwLDAsNi02VjQ4YTYsNiwwLDAsMC0xMiwwVjE1MkE2LDYsMCwwLDAsMTI4LDE1OFoiLz48L3N2Zz4=');}.icon-cloud-arrow-down{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yNDYsMTI4YTg1LjI3LDg1LjI3LDAsMCwxLTE3LjIsNTEuNiw2LDYsMCwxLDEtOS42LTcuMkE3NCw3NCwwLDEsMCw4NiwxMjhhNiw2LDAsMCwxLTEyLDAsODUuNTQsODUuNTQsMCwwLDEsMy45MS0yNS42NEE1MC42OCw1MC42OCwwLDAsMCw3MiwxMDJhNTAsNTAsMCwwLDAsMCwxMDBIOTZhNiw2LDAsMCwxLDAsMTJINzJBNjIsNjIsMCwxLDEsODIuNDMsOTAuODgsODYsODYsMCwwLDEsMjQ2LDEyOFptLTY2LjI0LDQzLjc2TDE1OCwxOTMuNTFWMTI4YTYsNiwwLDAsMC0xMiwwdjY1LjUxbC0yMS43Ni0yMS43NWE2LDYsMCwwLDAtOC40OCw4LjQ4bDMyLDMyYTYsNiwwLDAsMCw4LjQ4LDBsMzItMzJhNiw2LDAsMCwwLTguNDgtOC40OFoiLz48L3N2Zz4=');}.icon-caret-down{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTIuMjQsMTAwLjI0bC04MCw4MGE2LDYsMCwwLDEtOC40OCwwbC04MC04MGE2LDYsMCwwLDEsOC40OC04LjQ4TDEyOCwxNjcuNTFsNzUuNzYtNzUuNzVhNiw2LDAsMCwxLDguNDgsOC40OFoiLz48L3N2Zz4=');}.icon-cloud-arrow-up{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xODguMjQsMTY0LjI0YTYsNiwwLDAsMS04LjQ4LDBMMTU4LDE0Mi40OVYyMDhhNiw2LDAsMCwxLTEyLDBWMTQyLjQ5bC0yMS43NiwyMS43NWE2LDYsMCwwLDEtOC40OC04LjQ4bDMyLTMyYTYsNiwwLDAsMSw4LjQ4LDBsMzIsMzJBNiw2LDAsMCwxLDE4OC4yNCwxNjQuMjRaTTE2MCw0MkE4Ni4xLDg2LjEsMCwwLDAsODIuNDMsOTAuODgsNjIsNjIsMCwxLDAsNzIsMjE0aDQwYTYsNiwwLDAsMCwwLTEySDcyYTUwLDUwLDAsMCwxLDAtMTAwLDUwLjY4LDUwLjY4LDAsMCwxLDUuOTEuMzZBODUuNTQsODUuNTQsMCwwLDAsNzQsMTI4YTYsNiwwLDAsMCwxMiwwLDc0LDc0LDAsMSwxLDEwMy42LDY3Ljg1LDYsNiwwLDAsMCw0LjgsMTFBODYsODYsMCwwLDAsMTYwLDQyWiIvPjwvc3ZnPg==');}.icon-cloud-check{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNjAsNDJBODYuMTEsODYuMTEsMCwwLDAsODIuNDMsOTAuODgsNjIsNjIsMCwxLDAsNzIsMjE0aDg4YTg2LDg2LDAsMCwwLDAtMTcyWm0wLDE2MEg3MmE1MCw1MCwwLDAsMSwwLTEwMCw1MC42Nyw1MC42NywwLDAsMSw1LjkxLjM1QTg1LjYxLDg1LjYxLDAsMCwwLDc0LDEyOGE2LDYsMCwwLDAsMTIsMCw3NCw3NCwwLDEsMSw3NCw3NFptMzYuMjQtOTQuMjRhNiw2LDAsMCwxLDAsOC40OGwtNDgsNDhhNiw2LDAsMCwxLTguNDgsMGwtMjQtMjRhNiw2LDAsMCwxLDguNDgtOC40OEwxNDQsMTUxLjUxbDQzLjc2LTQzLjc1QTYsNiwwLDAsMSwxOTYuMjQsMTA3Ljc2WiIvPjwvc3ZnPg==');}.icon-cloud-warning{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNjAsNDJBODYuMTEsODYuMTEsMCwwLDAsODIuNDMsOTAuODgsNjIsNjIsMCwxLDAsNzIsMjE0aDg4YTg2LDg2LDAsMCwwLDAtMTcyWm0wLDE2MEg3MmE1MCw1MCwwLDAsMSwwLTEwMCw1MC42Nyw1MC42NywwLDAsMSw1LjkxLjM1QTg1LjYxLDg1LjYxLDAsMCwwLDc0LDEyOGE2LDYsMCwwLDAsMTIsMCw3NCw3NCwwLDEsMSw3NCw3NFptLTYtNzRWODhhNiw2LDAsMCwxLDEyLDB2NDBhNiw2LDAsMCwxLTEyLDBabTE2LDM2YTEwLDEwLDAsMSwxLTEwLTEwQTEwLDEwLDAsMCwxLDE3MCwxNjRaIi8+PC9zdmc+');}.icon-syncing{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0iY3VycmVudENvbG9yIiB2aWV3Qm94PSIwIDAgMjU2IDI1NiI+PHBhdGggaWQ9InJlZnJlc2giIGQ9Ik0xNjAuMDQ3IDEyMi44NzVhMzAuNzg0IDMwLjc4NCAwIDAgMC0yMS43NSA4Ljc5N2MtMi44NDIgMy4wMDMtLjQ2NyA0Ljk3MSAxLjMxMiAzLjE1NiAxMS4wNDMtMTAuNzg2IDI4LjcxLTEwLjY4IDM5LjYyNS4yMzRsNy4yMDMgNy4yMDRoLTEyLjg3NWMtMy4zNDcuMDA4LTMuMTY1IDMuODc1IDAgMy44NzVoMTYuMTFjMi4wNjIgMCAyLjU0LTEuNDE4IDIuNTYyLTQuOTdsLjA5NC0xNC45MjFjLjAyLTMuMjktMy40MzctMy4xNjUtMy40MzcgMHYxMi44NmwtNy4yMDMtNy4xODhhMzAuNzY4IDMwLjc2OCAwIDAgMC0yMS42NDEtOS4wNDd6bS0yOS41OTQgMzkuNzk3Yy0yLjA2MiAwLTIuNTI0IDEuNDAyLTIuNTQ3IDQuOTUzbC0uMDk0IDE0LjkyMmMtLjAyIDMuMjkgMy40MjIgMy4xNjQgMy40MjIgMHYtMTIuODZsNy4yMDMgNy4yMDRjMTEuOTU2IDExLjk1NSAzMS4zMTIgMTIuMDY0IDQzLjQwNy4yNSAyLjg0Mi0zLjAwMy40NTEtNC45ODgtMS4zMjgtMy4xNzItMTEuMDQzIDEwLjc4Ni0yOC43MSAxMC42OC0zOS42MjUtLjIzNWwtNy4xODgtNy4yMDNoMTIuODZjMy4zNDctLjAwOCAzLjE2NS0zLjg2IDAtMy44NmgtMTYuMTF6Ii8+PHBhdGggZD0iTTE2MCA0NGE4NC4xMSA4NC4xMSAwIDAgMC03Ni40MSA0OS4xMkE2MC43MSA2MC43MSAwIDAgMCA3MiA5MmE2MCA2MCAwIDAgMCAwIDEyMGg4OGE4NCA4NCAwIDAgMCAwLTE2OFptMCAxNjBINzJhNTIgNTIgMCAxIDEgOC41NS0xMDMuM0E4My42NiA4My42NiAwIDAgMCA3NiAxMjhhNCA0IDAgMCAwIDggMCA3NiA3NiAwIDEgMSA3NiA3NloiLz48L3N2Zz4=');}.icon-cloud-x{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNjAsNDJBODYuMTEsODYuMTEsMCwwLDAsODIuNDMsOTAuODgsNjIsNjIsMCwxLDAsNzIsMjE0aDg4YTg2LDg2LDAsMCwwLDAtMTcyWm0wLDE2MEg3MmE1MCw1MCwwLDAsMSwwLTEwMCw1MC42Nyw1MC42NywwLDAsMSw1LjkxLjM1QTg1LjYxLDg1LjYxLDAsMCwwLDc0LDEyOGE2LDYsMCwwLDAsMTIsMCw3NCw3NCwwLDEsMSw3NCw3NFptMjguMjQtODUuNzZMMTY4LjQ4LDEzNmwxOS43NiwxOS43NmE2LDYsMCwxLDEtOC40OCw4LjQ4TDE2MCwxNDQuNDhsLTE5Ljc2LDE5Ljc2YTYsNiwwLDAsMS04LjQ4LTguNDhMMTUxLjUyLDEzNmwtMTkuNzYtMTkuNzZhNiw2LDAsMCwxLDguNDgtOC40OEwxNjAsMTI3LjUybDE5Ljc2LTE5Ljc2YTYsNiwwLDAsMSw4LjQ4LDguNDhaIi8+PC9zdmc+');}.icon-arrows-clockwise{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjIsNDhWOTZhNiw2LDAsMCwxLTYsNkgxNjhhNiw2LDAsMCwxLDAtMTJoMzMuNTJMMTgzLjQ3LDcyYTgxLjUxLDgxLjUxLDAsMCwwLTU3LjUzLTI0aC0uNDZBODEuNSw4MS41LDAsMCwwLDY4LjE5LDcxLjI4YTYsNiwwLDEsMS04LjM4LTguNTgsOTMuMzgsOTMuMzgsMCwwLDEsNjUuNjctMjYuNzZIMTI2YTkzLjQ1LDkzLjQ1LDAsMCwxLDY2LDI3LjUzbDE4LDE4VjQ4YTYsNiwwLDAsMSwxMiwwWk0xODcuODEsMTg0LjcyYTgxLjUsODEuNSwwLDAsMS01Ny4yOSwyMy4zNGgtLjQ2YTgxLjUxLDgxLjUxLDAsMCwxLTU3LjUzLTI0TDU0LjQ4LDE2Nkg4OGE2LDYsMCwwLDAsMC0xMkg0MGE2LDYsMCwwLDAtNiw2djQ4YTYsNiwwLDAsMCwxMiwwVjE3NC40OGwxOCwxOC4wNWE5My40NSw5My40NSwwLDAsMCw2NiwyNy41M2guNTJhOTMuMzgsOTMuMzgsMCwwLDAsNjUuNjctMjYuNzYsNiw2LDAsMSwwLTguMzgtOC41OFoiLz48L3N2Zz4=');}.icon-share-fat{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzYuMjQsMTA3Ljc2bC04MC04MEE2LDYsMCwwLDAsMTQ2LDMyVjc0LjJjLTU0LjQ4LDMuNTktMTIwLjM5LDU1LTEyNy45MywxMjAuNjZhMTAsMTAsMCwwLDAsMTcuMjMsOGgwQzQ2LjU2LDE5MC44NSw4NywxNTIuNiwxNDYsMTUwLjEzVjE5MmE2LDYsMCwwLDAsMTAuMjQsNC4yNGw4MC04MEE2LDYsMCwwLDAsMjM2LjI0LDEwNy43NlpNMTU4LDE3Ny41MlYxNDRhNiw2LDAsMCwwLTYtNmMtMjcuNzMsMC01NC43Niw3LjI1LTgwLjMyLDIxLjU1YTE5My4zOCwxOTMuMzgsMCwwLDAtNDAuODEsMzAuNjVjNC43LTI2LjU2LDIwLjE2LTUyLDQ0LTcyLjI3Qzk4LjQ3LDk3Ljk0LDEyNy4yOSw4NiwxNTIsODZhNiw2LDAsMCwwLDYtNlY0Ni40OUwyMjMuNTEsMTEyWiIvPjwvc3ZnPg==');}.icon-trash{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTYsNTBIMTc0VjQwYTIyLDIyLDAsMCwwLTIyLTIySDEwNEEyMiwyMiwwLDAsMCw4Miw0MFY1MEg0MGE2LDYsMCwwLDAsMCwxMkg1MFYyMDhhMTQsMTQsMCwwLDAsMTQsMTRIMTkyYTE0LDE0LDAsMCwwLDE0LTE0VjYyaDEwYTYsNiwwLDAsMCwwLTEyWk05NCw0MGExMCwxMCwwLDAsMSwxMC0xMGg0OGExMCwxMCwwLDAsMSwxMCwxMFY1MEg5NFpNMTk0LDIwOGEyLDIsMCwwLDEtMiwySDY0YTIsMiwwLDAsMS0yLTJWNjJIMTk0Wk0xMTAsMTA0djY0YTYsNiwwLDAsMS0xMiwwVjEwNGE2LDYsMCwwLDEsMTIsMFptNDgsMHY2NGE2LDYsMCwwLDEtMTIsMFYxMDRhNiw2LDAsMCwxLDEyLDBaIi8+PC9zdmc+');}.icon-star{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzcuMjgsOTcuODdBMTQuMTgsMTQuMTgsMCwwLDAsMjI0Ljc2LDg4bC02MC4yNS00Ljg3LTIzLjIyLTU2LjJhMTQuMzcsMTQuMzcsMCwwLDAtMjYuNTgsMEw5MS40OSw4My4xMSwzMS4yNCw4OGExNC4xOCwxNC4xOCwwLDAsMC0xMi41Miw5Ljg5QTE0LjQzLDE0LjQzLDAsMCwwLDIzLDExMy4zMkw2OSwxNTIuOTNsLTE0LDU5LjI1YTE0LjQsMTQuNCwwLDAsMCw1LjU5LDE1LDE0LjEsMTQuMSwwLDAsMCwxNS45MS42TDEyOCwxOTYuMTJsNTEuNTgsMzEuNzFhMTQuMSwxNC4xLDAsMCwwLDE1LjkxLS42LDE0LjQsMTQuNCwwLDAsMCw1LjU5LTE1bC0xNC01OS4yNUwyMzMsMTEzLjMyQTE0LjQzLDE0LjQzLDAsMCwwLDIzNy4yOCw5Ny44N1ptLTEyLjE0LDYuMzctNDguNjksNDJhNiw2LDAsMCwwLTEuOTIsNS45MmwxNC44OCw2Mi43OWEyLjM1LDIuMzUsMCwwLDEtLjk1LDIuNTcsMi4yNCwyLjI0LDAsMCwxLTIuNi4xTDEzMS4xNCwxODRhNiw2LDAsMCwwLTYuMjgsMEw3MC4xNCwyMTcuNjFhMi4yNCwyLjI0LDAsMCwxLTIuNi0uMSwyLjM1LDIuMzUsMCwwLDEtMS0yLjU3bDE0Ljg4LTYyLjc5YTYsNiwwLDAsMC0xLjkyLTUuOTJsLTQ4LjY5LTQyYTIuMzcsMi4zNywwLDAsMS0uNzMtMi42NSwyLjI4LDIuMjgsMCwwLDEsMi4wNy0xLjY1bDYzLjkyLTUuMTZhNiw2LDAsMCwwLDUuMDYtMy42OWwyNC42My01OS42YTIuMzUsMi4zNSwwLDAsMSw0LjM4LDBsMjQuNjMsNTkuNmE2LDYsMCwwLDAsNS4wNiwzLjY5bDYzLjkyLDUuMTZhMi4yOCwyLjI4LDAsMCwxLDIuMDcsMS42NUEyLjM3LDIuMzcsMCwwLDEsMjI1LjE0LDEwNC4yNFoiLz48L3N2Zz4=');}.icon-alphabetical{--icon:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9ImN1cnJlbnRDb2xvciIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMTgzLjc4IDE4NC4wNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNTkuNTg2IDY5Ljc0MmMtMC44NTEzIDAtMS40NjEgMC4xOTY1Ni0xLjgzNjYgMC41OTcxOC0wLjM1MDU0IDAuMzc1NTgtMC41Mjk1OCAxLjAyMjktMC41Mjk1OCAxLjk0OTNzMC4xNzkwMyAxLjU5MzcgMC41Mjk1OCAxLjk5NDRjMC4zNzU1OCAwLjM3NTU4IDAuOTg1MjkgMC41NjMzOCAxLjgzNjYgMC41NjMzOGg3LjAxOTdsLTEyLjQyOCAzNC4zNjZoLTIuMTA3Yy0wLjg1MTMgMC0xLjQ2MSAwLjE5NjU2LTEuODM2NiAwLjU5NzE4LTAuMzUwNTQgMC4zNzU1OC0wLjUyOTU3IDEuMDM0MS0wLjUyOTU3IDEuOTYwNiAwIDAuOTI2NDQgMC4xNzkwMyAxLjU4MjUgMC41Mjk1NyAxLjk4MyAwLjM3NTU4IDAuMzc1NTkgMC45ODUyOSAwLjU2MzM4IDEuODM2NiAwLjU2MzM4aDEyLjU1MmMwLjg1MTMgMCAxLjQ1MjItMC4xODc3OSAxLjgwMjgtMC41NjMzOCAwLjM3NTU4LTAuNDAwNjIgMC41NjMzNy0xLjA1NjYgMC41NjMzNy0xLjk4MyAwLTAuOTI2NDUtMC4xODc3OS0xLjU4NS0wLjU2MzM3LTEuOTYwNi0wLjM1MDU0LTAuNDAwNjItMC45NTE0Ny0wLjU5NzE4LTEuODAyOC0wLjU5NzE4aC00LjU1MjFsMy4xMjExLTguOTM0OWgxOC4yMmwzLjA3NiA4LjkzNDloLTUuMDcwNGMtMC44NTEzIDAtMS40NjEgMC4xOTY1Ni0xLjgzNjYgMC41OTcxOC0wLjM1MDU0IDAuMzc1NTgtMC41Mjk1OCAxLjAzNDEtMC41Mjk1OCAxLjk2MDYgMCAwLjkyNjQ0IDAuMTc5MDMgMS41ODI1IDAuNTI5NTggMS45ODMgMC4zNzU1OCAwLjM3NTU5IDAuOTg1MjkgMC41NjMzOCAxLjgzNjYgMC41NjMzOGgxMy4yOTZjMC44NTEzIDAgMS40NTIyLTAuMTg3NzkgMS44MDI4LTAuNTYzMzggMC4zNzU1OC0wLjQwMDYyIDAuNTYzMzctMS4wNTY2IDAuNTYzMzctMS45ODMgMC0wLjkyNjQ1LTAuMTg3NzktMS41ODUtMC41NjMzNy0xLjk2MDYtMC4zNTA1NC0wLjQwMDYyLTAuOTUxNDctMC41OTcxOC0xLjgwMjgtMC41OTcxOGgtMi4yODczbC0xMy4yNjItMzcuMDM2Yy0wLjMwMDQ3LTAuODUxMy0wLjc1OTk0LTEuNDYxLTEuMzg1OS0xLjgzNjYtMC42MDA5My0wLjQwMDYyLTEuNDA5Ny0wLjU5NzE4LTIuNDExMy0wLjU5NzE4em00NC4xNDYgMGMtMC44NTEzIDAtMS40NzIzIDAuMTk2NTYtMS44NDc4IDAuNTk3MTgtMC4zNTA1NSAwLjM3NTU4LTAuNTE4MyAxLjAyMjktMC41MTgzIDEuOTQ5M3YxMS45MWMwIDAuODc2MzMgMC4yMDUzMiAxLjUwNjEgMC42MzA5OCAxLjg4MTcgMC40MjU2NiAwLjM3NTU4IDEuMTU5MyAwLjU2MzM3IDIuMTg1OSAwLjU2MzM3czEuNzQ5LTAuMTg3NzkgMi4xNzQ3LTAuNTYzMzdjMC40MjU2OS0wLjM3NTU4IDAuNjQyMjYtMS4wMDUzIDAuNjQyMjYtMS44ODE3di05LjM1MTdoMTguODUxbC0yNC43NTQgMzUuMzAxYy0wLjM1MDU0IDAuNTI1ODItMC41MTgzMSAxLjA3MTctMC41MTgzMSAxLjYyMjYgMCAwLjkyNjQ1IDAuMTY3NzcgMS41ODI1IDAuNTE4MzEgMS45ODMxIDAuMzc1NTggMC4zNzU1OCAwLjk5NjU0IDAuNTYzMzggMS44NDc4IDAuNTYzMzhoMjguNzY2YzAuODUxMyAwIDEuNDUyMi0wLjE4NzggMS44MDI4LTAuNTYzMzggMC4zNzU1OC0wLjQwMDYyIDAuNTYzMzgtMS4wNTY2IDAuNTYzMzgtMS45ODMxdi0xMi42NjVjMC0wLjg3NjMzLTAuMjE2NTgtMS40OTQ4LTAuNjQyMjUtMS44NzA0LTAuNDI1NjYtMC4zNzU1OC0xLjE0OC0wLjU2MzM4LTIuMTc0Ny0wLjU2MzM4LTEuMDI2NiAwLTEuNzQ5IDAuMTg3NzktMi4xNzQ3IDAuNTYzMzgtMC40MjU2NiAwLjM3NTU4LTAuNjQyMjQgMC45OTQwMi0wLjY0MjI0IDEuODcwNHYxMC4xMDdoLTE5Ljk3OGwyNC45MDEtMzUuNDU5YzAuMjUwMzktMC4zNTA1NCAwLjM3MTgzLTAuODM4ODMgMC4zNzE4My0xLjQ2NDggMC0wLjkyNjQ1LTAuMTg3OC0xLjU3MzctMC41NjMzOC0xLjk0OTMtMC4zNTA1NS0wLjQwMDYyLTAuOTUxNDctMC41OTcxOC0xLjgwMjgtMC41OTcxOHptLTMxLjc1MiA1LjEwNDJoMC43MDk4NWw2Ljk4NTkgMjAuMzE1aC0xNC43MTZ6bS0zNy43MjMtNDkuMTgzYy00LjczNDIgMC04LjYzMTMgMy44OTctOC42MzEzIDguNjMxM3YxMTUuNDdjMCA0LjczNDIgMy44OTcgOC42MzEzIDguNjMxMyA4LjYzMTNoMTE1LjI2YzQuNzM0MiAwIDguNjQyMS0zLjg5NyA4LjY0MjEtOC42MzEzdi0xMTUuNDdjMC00LjczNDItMy45MDgyLTguNjMxMy04LjY0MjEtOC42MzEzem0wIDUuNzI0aDExNS4yNmMxLjY1OCAwIDIuOTA3IDEuMjQ5MSAyLjkwNyAyLjkwNzF2MTE1LjQ3YzAgMS42NTgtMS4yNDkxIDIuOTA3LTIuOTA3IDIuOTA3aC0xMTUuMjZjLTEuNjU4IDAtMi44OTU4LTEuMjQ5MS0yLjg5NTgtMi45MDd2LTExNS40N2MwLTEuNjU4IDEuMjM3OC0yLjkwNzEgMi44OTU4LTIuOTA3MXoiIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNzIxMTQiLz48L3N2Zz4=');}.icon-sparkle{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xOTYuODksMTMwLjk0LDE0NC40LDExMS42LDEyNS4wNiw1OS4xMWExMy45MiwxMy45MiwwLDAsMC0yNi4xMiwwTDc5LjYsMTExLjYsMjcuMTEsMTMwLjk0YTEzLjkyLDEzLjkyLDAsMCwwLDAsMjYuMTJMNzkuNiwxNzYuNGwxOS4zNCw1Mi40OWExMy45MiwxMy45MiwwLDAsMCwyNi4xMiwwTDE0NC40LDE3Ni40bDUyLjQ5LTE5LjM0YTEzLjkyLDEzLjkyLDAsMCwwLDAtMjYuMTJabS00LjE1LDE0Ljg2LTU1LjA4LDIwLjNhNiw2LDAsMCwwLTMuNTYsMy41NmwtMjAuMyw1NS4wOGExLjkyLDEuOTIsMCwwLDEtMy42LDBMODkuOSwxNjkuNjZhNiw2LDAsMCwwLTMuNTYtMy41NkwzMS4yNiwxNDUuOGExLjkyLDEuOTIsMCwwLDEsMC0zLjZsNTUuMDgtMjAuM2E2LDYsMCwwLDAsMy41Ni0zLjU2bDIwLjMtNTUuMDhhMS45MiwxLjkyLDAsMCwxLDMuNiwwbDIwLjMsNTUuMDhhNiw2LDAsMCwwLDMuNTYsMy41Nmw1NS4wOCwyMC4zYTEuOTIsMS45MiwwLDAsMSwwLDMuNlpNMTQ2LDQwYTYsNiwwLDAsMSw2LTZoMThWMTZhNiw2LDAsMCwxLDEyLDBWMzRoMThhNiw2LDAsMCwxLDAsMTJIMTgyVjY0YTYsNiwwLDAsMS0xMiwwVjQ2SDE1MkE2LDYsMCwwLDEsMTQ2LDQwWk0yNDYsODhhNiw2LDAsMCwxLTYsNkgyMzB2MTBhNiw2LDAsMCwxLTEyLDBWOTRIMjA4YTYsNiwwLDAsMSwwLTEyaDEwVjcyYTYsNiwwLDAsMSwxMiwwVjgyaDEwQTYsNiwwLDAsMSwyNDYsODhaIi8+PC9zdmc+');}.icon-sun-dim{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjIsNDBWMzJhNiw2LDAsMCwxLDEyLDB2OGE2LDYsMCwwLDEtMTIsMFptNjgsODhhNjIsNjIsMCwxLDEtNjItNjJBNjIuMDcsNjIuMDcsMCwwLDEsMTkwLDEyOFptLTEyLDBhNTAsNTAsMCwxLDAtNTAsNTBBNTAuMDYsNTAuMDYsMCwwLDAsMTc4LDEyOFpNNTkuNzYsNjguMjRhNiw2LDAsMSwwLDguNDgtOC40OGwtOC04YTYsNiwwLDAsMC04LjQ4LDguNDhabTAsMTE5LjUyLTgsOGE2LDYsMCwxLDAsOC40OCw4LjQ4bDgtOGE2LDYsMCwxLDAtOC40OC04LjQ4Wm0xMzYtMTM2LTgsOGE2LDYsMCwxLDAsOC40OCw4LjQ4bDgtOGE2LDYsMCwwLDAtOC40OC04LjQ4Wm0uNDgsMTM2YTYsNiwwLDAsMC04LjQ4LDguNDhsOCw4YTYsNiwwLDAsMCw4LjQ4LTguNDhaTTQwLDEyMkgzMmE2LDYsMCwwLDAsMCwxMmg4YTYsNiwwLDAsMCwwLTEyWm04OCw4OGE2LDYsMCwwLDAtNiw2djhhNiw2LDAsMCwwLDEyLDB2LThBNiw2LDAsMCwwLDEyOCwyMTBabTk2LTg4aC04YTYsNiwwLDAsMCwwLDEyaDhhNiw2LDAsMCwwLDAtMTJaIi8+PC9zdmc+');}.icon-moon{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzIuMTMsMTQzLjY0YTYsNiwwLDAsMC02LTEuNDlBOTAuMDcsOTAuMDcsMCwwLDEsMTEzLjg2LDI5Ljg1YTYsNiwwLDAsMC03LjQ5LTcuNDhBMTAyLjg4LDEwMi44OCwwLDAsMCw1NC40OCw1OC42OCwxMDIsMTAyLDAsMCwwLDE5Ny4zMiwyMDEuNTJhMTAyLjg4LDEwMi44OCwwLDAsMCwzNi4zMS01MS44OUE2LDYsMCwwLDAsMjMyLjEzLDE0My42NFptLTQyLDQ4LjI5YTkwLDkwLDAsMCwxLTEyNi0xMjZBOTAuOSw5MC45LDAsMCwxLDk5LjY1LDM3LjY2LDEwMi4wNiwxMDIuMDYsMCwwLDAsMjE4LjM0LDE1Ni4zNSw5MC45LDkwLjksMCwwLDEsMTkwLjEsMTkxLjkzWiIvPjwvc3ZnPg==');}.icon-house{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTcuOSwxMTAuMWwtODAtODBhMTQsMTQsMCwwLDAtMTkuOCwwbC04MCw4MEExMy45MiwxMy45MiwwLDAsMCwzNCwxMjB2OTZhNiw2LDAsMCwwLDYsNmg2NGE2LDYsMCwwLDAsNi02VjE1OGgzNnY1OGE2LDYsMCwwLDAsNiw2aDY0YTYsNiwwLDAsMCw2LTZWMTIwQTEzLjkyLDEzLjkyLDAsMCwwLDIxNy45LDExMC4xWk0yMTAsMjEwSDE1OFYxNTJhNiw2LDAsMCwwLTYtNkgxMDRhNiw2LDAsMCwwLTYsNnY1OEg0NlYxMjBhMiwyLDAsMCwxLC41OC0xLjQybDgwLTgwYTIsMiwwLDAsMSwyLjg0LDBsODAsODBBMiwyLDAsMCwxLDIxMCwxMjBaIi8+PC9zdmc+');}.icon-x{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDQuMjQsMTk1Ljc2YTYsNiwwLDEsMS04LjQ4LDguNDhMMTI4LDEzNi40OSw2MC4yNCwyMDQuMjRhNiw2LDAsMCwxLTguNDgtOC40OEwxMTkuNTEsMTI4LDUxLjc2LDYwLjI0YTYsNiwwLDAsMSw4LjQ4LTguNDhMMTI4LDExOS41MWw2Ny43Ni02Ny43NWE2LDYsMCwwLDEsOC40OCw4LjQ4TDEzNi40OSwxMjhaIi8+PC9zdmc+');}.icon-drop-simple{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNzIuNTMsNDkuMDZhMjUxLjQyLDI1MS40MiwwLDAsMC00MS4wOS0zOCw2LDYsMCwwLDAtNi44OCwwLDI1MS40MiwyNTEuNDIsMCwwLDAtNDEuMDksMzhDNTYuMzQsODAuMjYsNDIsMTEzLjA5LDQyLDE0NGE4Niw4NiwwLDAsMCwxNzIsMEMyMTQsMTEzLjA5LDE5OS42Niw4MC4yNiwxNzIuNTMsNDkuMDZaTTEyOCwyMThhNzQuMDksNzQuMDksMCwwLDEtNzQtNzRjMC01OS42Miw1OS0xMDguOTMsNzQtMTIwLjUxQzE0MywzNS4wNywyMDIsODQuMzgsMjAyLDE0NEE3NC4wOSw3NC4wOSwwLDAsMSwxMjgsMjE4WiIvPjwvc3ZnPg==');}.icon-star-half-fi{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzkuMTgsOTcuMjZBMTYuMzgsMTYuMzgsMCwwLDAsMjI0LjkyLDg2bC01OS00Ljc2TDE0My4xNCwyNi4xNWExNi4zNiwxNi4zNiwwLDAsMC0zMC4yNywwTDkwLjExLDgxLjIzLDMxLjA4LDg2YTE2LjQ2LDE2LjQ2LDAsMCwwLTkuMzcsMjguODZsNDUsMzguODNMNTMsMjExLjc1YTE2LjQsMTYuNCwwLDAsMCwyNC41LDE3LjgyTDEyOCwxOTguNDlsNTAuNTMsMzEuMDhBMTYuNCwxNi40LDAsMCwwLDIwMywyMTEuNzVsLTEzLjc2LTU4LjA3LDQ1LTM4LjgzQTE2LjQzLDE2LjQzLDAsMCwwLDIzOS4xOCw5Ny4yNlptLTE1LjM0LDUuNDctNDguNyw0MmE4LDgsMCwwLDAtMi41Niw3LjkxbDE0Ljg4LDYyLjhhLjM3LjM3LDAsMCwxLS4xNy40OGMtLjE4LjE0LS4yMy4xMS0uMzgsMGwtNTQuNzItMzMuNjVBOCw4LDAsMCwwLDEyOCwxODEuMVYzMmMuMjQsMCwuMjcuMDguMzUuMjZMMTUzLDkxLjg2YTgsOCwwLDAsMCw2Ljc1LDQuOTJsNjMuOTEsNS4xNmMuMTYsMCwuMjUsMCwuMzQuMjlTMjI0LDEwMi42MywyMjMuODQsMTAyLjczWiIvPjwvc3ZnPg==');}.icon-star-fi{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzQuMjksMTE0Ljg1bC00NSwzOC44M0wyMDMsMjExLjc1YTE2LjQsMTYuNCwwLDAsMS0yNC41LDE3LjgyTDEyOCwxOTguNDksNzcuNDcsMjI5LjU3QTE2LjQsMTYuNCwwLDAsMSw1MywyMTEuNzVsMTMuNzYtNTguMDctNDUtMzguODNBMTYuNDYsMTYuNDYsMCwwLDEsMzEuMDgsODZsNTktNC43NiwyMi43Ni01NS4wOGExNi4zNiwxNi4zNiwwLDAsMSwzMC4yNywwbDIyLjc1LDU1LjA4LDU5LDQuNzZhMTYuNDYsMTYuNDYsMCwwLDEsOS4zNywyOC44NloiLz48L3N2Zz4=');}
\ No newline at end of file
diff --git a/assets/icons/background.svg b/assets/icons/background.svg
new file mode 100644
index 0000000..1d058b1
--- /dev/null
+++ b/assets/icons/background.svg
@@ -0,0 +1,49 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32">
+  <path id="a" fill="none" stroke="currentColor"stroke-width=".014" d="M15.822 16.06c-.021 0-.083-.034-.06-.09.004-.01.023-.033.024-.037.004-.01-.009-.052.024-.08.02-.016.065-.014.08-.003-.007-.02.007-.089.066-.084.017.001.038.014.05.01 0 0 .07-.035.098.026a.1.1 0 0 1 .008.032l-.002.016.016-.006c.015-.005.073-.01.085.044.003.012.001.04.003.045.003.01.038.036.027.078-.006.025-.044.05-.063.05.018.011.048.075-.004.107-.014.009-.039.011-.046.02 0 0-.036.07-.094.038a.1.1 0 0 1-.025-.022L16 16.19l-.008.014c-.01.013-.054.05-.096.016-.01-.009-.025-.033-.028-.036-.008-.006-.052-.007-.068-.047-.01-.024.006-.066.022-.077" clip-rule="evenodd"/>
+  <use xlink:href="#a" transform="rotate(-39.276 -10.607 80.402)scale(2.98742)"/>
+  <use xlink:href="#a" transform="rotate(-44.805 -37.563 118.023)scale(5.389)"/>
+  <use xlink:href="#a" transform="rotate(218.887 50.994 84.718)scale(7.37672)"/>
+  <use xlink:href="#a" transform="rotate(62.282 117.36 -13.588)scale(5.79528)"/>
+  <use xlink:href="#a" transform="rotate(238.34 48.999 120.72)scale(8.92312)"/>
+  <use xlink:href="#a" transform="rotate(-31.775 -43.1 147.008)scale(4.302)"/>
+  <use xlink:href="#a" transform="rotate(134.177 36.716 20.345)scale(2.78662)"/>
+  <use xlink:href="#a" transform="rotate(225.09 44.205 71.743)scale(6.01982)"/>
+  <use xlink:href="#a" transform="rotate(121.022 50.094 29.998)scale(3.655)"/>
+  <use xlink:href="#a" transform="rotate(-42.154 -.603 72.59)scale(2.49675)"/>
+  <use xlink:href="#a" transform="rotate(5.681 862.543 -904.797)scale(6.21292)"/>
+  <use xlink:href="#a" transform="rotate(-10.91 -189.46 426.469)scale(4.60314)"/>
+  <use xlink:href="#a" transform="rotate(-26.868 -253.855 417.234)scale(10.59674)"/>
+  <use xlink:href="#a" transform="rotate(-50.122 14.878 36.655)scale(1.79712)"/>
+  <use xlink:href="#a" transform="rotate(-75.299 .522 46.75)scale(2.69331)"/>
+  <use xlink:href="#a" transform="rotate(53.285 27.111 17.872)scale(1.1517)"/>
+  <use xlink:href="#a" transform="rotate(254.654 31.68 165.897)scale(10.98135)"/>
+  <use xlink:href="#a" transform="rotate(212.906 38.692 44.239)scale(3.96058)"/>
+  <use xlink:href="#a" transform="rotate(-96.544 17.81 43.099)scale(3.2742)"/>
+  <use xlink:href="#a" transform="rotate(-88.844 23.031 68.996)scale(4.3728)"/>
+  <use xlink:href="#a" transform="rotate(-70.931 13.948 33.09)scale(2.28257)"/>
+  <use xlink:href="#a" transform="rotate(-4.913 -447.208 618.813)scale(3.99985)"/>
+  <use xlink:href="#a" transform="rotate(31.604 86.295 -7.457)scale(2.24754)"/>
+  <use xlink:href="#a" transform="rotate(47.702 37.284 -2.691)scale(1.83035)"/>
+  <use xlink:href="#a" transform="rotate(4.733 789.311 -703.802)scale(5.42008)"/>
+  <use xlink:href="#a" transform="rotate(71.06 112.935 -13.855)scale(6.09888)"/>
+  <use xlink:href="#a" transform="rotate(88.668 89.128 13.941)scale(5.28266)"/>
+  <use xlink:href="#a" transform="rotate(-57.362 10.02 68.658)scale(3.2221)"/>
+  <use xlink:href="#a" transform="rotate(226.012 30.028 50.952)scale(4.6482)"/>
+  <use xlink:href="#a" transform="rotate(118.857 122.41 39.803)scale(9.78019)"/>
+  <use xlink:href="#a" transform="rotate(119.17 60.286 21.488)scale(4.66228)"/>
+  <use xlink:href="#a" transform="rotate(200.967 51.27 77.533)scale(6.88209)"/>
+  <use xlink:href="#a" transform="rotate(42.92 142.71 -17.984)scale(5.3006)"/>
+  <use xlink:href="#a" transform="rotate(-99.572 24.045 17.834)scale(1.30925)"/>
+  <use xlink:href="#a" transform="rotate(220.884 71.004 121.013)scale(10.19418)"/>
+  <use xlink:href="#a" transform="rotate(-48.299 -31.788 171.312)scale(7.43685)"/>
+  <use xlink:href="#a" transform="rotate(-1.027 -1772.216 2374.039)scale(3.1542)"/>
+  <use xlink:href="#a" transform="rotate(2.29 44.297 -136.78)scale(1.91142)"/>
+  <use xlink:href="#a" transform="rotate(51.988 151.469 -32.38)scale(7.12958)"/>
+  <use xlink:href="#a" transform="rotate(-46.275 25.314 5.938)scale(.69533)"/>
+  <use xlink:href="#a" transform="rotate(-52.63 -32.143 148.992)scale(7.16946)"/>
+  <use xlink:href="#a" transform="rotate(110.103 144.559 34.06)scale(9.79811)"/>
+  <use xlink:href="#a" transform="rotate(200.002 41.207 36.631)scale(3.87382)"/>
+  <use xlink:href="#a" transform="rotate(65.758 91.222 -2.921)scale(5.44265)"/>
+  <use xlink:href="#a" transform="rotate(116.933 115.074 29.597)scale(8.84467)"/>
+  <use xlink:href="#a" transform="rotate(242.866 29.314 73.544)scale(5.87325)"/>
+</svg>
\ No newline at end of file
diff --git a/assets/icons/flower.svg b/assets/icons/flower.svg
new file mode 100644
index 0000000..3db99ab
--- /dev/null
+++ b/assets/icons/flower.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" clip-rule="evenodd" viewBox="0 0 64 32"><g stroke="#151515" stroke-width=".78"><path fill="url(#a)" d="M11.22 29.22c1.15-8.26 6.5-13.06 13.03-13.44-.32 8.1-6.39 13.74-13.03 13.44"/><path fill="url(#b)" d="M7.6 2.99c2.61 9 9.33 13.47 16.65 12.84C22.6 6.88 14.94 1.6 7.6 3"/><path fill="url(#c)" d="M2.39 15.95c7.82-5.8 16.2-5.28 21.86-.17-7 6.37-16.66 5.94-21.86.17"/><path fill="url(#d)" d="M52.78 29.22c-1.15-8.26-6.5-13.06-13.03-13.44.32 8.1 6.39 13.74 13.03 13.44"/><path fill="url(#e)" d="M56.4 2.99c-2.61 9-9.33 13.47-16.65 12.84C41.4 6.88 49.06 1.6 56.4 3"/><path fill="url(#f)" d="M61.61 15.95c-7.82-5.8-16.2-5.28-21.86-.17 7 6.37 16.66 5.94 21.86.17"/></g><g stroke="#151515" stroke-width=".78"><path fill="url(#g)" d="M34.77 12.56c-1.9 1.72-2.88.69-5.54 0 0 0-2.87-3.87-3.47-4.7-.52-.73-.01-3.56 1.46-4.51 2.14-1.38 4.06.11 4.78.11s2.64-1.49 4.78-.11c1.47.95 1.98 3.78 1.46 4.5-.6.84-3.47 4.7-3.47 4.7"/><path fill="url(#h)" d="M29.48 12.38c1.14 1.5-1.06 3.5-1.7 5.26 0 0-4.57 1.53-5.55 1.84-.85.27-3.39-1.08-3.83-2.78-.65-2.46 1.36-3.82 1.58-4.5s-.6-2.97 1.37-4.58c1.36-1.11 4.2-.71 4.73 0 .61.83 3.4 4.76 3.4 4.76"/><path fill="url(#i)" d="m27.68 17.34 4.47 3.26.05 5.84c0 .9-2.08 2.89-3.83 2.79-2.54-.15-3.22-2.48-3.8-2.9s-3-.35-3.93-2.72c-.64-1.64.62-4.22 1.47-4.5.97-.32 5.57-1.77 5.57-1.77"/><path fill="url(#j)" d="m31.85 20.6 4.47-3.26s4.6 1.45 5.57 1.77c.85.28 2.1 2.86 1.47 4.5-.92 2.37-3.35 2.3-3.93 2.72s-1.26 2.75-3.8 2.9c-1.75.1-3.82-1.9-3.83-2.79z"/><path fill="url(#k)" d="M36.23 17.64c-.57-1.76-3.49-2.3-1.71-5.26 0 0 2.79-3.93 3.4-4.76.53-.71 3.37-1.11 4.73 0 1.97 1.6 1.15 3.9 1.37 4.58s2.23 2.04 1.58 4.5c-.44 1.7-2.98 3.05-3.83 2.78-.98-.3-5.54-1.84-5.54-1.84"/></g><path fill="none" stroke="#151515" stroke-width=".78" d="M32 9.51v2.73zm-6.82 4.96 2.59.84zm13.64 0-2.59.84zm-9.43 5.81-1.6 2.2zm5.23 0 1.6 2.2z"/><path fill="#c08e47" stroke="#151515" stroke-width=".78" d="M36.32 16.65a4.4 4.4 0 0 1-4.41 4.42 4.4 4.4 0 0 1-4.42-4.42 4.4 4.4 0 0 1 4.42-4.41 4.4 4.4 0 0 1 4.41 4.41"/><path fill="#151515" d="M33.76 16.69a1.83 1.83 0 0 1-1.83 1.82 1.83 1.83 0 0 1-1.82-1.82 1.83 1.83 0 0 1 1.82-1.83 1.83 1.83 0 0 1 1.83 1.83"/><defs><linearGradient id="a" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(-45.71 40.17 1.23)scale(18.63563)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#9fac9d"/><stop offset=".19" stop-color="#738670"/><stop offset=".4" stop-color="#496144"/><stop offset="1" stop-color="#365131"/></linearGradient><linearGradient id="b" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(37.48 -.74 12.8)scale(20.93287 -20.93287)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#9fac9d"/><stop offset=".19" stop-color="#738670"/><stop offset=".4" stop-color="#496144"/><stop offset="1" stop-color="#365131"/></linearGradient><linearGradient id="c" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(-.28 3259.96 -502.7)scale(21.76222)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#9fac9d"/><stop offset=".19" stop-color="#738670"/><stop offset=".4" stop-color="#496144"/><stop offset="1" stop-color="#365131"/></linearGradient><linearGradient id="d" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(45.71 -8.17 77.14)scale(-18.63563 18.63563)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#9fac9d"/><stop offset=".19" stop-color="#738670"/><stop offset=".4" stop-color="#496144"/><stop offset="1" stop-color="#365131"/></linearGradient><linearGradient id="e" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(142.52 27.65 11.1)scale(20.93287)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#9fac9d"/><stop offset=".19" stop-color="#738670"/><stop offset=".4" stop-color="#496144"/><stop offset="1" stop-color="#365131"/></linearGradient><linearGradient id="f" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(-179.72 30.77 7.87)scale(21.76222 -21.76222)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#9fac9d"/><stop offset=".19" stop-color="#738670"/><stop offset=".4" stop-color="#496144"/><stop offset="1" stop-color="#365131"/></linearGradient><linearGradient id="g" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(90 14.35 17.57)scale(9.33844)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#c8705a"/><stop offset=".6" stop-color="#d18876"/><stop offset=".81" stop-color="#e6c0b6"/><stop offset="1" stop-color="#fbf9f7"/></linearGradient><linearGradient id="h" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(18 -28.66 68.36)scale(9.33843)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#c8705a"/><stop offset=".6" stop-color="#d18876"/><stop offset=".81" stop-color="#e6c0b6"/><stop offset="1" stop-color="#fbf9f7"/></linearGradient><linearGradient id="i" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(-54 38.33 -10.75)scale(9.33844)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#c8705a"/><stop offset=".6" stop-color="#d18876"/><stop offset=".81" stop-color="#e6c0b6"/><stop offset="1" stop-color="#fbf9f7"/></linearGradient><linearGradient id="j" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(234 26.57 3.14)scale(9.33844)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#c8705a"/><stop offset=".6" stop-color="#d18876"/><stop offset=".81" stop-color="#e6c0b6"/><stop offset="1" stop-color="#fbf9f7"/></linearGradient><linearGradient id="k" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(162 21.16 9.52)scale(9.33843)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#c8705a"/><stop offset=".6" stop-color="#d18876"/><stop offset=".81" stop-color="#e6c0b6"/><stop offset="1" stop-color="#fbf9f7"/></linearGradient></defs></svg>
\ No newline at end of file
diff --git a/assets/icons/jakevan-logo.svg b/assets/icons/jakevan-logo.svg
deleted file mode 100644
index 9f1c702..0000000
--- a/assets/icons/jakevan-logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2" viewBox="0 0 32 32"><path d="M17.88 14.68H12.9l-.43-1.63H9.58l-.45 1.63H6.5l2.89-8.74h3.2l2.89 8.64v-8.6h2.4v3.78c.1-.2.22-.38.35-.57.13-.2.26-.37.39-.54l1.86-2.67h7.8v1.89H25.4v1.37h2.65v1.88H25.4v1.65h2.86v1.91h-7.93l-1.75-3.32-.7.41zm5.13-8.59-2.7 3.79 2.7 4.74zm-11.05 5.03-.38-1.43a136.86 136.86 0 0 0-.4-1.55L11 7.38a17.76 17.76 0 0 1-.36 1.6l-.18.71-.39 1.43zm-8.58 6.3a5.74 5.74 0 0 1-1.24-.13v-1.83l.41.08c.15.03.3.05.47.05.3 0 .51-.06.67-.17a.92.92 0 0 0 .34-.52c.06-.23.1-.52.1-.86V5.98h2.4v7.85c0 .88-.13 1.57-.4 2.1-.26.52-.63.9-1.1 1.14-.48.23-1.03.35-1.65.35Z" style="fill:currentColor;stroke-width:.0184392" transform="translate(1.4 .66) scale(.96050134)"/><path d="M22.82 22.27h-4.06l-.37-1.4H15.9l-.39 1.4h-2.26l2.49-7.53h2.75l2.49 7.44v-7.41h2.7l2.77 5.21h.03a41.1 41.1 0 0 1-.07-1.82v-3.39h1.83v7.5h-2.7l-2.79-5.28h-.04a12.83 12.83 0 0 1 .08 1.26l.02.64zm-4.86-3.07-.33-1.23a89.07 89.07 0 0 0-.35-1.34l-.14-.65a15.04 15.04 0 0 1-.31 1.37l-.16.62-.33 1.23zm-3.85-4.43-2.5 7.5H9.2l-2.5-7.5h2.32l1.04 3.8a15.03 15.03 0 0 1 .36 1.76 7.61 7.61 0 0 1 .2-1.2l.14-.54 1.06-3.82z" style="fill:currentColor;stroke-width:.0159884" transform="translate(1.4 .66) scale(.96050134)"/><path d="M11.9 24.21c0 .4-.07.72-.2.99-.15.26-.36.46-.63.6-.28.13-.62.2-1.03.2H9.2v-3.5h.97c.38 0 .7.06.96.19.25.13.45.32.58.58.14.25.2.57.2.94zm-.26.01c0-.33-.05-.61-.16-.83a1.1 1.1 0 0 0-.51-.51 1.95 1.95 0 0 0-.87-.17h-.66v3.07h.6c.53 0 .93-.13 1.2-.39.27-.26.4-.65.4-1.17zM14.27 26h-1.95v-3.5h1.95v.22h-1.7v1.32h1.6v.23h-1.6v1.5h1.7zm1.28-3.5c.28 0 .52.02.7.08a.8.8 0 0 1 .44.3c.1.14.14.33.14.57a.9.9 0 0 1-.1.45.87.87 0 0 1-.27.32c-.12.08-.25.14-.4.18l.98 1.6h-.3l-.92-1.53h-.89V26h-.25v-3.5zm-.03.21h-.59v1.55h.71c.3 0 .52-.07.69-.21.16-.14.24-.34.24-.6 0-.28-.09-.47-.26-.58-.17-.1-.43-.16-.79-.16zm5.57-.22L20.12 26h-.25l-.76-2.65-.05-.16-.04-.14a18.8 18.8 0 0 1-.06-.24 20.6 20.6 0 0 1-.11.48L18.09 26h-.25l-.96-3.5h.26l.67 2.47a27.36 27.36 0 0 1 .09.35l.04.17.03.15.03-.16a4.83 4.83 0 0 1 .14-.53l.7-2.46h.25l.73 2.48a11.98 11.98 0 0 1 .13.53l.04.15a11.02 11.02 0 0 1 .15-.68l.69-2.48zM23.26 26h-1.95v-3.5h1.95v.22h-1.7v1.32h1.6v.23h-1.6v1.5h1.7zm1.28-3.5c.28 0 .52.02.71.08a.8.8 0 0 1 .43.3c.1.14.14.33.14.57a.9.9 0 0 1-.1.45.87.87 0 0 1-.27.32c-.11.08-.25.14-.4.18l.98 1.6h-.3l-.92-1.53h-.88V26h-.26v-3.5zm-.02.21h-.6v1.55h.72c.29 0 .51-.07.68-.21.16-.14.24-.34.24-.6 0-.28-.08-.47-.26-.58-.17-.1-.43-.16-.78-.16zM26.5 26h-.25v-3.5h1.95v.22h-1.7v1.49h1.6v.22h-1.6z" style="fill:currentColor;stroke-width:.0101068" transform="translate(1.4 .66) scale(.96050134)"/></svg>
\ No newline at end of file
diff --git a/assets/icons/outline-flower-only.svg b/assets/icons/outline-flower-only.svg
new file mode 100644
index 0000000..6391d57
--- /dev/null
+++ b/assets/icons/outline-flower-only.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="100%" height="100%" viewBox="0 0 678 654" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
+    <g transform="matrix(1,0,0,1,-621.261,-244.389)">
+        <g id="Just-Flower" serif:id="Just Flower" transform="matrix(1,0,0,1,-64.0505,-453.697)">
+            <path d="M863.37,806.673C863.26,800.731 863.72,794.227 864.829,787.442C869.317,760.01 883.615,728.099 906.516,713.348C939.7,691.973 970.817,697.023 994.431,704.695C1003.08,707.504 1010.62,710.656 1016.75,712.731C1019.65,713.715 1022.07,714.52 1024,714.52C1025.93,714.52 1028.35,713.715 1031.26,712.731C1037.38,710.656 1044.92,707.504 1053.57,704.695C1077.18,697.023 1108.3,691.973 1141.48,713.348C1164.38,728.099 1178.68,760.01 1183.17,787.442C1184.28,794.24 1184.74,800.757 1184.63,806.708C1190.27,804.751 1196.63,803.166 1203.47,802.119C1230.95,797.909 1265.71,801.647 1286.82,818.869C1317.4,843.824 1322.22,874.977 1322.22,899.807C1322.22,908.899 1321.55,917.05 1321.47,923.512C1321.43,926.578 1321.41,929.124 1322.01,930.965C1322.61,932.805 1324.12,934.854 1325.95,937.312C1329.82,942.492 1335.15,948.694 1340.49,956.051C1355.09,976.138 1369.5,1004.17 1359.43,1042.34C1352.48,1068.67 1326.55,1092.13 1301.84,1104.88C1295.64,1108.08 1289.5,1110.55 1283.74,1112.29C1287.38,1117.07 1290.88,1122.67 1294.01,1128.89C1306.5,1153.72 1313.69,1187.94 1303.83,1213.34C1289.55,1250.14 1261.41,1264.34 1237.79,1272.01C1229.15,1274.82 1221.19,1276.71 1215.02,1278.63C1212.09,1279.54 1209.66,1280.31 1208.1,1281.45C1206.53,1282.58 1205.05,1284.65 1203.28,1287.16C1199.55,1292.43 1195.3,1299.42 1189.95,1306.78C1175.36,1326.86 1153.15,1349.24 1113.74,1351.45C1086.54,1352.98 1056.22,1335.56 1036.46,1316.01C1031.56,1311.16 1027.36,1306.15 1023.95,1301.27C1020.54,1306.15 1016.34,1311.16 1011.44,1316.01C991.684,1335.56 961.36,1352.98 934.162,1351.45C894.751,1349.24 872.546,1326.86 857.951,1306.78C852.606,1299.42 848.354,1292.43 844.622,1287.16C842.851,1284.65 841.37,1282.58 839.804,1281.45C838.238,1280.31 835.811,1279.54 832.883,1278.63C826.712,1276.71 818.754,1274.82 810.107,1272.01C786.493,1264.34 758.352,1250.14 744.069,1213.34C734.212,1187.94 741.401,1153.72 753.895,1128.89C757.036,1122.65 760.551,1117.04 764.196,1112.24C758.482,1110.51 752.403,1108.05 746.257,1104.88C721.555,1092.13 695.624,1068.67 688.671,1042.34C678.597,1004.17 693.015,976.138 707.609,956.051C712.953,948.694 718.283,942.492 722.147,937.312C723.981,934.854 725.493,932.805 726.091,930.965C726.689,929.124 726.67,926.578 726.631,923.512C726.55,917.05 725.884,908.899 725.884,899.807C725.884,874.977 730.698,843.824 761.281,818.869C782.387,801.647 817.154,797.909 844.63,802.119C851.426,803.16 857.753,804.732 863.37,806.673ZM953.027,945.179C952.38,944.658 951.8,944.046 951.307,943.353L949.633,940.999C938.724,926.293 882.354,850.275 869.652,832.555C868.758,831.308 867.949,829.841 867.231,828.179C866.466,827.727 865.638,827.286 864.759,826.847C858.832,823.887 850.816,821.614 841.853,820.24C819.177,816.766 790.291,818.859 772.871,833.073C747.728,853.589 744.218,879.395 744.217,899.807C744.217,916.146 745.792,929.659 743.527,936.63C741.262,943.601 732.045,953.607 722.441,966.826C710.443,983.341 698.116,1006.28 706.398,1037.66C712.136,1059.4 734.275,1078.07 754.663,1088.59C762.721,1092.74 770.542,1095.62 777.076,1096.7C778.167,1096.89 779.209,1097.03 780.19,1097.11C781.605,1096.3 782.985,1095.67 784.313,1095.23C802.123,1089.32 871.495,1067.48 901.611,1058.01C906.552,1056.35 910.427,1055.05 912.829,1054.24C911.552,1047.44 910.884,1040.43 910.884,1033.26C910.884,1024.53 911.875,1016.03 913.751,1007.86L860.489,990.555C855.678,988.992 853.04,983.816 854.604,979.004C856.167,974.193 861.343,971.556 866.155,973.119L919.3,990.387C926.595,972.603 938.29,957.081 953.027,945.179ZM917.756,1072.16C915.343,1072.91 911.749,1074.04 907.276,1075.45C877.269,1085.52 808.507,1108.56 790.652,1114.23C789.261,1114.68 787.703,1114.98 786.001,1115.16C785.226,1115.82 784.439,1116.57 783.633,1117.39C778.987,1122.11 774.347,1129.03 770.272,1137.13C759.96,1157.63 753.024,1185.75 761.16,1206.7C772.902,1236.96 796.359,1248.27 815.773,1254.58C831.312,1259.63 844.65,1262.31 850.58,1266.61C856.51,1270.92 863.178,1282.78 872.783,1296C884.781,1312.51 902.79,1331.33 935.19,1333.14C957.637,1334.4 982.237,1319.12 998.54,1302.98C1004.98,1296.6 1010.13,1290.05 1013.19,1284.17C1013.66,1283.27 1014.08,1282.4 1014.44,1281.56C1014.06,1279.82 1013.86,1278.19 1013.85,1276.68C1013.72,1256.19 1014.52,1171.41 1014.77,1146.05C996.874,1144.6 980.149,1138.97 965.571,1130.15L932.131,1176.17C929.157,1180.27 923.42,1181.17 919.327,1178.2C915.234,1175.23 914.325,1169.49 917.299,1165.4L950.705,1119.42C935.995,1106.88 924.531,1090.64 917.756,1072.16ZM1022.32,1146.41L1023.89,1148L1023.9,1146.43C1023.37,1146.43 1022.85,1146.42 1022.32,1146.41ZM1024.01,1146.43L1024.01,1148L1025.58,1146.42C1025.07,1146.42 1024.56,1146.43 1024.05,1146.43C1024.04,1146.43 1024.02,1146.43 1024.01,1146.43ZM1033.13,1146.07C1033.38,1171.44 1034.18,1256.2 1034.05,1276.68C1034.04,1278.19 1033.84,1279.82 1033.46,1281.56C1033.82,1282.4 1034.24,1283.27 1034.71,1284.17C1037.77,1290.05 1042.92,1296.6 1049.36,1302.98C1065.66,1319.12 1090.27,1334.4 1112.71,1333.14C1145.11,1331.33 1163.12,1312.51 1175.12,1296C1184.72,1282.78 1191.39,1270.92 1197.32,1266.61C1203.25,1262.31 1216.59,1259.63 1232.13,1254.58C1251.54,1248.27 1275,1236.96 1286.74,1206.7C1294.88,1185.75 1287.94,1157.63 1277.63,1137.13C1273.55,1129.03 1268.91,1122.11 1264.27,1117.39C1263.45,1116.56 1262.66,1115.8 1261.87,1115.13C1260.26,1114.96 1258.78,1114.66 1257.45,1114.23C1240.16,1108.74 1175.13,1086.96 1143.79,1076.44C1137.95,1074.61 1133.29,1073.14 1130.33,1072.21C1123.55,1090.68 1112.09,1106.89 1097.4,1119.42L1130.8,1165.4C1133.78,1169.49 1132.87,1175.23 1128.77,1178.2C1124.68,1181.17 1118.94,1180.27 1115.97,1176.17L1082.53,1130.15C1067.9,1139 1051.1,1144.64 1033.13,1146.07ZM1135.27,1054.24C1138.13,1055.21 1143.09,1056.87 1149.45,1059.01C1181,1068.92 1246.38,1089.52 1263.59,1095.23C1264.92,1095.67 1266.31,1096.31 1267.74,1097.12C1268.77,1097.05 1269.87,1096.9 1271.03,1096.7C1277.56,1095.62 1285.38,1092.74 1293.44,1088.59C1313.83,1078.07 1335.96,1059.4 1341.7,1037.66C1349.99,1006.28 1337.66,983.341 1325.66,966.826C1316.06,953.607 1306.84,943.601 1304.57,936.63C1302.31,929.659 1303.88,916.146 1303.88,899.807C1303.88,879.395 1300.37,853.589 1275.23,833.073C1257.81,818.859 1228.92,816.766 1206.25,820.24C1197.29,821.614 1189.27,823.887 1183.34,826.847C1182.41,827.312 1181.54,827.78 1180.73,828.26C1180.03,829.889 1179.23,831.329 1178.35,832.555C1166.42,849.193 1116,917.227 1100.85,937.647L1096.79,943.353C1096.3,944.046 1095.72,944.658 1095.07,945.179C1109.81,957.081 1121.51,972.603 1128.8,990.387L1181.95,973.119C1186.76,971.556 1191.93,974.193 1193.5,979.004C1195.06,983.816 1192.42,988.992 1187.61,990.555L1134.35,1007.86C1136.23,1016.03 1137.22,1024.53 1137.22,1033.26C1137.22,1040.43 1136.55,1047.44 1135.27,1054.24ZM1080.46,935.155C1080.76,934.231 1081.22,933.348 1081.81,932.542L1086.02,926.87C1100.72,906.217 1149.91,837.142 1162.06,820.645C1162.94,819.449 1164.04,818.263 1165.35,817.102C1165.55,816.203 1165.72,815.241 1165.87,814.227C1166.86,807.676 1166.54,799.35 1165.08,790.401C1161.37,767.761 1150.46,740.935 1131.56,728.761C1104.28,711.188 1078.65,715.824 1059.23,722.131C1043.69,727.18 1031.33,732.854 1024,732.854C1016.67,732.854 1004.31,727.18 988.766,722.131C969.352,715.824 943.725,711.188 916.444,728.761C897.543,740.935 886.626,767.761 882.922,790.401C881.459,799.35 881.144,807.676 882.127,814.227C882.273,815.199 882.437,816.124 882.63,816.99C883.99,818.187 885.135,819.41 886.045,820.645C898.972,838.201 953.849,915.302 964.465,930.222L966.186,932.542C966.795,933.362 967.252,934.262 967.554,935.204C981.689,927.036 997.751,921.837 1014.88,920.461L1014.88,865.061C1014.88,860.002 1018.99,855.894 1024.05,855.894C1029.11,855.894 1033.22,860.002 1033.22,865.061L1033.22,920.461C1050.32,921.834 1066.35,927.016 1080.46,935.155ZM1023.44,938.43C971.383,938.757 929.217,981.124 929.217,1033.26C929.217,1085.6 971.711,1128.1 1024.05,1128.1C1076.39,1128.1 1118.88,1085.6 1118.88,1033.26C1118.88,981.124 1076.72,938.757 1024.66,938.43C1024.46,938.443 1024.25,938.45 1024.05,938.45C1023.85,938.45 1023.64,938.443 1023.44,938.43ZM1024.05,990.261C1047.78,990.261 1067.05,1009.53 1067.05,1033.26C1067.05,1056.99 1047.78,1076.26 1024.05,1076.26C1000.32,1076.26 981.051,1056.99 981.051,1033.26C981.051,1009.53 1000.32,990.261 1024.05,990.261Z" style="fill:rgb(21,21,21);"/>
+        </g>
+    </g>
+</svg>
diff --git a/assets/icons/outline-flower-outline.svg b/assets/icons/outline-flower-outline.svg
new file mode 100644
index 0000000..9bb1283
--- /dev/null
+++ b/assets/icons/outline-flower-outline.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="100%" height="100%" viewBox="0 0 678 654" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">
+    <g transform="matrix(1,0,0,1,-621.295,-244.479)">
+        <path id="flower-outline" serif:id="flower outline" d="M718.517,652.607C690.24,653.335 606.315,606.764 637.178,531.472C643.603,515.798 668.966,485.617 670.758,480.1C675.081,466.796 658.137,409.967 703.025,372.274C729.434,350.099 790.219,353.213 810.54,368.419C801.346,341.424 819.838,247.862 900.715,253.927C923.119,255.608 952.139,272.901 967.573,268.545C968.394,268.314 1063.01,220.677 1100.24,302.484C1107.31,318.002 1111.36,341.195 1111.34,346.081C1111.31,353.58 1109.39,360.992 1109.37,368.491C1116.48,366.137 1122.91,362.006 1130.02,359.653C1150.37,352.916 1228.8,347.408 1246.21,418.801C1250.23,435.259 1247.45,474.583 1249.24,480.1C1253.54,493.316 1300.7,529.529 1286.52,586.3C1278.06,620.163 1226.27,653.441 1201.27,652.601C1224.58,668.409 1265.37,755.66 1196.02,798.51C1176.91,810.319 1143.27,813.386 1133.34,825.982C1132.81,826.653 1084.26,920.821 1006.03,876.493C991.175,868.073 974.26,851.662 971.427,847.72C967.056,841.638 964.271,834.513 959.9,828.43C955.529,834.513 952.745,841.638 948.373,847.72C935.859,865.135 875.666,915.654 819.622,868.144C806.7,857.19 785.835,823.742 781.142,820.332C769.893,812.16 710.466,810.595 688.564,756.324C675.514,723.991 697.797,666.675 718.517,652.607C718.517,652.607 718.517,652.607 718.517,652.607Z" style="fill:none;stroke:rgb(21,21,21);stroke-width:18.33px;"/>
+    </g>
+</svg>
diff --git a/assets/icons/outline-full-flower.svg b/assets/icons/outline-full-flower.svg
new file mode 100644
index 0000000..6e5bb02
--- /dev/null
+++ b/assets/icons/outline-full-flower.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="100%" height="100%" viewBox="0 0 1414 655" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">
+    <g transform="matrix(1,0,0,1,-253.224,-243.245)">
+        <g id="full-lined" transform="matrix(1,0,0,1,-64,-440.157)">
+            <g id="leaf" transform="matrix(0.600914,-0.610084,0.610084,0.600914,-290.624,902.117)">
+                <path d="M601.336,1140.64C495.24,1147.67 393.133,1109.62 323.828,1032.66C321.81,1030.42 320.831,1027.44 321.13,1024.44C321.43,1021.44 322.98,1018.7 325.401,1016.9C401.269,960.575 479.305,928.984 554.404,919.343C457.854,836.896 403.384,718.667 410.757,595.613C410.937,592.604 412.378,589.81 414.725,587.919C417.072,586.027 420.109,585.213 423.087,585.676C532.042,602.622 622.163,641.679 691.568,696.292C694.168,615.752 718.204,529.8 766.864,442.836C768.337,440.205 770.85,438.317 773.786,437.635C776.723,436.954 779.811,437.542 782.291,439.256C897.309,518.723 956.331,659.247 940.167,806.319C931.228,805.435 922.967,805.675 915.319,806.78C938.732,662.181 885.049,551.609 779.787,463.803C733.512,550.064 712.32,635.113 712.965,714.199C762.235,758.052 799.482,810.446 823.886,868.527C818.506,870.667 809.729,871.355 799.109,872.496C742.15,738.107 625.479,646.067 431.618,608.772C427.509,767.418 531.69,915.052 695.793,978.681C696.328,986.918 697.566,995.109 699.332,1002.89C653.621,986.464 612.146,963.872 575.789,936.496C503.722,942.466 427.867,971.944 347.883,1027.03C414.012,1094.81 508.485,1127.03 606.127,1118.81C603.552,1126.36 602.029,1133.64 601.336,1140.64Z" style="fill:rgb(21,21,21);"/>
+            </g>
+            <g id="leaf1" serif:id="leaf" transform="matrix(-0.600914,-0.610084,-0.610084,0.600914,2339,902.117)">
+                <path d="M601.857,1140.61C495.574,1147.8 393.247,1109.75 323.828,1032.66C321.81,1030.42 320.831,1027.44 321.13,1024.44C321.43,1021.44 322.98,1018.7 325.401,1016.9C401.269,960.575 479.305,928.984 554.404,919.343C457.854,836.896 403.384,718.667 410.757,595.613C410.937,592.604 412.378,589.81 414.725,587.919C417.072,586.027 420.109,585.213 423.087,585.676C532.042,602.622 622.163,641.679 691.568,696.292C694.168,615.752 718.204,529.8 766.864,442.836C768.337,440.205 770.85,438.317 773.786,437.635C776.723,436.954 779.811,437.542 782.291,439.256C897.382,518.773 956.405,659.424 940.137,806.596C931.185,805.738 922.914,806.007 915.26,807.144C938.822,662.366 885.138,551.683 779.787,463.803C733.512,550.064 712.32,635.113 712.965,714.199C762.339,758.145 799.64,810.669 824.041,868.897C818.621,871.001 809.844,871.684 799.248,872.824C742.339,738.257 625.637,646.097 431.618,608.772C427.506,767.512 531.814,915.228 696.086,978.795C696.609,987.021 697.835,995.204 699.588,1002.98C653.776,986.549 612.214,963.923 575.789,936.496C503.722,942.466 427.867,971.944 347.883,1027.03C414.159,1094.96 508.906,1127.17 606.779,1118.75C604.157,1126.31 602.59,1133.6 601.857,1140.61Z" style="fill:rgb(21,21,21);"/>
+            </g>
+            <g id="petals" transform="matrix(1,0,0,1,-0.0505496,-13.54)">
+                <path d="M1089.32,938.04C1089.32,938.04 1155.12,845.519 1169.44,826.081C1181.91,809.141 1248.92,799.775 1281.03,825.971C1327.46,863.863 1308.07,917.712 1313.29,933.797C1318.52,949.882 1365.86,982.046 1350.57,1040C1339.99,1080.06 1280.28,1111.87 1260.23,1105.5C1237.22,1098.18 1129.6,1062.01 1129.6,1062.01L1129.46,1062.33C1129.46,1062.33 1237.79,1096.32 1260.7,1103.93C1280.67,1110.56 1310.28,1171.39 1295.29,1210.02C1273.6,1265.9 1216.39,1264.09 1202.71,1274.03C1189.03,1283.97 1173.07,1338.94 1113.23,1342.3C1071.86,1344.62 1023.15,1297.66 1023.01,1276.62C1022.86,1252.48 1024.01,1138.95 1024.01,1138.95L1023.89,1138.95C1023.89,1138.95 1025.04,1252.48 1024.89,1276.62C1024.75,1297.66 976.046,1344.62 934.676,1342.3C874.834,1338.94 858.875,1283.97 845.192,1274.03C831.51,1264.09 774.302,1265.9 752.614,1210.02C737.621,1171.39 767.235,1110.56 787.201,1103.93C810.111,1096.32 918.437,1062.33 918.437,1062.33L918.497,1062.01C918.497,1062.01 810.881,1098.18 787.875,1105.5C767.826,1111.87 708.11,1080.06 697.535,1040C682.238,982.046 729.582,949.882 734.809,933.797C740.035,917.712 720.638,863.863 767.076,825.971C799.18,799.775 866.189,809.141 878.663,826.081C892.977,845.519 958.777,938.04 958.777,938.04L958.825,938.005C958.825,938.005 891.166,846.834 877.102,827.214C864.846,810.116 876.645,743.492 911.48,721.054C961.868,688.599 1007.09,723.687 1024,723.687C1040.91,723.687 1086.13,688.599 1136.52,721.054C1171.36,743.492 1183.15,810.116 1170.9,827.214C1156.83,846.834 1089.17,938.005 1089.17,938.005L1089.32,938.04Z" style="fill:none;stroke:rgb(21,21,21);stroke-width:18.33px;"/>
+            </g>
+            <g id="mid" transform="matrix(1.23473,0,0,1.16557,-254.633,-172.689)">
+                <path d="M946.224,1001.24L903.088,986.39C899.191,985.049 897.055,980.608 898.321,976.48C899.587,972.352 903.779,970.09 907.676,971.431L950.718,986.246C963.52,953.184 993.052,929.237 1028.13,926.253L1028.13,878.722C1028.13,874.382 1031.46,870.858 1035.56,870.858C1039.65,870.858 1042.98,874.382 1042.98,878.722L1042.98,926.253C1078.06,929.237 1107.59,953.184 1120.39,986.246L1163.43,971.431C1167.33,970.09 1171.52,972.352 1172.79,976.48C1174.05,980.608 1171.92,985.049 1168.02,986.39L1124.89,1001.24C1126.4,1008.24 1127.21,1015.54 1127.21,1023.03C1127.21,1052.62 1114.69,1079.13 1094.96,1096.95L1122.01,1136.4C1124.42,1139.91 1123.68,1144.83 1120.37,1147.38C1117.06,1149.93 1112.41,1149.15 1110,1145.64L1082.92,1106.15C1069.09,1115.02 1052.88,1120.12 1035.56,1120.12C1018.23,1120.12 1002.02,1115.02 988.193,1106.15L961.11,1145.64C958.701,1149.15 954.055,1149.93 950.74,1147.38C947.425,1144.83 946.689,1139.91 949.097,1136.4L976.153,1096.95C956.423,1079.13 943.902,1052.62 943.902,1023.03C943.902,1015.54 944.705,1008.24 946.224,1001.24ZM1035.06,941.669C992.899,941.949 958.75,978.298 958.75,1023.03C958.75,1067.93 993.165,1104.39 1035.56,1104.39C1077.94,1104.39 1112.36,1067.93 1112.36,1023.03C1112.36,978.298 1078.21,941.949 1036.05,941.669C1035.88,941.68 1035.72,941.686 1035.56,941.686C1035.39,941.686 1035.23,941.68 1035.06,941.669ZM1035.56,986.138C1054.78,986.138 1070.38,1002.67 1070.38,1023.03C1070.38,1043.39 1054.78,1059.92 1035.56,1059.92C1016.33,1059.92 1000.73,1043.39 1000.73,1023.03C1000.73,1002.67 1016.33,986.138 1035.56,986.138Z" style="fill:rgb(21,21,21);"/>
+            </g>
+        </g>
+    </g>
+</svg>
diff --git a/assets/icons/outline-leaves-only.svg b/assets/icons/outline-leaves-only.svg
new file mode 100644
index 0000000..57c5739
--- /dev/null
+++ b/assets/icons/outline-leaves-only.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="100%" height="100%" viewBox="0 0 534 642" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
+    <g transform="matrix(1,0,0,1,-1133.74,-243.245)">
+        <g id="Leaf" transform="matrix(-0.600914,-0.610084,-0.610084,0.600914,2275,461.959)">
+            <path d="M554.404,919.343C457.854,836.896 403.384,718.667 410.757,595.613C410.937,592.604 412.378,589.81 414.725,587.919C417.072,586.027 420.109,585.213 423.087,585.676C532.042,602.622 622.163,641.679 691.568,696.292C694.168,615.752 718.204,529.8 766.864,442.836C768.337,440.205 770.85,438.317 773.786,437.635C776.723,436.954 779.811,437.542 782.291,439.256C954.973,558.562 1001.44,815.494 856.748,1025.59C856.208,1026.89 855.408,1028.1 854.379,1029.11C854.274,1029.22 854.168,1029.32 854.059,1029.42C684.349,1183.89 449.856,1172.61 323.828,1032.66C321.81,1030.42 320.831,1027.44 321.13,1024.44C321.43,1021.44 322.98,1018.7 325.401,1016.9C401.269,960.575 479.305,928.984 554.404,919.343ZM712.965,714.199C793.533,785.909 841.953,880.461 854.635,985.366C971.868,748.756 924.719,584.7 779.787,463.803C733.512,550.064 712.32,635.113 712.965,714.199ZM820.365,1030.16C725.39,1020.43 642.081,986.412 575.789,936.496C503.722,942.466 427.867,971.944 347.883,1027.03C463.563,1145.6 665.983,1155.34 820.365,1030.16ZM835.483,1010.02C807.34,800.755 685.862,657.683 431.618,608.772C426.438,808.772 593.362,991.273 835.483,1010.02Z" style="fill:rgb(21,21,21);"/>
+        </g>
+    </g>
+</svg>
diff --git a/assets/tatty-soap-rose-header.webp b/assets/tatty-soap-rose-header.webp
new file mode 100644
index 0000000..485b000
--- /dev/null
+++ b/assets/tatty-soap-rose-header.webp
Binary files differ
diff --git a/atatty.php b/atatty.php
index 41aeb43..bb08f02 100644
--- a/atatty.php
+++ b/atatty.php
@@ -13,6 +13,7 @@
     exit;
 }
 
+use JVBase\base\Site;
 use JVBase\managers\CacheManager;
 
 add_filter('jvb_base', function () {
@@ -23,6 +24,10 @@
 const ATAT_DIR = WP_PLUGIN_DIR . '/atatty';
 define('ATAT_URL', plugin_dir_url(__FILE__));
 
+
+add_filter('jvbChildDir', function() { return ATAT_DIR; });
+add_filter('jvbChildUrl', function() { return ATAT_URL; });
+
 require(ATAT_DIR . '/content/_setup.php');
 require(ATAT_DIR . '/dashboard/_setup.php');
 require(ATAT_DIR . '/email/_setup.php');
@@ -30,9 +35,33 @@
 require(ATAT_DIR . '/login/_setup.php');
 require(ATAT_DIR . '/taxonomies/_setup.php');
 require(ATAT_DIR . '/users/_setup.php');
+require(ATAT_DIR . '/blocks/_setup.php');
+require(ATAT_DIR . '/seo.php');
 //require(ATAT_DIR . '/files/fileManagement.php');
 
-
+add_action('plugins_loaded', 'atat_siteDefinition', 2);
+add_action('jvbLoadDefinitions', 'atat_siteDefinition');
+function atat_siteDefinition():void
+{
+    if (!class_exists('JVBase\base\Site')) {
+        return;
+    }
+    $site = Site::getInstance();
+    $site->set('icons', 'light');
+    $site->setAll([
+//        'has_map',
+//        'referrals',
+    ]);
+    $site->setIntegrations([
+        'cloudflare',
+        'facebook',
+        'gmb',
+        'helcim',
+        'postmark',
+        'instagram',
+        'umami'
+    ]);
+}
 /**
  * Defines base options like:
  *         - directory & Membership
@@ -69,7 +98,7 @@
             'facebook'    => true,
             'maps'        => true,
             'gmb'         => true,
-            'helcim'      => false,
+            'helcim'      => true,
             'postmark'    => true,
             'instagram'   => true,
             'square'      => false,
@@ -116,10 +145,10 @@
 //}
 
 
-//add_filter('jvbAboveHeader', 'atat_header');
-function atat_legacy_header(string $header):string
+add_filter('jvbBelowHeader', 'atat_header');
+function atat_header(string $header):string
 {
-    return '<p><b>WED - SUN</b> <span class="hide-small">&emsp;</span>10<span class="hide-small">:00</span>AM - 6<span class="hide-small">:00</span>PM</p><p>By Appointment<span class="hide-small"> Only</span></p>';
+    return '<p>FREE LOCAL PICKUP at <a href="https://legacytattooremoval.ca/">Legacy Tattoo Removal</a>.</p>';
 }
 
 
@@ -146,7 +175,7 @@
     ) {
         return $nav.'<li><ul class="socials">
             <li>
-                <a href="https://www.facebook.com/tatty.soap/" target="_blank" rel="nofollow" title="Find us on Facebook">
+                <a href="https://www.facebook.com/madebymadimori/" target="_blank" rel="nofollow" title="Find us on Facebook">
                     '.jvbIcon('facebook-logo').'
                     <span class="screen-reader-text">
                         Find us on Facebook
@@ -154,7 +183,7 @@
                 </a>
             </li>
             <li>
-                <a href="https://www.instagram.com/tatty.soap" target="_blank" rel="nofollow" title="Find us on Instagram">
+                <a href="https://www.instagram.com/madebymadimori" target="_blank" rel="nofollow" title="Find us on Instagram">
                     '.jvbIcon('instagram-logo').'
                     <span class="screen-reader-text">
                         Find us on Instagram
@@ -193,3 +222,24 @@
         ]
     );
 }
+
+
+add_filter('jvbRandomFooterText', 'atat_footer_text');
+function atat_footer_text(string $text):string
+{
+    $privacy = get_privacy_policy_url();
+    $privacy = ($privacy === '') ? '' : ' | <a href="'.$privacy.'">Privacy Policy</a>';
+    return '<p class="font-small">©'.date('Y').' <a href="https://madimori.ca/">Madi Mori</a>'.$privacy.'</p><p class="font-small">Built with ♡ by <a href="https://jakevan.ca">Jake Van</a></p>';
+}
+
+add_filter('jvbRegisterCustomIcons', 'atat_custom_icons');
+function atat_custom_icons(array $icons):array
+{
+    $icons['background'] = ATAT_DIR . '/assets/icons/background.svg';
+//    $icons['logo-jakevan'] = ATAT_DIR . '/assets/icons/logo-concentric-jakevan.svg';
+//    $icons['logo-right'] = ATAT_DIR . '/assets/icons/logo-right-aligned.svg';
+//    $icons['logo-right-jakevan'] = ATAT_DIR . '/assets/icons/logo-right-aligned-jakevan.svg';
+//    $icons['jakevan'] = ATAT_DIR . '/assets/icons/jakevan.svg';
+//    $icons['loading'] = ATAT_DIR . '/assets/icons/loading.svg';
+    return $icons;
+}
\ No newline at end of file
diff --git a/blocks/_setup.php b/blocks/_setup.php
new file mode 100644
index 0000000..c858b40
--- /dev/null
+++ b/blocks/_setup.php
@@ -0,0 +1,36 @@
+<?php
+
+function atat_render_core_site_logo(array $block, string $content):string
+{
+    $open = $close = '';
+
+    if (!is_home() && !is_front_page()) {
+        $open = '<a href="'.get_home_url().'" rel="home">';
+        $close = '</a>';
+    }
+    $cache = (class_exists('JVBase\managers\Cache')) ? JVBase\managers\Cache::for('full-icons') : false;
+
+    if (array_key_exists('className', $block['attrs'])) {
+        $logo = false;
+        if (str_contains($block['attrs']['className'], 'is-proper')) {
+            $logo = '<img class="logo" src="'.ATAT_URL.'/assets/tatty-soap-rose-header.webp">';
+        }
+        if ($logo) {
+            return $open.$logo.$close;
+        }
+    }
+
+    return JVB()->blocks()->render_core_site_logo($block, $content);
+}
+
+function atat_render_core_template_part(array $block, string $content): string
+{
+    if (!array_key_exists('attrs', $block) || !array_key_exists('slug', $block['attrs']) || !in_array($block['attrs']['slug'], ['header', 'footer'])){
+        return JVB()->blocks()->render_core_template_part($block, $content);
+    }
+    $content = JVB()->blocks()->render_core_template_part($block, $content);
+    $icon = file_get_contents(ATAT_DIR .'/assets/icons/background.svg');
+    $search = str_contains($content, '<header>') ? '</header>' : '</footer>';
+    return str_replace($search, $icon.$search, $content);
+
+}
\ No newline at end of file
diff --git a/content/_setup.php b/content/_setup.php
index 289a8ca..66df251 100644
--- a/content/_setup.php
+++ b/content/_setup.php
@@ -31,10 +31,10 @@
 
 require(ATAT_DIR . '/content/soap.php');
 
-add_filter('jvb_content', 'atat_content');
-function atat_content($content):array
-{
-    return [
-        'soap'       => atat_soap(),
-    ];
-}
\ No newline at end of file
+//add_filter('jvb_content', 'atat_content');
+//function atat_content($content):array
+//{
+//    return [
+//        'soap'       => atat_soap(),
+//    ];
+//}
\ No newline at end of file
diff --git a/content/soap.php b/content/soap.php
index 75507ea..c70c373 100644
--- a/content/soap.php
+++ b/content/soap.php
@@ -1,69 +1,171 @@
 <?php
 // /content/soap.php
-function atat_soap():array
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+    exit;
+}
+
+
+add_action('jvbDefineRegistrar', 'atat_soap');
+add_action('jvbDefineRegistrarFields', 'atat_soap_fields');
+
+add_action('plugins_loaded', 'atat_soap',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'atat_soap_fields', 4);
+
+add_filter('atat_FaqSchemaDefault', 'atat_soap_schema');
+add_filter('atat_FaqMetaDefault', 'atat_soap_meta');
+add_filter('atat_FaqArchiveDefault', 'atat_soap_archive');
+
+function atat_soap(){
+    if (!class_exists('JVBase\registrar\Registrar')) {
+        return;
+    }
+    $soap = Registrar::forPost('soap', 'Soap', 'Soaps')
+        ->setIcon('sparkle')
+        ->make([
+            'rewrite'   => [
+                'slug'          => 'soap',
+                'with_front'    => false,
+            ],
+            'taxonomies'    => [
+                'flag',
+            ],
+            'public'    => false,
+        ])
+        ->setAll([
+            'show_directory',
+        ])
+        ->setIntegration('helcim')
+        ->setIntegration('facebook')
+        ->setIntegration('instagram');
+
+//$directory = $soap->getConfig('directory');
+
+}
+
+function atat_soap_fields():void
+{
+    if (!class_exists('JVBase\registrar\Registrar')) {
+        return;
+    }
+    $soap = Registrar::getInstance('soap');
+//    $breadcrumbs = $soap->config('breadcrumbs');
+//    $breadcrumbs->setCrumb('section');
+
+
+    $fields = $soap->fields();
+    $fields->addField('ingredients', [
+        'type'      => 'textarea',
+        'quill'     => true,
+        'label'     => 'Ingredients',
+    ]);
+    $fields->addField('extra_info', [
+        'type'      => 'textarea',
+        'quill'     => true,
+        'label'     => 'Extra Info',
+    ]);
+    $fields->addField('flag', [
+        'type'      => 'selector',
+        'subtype'   => 'taxonomy',
+        'taxonomy'  => 'flag',
+        'label'     => 'Flags',
+    ]);
+}
+
+function atat_soap_schema():array
 {
     return [
-        'singular'       => 'Soap',
-        'plural'       => 'Soaps',
-        'dash_title'    => 'Soap',
-        'dash_description' => 'Manage your soap',
-        'breadcrumb'    => 'Soap',
-        'icon'         => 'sparkle',
-		'integrations'	=> [
-			'helcim'	=> [
-				'initial'	=> true,
-				'update'	=> true,
-			],
-		],
-        'rewrite'      => [
-            'slug'       => 'soap',
-            'with_front' => false,
-        ],
-        'fields'       => [
-            'post_title'     => [
-                'type'  => 'text',
-                'label' => 'Name',
-            ],
-            'post_status'         => [
-                'type'      => 'radio',
-                'label'     => 'Status',
-                'hidden'    => true,
-                'options'   => [
-                    'publish'   => 'Show',
-                    'draft'     => 'Hide',
-                    'trash'     => 'Scrap',
-                    'delete'    => 'Permanently Delete'
-                ]
-            ],
-            'post_slug' => [
-                'type'  => 'text',
-                'label' => 'Slug',
-				'hidden'	=> true,
-            ],
-            'post_content'        => [
-                'type'  => 'textarea',
-                'label' => 'Description',
-                'quill' => true,
-            ],
-            'ingredients' => [
-                'type'  => 'textarea',
-                'label' => 'Ingredients',
-				'quill'	=> true,
-            ],
-            'extra_info' => [
-                'type'  => 'textarea',
-                'label' => 'Extra Info',
-				'quill'	=> true,
-            ],
-            'flags'  => [
-                'type'  => 'taxonomy',
-				'taxonomy'	=> 'flags',
-                'term'	=> 'flags',
-                'label'	=> 'Flags',
-            ]
-        ],
-        'single_image' => true,
-        'upload_title' => 'Upload Soaps',
+        'type'              => 'JVBase\managers\SEO\render\Thing\Product\Product',
+        'name'              => '{{post_title}} | Handmade in Edmonton',
     ];
 }
 
+function atat_soap_meta():array
+{
+    return[
+        'name' => '{{post_title}} | Handmade in Edmonton',
+    ];
+}
+
+function atat_soap_archive(array $defaults):array
+{
+    return array_merge($defaults, [
+        'name' => 'Handmade Soaps',
+        'description' => 'Handmade Soaps in Edmonton, Alberta.'
+    ]);
+}
+
+function atat_soap_reference_schema(array $defaults):array
+{
+    return $defaults;
+}
+// /content/soap.php
+//function atat_soap():array
+//{
+//    return [
+//        'singular'       => 'Soap',
+//        'plural'       => 'Soaps',
+//        'dash_title'    => 'Soap',
+//        'dash_description' => 'Manage your soap',
+//        'breadcrumb'    => 'Soap',
+//        'icon'         => 'sparkle',
+//		'integrations'	=> [
+//			'helcim'	=> [
+//				'initial'	=> true,
+//				'update'	=> true,
+//			],
+//		],
+//        'rewrite'      => [
+//            'slug'       => 'soap',
+//            'with_front' => false,
+//        ],
+//        'fields'       => [
+//            'post_title'     => [
+//                'type'  => 'text',
+//                'label' => 'Name',
+//            ],
+//            'post_status'         => [
+//                'type'      => 'radio',
+//                'label'     => 'Status',
+//                'hidden'    => true,
+//                'options'   => [
+//                    'publish'   => 'Show',
+//                    'draft'     => 'Hide',
+//                    'trash'     => 'Scrap',
+//                    'delete'    => 'Permanently Delete'
+//                ]
+//            ],
+//            'post_slug' => [
+//                'type'  => 'text',
+//                'label' => 'Slug',
+//				'hidden'	=> true,
+//            ],
+//            'post_content'        => [
+//                'type'  => 'textarea',
+//                'label' => 'Description',
+//                'quill' => true,
+//            ],
+//            'ingredients' => [
+//                'type'  => 'textarea',
+//                'label' => 'Ingredients',
+//				'quill'	=> true,
+//            ],
+//            'extra_info' => [
+//                'type'  => 'textarea',
+//                'label' => 'Extra Info',
+//				'quill'	=> true,
+//            ],
+//            'flags'  => [
+//                'type'  => 'taxonomy',
+//				'taxonomy'	=> 'flags',
+//                'term'	=> 'flags',
+//                'label'	=> 'Flags',
+//            ]
+//        ],
+//        'single_image' => true,
+//        'upload_title' => 'Upload Soaps',
+//    ];
+//}
+
diff --git a/seo.php b/seo.php
new file mode 100644
index 0000000..aa4ce9a
--- /dev/null
+++ b/seo.php
@@ -0,0 +1,359 @@
+<?php
+
+
+add_filter('atat_OrganizationSchemaDefault', 'atat_organization_schema');
+function atat_organization_schema(array $schema): array
+{
+    return array_merge($schema, [
+        'id' => '#legacy-tattoo-removal',
+        'type' => 'JVBase\managers\SEO\render\Thing\Organization\LocalBusiness\LocalBusiness',
+        'name' => 'Madi Mori',
+        'url' => get_home_url(),
+        'description' => 'Unscented, all natural soap made in Edmonton, Alberta.',
+        'slogan' => 'Making aftercare simple.',
+        'logo' => get_theme_mod('custom_logo'),
+        'foundingDate' => '2026-04-05',
+
+        'founder' => [
+            [
+                'id' => 'madi-rawson',
+                'type' => 'JVBase\managers\SEO\render\Thing\Person\Person',
+                'name' => 'Madi Rawson',
+                'url' => 'https://madimori.ca']
+        ],
+
+        'sameAs' => [
+            'https://www.instagram.com/madebymadimori',
+            'https://www.facebook.com/madebymadimori',
+        ],
+
+        // Contact
+//        'telephone' => '+1-825-925-7398',
+        'email' => 'info@madimori.ca',
+
+        // Address
+        'address' => [
+            'addressLocality' => 'Edmonton',
+            'addressRegion' => 'AB',
+            'postalCode' => 'T6H 4R5',
+            'addressCountry' => 'CA',
+        ],
+
+        // Geo - note the key names
+        'geo' => [
+            'latitude' => '53.5035125',
+            'longitude' => '-113.5188023',
+        ],
+
+        // Business details
+        'priceRange' => '$$',
+        'paymentAccepted' => ['Cash', 'Credit Card', 'Debit Card', 'E-Transfer'],
+        'currenciesAccepted' => ['CAD'],
+        'areaServed' => [
+            [
+                'id' => '#edmonton',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Edmonton',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Edmonton'
+            ],
+            [
+                'id' => '#stalbert',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'St. Albert',
+                'sameAs' => 'https://en.wikipedia.org/wiki/St._Albert,_Alberta'],
+            [
+                'id' => '#sherwoodpark',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Sherwood Park',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Sherwood_Park'],
+            [
+                'id' => '#leduc',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Leduc',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Leduc,_Alberta'],
+            [
+                'id' => '#sprucegrove',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Spruce Grove',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Spruce_Grove'],
+            [
+                'id' => '#calgary',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Calgary',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Calgary'],
+            [
+                'id' => '#reddeer',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Red Deer',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Red_Deer,_Alberta'],
+            [
+                'id' => '#strathconacounty',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Strathcona County',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Strathcona_County'],
+            [
+                'id' => '#grandprairie',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Grande Prairie',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Grande_Prairie'],
+            [
+                'id' => '#lloydminster',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Lloydminster',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Lloydminster'],
+            [
+                'id' => '#fortsaskatchewan',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Fort Saskatchewan',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Fort_Saskatchewan'],
+            [
+                'id' => '#camrose',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Camrose',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Camrose,_Alberta'],
+            [
+                'id' => '#stonyplain',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Stony Plain',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Stony_Plain,_Alberta'],
+            [
+                'id' => '#coldlake',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Cold Lake',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Cold_Lake,_Alberta'],
+            [
+                'id' => '#draytonvalley',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Drayton Valley',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Drayton_Valley'],
+            [
+                'id' => '#ponoka',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Ponoka',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Ponoka,_Alberta'],
+            [
+                'id' => '#vegreville',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Vegreville',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Vegreville'],
+            [
+                'id' => '#fortmcmurray',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Fort McMurray',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Fort_McMurray'],
+            [
+                'id' => '#lethbridge',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Lethbridge',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Lethbridge'],
+            [
+                'id' => '#airdrie',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Airdrie',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Airdrie,_Alberta'],
+            [
+                'id' => '#medicinehat',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Medicine Hat',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Medicine_Hat'],
+            [
+                'id' => '#cochrane',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Cochrane',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Cochrane,_Alberta'],
+            [
+                'id' => '#okotoks',
+                'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+                'name' => 'Okotoks',
+                'sameAs' => 'https://en.wikipedia.org/wiki/Okotoks'],
+        ],
+
+        // Hours - note the key names
+        'openingHoursSpecification' => [
+            [
+                'type' => 'JVBase\managers\SEO\render\Thing\Intangible\StructuredValue\OpeningHoursSpecification',
+                'dayOfWeek' => ['Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
+                'opens' => '13:00',
+                'closes' => '18:00'
+            ]
+
+        ],
+
+        // Services as offer catalog
+        'hasOfferCatalog' => [
+            'name' => 'Our Services',
+            'items' => [
+                [
+                    'type' => 'JVBase\managers\SEO\render\Thing\Intangible\AggregateOffer',
+                    'id' => '#tatty-soap',
+                    'price' => '12',
+                    'priceCurrency' => 'CAD',
+                    'itemOffered' => [
+                        'id' => 'tatty-soap-item',
+                        'type' => 'JVBase\managers\SEO\render\Thing\Product\Product',
+                        'name' => 'Tatty Soap',
+                        'description' => 'Handmade unscented soaps designed for tattoo aftercare',
+                    ]
+                ],
+            ]
+        ],
+
+//        'aggregateRating' => [
+//            'ratingValue' => 5,
+//            'reviewCount' => 109,
+//            'bestRating' => 5,
+//            'worstRating' => 1,
+//        ],
+    ]);
+}
+
+add_filter('atat_WebsiteSchemaDefault', 'atat_website_schema');
+function atat_website_schema(array $schema): array
+{
+    return array_merge(
+        $schema,
+        [
+            'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\WebSite',
+            'name' => 'Madi Mori',
+            'description' => 'Handmade soaps in Edmonton, Alberta. Unscented, all natural ingredients.',
+            'inLanguage' => 'en-CA',
+            'potentialAction' => [
+                [
+                    'id' => 'contact',
+                    'type' => 'JVBase\inc\managers\SEO\render\Thing\Action\CommunicateAction',
+                    'name' => 'Contact Us',
+                    'target' => '/contact/',
+                    'description' => 'Get in touch with Madi.',
+                ],
+            ],
+        ],
+    );
+}
+
+
+
+
+
+//add_filter('jvb_schema', function($schema) {
+//    return array_merge($schema, [
+//        'organization' => [
+//            'type' => 'LocalBusiness',
+//            'name' => 'Tatty Soap',
+//            'url' => get_home_url(),
+//            'description' => 'Unscented, all natural soap made in Edmonton, Alberta.',
+//            'slogan' => 'Making aftercare simple.',
+//            'logo' => get_theme_mod('custom_logo'),
+//            'foundingDate' => '2026-02-15',
+//
+//            'founders' => [
+//                ['name' => 'Madi Rawson', 'url' => 'https://madebymadimori.ca'],
+//            ],
+//
+//            'sameAs' => [
+//                [ 'url' => 'https://madebymadimori.ca'],
+//                [ 'url' => 'https://www.instagram.com/tatty.soap'],
+//                [ 'url' => 'https://www.facebook.com/tatty.soap']
+//            ],
+//
+//            // Contact
+//            'telephone' => '+1-780-289-9915',
+//            'email' => 'get@tattysoap.ca',
+//
+//            // Address - note the key names
+//            'address' => [
+//                'street' => '6551 111 St NW',
+//                'city' => 'Edmonton',
+//                'province' => 'AB',
+//                'postal_code' => 'T6H 4R5',
+//                'country' => 'CA',
+//            ],
+//
+//            // Geo - note the key names
+//            'geo' => [
+//                'lat' => '53.5035125',                      // was 'latitude'
+//                'lng' => '-113.5188023',                    // was 'longitude'
+//            ],
+//
+//            // Business details
+//            'priceRange' => '$$',
+//            'paymentAccepted' => ['Cash', 'Credit Card', 'Debit Card', 'E-Transfer'],
+//            'currenciesAccepted' => ['CAD'],
+//            'areaServed' => [
+//                ['name' => 'Edmonton'],
+//                ['name' => 'St. Albert'],
+//                ['name' => 'Sherwood Park'],
+//                ['name' => 'Leduc'],
+//                ['name' => 'Spruce Grove'],
+//                ['name' => 'Calgary'],
+//                ['name' => 'Red Deer'],
+//                ['name' => 'Strathcona County'],
+//                ['name' => 'Grande Prairie'],
+//                ['name' => 'Lloydminster'],
+//                ['name' => 'Fort Saskatchewan'],
+//                ['name' => 'Camrose'],
+//                ['name' => 'Stoney Plain'],
+//                ['name' => 'Cold Lake'],
+//                ['name' => 'Drayton Valley'],
+//                ['name' => 'Ponoka'],
+//                ['name' => 'Vegreville'],
+//                ['name' => 'Fort McMurry'],
+//                ['name' => 'Lethbridge'],
+//                ['name' => 'Airdrie'],
+//                ['name' => 'Medicine Hat'],
+//                ['name' => 'Cochrane'],
+//                ['name' => 'Okotoks'],
+//            ],
+//
+//            // Hours - note the key names
+//            'openingHours' => [
+//                'monday' => ['opens' => '9:00', 'closes' => '17:00'],
+//                'tuesday' => ['opens' => '9:00', 'closes' => '17:00'],
+//                'wednesday' => ['opens' => '9:00', 'closes' => '17:00'],
+//                'thursday' => ['opens' => '9:00', 'closes' => '17:00'],
+//                'friday' => ['opens' => '9:00', 'closes' => '17:00'],
+//                'saturday' => ['opens' => '9:00', 'closes' => '17:00'],
+//                'sunday' => ['opens' => '9:00', 'closes' => '17:00'],
+//            ],
+//
+//            // Services as offer catalog
+//            'hasOfferCatalog' => [
+//                'source'    => 'manual',
+//                'manual_items' => [
+//                    [
+//                        'type'  => 'Product',
+//                        'name' => 'Tatty Soap',
+//                        'description' => 'Handmade, unscented, all natural soap designed for tattoo and laser tattoo removal aftercare.',
+//                    ],
+//                ]
+//            ],
+//
+//            // Rating - note the structure
+////            'aggregateRating' => [
+////                'value' => 5,
+////                'count' => 103,
+////                'best' => 5,
+////                'worst' => 1,
+////            ],
+//        ],
+//
+//        // Website settings (optional overrides)
+//        'website' => [
+//            'name' => 'Tatty Soap',
+//            'description' => 'Making aftercare simple.',
+//            'inLanguage' => 'en-CA',
+//            'potentialAction' => [
+//                [
+//                    'name'  => 'Search',
+//                    'type' => 'searchAction',
+//                    'target' => '/?s={query}',
+//                ],
+//                [
+//                    'type' => 'communicateAction',
+//                    'name' => 'Contact Us',
+//                    'target' => '/contact/',
+//                    'description' => 'Get in touch with Madi.',
+//                ],
+//            ],
+//        ],
+//    ]);
+//});
\ No newline at end of file
diff --git a/taxonomies/_setup.php b/taxonomies/_setup.php
index a08abbc..d2a2c3a 100644
--- a/taxonomies/_setup.php
+++ b/taxonomies/_setup.php
@@ -22,10 +22,10 @@
 
 require(ATAT_DIR . '/taxonomies/flags.php');
 
-add_filter('jvb_taxonomy', 'atat_taxonomy');
-function atat_taxonomy():array
-{
-    return [
-        'flags'     => atat_flags(),
-    ];
-}
\ No newline at end of file
+//add_filter('jvb_taxonomy', 'atat_taxonomy');
+//function atat_taxonomy():array
+//{
+//    return [
+//        'flags'     => atat_flags(),
+//    ];
+//}
\ No newline at end of file
diff --git a/taxonomies/flags.php b/taxonomies/flags.php
index aab2a18..c126b8a 100644
--- a/taxonomies/flags.php
+++ b/taxonomies/flags.php
@@ -1,27 +1,111 @@
 <?php
-// /taxonomies/flags.php
-function atat_flags():array
+// /taxonomies/flag.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+    exit;
+}
+
+add_action('jvbDefineRegistrar', 'atat_flag');
+add_action('jvbDefineRegistrarFields', 'atat_flag_fields');
+
+add_action('plugins_loaded', 'atat_flag',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'atat_flag_fields', 4);
+
+add_filter('atat_AgeSchemaDefault', 'atat_flag_schema');
+add_filter('atat_AgeMetaDefault', 'atat_flag_meta');
+add_filter('atat_AgeArchiveDefault', 'atat_flag_archive');
+
+function atat_flag(){
+    if (!class_exists('JVBase\registrar\Registrar')) {
+        return;
+    }
+    $flag = Registrar::forTerm('flag', 'Flag', 'Flags')
+        ->setIcon('flag')
+        ->make([
+            'rewrite'   => [
+                'slug'          => 'flagged',
+                'with_front'    => false,
+                'hierarchical'  => true,
+            ],
+            'for'    => [
+                'soap',
+            ],
+            'hierarchical' => true,
+        ])
+        ->setAll([
+            'show_directory',
+            'show_feed',
+        ]);
+
+//$directory = $flag->getConfig('directory');
+
+}
+
+function atat_flag_fields():void
+{
+    if (!class_exists('JVBase\registrar\Registrar')) {
+        return;
+    }
+    $flag = Registrar::getInstance('flag');
+
+    $fields = $flag->fields();
+    $fields->addCommon('wiki');
+    $fields->addCommon('alternate_name');
+    $fields->addCommon('keywords');
+}
+
+function atat_flag_schema():array
 {
     return [
-        'singular'     => 'Flag',
-        'plural'       => 'Flags',
-        'icon'         => 'warning-diamond',
-        'rewrite'      => [
-            'slug'         => 'flagged',
-            'with_front'   => false,
-            'hierarchical' => true,
-        ],
-        'hierarchical' => true,
-        'for_content'  => [
-            'soap',
-        ],
-        'fields'       => [
-            'term_name'       => [
-                'label'     => 'Name',
-                'type'      => 'text',
-                'quickEdit' => true,
-            ],
-            'common'          => [ 'wiki', 'alternate_name', 'keywords' ]
-        ]
+        'name'              => 'How to Remove a {{name}} Old Tattoo - Before & After',
     ];
 }
+
+function atat_flag_meta():array
+{
+    return[
+        'name'              => 'How to Remove a {{name}} Old Tattoo - Before & After',
+        'description'       => 'See laser removal results on tattoos that are {{name}} old. Older ink often responds differently to treatment.'
+    ];
+}
+
+function atat_flag_archive(array $defaults):array
+{
+    return array_merge($defaults, [
+        'name' => 'Removing {{term_name}} Old Tattoos – Before & After',
+    ]);
+}
+
+function atat_flag_reference_schema(array $defaults):array
+{
+    return $defaults;
+}
+
+//
+//function atat_flags():array
+//{
+//    return [
+//        'singular'     => 'Flag',
+//        'plural'       => 'Flags',
+//        'icon'         => 'warning-diamond',
+//        'rewrite'      => [
+//            'slug'         => 'flagged',
+//            'with_front'   => false,
+//            'hierarchical' => true,
+//        ],
+//        'hierarchical' => true,
+//        'for_content'  => [
+//            'soap',
+//        ],
+//        'fields'       => [
+//            'term_name'       => [
+//                'label'     => 'Name',
+//                'type'      => 'text',
+//                'quickEdit' => true,
+//            ],
+//            'common'          => [ 'wiki', 'alternate_name', 'keywords' ]
+//        ]
+//    ];
+//}

--
Gitblit v1.10.0