From ecbe3362fc8476aee61ea9459901f12e3b8d6e63 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Roman=20Dvo=C5=99=C3=A1k?= <xdvora19@fi.muni.cz>
Date: Thu, 26 Sep 2024 21:11:11 +0200
Subject: [PATCH] * change name of css classes to lowercase
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* minor formating changes

* fix button name

* add button for intro def download

* add submodule

* Upravená HP, přejmenovaná fáze Define a další drobnosti

* repossition main logo

* make borders and boxes responsive

* change main logo location, change sizes of texts, and changes in grid cards

* reformat main page

* fix button name

* add button for intro def download

* add submodule

* Upravená HP, přejmenovaná fáze Define a další drobnosti

* repossition main logo

* make borders and boxes responsive

* change main logo location, change sizes of texts, and changes in grid cards

* reformat main page
---
 .gitmodules                                   |   3 +
 docs/INJECT_process/execute/overview.md       |   6 +-
 docs/INJECT_process/intro/overview.md         |   6 +-
 docs/INJECT_process/prepare/overview.md       |  21 +--
 docs/INJECT_process/reflect/overview.md       |   2 +-
 .../learning_objectives_and_activities.md     |   0
 .../{define => specify}/overview.md           |   4 +-
 .../{define => specify}/storyline.md          |   0
 docs/INJECT_process/understand/overview.md    |   4 +-
 docs/images/inject-logo--horizontal-white.svg |  21 +++
 .../images/inject-logo--horizontal-yellow.svg |   1 +
 docs/index.md                                 | 133 ++++++++++++++----
 docs/stylesheets/extra.css                    | 126 ++++++++++++++++-
 files-from-repos/intro-definition.zip         | Bin 0 -> 12204 bytes
 introductory-definition                       |   1 +
 mkdocs.yml                                    |   4 +-
 utilities.sh                                  |   1 +
 17 files changed, 281 insertions(+), 52 deletions(-)
 rename docs/INJECT_process/{define => specify}/learning_objectives_and_activities.md (100%)
 rename docs/INJECT_process/{define => specify}/overview.md (99%)
 rename docs/INJECT_process/{define => specify}/storyline.md (100%)
 create mode 100644 docs/images/inject-logo--horizontal-white.svg
 create mode 100644 docs/images/inject-logo--horizontal-yellow.svg
 create mode 100644 files-from-repos/intro-definition.zip
 create mode 160000 introductory-definition

diff --git a/.gitmodules b/.gitmodules
index d4dd19c..9e3a432 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -9,3 +9,6 @@
 [submodule "showcase-definition"]
 	path = showcase-definition
 	url = ../definitions/showcase-definition
+[submodule "introductory-definition"]
+	path = introductory-definition
+	url = ../definitions/introductory-definition
diff --git a/docs/INJECT_process/execute/overview.md b/docs/INJECT_process/execute/overview.md
index 9e4da88..cfba95e 100644
--- a/docs/INJECT_process/execute/overview.md
+++ b/docs/INJECT_process/execute/overview.md
@@ -31,7 +31,7 @@ Here are some key tasks to keep in mind:
 - **Consider Platform Tutorial**:
   If necessary, provide a tutorial on how to navigate and use the platform effectively, ensuring that participants are familiar with its features and functionalities.
   You can use our showcase definition:  
-    <div class="NAVIGATION" markdown>
+    <div class="navigation" markdown>
     [Showcase Definition](https://gitlab.fi.muni.cz/inject/inject-docs/-/raw/main/files-from-repos/showcase-definition.zip?ref_type=heads&inline=false){ .md-button }
     </div>
 
@@ -66,11 +66,11 @@ Here are some key tasks to keep in mind:
     the complete user guide for the Instructor View is currently undergoing significant iteration.
     Therefore, this section is not included at this time.
 
-<div class="NAVIGATION" markdown>
+<div class="navigation" markdown>
   [&larr; 3 Preparation phase](../prepare/overview.md){ .md-button }
   [5 Reflection phase &rarr;](../reflect/overview.md){ .md-button }
 </div>
 
-<div class="NAVIGATION" markdown>
+<div class="navigation" markdown>
   [INJECT Process Overview](../intro/overview.md){ .md-button }
 </div>
diff --git a/docs/INJECT_process/intro/overview.md b/docs/INJECT_process/intro/overview.md
index 3c0f86c..61055d2 100644
--- a/docs/INJECT_process/intro/overview.md
+++ b/docs/INJECT_process/intro/overview.md
@@ -19,7 +19,7 @@ The goal of the Understanding phase is to gather all the necessary information t
 This includes identifying the objectives, the scope, and the resources required.
 During this phase, you will ensure that you have a comprehensive understanding of the context and goals of the exercise.
 
-### 02 Definition phase
+### 02 Specification phase
 
 In the Definition phase, you will clearly define the exercise objectives, aligning them with the needs identified in the previous phase.
 This involves breaking down these objectives into specific learning activities and creating the main and parallel inject lines that form the scenario.
@@ -131,7 +131,7 @@ you can create a more comprehensive and effective exercise tailored to your spec
 <div class="result" markdown>
   <div class="grid cards" markdown>
 - [1. Understand](../understand/overview.md)
-- [2. Define](../define/overview.md)
+- [2. Specify](../specify/overview.md)
 - [3. Prepare](../prepare/overview.md)
 - [4. Execute](../execute/overview.md)
 - [5. Reflect](../reflect/overview.md)
@@ -143,6 +143,6 @@ you can create a more comprehensive and effective exercise tailored to your spec
     This is the initial version of the documentation describing the INJECT process from a broad perspective.
     As we continue to develop the platform, we will expand each section with specific information and examples.
 
-<div class="NAVIGATION" markdown>
+<div class="navigation" markdown>
   [Home](../../index.md){ .md-button }
 </div>
diff --git a/docs/INJECT_process/prepare/overview.md b/docs/INJECT_process/prepare/overview.md
index 7d6497a..1fab571 100644
--- a/docs/INJECT_process/prepare/overview.md
+++ b/docs/INJECT_process/prepare/overview.md
@@ -28,7 +28,7 @@ However, there is an alternative option available: you can prepare content direc
     - Start with Examples: First of all, check the example of definition in GitLab.
     It is a great starting point.
 
-        <div class="NAVIGATION" markdown>
+        <div class="navigation" markdown>
           [INJECT Definition Example](https://gitlab.fi.muni.cz/inject/inject-docs/-/raw/main/files-from-repos/showcase-definition.zip?ref_type=heads&inline=false){ .md-button }
         </div>
 
@@ -144,7 +144,7 @@ However, there is an alternative option available: you can prepare content direc
         - In the `Definitions` section, click the `+ Add` button to upload a definition.
         - You may use the showcase definition provided here:
 
-          <div class="NAVIGATION" markdown>
+          <div class="navigation" markdown>
           [INJECT Definition Example](https://gitlab.fi.muni.cz/inject/inject-docs/-/raw/main/files-from-repos/showcase-definition.zip?ref_type=heads&inline=false){ .md-button }
           </div>
 
@@ -165,16 +165,21 @@ However, there is an alternative option available: you can prepare content direc
 
 
 ??? "User onboarding"
+    Since the IXP may be new to many participants, it makes sense to **let them to complete the introductory tutorial first**. Although the platform’s user interface is intuitive, having a structured      
+     overview is more beneficial than letting participants figure it out during the actual exercise. **We have created a short introduction that will take no more than 15 minutes to help enhance their 
+      experience.**
+    
+    <div class="navigation" markdown>
+        [Intro Definition](https://gitlab.fi.muni.cz/inject/inject-docs/-/raw/main/files-from-repos/intro-definition.zip?ref_type=heads&inline=false){ .md-button }
+    </div>
+
 
-    !!! TBD
-        Please note that a comprehensive guide for the creation of accounts will be developed in the coming months.
-        Stay tuned for detailed instructions on this process.
 
-<div class="NAVIGATION" markdown>
-  [&larr; 2 Definition phase](../define/overview.md){ .md-button }
+<div class="navigation" markdown>
+  [&larr; 2 Specification phase](../specify/overview.md){ .md-button }
   [4 Execution phase &rarr;](../execute/overview.md){ .md-button }
 </div>
 
-<div class="NAVIGATION" markdown>
+<div class="navigation" markdown>
   [INJECT Process Overview](../intro/overview.md){ .md-button }
 </div>
diff --git a/docs/INJECT_process/reflect/overview.md b/docs/INJECT_process/reflect/overview.md
index 1641d05..84fe019 100644
--- a/docs/INJECT_process/reflect/overview.md
+++ b/docs/INJECT_process/reflect/overview.md
@@ -48,7 +48,7 @@ Never overlook the importance of the reflection phase.
 It serves as an input for your next understanding phase when planning another exercise.
 Remember, the knowledge gained from one reflection can directly impact your next exercises.
 
-<div class="NAVIGATION" markdown>
+<div class="navigation" markdown>
   [&larr; 4 Execution process](../execute/overview.md){ .md-button }
   [INJECT Proces overview](../intro/overview.md){ .md-button }
 </div>
diff --git a/docs/INJECT_process/define/learning_objectives_and_activities.md b/docs/INJECT_process/specify/learning_objectives_and_activities.md
similarity index 100%
rename from docs/INJECT_process/define/learning_objectives_and_activities.md
rename to docs/INJECT_process/specify/learning_objectives_and_activities.md
diff --git a/docs/INJECT_process/define/overview.md b/docs/INJECT_process/specify/overview.md
similarity index 99%
rename from docs/INJECT_process/define/overview.md
rename to docs/INJECT_process/specify/overview.md
index 4a00615..04107f1 100644
--- a/docs/INJECT_process/define/overview.md
+++ b/docs/INJECT_process/specify/overview.md
@@ -168,11 +168,11 @@ With each scenario you define, the process becomes more streamlined and manageab
 By the end of this phase, you will have developed an exercise scenario, which serves as the cornerstone for the preparation phase.
 Remember, the effort invested in crafting a robust scenario will ultimately contribute to the success of the entire exercise.
 
-<div class="NAVIGATION" markdown>
+<div class="navigation" markdown>
   [&larr; 1 Understanding phase](../understand/overview.md){ .md-button }
   [3 Preparation phase &rarr;](../prepare/overview.md){ .md-button }
 </div>
 
-<div class="NAVIGATION" markdown>
+<div class="navigation" markdown>
   [INJECT Process Overview](../intro/overview.md){ .md-button }
 </div>
diff --git a/docs/INJECT_process/define/storyline.md b/docs/INJECT_process/specify/storyline.md
similarity index 100%
rename from docs/INJECT_process/define/storyline.md
rename to docs/INJECT_process/specify/storyline.md
diff --git a/docs/INJECT_process/understand/overview.md b/docs/INJECT_process/understand/overview.md
index a7c7b62..2e4c0f3 100644
--- a/docs/INJECT_process/understand/overview.md
+++ b/docs/INJECT_process/understand/overview.md
@@ -119,7 +119,7 @@ Designers should leverage this data to refine their approach.
   Maintain regular communication with the client to ensure the evolving scenario aligns with their needs.
   This ongoing dialogue helps shape the overall direction and ensures that the exercise remains relevant and targeted.
 
-<div class="NAVIGATION" markdown>
+<div class="navigation" markdown>
   [&larr; INJECT Proces overview](../intro/overview.md){ .md-button }
-  [2 Definition phase &rarr;](../define/overview.md){ .md-button }
+  [2 Specification phase &rarr;](../specify/overview.md){ .md-button }
 </div>
diff --git a/docs/images/inject-logo--horizontal-white.svg b/docs/images/inject-logo--horizontal-white.svg
new file mode 100644
index 0000000..62dd55d
--- /dev/null
+++ b/docs/images/inject-logo--horizontal-white.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="1878" height="699" viewBox="0 0 1878 699">
+  <g>
+    <path d="m717.88,457.99v-215.38h44.47v215.38h-44.47Z" fill="#fff"/>
+    <path d="m933.86,457.99l-41.74-87.42c-13.61-28.74-27.22-58.99-39.33-88.93h-.61c1.51,31.16,2.42,62.31,2.42,93.47v82.88h-42.65v-215.38h63.22l41.74,87.42c13.61,28.74,27.22,58.99,39.33,88.93h.6c-1.51-31.16-2.42-62.31-2.42-93.47v-82.88h42.65v215.38h-63.22Z" fill="#fff"/>
+    <path d="m1117.16,389.32c0,48.4-21.48,70.79-71.09,70.79-6.96,0-14.52-.91-19.66-2.42v-37.81c4.84.91,10.59,1.51,14.22,1.51,21.78,0,32.07-7.56,32.07-41.44v-137.33h44.47v146.71Z" fill="#fff"/>
+    <path d="m1209.72,280.72v48.7h97.4v37.81h-97.4v52.63h107.08v38.11h-151.55v-215.38h148.83v38.12h-104.36Z" fill="#fff"/>
+    <path d="m1526.13,317.32h-44.77c-2.72-25.11-19.36-40.23-44.47-40.23-32.67,0-52.63,27.83-52.63,73.21s19.66,73.2,51.73,73.2c25.41,0,42.05-14.82,45.37-41.14h45.68c-4.24,51.12-38.42,80.47-91.05,80.47-60.5,0-97.71-42.65-97.71-112.53s37.51-112.53,98.61-112.53c53.24,0,87.12,32.67,89.24,79.56Z" fill="#fff"/>
+    <path d="m1648.94,280.72v177.26h-44.47v-177.26h-67.76v-38.12h179.99v38.12h-67.76Z" fill="#fff"/>
+  </g>
+  <g>
+    <path d="m622.69,387.55l7.31-12.67,14.66-25.39-14.66-25.39-7.31-12.67-98.87-171.25h-241.68l-10.55,18.27h0s-10.63,18.41-10.63,18.41l-99.65,172.62,99.53,172.39,6.99,12.09h0s14.33,24.82,14.33,24.82h241.68l98.87-171.25Zm-325.91,145.88l-6.66-11.54-.66-1.14-13.99-24.23-77.56-134.33-7.32-12.68,7.32-12.68,77.69-134.56,13.85-24,.79-1.37,6.53-11.32h212.39l7.32,12.68,76.9,133.19,14.65,25.37,7.32,12.68-7.32,12.68-14.65,25.37-76.9,133.19-7.32,12.68h-212.39Z" fill="#fff"/>
+    <rect x="403.01" y="336.82" width="227" height="25.37" fill="#fff"/>
+    <polygon points="300.45 552.46 299.48 551.9 279.46 540.34 278.48 539.77 289.46 520.75 326.64 456.37 341.29 431.01 385.13 355.1 385.13 355.09 388.36 349.5 389.15 348.13 391.86 343.44 392.02 343.16 413.99 355.84 410.75 361.47 410.33 362.18 403.01 374.86 363.26 443.68 348.61 469.05 311.43 533.43 300.45 552.46" fill="#fff"/>
+    <polygon points="392.02 355.84 389.98 352.3 389.02 350.64 388.36 349.5 381.35 337.36 341.29 267.99 326.64 242.63 289.46 178.25 278.48 159.23 279.66 158.54 300.28 146.63 300.45 146.54 311.43 165.57 348.61 229.95 363.26 255.32 403.01 324.14 410.33 336.82 412.48 340.53 413.99 343.16 392.02 355.84" fill="#fff"/>
+    <path d="m541.02,349.5l-7.32-12.68h-29.29l7.32,12.68-7.32,12.68h29.29l7.32-12.68Zm-213.72,57.28l-33.07-57.28,33.2-57.51-14.65-25.37-40.52,70.19-7.32,12.68,7.32,12.68,40.39,69.96,14.66-25.37Zm14.77-140.15l6.53-11.31h14.66l-14.65-25.37h-14.66l-6.53,11.31-.79,1.37,14.66,25.37.79-1.37Zm21.18,177.06h-14.66l-6.66-11.53-.66-1.14-14.66,25.37.66,1.14,6.66,11.53h14.66l14.65-25.37Zm116.06,12.68l39.73-68.81h-29.29l-32.41,56.13h-66.07l-14.65,25.37h95.37l7.32-12.68Zm0-213.73l-7.32-12.68h-94.3l14.66,25.37h65l32.41,56.13h29.29l-39.73-68.81Z" fill="#fff"/>
+    <polygon points="475.66 248.98 453.69 236.29 457.35 229.95 494.52 165.57 505.51 146.54 527.48 159.23 516.5 178.25 479.32 242.63 475.66 248.98" fill="#fff"/>
+    <rect x="175.95" y="336.82" width="103.64" height="25.37" fill="#fff"/>
+    <polygon points="505.51 552.46 494.52 533.43 457.35 469.05 453.69 462.71 475.66 450.02 479.32 456.37 516.5 520.75 527.48 539.77 505.51 552.46" fill="#fff"/>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/docs/images/inject-logo--horizontal-yellow.svg b/docs/images/inject-logo--horizontal-yellow.svg
new file mode 100644
index 0000000..b61a599
--- /dev/null
+++ b/docs/images/inject-logo--horizontal-yellow.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" zoomAndPan="magnify" viewBox="0 20 375 129.999998" height="200" preserveAspectRatio="xMidYMid meet" version="1.0"><path fill="#f1d45c" d="M 141.117188 52.574219 L 150.445312 52.574219 L 150.445312 97.753906 L 141.117188 97.753906 Z M 141.117188 52.574219 " fill-opacity="1" fill-rule="nonzero"/><path fill="#f1d45c" d="M 186.421875 97.753906 L 177.664062 79.417969 C 174.808594 73.386719 171.953125 67.042969 169.414062 60.761719 L 169.285156 60.761719 C 169.601562 67.296875 169.792969 73.832031 169.792969 80.367188 L 169.792969 97.753906 L 160.847656 97.753906 L 160.847656 52.574219 L 174.109375 52.574219 L 182.863281 70.914062 C 185.71875 76.941406 188.574219 83.285156 191.113281 89.566406 L 191.242188 89.566406 C 190.921875 83.03125 190.734375 76.496094 190.734375 69.960938 L 190.734375 52.574219 L 199.679688 52.574219 L 199.679688 97.753906 L 186.417969 97.753906 Z M 186.421875 97.753906 " fill-opacity="1" fill-rule="nonzero"/><path fill="#f1d45c" d="M 224.871094 83.351562 C 224.871094 93.503906 220.363281 98.199219 209.957031 98.199219 C 208.496094 98.199219 206.910156 98.007812 205.832031 97.691406 L 205.832031 89.761719 C 206.847656 89.949219 208.054688 90.078125 208.816406 90.078125 C 213.386719 90.078125 215.542969 88.492188 215.542969 81.382812 L 215.542969 52.578125 L 224.871094 52.578125 Z M 224.871094 83.351562 " fill-opacity="1" fill-rule="nonzero"/><path fill="#f1d45c" d="M 244.285156 60.570312 L 244.285156 70.785156 L 264.714844 70.785156 L 264.714844 78.714844 L 244.285156 78.714844 L 244.285156 89.757812 L 266.746094 89.757812 L 266.746094 97.75 L 234.957031 97.75 L 234.957031 52.570312 L 266.175781 52.570312 L 266.175781 60.566406 L 244.285156 60.566406 Z M 244.285156 60.570312 " fill-opacity="1" fill-rule="nonzero"/><path fill="#f1d45c" d="M 310.65625 68.246094 L 301.265625 68.246094 C 300.695312 62.980469 297.203125 59.808594 291.9375 59.808594 C 285.085938 59.808594 280.898438 65.644531 280.898438 75.164062 C 280.898438 84.683594 285.023438 90.519531 291.75 90.519531 C 297.078125 90.519531 300.570312 87.410156 301.265625 81.890625 L 310.847656 81.890625 C 309.957031 92.613281 302.789062 98.769531 291.75 98.769531 C 279.058594 98.769531 271.253906 89.824219 271.253906 75.164062 C 271.253906 60.507812 279.121094 51.558594 291.9375 51.558594 C 303.105469 51.558594 310.210938 58.414062 310.65625 68.25 Z M 310.65625 68.246094 " fill-opacity="1" fill-rule="nonzero"/><path fill="#f1d45c" d="M 336.417969 60.570312 L 336.417969 97.753906 L 327.089844 97.753906 L 327.089844 60.570312 L 312.875 60.570312 L 312.875 52.574219 L 350.632812 52.574219 L 350.632812 60.570312 Z M 336.417969 60.570312 " fill-opacity="1" fill-rule="nonzero"/><path fill="#f1d45c" d="M 121.148438 82.980469 L 122.679688 80.320312 L 125.757812 74.996094 L 122.679688 69.667969 L 121.148438 67.011719 L 100.410156 31.089844 L 49.710938 31.089844 L 47.5 34.921875 C 47.5 34.921875 45.269531 38.785156 45.269531 38.785156 L 24.367188 74.992188 L 45.246094 111.152344 L 46.710938 113.691406 C 46.710938 113.691406 49.71875 118.894531 49.71875 118.894531 L 100.414062 118.894531 L 121.152344 82.972656 Z M 52.785156 113.578125 L 51.386719 111.160156 L 51.25 110.917969 L 48.3125 105.835938 L 32.042969 77.660156 L 30.507812 75 L 32.042969 72.339844 L 48.339844 44.113281 L 51.246094 39.078125 L 51.410156 38.792969 L 52.78125 36.417969 L 97.332031 36.417969 L 98.867188 39.078125 L 115 67.015625 L 118.074219 72.335938 L 119.609375 74.996094 L 118.074219 77.65625 L 115 82.980469 L 98.867188 110.917969 L 97.332031 113.578125 L 52.78125 113.578125 Z M 52.785156 113.578125 " fill-opacity="1" fill-rule="nonzero"/><path fill="#f1d45c" d="M 75.066406 72.335938 L 122.683594 72.335938 L 122.683594 77.660156 L 75.066406 77.660156 Z M 75.066406 72.335938 " fill-opacity="1" fill-rule="nonzero"/><path fill="#f1d45c" d="M 53.554688 117.570312 L 53.351562 117.453125 L 49.152344 115.027344 L 48.945312 114.910156 L 51.25 110.917969 L 59.046875 97.414062 L 62.121094 92.09375 L 71.316406 76.171875 L 71.316406 76.167969 L 71.992188 74.996094 L 72.160156 74.710938 L 72.726562 73.726562 L 72.761719 73.667969 L 77.371094 76.328125 L 76.691406 77.507812 L 76.601562 77.65625 L 75.066406 80.316406 L 66.730469 94.753906 L 63.65625 100.074219 L 55.855469 113.578125 Z M 53.554688 117.570312 " fill-opacity="1" fill-rule="nonzero"/><path fill="#f1d45c" d="M 72.761719 76.328125 L 72.332031 75.585938 L 72.132812 75.234375 L 71.992188 74.996094 L 70.523438 72.449219 L 62.121094 57.898438 L 59.046875 52.578125 L 51.25 39.074219 L 48.945312 35.085938 L 49.191406 34.941406 L 53.519531 32.441406 L 53.554688 32.421875 L 55.855469 36.414062 L 63.65625 49.917969 L 66.730469 55.242188 L 75.066406 69.675781 L 76.601562 72.335938 L 77.054688 73.117188 L 77.371094 73.667969 Z M 72.761719 76.328125 " fill-opacity="1" fill-rule="nonzero"/><path fill="#f1d45c" d="M 104.015625 74.996094 L 102.480469 72.335938 L 96.335938 72.335938 L 97.871094 74.996094 L 96.335938 77.65625 L 102.480469 77.65625 Z M 59.1875 87.011719 L 52.25 74.996094 L 59.214844 62.933594 L 56.140625 57.613281 L 47.640625 72.335938 L 46.105469 74.996094 L 47.640625 77.65625 L 56.113281 92.328125 L 59.1875 87.007812 Z M 62.285156 57.613281 L 63.652344 55.242188 L 66.730469 55.242188 L 63.65625 49.917969 L 60.582031 49.917969 L 59.210938 52.292969 L 59.046875 52.578125 L 62.121094 57.902344 Z M 66.726562 94.753906 L 63.652344 94.753906 L 62.253906 92.335938 L 62.117188 92.097656 L 59.039062 97.417969 L 59.179688 97.65625 L 60.578125 100.078125 L 63.652344 100.078125 Z M 91.070312 97.414062 L 99.40625 82.980469 L 93.261719 82.980469 L 86.464844 94.753906 L 72.605469 94.753906 L 69.53125 100.078125 L 89.535156 100.078125 L 91.070312 97.417969 Z M 91.070312 52.582031 L 89.535156 49.921875 L 69.753906 49.921875 L 72.832031 55.242188 L 86.464844 55.242188 L 93.265625 67.019531 L 99.40625 67.019531 L 91.074219 52.582031 Z M 91.070312 52.582031 " fill-opacity="1" fill-rule="nonzero"/><path fill="#f1d45c" d="M 90.304688 53.910156 L 85.699219 51.25 L 86.464844 49.917969 L 94.261719 36.414062 L 96.566406 32.421875 L 101.175781 35.085938 L 98.875 39.074219 L 91.074219 52.578125 Z M 90.304688 53.910156 " fill-opacity="1" fill-rule="nonzero"/><path fill="#f1d45c" d="M 27.4375 72.335938 L 49.179688 72.335938 L 49.179688 77.660156 L 27.4375 77.660156 Z M 27.4375 72.335938 " fill-opacity="1" fill-rule="nonzero"/><path fill="#f1d45c" d="M 96.566406 117.570312 L 94.261719 113.578125 L 86.464844 100.074219 L 85.699219 98.746094 L 90.304688 96.082031 L 91.074219 97.414062 L 98.875 110.917969 L 101.175781 114.910156 Z M 96.566406 117.570312 " fill-opacity="1" fill-rule="nonzero"/></svg>
\ No newline at end of file
diff --git a/docs/index.md b/docs/index.md
index 7b9b437..32ec7bb 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,43 +1,116 @@
+---
+hide:
+  - navigation
+  - toc
+---
+<img class="main-logo" alt="" src="images/inject-logo--horizontal-yellow.svg"> 
 # INJECT Exercise Platform Documentation
 
-Welcome to the INJECT Exercise Platform (IXP) Documentation!
-Here, you'll find comprehensive resources to guide you through every aspect of the IXP, from installation to advanced usage.
+<div class="bigger-font-size" markdown>
+Welcome! Whether you're responsible for technical deployment or facilitating tabletop exercises, this documentation will equip you with the tools and knowledge needed for successful implementation.
+</div>
 
-## Overview
 
-The INJECT Exercise Platform revolutionizes tabletop exercise management by
-providing a versatile and intuitive solution for organizations of all sizes.
-Whether you're a small team looking to improve emergency response protocols or
-a large corporation conducting complex training scenarios,
-IXP offers the flexibility and power to meet your needs.
+## What is the INJECT Exercise Platform (IXP)?
+- A digital platform designed for conducting interactive tabletop exercises.
+- Provides immediate reactions to decisions, enhancing the learning process.
+- Simplifies the preparation, execution, and evaluation of exercises, reducing organizer workload.
 
-## Technical Documentation
+## Quick Navigation 
 
-Explore the technical documentation to gain a deeper understanding of
-the platform's architecture, APIs, security measures, and installation procedures.
+<div class="main-gridc" markdown>
+<div class="navigation-main" markdown>
+  [Installation](tech/installation.md){ .md-button }
+</div>
+<div class="navigation-main" markdown>
+  [Exercise Preparation](INJECT_process/intro/overview.md){ .md-button }
+</div>
+<div class="navigation-main" markdown>
+  [Architecture](tech/architecture/overview.md){ .md-button }
+</div>
+<div class="navigation-main" markdown>
+  [API documentation](tech/api/overview.md){ .md-button }
+</div>
+<div class="navigation-main" markdown>
+  [Security](tech/security.md){ .md-button }
+</div>
+<div class="navigation-main" markdown>
+  [Report issues](report-issue.md){ .md-button }
+</div>
+</div>
 
-- [Installation Guide](tech/installation.md):
-  Step-by-step instructions for deploying IXP using Docker Compose and Nginx.
-- [Security](tech/security.md):
-  Details on the security measures and practices implemented in the IXP.
-- [API Documentation](tech/api/overview.md):
-  Comprehensive documentation of the APIs provided by IXP, including RESTful APIs.
-- [Architecture Overview](tech/architecture/overview.md):
-  Detailed documentation on the architecture of the IXP, including component definition.
 
-## INJECT Process
+## The Big Picture
 
-Learn about the process of conducting tabletop exercises using the IXP.
+<div class="main_grid-border" markdown>
 
-- [Inject Process](INJECT_process/intro/overview.md):
-  A detailed guide on how to plan, execute, and evaluate tabletop exercises using IXP.
+<div class="main_grid-cads" markdown>
+<div class="grid cards" markdown>
 
-## Additional Resources
+-   ### Technical Documentation
 
-Access supplementary materials and information related to IXP.
+    ---
+    **The technical documentation provides insight into the platform’s architecture, APIs, security features, and installation process.**
+    
+    <br>
+
+    **[Installation Guide ↲](tech/installation.md)**:
+      Step-by-step instructions for deploying IXP using Docker Compose and Nginx.
+    
+    **[Architecture Overview](tech/architecture/overview.md)**:
+      Detailed documentation on the architecture of the IXP, including component definition.  
+    **[Security](tech/security.md)**:
+      Details on the security measures and practices implemented in the IXP.  
+    **[API Documentation](tech/api/overview.md)**:
+      Comprehensive documentation of the APIs provided by IXP, including RESTful APIs.  
+  
+
+-   ### Exercise Preparation Guide
+
+    ---
+    **The INJECT Process provides a clear guide on how to plan, run, and evaluate tabletop exercises using the IXP platform.**
+
+    <br>
+  
+    **[Start Here ↲](INJECT_process/intro/overview.md):**  If you are new to IXP, this is the best place to begin.
+    
+    **[01 Understanding Phase](INJECT_process/understand/overview.md):** 
+    Gather the key information about the exercise’s goals, scope, and resources.
+
+    **[02 Specification Phase](INJECT_process/specify/overview.md):** 
+    Specify the exercise learning objectives, activities and scenario.
+
+    **[03 Preparation Phase](INJECT_process/prepare/overview.md):** 
+    Get IXP content, logistics, and resources ready for the exercise.
+
+    **[04 Execution Phase](INJECT_process/execute/overview.md):** 
+    Run the exercise and manage all activities.
+
+    **[05 Reflection Phase](INJECT_process/reflect/overview.md):** 
+    Review the exercise and identify improvements.
+
+
+-   ### Additional Resources
+
+    ---
+
+    **[Glossary of Terms](glossary-of-terms.md)**: Definitions of key terms and concepts used in the IXP.  
+    **[Report Issue](report-issue.md)**: Instructions for reporting bugs, issues, or providing feedback on the IXP.  
+    **[Known Issues](known-issues.md)**: A list of known issues and how to fix them.  
+    **[Acknowledgements](acknowledgements.md)**: Recognition of individuals or organizations that have contributed to the development or support of the IXP.  
+    **[Authors](authors.md)**: Meet the team behind the development of IXP.
+
+-   ### Get in Touch
+    ---
+    We believe that collaboration helps us learn from one another. If you have questions about IXP or would like to discuss potential collaborations, please feel free to reach out through our website.
+
+    <br>
+
+    <div class="navigation" markdown>
+      [INJECT Website](https://inject.muni.cz){ .md-button }
+    </div>
+
+</div>
+</div>
+</div>
 
-- **[Glossary of Terms](glossary-of-terms.md)**: Definitions of key terms and concepts used in the IXP.
-- **[Report Issue](report-issue.md)**: Instructions for reporting bugs, issues, or providing feedback on the IXP.
-- **[Known Issues](known-issues.md)**: A list of known issues and how to fix them.
-- **[Acknowledgements](acknowledgements.md)**: Recognition of individuals or organizations that have contributed to the development or support of the IXP.
-- **[Authors](authors.md)**: Meet the team behind the development of IXP.
diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css
index b13fe95..64b2cc6 100644
--- a/docs/stylesheets/extra.css
+++ b/docs/stylesheets/extra.css
@@ -198,7 +198,7 @@ tr td {
     color: #ffdd4e;
 }
 
-.NAVIGATION {
+.navigation {
     display: flex;
     justify-content: center;
     align-items: center;
@@ -252,3 +252,127 @@ tr td {
 .no-bcg .md-clipboard {
     color: #ffdd4e;
 }
+
+.main-gridc {
+    margin-top: 50px;
+    display: grid;
+    grid-template-columns: repeat(3, 1fr);
+    grid-template-rows: repeat(2, 1fr);
+    align-items: center;
+}
+
+.navigation-main p {
+    text-align: center;
+}
+
+.navigation-main .md-button {
+    width: 90%;
+    border-radius: 2rem;
+    cursor: pointer;
+    font-size: 24px;
+    text-align: center;
+}
+
+.main_grid-border {
+    margin-top: 50px;
+    border-color: #ffdd4e;
+    border-width: 2px;
+    border-style: solid;
+    border-radius: 1rem;
+    width: 100%;
+    text-align: center;
+}
+
+.main-logo {
+    margin-left: -40px !important;
+}
+
+.main_grid-cads {
+    display: grid;
+    grid-template-columns: 1fr 1fr;
+    grid-template-rows: auto auto;
+    gap: 20px;
+    box-sizing: border-box;
+    padding: 30px;
+}
+
+.main_grid-cads .grid.cards {
+    display: contents;
+}
+
+.main_grid-cads .grid.cards ul {
+    display: contents;
+    list-style: none;
+    margin: 0;
+    padding: 5px;
+}
+
+.main_grid-cads .grid.cards ul li{
+    width: 100%;
+    overflow-wrap: anywhere;
+    border-radius: 1rem;
+    text-align: left !important;
+}
+
+.main_grid-cads .grid.cards ul li:hover{
+    background-color: #121212;
+    border-radius: 1rem;
+}
+
+.main_grid-cads .grid.cards ul li h2,
+.main_grid-cads .grid.cards ul li p,
+.main_grid-cads .grid.cards ul li ul {
+    margin: 0;
+    padding: 0;
+    white-space: normal;
+    word-wrap: break-word !important;
+    overflow-wrap: break-word !important;
+    box-sizing: border-box !important;
+}
+
+.bigger-font-size {
+    font-size: xx-large;
+}
+
+@media (max-width: 1200px) {
+    .main-gridc {
+        display: grid;
+        grid-template-columns: repeat(2, 1fr);
+    }
+
+    .navigation-main .md-button {
+        width: 70%;
+    }
+}
+
+@media (max-width: 768px) {
+    .main_grid-cads {
+        grid-template-columns: 1fr;
+        padding: 15px;
+    }
+
+    .main-gridc {
+        display: grid;
+        grid-template-columns: repeat(1, 1fr);
+    }
+
+    .navigation-main .md-button {
+        width: 60%;
+    }
+    
+    .main_grid-border {
+        padding: 10px;
+    }
+}
+
+@media (max-width: 480px) {
+    .main_grid-cads {
+        grid-template-columns: 1fr;
+        padding: 10px;
+    }
+
+    .main_grid-cads .grid.cards ul li {
+        padding: 10px;
+        font-size: 0.9rem;
+    }
+}
\ No newline at end of file
diff --git a/files-from-repos/intro-definition.zip b/files-from-repos/intro-definition.zip
new file mode 100644
index 0000000000000000000000000000000000000000..2a07576b5608ee52b89633fe497d323c3ce51ad9
GIT binary patch
literal 12204
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
Uus1uMcj3={w{|*%kI<)o0r5Le*#H0l

literal 0
HcmV?d00001

diff --git a/introductory-definition b/introductory-definition
new file mode 160000
index 0000000..2e76a59
--- /dev/null
+++ b/introductory-definition
@@ -0,0 +1 @@
+Subproject commit 2e76a590840b633aa6ffa4b84311667c8b75009c
diff --git a/mkdocs.yml b/mkdocs.yml
index 4c57b3d..8c98a15 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -29,8 +29,8 @@ nav:
     - INJECT Process: INJECT_process/intro/overview.md
     - 01 Understand:
       - Phase overview: INJECT_process/understand/overview.md
-    - 02 Define:
-      - Phase overview: INJECT_process/define/overview.md
+    - 02 Specify:
+      - Phase overview: INJECT_process/specify/overview.md
     - 03 Prepare:
       - Phase overview: INJECT_process/prepare/overview.md
     - 04 Execute:
diff --git a/utilities.sh b/utilities.sh
index b93e4eb..98ddd02 100755
--- a/utilities.sh
+++ b/utilities.sh
@@ -17,3 +17,4 @@ cp ./backend/definitions/CHANGELOG.md ./docs/tech/architecture/definitions/CHANG
 cp ./backend/openapi.yml ./docs/tech/api/openapi.yml
 cp ./frontend/docker/nginx-deployment/README.md ./files-from-repos/nginx-README.md
 cp ./showcase-definition/assets/definition.zip ./files-from-repos/showcase-definition.zip
+cp ./introductory-definition/assets/definition.zip ./files-from-repos/intro-definition.zip
-- 
GitLab