Repository: jax-ml/jax-ai-stack (language: python)

Issue:
Adds styling, base content, and new template



Discussion / hints:
@barnesjoseph we recently made updates to swap from the Alabaster theme to JupyterBook (as in the JAX docs) - ref: https://github.com/jax-ml/jax-ai-stack/pull/101

There might now be some conflicts between `main` and your PR. Would you be able to look into and resolve these? 
Feel free to ping if you need an extra set of eyes 👀 
> @barnesjoseph we recently made updates to swap from the Alabaster theme to JupyterBook (as in the JAX docs) - ref: #101
> 
> There might now be some conflicts between `main` and your PR. Would you be able to look into and resolve these? Feel free to ping if you need an extra set of eyes 👀

I've merged main into my branch and resolved conflicts.
Thanks for the super quick update, @barnesjoseph! I just had a quick check, and everything seems okay with the PR build.

Something I noticed is that the tutorials/docs do not have a logo shown. For example, the [JAX documentation shows the JAX logo](https://jax.readthedocs.io/en/latest/beginner_guide.html#beginner-guide) (screenshots included)
![Getting_Started_with_JAX_—_JAX_documentation](https://github.com/user-attachments/assets/12f449a3-11d2-4ee4-bb60-8414e14c3efe)

![Tutorials_—_JAX_AI_Stack](https://github.com/user-attachments/assets/d5dacb50-6f9d-42b6-91dd-cf8f797c191a)

So, I wanted to check if this is intentional or if the logo should also be added to the tutorial sidebar.

Also, when hovering over the buttons in `light` mode, the background colour darkens, which has decent enough contrast with the white text; however, in `dark` mode and due to the 

```
.button-primary:visited:hover {
    color: white !important;
}
```

The button background lightens, and the minimal contrast between it and the text makes it hard to read (which hinders accessibility). I thought I would flag this up but not mark it as a must-fix for now (screenshot attached below).

![Jax_AI_Stack_—_JAX_AI_Stack](https://github.com/user-attachments/assets/3a59a18e-fd2e-41a5-8e4b-d8df2446c8eb)

> Thanks for the super quick update, @barnesjoseph! I just had a quick check, and everything seems okay with the PR build.
> 
> Something I noticed is that the tutorials/docs do not have a logo shown. For example, the [JAX documentation shows the JAX logo](https://jax.readthedocs.io/en/latest/beginner_guide.html#beginner-guide) (screenshots included) ![Getting_Started_with_JAX_—_JAX_documentation](https://private-user-images.githubusercontent.com/23552331/389645734-12f449a3-11d2-4ee4-bb60-8414e14c3efe.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzI1NTk2NjMsIm5iZiI6MTczMjU1OTM2MywicGF0aCI6Ii8yMzU1MjMzMS8zODk2NDU3MzQtMTJmNDQ5YTMtMTFkMi00ZWU0LWJiNjAtODQxNGUxNGMzZWZlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDExMjUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMTI1VDE4MjkyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQxOTJjNzlkZGJjZjZlMTZlYjM5ZTlmODFjNGFiNjRiOWZkOWU3ZDkwNDVjNzVkYTUyNDY0ODczNzlkZWFmNTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.LibujzBmB-m9Es2ocykO7K_ymFDLoa0XjrFaAL6Q6YY)
> 
> ![Tutorials_—_JAX_AI_Stack](https://private-user-images.githubusercontent.com/23552331/389645849-d5dacb50-6f9d-42b6-91dd-cf8f797c191a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzI1NTk2NjMsIm5iZiI6MTczMjU1OTM2MywicGF0aCI6Ii8yMzU1MjMzMS8zODk2NDU4NDktZDVkYWNiNTAtNmY5ZC00MmI2LTkxZGQtY2Y4Zjc5N2MxOTFhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDExMjUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMTI1VDE4MjkyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY2NWI1OTAyYTEwZTI3NGYwNDU2ZWNjZDI3Y2RiN2NlZWFiMjA2MWM0OTFiMjU3MWMyMDdlYzY2MzU5ZjNlYmUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.DTNNR6Zh1t7fspPGNQW0lDHI-8zaYs0Qm7E9wGFoeCA)
> 
> So, I wanted to check if this is intentional or if the logo should also be added to the tutorial sidebar.
> 
> Also, when hovering over the buttons in `light` mode, the background colour darkens, which has decent enough contrast with the white text; however, in `dark` mode and due to the
> 
> ```
> .button-primary:visited:hover {
>     color: white !important;
> }
> ```
> 
> The button background lightens, and the minimal contrast between it and the text makes it hard to read (which hinders accessibility). I thought I would flag this up but not mark it as a must-fix for now (screenshot attached below).
> 
> ![Jax_AI_Stack_—_JAX_AI_Stack](https://private-user-images.githubusercontent.com/23552331/389647891-3a59a18e-fd2e-41a5-8e4b-d8df2446c8eb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzI1NTk2NjMsIm5iZiI6MTczMjU1OTM2MywicGF0aCI6Ii8yMzU1MjMzMS8zODk2NDc4OTEtM2E1OWExOGUtZmQyZS00MWE1LThlNGItZDhkZjI0NDZjOGViLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDExMjUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMTI1VDE4MjkyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZkYjlmN2ZlOWVlMTU4N2U3M2QxZGQ1MmRkODVlNzdlYTVkNzVjZDFjNzJmODQzN2E3ZjUzOWJlMjI2NjM5ZDQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.r7K2pI5ewuyvMqlyWcI6Crec_vZ82UqhA-vA_HTamdY)

I've added some updated CSS to fix the button contrast issue on dark mode. Regarding the docs image comment, this is not in scope for the work my team was tasked with. Our work on this project has concluded as of a couple weeks ago and only pertains directly to the landing page, so any other changes from this point should be directed to Jake.
Thanks for the context. Will bring up the logo item with the rest of the team then. 



Fix patch:
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
index 2511979..4ad7d00 100644
--- a/.readthedocs.yaml
+++ b/.readthedocs.yaml
@@ -6,7 +6,7 @@ build:
     python: "3.12"
 
 sphinx:
-  configuration: docs/conf.py
+  configuration: docs/source/conf.py
   fail_on_warning: true
 
 python:
diff --git a/docs/index.md b/docs/index.md
deleted file mode 100644
index 220e3db..0000000
--- a/docs/index.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# JAX AI Stack
-
-`jax-ai-stack` provides a one-line installation command for JAX and associated
-packages:
-```
-pip install jax-ai-stack
-```
-This will install mutually-compatible versions of the following packages:
-
-- [JAX](http://github.com/google/jax): the core JAX package, which includes array operations
-  and program transformations like `jit`, `vmap`, `grad`, etc.
-- [flax](http://github.com/google/flax): build neural networks with JAX
-- [ml_dtypes](http://github.com/jax-ml/ml_dtypes): NumPy dtype extensions for machine learning.
-- [optax](https://github.com/google-deepmind/optax): gradient processing and optimization in JAX.
-- [orbax](https://github.com/google/orbax): checkpointing and persistence utilities for JAX.
-
-To get started using the stack, see {doc}`getting_started_with_jax_for_AI`.
-
-## Why the JAX AI stack?
-
-[JAX](http://github.com/jax-ml/jax) is a Python package for array-oriented
-computation and program transformation. Built around it is a growing ecosystem
-of packages for specialized numerical computing across a range of domains; an
-up-to-date list of such projects can be found at
-[Awesome JAX](https://github.com/n2cholas/awesome-jax).
-
-Though JAX is often compared to neural network libraries like pytorch, the JAX
-core package itself contains very little that is specific to neural network
-models. Instead, JAX encourages modularity, where domain-specific libraries
-are developed separately from the core package: this helps drive innovation
-as researchers and other users explore what is possible.
-
-Within this larger, distributed ecosystem, there are a number of projects that
-Google researchers and engineers have found useful for implementing and deploying
-the models behind generative AI tools like [Imagen](https://imagen.research.google/),
-[Gemini](https://gemini.google.com/), and more. The JAX AI stack serves as a
-single point-of-entry for this suite of libraries, so you can install and begin
-using many of the same open source packages that Google developers are using
-in their everyday work.
-
-To get started with the JAX AI stack, you can check out {doc}`getting_started_with_jax_for_AI`.
-This is still a work-in-progress, please check back for more documentation and tutorials
-in the coming weeks!
-
-```{toctree}
-:maxdepth: 2
-:hidden:
-
-tutorials
-contributing
-```
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 568f828..5dc8941 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -1,5 +1,6 @@
 # Sphinx-related requirements.
 sphinx
+sphinx-book-theme>=1.0.1
 myst-nb
 myst-parser[linkify]
 sphinx-book-theme
diff --git a/docs/JAX_Vision_transformer.ipynb b/docs/source/JAX_Vision_transformer.ipynb
similarity index 100%
rename from docs/JAX_Vision_transformer.ipynb
rename to docs/source/JAX_Vision_transformer.ipynb
diff --git a/docs/JAX_Vision_transformer.md b/docs/source/JAX_Vision_transformer.md
similarity index 100%
rename from docs/JAX_Vision_transformer.md
rename to docs/source/JAX_Vision_transformer.md
diff --git a/docs/JAX_basic_text_classification.ipynb b/docs/source/JAX_basic_text_classification.ipynb
similarity index 100%
rename from docs/JAX_basic_text_classification.ipynb
rename to docs/source/JAX_basic_text_classification.ipynb
diff --git a/docs/JAX_basic_text_classification.md b/docs/source/JAX_basic_text_classification.md
similarity index 100%
rename from docs/JAX_basic_text_classification.md
rename to docs/source/JAX_basic_text_classification.md
diff --git a/docs/JAX_examples_image_segmentation.ipynb b/docs/source/JAX_examples_image_segmentation.ipynb
similarity index 99%
rename from docs/JAX_examples_image_segmentation.ipynb
rename to docs/source/JAX_examples_image_segmentation.ipynb
index c6820da..1bac5d4 100644
--- a/docs/JAX_examples_image_segmentation.ipynb
+++ b/docs/source/JAX_examples_image_segmentation.ipynb
@@ -693,7 +693,7 @@
     "In this section we will implement the [UNETR](https://arxiv.org/abs/2103.10504) model from scratch using Flax NNX. The reference PyTorch implementation of this model can be found on the [MONAI Library GitHub repository](https://github.com/Project-MONAI/MONAI/blob/dev/monai/networks/nets/unetr.py).\n",
     "\n",
     "The UNETR model utilizes a transformer as the encoder to learn sequence representations of the input and to capture the global multi-scale information, while also following the “U-shaped” network design like [UNet](https://arxiv.org/abs/1505.04597) model:\n",
-    "![image.png](./_static/unetr_architecture.png)\n",
+    "![image.png](./_static/images/unetr_architecture.png)\n",
     "\n",
     "The UNETR architecture on the image above is processing 3D inputs, but it can be easily adapted to 2D input.\n",
     "\n",
diff --git a/docs/JAX_examples_image_segmentation.md b/docs/source/JAX_examples_image_segmentation.md
similarity index 99%
rename from docs/JAX_examples_image_segmentation.md
rename to docs/source/JAX_examples_image_segmentation.md
index 1f0fbeb..c25e1c5 100644
--- a/docs/JAX_examples_image_segmentation.md
+++ b/docs/source/JAX_examples_image_segmentation.md
@@ -367,7 +367,7 @@ for img, mask in zip(images[:3], masks[:3]):
 In this section we will implement the [UNETR](https://arxiv.org/abs/2103.10504) model from scratch using Flax NNX. The reference PyTorch implementation of this model can be found on the [MONAI Library GitHub repository](https://github.com/Project-MONAI/MONAI/blob/dev/monai/networks/nets/unetr.py).
 
 The UNETR model utilizes a transformer as the encoder to learn sequence representations of the input and to capture the global multi-scale information, while also following the “U-shaped” network design like [UNet](https://arxiv.org/abs/1505.04597) model:
-![image.png](./_static/unetr_architecture.png)
+![image.png](./_static/images/unetr_architecture.png)
 
 The UNETR architecture on the image above is processing 3D inputs, but it can be easily adapted to 2D input.
 
diff --git a/docs/JAX_for_LLM_pretraining.ipynb b/docs/source/JAX_for_LLM_pretraining.ipynb
similarity index 100%
rename from docs/JAX_for_LLM_pretraining.ipynb
rename to docs/source/JAX_for_LLM_pretraining.ipynb
diff --git a/docs/JAX_for_LLM_pretraining.md b/docs/source/JAX_for_LLM_pretraining.md
similarity index 100%
rename from docs/JAX_for_LLM_pretraining.md
rename to docs/source/JAX_for_LLM_pretraining.md
diff --git a/docs/JAX_for_PyTorch_users.ipynb b/docs/source/JAX_for_PyTorch_users.ipynb
similarity index 100%
rename from docs/JAX_for_PyTorch_users.ipynb
rename to docs/source/JAX_for_PyTorch_users.ipynb
diff --git a/docs/JAX_for_PyTorch_users.md b/docs/source/JAX_for_PyTorch_users.md
similarity index 100%
rename from docs/JAX_for_PyTorch_users.md
rename to docs/source/JAX_for_PyTorch_users.md
diff --git a/docs/JAX_image_captioning.ipynb b/docs/source/JAX_image_captioning.ipynb
similarity index 100%
rename from docs/JAX_image_captioning.ipynb
rename to docs/source/JAX_image_captioning.ipynb
diff --git a/docs/JAX_image_captioning.md b/docs/source/JAX_image_captioning.md
similarity index 100%
rename from docs/JAX_image_captioning.md
rename to docs/source/JAX_image_captioning.md
diff --git a/docs/JAX_machine_translation.ipynb b/docs/source/JAX_machine_translation.ipynb
similarity index 100%
rename from docs/JAX_machine_translation.ipynb
rename to docs/source/JAX_machine_translation.ipynb
diff --git a/docs/JAX_machine_translation.md b/docs/source/JAX_machine_translation.md
similarity index 100%
rename from docs/JAX_machine_translation.md
rename to docs/source/JAX_machine_translation.md
diff --git a/docs/JAX_porting_PyTorch_model.ipynb b/docs/source/JAX_porting_PyTorch_model.ipynb
similarity index 100%
rename from docs/JAX_porting_PyTorch_model.ipynb
rename to docs/source/JAX_porting_PyTorch_model.ipynb
diff --git a/docs/JAX_porting_PyTorch_model.md b/docs/source/JAX_porting_PyTorch_model.md
similarity index 100%
rename from docs/JAX_porting_PyTorch_model.md
rename to docs/source/JAX_porting_PyTorch_model.md
diff --git a/docs/JAX_time_series_classification.ipynb b/docs/source/JAX_time_series_classification.ipynb
similarity index 100%
rename from docs/JAX_time_series_classification.ipynb
rename to docs/source/JAX_time_series_classification.ipynb
diff --git a/docs/JAX_time_series_classification.md b/docs/source/JAX_time_series_classification.md
similarity index 100%
rename from docs/JAX_time_series_classification.md
rename to docs/source/JAX_time_series_classification.md
diff --git a/docs/JAX_transformer_text_classification.ipynb b/docs/source/JAX_transformer_text_classification.ipynb
similarity index 100%
rename from docs/JAX_transformer_text_classification.ipynb
rename to docs/source/JAX_transformer_text_classification.ipynb
diff --git a/docs/JAX_transformer_text_classification.md b/docs/source/JAX_transformer_text_classification.md
similarity index 100%
rename from docs/JAX_transformer_text_classification.md
rename to docs/source/JAX_transformer_text_classification.md
diff --git a/docs/JAX_visualizing_models_metrics.ipynb b/docs/source/JAX_visualizing_models_metrics.ipynb
similarity index 99%
rename from docs/JAX_visualizing_models_metrics.ipynb
rename to docs/source/JAX_visualizing_models_metrics.ipynb
index b28c603..347b473 100644
--- a/docs/JAX_visualizing_models_metrics.ipynb
+++ b/docs/source/JAX_visualizing_models_metrics.ipynb
@@ -123,7 +123,7 @@
    "source": [
     "After running all above and launching `tensorboard --logdir runs/test` from the same folder, you should see the following in the supplied URL:\n",
     "\n",
-    "![image.png](./_static/training_data_example.png)"
+    "![image.png](./_static/images/training_data_example.png)"
    ]
   },
   {
@@ -225,7 +225,7 @@
    "source": [
     "We've now created the basic model - the above cell will render an interactive view of the model. Which, when fully expanded, should look something like this:\n",
     "\n",
-    "![image.png](./_static/nnx_display_example.png)"
+    "![image.png](./_static/images/nnx_display_example.png)"
    ]
   },
   {
@@ -328,7 +328,7 @@
     "\n",
     "The output there should look something like the following:\n",
     "\n",
-    "![image.png](./_static/loss_acc_example.png)"
+    "![image.png](./_static/images/loss_acc_example.png)"
    ]
   },
   {
@@ -339,11 +339,11 @@
     "\n",
     "At step 1, we see poor accuracy, as you would expect\n",
     "\n",
-    "![image.png](./_static/testsheet_start_example.png)\n",
+    "![image.png](./_static/images/testsheet_start_example.png)\n",
     "\n",
     "By 500, the model is essentially done, but we see the bottom row `7` get lost and recovered at higher epochs as we go far into an overfitting regime. This kind of stored data can be very useful when the training routines become automated and a human is potentially only looking when something has gone wrong.\n",
     "\n",
-    "![image.png](./_static/testsheets_500_3000.png)"
+    "![image.png](./_static/images/testsheets_500_3000.png)"
    ]
   },
   {
@@ -427,7 +427,7 @@
    "source": [
     "The above cell output will give you an interactive plot that looks like this image below, where here we've 'clicked' in the bottom plot for entry `7` and hover over the corresponding value in the top plot.\n",
     "\n",
-    "![image.png](./_static/model_display_example.png)"
+    "![image.png](./_static/images/model_display_example.png)"
    ]
   },
   {
diff --git a/docs/JAX_visualizing_models_metrics.md b/docs/source/JAX_visualizing_models_metrics.md
similarity index 96%
rename from docs/JAX_visualizing_models_metrics.md
rename to docs/source/JAX_visualizing_models_metrics.md
index 2033d14..6007c3f 100644
--- a/docs/JAX_visualizing_models_metrics.md
+++ b/docs/source/JAX_visualizing_models_metrics.md
@@ -83,7 +83,7 @@ with test_summary_writer.as_default():
 
 After running all above and launching `tensorboard --logdir runs/test` from the same folder, you should see the following in the supplied URL:
 
-![image.png](./_static/training_data_example.png)
+![image.png](./_static/images/training_data_example.png)
 
 ```{code-cell} ipython3
 :id: 6jrYisoPh6TL
@@ -131,7 +131,7 @@ nnx.display(model)  # Interactive display if penzai is installed.
 
 We've now created the basic model - the above cell will render an interactive view of the model. Which, when fully expanded, should look something like this:
 
-![image.png](./_static/nnx_display_example.png)
+![image.png](./_static/images/nnx_display_example.png)
 
 +++
 
@@ -211,7 +211,7 @@ During the training has run, and after, the added `Loss` and `Accuracy` scalars
 
 The output there should look something like the following:
 
-![image.png](./_static/loss_acc_example.png)
+![image.png](./_static/images/loss_acc_example.png)
 
 +++
 
@@ -219,11 +219,11 @@ Since we've stored the example test sheet every 500 epochs, it's easy to go back
 
 At step 1, we see poor accuracy, as you would expect
 
-![image.png](./_static/testsheet_start_example.png)
+![image.png](./_static/images/testsheet_start_example.png)
 
 By 500, the model is essentially done, but we see the bottom row `7` get lost and recovered at higher epochs as we go far into an overfitting regime. This kind of stored data can be very useful when the training routines become automated and a human is potentially only looking when something has gone wrong.
 
-![image.png](./_static/testsheets_500_3000.png)
+![image.png](./_static/images/testsheets_500_3000.png)
 
 +++
 
@@ -235,7 +235,7 @@ nnx.display(model(images_test[:35])), nnx.display(model(images_test[:35]).argmax
 
 The above cell output will give you an interactive plot that looks like this image below, where here we've 'clicked' in the bottom plot for entry `7` and hover over the corresponding value in the top plot.
 
-![image.png](./_static/model_display_example.png)
+![image.png](./_static/images/model_display_example.png)
 
 +++
 
diff --git a/docs/source/_static/css/custom.css b/docs/source/_static/css/custom.css
new file mode 100644
index 0000000..d75bfce
--- /dev/null
+++ b/docs/source/_static/css/custom.css
@@ -0,0 +1,284 @@
+/* Base file modifications */
+body:has(.hero) .bd-sidebar-primary,
+body:has(.hero) .sidebar-toggle,
+body:has(.hero) .bd-sidebar-secondary {
+    display: none !important;
+}
+
+body:has(.hero) .prev-next-footer {
+    display: none;
+}
+
+body:has(.hero) .bd-article-container {
+    max-width: unset !important;
+}
+
+body:has(.hero) .bd-page-width {
+    max-width: unset !important;
+}
+
+body:has(.hero) .bd-article {
+    display: flex;
+    flex-direction: column;
+    padding: 0;
+}
+
+body:has(.hero) .bd-container {
+    flex-direction: column;
+}
+
+body:has(.hero) .bd-article > section > h1 {
+    display: none;
+}
+
+@media (min-width: 960px) {
+    body:has(.hero) .bd-header-article {
+        justify-content: center;
+    }
+
+    body:has(.hero) .header-article-items,
+    body:has(.hero) .doc-body > section {
+        max-width: 80rem !important;
+        align-self: center;
+        width: -moz-available;
+        width: -webkit-fill-available;
+        width: fill-available;
+    }
+
+    body:has(.hero) .doc-body > section.hero,
+    body:has(.hero) .doc-body > section.banner {
+        max-width: 90rem !important;
+    }
+}
+
+/* -------------- Page styles ---------------- */
+.doc-body {
+    display: flex;
+    flex-direction: column;
+}
+
+.hero {
+    width: 100%;
+    display: grid;
+    grid: auto-flow / 1fr .8fr;
+    gap: 20px;
+    align-items: center;
+    background: url(../../_static/images/hero-radial.svg) no-repeat top -750px right -450px / 1500px #202124;
+    border-radius: 24px;
+    padding-left: 5%;
+}
+
+.hero span {
+    display: flex;
+    align-items: center;
+    margin-bottom: 20px;
+}
+
+.hero span img {
+    margin-right: 24px;
+    background: transparent !important;
+}
+
+.hero h1 {
+    font: 700 52px 'Google Sans', 'Roboto', sans-serif;
+    color: white;
+    margin: 0;
+}
+
+.hero-image {
+    background: none !important;
+}
+
+.button-primary {
+    background: #1A73E8;
+    border-radius: 4px;
+    color: white;
+    font: 400 14px 'Google Sans', 'Roboto', sans-serif;
+    text-decoration: none;
+    padding: 9px 26px;
+    transition: background-color .2s, border .2s, box-shadow .2s;
+    width: max-content;
+}
+
+.button-primary:visited:hover {
+    color: white !important;
+}
+
+.button-primary:hover {
+    background-color: #1765cc;
+    color: white;
+    transition: background-color .2s, border .2s, box-shadow .2s;
+    box-shadow: 0 1px 2px 0 rgba(60,64,67,.3),0 1px 3px 1px rgba(60,64,67,.15);
+}
+
+.button-primary:active {
+    background-color: #185abc;
+    color: white;
+    box-shadow: 0 1px 2px 0 rgba(60,64,67,.3),0 2px 6px 2px rgba(60,64,67,.15);
+}
+
+.button-primary:visited {
+    color: white;
+    text-decoration: none;
+}
+
+.banner {
+    background: #E8F0FE;
+    border-radius: 24px;
+    margin-block: 80px 100px;
+    padding-inline: 50px;
+    padding-bottom: 24px;
+}
+
+.three-up {
+    display: grid;
+    grid: auto-flow / 1fr 1fr 1fr;
+    gap: 24px;
+    padding-inline: 60px;
+    margin-top: 20px;
+}
+
+.doc-body .image-section h3 {
+    font: 500 32px 'Google Sans', 'Roboto', sans-serif;
+    margin-top: 0;
+}
+
+.doc-body .hero p {
+    color: #bdc1c6;
+}
+
+.doc-body p,
+.doc-body ul {
+    font: 400 16px 'Roboto', sans-serif;
+    color: #5F6368;
+    line-height: 24px;
+}
+
+.image-section {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    gap: 85px;
+    margin-bottom: 60px;
+}
+
+
+.image-section img {
+    background-color: transparent !important;
+}
+
+.image-section.image-right {
+    flex-direction: row-reverse;
+}
+
+.image-section .text-body {
+    padding-inline: 50px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.image-section .text-body *:last-child {
+    margin-bottom: 0;
+}
+
+.image-section li:not(:last-of-type) {
+    margin-bottom: 12px;
+}
+
+.image-section .button {
+    margin-top: 12px;
+}
+
+@media (max-width: 1240px) {
+    .hero h1 {
+        font-size: 42px;
+        margin-bottom: 24px;
+    }
+
+    .image-section {
+        gap: 32px;
+    }
+
+    .image-section img {
+        min-width: 50%;
+    }
+
+    .image-section .text-body {
+        padding-inline: 0;
+    }
+}
+
+@media (max-width: 1020px) {
+    .hero h1 {
+        font-size: 32px;
+    }
+
+    .image-section {
+        margin-bottom: 40px;
+    }
+}
+
+@media (max-width: 860px) {
+    .three-up {
+        grid: auto-flow / 1fr;
+        padding-inline: 0;
+    }
+
+    .three-up h3 {
+        margin-top: 8px;
+    }
+}
+
+@media (max-width: 800px) {
+    .hero {
+        grid: auto-flow / 1fr;
+        padding: 24px;
+    }
+
+    .hero > img {
+        display: none;
+    }
+
+    .image-section,
+    .image-section.image-right {
+        flex-direction: column;
+        margin-bottom: 80px;
+    }
+
+    .image-section h3 {
+        margin-top: 0;
+    }
+
+    .image-section .button {
+        margin-top: 0;
+    }
+}
+
+html[data-theme="dark"] .banner {
+    background: url(../../_static/images/hero-radial.svg) no-repeat bottom -1050px left -350px / 1500px #202124;
+}
+
+html[data-theme="dark"] .doc-body p,
+html[data-theme="dark"] .doc-body ul {
+    color: #bdc1c6;
+}
+
+html[data-theme="dark"] .button-primary {
+    background-color: #8ab4f8;
+    color: #121212;
+}
+
+html[data-theme="dark"] .button-primary:hover {
+    background-color: #98bdf9;
+    color: #121212;
+}
+
+html[data-theme="dark"] .button-primary:active {
+    background-color: #aecbfa;
+    color: #121212;
+}
+
+html[data-theme="dark"] .button-primary:visited:hover {
+    color: #121212 !important;
+}
diff --git a/docs/source/_static/images/ai-stack-logo.svg b/docs/source/_static/images/ai-stack-logo.svg
new file mode 100644
index 0000000..677e107
--- /dev/null
+++ b/docs/source/_static/images/ai-stack-logo.svg
@@ -0,0 +1,26 @@
+<svg width="68" height="77" viewBox="0 0 68 77" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_829_1840)">
+<path d="M66.9315 57.4645V19.4385L33.9999 0.425331L1.06836 19.4385V57.4645L33.9999 76.4776L66.9315 57.4645Z" fill="#3C4043" stroke="white" stroke-width="0.736821" stroke-miterlimit="10"/>
+<path d="M29.1466 46.5179L12.675 37.0078L4.43913 41.7218V51.3351L20.9108 60.8454L29.1466 56.1314V46.5179Z" fill="#231F20"/>
+<path d="M20.9108 51.2319L4.43913 41.7218V51.3351L20.9108 60.8454V51.2319Z" fill="#2A56C6"/>
+<path d="M51.2089 17.669L34.3193 7.91733L7.08414 23.6422V32.3391L15.4937 37.1946L34.3193 26.3252L42.7993 31.2211L51.2089 26.3657V17.669Z" fill="#231F20"/>
+<path d="M15.4937 28.4977L34.3193 17.6283L42.7993 22.5244L51.2089 17.669L34.3193 7.91733L7.08414 23.6422L15.4937 28.4977Z" fill="#9C27B0"/>
+<path d="M63.5608 23.6627L55.135 18.777L46.7463 23.6199V23.6415V32.3074V32.3288L55.1536 37.1933L63.5608 32.35V23.6627Z" fill="#231F20"/>
+<path d="M46.7463 23.6199V23.6415L55.1535 28.506L63.5608 23.6627L55.135 18.777L46.7463 23.6199Z" fill="#EA80FC"/>
+<path d="M18.9029 28.9534L34.8319 38.1504V29.4432L26.4434 24.5999L18.9029 28.9534Z" fill="#5E97F6"/>
+<path d="M50.7944 28.9341V37.6414L34.8319 46.8578V38.1504L50.7944 28.9341Z" fill="#2A56C6"/>
+<path d="M43.2543 24.5804L34.8319 29.4432V38.1504L50.7944 28.9341V28.9339L43.2543 24.5804Z" fill="#5E97F6"/>
+<path d="M18.9029 28.9534V37.6608L34.8319 46.8578V38.1504L18.9029 28.9534Z" fill="#2A56C6"/>
+<path d="M36.5975 58.3734V68.9856L45.8455 63.6579V53.0458L36.5975 58.3734Z" fill="#00796B"/>
+<path d="M36.5975 58.3734L27.3497 53.0226V63.6111V63.6347L36.5975 68.9856L45.8455 63.6579L36.5975 68.9856V58.3734Z" fill="#26A69A"/>
+<path d="M27.3497 52.9988V53.0226L36.5975 58.3734L45.8455 53.0458L36.5773 47.6716L27.3497 52.9988Z" fill="#231F20"/>
+<path d="M54.583 38.6938L46.3472 43.5023L54.583 48.3022L62.8188 43.5023L54.583 38.6938Z" fill="#231F20"/>
+<path d="M46.3472 43.5023V53.1106L54.583 57.9107V48.3021L46.3472 43.5023Z" fill="#231F20"/>
+<path d="M54.583 48.3021V57.9107L62.8188 53.1106V43.5023L54.583 48.3021Z" fill="#9C27B0"/>
+</g>
+<defs>
+<clipPath id="clip0_829_1840">
+<rect width="66.6" height="76.903" fill="white" transform="translate(0.699951)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/docs/source/_static/images/compiler.svg b/docs/source/_static/images/compiler.svg
new file mode 100644
index 0000000..1bf2bcd
--- /dev/null
+++ b/docs/source/_static/images/compiler.svg
@@ -0,0 +1,239 @@
+<svg width="598" height="340" viewBox="0 0 598 340" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_829_1650)">
+<rect width="598" height="340" rx="24" fill="#202124"/>
+<circle cx="529.5" cy="60.5" r="469.5" fill="url(#paint0_radial_829_1650)" fill-opacity="0.2"/>
+<circle cx="382.5" cy="189.5" r="469.5" fill="url(#paint1_radial_829_1650)" fill-opacity="0.08"/>
+<g clip-path="url(#clip1_829_1650)">
+<path d="M-31 243L199 136" stroke="#78D9EC" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M181 357L608 158" stroke="url(#paint2_linear_829_1650)" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M67 117L198.401 183.952" stroke="url(#paint3_linear_829_1650)" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M383 141L613 34" stroke="url(#paint4_linear_829_1650)" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M228 93L458 -14" stroke="#78D9EC" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M149 122L379 15" stroke="url(#paint5_linear_829_1650)" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M77 264L231.836 342.893" stroke="url(#paint6_linear_829_1650)" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M43 177V428.185" stroke="#12B5CB" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M232 267V518.185" stroke="#12B5CB" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M240 284V535.185" stroke="#12B5CB" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M437.495 217.186L437.495 -33.9999" stroke="#12B5CB" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M429.495 200.186L429.495 -50.9999" stroke="#12B5CB" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M69 289V414.291" stroke="url(#paint7_linear_829_1650)" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M525 -24V269.85" stroke="#12B5CB" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M461 -222V71.8504" stroke="#12B5CB" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M561 -24V336" stroke="#12B5CB" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M32 -24V336" stroke="#12B5CB" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M122 -286V74" stroke="#12B5CB" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M330 105L498.13 190.667" stroke="#78D9EC" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M195 218L363.13 303.667" stroke="#78D9EC" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M162 225.585L238.312 190" stroke="#78D9EC" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M105 210L330 105" stroke="url(#paint8_linear_829_1650)" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M161 417L878 82" stroke="url(#paint9_linear_829_1650)" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M-141 306L576 -29" stroke="url(#paint10_linear_829_1650)" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M-30 323L195 218" stroke="url(#paint11_linear_829_1650)" stroke-width="0.828297" stroke-miterlimit="10"/>
+<g filter="url(#filter0_d_829_1650)">
+<path d="M370.026 11.0966C369.736 10.9678 369.264 10.9678 368.974 11.0966L300.217 41.7655C299.928 41.8944 299.928 42.1056 300.217 42.2345L368.974 72.9034C369.264 73.0322 369.736 73.0322 370.026 72.9034L438.783 42.2345C439.072 42.1056 439.072 41.8944 438.783 41.7655L370.026 11.0966Z" fill="#495353"/>
+</g>
+<path d="M453.355 23.154L380.439 -14L292.481 27.015V45.035L365.397 82.188L453.355 41.173V23.154Z" fill="black"/>
+<path d="M365.397 64.169L453.355 23.154L380.439 -14L292.481 27.015L365.397 64.169Z" fill="url(#paint12_linear_829_1650)"/>
+<g filter="url(#filter1_d_829_1650)">
+<path d="M91.0431 244.082C90.7993 243.973 90.4005 243.973 90.1567 244.082L32.1828 270.029C31.9391 270.138 31.9391 270.317 32.1828 270.426L90.1567 296.373C90.4005 296.482 90.7993 296.482 91.0431 296.373L149.017 270.426C149.261 270.317 149.261 270.138 149.017 270.029L91.0431 244.082Z" fill="#495353"/>
+</g>
+<g filter="url(#filter2_d_829_1650)">
+<path d="M69.0431 106.082C68.7993 105.973 68.4005 105.973 68.1567 106.082L10.1828 132.029C9.93905 132.138 9.93905 132.317 10.1828 132.426L68.1567 158.373C68.4005 158.482 68.7993 158.482 69.0431 158.373L127.017 132.426C127.261 132.317 127.261 132.138 127.017 132.029L69.0431 106.082Z" fill="#495353"/>
+</g>
+<path d="M150.487 106.246L67.907 64.1689L-17 103.761V128.257L65.58 170.335L150.487 130.742V106.246Z" fill="black"/>
+<path d="M173.011 240.988L90.432 198.91L5.52502 238.503V262.999L88.104 305.076L173.011 265.484V240.988Z" fill="black"/>
+<path d="M150.487 106.246L67.907 64.1689L-17 103.761L65.58 145.839L150.487 106.246Z" fill="url(#paint13_linear_829_1650)"/>
+<path d="M173.011 240.988L90.432 198.91L5.52502 238.503L88.104 280.581L173.011 240.988Z" fill="url(#paint14_linear_829_1650)"/>
+<g filter="url(#filter3_d_829_1650)">
+<path d="M526.363 193.067C526.163 192.978 525.837 192.978 525.637 193.067L478.15 214.337C477.95 214.427 477.95 214.573 478.15 214.663L525.637 235.933C525.837 236.022 526.163 236.022 526.363 235.933L573.85 214.663C574.05 214.573 574.05 214.427 573.85 214.337L526.363 193.067Z" fill="#495353"/>
+</g>
+<path d="M684.446 366.378L494.329 269.506L386.121 319.964V338.547L576.238 435.419L684.446 384.961V366.378Z" fill="black"/>
+<path d="M540.355 99.9501L468.775 63.4771V215.519L540.357 251.993L540.355 251.992V99.9501Z" fill="url(#paint15_linear_829_1650)"/>
+<path d="M540.357 99.9511L540.355 99.9501V251.992L540.357 251.993L581.1 232.995V80.9531L540.357 99.9511Z" fill="black"/>
+<path d="M581.1 80.953L509.517 44.479L468.775 63.477L540.357 99.951L581.1 80.953Z" fill="url(#paint16_linear_829_1650)"/>
+<path d="M684.446 366.378L494.329 269.506L386.121 319.964L576.238 416.836L684.446 366.378Z" fill="url(#paint17_linear_829_1650)"/>
+<g filter="url(#filter4_d_829_1650)">
+<path d="M315.963 162.569C314.945 162.115 313.279 162.115 312.26 162.569L253.642 188.682C252.623 189.136 251.79 189.607 251.79 189.729V215.451C251.79 216.566 252.623 217.85 253.642 218.303L312.26 244.417C313.279 244.87 314.945 244.87 315.963 244.417L374.835 218.191C375.854 217.737 376.687 216.453 376.687 215.338V189.73C376.687 189.669 375.854 189.249 374.835 188.795L315.963 162.569Z" fill="url(#paint18_linear_829_1650)"/>
+</g>
+<path d="M316.62 136.469C315.213 135.844 312.912 135.844 311.506 136.469L230.557 172.495C229.15 173.121 228 173.771 228 173.94V209.425C228 210.964 229.151 212.735 230.557 213.36L311.506 249.386C312.912 250.012 315.213 250.012 316.62 249.386L397.919 213.205C399.326 212.579 400.476 210.808 400.476 209.269V173.941C400.476 173.857 399.325 173.277 397.919 172.651L316.62 136.469Z" fill="url(#paint19_linear_829_1650)"/>
+<path d="M316.62 136.469C315.213 135.844 312.913 135.844 311.506 136.469L230.557 172.495C229.15 173.121 228 173.771 228 173.94C228 174.109 229.151 174.76 230.557 175.385L260.409 188.671C261.815 189.297 264.116 190.321 265.523 190.947L311.506 211.411C312.913 212.037 315.214 212.037 316.62 211.411L362.604 190.947C364.01 190.321 366.311 189.297 367.718 188.671L397.92 175.23C399.326 174.604 400.477 174.024 400.477 173.94C400.477 173.857 399.326 173.276 397.92 172.65L316.62 136.469Z" fill="url(#paint20_linear_829_1650)"/>
+<path d="M-75 -16L161.524 104.516" stroke="url(#paint21_linear_829_1650)" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M345 -76L535.813 21.2237" stroke="url(#paint22_linear_829_1650)" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M155 40.5378L211.911 14" stroke="url(#paint23_linear_829_1650)" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M171 38.5378L227.911 12" stroke="#78D9EC" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M95 53L272 -30" stroke="#78D9EC" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M386 301L631 187" stroke="#78D9EC" stroke-width="0.828297" stroke-miterlimit="10"/>
+<path d="M195.248 186.495C197.593 186.495 199.495 184.593 199.495 182.248C199.495 179.902 197.593 178 195.248 178C192.902 178 191 179.902 191 182.248C191 184.593 192.902 186.495 195.248 186.495Z" fill="#78D9EC"/>
+<path d="M536.248 25.495C538.593 25.495 540.495 23.5933 540.495 21.2475C540.495 18.9017 538.593 17 536.248 17C533.902 17 532 18.9017 532 21.2475C532 23.5933 533.902 25.495 536.248 25.495Z" fill="#78D9EC"/>
+<path d="M163.753 227.507C165.274 227.507 166.507 226.274 166.507 224.753C166.507 223.233 165.274 222 163.753 222C162.233 222 161 223.233 161 224.753C161 226.274 162.233 227.507 163.753 227.507Z" fill="#78D9EC"/>
+<path d="M329.753 108.507C331.274 108.507 332.507 107.274 332.507 105.753C332.507 104.233 331.274 103 329.753 103C328.233 103 327 104.233 327 105.753C327 107.274 328.233 108.507 329.753 108.507Z" fill="#78D9EC"/>
+<path d="M232.247 272.495C234.593 272.495 236.495 270.593 236.495 268.247C236.495 265.902 234.593 264 232.247 264C229.902 264 228 265.902 228 268.247C228 270.593 229.902 272.495 232.247 272.495Z" fill="#78D9EC"/>
+<path d="M240.247 289.495C242.593 289.495 244.495 287.593 244.495 285.247C244.495 282.902 242.593 281 240.247 281C237.902 281 236 282.902 236 285.247C236 287.593 237.902 289.495 240.247 289.495Z" fill="#78D9EC"/>
+<path d="M384.248 306.495C386.593 306.495 388.495 304.593 388.495 302.247C388.495 299.902 386.593 298 384.248 298C381.902 298 380 299.902 380 302.247C380 304.593 381.902 306.495 384.248 306.495Z" fill="#78D9EC"/>
+<path d="M43.2475 182.495C45.5933 182.495 47.495 180.593 47.495 178.247C47.495 175.902 45.5933 174 43.2475 174C40.9017 174 39 175.902 39 178.247C39 180.593 40.9017 182.495 43.2475 182.495Z" fill="#78D9EC"/>
+<path d="M97.2475 48C94.9017 48 93 49.9017 93 52.2475C93 54.5933 94.9017 56.495 97.2475 56.495C99.5933 56.495 101.495 54.5933 101.495 52.2475C101.495 49.9017 99.5933 48 97.2475 48Z" fill="#78D9EC"/>
+<path d="M429.247 194.691C426.902 194.691 425 196.592 425 198.938C425 201.284 426.902 203.186 429.247 203.186C431.593 203.186 433.495 201.284 433.495 198.938C433.495 196.592 431.593 194.691 429.247 194.691Z" fill="#78D9EC"/>
+<path d="M524.753 273.507C526.274 273.507 527.506 272.274 527.506 270.753C527.506 269.233 526.274 268 524.753 268C523.233 268 522 269.233 522 270.753C522 272.274 523.233 273.507 524.753 273.507Z" fill="#78D9EC"/>
+<path d="M226.753 96.5065C228.274 96.5065 229.506 95.2738 229.506 93.7533C229.506 92.2327 228.274 91 226.753 91C225.233 91 224 92.2327 224 93.7533C224 95.2738 225.233 96.5065 226.753 96.5065Z" fill="#78D9EC"/>
+<path d="M227.753 14.5065C229.274 14.5065 230.506 13.2738 230.506 11.7533C230.506 10.2327 229.274 9 227.753 9C226.233 9 225 10.2327 225 11.7533C225 13.2738 226.233 14.5065 227.753 14.5065Z" fill="#78D9EC"/>
+<path d="M460.753 75.5065C462.274 75.5065 463.506 74.2738 463.506 72.7533C463.506 71.2327 462.274 70 460.753 70C459.233 70 458 71.2327 458 72.7533C458 74.2738 459.233 75.5065 460.753 75.5065Z" fill="#78D9EC"/>
+<path d="M121.753 75.5065C123.274 75.5065 124.506 74.2738 124.506 72.7533C124.506 71.2327 123.274 70 121.753 70C120.233 70 119 71.2327 119 72.7533C119 74.2738 120.233 75.5065 121.753 75.5065Z" fill="#78D9EC"/>
+</g>
+</g>
+<defs>
+<filter id="filter0_d_829_1650" x="283.485" y="11" width="172.029" height="97.7404" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="19.2259"/>
+<feGaussianBlur stdDeviation="8.25726"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.69 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_829_1650"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_829_1650" result="shape"/>
+</filter>
+<filter id="filter1_d_829_1650" x="15.4855" y="244" width="150.229" height="88.1947" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="19.2259"/>
+<feGaussianBlur stdDeviation="8.25726"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.69 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_829_1650"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_829_1650" result="shape"/>
+</filter>
+<filter id="filter2_d_829_1650" x="-6.51452" y="106" width="150.229" height="88.1947" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="19.2259"/>
+<feGaussianBlur stdDeviation="8.25726"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.69 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_829_1650"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_829_1650" result="shape"/>
+</filter>
+<filter id="filter3_d_829_1650" x="461.485" y="193" width="129.029" height="78.7404" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="19.2259"/>
+<feGaussianBlur stdDeviation="8.25726"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.69 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_829_1650"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_829_1650" result="shape"/>
+</filter>
+<filter id="filter4_d_829_1650" x="241.191" y="162.228" width="143.63" height="102.001" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dx="-1.23243" dy="10.1059"/>
+<feGaussianBlur stdDeviation="4.68323"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.79 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_829_1650"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_829_1650" result="shape"/>
+</filter>
+<radialGradient id="paint0_radial_829_1650" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(529.5 60.5) rotate(90) scale(469.5)">
+<stop stop-color="#5E97F6"/>
+<stop offset="1" stop-color="#5E97F6" stop-opacity="0"/>
+</radialGradient>
+<radialGradient id="paint1_radial_829_1650" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(382.5 189.5) rotate(90) scale(469.5)">
+<stop stop-color="#5E97F6"/>
+<stop offset="1" stop-color="#5E97F6" stop-opacity="0"/>
+</radialGradient>
+<linearGradient id="paint2_linear_829_1650" x1="394.5" y1="158" x2="394.5" y2="357" gradientUnits="userSpaceOnUse">
+<stop stop-color="#78D9EC"/>
+<stop offset="1" stop-color="#202124"/>
+</linearGradient>
+<linearGradient id="paint3_linear_829_1650" x1="132.7" y1="133.898" x2="132.7" y2="183.952" gradientUnits="userSpaceOnUse">
+<stop stop-color="#202124"/>
+<stop offset="1" stop-color="#78D9EC"/>
+</linearGradient>
+<linearGradient id="paint4_linear_829_1650" x1="498" y1="34" x2="498" y2="141" gradientUnits="userSpaceOnUse">
+<stop stop-color="#78D9EC"/>
+<stop offset="1" stop-color="#202124"/>
+</linearGradient>
+<linearGradient id="paint5_linear_829_1650" x1="264" y1="15" x2="264" y2="122" gradientUnits="userSpaceOnUse">
+<stop stop-color="#78D9EC"/>
+<stop offset="1" stop-color="#202124"/>
+</linearGradient>
+<linearGradient id="paint6_linear_829_1650" x1="154.418" y1="264" x2="154.418" y2="342.893" gradientUnits="userSpaceOnUse">
+<stop offset="0.42" stop-color="#202124"/>
+<stop offset="1" stop-color="#78D9EC"/>
+</linearGradient>
+<linearGradient id="paint7_linear_829_1650" x1="69.5" y1="178.486" x2="69.5" y2="414.291" gradientUnits="userSpaceOnUse">
+<stop stop-color="#202124" stop-opacity="0.352941"/>
+<stop offset="1" stop-color="#12B5CB"/>
+</linearGradient>
+<linearGradient id="paint8_linear_829_1650" x1="217.5" y1="105" x2="217.5" y2="210" gradientUnits="userSpaceOnUse">
+<stop stop-color="#78D9EC"/>
+<stop offset="1" stop-color="#202124"/>
+</linearGradient>
+<linearGradient id="paint9_linear_829_1650" x1="519.5" y1="82" x2="519.5" y2="417" gradientUnits="userSpaceOnUse">
+<stop stop-color="#78D9EC"/>
+<stop offset="1" stop-color="#202124"/>
+</linearGradient>
+<linearGradient id="paint10_linear_829_1650" x1="217.5" y1="-29" x2="217.5" y2="306" gradientUnits="userSpaceOnUse">
+<stop stop-color="#78D9EC"/>
+<stop offset="1" stop-color="#202124"/>
+</linearGradient>
+<linearGradient id="paint11_linear_829_1650" x1="82.5" y1="218" x2="82.5" y2="323" gradientUnits="userSpaceOnUse">
+<stop stop-color="#78D9EC"/>
+<stop offset="1" stop-color="#202124"/>
+</linearGradient>
+<linearGradient id="paint12_linear_829_1650" x1="400.515" y1="-61.3352" x2="334.874" y2="40.3428" gradientUnits="userSpaceOnUse">
+<stop stop-color="#50FFEF"/>
+<stop offset="1" stop-color="#12655B"/>
+</linearGradient>
+<linearGradient id="paint13_linear_829_1650" x1="150" y1="79" x2="-77.2183" y2="13.9761" gradientUnits="userSpaceOnUse">
+<stop stop-color="#8184BF"/>
+<stop offset="1" stop-color="#1E31EE"/>
+</linearGradient>
+<linearGradient id="paint14_linear_829_1650" x1="144.185" y1="210.51" x2="51.9862" y2="255.89" gradientUnits="userSpaceOnUse">
+<stop stop-color="#38FFF8"/>
+<stop offset="1" stop-color="#348FFD"/>
+</linearGradient>
+<linearGradient id="paint15_linear_829_1650" x1="642.192" y1="201.152" x2="467.892" y2="194.976" gradientUnits="userSpaceOnUse">
+<stop stop-color="#5771B9"/>
+<stop offset="0.399077" stop-color="#9B27AF"/>
+<stop offset="1" stop-color="#310A49"/>
+</linearGradient>
+<linearGradient id="paint16_linear_829_1650" x1="559.348" y1="66.9619" x2="476.36" y2="94.4217" gradientUnits="userSpaceOnUse">
+<stop stop-color="#EA74FF"/>
+<stop offset="1" stop-color="#32248C"/>
+</linearGradient>
+<linearGradient id="paint17_linear_829_1650" x1="806.512" y1="269.943" x2="514.804" y2="207.348" gradientUnits="userSpaceOnUse">
+<stop stop-color="#070C4F"/>
+<stop offset="1" stop-color="#1E31EE"/>
+</linearGradient>
+<linearGradient id="paint18_linear_829_1650" x1="363.112" y1="209.249" x2="298.381" y2="222.669" gradientUnits="userSpaceOnUse">
+<stop stop-color="#5771B9"/>
+<stop offset="1" stop-color="#1A1919"/>
+</linearGradient>
+<linearGradient id="paint19_linear_829_1650" x1="412.721" y1="206.522" x2="260.536" y2="200.689" gradientUnits="userSpaceOnUse">
+<stop stop-color="#5771B9"/>
+<stop offset="0.399077" stop-color="#9B27AF"/>
+<stop offset="1" stop-color="#310A49"/>
+</linearGradient>
+<linearGradient id="paint20_linear_829_1650" x1="314.238" y1="136" x2="314.238" y2="211.88" gradientUnits="userSpaceOnUse">
+<stop stop-color="#EA80FC"/>
+<stop offset="1" stop-color="#BE4CD2"/>
+</linearGradient>
+<linearGradient id="paint21_linear_829_1650" x1="43.2621" y1="2.39824" x2="43.2621" y2="104.516" gradientUnits="userSpaceOnUse">
+<stop stop-color="#202124"/>
+<stop offset="1" stop-color="#78D9EC"/>
+</linearGradient>
+<linearGradient id="paint22_linear_829_1650" x1="440.407" y1="-76" x2="440.407" y2="21.2237" gradientUnits="userSpaceOnUse">
+<stop offset="0.43" stop-color="#202124"/>
+<stop offset="1" stop-color="#78D9EC"/>
+</linearGradient>
+<linearGradient id="paint23_linear_829_1650" x1="183.456" y1="14" x2="183.456" y2="40.5378" gradientUnits="userSpaceOnUse">
+<stop stop-color="#78D9EC"/>
+<stop offset="1" stop-color="#202124"/>
+</linearGradient>
+<clipPath id="clip0_829_1650">
+<rect width="598" height="340" rx="24" fill="white"/>
+</clipPath>
+<clipPath id="clip1_829_1650">
+<rect width="701.446" height="449.419" fill="white" transform="translate(-17 -14)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/docs/source/_static/images/favicon.png b/docs/source/_static/images/favicon.png
new file mode 100644
index 0000000..862712f
Binary files /dev/null and b/docs/source/_static/images/favicon.png differ
diff --git a/docs/source/_static/images/hardware.svg b/docs/source/_static/images/hardware.svg
new file mode 100644
index 0000000..0bb234d
--- /dev/null
+++ b/docs/source/_static/images/hardware.svg
@@ -0,0 +1,96 @@
+<svg width="598" height="340" viewBox="0 0 598 340" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_849_318)">
+<rect width="598" height="340" rx="24" fill="#202124"/>
+<circle cx="529.5" cy="60.5" r="469.5" fill="url(#paint0_radial_849_318)" fill-opacity="0.2"/>
+<circle cx="163.5" cy="307.5" r="469.5" fill="url(#paint1_radial_849_318)" fill-opacity="0.2"/>
+<rect x="56.5" y="272.5" width="80" height="43" rx="7.5" fill="white" fill-opacity="0.15"/>
+<rect x="56.5" y="272.5" width="80" height="43" rx="7.5" stroke="white"/>
+<path d="M89.5666 295.76H91.2756C91.2209 296.411 91.0386 296.993 90.7287 297.503C90.4188 298.009 89.9836 298.408 89.423 298.699C88.8625 298.991 88.1812 299.137 87.3791 299.137C86.7639 299.137 86.2102 299.027 85.718 298.809C85.2258 298.585 84.8042 298.271 84.4533 297.865C84.1024 297.455 83.8335 296.961 83.6467 296.382C83.4644 295.803 83.3732 295.156 83.3732 294.44V293.613C83.3732 292.898 83.4667 292.251 83.6535 291.672C83.8449 291.093 84.1184 290.599 84.4738 290.188C84.8293 289.774 85.2554 289.457 85.7521 289.238C86.2535 289.02 86.8163 288.91 87.4406 288.91C88.2336 288.91 88.9035 289.056 89.4504 289.348C89.9973 289.639 90.4211 290.043 90.7219 290.558C91.0272 291.073 91.2141 291.663 91.2824 292.328H89.5734C89.5279 291.9 89.4276 291.533 89.2727 291.228C89.1223 290.922 88.899 290.69 88.6027 290.53C88.3065 290.366 87.9191 290.284 87.4406 290.284C87.0487 290.284 86.7069 290.357 86.4152 290.503C86.1236 290.649 85.8798 290.863 85.6838 291.146C85.4878 291.428 85.3397 291.777 85.2395 292.191C85.1438 292.602 85.0959 293.071 85.0959 293.6V294.44C85.0959 294.942 85.1392 295.397 85.2258 295.808C85.3169 296.213 85.4536 296.562 85.6359 296.854C85.8228 297.145 86.0598 297.371 86.3469 297.53C86.634 297.69 86.9781 297.77 87.3791 297.77C87.8667 297.77 88.2609 297.692 88.5617 297.537C88.8671 297.382 89.0972 297.157 89.2521 296.86C89.4117 296.56 89.5165 296.193 89.5666 295.76ZM96.8145 295.288H94.2236V293.928H96.8145C97.2656 293.928 97.6302 293.855 97.9082 293.709C98.1862 293.563 98.389 293.363 98.5166 293.107C98.6488 292.848 98.7148 292.551 98.7148 292.219C98.7148 291.904 98.6488 291.61 98.5166 291.337C98.389 291.059 98.1862 290.836 97.9082 290.667C97.6302 290.498 97.2656 290.414 96.8145 290.414H94.75V299H93.0342V289.047H96.8145C97.5846 289.047 98.2386 289.184 98.7764 289.457C99.3187 289.726 99.7311 290.1 100.014 290.578C100.296 291.052 100.438 291.594 100.438 292.205C100.438 292.848 100.296 293.399 100.014 293.859C99.7311 294.32 99.3187 294.673 98.7764 294.919C98.2386 295.165 97.5846 295.288 96.8145 295.288ZM107.761 289.047H109.47V295.698C109.47 296.455 109.305 297.088 108.977 297.599C108.649 298.109 108.203 298.494 107.638 298.754C107.077 299.009 106.45 299.137 105.758 299.137C105.042 299.137 104.404 299.009 103.844 298.754C103.283 298.494 102.841 298.109 102.517 297.599C102.198 297.088 102.039 296.455 102.039 295.698V289.047H103.748V295.698C103.748 296.177 103.83 296.571 103.994 296.881C104.158 297.186 104.39 297.412 104.691 297.558C104.992 297.703 105.347 297.776 105.758 297.776C106.168 297.776 106.521 297.703 106.817 297.558C107.118 297.412 107.35 297.186 107.514 296.881C107.679 296.571 107.761 296.177 107.761 295.698V289.047Z" fill="white"/>
+<rect x="157.5" y="272.5" width="80" height="43" rx="7.5" fill="white" fill-opacity="0.15"/>
+<rect x="157.5" y="272.5" width="80" height="43" rx="7.5" stroke="white"/>
+<path d="M189.09 289.047V299H187.388V289.047H189.09ZM192.214 289.047V290.414H184.291V289.047H192.214ZM197.507 295.288H194.916V293.928H197.507C197.958 293.928 198.323 293.855 198.601 293.709C198.879 293.563 199.081 293.363 199.209 293.107C199.341 292.848 199.407 292.551 199.407 292.219C199.407 291.904 199.341 291.61 199.209 291.337C199.081 291.059 198.879 290.836 198.601 290.667C198.323 290.498 197.958 290.414 197.507 290.414H195.442V299H193.727V289.047H197.507C198.277 289.047 198.931 289.184 199.469 289.457C200.011 289.726 200.424 290.1 200.706 290.578C200.989 291.052 201.13 291.594 201.13 292.205C201.13 292.848 200.989 293.399 200.706 293.859C200.424 294.32 200.011 294.673 199.469 294.919C198.931 295.165 198.277 295.288 197.507 295.288ZM208.453 289.047H210.162V295.698C210.162 296.455 209.998 297.088 209.67 297.599C209.342 298.109 208.895 298.494 208.33 298.754C207.769 299.009 207.143 299.137 206.45 299.137C205.735 299.137 205.096 299.009 204.536 298.754C203.975 298.494 203.533 298.109 203.21 297.599C202.891 297.088 202.731 296.455 202.731 295.698V289.047H204.44V295.698C204.44 296.177 204.522 296.571 204.686 296.881C204.85 297.186 205.083 297.412 205.384 297.558C205.684 297.703 206.04 297.776 206.45 297.776C206.86 297.776 207.213 297.703 207.51 297.558C207.81 297.412 208.043 297.186 208.207 296.881C208.371 296.571 208.453 296.177 208.453 295.698V289.047Z" fill="white"/>
+<rect x="258.5" y="272.5" width="80" height="43" rx="7.5" fill="white" fill-opacity="0.15"/>
+<rect x="258.5" y="272.5" width="80" height="43" rx="7.5" stroke="white"/>
+<path d="M293.132 293.914V297.715C292.991 297.902 292.77 298.107 292.469 298.33C292.173 298.549 291.779 298.738 291.286 298.897C290.794 299.057 290.181 299.137 289.447 299.137C288.823 299.137 288.251 299.032 287.732 298.822C287.212 298.608 286.763 298.296 286.385 297.886C286.011 297.476 285.722 296.977 285.517 296.389C285.312 295.796 285.209 295.122 285.209 294.365V293.675C285.209 292.923 285.303 292.253 285.489 291.665C285.681 291.073 285.954 290.571 286.31 290.161C286.665 289.751 287.094 289.441 287.595 289.231C288.101 289.017 288.673 288.91 289.311 288.91C290.126 288.91 290.801 289.047 291.334 289.32C291.872 289.589 292.287 289.963 292.578 290.441C292.87 290.92 293.055 291.467 293.132 292.082H291.45C291.396 291.736 291.289 291.426 291.129 291.152C290.974 290.879 290.751 290.665 290.459 290.51C290.172 290.35 289.798 290.271 289.338 290.271C288.942 290.271 288.593 290.346 288.292 290.496C287.991 290.646 287.741 290.868 287.54 291.159C287.344 291.451 287.196 291.806 287.096 292.226C286.996 292.645 286.946 293.123 286.946 293.661V294.365C286.946 294.912 287.002 295.397 287.116 295.821C287.235 296.245 287.404 296.603 287.622 296.895C287.846 297.186 288.117 297.407 288.436 297.558C288.755 297.703 289.115 297.776 289.516 297.776C289.908 297.776 290.229 297.744 290.48 297.681C290.73 297.612 290.929 297.533 291.074 297.441C291.225 297.346 291.341 297.255 291.423 297.168V295.192H289.352V293.914H293.132ZM299.013 295.288H296.422V293.928H299.013C299.464 293.928 299.828 293.855 300.106 293.709C300.384 293.563 300.587 293.363 300.715 293.107C300.847 292.848 300.913 292.551 300.913 292.219C300.913 291.904 300.847 291.61 300.715 291.337C300.587 291.059 300.384 290.836 300.106 290.667C299.828 290.498 299.464 290.414 299.013 290.414H296.948V299H295.232V289.047H299.013C299.783 289.047 300.437 289.184 300.975 289.457C301.517 289.726 301.929 290.1 302.212 290.578C302.494 291.052 302.636 291.594 302.636 292.205C302.636 292.848 302.494 293.399 302.212 293.859C301.929 294.32 301.517 294.673 300.975 294.919C300.437 295.165 299.783 295.288 299.013 295.288ZM309.959 289.047H311.668V295.698C311.668 296.455 311.504 297.088 311.176 297.599C310.847 298.109 310.401 298.494 309.836 298.754C309.275 299.009 308.649 299.137 307.956 299.137C307.24 299.137 306.602 299.009 306.042 298.754C305.481 298.494 305.039 298.109 304.716 297.599C304.397 297.088 304.237 296.455 304.237 295.698V289.047H305.946V295.698C305.946 296.177 306.028 296.571 306.192 296.881C306.356 297.186 306.589 297.412 306.889 297.558C307.19 297.703 307.546 297.776 307.956 297.776C308.366 297.776 308.719 297.703 309.015 297.558C309.316 297.412 309.549 297.186 309.713 296.881C309.877 296.571 309.959 296.177 309.959 295.698V289.047Z" fill="white"/>
+<rect x="359.5" y="272.5" width="80" height="43" rx="7.5" fill="white" fill-opacity="0.15"/>
+<rect x="359.5" y="272.5" width="80" height="43" rx="7.5" stroke="white"/>
+<path d="M376.303 289.047V299H374.601V289.047H376.303ZM379.427 289.047V290.414H371.504V289.047H379.427ZM381.937 293.012V299H380.29V291.604H381.862L381.937 293.012ZM384.2 291.556L384.187 293.087C384.086 293.069 383.977 293.055 383.858 293.046C383.744 293.037 383.631 293.032 383.517 293.032C383.234 293.032 382.986 293.073 382.771 293.155C382.557 293.233 382.377 293.347 382.231 293.497C382.09 293.643 381.981 293.821 381.903 294.03C381.826 294.24 381.78 294.475 381.767 294.734L381.391 294.762C381.391 294.297 381.436 293.866 381.527 293.47C381.618 293.073 381.755 292.725 381.937 292.424C382.124 292.123 382.357 291.888 382.635 291.72C382.917 291.551 383.243 291.467 383.612 291.467C383.713 291.467 383.82 291.476 383.934 291.494C384.052 291.512 384.141 291.533 384.2 291.556ZM389.356 297.517V293.989C389.356 293.725 389.308 293.497 389.213 293.306C389.117 293.114 388.971 292.966 388.775 292.861C388.584 292.757 388.342 292.704 388.051 292.704C387.782 292.704 387.549 292.75 387.353 292.841C387.157 292.932 387.005 293.055 386.895 293.21C386.786 293.365 386.731 293.54 386.731 293.736H385.091C385.091 293.445 385.161 293.162 385.303 292.889C385.444 292.615 385.649 292.371 385.918 292.157C386.187 291.943 386.508 291.774 386.882 291.651C387.255 291.528 387.675 291.467 388.139 291.467C388.695 291.467 389.188 291.56 389.616 291.747C390.049 291.934 390.388 292.216 390.635 292.595C390.885 292.968 391.011 293.438 391.011 294.003V297.291C391.011 297.628 391.033 297.931 391.079 298.2C391.129 298.465 391.2 298.695 391.291 298.891V299H389.602C389.525 298.822 389.463 298.597 389.418 298.323C389.377 298.045 389.356 297.776 389.356 297.517ZM389.596 294.502L389.609 295.521H388.427C388.121 295.521 387.852 295.55 387.62 295.609C387.387 295.664 387.194 295.746 387.039 295.855C386.884 295.965 386.768 296.097 386.69 296.252C386.613 296.407 386.574 296.582 386.574 296.778C386.574 296.974 386.62 297.154 386.711 297.318C386.802 297.478 386.934 297.603 387.107 297.694C387.285 297.785 387.499 297.831 387.75 297.831C388.087 297.831 388.381 297.763 388.632 297.626C388.887 297.485 389.087 297.314 389.233 297.113C389.379 296.908 389.457 296.715 389.466 296.532L389.999 297.264C389.944 297.451 389.851 297.651 389.719 297.865C389.586 298.079 389.413 298.285 389.199 298.48C388.989 298.672 388.736 298.829 388.44 298.952C388.149 299.075 387.811 299.137 387.429 299.137C386.945 299.137 386.515 299.041 386.137 298.85C385.758 298.654 385.462 298.392 385.248 298.063C385.034 297.731 384.927 297.355 384.927 296.936C384.927 296.544 384.999 296.197 385.145 295.896C385.296 295.591 385.514 295.336 385.802 295.131C386.093 294.926 386.449 294.771 386.868 294.666C387.287 294.557 387.766 294.502 388.304 294.502H389.596ZM394.697 291.604V299H393.043V291.604H394.697ZM392.933 289.662C392.933 289.411 393.015 289.204 393.179 289.04C393.348 288.871 393.58 288.787 393.877 288.787C394.168 288.787 394.398 288.871 394.567 289.04C394.736 289.204 394.82 289.411 394.82 289.662C394.82 289.908 394.736 290.113 394.567 290.277C394.398 290.441 394.168 290.523 393.877 290.523C393.58 290.523 393.348 290.441 393.179 290.277C393.015 290.113 392.933 289.908 392.933 289.662ZM398.335 293.183V299H396.688V291.604H398.24L398.335 293.183ZM398.041 295.028L397.508 295.021C397.513 294.497 397.586 294.017 397.727 293.579C397.873 293.142 398.073 292.766 398.329 292.451C398.588 292.137 398.898 291.895 399.258 291.727C399.618 291.553 400.019 291.467 400.461 291.467C400.817 291.467 401.138 291.517 401.425 291.617C401.717 291.713 401.965 291.87 402.17 292.089C402.38 292.308 402.539 292.592 402.649 292.943C402.758 293.29 402.813 293.716 402.813 294.222V299H401.159V294.215C401.159 293.859 401.106 293.579 401.001 293.374C400.901 293.164 400.753 293.016 400.557 292.93C400.366 292.839 400.126 292.793 399.839 292.793C399.557 292.793 399.304 292.852 399.08 292.971C398.857 293.089 398.668 293.251 398.513 293.456C398.363 293.661 398.246 293.898 398.164 294.167C398.082 294.436 398.041 294.723 398.041 295.028ZM406.458 291.604V299H404.804V291.604H406.458ZM404.695 289.662C404.695 289.411 404.777 289.204 404.941 289.04C405.109 288.871 405.342 288.787 405.638 288.787C405.93 288.787 406.16 288.871 406.328 289.04C406.497 289.204 406.581 289.411 406.581 289.662C406.581 289.908 406.497 290.113 406.328 290.277C406.16 290.441 405.93 290.523 405.638 290.523C405.342 290.523 405.109 290.441 404.941 290.277C404.777 290.113 404.695 289.908 404.695 289.662ZM412.913 297.257V291.604H414.567V299H413.009L412.913 297.257ZM413.146 295.719L413.699 295.705C413.699 296.202 413.645 296.66 413.535 297.079C413.426 297.494 413.257 297.856 413.029 298.166C412.801 298.471 412.51 298.711 412.154 298.884C411.799 299.052 411.373 299.137 410.876 299.137C410.516 299.137 410.186 299.084 409.885 298.979C409.584 298.875 409.324 298.713 409.105 298.494C408.891 298.275 408.725 297.991 408.606 297.64C408.488 297.289 408.429 296.869 408.429 296.382V291.604H410.076V296.396C410.076 296.664 410.108 296.89 410.172 297.072C410.236 297.25 410.322 297.394 410.432 297.503C410.541 297.612 410.669 297.69 410.814 297.735C410.96 297.781 411.115 297.804 411.279 297.804C411.749 297.804 412.118 297.713 412.387 297.53C412.66 297.343 412.854 297.093 412.968 296.778C413.086 296.464 413.146 296.111 413.146 295.719ZM418.103 293.107V299H416.456V291.604H418.008L418.103 293.107ZM417.837 295.028L417.276 295.021C417.276 294.511 417.34 294.039 417.468 293.606C417.595 293.174 417.782 292.798 418.028 292.479C418.274 292.155 418.58 291.907 418.944 291.733C419.313 291.556 419.739 291.467 420.222 291.467C420.56 291.467 420.867 291.517 421.145 291.617C421.428 291.713 421.672 291.866 421.877 292.075C422.086 292.285 422.246 292.554 422.355 292.882C422.469 293.21 422.526 293.606 422.526 294.071V299H420.879V294.215C420.879 293.855 420.824 293.572 420.715 293.367C420.61 293.162 420.457 293.016 420.257 292.93C420.061 292.839 419.826 292.793 419.553 292.793C419.243 292.793 418.978 292.852 418.76 292.971C418.545 293.089 418.37 293.251 418.233 293.456C418.096 293.661 417.996 293.898 417.932 294.167C417.869 294.436 417.837 294.723 417.837 295.028ZM422.424 294.591L421.651 294.762C421.651 294.315 421.713 293.894 421.836 293.497C421.963 293.096 422.148 292.745 422.389 292.444C422.636 292.139 422.939 291.9 423.299 291.727C423.659 291.553 424.071 291.467 424.536 291.467C424.914 291.467 425.251 291.519 425.548 291.624C425.848 291.724 426.104 291.884 426.313 292.103C426.523 292.321 426.682 292.606 426.792 292.957C426.901 293.303 426.956 293.723 426.956 294.215V299H425.302V294.208C425.302 293.834 425.247 293.545 425.138 293.34C425.033 293.135 424.882 292.993 424.686 292.916C424.49 292.834 424.256 292.793 423.982 292.793C423.727 292.793 423.501 292.841 423.305 292.937C423.114 293.028 422.952 293.158 422.82 293.326C422.688 293.49 422.588 293.679 422.519 293.894C422.456 294.108 422.424 294.34 422.424 294.591Z" fill="white"/>
+<rect x="460.5" y="272.5" width="80" height="43" rx="7.5" fill="white" fill-opacity="0.15"/>
+<rect x="460.5" y="272.5" width="80" height="43" rx="7.5" stroke="white"/>
+<path d="M495.371 298.18C495.371 297.924 495.458 297.71 495.631 297.537C495.804 297.359 496.039 297.271 496.335 297.271C496.636 297.271 496.871 297.359 497.039 297.537C497.212 297.71 497.299 297.924 497.299 298.18C497.299 298.435 497.212 298.649 497.039 298.822C496.871 298.995 496.636 299.082 496.335 299.082C496.039 299.082 495.804 298.995 495.631 298.822C495.458 298.649 495.371 298.435 495.371 298.18ZM499.468 298.18C499.468 297.924 499.554 297.71 499.728 297.537C499.901 297.359 500.135 297.271 500.432 297.271C500.732 297.271 500.967 297.359 501.136 297.537C501.309 297.71 501.396 297.924 501.396 298.18C501.396 298.435 501.309 298.649 501.136 298.822C500.967 298.995 500.732 299.082 500.432 299.082C500.135 299.082 499.901 298.995 499.728 298.822C499.554 298.649 499.468 298.435 499.468 298.18ZM503.564 298.18C503.564 297.924 503.651 297.71 503.824 297.537C503.997 297.359 504.232 297.271 504.528 297.271C504.829 297.271 505.064 297.359 505.232 297.537C505.405 297.71 505.492 297.924 505.492 298.18C505.492 298.435 505.405 298.649 505.232 298.822C505.064 298.995 504.829 299.082 504.528 299.082C504.232 299.082 503.997 298.995 503.824 298.822C503.651 298.649 503.564 298.435 503.564 298.18Z" fill="white"/>
+<rect x="225.5" y="148.5" width="147" height="95" rx="15.5" fill="white" fill-opacity="0.15"/>
+<rect x="225.5" y="148.5" width="147" height="95" rx="15.5" stroke="white"/>
+<path d="M249.437 204.189L239 185.786L249.437 167.382H272.452L282.889 185.786L272.452 204.189H249.437Z" fill="#15273B"/>
+<path d="M265.082 185.786L271.204 174.977L272.589 177.399L267.828 185.786L271.204 191.738H268.458L265.082 185.786Z" fill="#3775E0"/>
+<path d="M256.807 185.786L250.685 196.595L249.3 194.172L254.061 185.786L250.685 179.834H253.431L256.807 185.786Z" fill="#5EA8DA"/>
+<path d="M267.073 194.172L262.323 185.786L268.458 174.977H265.7L263.697 178.506L261.694 174.977H258.947L262.323 180.929L260.939 183.351L256.189 174.977H250.685L249.3 177.399H254.816L259.565 185.786L253.431 196.595H256.189L258.192 193.066L260.195 196.595H262.941L259.565 190.643L260.939 188.209L265.7 196.595H271.204L272.589 194.172H267.073Z" fill="white"/>
+<path d="M239.026 217.807C239.026 215.436 240.503 213.922 242.654 213.922C244.806 213.922 246.271 215.436 246.271 217.807C246.271 220.177 244.806 221.691 242.654 221.691C240.503 221.691 239.026 220.154 239.026 217.807ZM244.84 217.807C244.84 216.199 243.999 215.25 242.654 215.25C241.31 215.25 240.468 216.193 240.468 217.807C240.468 219.42 241.31 220.375 242.654 220.375C243.999 220.375 244.84 219.391 244.84 217.807Z" fill="#15273B"/>
+<path d="M252.645 218.721C252.645 220.655 251.684 221.691 250.305 221.691C249.675 221.691 249.177 221.464 248.84 221.091V223.677H247.489V217.44L247.037 216.508L248.342 215.832L248.714 216.619C249.092 216.159 249.675 215.78 250.454 215.78C251.815 215.78 252.645 216.91 252.645 218.721ZM251.255 218.709C251.255 217.638 250.78 217.003 249.864 217.003C249.492 217.003 249.137 217.096 248.84 217.271V220.16C249.126 220.352 249.469 220.462 249.83 220.462C250.717 220.462 251.255 219.839 251.255 218.715V218.709Z" fill="#15273B"/>
+<path d="M258.396 218.942H254.791C254.905 219.81 255.569 220.346 256.668 220.346C257.269 220.346 257.921 220.218 258.356 219.979L257.944 221.353C257.566 221.569 256.994 221.685 256.307 221.685C254.47 221.685 253.389 220.515 253.389 218.715C253.389 216.916 254.453 215.774 256.181 215.774C257.646 215.774 258.533 216.624 258.533 217.999C258.533 218.302 258.487 218.674 258.396 218.942ZM254.82 218.086H257.234C257.194 217.259 256.822 216.904 256.181 216.904C255.466 216.904 254.98 217.341 254.82 218.086Z" fill="#15273B"/>
+<path d="M264.387 217.603V221.551H263.036V218.15C263.036 217.411 262.739 217.02 262.047 217.02C261.646 217.02 261.274 217.16 260.971 217.3V221.551H259.62V217.428L259.168 216.444L260.473 215.809L260.896 216.689C261.509 216.129 262.144 215.786 262.785 215.786C263.82 215.786 264.387 216.409 264.387 217.597V217.603Z" fill="#15273B"/>
+<path d="M271.437 214.062L269.188 217.917L271.442 221.557H269.84L268.541 219.432L268.278 218.808H268.215L267.975 219.42L266.75 221.557H265.188L267.5 217.766L265.222 214.062H266.802L268.164 216.287L268.387 216.857H268.45L268.69 216.269L269.903 214.068H271.431L271.437 214.062Z" fill="#5EA8DA"/>
+<path d="M273.794 220.34H276.386V221.551H272.421V214.062H273.794V220.34Z" fill="#5EA8DA"/>
+<path d="M281.799 221.551L281.21 219.641H278.669L278.069 221.551H276.678L279.081 214.056H280.821L283.218 221.551H281.805H281.799ZM279.024 218.494H280.849L280.088 216.048L279.974 215.466H279.9L279.785 216.048L279.024 218.494Z" fill="#5EA8DA"/>
+<path d="M306.483 177.844C306.483 177.645 306.452 177.469 306.389 177.316C306.331 177.16 306.225 177.02 306.073 176.895C305.925 176.77 305.718 176.65 305.452 176.537C305.19 176.424 304.858 176.309 304.456 176.191C304.034 176.066 303.653 175.928 303.313 175.775C302.973 175.619 302.682 175.441 302.44 175.242C302.198 175.043 302.013 174.814 301.884 174.557C301.755 174.299 301.69 174.004 301.69 173.672C301.69 173.34 301.759 173.033 301.895 172.752C302.032 172.471 302.227 172.227 302.481 172.02C302.739 171.809 303.046 171.645 303.401 171.527C303.757 171.41 304.153 171.352 304.591 171.352C305.231 171.352 305.774 171.475 306.22 171.721C306.669 171.963 307.011 172.281 307.245 172.676C307.479 173.066 307.596 173.484 307.596 173.93H306.471C306.471 173.609 306.403 173.326 306.266 173.08C306.13 172.83 305.923 172.635 305.645 172.494C305.368 172.35 305.016 172.277 304.591 172.277C304.188 172.277 303.856 172.338 303.595 172.459C303.333 172.58 303.138 172.744 303.009 172.951C302.884 173.158 302.821 173.395 302.821 173.66C302.821 173.84 302.858 174.004 302.932 174.152C303.011 174.297 303.13 174.432 303.29 174.557C303.454 174.682 303.661 174.797 303.911 174.902C304.165 175.008 304.468 175.109 304.819 175.207C305.304 175.344 305.721 175.496 306.073 175.664C306.425 175.832 306.714 176.021 306.94 176.232C307.171 176.439 307.341 176.676 307.45 176.941C307.563 177.203 307.62 177.5 307.62 177.832C307.62 178.18 307.55 178.494 307.409 178.775C307.268 179.057 307.067 179.297 306.805 179.496C306.544 179.695 306.229 179.85 305.862 179.959C305.499 180.064 305.093 180.117 304.643 180.117C304.249 180.117 303.86 180.062 303.477 179.953C303.098 179.844 302.753 179.68 302.44 179.461C302.132 179.242 301.884 178.973 301.696 178.652C301.513 178.328 301.421 177.953 301.421 177.527H302.546C302.546 177.82 302.602 178.072 302.716 178.283C302.829 178.49 302.983 178.662 303.179 178.799C303.378 178.936 303.602 179.037 303.852 179.104C304.106 179.166 304.37 179.197 304.643 179.197C305.038 179.197 305.372 179.143 305.645 179.033C305.919 178.924 306.126 178.768 306.266 178.564C306.411 178.361 306.483 178.121 306.483 177.844ZM311.752 173.66V174.492H308.324V173.66H311.752ZM309.484 172.119H310.568V178.43C310.568 178.645 310.601 178.807 310.668 178.916C310.734 179.025 310.82 179.098 310.925 179.133C311.031 179.168 311.144 179.186 311.265 179.186C311.355 179.186 311.449 179.178 311.546 179.162C311.648 179.143 311.724 179.127 311.775 179.115L311.781 180C311.695 180.027 311.582 180.053 311.441 180.076C311.304 180.104 311.138 180.117 310.943 180.117C310.677 180.117 310.433 180.064 310.211 179.959C309.988 179.854 309.81 179.678 309.677 179.432C309.548 179.182 309.484 178.846 309.484 178.424V172.119ZM316.961 178.916V175.652C316.961 175.402 316.911 175.186 316.809 175.002C316.711 174.814 316.563 174.67 316.364 174.568C316.164 174.467 315.918 174.416 315.625 174.416C315.352 174.416 315.112 174.463 314.905 174.557C314.702 174.65 314.541 174.773 314.424 174.926C314.311 175.078 314.254 175.242 314.254 175.418H313.17C313.17 175.191 313.229 174.967 313.346 174.744C313.463 174.521 313.631 174.32 313.85 174.141C314.073 173.957 314.338 173.812 314.647 173.707C314.959 173.598 315.307 173.543 315.69 173.543C316.151 173.543 316.557 173.621 316.909 173.777C317.264 173.934 317.541 174.17 317.741 174.486C317.944 174.799 318.045 175.191 318.045 175.664V178.617C318.045 178.828 318.063 179.053 318.098 179.291C318.137 179.529 318.194 179.734 318.268 179.906V180H317.137C317.082 179.875 317.039 179.709 317.008 179.502C316.977 179.291 316.961 179.096 316.961 178.916ZM317.149 176.156L317.161 176.918H316.065C315.756 176.918 315.481 176.943 315.239 176.994C314.996 177.041 314.793 177.113 314.629 177.211C314.465 177.309 314.34 177.432 314.254 177.58C314.168 177.725 314.125 177.895 314.125 178.09C314.125 178.289 314.17 178.471 314.26 178.635C314.35 178.799 314.485 178.93 314.664 179.027C314.848 179.121 315.073 179.168 315.338 179.168C315.67 179.168 315.963 179.098 316.217 178.957C316.471 178.816 316.672 178.645 316.821 178.441C316.973 178.238 317.055 178.041 317.067 177.85L317.53 178.371C317.502 178.535 317.428 178.717 317.307 178.916C317.186 179.115 317.024 179.307 316.821 179.49C316.621 179.67 316.383 179.82 316.106 179.941C315.832 180.059 315.524 180.117 315.18 180.117C314.75 180.117 314.373 180.033 314.049 179.865C313.729 179.697 313.479 179.473 313.299 179.191C313.123 178.906 313.036 178.588 313.036 178.236C313.036 177.896 313.102 177.598 313.235 177.34C313.368 177.078 313.559 176.861 313.809 176.689C314.059 176.514 314.36 176.381 314.711 176.291C315.063 176.201 315.455 176.156 315.889 176.156H317.149ZM319.945 171H321.034V178.77L320.941 180H319.945V171ZM325.318 176.777V176.9C325.318 177.361 325.263 177.789 325.154 178.184C325.044 178.574 324.884 178.914 324.673 179.203C324.462 179.492 324.204 179.717 323.9 179.877C323.595 180.037 323.245 180.117 322.851 180.117C322.448 180.117 322.095 180.049 321.79 179.912C321.489 179.771 321.236 179.57 321.029 179.309C320.821 179.047 320.655 178.73 320.53 178.359C320.409 177.988 320.325 177.57 320.279 177.105V176.566C320.325 176.098 320.409 175.678 320.53 175.307C320.655 174.936 320.821 174.619 321.029 174.357C321.236 174.092 321.489 173.891 321.79 173.754C322.091 173.613 322.441 173.543 322.839 173.543C323.238 173.543 323.591 173.621 323.9 173.777C324.208 173.93 324.466 174.148 324.673 174.434C324.884 174.719 325.044 175.061 325.154 175.459C325.263 175.854 325.318 176.293 325.318 176.777ZM324.228 176.9V176.777C324.228 176.461 324.198 176.164 324.14 175.887C324.081 175.605 323.988 175.359 323.859 175.148C323.73 174.934 323.56 174.766 323.349 174.645C323.138 174.52 322.878 174.457 322.57 174.457C322.296 174.457 322.058 174.504 321.855 174.598C321.655 174.691 321.486 174.818 321.345 174.979C321.204 175.135 321.089 175.314 320.999 175.518C320.913 175.717 320.849 175.924 320.806 176.139V177.551C320.868 177.824 320.97 178.088 321.111 178.342C321.255 178.592 321.446 178.797 321.685 178.957C321.927 179.117 322.226 179.197 322.581 179.197C322.874 179.197 323.124 179.139 323.331 179.021C323.542 178.9 323.712 178.734 323.841 178.523C323.974 178.312 324.071 178.068 324.134 177.791C324.196 177.514 324.228 177.217 324.228 176.9ZM328.066 171V180H326.977V171H328.066ZM332.638 180.117C332.196 180.117 331.796 180.043 331.436 179.895C331.081 179.742 330.774 179.529 330.516 179.256C330.263 178.982 330.067 178.658 329.93 178.283C329.794 177.908 329.725 177.498 329.725 177.053V176.807C329.725 176.291 329.802 175.832 329.954 175.43C330.106 175.023 330.313 174.68 330.575 174.398C330.837 174.117 331.134 173.904 331.466 173.76C331.798 173.615 332.141 173.543 332.497 173.543C332.95 173.543 333.341 173.621 333.669 173.777C334.001 173.934 334.272 174.152 334.483 174.434C334.694 174.711 334.85 175.039 334.952 175.418C335.054 175.793 335.104 176.203 335.104 176.648V177.135H330.37V176.25H334.02V176.168C334.005 175.887 333.946 175.613 333.845 175.348C333.747 175.082 333.591 174.863 333.376 174.691C333.161 174.52 332.868 174.434 332.497 174.434C332.251 174.434 332.024 174.486 331.817 174.592C331.61 174.693 331.432 174.846 331.284 175.049C331.136 175.252 331.02 175.5 330.938 175.793C330.856 176.086 330.815 176.424 330.815 176.807V177.053C330.815 177.354 330.856 177.637 330.938 177.902C331.024 178.164 331.147 178.395 331.307 178.594C331.471 178.793 331.669 178.949 331.899 179.062C332.134 179.176 332.399 179.232 332.696 179.232C333.079 179.232 333.403 179.154 333.669 178.998C333.934 178.842 334.167 178.633 334.366 178.371L335.022 178.893C334.886 179.1 334.712 179.297 334.501 179.484C334.29 179.672 334.03 179.824 333.721 179.941C333.417 180.059 333.055 180.117 332.638 180.117ZM342.306 175.137V176.057H337.689V175.137H342.306ZM337.865 171.469V180H336.734V171.469H337.865ZM343.291 171.469V180H342.166V171.469H343.291ZM350.674 179.08V180H346.409V179.08H350.674ZM346.631 171.469V180H345.5V171.469H346.631ZM358.351 175.465V176.004C358.351 176.645 358.271 177.219 358.111 177.727C357.95 178.234 357.72 178.666 357.419 179.021C357.118 179.377 356.757 179.648 356.335 179.836C355.917 180.023 355.448 180.117 354.929 180.117C354.425 180.117 353.962 180.023 353.54 179.836C353.122 179.648 352.759 179.377 352.45 179.021C352.146 178.666 351.909 178.234 351.741 177.727C351.573 177.219 351.489 176.645 351.489 176.004V175.465C351.489 174.824 351.571 174.252 351.736 173.748C351.904 173.24 352.14 172.809 352.445 172.453C352.749 172.094 353.111 171.82 353.529 171.633C353.95 171.445 354.413 171.352 354.917 171.352C355.437 171.352 355.905 171.445 356.323 171.633C356.745 171.82 357.107 172.094 357.407 172.453C357.712 172.809 357.945 173.24 358.105 173.748C358.269 174.252 358.351 174.824 358.351 175.465ZM357.232 176.004V175.453C357.232 174.945 357.179 174.496 357.073 174.105C356.972 173.715 356.821 173.387 356.622 173.121C356.423 172.855 356.179 172.654 355.89 172.518C355.605 172.381 355.28 172.312 354.917 172.312C354.566 172.312 354.247 172.381 353.962 172.518C353.681 172.654 353.439 172.855 353.236 173.121C353.036 173.387 352.882 173.715 352.773 174.105C352.663 174.496 352.609 174.945 352.609 175.453V176.004C352.609 176.516 352.663 176.969 352.773 177.363C352.882 177.754 353.038 178.084 353.241 178.354C353.448 178.619 353.693 178.82 353.974 178.957C354.259 179.094 354.577 179.162 354.929 179.162C355.296 179.162 355.622 179.094 355.907 178.957C356.193 178.82 356.433 178.619 356.628 178.354C356.827 178.084 356.978 177.754 357.079 177.363C357.181 176.969 357.232 176.516 357.232 176.004ZM320.554 191.469L322.605 194.738L324.655 191.469H325.974L323.279 195.693L326.038 200H324.708L322.605 196.666L320.501 200H319.171L321.931 195.693L319.236 191.469H320.554ZM332.719 199.08V200H328.453V199.08H332.719ZM328.676 191.469V200H327.545V191.469H328.676ZM337.489 192.225L334.665 200H333.511L336.762 191.469H337.507L337.489 192.225ZM339.856 200L337.026 192.225L337.009 191.469H337.753L341.016 200H339.856ZM339.71 196.842V197.768H334.917V196.842H339.71ZM320.284 216.654H318.005V215.734H320.284C320.725 215.734 321.083 215.664 321.356 215.523C321.63 215.383 321.829 215.188 321.954 214.938C322.083 214.688 322.147 214.402 322.147 214.082C322.147 213.789 322.083 213.514 321.954 213.256C321.829 212.998 321.63 212.791 321.356 212.635C321.083 212.475 320.725 212.395 320.284 212.395H318.268V220H317.138V211.469H320.284C320.929 211.469 321.473 211.58 321.919 211.803C322.364 212.025 322.702 212.334 322.932 212.729C323.163 213.119 323.278 213.566 323.278 214.07C323.278 214.617 323.163 215.084 322.932 215.471C322.702 215.857 322.364 216.152 321.919 216.355C321.473 216.555 320.929 216.654 320.284 216.654ZM327.316 217.51V211.469H328.441V217.51C328.441 218.072 328.326 218.547 328.095 218.934C327.865 219.32 327.546 219.615 327.14 219.818C326.738 220.018 326.275 220.117 325.752 220.117C325.228 220.117 324.763 220.027 324.357 219.848C323.951 219.668 323.632 219.395 323.402 219.027C323.171 218.66 323.056 218.197 323.056 217.639H324.187C324.187 217.998 324.254 218.293 324.386 218.523C324.519 218.754 324.703 218.924 324.937 219.033C325.175 219.143 325.447 219.197 325.752 219.197C326.048 219.197 326.314 219.135 326.548 219.01C326.787 218.881 326.974 218.691 327.111 218.441C327.248 218.188 327.316 217.877 327.316 217.51ZM330.557 211.469H333.381C334.022 211.469 334.563 211.566 335.004 211.762C335.45 211.957 335.788 212.246 336.018 212.629C336.252 213.008 336.37 213.475 336.37 214.029C336.37 214.42 336.289 214.777 336.129 215.102C335.973 215.422 335.746 215.695 335.45 215.922C335.157 216.145 334.805 216.311 334.395 216.42L334.079 216.543H331.424L331.413 215.623H333.416C333.823 215.623 334.161 215.553 334.43 215.412C334.7 215.268 334.903 215.074 335.039 214.832C335.176 214.59 335.245 214.322 335.245 214.029C335.245 213.701 335.18 213.414 335.051 213.168C334.922 212.922 334.719 212.732 334.442 212.6C334.168 212.463 333.815 212.395 333.381 212.395H331.688V220H330.557V211.469ZM335.543 220L333.469 216.133L334.647 216.127L336.75 219.93V220H335.543ZM340.835 211.469V220H339.722V211.469H340.835ZM343.577 211.469V212.395H336.986V211.469H343.577Z" fill="white"/>
+<rect x="225.5" y="25.5" width="147" height="94" rx="15.5" fill="white" fill-opacity="0.15"/>
+<rect x="225.5" y="25.5" width="147" height="94" rx="15.5" stroke="white"/>
+<path d="M269.444 72.1247L265.222 79.4995H273.667L277.889 72.1247H269.444Z" fill="#5E97F6" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M261 86.8744L265.222 79.4996H273.667L269.444 86.8744H261Z" fill="#5E97F6" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M282.111 79.4996H273.666L269.444 86.8744H277.888L282.111 79.4996Z" fill="#5E97F6" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M290.556 79.4996H282.111L277.889 86.8744H286.333L290.556 79.4996Z" fill="#5E97F6" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M286.333 72.1247L282.111 79.4995H290.556L294.778 72.1247H286.333Z" fill="#5E97F6" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M290.555 64.7498L286.333 72.1247H294.777L299 64.7498H290.555Z" fill="#5E97F6" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M294.778 57.3749L290.556 64.7499H299L303.222 57.3749H294.778Z" fill="#5E97F6" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M299 50L294.778 57.3749H303.222L307.444 50H299Z" fill="#5E97F6" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M261 86.8744L265.222 94.2494H273.667L269.444 86.8744H261Z" fill="#2A56C6" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M282.111 94.2494H273.666L269.444 86.8744H277.888L282.111 94.2494Z" fill="#2A56C6" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M290.556 94.2494H282.111L277.889 86.8744H286.333L290.556 94.2494Z" fill="#2A56C6" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M294.777 86.8744L290.555 79.4996L286.333 86.8744L290.555 94.2494L294.777 86.8744Z" fill="#00796B" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M303.222 72.1247L299 64.7498L294.778 72.1247H303.222Z" fill="#00796B" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M303.222 57.3749L299 64.7499L303.222 72.1248L307.444 64.7499L303.222 57.3749Z" fill="#00796B" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M282.111 79.4995L277.889 72.1247L273.667 79.4995H282.111Z" fill="#3367D6" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M303.222 72.1247H294.778L290.556 79.4995H299L303.222 72.1247Z" fill="#26A69A" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M311.666 72.1247H303.222L299 79.4995H307.444L311.666 72.1247Z" fill="#26A69A" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M320.111 57.3749L315.889 50L311.667 57.3749L315.889 64.7499L320.111 57.3749Z" fill="#9C27B0" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M324.333 64.7499L320.111 57.3749L315.889 64.7499L320.111 72.1248L324.333 64.7499Z" fill="#9C27B0" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M328.555 72.1247L324.333 64.7498L320.111 72.1247L324.333 79.4995L328.555 72.1247Z" fill="#9C27B0" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M332.777 79.4995L328.555 72.1247L324.333 79.4995L328.555 86.8744L332.777 79.4995Z" fill="#9C27B0" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M337 86.8744L332.778 79.4996L328.555 86.8744L332.778 94.2494L337 86.8744Z" fill="#9C27B0" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M332.778 50L328.556 57.3749L332.778 64.7499L337 57.3749L332.778 50Z" fill="#9C27B0" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M324.333 64.7499L328.555 57.3749L332.777 64.7499L328.555 72.1248L324.333 64.7499Z" fill="#9C27B0" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M320.111 72.1247L315.889 79.4995L320.111 86.8744L324.333 79.4995L320.111 72.1247Z" fill="#9C27B0" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M315.889 94.2494L311.667 86.8744L315.889 79.4996L320.111 86.8744L315.889 94.2494Z" fill="#9C27B0" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M307.444 94.2494L303.222 86.8744H311.666L315.888 94.2494H307.444Z" fill="#6A1B9A" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M299 79.4996H290.556L294.778 86.8744H303.222L299 79.4996Z" fill="#00695C" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M307.444 79.4996H299L303.222 86.8744L307.444 79.4996Z" fill="#00695C" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M307.444 64.7498L311.666 72.1247H320.11L315.888 64.7498H307.444Z" fill="#00695C" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M311.666 57.3749H303.222L307.444 64.7499H315.888L311.666 57.3749Z" fill="#00695C" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M332.777 94.2494L328.555 86.8744H320.111L324.333 94.2494H332.777Z" fill="#00695C" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M324.333 79.4996L320.111 86.8744H328.555L324.333 79.4996Z" fill="#00695C" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M315.888 50H307.444L303.222 57.3749H311.666L315.888 50Z" fill="#EA80FC" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M315.888 79.4996H307.444L303.222 86.8744H311.666L315.888 79.4996Z" fill="#EA80FC" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M320.11 72.1247H311.666L307.444 79.4995H315.888L320.11 72.1247Z" fill="#EA80FC" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M332.777 50H324.333L320.111 57.3749H328.555L332.777 50Z" fill="#EA80FC" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<path d="M324.333 64.7499L320.111 57.3749H328.555L324.333 64.7499Z" fill="#EA80FC" stroke="#DCE0DF" stroke-width="0.0538889" stroke-linejoin="round"/>
+<line x1="298.5" y1="120" x2="298.5" y2="148" stroke="white"/>
+<line x1="298.5" y1="244" x2="298.5" y2="272" stroke="white"/>
+<line x1="96.5" y1="258" x2="96.5" y2="272" stroke="white"/>
+<line x1="197.5" y1="257" x2="197.5" y2="272" stroke="white"/>
+<line x1="399.5" y1="257" x2="399.5" y2="272" stroke="white"/>
+<line x1="500.5" y1="257" x2="500.5" y2="272" stroke="white"/>
+<line x1="501" y1="257.5" x2="96" y2="257.5" stroke="white"/>
+</g>
+<defs>
+<radialGradient id="paint0_radial_849_318" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(529.5 60.5) rotate(90) scale(469.5)">
+<stop stop-color="#5E97F6"/>
+<stop offset="1" stop-color="#5E97F6" stop-opacity="0"/>
+</radialGradient>
+<radialGradient id="paint1_radial_849_318" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(163.5 307.5) rotate(90) scale(469.5)">
+<stop stop-color="#5E97F6"/>
+<stop offset="1" stop-color="#5E97F6" stop-opacity="0"/>
+</radialGradient>
+<clipPath id="clip0_849_318">
+<rect width="598" height="340" rx="24" fill="white"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/docs/source/_static/images/hero-radial.svg b/docs/source/_static/images/hero-radial.svg
new file mode 100644
index 0000000..e969824
--- /dev/null
+++ b/docs/source/_static/images/hero-radial.svg
@@ -0,0 +1,101 @@
+<svg viewBox="0 0 1500 1500" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <filter id="filter0_d_480_62" x="1037.53" y="269.928" width="197.554" height="106.787" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+      <feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood>
+      <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"></feColorMatrix>
+      <feOffset dy="16.2681"></feOffset>
+      <feGaussianBlur stdDeviation="3.82052"></feGaussianBlur>
+      <feComposite in2="hardAlpha" operator="out"></feComposite>
+      <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.34 0"></feColorMatrix>
+      <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_480_62"></feBlend>
+      <feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_480_62" result="shape"></feBlend>
+    </filter>
+    <filter id="filter1_d_480_62" x="1055.99" y="269.229" width="155.699" height="81.3686" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+      <feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood>
+      <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"></feColorMatrix>
+      <feOffset dx="-2.46485" dy="12.8172"></feOffset>
+      <feGaussianBlur stdDeviation="3.32755"></feGaussianBlur>
+      <feComposite in2="hardAlpha" operator="out"></feComposite>
+      <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.46 0"></feColorMatrix>
+      <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_480_62"></feBlend>
+      <feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_480_62" result="shape"></feBlend>
+    </filter>
+    <filter id="filter2_d_480_62" x="1069.84" y="206.594" width="150.229" height="88.1948" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+      <feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood>
+      <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"></feColorMatrix>
+      <feOffset dy="19.2259"></feOffset>
+      <feGaussianBlur stdDeviation="8.25726"></feGaussianBlur>
+      <feComposite in2="hardAlpha" operator="out"></feComposite>
+      <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.69 0"></feColorMatrix>
+      <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_480_62"></feBlend>
+      <feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_480_62" result="shape"></feBlend>
+    </filter>
+    <filter id="filter3_d_480_62" x="1063.73" y="112.332" width="143.63" height="102.001" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+      <feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood>
+      <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"></feColorMatrix>
+      <feOffset dx="-1.23243" dy="10.1059"></feOffset>
+      <feGaussianBlur stdDeviation="4.68323"></feGaussianBlur>
+      <feComposite in2="hardAlpha" operator="out"></feComposite>
+      <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.79 0"></feColorMatrix>
+      <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_480_62"></feBlend>
+      <feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_480_62" result="shape"></feBlend>
+    </filter>
+    <radialGradient id="paint0_radial_480_62" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0, 753.5, -753.5, 0, 742.875952, 740.393677)">
+      <stop stop-color="#5E97F6"></stop>
+      <stop offset="1" stop-color="#5E97F6" stop-opacity="0"></stop>
+    </radialGradient>
+    <linearGradient id="paint1_linear_480_62" x1="1050.88" y1="364.568" x2="1125.05" y2="349.869" gradientUnits="userSpaceOnUse">
+      <stop stop-color="#FE48C4"></stop>
+      <stop offset="1" stop-color="#801CA5"></stop>
+    </linearGradient>
+    <linearGradient id="paint2_linear_480_62" x1="1200.85" y1="300.877" x2="1055.51" y2="354.247" gradientUnits="userSpaceOnUse">
+      <stop stop-color="#EA74FF"></stop>
+      <stop offset="1" stop-color="#32248C"></stop>
+    </linearGradient>
+    <linearGradient id="paint3_linear_480_62" x1="1109.67" y1="315.354" x2="1148.29" y2="300.332" gradientUnits="userSpaceOnUse">
+      <stop></stop>
+      <stop offset="0.9999" stop-color="#27073A"></stop>
+    </linearGradient>
+    <linearGradient id="paint4_linear_480_62" x1="1101.5" y1="318.712" x2="1145.05" y2="301.739" gradientUnits="userSpaceOnUse">
+      <stop></stop>
+      <stop offset="0.9999" stop-color="#27073A"></stop>
+    </linearGradient>
+    <linearGradient id="paint5_linear_480_62" x1="1210.3" y1="268.005" x2="1135.44" y2="241.933" gradientUnits="userSpaceOnUse">
+      <stop stop-color="#6BC2FB"></stop>
+      <stop offset="1" stop-color="#6BD3FB"></stop>
+    </linearGradient>
+    <linearGradient id="paint6_linear_480_62" x1="1146.1" y1="182.329" x2="1080.02" y2="294.083" gradientUnits="userSpaceOnUse">
+      <stop stop-color="#50FFEF"></stop>
+      <stop offset="1" stop-color="#12655B"></stop>
+    </linearGradient>
+    <linearGradient id="paint7_linear_480_62" x1="1206.01" y1="205.195" x2="1116.46" y2="253.486" gradientUnits="userSpaceOnUse">
+      <stop stop-color="#38FFF8"></stop>
+      <stop offset="1" stop-color="#348FFD"></stop>
+    </linearGradient>
+    <linearGradient id="paint8_linear_480_62" x1="1149.5" y1="234.988" x2="1114.52" y2="254.409" gradientUnits="userSpaceOnUse">
+      <stop stop-color="#1E31EE"></stop>
+      <stop offset="1" stop-color="#070C4F"></stop>
+    </linearGradient>
+    <linearGradient id="paint9_linear_480_62" x1="1135.68" y1="136.132" x2="1052.45" y2="212.577" gradientUnits="userSpaceOnUse">
+      <stop stop-color="#34CEFE"></stop>
+      <stop offset="1" stop-color="#E7366A"></stop>
+    </linearGradient>
+    <linearGradient id="paint10_linear_480_62" x1="1185.65" y1="159.353" x2="1120.91" y2="172.773" gradientUnits="userSpaceOnUse">
+      <stop stop-color="#5771B9"></stop>
+      <stop offset="1" stop-color="#1A1919"></stop>
+    </linearGradient>
+    <linearGradient id="paint11_linear_480_62" x1="1235.25" y1="156.626" x2="1083.07" y2="150.793" gradientUnits="userSpaceOnUse">
+      <stop stop-color="#5771B9"></stop>
+      <stop offset="0.3991" stop-color="#9B27AF"></stop>
+      <stop offset="1" stop-color="#310A49"></stop>
+    </linearGradient>
+    <linearGradient id="paint12_linear_480_62" x1="1136.77" y1="86.1041" x2="1136.77" y2="161.984" gradientUnits="userSpaceOnUse">
+      <stop stop-color="#EA80FC"></stop>
+      <stop offset="1" stop-color="#BE4CD2"></stop>
+    </linearGradient>
+    <clipPath id="clip0_480_62">
+      <rect width="568" height="340" fill="white" transform="translate(888 43)"></rect>
+    </clipPath>
+  </defs>
+  <circle cx="742.875" cy="740.394" r="753.5" fill="url(#paint0_radial_480_62)" fill-opacity="0.14"></circle>
+</svg>
diff --git a/docs/source/_static/images/hero.svg b/docs/source/_static/images/hero.svg
new file mode 100644
index 0000000..98bf98d
--- /dev/null
+++ b/docs/source/_static/images/hero.svg
@@ -0,0 +1,128 @@
+<svg width="568" height="319" viewBox="0 0 568 319" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_334_10309)">
+<path d="M314.788 286.04L198.423 234.254L82.0689 286.035V286.045V289.183V289.192L198.423 340.974L314.788 289.187V286.04Z" fill="black"/>
+<path d="M198.423 234.254L82.0689 286.035V286.045L198.423 337.826L314.788 286.04L198.423 234.254Z" fill="url(#paint0_linear_334_10309)"/>
+<g filter="url(#filter0_d_334_10309)">
+<path d="M339.443 242.234C339.443 241.886 339.183 241.486 338.866 241.344L259.687 206.034C259.369 205.893 258.85 205.893 258.533 206.034L157.747 250.979C157.43 251.121 157.171 251.521 157.171 251.869V252.501C157.171 252.849 157.43 253.249 157.747 253.391L236.927 288.701C237.244 288.842 237.763 288.842 238.08 288.701L338.866 243.756C339.183 243.614 339.443 243.214 339.443 242.866V242.234Z" fill="black"/>
+</g>
+<path d="M352.197 240.729C352.197 240.344 351.909 239.902 351.557 239.745L263.819 200.699C263.468 200.542 262.893 200.542 262.541 200.699L150.862 250.4C150.51 250.556 150.222 250.999 150.222 251.383V252.083C150.222 252.468 150.51 252.91 150.862 253.067L238.599 292.113C238.951 292.269 239.526 292.269 239.878 292.113L351.557 242.412C351.909 242.256 352.197 241.813 352.197 241.428V240.729Z" fill="black"/>
+<path d="M150.862 250.4C150.51 250.556 150.51 250.812 150.862 250.969L238.6 290.015C238.951 290.171 239.526 290.171 239.878 290.015L351.557 240.314C351.909 240.158 351.909 239.901 351.557 239.745L263.82 200.699C263.468 200.542 262.893 200.542 262.541 200.699L150.862 250.4Z" fill="url(#paint1_linear_334_10309)"/>
+<g filter="url(#filter1_d_334_10309)">
+<path d="M295.133 215.483C294.199 215.899 292.669 216.581 291.734 216.998L249.851 235.671C248.916 236.088 247.386 236.088 246.452 235.671L204.568 216.998C203.633 216.581 202.104 215.899 201.169 215.483L178.811 205.515C177.876 205.098 177.112 205.595 177.112 206.62V234.036C177.112 235.061 177.877 236.24 178.811 236.656L246.452 266.813C247.386 267.23 248.916 267.23 249.851 266.813L317.801 236.518C318.736 236.102 319.501 234.922 319.501 233.898V206.482C319.501 205.457 318.736 204.96 317.801 205.377L295.133 215.483V215.483Z" fill="url(#paint2_linear_334_10309)"/>
+</g>
+<path d="M296.391 214.307C295.336 214.776 293.61 215.544 292.555 216.013L245.293 237.047C244.238 237.516 242.513 237.516 241.458 237.047L194.196 216.013C193.141 215.544 191.415 214.776 190.36 214.307L165.131 203.079C164.076 202.61 163.214 203.17 163.214 204.324V235.205C163.214 236.359 164.077 237.687 165.131 238.156L241.458 272.124C242.513 272.594 244.238 272.594 245.293 272.124L321.969 238.001C323.024 237.531 323.887 236.203 323.887 235.049V204.168C323.887 203.014 323.024 202.454 321.969 202.923L296.391 214.307V214.307Z" fill="url(#paint3_linear_334_10309)"/>
+<path d="M351.755 151.609C351.403 151.453 350.828 151.453 350.477 151.609L278.119 183.811C277.767 183.967 277.192 184.224 276.84 184.38L240.14 200.713C239.788 200.869 239.501 201.312 239.501 201.697V202.046C239.501 202.431 239.788 202.874 240.14 203.03L310.85 234.499C311.202 234.655 311.777 234.655 312.129 234.499L422.465 185.395C422.817 185.239 423.105 184.796 423.105 184.411V184.062C423.105 183.677 422.817 183.234 422.465 183.078L351.755 151.609Z" fill="black"/>
+<path d="M351.756 151.61C351.404 151.453 350.829 151.453 350.478 151.61L278.12 183.812C277.768 183.968 277.193 184.224 276.841 184.38L240.141 200.713C239.789 200.87 239.789 201.126 240.141 201.282L310.851 232.751C311.203 232.907 311.778 232.907 312.13 232.751L422.466 183.647C422.818 183.491 422.818 183.235 422.466 183.078L351.756 151.61Z" fill="#7F6EB2"/>
+<path d="M288.669 156.582C288.317 156.425 287.742 156.425 287.39 156.582L183.792 202.686C183.44 202.843 183.153 203.285 183.153 203.67C183.153 204.054 183.44 204.497 183.792 204.653L243.301 231.136C243.652 231.293 244.228 231.293 244.579 231.136L348.177 185.032C348.528 184.876 348.816 184.433 348.816 184.048C348.816 183.663 348.528 183.221 348.177 183.064L288.669 156.582Z" fill="black"/>
+<path d="M183.792 202.686C183.44 202.842 183.44 203.099 183.792 203.255L243.299 229.738C243.651 229.894 244.226 229.894 244.578 229.738L348.175 183.633C348.527 183.477 348.527 183.221 348.175 183.064L288.668 156.581C288.316 156.425 287.741 156.425 287.389 156.581L183.792 202.686Z" fill="url(#paint4_linear_334_10309)"/>
+<path d="M318.505 214.457L278.597 196.697L213.867 167.89L177.623 184.019L134.607 203.163V203.168V206.66V206.665L239.24 253.23L318.505 217.954V214.457Z" fill="black"/>
+<path d="M278.597 196.697L213.867 167.89L177.623 184.019L134.607 203.163V203.169L239.24 249.734L318.505 214.457L278.597 196.697Z" fill="url(#paint5_linear_334_10309)"/>
+<path d="M347.472 168.646C347.472 168.358 347.184 167.994 346.832 167.837L263.222 130.628C262.871 130.472 262.296 130.472 261.944 130.628L178.334 167.837C177.982 167.994 177.695 168.358 177.695 168.646C177.695 168.935 177.982 169.299 178.334 169.455L261.944 206.664C262.296 206.82 262.871 206.82 263.222 206.664L346.832 169.455C347.184 169.299 347.472 168.935 347.472 168.646Z" fill="black"/>
+<g filter="url(#filter2_d_334_10309)">
+<path d="M257.4 142.676C257.156 142.566 256.757 142.566 256.513 142.676L198.539 168.623C198.296 168.732 198.296 168.91 198.539 169.019L256.513 194.966C256.757 195.075 257.156 195.075 257.4 194.966L315.374 169.019C315.617 168.91 315.617 168.732 315.374 168.623L257.4 142.676Z" fill="#495353"/>
+</g>
+<path d="M263.223 130.628C262.871 130.471 262.296 130.471 261.944 130.628L178.334 167.837C177.983 167.993 177.983 168.249 178.334 168.406L261.944 205.615C262.296 205.771 262.871 205.771 263.223 205.615L346.833 168.406C347.184 168.249 347.184 167.993 346.833 167.837L263.223 130.628Z" fill="url(#paint6_linear_334_10309)"/>
+<path d="M280.024 142.712C278.617 143.338 276.316 144.362 274.91 144.987L228.926 165.452C227.52 166.078 225.219 166.078 223.813 165.452L177.829 144.987C176.423 144.362 174.122 143.338 172.715 142.712L148.765 132.053C147.358 131.427 146.208 132.174 146.208 133.713V163.195C146.208 164.733 147.359 166.504 148.765 167.13L223.813 200.529C225.219 201.155 227.52 201.155 228.926 200.529L304.324 166.975C305.731 166.349 306.881 164.578 306.881 163.039V133.557C306.881 132.018 305.73 131.271 304.324 131.897L280.024 142.712Z" fill="url(#paint7_linear_334_10309)"/>
+<path d="M213.018 82.836C212.667 82.6797 212.091 82.6797 211.74 82.836L109.53 128.322C109.178 128.479 108.891 128.921 108.891 129.306V130.775C108.891 131.16 109.178 131.603 109.53 131.759L211.739 177.246C212.091 177.402 212.666 177.402 213.018 177.246L315.227 131.759C315.579 131.603 315.866 131.16 315.866 130.775V129.306C315.866 128.921 315.579 128.479 315.227 128.322L213.018 82.8357L213.018 82.836Z" fill="black"/>
+<path d="M213.018 82.836C212.666 82.6797 212.091 82.6797 211.74 82.836L109.53 128.322C109.178 128.479 109.178 128.735 109.53 128.891L211.739 174.378C212.091 174.535 212.666 174.535 213.018 174.378L315.227 128.891C315.579 128.735 315.579 128.479 315.227 128.322L213.018 82.8357L213.018 82.836Z" fill="url(#paint8_linear_334_10309)"/>
+<g filter="url(#filter3_d_334_10309)">
+<path d="M250.497 48.6726C249.479 48.2189 247.813 48.2189 246.794 48.6726L188.176 74.7858C187.157 75.2395 186.324 75.711 186.324 75.8334V101.555C186.324 102.67 187.157 103.954 188.176 104.407L246.794 130.521C247.813 130.974 249.479 130.974 250.497 130.521L309.369 104.295C310.388 103.841 311.221 102.557 311.221 101.442V75.8337C311.221 75.7731 310.388 75.3526 309.369 74.8989L250.497 48.6726Z" fill="url(#paint9_linear_334_10309)"/>
+</g>
+<path d="M251.154 22.5735C249.748 21.9476 247.447 21.9476 246.04 22.5735L165.091 58.599C163.684 59.2249 162.534 59.8754 162.534 60.0443V95.5291C162.534 97.0677 163.685 98.8386 165.091 99.4645L246.04 135.49C247.447 136.116 249.748 136.116 251.154 135.49L332.453 99.3089C333.86 98.683 335.01 96.9121 335.01 95.3734V60.0446C335.01 59.961 333.859 59.3809 332.453 58.7549L251.154 22.5735Z" fill="url(#paint10_linear_334_10309)"/>
+<path d="M251.154 22.5735C249.748 21.9476 247.447 21.9476 246.04 22.5735L165.091 58.5989C163.684 59.2248 162.534 59.8753 162.534 60.0442C162.534 60.2131 163.685 60.8639 165.091 61.4895L194.943 74.7748C196.35 75.4007 198.651 76.4247 200.057 77.0506L246.041 97.5148C247.447 98.1408 249.748 98.1408 251.154 97.5148L297.138 77.0506C298.544 76.4247 300.845 75.4007 302.252 74.7748L332.454 61.3339C333.86 60.7079 335.011 60.1278 335.011 60.0442C335.011 59.9606 333.86 59.3805 332.454 58.7545L251.154 22.5735Z" fill="url(#paint11_linear_334_10309)"/>
+</g>
+<defs>
+<filter id="filter0_d_334_10309" x="149.53" y="205.928" width="197.554" height="106.787" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="16.2681"/>
+<feGaussianBlur stdDeviation="3.82052"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.34 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_334_10309"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_334_10309" result="shape"/>
+</filter>
+<filter id="filter1_d_334_10309" x="167.992" y="205.229" width="155.699" height="81.3686" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dx="-2.46485" dy="12.8172"/>
+<feGaussianBlur stdDeviation="3.32755"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.46 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_334_10309"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_334_10309" result="shape"/>
+</filter>
+<filter id="filter2_d_334_10309" x="181.842" y="142.594" width="150.229" height="88.1948" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="19.2259"/>
+<feGaussianBlur stdDeviation="8.25726"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.69 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_334_10309"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_334_10309" result="shape"/>
+</filter>
+<filter id="filter3_d_334_10309" x="175.725" y="48.3323" width="143.63" height="102.001" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dx="-1.23243" dy="10.1059"/>
+<feGaussianBlur stdDeviation="4.68323"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.79 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_334_10309"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_334_10309" result="shape"/>
+</filter>
+<linearGradient id="paint0_linear_334_10309" x1="162.884" y1="300.568" x2="237.05" y2="285.869" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FE48C4"/>
+<stop offset="1" stop-color="#801CA5"/>
+</linearGradient>
+<linearGradient id="paint1_linear_334_10309" x1="312.853" y1="236.877" x2="167.506" y2="290.247" gradientUnits="userSpaceOnUse">
+<stop stop-color="#EA74FF"/>
+<stop offset="1" stop-color="#32248C"/>
+</linearGradient>
+<linearGradient id="paint2_linear_334_10309" x1="221.672" y1="251.354" x2="260.285" y2="236.332" gradientUnits="userSpaceOnUse">
+<stop/>
+<stop offset="0.9999" stop-color="#27073A"/>
+</linearGradient>
+<linearGradient id="paint3_linear_334_10309" x1="213.496" y1="254.712" x2="257.047" y2="237.739" gradientUnits="userSpaceOnUse">
+<stop/>
+<stop offset="0.9999" stop-color="#27073A"/>
+</linearGradient>
+<linearGradient id="paint4_linear_334_10309" x1="322.299" y1="204.005" x2="247.438" y2="177.933" gradientUnits="userSpaceOnUse">
+<stop stop-color="#6BC2FB"/>
+<stop offset="1" stop-color="#6BD3FB"/>
+</linearGradient>
+<linearGradient id="paint5_linear_334_10309" x1="258.102" y1="118.329" x2="192.024" y2="230.083" gradientUnits="userSpaceOnUse">
+<stop stop-color="#50FFEF"/>
+<stop offset="1" stop-color="#12655B"/>
+</linearGradient>
+<linearGradient id="paint6_linear_334_10309" x1="318.006" y1="141.195" x2="228.462" y2="189.486" gradientUnits="userSpaceOnUse">
+<stop stop-color="#38FFF8"/>
+<stop offset="1" stop-color="#348FFD"/>
+</linearGradient>
+<linearGradient id="paint7_linear_334_10309" x1="261.501" y1="170.988" x2="226.523" y2="190.409" gradientUnits="userSpaceOnUse">
+<stop stop-color="#1E31EE"/>
+<stop offset="1" stop-color="#070C4F"/>
+</linearGradient>
+<linearGradient id="paint8_linear_334_10309" x1="247.685" y1="72.1322" x2="164.454" y2="148.577" gradientUnits="userSpaceOnUse">
+<stop stop-color="#34CEFE"/>
+<stop offset="1" stop-color="#E7366A"/>
+</linearGradient>
+<linearGradient id="paint9_linear_334_10309" x1="297.646" y1="95.3529" x2="232.915" y2="108.773" gradientUnits="userSpaceOnUse">
+<stop stop-color="#5771B9"/>
+<stop offset="1" stop-color="#1A1919"/>
+</linearGradient>
+<linearGradient id="paint10_linear_334_10309" x1="347.255" y1="92.6264" x2="195.07" y2="86.7931" gradientUnits="userSpaceOnUse">
+<stop stop-color="#5771B9"/>
+<stop offset="0.399077" stop-color="#9B27AF"/>
+<stop offset="1" stop-color="#310A49"/>
+</linearGradient>
+<linearGradient id="paint11_linear_334_10309" x1="248.772" y1="22.1041" x2="248.772" y2="97.9843" gradientUnits="userSpaceOnUse">
+<stop stop-color="#EA80FC"/>
+<stop offset="1" stop-color="#BE4CD2"/>
+</linearGradient>
+<clipPath id="clip0_334_10309">
+<rect width="568" height="340" fill="white" transform="translate(0 -21)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/docs/_static/loss_acc_example.png b/docs/source/_static/images/loss_acc_example.png
similarity index 100%
rename from docs/_static/loss_acc_example.png
rename to docs/source/_static/images/loss_acc_example.png
diff --git a/docs/_static/model_display_example.png b/docs/source/_static/images/model_display_example.png
similarity index 100%
rename from docs/_static/model_display_example.png
rename to docs/source/_static/images/model_display_example.png
diff --git a/docs/_static/nnx_display_example.png b/docs/source/_static/images/nnx_display_example.png
similarity index 100%
rename from docs/_static/nnx_display_example.png
rename to docs/source/_static/images/nnx_display_example.png
diff --git a/docs/_static/training_data_example.png b/docs/source/_static/images/training_data_example.png
similarity index 100%
rename from docs/_static/training_data_example.png
rename to docs/source/_static/images/training_data_example.png
diff --git a/docs/_static/unetr_architecture.png b/docs/source/_static/images/unetr_architecture.png
similarity index 100%
rename from docs/_static/unetr_architecture.png
rename to docs/source/_static/images/unetr_architecture.png
diff --git a/docs/source/_static/images/what-is-the-jax-ai-stack.svg b/docs/source/_static/images/what-is-the-jax-ai-stack.svg
new file mode 100644
index 0000000..95b6842
--- /dev/null
+++ b/docs/source/_static/images/what-is-the-jax-ai-stack.svg
@@ -0,0 +1,31 @@
+<svg width="598" height="340" viewBox="0 0 598 340" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_829_1756)">
+<rect width="598" height="340" rx="24" fill="#202124"/>
+<circle cx="529.5" cy="60.5" r="469.5" fill="url(#paint0_radial_829_1756)" fill-opacity="0.2"/>
+<circle cx="163.5" cy="307.5" r="469.5" fill="url(#paint1_radial_829_1756)" fill-opacity="0.2"/>
+<path d="M237.616 112.384C236.368 112.384 235.272 112.04 234.328 111.352C233.384 110.664 232.712 109.68 232.312 108.4L234.232 107.608C234.552 108.68 235.008 109.424 235.6 109.84C236.208 110.24 236.88 110.44 237.616 110.44C238.576 110.44 239.336 110.112 239.896 109.456C240.456 108.784 240.736 107.92 240.736 106.864V94.816H242.776V106.696C242.776 107.912 242.552 108.944 242.104 109.792C241.672 110.64 241.064 111.288 240.28 111.736C239.512 112.168 238.624 112.384 237.616 112.384ZM244.54 112L251.068 94.816H253.372L259.9 112H257.668L255.916 107.272H248.524L246.772 112H244.54ZM255.22 105.352L252.94 99.16L252.268 97.312H252.172L251.5 99.16L249.22 105.352H255.22ZM261.026 94.816H263.474L267.794 101.512H267.89L272.21 94.816H274.634L269.162 103.12L274.97 112H272.57L267.89 104.824H267.794L263.09 112H260.69L266.498 103.12L261.026 94.816ZM280.61 112L287.138 94.816H289.442L295.97 112H293.738L291.986 107.272H284.594L282.842 112H280.61ZM291.29 105.352L289.01 99.16L288.338 97.312H288.242L287.57 99.16L285.29 105.352H291.29ZM298.248 112V94.816H300.288V112H298.248ZM313.783 112.384C312.951 112.384 312.127 112.208 311.311 111.856C310.495 111.504 309.775 110.984 309.151 110.296C308.527 109.608 308.071 108.752 307.783 107.728L309.727 106.936C309.999 107.928 310.495 108.76 311.215 109.432C311.935 110.104 312.807 110.44 313.831 110.44C314.471 110.44 315.055 110.328 315.583 110.104C316.127 109.864 316.559 109.52 316.879 109.072C317.215 108.624 317.383 108.08 317.383 107.44C317.383 106.864 317.239 106.376 316.951 105.976C316.679 105.576 316.263 105.224 315.703 104.92C315.143 104.6 314.455 104.296 313.639 104.008L312.559 103.624C312.079 103.448 311.591 103.24 311.095 103C310.615 102.744 310.167 102.44 309.751 102.088C309.351 101.72 309.031 101.288 308.791 100.792C308.551 100.28 308.431 99.68 308.431 98.992C308.431 98.16 308.655 97.4 309.103 96.712C309.551 96.024 310.167 95.472 310.951 95.056C311.735 94.64 312.639 94.432 313.663 94.432C314.735 94.432 315.631 94.632 316.351 95.032C317.087 95.416 317.663 95.88 318.079 96.424C318.511 96.952 318.799 97.44 318.943 97.888L317.047 98.704C316.951 98.368 316.767 98.024 316.495 97.672C316.223 97.304 315.855 97 315.391 96.76C314.943 96.504 314.375 96.376 313.687 96.376C313.127 96.376 312.599 96.488 312.103 96.712C311.623 96.936 311.231 97.248 310.927 97.648C310.639 98.032 310.495 98.48 310.495 98.992C310.495 99.712 310.783 100.28 311.359 100.696C311.935 101.112 312.711 101.488 313.687 101.824L314.815 102.208C315.327 102.384 315.847 102.6 316.375 102.856C316.919 103.112 317.423 103.44 317.887 103.84C318.351 104.24 318.727 104.736 319.015 105.328C319.303 105.904 319.447 106.6 319.447 107.416C319.447 108.296 319.271 109.056 318.919 109.696C318.583 110.32 318.135 110.832 317.575 111.232C317.015 111.632 316.399 111.92 315.727 112.096C315.071 112.288 314.423 112.384 313.783 112.384ZM320.602 99.76H322.738V96.304H324.778V99.76H327.778V101.608H324.778V108.28C324.778 108.92 324.906 109.416 325.162 109.768C325.434 110.12 325.874 110.296 326.482 110.296C326.754 110.296 327.002 110.256 327.226 110.176C327.45 110.096 327.65 110 327.826 109.888V111.88C327.618 111.976 327.386 112.048 327.13 112.096C326.89 112.16 326.562 112.192 326.146 112.192C325.122 112.192 324.298 111.896 323.674 111.304C323.05 110.696 322.738 109.856 322.738 108.784V101.608H320.602V99.76ZM333.885 112.384C332.973 112.384 332.173 112.208 331.485 111.856C330.797 111.504 330.253 111.024 329.853 110.416C329.469 109.792 329.277 109.088 329.277 108.304C329.277 107.408 329.509 106.656 329.973 106.048C330.437 105.424 331.061 104.96 331.845 104.656C332.629 104.336 333.493 104.176 334.437 104.176C334.981 104.176 335.485 104.224 335.949 104.32C336.413 104.4 336.813 104.504 337.149 104.632C337.501 104.744 337.765 104.856 337.941 104.968V104.224C337.941 103.296 337.613 102.56 336.957 102.016C336.301 101.472 335.501 101.2 334.557 101.2C333.885 101.2 333.253 101.352 332.661 101.656C332.085 101.944 331.629 102.352 331.293 102.88L329.757 101.728C330.077 101.248 330.477 100.832 330.957 100.48C331.437 100.128 331.981 99.856 332.589 99.664C333.213 99.472 333.869 99.376 334.557 99.376C336.221 99.376 337.525 99.816 338.469 100.696C339.413 101.576 339.885 102.76 339.885 104.248V112H337.941V110.248H337.845C337.637 110.6 337.341 110.944 336.957 111.28C336.573 111.6 336.117 111.864 335.589 112.072C335.077 112.28 334.509 112.384 333.885 112.384ZM334.077 110.584C334.781 110.584 335.421 110.408 335.997 110.056C336.589 109.704 337.061 109.232 337.413 108.64C337.765 108.048 337.941 107.4 337.941 106.696C337.573 106.44 337.109 106.232 336.549 106.072C336.005 105.912 335.405 105.832 334.749 105.832C333.581 105.832 332.725 106.072 332.181 106.552C331.637 107.032 331.365 107.624 331.365 108.328C331.365 109 331.621 109.544 332.133 109.96C332.645 110.376 333.293 110.584 334.077 110.584ZM348.15 112.384C346.95 112.384 345.878 112.104 344.934 111.544C344.006 110.968 343.278 110.192 342.75 109.216C342.222 108.224 341.958 107.112 341.958 105.88C341.958 104.632 342.222 103.52 342.75 102.544C343.278 101.568 344.006 100.8 344.934 100.24C345.878 99.664 346.95 99.376 348.15 99.376C349.526 99.376 350.654 99.696 351.534 100.336C352.43 100.96 353.062 101.768 353.43 102.76L351.582 103.528C351.278 102.776 350.822 102.208 350.214 101.824C349.622 101.424 348.902 101.224 348.054 101.224C347.334 101.224 346.662 101.416 346.038 101.8C345.43 102.184 344.934 102.728 344.55 103.432C344.166 104.12 343.974 104.936 343.974 105.88C343.974 106.808 344.166 107.624 344.55 108.328C344.934 109.032 345.43 109.576 346.038 109.96C346.662 110.344 347.334 110.536 348.054 110.536C348.918 110.536 349.662 110.336 350.286 109.936C350.91 109.536 351.374 108.968 351.678 108.232L353.502 109C353.102 109.944 352.454 110.744 351.558 111.4C350.662 112.056 349.526 112.384 348.15 112.384ZM355.707 112V94.816H357.747V105.592L363.507 99.76H366.099V99.856L361.275 104.68L366.243 111.904V112H363.795L359.859 106.12L357.747 108.232V112H355.707Z" fill="white"/>
+<rect x="69" y="137" width="109" height="44" rx="3" stroke="#AF5CF7" stroke-width="2"/>
+<path d="M112.994 154.047V164H111.278V154.047H112.994ZM117.054 158.401V159.762H112.556V158.401H117.054ZM117.622 154.047V155.414H112.556V154.047H117.622ZM120.789 153.5V164H119.134V153.5H120.789ZM126.963 162.517V158.989C126.963 158.725 126.915 158.497 126.82 158.306C126.724 158.114 126.578 157.966 126.382 157.861C126.191 157.757 125.949 157.704 125.658 157.704C125.389 157.704 125.156 157.75 124.96 157.841C124.764 157.932 124.612 158.055 124.502 158.21C124.393 158.365 124.338 158.54 124.338 158.736H122.698C122.698 158.445 122.768 158.162 122.91 157.889C123.051 157.615 123.256 157.371 123.525 157.157C123.794 156.943 124.115 156.774 124.489 156.651C124.862 156.528 125.282 156.467 125.746 156.467C126.302 156.467 126.795 156.56 127.223 156.747C127.656 156.934 127.996 157.216 128.242 157.595C128.492 157.968 128.618 158.438 128.618 159.003V162.291C128.618 162.628 128.64 162.931 128.686 163.2C128.736 163.465 128.807 163.695 128.898 163.891V164H127.209C127.132 163.822 127.07 163.597 127.025 163.323C126.984 163.045 126.963 162.776 126.963 162.517ZM127.203 159.502L127.216 160.521H126.034C125.728 160.521 125.459 160.55 125.227 160.609C124.995 160.664 124.801 160.746 124.646 160.855C124.491 160.965 124.375 161.097 124.297 161.252C124.22 161.407 124.181 161.582 124.181 161.778C124.181 161.974 124.227 162.154 124.318 162.318C124.409 162.478 124.541 162.603 124.714 162.694C124.892 162.785 125.106 162.831 125.357 162.831C125.694 162.831 125.988 162.763 126.239 162.626C126.494 162.485 126.694 162.314 126.84 162.113C126.986 161.908 127.064 161.715 127.073 161.532L127.606 162.264C127.551 162.451 127.458 162.651 127.326 162.865C127.193 163.079 127.02 163.285 126.806 163.48C126.596 163.672 126.343 163.829 126.047 163.952C125.756 164.075 125.418 164.137 125.036 164.137C124.552 164.137 124.122 164.041 123.744 163.85C123.365 163.654 123.069 163.392 122.855 163.063C122.641 162.731 122.534 162.355 122.534 161.936C122.534 161.544 122.607 161.197 122.752 160.896C122.903 160.591 123.121 160.336 123.409 160.131C123.7 159.926 124.056 159.771 124.475 159.666C124.894 159.557 125.373 159.502 125.911 159.502H127.203ZM131.798 156.604L133.206 159.058L134.642 156.604H136.453L134.211 160.233L136.542 164H134.731L133.227 161.443L131.723 164H129.904L132.229 160.233L129.993 156.604H131.798Z" fill="white"/>
+<rect x="69" y="207" width="460" height="44" rx="3" stroke="#5BB974" stroke-width="2"/>
+<path d="M291.028 231.013V224.047H292.737V231.013C292.737 231.674 292.595 232.236 292.313 232.701C292.03 233.166 291.645 233.521 291.157 233.768C290.67 234.014 290.116 234.137 289.496 234.137C288.863 234.137 288.3 234.03 287.808 233.815C287.32 233.601 286.937 233.273 286.659 232.831C286.381 232.389 286.242 231.828 286.242 231.149H287.965C287.965 231.541 288.027 231.858 288.15 232.1C288.277 232.337 288.455 232.51 288.683 232.619C288.915 232.724 289.186 232.776 289.496 232.776C289.793 232.776 290.055 232.71 290.282 232.578C290.515 232.441 290.697 232.243 290.829 231.983C290.961 231.719 291.028 231.396 291.028 231.013ZM298.638 225.373L295.664 234H293.866L297.612 224.047H298.761L298.638 225.373ZM301.126 234L298.146 225.373L298.016 224.047H299.171L302.931 234H301.126ZM300.982 230.309V231.669H295.568V230.309H300.982ZM305.551 224.047L307.663 227.677L309.775 224.047H311.751L308.743 228.976L311.826 234H309.83L307.663 230.302L305.496 234H303.493L306.583 228.976L303.568 224.047H305.551Z" fill="white"/>
+<rect x="186" y="137" width="109" height="44" rx="3" stroke="#AF5CF7" stroke-width="2"/>
+<path d="M230.66 158.75V159.297C230.66 160.049 230.562 160.723 230.366 161.32C230.17 161.917 229.889 162.425 229.525 162.845C229.165 163.264 228.732 163.585 228.226 163.809C227.72 164.027 227.16 164.137 226.544 164.137C225.934 164.137 225.375 164.027 224.87 163.809C224.368 163.585 223.933 163.264 223.564 162.845C223.195 162.425 222.908 161.917 222.703 161.32C222.502 160.723 222.402 160.049 222.402 159.297V158.75C222.402 157.998 222.502 157.326 222.703 156.733C222.903 156.136 223.186 155.628 223.55 155.209C223.919 154.785 224.355 154.464 224.856 154.245C225.362 154.022 225.92 153.91 226.531 153.91C227.146 153.91 227.706 154.022 228.212 154.245C228.718 154.464 229.153 154.785 229.518 155.209C229.883 155.628 230.163 156.136 230.359 156.733C230.559 157.326 230.66 157.998 230.66 158.75ZM228.944 159.297V158.736C228.944 158.18 228.889 157.69 228.78 157.267C228.675 156.838 228.518 156.48 228.308 156.193C228.103 155.902 227.85 155.683 227.549 155.537C227.248 155.387 226.909 155.312 226.531 155.312C226.152 155.312 225.815 155.387 225.519 155.537C225.223 155.683 224.97 155.902 224.76 156.193C224.555 156.48 224.398 156.838 224.288 157.267C224.179 157.69 224.124 158.18 224.124 158.736V159.297C224.124 159.853 224.179 160.345 224.288 160.773C224.398 161.202 224.557 161.564 224.767 161.86C224.981 162.152 225.236 162.373 225.533 162.523C225.829 162.669 226.166 162.742 226.544 162.742C226.927 162.742 227.267 162.669 227.563 162.523C227.859 162.373 228.11 162.152 228.315 161.86C228.52 161.564 228.675 161.202 228.78 160.773C228.889 160.345 228.944 159.853 228.944 159.297ZM234.066 158.025V166.844H232.418V156.604H233.936L234.066 158.025ZM238.885 160.233V160.377C238.885 160.915 238.821 161.414 238.694 161.874C238.571 162.33 238.386 162.729 238.14 163.07C237.898 163.408 237.6 163.67 237.244 163.856C236.889 164.043 236.479 164.137 236.014 164.137C235.554 164.137 235.15 164.052 234.804 163.884C234.462 163.711 234.173 163.467 233.936 163.152C233.699 162.838 233.507 162.469 233.362 162.045C233.22 161.617 233.12 161.147 233.061 160.637V160.083C233.12 159.541 233.22 159.049 233.362 158.606C233.507 158.164 233.699 157.784 233.936 157.465C234.173 157.146 234.462 156.9 234.804 156.727C235.146 156.553 235.544 156.467 236 156.467C236.465 156.467 236.877 156.558 237.238 156.74C237.598 156.918 237.901 157.173 238.147 157.506C238.393 157.834 238.577 158.23 238.7 158.695C238.823 159.156 238.885 159.668 238.885 160.233ZM237.238 160.377V160.233C237.238 159.892 237.206 159.575 237.142 159.283C237.078 158.987 236.978 158.727 236.841 158.504C236.704 158.281 236.529 158.107 236.315 157.984C236.105 157.857 235.852 157.793 235.556 157.793C235.264 157.793 235.014 157.843 234.804 157.943C234.594 158.039 234.419 158.174 234.278 158.347C234.136 158.52 234.027 158.723 233.949 158.955C233.872 159.183 233.817 159.431 233.785 159.7V161.026C233.84 161.354 233.933 161.655 234.066 161.929C234.198 162.202 234.385 162.421 234.626 162.585C234.872 162.744 235.187 162.824 235.57 162.824C235.866 162.824 236.119 162.76 236.328 162.633C236.538 162.505 236.709 162.33 236.841 162.106C236.978 161.879 237.078 161.617 237.142 161.32C237.206 161.024 237.238 160.71 237.238 160.377ZM243.877 156.604V157.807H239.707V156.604H243.877ZM240.91 154.792H242.558V161.956C242.558 162.184 242.59 162.359 242.653 162.482C242.722 162.601 242.815 162.681 242.934 162.722C243.052 162.763 243.191 162.783 243.351 162.783C243.465 162.783 243.574 162.776 243.679 162.763C243.784 162.749 243.868 162.735 243.932 162.722L243.938 163.979C243.802 164.021 243.642 164.057 243.46 164.089C243.282 164.121 243.077 164.137 242.845 164.137C242.466 164.137 242.132 164.071 241.84 163.938C241.548 163.802 241.32 163.581 241.156 163.275C240.992 162.97 240.91 162.564 240.91 162.059V154.792ZM249.518 162.517V158.989C249.518 158.725 249.471 158.497 249.375 158.306C249.279 158.114 249.133 157.966 248.937 157.861C248.746 157.757 248.504 157.704 248.213 157.704C247.944 157.704 247.711 157.75 247.515 157.841C247.319 157.932 247.167 158.055 247.057 158.21C246.948 158.365 246.893 158.54 246.893 158.736H245.253C245.253 158.445 245.323 158.162 245.465 157.889C245.606 157.615 245.811 157.371 246.08 157.157C246.349 156.943 246.67 156.774 247.044 156.651C247.417 156.528 247.837 156.467 248.302 156.467C248.858 156.467 249.35 156.56 249.778 156.747C250.211 156.934 250.551 157.216 250.797 157.595C251.047 157.968 251.173 158.438 251.173 159.003V162.291C251.173 162.628 251.195 162.931 251.241 163.2C251.291 163.465 251.362 163.695 251.453 163.891V164H249.764C249.687 163.822 249.625 163.597 249.58 163.323C249.539 163.045 249.518 162.776 249.518 162.517ZM249.758 159.502L249.771 160.521H248.589C248.283 160.521 248.014 160.55 247.782 160.609C247.55 160.664 247.356 160.746 247.201 160.855C247.046 160.965 246.93 161.097 246.852 161.252C246.775 161.407 246.736 161.582 246.736 161.778C246.736 161.974 246.782 162.154 246.873 162.318C246.964 162.478 247.096 162.603 247.269 162.694C247.447 162.785 247.661 162.831 247.912 162.831C248.249 162.831 248.543 162.763 248.794 162.626C249.049 162.485 249.249 162.314 249.395 162.113C249.541 161.908 249.619 161.715 249.628 161.532L250.161 162.264C250.106 162.451 250.013 162.651 249.881 162.865C249.749 163.079 249.575 163.285 249.361 163.48C249.151 163.672 248.899 163.829 248.602 163.952C248.311 164.075 247.973 164.137 247.591 164.137C247.108 164.137 246.677 164.041 246.299 163.85C245.92 163.654 245.624 163.392 245.41 163.063C245.196 162.731 245.089 162.355 245.089 161.936C245.089 161.544 245.162 161.197 245.307 160.896C245.458 160.591 245.677 160.336 245.964 160.131C246.255 159.926 246.611 159.771 247.03 159.666C247.449 159.557 247.928 159.502 248.466 159.502H249.758ZM254.353 156.604L255.761 159.058L257.197 156.604H259.008L256.766 160.233L259.097 164H257.286L255.782 161.443L254.278 164H252.46L254.784 160.233L252.548 156.604H254.353Z" fill="white"/>
+<rect x="303" y="137" width="109" height="44" rx="3" stroke="#AF5CF7" stroke-width="2"/>
+<path d="M347.516 158.75V159.297C347.516 160.049 347.418 160.723 347.222 161.32C347.026 161.917 346.746 162.425 346.381 162.845C346.021 163.264 345.588 163.585 345.082 163.809C344.577 164.027 344.016 164.137 343.401 164.137C342.79 164.137 342.232 164.027 341.726 163.809C341.225 163.585 340.789 163.264 340.42 162.845C340.051 162.425 339.764 161.917 339.559 161.32C339.358 160.723 339.258 160.049 339.258 159.297V158.75C339.258 157.998 339.358 157.326 339.559 156.733C339.76 156.136 340.042 155.628 340.407 155.209C340.776 154.785 341.211 154.464 341.712 154.245C342.218 154.022 342.776 153.91 343.387 153.91C344.002 153.91 344.563 154.022 345.069 154.245C345.575 154.464 346.01 154.785 346.374 155.209C346.739 155.628 347.019 156.136 347.215 156.733C347.416 157.326 347.516 157.998 347.516 158.75ZM345.8 159.297V158.736C345.8 158.18 345.746 157.69 345.636 157.267C345.531 156.838 345.374 156.48 345.164 156.193C344.959 155.902 344.706 155.683 344.406 155.537C344.105 155.387 343.765 155.312 343.387 155.312C343.009 155.312 342.672 155.387 342.375 155.537C342.079 155.683 341.826 155.902 341.617 156.193C341.412 156.48 341.254 156.838 341.145 157.267C341.036 157.69 340.981 158.18 340.981 158.736V159.297C340.981 159.853 341.036 160.345 341.145 160.773C341.254 161.202 341.414 161.564 341.623 161.86C341.838 162.152 342.093 162.373 342.389 162.523C342.685 162.669 343.023 162.742 343.401 162.742C343.784 162.742 344.123 162.669 344.419 162.523C344.716 162.373 344.966 162.152 345.171 161.86C345.376 161.564 345.531 161.202 345.636 160.773C345.746 160.345 345.8 159.853 345.8 159.297ZM350.922 158.012V164H349.275V156.604H350.847L350.922 158.012ZM353.185 156.556L353.171 158.087C353.071 158.069 352.961 158.055 352.843 158.046C352.729 158.037 352.615 158.032 352.501 158.032C352.219 158.032 351.97 158.073 351.756 158.155C351.542 158.233 351.362 158.347 351.216 158.497C351.075 158.643 350.965 158.821 350.888 159.03C350.81 159.24 350.765 159.475 350.751 159.734L350.375 159.762C350.375 159.297 350.421 158.866 350.512 158.47C350.603 158.073 350.74 157.725 350.922 157.424C351.109 157.123 351.341 156.888 351.619 156.72C351.902 156.551 352.228 156.467 352.597 156.467C352.697 156.467 352.804 156.476 352.918 156.494C353.037 156.512 353.126 156.533 353.185 156.556ZM354.424 153.5H356.071V162.421L355.914 164H354.424V153.5ZM360.897 160.233V160.377C360.897 160.924 360.836 161.427 360.713 161.888C360.594 162.343 360.412 162.74 360.166 163.077C359.924 163.414 359.624 163.676 359.264 163.863C358.908 164.046 358.496 164.137 358.026 164.137C357.566 164.137 357.165 164.05 356.823 163.877C356.481 163.704 356.194 163.458 355.962 163.139C355.734 162.82 355.549 162.439 355.408 161.997C355.267 161.555 355.167 161.067 355.107 160.534V160.076C355.167 159.538 355.267 159.051 355.408 158.613C355.549 158.171 355.734 157.791 355.962 157.472C356.194 157.148 356.479 156.9 356.816 156.727C357.158 156.553 357.557 156.467 358.013 156.467C358.487 156.467 358.904 156.558 359.264 156.74C359.628 156.923 359.931 157.182 360.173 157.52C360.414 157.852 360.594 158.249 360.713 158.709C360.836 159.169 360.897 159.677 360.897 160.233ZM359.25 160.377V160.233C359.25 159.901 359.223 159.589 359.168 159.297C359.113 159.001 359.022 158.741 358.895 158.518C358.771 158.294 358.603 158.119 358.389 157.991C358.179 157.859 357.917 157.793 357.603 157.793C357.311 157.793 357.06 157.843 356.851 157.943C356.641 158.044 356.465 158.18 356.324 158.354C356.183 158.527 356.071 158.727 355.989 158.955C355.912 159.183 355.859 159.429 355.832 159.693V160.931C355.873 161.272 355.96 161.587 356.092 161.874C356.229 162.157 356.42 162.384 356.666 162.558C356.912 162.726 357.229 162.811 357.616 162.811C357.922 162.811 358.179 162.749 358.389 162.626C358.598 162.503 358.765 162.332 358.888 162.113C359.015 161.89 359.106 161.63 359.161 161.334C359.22 161.038 359.25 160.719 359.25 160.377ZM366.662 162.517V158.989C366.662 158.725 366.614 158.497 366.518 158.306C366.423 158.114 366.277 157.966 366.081 157.861C365.889 157.757 365.648 157.704 365.356 157.704C365.087 157.704 364.855 157.75 364.659 157.841C364.463 157.932 364.31 158.055 364.201 158.21C364.092 158.365 364.037 158.54 364.037 158.736H362.396C362.396 158.445 362.467 158.162 362.608 157.889C362.749 157.615 362.955 157.371 363.223 157.157C363.492 156.943 363.814 156.774 364.187 156.651C364.561 156.528 364.98 156.467 365.445 156.467C366.001 156.467 366.493 156.56 366.922 156.747C367.355 156.934 367.694 157.216 367.94 157.595C368.191 157.968 368.316 158.438 368.316 159.003V162.291C368.316 162.628 368.339 162.931 368.385 163.2C368.435 163.465 368.505 163.695 368.596 163.891V164H366.908C366.831 163.822 366.769 163.597 366.723 163.323C366.682 163.045 366.662 162.776 366.662 162.517ZM366.901 159.502L366.915 160.521H365.732C365.427 160.521 365.158 160.55 364.926 160.609C364.693 160.664 364.499 160.746 364.345 160.855C364.19 160.965 364.073 161.097 363.996 161.252C363.918 161.407 363.88 161.582 363.88 161.778C363.88 161.974 363.925 162.154 364.016 162.318C364.108 162.478 364.24 162.603 364.413 162.694C364.591 162.785 364.805 162.831 365.055 162.831C365.393 162.831 365.687 162.763 365.937 162.626C366.193 162.485 366.393 162.314 366.539 162.113C366.685 161.908 366.762 161.715 366.771 161.532L367.304 162.264C367.25 162.451 367.156 162.651 367.024 162.865C366.892 163.079 366.719 163.285 366.505 163.48C366.295 163.672 366.042 163.829 365.746 163.952C365.454 164.075 365.117 164.137 364.734 164.137C364.251 164.137 363.82 164.041 363.442 163.85C363.064 163.654 362.768 163.392 362.554 163.063C362.339 162.731 362.232 162.355 362.232 161.936C362.232 161.544 362.305 161.197 362.451 160.896C362.601 160.591 362.82 160.336 363.107 160.131C363.399 159.926 363.754 159.771 364.174 159.666C364.593 159.557 365.071 159.502 365.609 159.502H366.901ZM371.497 156.604L372.905 159.058L374.34 156.604H376.152L373.91 160.233L376.241 164H374.429L372.925 161.443L371.421 164H369.603L371.927 160.233L369.692 156.604H371.497Z" fill="white"/>
+<rect x="420" y="137" width="109" height="44" rx="3" stroke="#AF5CF7" stroke-width="2"/>
+<path d="M469.371 163.18C469.371 162.924 469.458 162.71 469.631 162.537C469.804 162.359 470.039 162.271 470.335 162.271C470.636 162.271 470.871 162.359 471.039 162.537C471.212 162.71 471.299 162.924 471.299 163.18C471.299 163.435 471.212 163.649 471.039 163.822C470.871 163.995 470.636 164.082 470.335 164.082C470.039 164.082 469.804 163.995 469.631 163.822C469.458 163.649 469.371 163.435 469.371 163.18ZM473.468 163.18C473.468 162.924 473.554 162.71 473.728 162.537C473.901 162.359 474.135 162.271 474.432 162.271C474.732 162.271 474.967 162.359 475.136 162.537C475.309 162.71 475.396 162.924 475.396 163.18C475.396 163.435 475.309 163.649 475.136 163.822C474.967 163.995 474.732 164.082 474.432 164.082C474.135 164.082 473.901 163.995 473.728 163.822C473.554 163.649 473.468 163.435 473.468 163.18ZM477.564 163.18C477.564 162.924 477.651 162.71 477.824 162.537C477.997 162.359 478.232 162.271 478.528 162.271C478.829 162.271 479.064 162.359 479.232 162.537C479.405 162.71 479.492 162.924 479.492 163.18C479.492 163.435 479.405 163.649 479.232 163.822C479.064 163.995 478.829 164.082 478.528 164.082C478.232 164.082 477.997 163.995 477.824 163.822C477.651 163.649 477.564 163.435 477.564 163.18Z" fill="white"/>
+</g>
+<defs>
+<radialGradient id="paint0_radial_829_1756" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(529.5 60.5) rotate(90) scale(469.5)">
+<stop stop-color="#5E97F6"/>
+<stop offset="1" stop-color="#5E97F6" stop-opacity="0"/>
+</radialGradient>
+<radialGradient id="paint1_radial_829_1756" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(163.5 307.5) rotate(90) scale(469.5)">
+<stop stop-color="#5E97F6"/>
+<stop offset="1" stop-color="#5E97F6" stop-opacity="0"/>
+</radialGradient>
+<clipPath id="clip0_829_1756">
+<rect width="598" height="340" rx="24" fill="white"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/docs/conf.py b/docs/source/conf.py
similarity index 96%
rename from docs/conf.py
rename to docs/source/conf.py
index b27a425..61ea950 100644
--- a/docs/conf.py
+++ b/docs/source/conf.py
@@ -30,6 +30,8 @@
 html_theme = 'sphinx_book_theme'
 html_title = 'JAX AI Stack'
 html_static_path = ['_static']
+html_css_files = ['css/custom.css']
+html_favicon = '_static/images/favicon.png'
 
 # Theme-specific options
 # https://sphinx-book-theme.readthedocs.io/en/stable/reference.html
@@ -37,7 +39,7 @@
     'show_navbar_depth': 2,
     'show_toc_level': 2,
     'repository_url': 'https://github.com/jax-ml/jax-ai-stack',
-    'path_to_docs': 'docs/',
+    'path_to_docs': 'docs/source/',
     'use_repository_button': True,
     'navigation_with_keys': True,
 }
diff --git a/docs/contributing.md b/docs/source/contributing.md
similarity index 98%
rename from docs/contributing.md
rename to docs/source/contributing.md
index ed2c914..9bf1810 100644
--- a/docs/contributing.md
+++ b/docs/source/contributing.md
@@ -81,7 +81,7 @@ git commit -m "update new tutorial"  # commit to the branch
 To build the documentation locally, you can run the following command:
 
 ```bash
-sphinx-build -b html docs/ docs/_build/html
+sphinx-build -b html docs/source docs/_build/html
 ```
 
 You can then open the generated HTML files in your browser by opening `docs/_build/html/index.html`.
diff --git a/docs/data_loaders_on_cpu_with_jax.ipynb b/docs/source/data_loaders_on_cpu_with_jax.ipynb
similarity index 100%
rename from docs/data_loaders_on_cpu_with_jax.ipynb
rename to docs/source/data_loaders_on_cpu_with_jax.ipynb
diff --git a/docs/data_loaders_on_cpu_with_jax.md b/docs/source/data_loaders_on_cpu_with_jax.md
similarity index 100%
rename from docs/data_loaders_on_cpu_with_jax.md
rename to docs/source/data_loaders_on_cpu_with_jax.md
diff --git a/docs/digits_diffusion_model.ipynb b/docs/source/digits_diffusion_model.ipynb
similarity index 100%
rename from docs/digits_diffusion_model.ipynb
rename to docs/source/digits_diffusion_model.ipynb
diff --git a/docs/digits_diffusion_model.md b/docs/source/digits_diffusion_model.md
similarity index 100%
rename from docs/digits_diffusion_model.md
rename to docs/source/digits_diffusion_model.md
diff --git a/docs/digits_vae.ipynb b/docs/source/digits_vae.ipynb
similarity index 100%
rename from docs/digits_vae.ipynb
rename to docs/source/digits_vae.ipynb
diff --git a/docs/digits_vae.md b/docs/source/digits_vae.md
similarity index 100%
rename from docs/digits_vae.md
rename to docs/source/digits_vae.md
diff --git a/docs/getting_started_with_jax_for_AI.ipynb b/docs/source/getting_started_with_jax_for_AI.ipynb
similarity index 100%
rename from docs/getting_started_with_jax_for_AI.ipynb
rename to docs/source/getting_started_with_jax_for_AI.ipynb
diff --git a/docs/getting_started_with_jax_for_AI.md b/docs/source/getting_started_with_jax_for_AI.md
similarity index 100%
rename from docs/getting_started_with_jax_for_AI.md
rename to docs/source/getting_started_with_jax_for_AI.md
diff --git a/docs/source/index.html b/docs/source/index.html
new file mode 100644
index 0000000..eb64b49
--- /dev/null
+++ b/docs/source/index.html
@@ -0,0 +1,71 @@
+<div class="doc-body">
+    <section class="hero">
+        <div>
+            <span><img src="./_static/images/ai-stack-logo.svg"/><h1>JAX AI Stack</h1></span>
+            <p>Flexible, scalable components for AI research and development</p>
+            <a class="button button-primary" href="https://jax-ai-stack.readthedocs.io/en/latest/tutorials.html">Get started</a>
+        </div>
+        <img src="./_static/images/hero.svg" class="hero-image">
+    </section>
+    <section class="three-up">
+        <div>
+            <h3>Flexible and scalable</h3>
+            <p>Iterate quickly and with efficient out-of-the-box scaling</p>
+        </div>
+        <div>
+            <h3>Run anywhere</h3>
+            <p>Execute the same code on any CPU, GPU, & TPU</p>
+        </div>
+        <div>
+            <h3>Reliability and compatibility</h3>
+            <p>JAX AI Stack tested releases provide high reliability by ensuring compatibility across its libraries</p>
+        </div>
+    </section>
+    <section class="banner">
+        <h3>Why the JAX AI Stack?</h3>
+        <p>
+            The JAX AI Stack helps navigate the many available libraries built on top of JAX by providing a curated set of libraries known to work well together and a cohesive experience with them.
+        </p>
+        <p>
+            The JAX AI Stack also provides:
+            <ul>
+                <li>Simplified installation for all libraries</li>
+                <li>Tested releases that ensure all library versions are compatible with each other</li>
+                <li>Guides and tutorials for using the stack</li>
+            </ul>
+        </p>
+    </section>
+    <section class="image-section image-right">
+        <img src="./_static/images/what-is-the-jax-ai-stack.svg">
+        <div class="text-body">
+            <h3>JAX AI Stack</h3>
+            <p>The JAX AI Stack is a curated collection of libraries that researchers and engineers, both inside and outside of Google, have found useful for implementing and deploying the models behind generative AI tools like Imagen, Gemini, and more.</p>
+            <ul>
+                <li>JAX - core array operations and program transformations</li>
+                <li>Flax - For building neural networks</li>
+                <li>Orbax -For checkpointing and persistence utilities</li>
+                <li>Optax - For gradient processing and optimization</li>
+                <li>ml_dtypes - NumPy dtype extensions for machine learning.</li>
+                <li>Optional data loading libraries (Grain or tf.data)</li>
+            </ul>
+            <a class="button button-primary" href="https://jax-ai-stack.readthedocs.io/en/latest/tutorials.html">Get started</a>
+        </div>
+    </section>
+    <section class="image-section">
+        <img src="./_static/images/hardware.svg">
+        <div class="text-body">
+            <h3>Powered by JAX</h3>
+            <p>JAX is a Python library for efficient array-oriented computation and program transformation. JAX's flexible and modular approach has encouraged communities across AI, scientific computing, simulation and more to build ecosystems on top of it.</p>
+            <p>JAX is often compared to neural network libraries like PyTorch, but the core JAX package contains very little specific to deep learning. Instead, JAX encourages modularity, where domain-specific libraries are developed separately from the core package. This helps drive innovation as researchers and other users explore what's possible.</p>
+            <a class="button button-primary" href="https://jax.readthedocs.io/en/latest/">Learn more about JAX</a>
+        </div>
+    </section>
+    <section class="image-section image-right">
+        <img src="./_static/images/compiler.svg">
+        <div class="text-body">
+            <h3>Part of a wider AI Ecosystem</h3>
+            <p>The JAX AI Stack is part of a growing AI community and ecosystem around JAX. Modularity and choice are important principles for JAX and we are excited to see the development happening around it!</p>
+            <a class="button button-primary" href="https://jax.readthedocs.io/en/latest/#ecosystem">Learn more about the AI Ecosystem</a>
+        </div>
+    </section>
+</div>
diff --git a/docs/source/index.rst b/docs/source/index.rst
new file mode 100644
index 0000000..ffa2c91
--- /dev/null
+++ b/docs/source/index.rst
@@ -0,0 +1,12 @@
+Jax AI Stack
+============
+
+.. raw:: html
+   :file: index.html
+
+.. toctree::
+   :hidden:
+   :maxdepth: 2
+
+   tutorials
+   contributing
diff --git a/docs/tutorials.md b/docs/source/tutorials.md
similarity index 100%
rename from docs/tutorials.md
rename to docs/source/tutorials.md
diff --git a/pyproject.toml b/pyproject.toml
index 1a6a8f6..d42719b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -66,4 +66,4 @@ include-package-data = false
 
 [tool.ruff.lint.per-file-ignores]
 # F811: Redefinition of unused name.
-"docs/digits_vae.ipynb" = ["F811"]
+"docs/source/digits_vae.ipynb" = ["F811"]


Test patch:
diff --git a/docs/_static/testsheet_start_example.png b/docs/source/_static/images/testsheet_start_example.png
similarity index 100%
rename from docs/_static/testsheet_start_example.png
rename to docs/source/_static/images/testsheet_start_example.png
diff --git a/docs/_static/testsheets_500_3000.png b/docs/source/_static/images/testsheets_500_3000.png
similarity index 100%
rename from docs/_static/testsheets_500_3000.png
rename to docs/source/_static/images/testsheets_500_3000.png