diff --git a/assets/css/theme.css b/assets/css/theme.css
deleted file mode 100644
index e49b5f98a1162dbb5903f6a744bd2202a597a45c..0000000000000000000000000000000000000000
--- a/assets/css/theme.css
+++ /dev/null
@@ -1,24 +0,0 @@
-@charset "UTF-8";
-@import 'variables.css';
-@import 'chatbot.css';
-
-* {
-    box-sizing: border-box;
-}
-
-body {
-    font-family: 'Arial', sans-serif;
-    font-size: 14pt;
-    margin: 0;
-    color: var(--text-font-color);
-    padding: 1rem;
-}
-
-.chatbot {
-    height: 85vh;
-}
-
-.chat {
-    width: 60%;
-    height: 70%;
-}
\ No newline at end of file
diff --git a/assets/js/mockup.js b/assets/js/mockup.js
deleted file mode 100644
index cbbb2f1dfdd71cd81f1b8c8266b01237dd9f902b..0000000000000000000000000000000000000000
--- a/assets/js/mockup.js
+++ /dev/null
@@ -1,274 +0,0 @@
-"use strict"
-
-const api_gateway = 'https://1a64bb2a.eu-de.apigw.appdomain.cloud/api/kodias/dev';
-
-function API(api_gateway, api_key){
-
-    let init_template = {
-        input_type: "text",
-        language: {
-            code: "de",
-            lable: "Deutsch",
-            name: "Deutsch"
-        },
-        session_id: "",
-        customer_key: "HDA_0001",
-
-        api_key: "8D347E8A-30F8-1F3A-ADF9-34AB035A953B",
-    }
-
-    let send_template = {
-        input: "HDA_0001",
-        input_type: "Dies ist ein Echo Test der Api",
-        language: {
-            code: "de",
-            lable: "Deutsch",
-            name: "Deutsch"
-        },
-        session_id: "",
-        customer_key: "YAT",
-        api_key: "8D347E8A-30F8-1F3A-ADF9-34AB035A953B"
-    }
-
-    let session_info = {
-        api_key : api_key,
-        api_gateway : api_gateway,
-        session_id : null,
-
-    }
-
-    let handleFetchErrors = function (response) {
-        if(!response.ok) {throw Error(response.statusText);}
-        return response;
-    };
-
-    let initializeConnection = async () => { //watch out for using 'this' here
-        console.log(init_template);
-        const response = await fetch(`${api_gateway}/init`, {
-            method: 'POST',
-            mode: "cors",
-            cache: 'no-cache',
-            headers: {
-                'Content-Type' : 'application/json; charset=UTF-8',
-                'X-API-Client-Id' : '16147c04-17dc-4241-8bf2-956354c7d043'
-            },
-            body: JSON.stringify(init_template),
-        }).then(handleFetchErrors)
-            .then(response => response.json())
-
-
-        session_info.session_id = response.session_id;
-        console.log(session_info.session_id);
-        return response;
-
-    }
-
-    let sendRequest = async (message) => {
-        send_template.input_type = message;
-
-        const response = await fetch(`${api_gateway}/send`, {
-            method: 'POST',
-            mode: "cors",
-            cache: "no-cache",
-            headers: {
-                'Content-Type' : 'application/json',
-                'X-API-Client-Id' : '16147c04-17dc-4241-8bf2-956354c7d043'
-            },
-            body: JSON.stringify(send_template),
-        }).then(handleFetchErrors)
-            .then(response => response.json())
-
-        return response;
-
-    }
-
-    this.init = () => { //after running init, the api should either be initialized and ready to use, or uninitialized
-
-        let status = initializeConnection()
-            .then(response => console.log(response))
-            .catch(err => {
-                console.log("Error while initializing api object, see below.");
-                console.error(err);
-            });
-
-    }
-
-    this.send = (message) => {
-        let response = sendRequest(message)
-            .then(response => {
-                if(response.items[0].hasOwnProperty("type") && response.items[0].value.hasOwnProperty("text")){
-                    let responseContent = response.items[0].value.text;
-                    newBubble("bot", responseContent);
-                }else{
-                    console.error("Error while parsing message content, unrecognized item type");
-                    newBubble("ERROR: Unrecognized Item Type");
-                }
-            })
-            .catch(err => {
-                console.log("Error while sending request, see below");
-                console.error(err);
-            });
-    }
-
-}
-
-let api = new API(api_gateway, "test");
-
-api.init();
-
-
-function toggleChat(){
-    let chat = document.getElementsByClassName("chat")[0];
-    let bubble = document.getElementsByClassName("chatbot__bubble")[0];
-
-    if(chat.classList.contains("chat--open")) {
-        chat.classList.remove("chat--open");
-        chat.classList.add("chat--closed");
-    } else {
-        chat.classList.remove("chat--closed");
-        chat.classList.add("chat--open");
-    }
-
-    if(bubble.classList.contains("chatbot__bubble--active")){
-        bubble.classList.remove("chatbot__bubble--active");
-        bubble.classList.add("chatbot__bubble--inactive");
-    } else {
-        bubble.classList.remove("chatbot__bubble--inactive");
-        bubble.classList.add("chatbot__bubble--active");        
-    }
-}
-
-function openChat(){
-
-    let chat = document.getElementsByClassName("chat")[0];
-    let bubble = document.getElementsByClassName("chatbot__bubble")[0];
-    bubble.classList.remove("chatbot__bubble--inactive");
-    bubble.classList.add("chatbot__bubble--active");
-    chat.classList.remove("chat--closed");
-    chat.classList.add("chat--open");
-}
-
-function closeChat(){
-
-    let chat = document.getElementsByClassName("chat")[0];
-    let bubble = document.getElementsByClassName("chatbot__bubble")[0];
-    bubble.classList.remove("chatbot__bubble--active");
-    bubble.classList.add("chatbot__bubble--inactive");
-    chat.classList.remove("chat--open");
-    chat.classList.add("chat--closed");
-}
-
-
-function newBubble(author, content){
-    let bubbleContent = document.createElement("p");
-    bubbleContent.appendChild(document.createTextNode(content));
-    let bubble = document.createElement("div");
-    if(author == "user"){
-        bubble.setAttribute("class", "chat__dialogue__question speech-bubble");
-        bubble.setAttribute("style", "background: lightgreen");
-
-    }else if(author == "bot"){
-        bubble.setAttribute("class", "chat__dialogue__answer speech-bubble");
-    }
-    bubble.appendChild(bubbleContent);
-    let chat__dialogue = document.querySelector(".chat__dialogue");
-    chat__dialogue.appendChild(bubble);
-    chat__dialogue.scrollTop = chat__dialogue.scrollHeight;
-}
-
-
-function replyToUser(text){
-  newBubble("bot", text);
-}
-
-
-let activeConversation = false;
-
-window.addEventListener("load", ()=>{
-  let questionField = document.querySelector("#question");
-
-  questionField.addEventListener("focus", ()=>{
-    activeConversation = true;
-  });
-
-  questionField.addEventListener("focusout", ()=>{
-    activeConversation = false;
-  });
-
-  document.addEventListener('keydown', (e)=>{
-    if(e.keyCode == 13 && questionField.value.length >0 && activeConversation){
-      newBubble("user", questionField.value);
-      questionField.value="";
-    }
-  });
-
-  let submitButton = document.querySelector("#submitText");
-  submitButton.addEventListener('click', ()=>{
-    if(questionField.value.length >0){
-      newBubble("user", questionField.value);
-      questionField.value="";
-    }
-  });
-
-
-
-});
-
-function newBubble(author, content){
-    let bubbleContent = document.createElement("p");
-    bubbleContent.appendChild(document.createTextNode(content));
-    let bubble = document.createElement("div");
-    if(author == "user"){
-        bubble.setAttribute("class", "chat__dialogue__question speech-bubble");
-
-    }else if(author == "bot"){
-        bubble.setAttribute("class", "chat__dialogue__answer speech-bubble");
-    }else{
-        throw `newBubble: Author ${author} is an invalid value for author parameter`
-    }
-	bubble.setAttribute("style", "background: #E0F8F7");
-    bubble.appendChild(bubbleContent);
-
-    let chat__dialogue = document.querySelector(".chat__dialogue");
-    chat__dialogue.appendChild(bubble);
-	chat__dialogue.scrollTop = chat__dialogue.scrollHeight;
-}
-
-let questionField = document.querySelector("#question");
-
-  questionField.addEventListener("focus", ()=>{
-    activeConversation = true;
-  });
-
-  questionField.addEventListener("focusout", ()=>{
-    activeConversation = false;
-  });
-
-  document.addEventListener('keydown', (e)=>{
-    if(e.keyCode == 13 && questionField.value.length >0 && activeConversation){
-        api.send(questionField.value.toString());
-        newBubble("user", questionField.value);
-        questionField.value="";
-
-
-
-    }
-  });
-
-  let submitButton = document.querySelector("#submitText");
-  submitButton.addEventListener('click', ()=>{
-    if(questionField.value.length >0){
-        api.send(questionField.value.toString());
-        newBubble("user", questionField.value);
-        questionField.value="";
-    }
-});
-
-window.addEventListener("scroll", () => {
-    /*
-    let elementTarget = document.getElementsByClassName("kimi-section")[0];
-    //console.log(elementTarget.offsetTop + (elementTarget.offsetHeight /);
-    if (window.scrollY > (elementTarget.offsetTop - elementTarget.offsetHeight)) {
-        openChat();
-    }*/
-});
diff --git a/assets/js/mockup.js.orig b/assets/js/mockup.js.orig
deleted file mode 100644
index d55d71207bb8ccc65170f3a7df659b8380aadeba..0000000000000000000000000000000000000000
--- a/assets/js/mockup.js.orig
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-function toggleChat(){
-    let chat = document.getElementsByClassName("chat")[0];
-    let bubble = document.getElementsByClassName("chatbot__bubble")[0];
-
-    if(chat.classList.contains("chat--open")) {
-        chat.classList.remove("chat--open");
-        chat.classList.add("chat--closed");
-    } else {
-        chat.classList.remove("chat--closed");
-        chat.classList.add("chat--open");
-    }
-
-    if(bubble.classList.contains("chatbot__bubble--active")){
-        bubble.classList.remove("chatbot__bubble--active");
-        bubble.classList.add("chatbot__bubble--inactive");
-    } else {
-        bubble.classList.remove("chatbot__bubble--inactive");
-        bubble.classList.add("chatbot__bubble--active");
-    }
-}
-
-function openChat(){
-
-    let chat = document.getElementsByClassName("chat")[0];
-    let bubble = document.getElementsByClassName("chatbot__bubble")[0];
-    bubble.classList.remove("chatbot__bubble--inactive");
-    bubble.classList.add("chatbot__bubble--active");
-    chat.classList.remove("chat--closed");
-    chat.classList.add("chat--open");
-}
-
-function closeChat(){
-
-    let chat = document.getElementsByClassName("chat")[0];
-    let bubble = document.getElementsByClassName("chatbot__bubble")[0];
-    bubble.classList.remove("chatbot__bubble--active");
-    bubble.classList.add("chatbot__bubble--inactive");
-    chat.classList.remove("chat--open");
-    chat.classList.add("chat--closed");
-}
-
-function newBubble(author, content){
-    let bubbleContent = document.createElement("p");
-    bubbleContent.appendChild(document.createTextNode(content));
-    let bubble = document.createElement("div");
-<<<<<<< HEAD
-    if(author == "user"){
-        bubble.setAttribute("class", "chat__dialogue__question speech-bubble");
-        bubble.setAttribute("style", "background: lightgreen");
-
-    }else if(author == "bot"){
-        bubble.setAttribute("class", "chat__dialogue__answer speech-bubble");
-    }
-    bubble.appendChild(bubbleContent);
-    let chat__dialogue = document.querySelector(".chat__dialogue");
-    chat__dialogue.appendChild(bubble);
-    chat__dialogue.scrollTop = chat__dialogue.scrollHeight;
-}
-
-
-function replyToUser(text){
-  newBubble("bot", text);
-}
-
-
-let activeConversation = false;
-
-window.addEventListener("load", ()=>{
-  let questionField = document.querySelector("#question");
-
-  questionField.addEventListener("focus", ()=>{
-    activeConversation = true;
-  });
-
-  questionField.addEventListener("focusout", ()=>{
-    activeConversation = false;
-  });
-
-  document.addEventListener('keydown', (e)=>{
-    if(e.keyCode == 13 && questionField.value.length >0 && activeConversation){
-      newBubble("user", questionField.value);
-      questionField.value="";
-    }
-  });
-
-  let submitButton = document.querySelector("#submitText");
-  submitButton.addEventListener('click', ()=>{
-    if(questionField.value.length >0){
-      newBubble("user", questionField.value);
-      questionField.value="";
-    }
-  });
-
-
-
-});
-=======
-
-    if(author == "user"){
-        bubble.setAttribute("class", "chat__dialogue__question speech-bubble");
-
-    }else if(author == "bot"){
-        bubble.setAttribute("class", "chat__dialogue__answer speech-bubble");
-    }else{
-        throw `newBubble: Author ${author} is an invalid value for author parameter`
-    }
-    bubble.appendChild(bubbleContent);
-
-    let chat__dialogue = document.querySelector(".chat__dialogue");
-    chat__dialogue.appendChild(bubble);
-
-
-}
-
-
-
->>>>>>> 14d0c00a27f28b844712423b668c35b5ac5f7fed
-
-window.addEventListener("scroll", () => {
-    /*
-    let elementTarget = document.getElementsByClassName("kimi-section")[0];
-    //console.log(elementTarget.offsetTop + (elementTarget.offsetHeight /);
-    if (window.scrollY > (elementTarget.offsetTop - elementTarget.offsetHeight)) {
-        openChat();
-    }*/
-});
diff --git a/documentation.md b/documentation.md
new file mode 100644
index 0000000000000000000000000000000000000000..62ce91012232de93180efa92b279651dfcb9d2a4
--- /dev/null
+++ b/documentation.md
@@ -0,0 +1,11 @@
+# Dokumentation
+#### Überarbeitung der landing page:
+
+Bilder suchen + anpassen:
+* Die verschiedenen Bilder getestet und eine passende Farbe ausgewählt.
+* Die Bilder passend zugeschnitten und der Landingpage angepasst.
+Implementation der Animationen (Frag mich section, Chatbubble, wichtige Portale)
+
+Erstellen und Einfügen der FAQ
+
+Einfügen des Responsive Designs (Mobile, Tablet)
diff --git a/index.html b/index.html
deleted file mode 100644
index 66a3dba0ba1e346fd063c45837005fe1579a140a..0000000000000000000000000000000000000000
--- a/index.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link rel="stylesheet" href="assets/css/theme.css">
-    <title>Document</title>
-</head>
-<body>
-    <h1>KIMI the chatbot</h1>
-    <aside class="chatbot">
-        <section class="chat chat--open">
-            <header class="chat__header">
-                <a href="#">gib mir feedback</a>
-                <a href="#" class="chat__header__minimize" onclick="closeChat()">&#x2304;</a>
-            </header>
-            <section class="chat__dialogue">
-                <!--
-                <div class="chat__dialogue__answer speech-bubble speech-bubble--left-top">
-                    <p>Hallo ich bin KIMI :)<br>Wie kann ich dir helfen?</p>
-                </div>
-                <div class="chat__dialogue__question speech-bubble speech-bubble--right-bottom">
-                    <p>Na du bist ja ein Süßer!</p>
-                </div>
-                <div class="chat__dialogue__answer speech-bubble speech-bubble--left-top">
-                    <p>Danke dir :)</p>
-                </div>
-                -->
-            </section>
-            <footer class="chat__footer">
-                <input type="text" class="chat__input" name="question" id="question" >
-                <a class="chat__input__submit" href="#" id="submitText">&#x25B6;</a>
-            </footer>
-        </section>
-        <section class="chatbot__bubble chatbot__bubble--inactive" onclick="toggleChat()">
-        </section>
-    </aside>
-    <script language="javascript" type="text/javascript" src="assets/js/mockup.js"></script>
-</body>
-</html>
diff --git a/landingpage/.gitignore b/landingpage/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..485dee64bcfb48793379b200a1afd14e85a8aaf4
--- /dev/null
+++ b/landingpage/.gitignore
@@ -0,0 +1 @@
+.idea
diff --git a/landingpage/assets/css/animations.css b/landingpage/assets/css/animations.css
new file mode 100644
index 0000000000000000000000000000000000000000..03645573718f929718c8675106aa9018b0e2f62d
--- /dev/null
+++ b/landingpage/assets/css/animations.css
@@ -0,0 +1,20 @@
+@-moz-keyframes spin { 50% { -moz-transform: rotate(5deg); } }
+@-webkit-keyframes spin { 50% { -webkit-transform: rotate(5deg); } }
+@keyframes spin { 50% { -webkit-transform: rotate(5deg); transform:rotate(5deg); } }
+
+
+@keyframes blinkingButton{
+  0% {transform: scale(.5)}
+    50% {transform: scale(1.4)}
+      100% {transform: scale(1.4); opacity: 0;}
+}
+
+@keyframes example {
+  0%   {box-shadow: 0;}
+  25%  {box-shadow: 0px 0px 10px #fff;}
+  100% {box-shadow: 0; }
+}
+
+.kimi-teaser__input > input[type="text"]{
+  animation: example 4s infinite;
+}
diff --git a/assets/css/chatbot.css b/landingpage/assets/css/chatbot.css
similarity index 83%
rename from assets/css/chatbot.css
rename to landingpage/assets/css/chatbot.css
index 3d765ff166ffd86e1497384594a744f816ab3c62..0887bbe88f7eed9859df7c12f6777d9def519d18 100644
--- a/assets/css/chatbot.css
+++ b/landingpage/assets/css/chatbot.css
@@ -56,7 +56,6 @@
     position: sticky;
     bottom: 3rem;
     right: 3rem;
-    margin-bottom: 3rem;
     margin-left: auto;
     margin-right: 3rem;
 }
@@ -134,7 +133,7 @@
     padding: 0 1em 0 1em !important;
 }
 
-.chat__dialogue__answer {    
+.chat__dialogue__answer {
     float: left;
     clear: left;
     color: var(--answer-text-color);
@@ -176,27 +175,53 @@
     position: absolute;
     right: 0;
     bottom: 50px;
-    width: var(--chatbot-bubble-size);
     height: var(--chatbot-bubble-size);
+    width: var(--chatbot-bubble-size);
+    max-width: var(--chatbot-bubble-size);
+    max-height: var(--chatbot-bubble-size);
 }
 
-.chatbot__bubble:hover {
+.chatbot__bubble:hover, .chatbot_button {
     cursor: pointer;
 }
 
-.chatbot__bubble--active {
+
+.chatbot_button{
+	position: absolute; z-index: 10;
+	width: 3.5em;
+	height: 3.5em;
+}
+
+
+.chatbot__bubble--active, .chatbot_button--active {
     background-image: url("../images/kimi/bubble_active.png");
     background-size: contain;
 }
 
-.chatbot__bubble--inactive {
+.blinkerButton{
+  width: 3em; position: absolute;height: 3em; opacity: .5; left: 0.25em; top: .25em;
+  animation: blinkingButton 2s infinite;
+}
+
+#chatbutton_holder{
+  position: relative;
+  width: 3.5em;
+  height: 3.5em;
+  -webkit-animation:spin 3s linear infinite;
+  -moz-animation:spin 3s linear infinite;
+  animation:spin 3s linear infinite;
+}
+
+.chatbot__bubble--inactive, .chatbot_button--inactive {
     background-image: url("../images/kimi/bubble_inactive.png");
     background-size: contain;
     background-repeat: no-repeat;
+		transition: .25s ease-in-out;
+
 }
 
-.chatbot__bubble--inactive:hover {
+.chatbot__bubble--inactive:hover, .chatbot_button--inactive:hover {
     background-image: url("../images/kimi/bubble_active.png");
     background-size: contain;
     background-repeat: no-repeat;
-}
\ No newline at end of file
+}
diff --git a/landingpage/assets/css/faq.css b/landingpage/assets/css/faq.css
new file mode 100644
index 0000000000000000000000000000000000000000..7a8986bf35c70cf3149c4ef662aaaaa6d861e115
--- /dev/null
+++ b/landingpage/assets/css/faq.css
@@ -0,0 +1,98 @@
+@charset "UTF-8";
+
+
+
+.plus-button{
+    font-size:0.8em;
+    display:inline-block;
+    background-color: lightseagreen;
+    border-radius: .3em;
+    border-top-left-radius: 1.1em;
+    border-bottom-right-radius: 1.1em;
+    width: 2em;
+    height: 2em;
+    border: none;
+    color: white;
+    font-weight: bold;
+    outline:none;
+    margin-left: 1rem;
+    margin-right:1.5rem;
+    align-self:center;
+    content: "a";
+}
+.plus-button:hover{
+    transition: 0.3s;
+    transform: scale(1.1);
+    cursor: pointer;
+}
+.question h2{
+    text-align: left;
+    text-align-last: left;
+    margin-left: 1.5rem;
+    margin-right:auto;
+    padding-top:1rem;
+    padding-bottom: 1rem;
+    font-size:1.5rem;
+    color:black;
+    white-space: normal;
+}
+
+.question h2:hover{
+    transition: 0.3s;
+    color: black;
+    transform: scale(1.03);
+    cursor: pointer;
+}
+
+.question-answer-block{
+    display:inline-block;
+    width: 100%;
+    text-align: center;
+    }
+
+div .question{
+    display: flex;
+    justify-content: center;
+    flex:none;
+    white-space: nowrap;
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+
+}
+.answer{
+    font-size: 1.2rem;
+    display: none;
+    font-family: Arial, Helvetica, sans-serif;
+    text-align: center;
+    color:black;
+    padding-top:0px;
+    padding-bottom: 0px;
+    background-color: #E0F8F7;
+    border-left:20px solid #E0F8F7;
+    border-right:20px solid #E0F8F7;
+    border-radius: 10px;
+    margin-left: 1.5rem;
+    margin-right: 1.5rem;
+    line-height: 1.7;
+    font-weight: normal;
+    box-shadow: 0px 0px 15px #E0F8F7, 0px 0px 10px #E0F8F7, 0px 0px 5px #E0F8F7;
+    
+}
+
+@media (min-width: 767px) and (max-width: 1920px) {
+  .question h2 {
+     font-size: 2rem;
+      text-align: center;
+      text-align-last: center;
+  }
+    div .question{
+    display: block;
+    text-align: center;
+
+}
+    .answer{
+        max-width: 75%;
+    }
+    .plus-button{
+        margin-left: 1rem;}
+}
diff --git a/landingpage/assets/css/flickity.css b/landingpage/assets/css/flickity.css
new file mode 100644
index 0000000000000000000000000000000000000000..7a947f837092c01e448a92fda9389a9f0c7c716f
--- /dev/null
+++ b/landingpage/assets/css/flickity.css
@@ -0,0 +1,137 @@
+/*! Flickity v2.2.1
+https://flickity.metafizzy.co
+---------------------------------------------- */
+
+.flickity-enabled {
+  position: relative;
+}
+
+.flickity-enabled:focus { outline: none; }
+
+.flickity-viewport {
+  overflow: hidden;
+  position: relative;
+  height: 100%;
+}
+
+.flickity-slider {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+}
+
+/* draggable */
+
+.flickity-enabled.is-draggable {
+  -webkit-tap-highlight-color: transparent;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.flickity-enabled.is-draggable .flickity-viewport {
+  cursor: move;
+  cursor: -webkit-grab;
+  cursor: grab;
+}
+
+.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down {
+  cursor: -webkit-grabbing;
+  cursor: grabbing;
+}
+
+/* ---- flickity-button ---- */
+
+.flickity-button {
+  position: absolute;
+  background: hsla(0, 0%, 100%, 0.75);
+  border: none;
+  color: #333;
+}
+
+.flickity-button:hover {
+  background: white;
+  cursor: pointer;
+}
+
+.flickity-button:focus {
+  outline: none;
+  box-shadow: 0 0 0 5px #19F;
+}
+
+.flickity-button:active {
+  opacity: 0.6;
+}
+
+.flickity-button:disabled {
+  opacity: 0.3;
+  cursor: auto;
+  /* prevent disabled button from capturing pointer up event. #716 */
+  pointer-events: none;
+}
+
+.flickity-button-icon {
+  fill: currentColor;
+}
+
+/* ---- previous/next buttons ---- */
+
+.flickity-prev-next-button {
+  top: 50%;
+  width: 44px;
+  height: 44px;
+  border-radius: 50%;
+  /* vertically center */
+  transform: translateY(-50%);
+}
+
+.flickity-prev-next-button.previous { left: 10px; }
+.flickity-prev-next-button.next { right: 10px; }
+/* right to left */
+.flickity-rtl .flickity-prev-next-button.previous {
+  left: auto;
+  right: 10px;
+}
+.flickity-rtl .flickity-prev-next-button.next {
+  right: auto;
+  left: 10px;
+}
+
+.flickity-prev-next-button .flickity-button-icon {
+  position: absolute;
+  left: 20%;
+  top: 20%;
+  width: 60%;
+  height: 60%;
+}
+
+/* ---- page dots ---- */
+
+.flickity-page-dots {
+  position: absolute;
+  width: 100%;
+  bottom: -25px;
+  padding: 0;
+  margin: 0;
+  list-style: none;
+  text-align: center;
+  line-height: 1;
+}
+
+.flickity-rtl .flickity-page-dots { direction: rtl; }
+
+.flickity-page-dots .dot {
+  display: inline-block;
+  width: 10px;
+  height: 10px;
+  margin: 0 8px;
+  background: #333;
+  border-radius: 50%;
+  opacity: 0.25;
+  cursor: pointer;
+}
+
+.flickity-page-dots .dot.is-selected {
+  opacity: 1;
+}
diff --git a/landingpage/assets/css/icons.css b/landingpage/assets/css/icons.css
new file mode 100644
index 0000000000000000000000000000000000000000..10970b439111ad0498e92c909da88cdffe89eb7b
--- /dev/null
+++ b/landingpage/assets/css/icons.css
@@ -0,0 +1,980 @@
+@charset "UTF-8";
+
+/*
+ * Icons are taken for the awesome handdrawn.css library from https://github.com/fxaeberhard/handdrawn.css.
+ * Library is published under CC0. See https://fxaeberhard.github.io/handdrawn.css/ for usage
+ *
+*/
+
+@font-face {
+    font-family: "icons";
+    src: url("../fonts/icons.eot");
+    src: url("../fonts/icons.eot?#iefix") format("eot"), url("../fonts/icons.woff") format("woff"), url("../fonts/icons.ttf") format("truetype");
+  }
+
+  i {
+    font-size: 2.5em;
+  }
+  
+  .icon-anchor:before, .icon-android:before, .icon-apple:before, .icon-archive:before, .icon-arrow-alt:before, .icon-arrow-down:before, .icon-arrow-left:before, .icon-arrow-right:before, .icon-arrow-up:before, .icon-balance-scale:before, .icon-ban:before, .icon-bar-chart:before, .icon-barcode:before, .icon-bars:before, .icon-battery-empty:before, .icon-battery-full:before, .icon-battery-half:before, .icon-battery-quarter:before, .icon-beer:before, .icon-behance:before, .icon-bell:before, .icon-bicycle:before, .icon-birthday-cake:before, .icon-bolt:before, .icon-bomb:before, .icon-book:before, .icon-bookmark-o:before, .icon-briefcase:before, .icon-bug:before, .icon-bullseye:before, .icon-calculator:before, .icon-calendar:before, .icon-caret-down:before, .icon-caret-left:before, .icon-caret-square-o-down:before, .icon-caret-square-o-left:before, .icon-caret-square-o-right:before, .icon-caret-square-o-up:before, .icon-caret-up:before, .icon-check:before, .icon-chevron-down:before, .icon-chevron-left:before, .icon-chevron-right:before, .icon-chevron-up:before, .icon-circle-o:before, .icon-clipboard:before, .icon-clone:before, .icon-cloud-remove:before, .icon-cloud-sync:before, .icon-cloud-upload:before, .icon-cloud:before, .icon-code-fork:before, .icon-code:before, .icon-coffee:before, .icon-cog:before, .icon-cogs:before, .icon-comment:before, .icon-comments:before, .icon-compass:before, .icon-compress:before, .icon-cutlery:before, .icon-dashboard:before, .icon-database:before, .icon-delicious:before, .icon-desktop:before, .icon-download:before, .icon-dribble:before, .icon-edit:before, .icon-eject:before, .icon-envelope:before, .icon-euro:before, .icon-exchange:before, .icon-expand:before, .icon-eye:before, .icon-eyedropper:before, .icon-facebook:before, .icon-female:before, .icon-file-ai-o:before, .icon-file-archive-o:before, .icon-file-css-o:before, .icon-file-doc-o:before, .icon-file-eps-o:before, .icon-file-gif-o:before, .icon-file-html-o:before, .icon-file-jpg-o:before, .icon-file-js-o:before, .icon-file-minus:before, .icon-file-o:before, .icon-file-pdf-o:before, .icon-file-php-o:before, .icon-file-png-o:before, .icon-file-psd-o:before, .icon-file-text-o:before, .icon-file-xls-o:before, .icon-files-o:before, .icon-film:before, .icon-filter:before, .icon-fire:before, .icon-flag:before, .icon-flask:before, .icon-floppy-o:before, .icon-folder-lock:before, .icon-folder-minus:before, .icon-folder-plus:before, .icon-folder-remove:before, .icon-font:before, .icon-frown-o:before, .icon-futbol-o:before, .icon-gamepad:before, .icon-gem:before, .icon-github:before, .icon-glass:before, .icon-globe:before, .icon-google-plus:before, .icon-graduation-cap:before, .icon-hdd-o:before, .icon-headphones:before, .icon-heart:before, .icon-home:before, .icon-hourglass-half:before, .icon-industry:before, .icon-info-circle-o:before, .icon-info-circle:before, .icon-instagram:before, .icon-jpy:before, .icon-key:before, .icon-keyboard:before, .icon-leaf:before, .icon-life-ring:before, .icon-lightbulb-o:before, .icon-line-chart:before, .icon-link:before, .icon-linkedin:before, .icon-list:before, .icon-location-arrow:before, .icon-lock:before, .icon-magic:before, .icon-magnet:before, .icon-male:before, .icon-map-marker:before, .icon-map-o:before, .icon-map-signs:before, .icon-map:before, .icon-mars:before, .icon-microphone:before, .icon-minus-circle:before, .icon-minus-square-o:before, .icon-minus:before, .icon-money:before, .icon-moon-o:before, .icon-music:before, .icon-paint-brush:before, .icon-paper-plane:before, .icon-paragraph:before, .icon-pause:before, .icon-pencil-22:before, .icon-pencil-square-o:before, .icon-pencil:before, .icon-phone:before, .icon-picture-o:before, .icon-pie-chart:before, .icon-pinterest:before, .icon-play:before, .icon-plus-circle-o:before, .icon-plus-square-o:before, .icon-plus:before, .icon-power-off:before, .icon-question-circle:before, .icon-question:before, .icon-quote-right:before, .icon-random:before, .icon-refresh:before, .icon-repeat:before, .icon-rss:before, .icon-scissors:before, .icon-search-minus:before, .icon-search-plus:before, .icon-search:before, .icon-share-alt:before, .icon-shopping-bag:before, .icon-shopping-cart:before, .icon-sign-in:before, .icon-sign-out:before, .icon-sitemap:before, .icon-skype:before, .icon-sliders:before, .icon-smile-o:before, .icon-sort:before, .icon-space-shuttle:before, .icon-square-o:before, .icon-star-half:before, .icon-star-o:before, .icon-step-backward:before, .icon-step-forward:before, .icon-suitcase:before, .icon-sun-o:before, .icon-tag:before, .icon-television:before, .icon-terminal:before, .icon-th-large:before, .icon-th:before, .icon-thumb-down:before, .icon-thumb-tack:before, .icon-thumbs-o-up:before, .icon-ticket:before, .icon-times-circle:before, .icon-times-square:before, .icon-times:before, .icon-tint:before, .icon-trash:before, .icon-tree:before, .icon-trophy:before, .icon-truck:before, .icon-twitter:before, .icon-umbrella:before, .icon-undo:before, .icon-unlock:before, .icon-usb:before, .icon-usd:before, .icon-user-minus:before, .icon-user-plus:before, .icon-user-star:before, .icon-user:before, .icon-users:before, .icon-venus:before, .icon-video-camera:before, .icon-vimeo:before, .icon-volume-diabled:before, .icon-volume-down-2:before, .icon-volume-down:before, .icon-volume-off:before, .icon-volume-up:before, .icon-warning:before, .icon-weather:before, .icon-webcam:before, .icon-wifi:before, .icon-windows:before, .icon-wrench:before {
+    font-family: "icons";
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+    font-style: normal;
+    font-variant: normal;
+    font-weight: normal;
+    text-decoration: none;
+    text-transform: none;
+  }
+  
+  .icon-anchor:before {
+    content: "";
+  }
+  
+  .icon-android:before {
+    content: "";
+  }
+  
+  .icon-apple:before {
+    content: "";
+  }
+  
+  .icon-archive:before {
+    content: "";
+  }
+  
+  .icon-arrow-alt:before {
+    content: "";
+  }
+  
+  .icon-arrow-down:before {
+    content: "";
+  }
+  
+  .icon-arrow-left:before {
+    content: "";
+  }
+  
+  .icon-arrow-right:before {
+    content: "";
+  }
+  
+  .icon-arrow-up:before {
+    content: "";
+  }
+  
+  .icon-balance-scale:before {
+    content: "";
+  }
+  
+  .icon-ban:before {
+    content: "";
+  }
+  
+  .icon-bar-chart:before {
+    content: "";
+  }
+  
+  .icon-barcode:before {
+    content: "";
+  }
+  
+  .icon-bars:before {
+    content: "";
+  }
+  
+  .icon-battery-empty:before {
+    content: "";
+  }
+  
+  .icon-battery-full:before {
+    content: "";
+  }
+  
+  .icon-battery-half:before {
+    content: "";
+  }
+  
+  .icon-battery-quarter:before {
+    content: "";
+  }
+  
+  .icon-beer:before {
+    content: "";
+  }
+  
+  .icon-behance:before {
+    content: "";
+  }
+  
+  .icon-bell:before {
+    content: "";
+  }
+  
+  .icon-bicycle:before {
+    content: "";
+  }
+  
+  .icon-birthday-cake:before {
+    content: "";
+  }
+  
+  .icon-bolt:before {
+    content: "";
+  }
+  
+  .icon-bomb:before {
+    content: "";
+  }
+  
+  .icon-book:before {
+    content: "";
+  }
+  
+  .icon-bookmark-o:before {
+    content: "";
+  }
+  
+  .icon-briefcase:before {
+    content: "";
+  }
+  
+  .icon-bug:before {
+    content: "";
+  }
+  
+  .icon-bullseye:before {
+    content: "";
+  }
+  
+  .icon-calculator:before {
+    content: "";
+  }
+  
+  .icon-calendar:before {
+    content: "";
+  }
+  
+  .icon-caret-down:before {
+    content: "";
+  }
+  
+  .icon-caret-left:before {
+    content: "";
+  }
+  
+  .icon-caret-square-o-down:before {
+    content: "";
+  }
+  
+  .icon-caret-square-o-left:before {
+    content: "";
+  }
+  
+  .icon-caret-square-o-right:before {
+    content: "";
+  }
+  
+  .icon-caret-square-o-up:before {
+    content: "";
+  }
+  
+  .icon-caret-up:before {
+    content: "";
+  }
+  
+  .icon-check:before {
+    content: "";
+  }
+  
+  .icon-chevron-down:before {
+    content: "";
+  }
+  
+  .icon-chevron-left:before {
+    content: "";
+  }
+  
+  .icon-chevron-right:before {
+    content: "";
+  }
+  
+  .icon-chevron-up:before {
+    content: "";
+  }
+  
+  .icon-circle-o:before {
+    content: "";
+  }
+  
+  .icon-clipboard:before {
+    content: "";
+  }
+  
+  .icon-clone:before {
+    content: "";
+  }
+  
+  .icon-cloud-remove:before {
+    content: "";
+  }
+  
+  .icon-cloud-sync:before {
+    content: "";
+  }
+  
+  .icon-cloud-upload:before {
+    content: "";
+  }
+  
+  .icon-cloud:before {
+    content: "";
+  }
+  
+  .icon-code-fork:before {
+    content: "";
+  }
+  
+  .icon-code:before {
+    content: "";
+  }
+  
+  .icon-coffee:before {
+    content: "";
+  }
+  
+  .icon-cog:before {
+    content: "";
+  }
+  
+  .icon-cogs:before {
+    content: "";
+  }
+  
+  .icon-comment:before {
+    content: "";
+  }
+  
+  .icon-comments:before {
+    content: "";
+  }
+  
+  .icon-compass:before {
+    content: "";
+  }
+  
+  .icon-compress:before {
+    content: "";
+  }
+  
+  .icon-cutlery:before {
+    content: "";
+  }
+  
+  .icon-dashboard:before {
+    content: "";
+  }
+  
+  .icon-database:before {
+    content: "";
+  }
+  
+  .icon-delicious:before {
+    content: "";
+  }
+  
+  .icon-desktop:before {
+    content: "";
+  }
+  
+  .icon-download:before {
+    content: "";
+  }
+  
+  .icon-dribble:before {
+    content: "";
+  }
+  
+  .icon-edit:before {
+    content: "";
+  }
+  
+  .icon-eject:before {
+    content: "";
+  }
+  
+  .icon-envelope:before {
+    content: "";
+  }
+  
+  .icon-euro:before {
+    content: "";
+  }
+  
+  .icon-exchange:before {
+    content: "";
+  }
+  
+  .icon-expand:before {
+    content: "";
+  }
+  
+  .icon-eye:before {
+    content: "";
+  }
+  
+  .icon-eyedropper:before {
+    content: "";
+  }
+  
+  .icon-facebook:before {
+    content: "";
+  }
+  
+  .icon-female:before {
+    content: "";
+  }
+  
+  .icon-file-ai-o:before {
+    content: "";
+  }
+  
+  .icon-file-archive-o:before {
+    content: "";
+  }
+  
+  .icon-file-css-o:before {
+    content: "";
+  }
+  
+  .icon-file-doc-o:before {
+    content: "";
+  }
+  
+  .icon-file-eps-o:before {
+    content: "";
+  }
+  
+  .icon-file-gif-o:before {
+    content: "";
+  }
+  
+  .icon-file-html-o:before {
+    content: "";
+  }
+  
+  .icon-file-jpg-o:before {
+    content: "";
+  }
+  
+  .icon-file-js-o:before {
+    content: "";
+  }
+  
+  .icon-file-minus:before {
+    content: "";
+  }
+  
+  .icon-file-o:before {
+    content: "";
+  }
+  
+  .icon-file-pdf-o:before {
+    content: "";
+  }
+  
+  .icon-file-php-o:before {
+    content: "";
+  }
+  
+  .icon-file-png-o:before {
+    content: "";
+  }
+  
+  .icon-file-psd-o:before {
+    content: "";
+  }
+  
+  .icon-file-text-o:before {
+    content: "";
+  }
+  
+  .icon-file-xls-o:before {
+    content: "";
+  }
+  
+  .icon-files-o:before {
+    content: "";
+  }
+  
+  .icon-film:before {
+    content: "";
+  }
+  
+  .icon-filter:before {
+    content: "";
+  }
+  
+  .icon-fire:before {
+    content: "";
+  }
+  
+  .icon-flag:before {
+    content: "";
+  }
+  
+  .icon-flask:before {
+    content: "";
+  }
+  
+  .icon-floppy-o:before {
+    content: "";
+  }
+  
+  .icon-folder-lock:before {
+    content: "";
+  }
+  
+  .icon-folder-minus:before {
+    content: "";
+  }
+  
+  .icon-folder-plus:before {
+    content: "";
+  }
+  
+  .icon-folder-remove:before {
+    content: "";
+  }
+  
+  .icon-font:before {
+    content: "";
+  }
+  
+  .icon-frown-o:before {
+    content: "";
+  }
+  
+  .icon-futbol-o:before {
+    content: "";
+  }
+  
+  .icon-gamepad:before {
+    content: "";
+  }
+  
+  .icon-gem:before {
+    content: "";
+  }
+  
+  .icon-github:before {
+    content: "";
+  }
+  
+  .icon-glass:before {
+    content: "";
+  }
+  
+  .icon-globe:before {
+    content: "";
+  }
+  
+  .icon-google-plus:before {
+    content: "";
+  }
+  
+  .icon-graduation-cap:before {
+    content: "";
+  }
+  
+  .icon-hdd-o:before {
+    content: "";
+  }
+  
+  .icon-headphones:before {
+    content: "";
+  }
+  
+  .icon-heart:before {
+    content: "";
+  }
+  
+  .icon-home:before {
+    content: "";
+  }
+  
+  .icon-hourglass-half:before {
+    content: "";
+  }
+  
+  .icon-industry:before {
+    content: "";
+  }
+  
+  .icon-info-circle-o:before {
+    content: "";
+  }
+  
+  .icon-info-circle:before {
+    content: "";
+  }
+  
+  .icon-instagram:before {
+    content: "";
+  }
+  
+  .icon-jpy:before {
+    content: "";
+  }
+  
+  .icon-key:before {
+    content: "";
+  }
+  
+  .icon-keyboard:before {
+    content: "";
+  }
+  
+  .icon-leaf:before {
+    content: "";
+  }
+  
+  .icon-life-ring:before {
+    content: "";
+  }
+  
+  .icon-lightbulb-o:before {
+    content: "";
+  }
+  
+  .icon-line-chart:before {
+    content: "";
+  }
+  
+  .icon-link:before {
+    content: "";
+  }
+  
+  .icon-linkedin:before {
+    content: "";
+  }
+  
+  .icon-list:before {
+    content: "";
+  }
+  
+  .icon-location-arrow:before {
+    content: "";
+  }
+  
+  .icon-lock:before {
+    content: "";
+  }
+  
+  .icon-magic:before {
+    content: "";
+  }
+  
+  .icon-magnet:before {
+    content: "";
+  }
+  
+  .icon-male:before {
+    content: "";
+  }
+  
+  .icon-map-marker:before {
+    content: "";
+  }
+  
+  .icon-map-o:before {
+    content: "";
+  }
+  
+  .icon-map-signs:before {
+    content: "";
+  }
+  
+  .icon-map:before {
+    content: "";
+  }
+  
+  .icon-mars:before {
+    content: "";
+  }
+  
+  .icon-microphone:before {
+    content: "";
+  }
+  
+  .icon-minus-circle:before {
+    content: "";
+  }
+  
+  .icon-minus-square-o:before {
+    content: "";
+  }
+  
+  .icon-minus:before {
+    content: "";
+  }
+  
+  .icon-money:before {
+    content: "";
+  }
+  
+  .icon-moon-o:before {
+    content: "";
+  }
+  
+  .icon-music:before {
+    content: "";
+  }
+  
+  .icon-paint-brush:before {
+    content: "";
+  }
+  
+  .icon-paper-plane:before {
+    content: "";
+  }
+  
+  .icon-paragraph:before {
+    content: "";
+  }
+  
+  .icon-pause:before {
+    content: "";
+  }
+  
+  .icon-pencil-22:before {
+    content: "";
+  }
+  
+  .icon-pencil-square-o:before {
+    content: "";
+  }
+  
+  .icon-pencil:before {
+    content: "";
+  }
+  
+  .icon-phone:before {
+    content: "";
+  }
+  
+  .icon-picture-o:before {
+    content: "";
+  }
+  
+  .icon-pie-chart:before {
+    content: "";
+  }
+  
+  .icon-pinterest:before {
+    content: "";
+  }
+  
+  .icon-play:before {
+    content: "";
+  }
+  
+  .icon-plus-circle-o:before {
+    content: "";
+  }
+  
+  .icon-plus-square-o:before {
+    content: "";
+  }
+  
+  .icon-plus:before {
+    content: "";
+  }
+  
+  .icon-power-off:before {
+    content: "";
+  }
+  
+  .icon-question-circle:before {
+    content: "";
+  }
+  
+  .icon-question:before {
+    content: "";
+  }
+  
+  .icon-quote-right:before {
+    content: "";
+  }
+  
+  .icon-random:before {
+    content: "";
+  }
+  
+  .icon-refresh:before {
+    content: "";
+  }
+  
+  .icon-repeat:before {
+    content: "";
+  }
+  
+  .icon-rss:before {
+    content: "";
+  }
+  
+  .icon-scissors:before {
+    content: "";
+  }
+  
+  .icon-search-minus:before {
+    content: "";
+  }
+  
+  .icon-search-plus:before {
+    content: "";
+  }
+  
+  .icon-search:before {
+    content: "";
+  }
+  
+  .icon-share-alt:before {
+    content: "";
+  }
+  
+  .icon-shopping-bag:before {
+    content: "";
+  }
+  
+  .icon-shopping-cart:before {
+    content: "";
+  }
+  
+  .icon-sign-in:before {
+    content: "";
+  }
+  
+  .icon-sign-out:before {
+    content: "";
+  }
+  
+  .icon-sitemap:before {
+    content: "";
+  }
+  
+  .icon-skype:before {
+    content: "";
+  }
+  
+  .icon-sliders:before {
+    content: "";
+  }
+  
+  .icon-smile-o:before {
+    content: "";
+  }
+  
+  .icon-sort:before {
+    content: "";
+  }
+  
+  .icon-space-shuttle:before {
+    content: "";
+  }
+  
+  .icon-square-o:before {
+    content: "";
+  }
+  
+  .icon-star-half:before {
+    content: "";
+  }
+  
+  .icon-star-o:before {
+    content: "";
+  }
+  
+  .icon-step-backward:before {
+    content: "";
+  }
+  
+  .icon-step-forward:before {
+    content: "";
+  }
+  
+  .icon-suitcase:before {
+    content: "";
+  }
+  
+  .icon-sun-o:before {
+    content: "";
+  }
+  
+  .icon-tag:before {
+    content: "";
+  }
+  
+  .icon-television:before {
+    content: "";
+  }
+  
+  .icon-terminal:before {
+    content: "";
+  }
+  
+  .icon-th-large:before {
+    content: "";
+  }
+  
+  .icon-th:before {
+    content: "";
+  }
+  
+  .icon-thumb-down:before {
+    content: "";
+  }
+  
+  .icon-thumb-tack:before {
+    content: "";
+  }
+  
+  .icon-thumbs-o-up:before {
+    content: "";
+  }
+  
+  .icon-ticket:before {
+    content: "";
+  }
+  
+  .icon-times-circle:before {
+    content: "";
+  }
+  
+  .icon-times-square:before {
+    content: "";
+  }
+  
+  .icon-times:before {
+    content: "";
+  }
+  
+  .icon-tint:before {
+    content: "";
+  }
+  
+  .icon-trash:before {
+    content: "";
+  }
+  
+  .icon-tree:before {
+    content: "";
+  }
+  
+  .icon-trophy:before {
+    content: "";
+  }
+  
+  .icon-truck:before {
+    content: "";
+  }
+  
+  .icon-twitter:before {
+    content: "";
+  }
+  
+  .icon-umbrella:before {
+    content: "";
+  }
+  
+  .icon-undo:before {
+    content: "";
+  }
+  
+  .icon-unlock:before {
+    content: "";
+  }
+  
+  .icon-usb:before {
+    content: "";
+  }
+  
+  .icon-usd:before {
+    content: "";
+  }
+  
+  .icon-user-minus:before {
+    content: "";
+  }
+  
+  .icon-user-plus:before {
+    content: "";
+  }
+  
+  .icon-user-star:before {
+    content: "";
+  }
+  
+  .icon-user:before {
+    content: "";
+  }
+  
+  .icon-users:before {
+    content: "";
+  }
+  
+  .icon-venus:before {
+    content: "";
+  }
+  
+  .icon-video-camera:before {
+    content: "";
+  }
+  
+  .icon-vimeo:before {
+    content: "";
+  }
+  
+  .icon-volume-diabled:before {
+    content: "";
+  }
+  
+  .icon-volume-down-2:before {
+    content: "";
+  }
+  
+  .icon-volume-down:before {
+    content: "";
+  }
+  
+  .icon-volume-off:before {
+    content: "";
+  }
+  
+  .icon-volume-up:before {
+    content: "";
+  }
+  
+  .icon-warning:before {
+    content: "";
+  }
+  
+  .icon-weather:before {
+    content: "";
+  }
+  
+  .icon-webcam:before {
+    content: "";
+  }
+  
+  .icon-wifi:before {
+    content: "";
+  }
+  
+  .icon-windows:before {
+    content: "";
+  }
+  
+  .icon-wrench:before {
+    content: "";
+  }
\ No newline at end of file
diff --git a/landingpage/assets/css/main.css b/landingpage/assets/css/main.css
new file mode 100644
index 0000000000000000000000000000000000000000..30971b59919da4c011089007a7369c526f743fc0
--- /dev/null
+++ b/landingpage/assets/css/main.css
@@ -0,0 +1,8 @@
+@charset "UTF-8";
+@import "variables.css";
+@import "icons.css";
+@import "chatbot.css";
+@import "theme.css";
+@import "responsive.css";
+@import "animations.css";
+@import "faq.css";
\ No newline at end of file
diff --git a/landingpage/assets/css/responsive.css b/landingpage/assets/css/responsive.css
new file mode 100644
index 0000000000000000000000000000000000000000..4d3c399c03734a0e9808ad082dcd8ef7f3e93388
--- /dev/null
+++ b/landingpage/assets/css/responsive.css
@@ -0,0 +1,330 @@
+/* mobile */
+@media(max-width: 767px){
+
+    body {
+
+    }
+
+    h1 {
+        font-size: 2rem;
+        margin: 1rem 0;
+        text-align: center;
+
+    }
+
+    h2 {
+        font-size: 2rem;
+
+    }
+
+    .container {
+        width: 100%;
+        margin: 0;
+    }
+
+    .section {
+        margin: 0;
+    }
+
+    .section--kimi > .container > p {
+        text-align: center;
+    }
+
+    hr {
+        width: 100%;
+    }
+
+    .main-nav {
+        padding: 1rem 0;
+        height: 10rem;
+        margin-bottom: 1rem;
+    }
+
+    .main-nav__languages {
+        margin: 0;
+    }
+
+    .container > * {
+        width: 100%;
+        margin: 0 !important;
+    }
+
+    .info-article--video {
+        margin: 1rem 0 !important;
+    }
+
+    .main-nav > .container > * {
+        width: auto;
+    }
+
+    .main-header {
+        height: calc(100vh + var(--header-waves-height));
+    }
+
+    .main-header__heading {
+        padding: 2rem 0 2rem 0;
+    }
+
+    .kimi-teaser__input {
+        display: none;
+    }
+
+    .section--links .container {
+        padding-bottom: 2rem;
+    }
+
+    /* links */
+    .links:after {
+        content: 'flickity';
+        display: none;
+    }
+
+    .link {
+        text-align: center;
+        width: 100%;
+        margin: 1em;
+    }
+
+    .gallery-cell {
+        width: 100%;
+    }
+
+    .link__thumbnail {
+        display: inline-block;
+        height: 6em;
+        opacity: .8;
+    }
+
+    /* chatbot */
+    .chatbot {
+        position: fixed;
+        margin: 0;
+        padding: 1rem;
+        bottom: 0;
+        right: 0;
+        width: 100%;
+    }
+
+    .chatbot__bubble {
+        width: 20vw;
+        height: 20vw;
+        margin: 1rem;
+        bottom: 0;
+    }
+
+    .chat__footer {
+        padding:.5rem;
+    }
+
+    .chat__header {
+        padding: 1rem;
+    }
+
+    .chat__input {
+        display: inline-block;
+        flex: 1;
+        min-width: 10px;
+    }
+
+    .chat__dialogue {
+        padding: 0 .5rem;
+    }
+
+    .chat {
+        position: relative;
+        border-radius: .5rem;
+        padding: 0;
+        font-size: 10pt;
+        height: calc(100vh - 2rem);
+        right: 0;
+        margin: 0;
+        width: 100%;
+        min-width: 100%;
+        z-index: 1000;
+    }
+
+    .chat__dialogue__question, .chat__dialogue__answer {
+        padding: .5 em;
+    }
+
+    .chat::before {
+        display:none;
+    }
+
+    /* kimi-faq questions */
+    .kimi-faq__questions {
+        width: 100%;
+        padding: 0;
+    }
+
+    .kimi-faq__question {
+        padding: .8rem;
+    }
+
+    .kimi-faq__avatar {
+        width: 30%;
+        display: block;
+        margin-left: auto;
+        margin-right: auto;
+        float: none;
+        padding: 0;
+    }
+
+    .footer-item{
+        width: 100%;
+        padding: 0;
+        display: block;
+    }
+    
+    .footer-item__links{
+        padding: 0;
+    }
+}
+
+/* tablet */
+@media (min-width: 767px) and (max-width: 1279px) {
+
+    h1 {
+        font-size: 2.5rem;
+        margin: 1rem 0;
+        text-align: center;
+
+    }
+
+    h2 {
+        font-size: 2.5rem;
+
+    }
+
+    .section {
+        padding: 1rem;
+    }
+
+    .container {
+        width: 100%;
+    }
+
+    .main-nav {
+        padding: 1rem;
+        height: 8rem;
+    }
+
+    .info-article {
+        margin: 1rem !important;
+    }
+
+    .main-header__teaser {
+        font-size: 10pt;
+    }
+
+    .kimi-teaser__input {
+        padding: 0;
+    }
+
+    .kimi-teaser__input > input[type="text"] {
+        font-size: 1em;
+        padding: .5em;
+    }
+
+
+    .link {
+        padding: 1rem 0;
+    }
+
+    /* kimi-faq questions */
+    .kimi-faq{
+        width: 70%;
+        margin-left: auto;
+        margin-right: auto;
+        padding: 0 1rem;
+    }
+
+    .kimi-faq__questions {
+        width: 70%;
+        padding: .8rem;
+        padding-left: 3rem;
+    }
+
+    .kimi-faq__question {
+        padding: .8rem;
+    }
+
+    .kimi-faq__avatar {
+        width: 30%;
+        display: block;
+        margin: auto;
+        margin-top: 2rem;
+        float: left;
+        padding: 0;
+    }
+
+    /* chatbot */
+    .chatbot {
+        position: fixed;
+        display: flex;
+        flex-direction: row;
+        justify-content: flex-end;
+        align-items: flex-end;
+        margin: 0;
+        bottom: 0;
+        padding: 1rem;
+        right: 0;
+        width: 100%;
+    }
+
+    .chatbot__bubble {
+        position: static;
+        width: 20vw;
+        height: 20vw;
+        margin: 1rem;
+        bottom: 0;
+        right: 0;
+    }
+
+    .chat__footer {
+        padding: .5rem;
+    }
+
+    .chat__header {
+        padding: 1rem;
+    }
+
+    .chat__input {
+        display: inline-block;
+        flex: 1;
+        min-width: 10px;
+    }
+
+    .chat__dialogue {
+        padding: 0 .5rem;
+    }
+
+    .chat {
+        position: static;
+        flex: auto;
+        margin: 0;
+        left: 0;
+        bottom: 0;
+        height: calc(100vh - 2rem);
+        max-height: 800px;
+    }
+    /*
+    .chat {
+        position: relative;
+        border-radius: .5rem;
+        padding: 0;
+        font-size: 10pt;
+        height: calc(100vh - 2rem);
+        margin: 0;
+        width: 100%;
+        min-width: 100%;
+        z-index: 1000;
+        right: 3em;
+    }*/
+    
+    .chat::before {
+        display:none;
+    }
+
+
+}
\ No newline at end of file
diff --git a/landingpage/assets/css/theme.css b/landingpage/assets/css/theme.css
new file mode 100644
index 0000000000000000000000000000000000000000..9171527a9d090c0d4e74c670e28335f8e6961faf
--- /dev/null
+++ b/landingpage/assets/css/theme.css
@@ -0,0 +1,495 @@
+@charset "UTF-8";
+@import 'variables.css';
+
+* {
+    box-sizing: border-box;
+}
+
+html {
+    height: 100%;
+}
+
+body {
+    height: 100%;
+    font-family: 'Roboto', sans-serif;
+    font-size: 14pt;
+    margin: 0;
+    color: var(--text-font-color);
+
+}
+
+h1,h2,h3,h4,h5,h6 {
+    color: var(--heading-font-color);
+}
+
+h1 {
+    font-family: 'Robot', sans-serif;
+    font-size: 3rem;
+}
+
+h2 {
+    font-family: 'Indie Flower', cursive;
+    font-size: 3.5rem;
+    margin: 0 0 2rem 0;
+}
+
+h3 {
+    font-family: 'Robot', sans-serif;
+    font-size: 3rem;
+    margin: 0 0 1rem 0;
+}
+
+p {
+    overflow-wrap: break-word;
+}
+
+hr {
+    width: var(--container-width);
+    margin-left: auto;
+    margin-right: auto;
+}
+
+a, a:visited {
+    color: var(--text-font-color);
+    text-decoration: none;
+}
+
+a:active, a:hover {
+    color: var(--primary-color);
+}
+
+.section{
+    padding: var(--section-top-bottom-padding) 0;
+}
+
+.section:nth-of-type(even) {
+    background: var(--section-secondary-bg-color);
+}
+
+.section h2 {
+    text-align: center;
+}
+
+.container {
+    width: var(--container-width);
+    margin: auto;
+    padding: 1em;
+    overflow: hidden;
+}
+
+.container--flex {
+    display: flex;
+    flex-direction: row;
+    flex-wrap: wrap;
+    align-items: center;
+}
+
+.container--flex--space {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+}
+
+.highlighted {
+    border:solid 5px var(--primary-color);
+    border-top-left-radius: 255px 15px;
+    border-top-right-radius: 15px 225px;
+    border-bottom-right-radius: 225px 15px;
+    border-bottom-left-radius:15px 255px;
+    box-shadow:2px 8px 4px -6px rgb(0,0,0,.1);
+}
+
+.highlighted--thin {
+    border:solid 3px var(--primary-color);
+}
+
+/* Header */
+.main-header {
+    position: relative;
+    background-color: rgb(147, 204, 222);
+    background-image: url("../images/d14.png");
+    background-repeat: no-repeat;
+    background-size: cover;
+    display: flex;
+    flex-direction: column;
+    background-position: 0% 50%; 
+}
+
+.main-header h1 {
+    color: white;
+    text-shadow: -1px 0 var(--text-font-color), 0 1px var(--text-font-color), 1px 0 var(--text-font-color), 0 -1px var(--text-font-color);
+}
+
+.main-header a {
+    color:white;
+}
+
+.main-header a:active, .main-header a:hover {
+    color: var(--primary-color);
+}
+
+.main-nav {
+    width: 100%;
+    height: 14rem;
+    padding: 2rem 3rem;
+    margin-bottom: 1rem;
+}
+
+.main-nav .container {
+    height: 100%;
+}
+
+.brand {
+    position: relative;
+    height: 100%;
+    width: auto;
+    display: inline-block;
+
+}
+
+.main-nav__languages {
+    display: block;
+    float: right;
+    list-style: none;
+    font-size: 1rem;
+    text-decoration: none;
+}
+
+.main-nav__languages > li {
+    display: inline-block;
+    padding: 0;
+    margin: 0;
+}
+
+.main-nav__languages > li::after {
+    content: "|";
+    display: inline-block;
+    padding: 0 .5rem;
+}
+
+.main-nav__languages > li:last-of-type::after {
+    content: "";
+    display: inline-block;
+    padding: 0;
+}
+
+.main-header__heading {
+    height: auto;
+    width: 50%;
+    padding-right: 3em;
+    margin-top: 1em;
+    align-self: flex-start;
+}
+
+.main-header__heading > h1 {
+    
+    margin-top:-1.5rem;
+    margin-bottom: 1rem;
+    color: white;
+    text-shadow: -1.5px 0 1.5px var(--text-font-color),
+    -1.5px -1.5px 1.5px  var(--text-font-color),
+    -1.5px 1.5px 1.5px var(--text-font-color),
+
+    1.5px 0 1.5px var(--text-font-color),
+    1.5px -1.5px 1.5px  var(--text-font-color),
+    1.5px 1.5px 2px var(--text-font-color);
+}
+
+.main-header__heading > img {
+    margin-left: -1rem;
+}
+
+.main-header__teaser {
+    width: 50%;
+    height: auto;
+    text-align: right;
+}
+
+.section--teaser {
+    padding:0;
+    flex: auto;
+}
+
+.section--teaser .container {
+    padding: 0 1rem;
+}
+
+.section--links .container{
+    width:100%;
+}
+
+.kimi-teaser{
+    padding: 0;
+}
+
+.kimi-teaser__image {
+    display: block;
+    max-width: 24%;
+    height: auto;
+    margin-left: auto;
+    margin-right: auto;
+    margin-bottom: 1rem;
+}
+
+.kimi-teaser__input{
+    width: 100%;
+    padding: .5rem;
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+}
+
+
+
+.kimi-teaser__input > input[type="text"]{
+    background: white;
+    flex: auto;
+    margin-right: .5rem;
+    padding:1rem 1rem;
+    color:var(--text-font-color);
+    text-decoration: none;
+    font-size:1rem;
+    letter-spacing:1px;
+    outline:none;
+    opacity: .88;
+    border:solid 2px var(--text-font-color);
+    box-shadow:2px 8px 4px -6px rgb(0,0,0,.2);
+    border-top-left-radius: 255px 15px;
+    border-top-right-radius: 15px 225px;
+    border-bottom-right-radius: 225px 15px;
+    border-bottom-left-radius:15px 255px;
+    transition: .5s ease-in-out;
+}
+
+.kimi-teaser__input > input[type="text"]::placeholder{
+    color: var(--text-font-color);
+    opacity: .6;
+}
+
+.kimi-teaser__input > input[type="text"]:hover {
+    cursor: pointer;
+    border-color: var(--primary-color);
+}
+
+.kimi-teaser__input > input[type="text"]:focus {
+    border-color: var(--primary-color);
+    opacity: 1.0;
+    cursor: text;
+}
+
+.main-header__footer {
+    overflow: hidden;
+    height: var(--header-waves-height);
+    width: 100%;
+    margin-bottom: -1px; /* ipad gap hack */
+}
+
+.main-header__footer__waves {
+    height: 100%;
+    width: 100%;
+}
+
+/* main */
+/* info section */
+.section--introduction {
+}
+
+.section--introduction .container > h2 {
+    display: none;
+}
+
+.info-article {
+    padding: 1em;
+    display: inline-block;
+    align-self: center;
+    min-width: 25%;
+    margin: 0 0 2rem 0;
+}
+
+.info-article:nth-of-type(5n), .info-article:first-of-type {
+    margin-right: 6rem;
+}
+
+.info-article:nth-of-type(4n) {
+    margin-left: 6rem;
+}
+
+.info-article--text {
+    width: 50%;
+    text-align: justify;
+}
+
+.info-article h2 {
+    text-align: left;
+}
+
+.info-article--video {
+    flex: auto;
+}
+
+.info-article__media {
+    position: relative;
+    height: auto;
+    padding-top: 0;
+    overflow: hidden;
+    padding-bottom: 56.25%;
+}
+
+.info-article__media--youtube  {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+}
+
+/* links */
+.section--links {
+    
+}
+
+.links {
+    list-style: none;
+    text-align: center;
+}
+
+/* hide flickity on desktop */
+.links:after {
+    content: '';
+    display: none;
+}
+
+.link {
+    display: inline-block;
+}
+
+.link__thumbnail {
+    height: 5em;
+    margin-left: 1.5em;
+    margin-right: 1.5em;
+    opacity: .8;
+    transform: scale(.9);
+    transition: .5s ease;
+}
+
+.link__thumbnail:hover{
+    cursor: pointer;
+    transform: scale(1.0);
+    opacity: 1.0;
+    transition: .5s ease;
+}
+
+/* FAQ */
+.section--faq {
+
+}
+
+
+/* kimi */
+.section--kimi {
+
+}
+
+.kimi-faq {
+    width: 60%;
+}
+
+.kimi-faq__questions {
+    display: inline-block;
+    padding: 1em;
+    padding-left: 3em;
+    width: 60%;
+}
+
+.kimi-faq__question {
+    margin-bottom: 2em;
+}
+
+.kimi-faq__question:hover {
+    background-color: var(--primary-color);
+    background-image: linear-gradient(to top, var(--bubble-primary-color), var(--bubble-secondary-color));
+    color: white;
+    cursor: pointer;
+    transform: scale(1.05);
+    transition: .25s linear;
+
+}
+
+.kimi-faq__question:hover::before {
+	content: '';
+	position: absolute;
+	width: 0;
+	height: 0;
+	top: 100%;
+    left: 1.5em;
+	border: .75rem solid transparent;
+	border-bottom: none;
+	border-top-color: var(--bubble-primary-color);
+	filter: drop-shadow(0.1rem 0.0625rem 0.0525rem rgba(0, 0, 0, 0.3));
+
+}
+
+.kimi-faq__avatar {
+    width: 40%;
+    height: auto;
+    float: left;
+    padding: 1em;
+}
+
+.kimi-faq__description {
+    clear: both;
+}
+
+/* footer */
+.main-footer {
+    width: 100%;
+    background-color: var(--main-footer-bg-color);
+}
+
+.main-footer {
+    color: lightgrey !important;
+}
+
+.footer-item {
+    color: lightgrey;
+    padding: 2em;
+}
+
+.main-footer h3 {
+    color: lightgrey;
+}
+
+.footer-item__links {
+    list-style: none;
+}
+
+.main-footer a {
+    color: lightgrey;
+}
+
+.question-answer-block{
+    width:75%;
+    margin: auto;
+}
+.plus-button{
+    margin-left: 1.5em;
+    display: inline-block;
+    background-color: transparent;
+    vertical-align:middle;
+    border-radius: 50%;
+
+}
+.question h2{
+    display: inline-block;
+    text-align: center;
+    margin: 0;
+    vertical-align: middle;
+}
+.answer{
+    display: block;
+    font-weight: bold;
+    text-align: center;
+    color:black;
+    padding-top:20px;
+    padding-bottom: 30px;
+}
diff --git a/assets/css/variables.css b/landingpage/assets/css/variables.css
similarity index 70%
rename from assets/css/variables.css
rename to landingpage/assets/css/variables.css
index 4517e75644d29ea5c6e9fbbc7e7f1c27f72f3092..4ad66c7f7d05b63ca50a3fa62b77bb15941e58ac 100644
--- a/assets/css/variables.css
+++ b/landingpage/assets/css/variables.css
@@ -5,16 +5,21 @@
     --text-font-color: #717171;
     --heading-font-color: #282828;
     --primary-color: #f0570a;
-    --section-bg-color: white;
-    --section-top-bottom-margin: 4rem;
+    --bubble-secondary-color: #f0570a;
+    --bubble-primary-color: #ffa77a;
     --main-footer-bg-color: #343a40;
     --container-width: 1280px;
     --speech-bubble-bg-color: white;
-    --section-padding: 2em;
     --chatbot-bubble-size: 100px;
     --chatbot-window-bg-color: lightgrey;
     --answer-bg-color: white;
     --question-bg-color: white;
     --question-text-color: black;
     --answer-text-color: black;
-}
\ No newline at end of file
+
+    --section-top-bottom-padding: 3rem;
+    --section-bg-color: white;
+    --section-secondary-bg-color: #E0F8F7;
+
+    --header-waves-height: 110px;
+}
diff --git a/landingpage/assets/csv/faq.csv b/landingpage/assets/csv/faq.csv
new file mode 100644
index 0000000000000000000000000000000000000000..016263868d026f297deb60cd4ce1f9be740db884
--- /dev/null
+++ b/landingpage/assets/csv/faq.csv
@@ -0,0 +1,5 @@
+Wie lange dauert das Studium?#Die Regelstudienzeit für den Studiengang Informatik, Kommunikation und Medien in der Informatik ist 6 Semestern.;
+In Welcher Sprache wird unterrichtet?#Alle Modulen des Studiengangs sind auf Deutsch. Einzelne Module werden auch in englischer Sprache angeboten.;
+Wo finden die Vorlesungen statt?#Die meisten Module des Studiengangs finden auf dem Hauptcampus Darmstadt statt. Einige Wahlpflichtmodule werden in Dieburg angeboten.;
+Gibt es einen Numerus Clausus?#Der Studiengang Informatik, Kommunikation und Medien in der Informatik ist NC-freier Studiengang, es besteht Keine Zulassungsbeschränkung.;
+Wo kann ich mich bewerben?#Persönlich beim Student Service Center Schöfferstraße 3 (Besuchsadresse) oder per Post an: Haardtring 100 (Postadresse) 64295 Darmstadt
\ No newline at end of file
diff --git a/landingpage/assets/fonts/LICENSE b/landingpage/assets/fonts/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..670154e3538863b2d9891fd5483160fbdfc89164
--- /dev/null
+++ b/landingpage/assets/fonts/LICENSE
@@ -0,0 +1,116 @@
+CC0 1.0 Universal
+
+Statement of Purpose
+
+The laws of most jurisdictions throughout the world automatically confer
+exclusive Copyright and Related Rights (defined below) upon the creator and
+subsequent owner(s) (each and all, an "owner") of an original work of
+authorship and/or a database (each, a "Work").
+
+Certain owners wish to permanently relinquish those rights to a Work for the
+purpose of contributing to a commons of creative, cultural and scientific
+works ("Commons") that the public can reliably and without fear of later
+claims of infringement build upon, modify, incorporate in other works, reuse
+and redistribute as freely as possible in any form whatsoever and for any
+purposes, including without limitation commercial purposes. These owners may
+contribute to the Commons to promote the ideal of a free culture and the
+further production of creative, cultural and scientific works, or to gain
+reputation or greater distribution for their Work in part through the use and
+efforts of others.
+
+For these and/or other purposes and motivations, and without any expectation
+of additional consideration or compensation, the person associating CC0 with a
+Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
+and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
+and publicly distribute the Work under its terms, with knowledge of his or her
+Copyright and Related Rights in the Work and the meaning and intended legal
+effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be
+protected by copyright and related or neighboring rights ("Copyright and
+Related Rights"). Copyright and Related Rights include, but are not limited
+to, the following:
+
+  i. the right to reproduce, adapt, distribute, perform, display, communicate,
+  and translate a Work;
+
+  ii. moral rights retained by the original author(s) and/or performer(s);
+
+  iii. publicity and privacy rights pertaining to a person's image or likeness
+  depicted in a Work;
+
+  iv. rights protecting against unfair competition in regards to a Work,
+  subject to the limitations in paragraph 4(a), below;
+
+  v. rights protecting the extraction, dissemination, use and reuse of data in
+  a Work;
+
+  vi. database rights (such as those arising under Directive 96/9/EC of the
+  European Parliament and of the Council of 11 March 1996 on the legal
+  protection of databases, and under any national implementation thereof,
+  including any amended or successor version of such directive); and
+
+  vii. other similar, equivalent or corresponding rights throughout the world
+  based on applicable law or treaty, and any national implementations thereof.
+
+2. Waiver. To the greatest extent permitted by, but not in contravention of,
+applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
+unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
+and Related Rights and associated claims and causes of action, whether now
+known or unknown (including existing as well as future claims and causes of
+action), in the Work (i) in all territories worldwide, (ii) for the maximum
+duration provided by applicable law or treaty (including future time
+extensions), (iii) in any current or future medium and for any number of
+copies, and (iv) for any purpose whatsoever, including without limitation
+commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
+the Waiver for the benefit of each member of the public at large and to the
+detriment of Affirmer's heirs and successors, fully intending that such Waiver
+shall not be subject to revocation, rescission, cancellation, termination, or
+any other legal or equitable action to disrupt the quiet enjoyment of the Work
+by the public as contemplated by Affirmer's express Statement of Purpose.
+
+3. Public License Fallback. Should any part of the Waiver for any reason be
+judged legally invalid or ineffective under applicable law, then the Waiver
+shall be preserved to the maximum extent permitted taking into account
+Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
+is so judged Affirmer hereby grants to each affected person a royalty-free,
+non transferable, non sublicensable, non exclusive, irrevocable and
+unconditional license to exercise Affirmer's Copyright and Related Rights in
+the Work (i) in all territories worldwide, (ii) for the maximum duration
+provided by applicable law or treaty (including future time extensions), (iii)
+in any current or future medium and for any number of copies, and (iv) for any
+purpose whatsoever, including without limitation commercial, advertising or
+promotional purposes (the "License"). The License shall be deemed effective as
+of the date CC0 was applied by Affirmer to the Work. Should any part of the
+License for any reason be judged legally invalid or ineffective under
+applicable law, such partial invalidity or ineffectiveness shall not
+invalidate the remainder of the License, and in such case Affirmer hereby
+affirms that he or she will not (i) exercise any of his or her remaining
+Copyright and Related Rights in the Work or (ii) assert any associated claims
+and causes of action with respect to the Work, in either case contrary to
+Affirmer's express Statement of Purpose.
+
+4. Limitations and Disclaimers.
+
+  a. No trademark or patent rights held by Affirmer are waived, abandoned,
+  surrendered, licensed or otherwise affected by this document.
+
+  b. Affirmer offers the Work as-is and makes no representations or warranties
+  of any kind concerning the Work, express, implied, statutory or otherwise,
+  including without limitation warranties of title, merchantability, fitness
+  for a particular purpose, non infringement, or the absence of latent or
+  other defects, accuracy, or the present or absence of errors, whether or not
+  discoverable, all to the greatest extent permissible under applicable law.
+
+  c. Affirmer disclaims responsibility for clearing rights of other persons
+  that may apply to the Work or any use thereof, including without limitation
+  any person's Copyright and Related Rights in the Work. Further, Affirmer
+  disclaims responsibility for obtaining any necessary consents, permissions
+  or other rights required for any use of the Work.
+
+  d. Affirmer understands and acknowledges that Creative Commons is not a
+  party to this document and has no duty or obligation with respect to this
+  CC0 or use of the Work.
+
+For more information, please see
+<http://creativecommons.org/publicdomain/zero/1.0/>
diff --git a/landingpage/assets/fonts/README b/landingpage/assets/fonts/README
new file mode 100644
index 0000000000000000000000000000000000000000..0fa5cdfbf4bfc034684dd57efcf2fea518a2fcd4
--- /dev/null
+++ b/landingpage/assets/fonts/README
@@ -0,0 +1,2 @@
+The icons are taken from https://github.com/fxaeberhard/handdrawn.css.
+Thanks to Francois-Xavier Aeberhard for putting the fonts under CC0 1.0 Universal license. License file is copied from original project repo.
diff --git a/landingpage/assets/fonts/icons.eot b/landingpage/assets/fonts/icons.eot
new file mode 100644
index 0000000000000000000000000000000000000000..462498b217d638f18b241136668c4eed9159145b
Binary files /dev/null and b/landingpage/assets/fonts/icons.eot differ
diff --git a/landingpage/assets/fonts/icons.ttf b/landingpage/assets/fonts/icons.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..e3cbd996f37270b1e33618a6fa4bf26056375b0e
Binary files /dev/null and b/landingpage/assets/fonts/icons.ttf differ
diff --git a/landingpage/assets/fonts/icons.woff b/landingpage/assets/fonts/icons.woff
new file mode 100644
index 0000000000000000000000000000000000000000..455230a49167db30761721400fd3062da03b3cf3
Binary files /dev/null and b/landingpage/assets/fonts/icons.woff differ
diff --git a/landingpage/assets/images/GitLab_Logo.svg.png b/landingpage/assets/images/GitLab_Logo.svg.png
new file mode 100644
index 0000000000000000000000000000000000000000..15a128e5694896d4890f4a8acd8cc2e88c853062
Binary files /dev/null and b/landingpage/assets/images/GitLab_Logo.svg.png differ
diff --git a/landingpage/assets/images/d14.png b/landingpage/assets/images/d14.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5c6db4770cd05ae425115aeb76f36ede718f2f0
Binary files /dev/null and b/landingpage/assets/images/d14.png differ
diff --git a/landingpage/assets/images/dc.png b/landingpage/assets/images/dc.png
new file mode 100644
index 0000000000000000000000000000000000000000..acec4f3662dd4a5bf7a4c029ebf317ba68b76747
Binary files /dev/null and b/landingpage/assets/images/dc.png differ
diff --git a/landingpage/assets/images/fbiLogo.png b/landingpage/assets/images/fbiLogo.png
new file mode 100644
index 0000000000000000000000000000000000000000..11fb916654a2a63ba6987622ca25a0b2b0c1417f
Binary files /dev/null and b/landingpage/assets/images/fbiLogo.png differ
diff --git a/landingpage/assets/images/hda-logo.png b/landingpage/assets/images/hda-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..444262ea2d9f4db54e93708d0a56658cc20107cc
Binary files /dev/null and b/landingpage/assets/images/hda-logo.png differ
diff --git a/landingpage/assets/images/head-accent.png b/landingpage/assets/images/head-accent.png
new file mode 100644
index 0000000000000000000000000000000000000000..a76ed301d765695f753a192b5d6a25981ae2fac1
Binary files /dev/null and b/landingpage/assets/images/head-accent.png differ
diff --git a/landingpage/assets/images/head-accent2.png b/landingpage/assets/images/head-accent2.png
new file mode 100644
index 0000000000000000000000000000000000000000..e0bff8656dae96edd78cc98c8915276e0573f127
Binary files /dev/null and b/landingpage/assets/images/head-accent2.png differ
diff --git a/landingpage/assets/images/header-bg.png b/landingpage/assets/images/header-bg.png
new file mode 100644
index 0000000000000000000000000000000000000000..de0964086e990a6762a40ea577f1eb645cdac43f
Binary files /dev/null and b/landingpage/assets/images/header-bg.png differ
diff --git a/assets/images/kimi/bubble_active.png b/landingpage/assets/images/kimi/bubble_active.png
similarity index 100%
rename from assets/images/kimi/bubble_active.png
rename to landingpage/assets/images/kimi/bubble_active.png
diff --git a/assets/images/kimi/bubble_inactive.png b/landingpage/assets/images/kimi/bubble_inactive.png
similarity index 100%
rename from assets/images/kimi/bubble_inactive.png
rename to landingpage/assets/images/kimi/bubble_inactive.png
diff --git a/landingpage/assets/images/kimi/confused.png b/landingpage/assets/images/kimi/confused.png
new file mode 100644
index 0000000000000000000000000000000000000000..90be8c8f4b8168682379ae118f3863cd90e043ff
Binary files /dev/null and b/landingpage/assets/images/kimi/confused.png differ
diff --git a/landingpage/assets/images/kimi/curious.png b/landingpage/assets/images/kimi/curious.png
new file mode 100644
index 0000000000000000000000000000000000000000..1914d378297b67ea9334a063d842a1d6e85b31a2
Binary files /dev/null and b/landingpage/assets/images/kimi/curious.png differ
diff --git a/landingpage/assets/images/kimi/friendly.png b/landingpage/assets/images/kimi/friendly.png
new file mode 100644
index 0000000000000000000000000000000000000000..399c9a3e90e51ab5d9104b1b5b3be03ddf924a93
Binary files /dev/null and b/landingpage/assets/images/kimi/friendly.png differ
diff --git a/landingpage/assets/images/kimi/glad.png b/landingpage/assets/images/kimi/glad.png
new file mode 100644
index 0000000000000000000000000000000000000000..9829b803d573e5e07e0d5418090b9748dc144470
Binary files /dev/null and b/landingpage/assets/images/kimi/glad.png differ
diff --git a/landingpage/assets/images/kimi/happy.png b/landingpage/assets/images/kimi/happy.png
new file mode 100644
index 0000000000000000000000000000000000000000..36fb035bc5a78da9c9a6232b5b6f38c43349ac30
Binary files /dev/null and b/landingpage/assets/images/kimi/happy.png differ
diff --git a/landingpage/assets/images/kimi/sad.png b/landingpage/assets/images/kimi/sad.png
new file mode 100644
index 0000000000000000000000000000000000000000..11fc5c46118f0b239e70fb05903114fe9b04e504
Binary files /dev/null and b/landingpage/assets/images/kimi/sad.png differ
diff --git a/landingpage/assets/images/kimi/winking.png b/landingpage/assets/images/kimi/winking.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae22b12279b008a6b1c5dc25752b7e6a650014a5
Binary files /dev/null and b/landingpage/assets/images/kimi/winking.png differ
diff --git a/landingpage/assets/images/moodleLogo.png b/landingpage/assets/images/moodleLogo.png
new file mode 100644
index 0000000000000000000000000000000000000000..04e561a1a808cfe9177bcdfad2dde33547e035e9
Binary files /dev/null and b/landingpage/assets/images/moodleLogo.png differ
diff --git a/landingpage/assets/images/obs_standart.png b/landingpage/assets/images/obs_standart.png
new file mode 100644
index 0000000000000000000000000000000000000000..e18eb0b32e02f1c8f8ee0a6eb530c9d9a0374ba2
Binary files /dev/null and b/landingpage/assets/images/obs_standart.png differ
diff --git a/landingpage/assets/images/placeholder.png b/landingpage/assets/images/placeholder.png
new file mode 100644
index 0000000000000000000000000000000000000000..53ae29217e5347a6106d2078cff3783ed3872a68
Binary files /dev/null and b/landingpage/assets/images/placeholder.png differ
diff --git a/landingpage/assets/images/qis_standart.png b/landingpage/assets/images/qis_standart.png
new file mode 100644
index 0000000000000000000000000000000000000000..b3dc783a2dd8b86982879fd5d396a53f92157149
Binary files /dev/null and b/landingpage/assets/images/qis_standart.png differ
diff --git a/landingpage/assets/images/roundcube.png b/landingpage/assets/images/roundcube.png
new file mode 100644
index 0000000000000000000000000000000000000000..7b5540996b0c72637a7ccb2f82eb00faaeea132f
Binary files /dev/null and b/landingpage/assets/images/roundcube.png differ
diff --git a/landingpage/assets/js/flickity.pkgd.min.js b/landingpage/assets/js/flickity.pkgd.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..4a42c10f072cc2bbbc22ae6ff8ec3deef87c9233
--- /dev/null
+++ b/landingpage/assets/js/flickity.pkgd.min.js
@@ -0,0 +1,12 @@
+/*!
+ * Flickity PACKAGED v2.2.1
+ * Touch, responsive, flickable carousels
+ *
+ * Licensed GPLv3 for open source use
+ * or Flickity Commercial License for commercial use
+ *
+ * https://flickity.metafizzy.co
+ * Copyright 2015-2019 Metafizzy
+ */
+
+!function(e,i){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(t){return i(e,t)}):"object"==typeof module&&module.exports?module.exports=i(e,require("jquery")):e.jQueryBridget=i(e,e.jQuery)}(window,function(t,e){"use strict";var i=Array.prototype.slice,n=t.console,d=void 0===n?function(){}:function(t){n.error(t)};function s(h,s,c){(c=c||e||t.jQuery)&&(s.prototype.option||(s.prototype.option=function(t){c.isPlainObject(t)&&(this.options=c.extend(!0,this.options,t))}),c.fn[h]=function(t){return"string"==typeof t?function(t,o,r){var a,l="$()."+h+'("'+o+'")';return t.each(function(t,e){var i=c.data(e,h);if(i){var n=i[o];if(n&&"_"!=o.charAt(0)){var s=n.apply(i,r);a=void 0===a?s:a}else d(l+" is not a valid method")}else d(h+" not initialized. Cannot call methods, i.e. "+l)}),void 0!==a?a:t}(this,t,i.call(arguments,1)):(function(t,n){t.each(function(t,e){var i=c.data(e,h);i?(i.option(n),i._init()):(i=new s(e,n),c.data(e,h,i))})}(this,t),this)},o(c))}function o(t){!t||t&&t.bridget||(t.bridget=s)}return o(e||t.jQuery),s}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{};return(i[t]=i[t]||{})[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var n=this._onceEvents&&this._onceEvents[t],s=0;s<i.length;s++){var o=i[s];n&&n[o]&&(this.off(t,o),delete n[o]),o.apply(this,e)}return this}},e.allOff=function(){delete this._events,delete this._onceEvents},t}),function(t,e){"function"==typeof define&&define.amd?define("get-size/get-size",e):"object"==typeof module&&module.exports?module.exports=e():t.getSize=e()}(window,function(){"use strict";function m(t){var e=parseFloat(t);return-1==t.indexOf("%")&&!isNaN(e)&&e}var i="undefined"==typeof console?function(){}:function(t){console.error(t)},y=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],b=y.length;function E(t){var e=getComputedStyle(t);return e||i("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),e}var S,C=!1;function x(t){if(function(){if(!C){C=!0;var t=document.createElement("div");t.style.width="200px",t.style.padding="1px 2px 3px 4px",t.style.borderStyle="solid",t.style.borderWidth="1px 2px 3px 4px",t.style.boxSizing="border-box";var e=document.body||document.documentElement;e.appendChild(t);var i=E(t);S=200==Math.round(m(i.width)),x.isBoxSizeOuter=S,e.removeChild(t)}}(),"string"==typeof t&&(t=document.querySelector(t)),t&&"object"==typeof t&&t.nodeType){var e=E(t);if("none"==e.display)return function(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0;e<b;e++){t[y[e]]=0}return t}();var i={};i.width=t.offsetWidth,i.height=t.offsetHeight;for(var n=i.isBorderBox="border-box"==e.boxSizing,s=0;s<b;s++){var o=y[s],r=e[o],a=parseFloat(r);i[o]=isNaN(a)?0:a}var l=i.paddingLeft+i.paddingRight,h=i.paddingTop+i.paddingBottom,c=i.marginLeft+i.marginRight,d=i.marginTop+i.marginBottom,u=i.borderLeftWidth+i.borderRightWidth,f=i.borderTopWidth+i.borderBottomWidth,p=n&&S,g=m(e.width);!1!==g&&(i.width=g+(p?0:l+u));var v=m(e.height);return!1!==v&&(i.height=v+(p?0:h+f)),i.innerWidth=i.width-(l+u),i.innerHeight=i.height-(h+f),i.outerWidth=i.width+c,i.outerHeight=i.height+d,i}}return x}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("desandro-matches-selector/matches-selector",e):"object"==typeof module&&module.exports?module.exports=e():t.matchesSelector=e()}(window,function(){"use strict";var i=function(){var t=window.Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0;i<e.length;i++){var n=e[i]+"MatchesSelector";if(t[n])return n}}();return function(t,e){return t[i](e)}}),function(e,i){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["desandro-matches-selector/matches-selector"],function(t){return i(e,t)}):"object"==typeof module&&module.exports?module.exports=i(e,require("desandro-matches-selector")):e.fizzyUIUtils=i(e,e.matchesSelector)}(window,function(h,o){var c={extend:function(t,e){for(var i in e)t[i]=e[i];return t},modulo:function(t,e){return(t%e+e)%e}},e=Array.prototype.slice;c.makeArray=function(t){return Array.isArray(t)?t:null==t?[]:"object"==typeof t&&"number"==typeof t.length?e.call(t):[t]},c.removeFrom=function(t,e){var i=t.indexOf(e);-1!=i&&t.splice(i,1)},c.getParent=function(t,e){for(;t.parentNode&&t!=document.body;)if(t=t.parentNode,o(t,e))return t},c.getQueryElement=function(t){return"string"==typeof t?document.querySelector(t):t},c.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},c.filterFindElements=function(t,n){t=c.makeArray(t);var s=[];return t.forEach(function(t){if(t instanceof HTMLElement)if(n){o(t,n)&&s.push(t);for(var e=t.querySelectorAll(n),i=0;i<e.length;i++)s.push(e[i])}else s.push(t)}),s},c.debounceMethod=function(t,e,n){n=n||100;var s=t.prototype[e],o=e+"Timeout";t.prototype[e]=function(){var t=this[o];clearTimeout(t);var e=arguments,i=this;this[o]=setTimeout(function(){s.apply(i,e),delete i[o]},n)}},c.docReady=function(t){var e=document.readyState;"complete"==e||"interactive"==e?setTimeout(t):document.addEventListener("DOMContentLoaded",t)},c.toDashed=function(t){return t.replace(/(.)([A-Z])/g,function(t,e,i){return e+"-"+i}).toLowerCase()};var d=h.console;return c.htmlInit=function(a,l){c.docReady(function(){var t=c.toDashed(l),s="data-"+t,e=document.querySelectorAll("["+s+"]"),i=document.querySelectorAll(".js-"+t),n=c.makeArray(e).concat(c.makeArray(i)),o=s+"-options",r=h.jQuery;n.forEach(function(e){var t,i=e.getAttribute(s)||e.getAttribute(o);try{t=i&&JSON.parse(i)}catch(t){return void(d&&d.error("Error parsing "+s+" on "+e.className+": "+t))}var n=new a(e,t);r&&r.data(e,l,n)})})},c}),function(e,i){"function"==typeof define&&define.amd?define("flickity/js/cell",["get-size/get-size"],function(t){return i(e,t)}):"object"==typeof module&&module.exports?module.exports=i(e,require("get-size")):(e.Flickity=e.Flickity||{},e.Flickity.Cell=i(e,e.getSize))}(window,function(t,e){function i(t,e){this.element=t,this.parent=e,this.create()}var n=i.prototype;return n.create=function(){this.element.style.position="absolute",this.element.setAttribute("aria-hidden","true"),this.x=0,this.shift=0},n.destroy=function(){this.unselect(),this.element.style.position="";var t=this.parent.originSide;this.element.style[t]=""},n.getSize=function(){this.size=e(this.element)},n.setPosition=function(t){this.x=t,this.updateTarget(),this.renderPosition(t)},n.updateTarget=n.setDefaultTarget=function(){var t="left"==this.parent.originSide?"marginLeft":"marginRight";this.target=this.x+this.size[t]+this.size.width*this.parent.cellAlign},n.renderPosition=function(t){var e=this.parent.originSide;this.element.style[e]=this.parent.getPositionValue(t)},n.select=function(){this.element.classList.add("is-selected"),this.element.removeAttribute("aria-hidden")},n.unselect=function(){this.element.classList.remove("is-selected"),this.element.setAttribute("aria-hidden","true")},n.wrapShift=function(t){this.shift=t,this.renderPosition(this.x+this.parent.slideableWidth*t)},n.remove=function(){this.element.parentNode.removeChild(this.element)},i}),function(t,e){"function"==typeof define&&define.amd?define("flickity/js/slide",e):"object"==typeof module&&module.exports?module.exports=e():(t.Flickity=t.Flickity||{},t.Flickity.Slide=e())}(window,function(){"use strict";function t(t){this.parent=t,this.isOriginLeft="left"==t.originSide,this.cells=[],this.outerWidth=0,this.height=0}var e=t.prototype;return e.addCell=function(t){if(this.cells.push(t),this.outerWidth+=t.size.outerWidth,this.height=Math.max(t.size.outerHeight,this.height),1==this.cells.length){this.x=t.x;var e=this.isOriginLeft?"marginLeft":"marginRight";this.firstMargin=t.size[e]}},e.updateTarget=function(){var t=this.isOriginLeft?"marginRight":"marginLeft",e=this.getLastCell(),i=e?e.size[t]:0,n=this.outerWidth-(this.firstMargin+i);this.target=this.x+this.firstMargin+n*this.parent.cellAlign},e.getLastCell=function(){return this.cells[this.cells.length-1]},e.select=function(){this.cells.forEach(function(t){t.select()})},e.unselect=function(){this.cells.forEach(function(t){t.unselect()})},e.getCellElements=function(){return this.cells.map(function(t){return t.element})},t}),function(e,i){"function"==typeof define&&define.amd?define("flickity/js/animate",["fizzy-ui-utils/utils"],function(t){return i(e,t)}):"object"==typeof module&&module.exports?module.exports=i(e,require("fizzy-ui-utils")):(e.Flickity=e.Flickity||{},e.Flickity.animatePrototype=i(e,e.fizzyUIUtils))}(window,function(t,e){var i={startAnimation:function(){this.isAnimating||(this.isAnimating=!0,this.restingFrames=0,this.animate())},animate:function(){this.applyDragForce(),this.applySelectedAttraction();var t=this.x;if(this.integratePhysics(),this.positionSlider(),this.settle(t),this.isAnimating){var e=this;requestAnimationFrame(function(){e.animate()})}},positionSlider:function(){var t=this.x;this.options.wrapAround&&1<this.cells.length&&(t=e.modulo(t,this.slideableWidth),t-=this.slideableWidth,this.shiftWrapCells(t)),this.setTranslateX(t,this.isAnimating),this.dispatchScrollEvent()},setTranslateX:function(t,e){t+=this.cursorPosition,t=this.options.rightToLeft?-t:t;var i=this.getPositionValue(t);this.slider.style.transform=e?"translate3d("+i+",0,0)":"translateX("+i+")"},dispatchScrollEvent:function(){var t=this.slides[0];if(t){var e=-this.x-t.target,i=e/this.slidesWidth;this.dispatchEvent("scroll",null,[i,e])}},positionSliderAtSelected:function(){this.cells.length&&(this.x=-this.selectedSlide.target,this.velocity=0,this.positionSlider())},getPositionValue:function(t){return this.options.percentPosition?.01*Math.round(t/this.size.innerWidth*1e4)+"%":Math.round(t)+"px"},settle:function(t){this.isPointerDown||Math.round(100*this.x)!=Math.round(100*t)||this.restingFrames++,2<this.restingFrames&&(this.isAnimating=!1,delete this.isFreeScrolling,this.positionSlider(),this.dispatchEvent("settle",null,[this.selectedIndex]))},shiftWrapCells:function(t){var e=this.cursorPosition+t;this._shiftCells(this.beforeShiftCells,e,-1);var i=this.size.innerWidth-(t+this.slideableWidth+this.cursorPosition);this._shiftCells(this.afterShiftCells,i,1)},_shiftCells:function(t,e,i){for(var n=0;n<t.length;n++){var s=t[n],o=0<e?i:0;s.wrapShift(o),e-=s.size.outerWidth}},_unshiftCells:function(t){if(t&&t.length)for(var e=0;e<t.length;e++)t[e].wrapShift(0)},integratePhysics:function(){this.x+=this.velocity,this.velocity*=this.getFrictionFactor()},applyForce:function(t){this.velocity+=t},getFrictionFactor:function(){return 1-this.options[this.isFreeScrolling?"freeScrollFriction":"friction"]},getRestingPosition:function(){return this.x+this.velocity/(1-this.getFrictionFactor())},applyDragForce:function(){if(this.isDraggable&&this.isPointerDown){var t=this.dragX-this.x-this.velocity;this.applyForce(t)}},applySelectedAttraction:function(){if(!(this.isDraggable&&this.isPointerDown)&&!this.isFreeScrolling&&this.slides.length){var t=(-1*this.selectedSlide.target-this.x)*this.options.selectedAttraction;this.applyForce(t)}}};return i}),function(r,a){if("function"==typeof define&&define.amd)define("flickity/js/flickity",["ev-emitter/ev-emitter","get-size/get-size","fizzy-ui-utils/utils","./cell","./slide","./animate"],function(t,e,i,n,s,o){return a(r,t,e,i,n,s,o)});else if("object"==typeof module&&module.exports)module.exports=a(r,require("ev-emitter"),require("get-size"),require("fizzy-ui-utils"),require("./cell"),require("./slide"),require("./animate"));else{var t=r.Flickity;r.Flickity=a(r,r.EvEmitter,r.getSize,r.fizzyUIUtils,t.Cell,t.Slide,t.animatePrototype)}}(window,function(n,t,e,a,i,r,s){var l=n.jQuery,o=n.getComputedStyle,h=n.console;function c(t,e){for(t=a.makeArray(t);t.length;)e.appendChild(t.shift())}var d=0,u={};function f(t,e){var i=a.getQueryElement(t);if(i){if(this.element=i,this.element.flickityGUID){var n=u[this.element.flickityGUID];return n.option(e),n}l&&(this.$element=l(this.element)),this.options=a.extend({},this.constructor.defaults),this.option(e),this._create()}else h&&h.error("Bad element for Flickity: "+(i||t))}f.defaults={accessibility:!0,cellAlign:"center",freeScrollFriction:.075,friction:.28,namespaceJQueryEvents:!0,percentPosition:!0,resize:!0,selectedAttraction:.025,setGallerySize:!0},f.createMethods=[];var p=f.prototype;a.extend(p,t.prototype),p._create=function(){var t=this.guid=++d;for(var e in this.element.flickityGUID=t,(u[t]=this).selectedIndex=0,this.restingFrames=0,this.x=0,this.velocity=0,this.originSide=this.options.rightToLeft?"right":"left",this.viewport=document.createElement("div"),this.viewport.className="flickity-viewport",this._createSlider(),(this.options.resize||this.options.watchCSS)&&n.addEventListener("resize",this),this.options.on){var i=this.options.on[e];this.on(e,i)}f.createMethods.forEach(function(t){this[t]()},this),this.options.watchCSS?this.watchCSS():this.activate()},p.option=function(t){a.extend(this.options,t)},p.activate=function(){this.isActive||(this.isActive=!0,this.element.classList.add("flickity-enabled"),this.options.rightToLeft&&this.element.classList.add("flickity-rtl"),this.getSize(),c(this._filterFindCellElements(this.element.children),this.slider),this.viewport.appendChild(this.slider),this.element.appendChild(this.viewport),this.reloadCells(),this.options.accessibility&&(this.element.tabIndex=0,this.element.addEventListener("keydown",this)),this.emitEvent("activate"),this.selectInitialIndex(),this.isInitActivated=!0,this.dispatchEvent("ready"))},p._createSlider=function(){var t=document.createElement("div");t.className="flickity-slider",t.style[this.originSide]=0,this.slider=t},p._filterFindCellElements=function(t){return a.filterFindElements(t,this.options.cellSelector)},p.reloadCells=function(){this.cells=this._makeCells(this.slider.children),this.positionCells(),this._getWrapShiftCells(),this.setGallerySize()},p._makeCells=function(t){return this._filterFindCellElements(t).map(function(t){return new i(t,this)},this)},p.getLastCell=function(){return this.cells[this.cells.length-1]},p.getLastSlide=function(){return this.slides[this.slides.length-1]},p.positionCells=function(){this._sizeCells(this.cells),this._positionCells(0)},p._positionCells=function(t){t=t||0,this.maxCellHeight=t&&this.maxCellHeight||0;var e=0;if(0<t){var i=this.cells[t-1];e=i.x+i.size.outerWidth}for(var n=this.cells.length,s=t;s<n;s++){var o=this.cells[s];o.setPosition(e),e+=o.size.outerWidth,this.maxCellHeight=Math.max(o.size.outerHeight,this.maxCellHeight)}this.slideableWidth=e,this.updateSlides(),this._containSlides(),this.slidesWidth=n?this.getLastSlide().target-this.slides[0].target:0},p._sizeCells=function(t){t.forEach(function(t){t.getSize()})},p.updateSlides=function(){if(this.slides=[],this.cells.length){var n=new r(this);this.slides.push(n);var s="left"==this.originSide?"marginRight":"marginLeft",o=this._getCanCellFit();this.cells.forEach(function(t,e){if(n.cells.length){var i=n.outerWidth-n.firstMargin+(t.size.outerWidth-t.size[s]);o.call(this,e,i)||(n.updateTarget(),n=new r(this),this.slides.push(n)),n.addCell(t)}else n.addCell(t)},this),n.updateTarget(),this.updateSelectedSlide()}},p._getCanCellFit=function(){var t=this.options.groupCells;if(!t)return function(){return!1};if("number"==typeof t){var e=parseInt(t,10);return function(t){return t%e!=0}}var i="string"==typeof t&&t.match(/^(\d+)%$/),n=i?parseInt(i[1],10)/100:1;return function(t,e){return e<=(this.size.innerWidth+1)*n}},p._init=p.reposition=function(){this.positionCells(),this.positionSliderAtSelected()},p.getSize=function(){this.size=e(this.element),this.setCellAlign(),this.cursorPosition=this.size.innerWidth*this.cellAlign};var g={center:{left:.5,right:.5},left:{left:0,right:1},right:{right:0,left:1}};return p.setCellAlign=function(){var t=g[this.options.cellAlign];this.cellAlign=t?t[this.originSide]:this.options.cellAlign},p.setGallerySize=function(){if(this.options.setGallerySize){var t=this.options.adaptiveHeight&&this.selectedSlide?this.selectedSlide.height:this.maxCellHeight;this.viewport.style.height=t+"px"}},p._getWrapShiftCells=function(){if(this.options.wrapAround){this._unshiftCells(this.beforeShiftCells),this._unshiftCells(this.afterShiftCells);var t=this.cursorPosition,e=this.cells.length-1;this.beforeShiftCells=this._getGapCells(t,e,-1),t=this.size.innerWidth-this.cursorPosition,this.afterShiftCells=this._getGapCells(t,0,1)}},p._getGapCells=function(t,e,i){for(var n=[];0<t;){var s=this.cells[e];if(!s)break;n.push(s),e+=i,t-=s.size.outerWidth}return n},p._containSlides=function(){if(this.options.contain&&!this.options.wrapAround&&this.cells.length){var t=this.options.rightToLeft,e=t?"marginRight":"marginLeft",i=t?"marginLeft":"marginRight",n=this.slideableWidth-this.getLastCell().size[i],s=n<this.size.innerWidth,o=this.cursorPosition+this.cells[0].size[e],r=n-this.size.innerWidth*(1-this.cellAlign);this.slides.forEach(function(t){s?t.target=n*this.cellAlign:(t.target=Math.max(t.target,o),t.target=Math.min(t.target,r))},this)}},p.dispatchEvent=function(t,e,i){var n=e?[e].concat(i):i;if(this.emitEvent(t,n),l&&this.$element){var s=t+=this.options.namespaceJQueryEvents?".flickity":"";if(e){var o=l.Event(e);o.type=t,s=o}this.$element.trigger(s,i)}},p.select=function(t,e,i){if(this.isActive&&(t=parseInt(t,10),this._wrapSelect(t),(this.options.wrapAround||e)&&(t=a.modulo(t,this.slides.length)),this.slides[t])){var n=this.selectedIndex;this.selectedIndex=t,this.updateSelectedSlide(),i?this.positionSliderAtSelected():this.startAnimation(),this.options.adaptiveHeight&&this.setGallerySize(),this.dispatchEvent("select",null,[t]),t!=n&&this.dispatchEvent("change",null,[t]),this.dispatchEvent("cellSelect")}},p._wrapSelect=function(t){var e=this.slides.length;if(!(this.options.wrapAround&&1<e))return t;var i=a.modulo(t,e),n=Math.abs(i-this.selectedIndex),s=Math.abs(i+e-this.selectedIndex),o=Math.abs(i-e-this.selectedIndex);!this.isDragSelect&&s<n?t+=e:!this.isDragSelect&&o<n&&(t-=e),t<0?this.x-=this.slideableWidth:e<=t&&(this.x+=this.slideableWidth)},p.previous=function(t,e){this.select(this.selectedIndex-1,t,e)},p.next=function(t,e){this.select(this.selectedIndex+1,t,e)},p.updateSelectedSlide=function(){var t=this.slides[this.selectedIndex];t&&(this.unselectSelectedSlide(),(this.selectedSlide=t).select(),this.selectedCells=t.cells,this.selectedElements=t.getCellElements(),this.selectedCell=t.cells[0],this.selectedElement=this.selectedElements[0])},p.unselectSelectedSlide=function(){this.selectedSlide&&this.selectedSlide.unselect()},p.selectInitialIndex=function(){var t=this.options.initialIndex;if(this.isInitActivated)this.select(this.selectedIndex,!1,!0);else{if(t&&"string"==typeof t)if(this.queryCell(t))return void this.selectCell(t,!1,!0);var e=0;t&&this.slides[t]&&(e=t),this.select(e,!1,!0)}},p.selectCell=function(t,e,i){var n=this.queryCell(t);if(n){var s=this.getCellSlideIndex(n);this.select(s,e,i)}},p.getCellSlideIndex=function(t){for(var e=0;e<this.slides.length;e++){if(-1!=this.slides[e].cells.indexOf(t))return e}},p.getCell=function(t){for(var e=0;e<this.cells.length;e++){var i=this.cells[e];if(i.element==t)return i}},p.getCells=function(t){t=a.makeArray(t);var i=[];return t.forEach(function(t){var e=this.getCell(t);e&&i.push(e)},this),i},p.getCellElements=function(){return this.cells.map(function(t){return t.element})},p.getParentCell=function(t){var e=this.getCell(t);return e||(t=a.getParent(t,".flickity-slider > *"),this.getCell(t))},p.getAdjacentCellElements=function(t,e){if(!t)return this.selectedSlide.getCellElements();e=void 0===e?this.selectedIndex:e;var i=this.slides.length;if(i<=1+2*t)return this.getCellElements();for(var n=[],s=e-t;s<=e+t;s++){var o=this.options.wrapAround?a.modulo(s,i):s,r=this.slides[o];r&&(n=n.concat(r.getCellElements()))}return n},p.queryCell=function(t){if("number"==typeof t)return this.cells[t];if("string"==typeof t){if(t.match(/^[#\.]?[\d\/]/))return;t=this.element.querySelector(t)}return this.getCell(t)},p.uiChange=function(){this.emitEvent("uiChange")},p.childUIPointerDown=function(t){"touchstart"!=t.type&&t.preventDefault(),this.focus()},p.onresize=function(){this.watchCSS(),this.resize()},a.debounceMethod(f,"onresize",150),p.resize=function(){if(this.isActive){this.getSize(),this.options.wrapAround&&(this.x=a.modulo(this.x,this.slideableWidth)),this.positionCells(),this._getWrapShiftCells(),this.setGallerySize(),this.emitEvent("resize");var t=this.selectedElements&&this.selectedElements[0];this.selectCell(t,!1,!0)}},p.watchCSS=function(){this.options.watchCSS&&(-1!=o(this.element,":after").content.indexOf("flickity")?this.activate():this.deactivate())},p.onkeydown=function(t){var e=document.activeElement&&document.activeElement!=this.element;if(this.options.accessibility&&!e){var i=f.keyboardHandlers[t.keyCode];i&&i.call(this)}},f.keyboardHandlers={37:function(){var t=this.options.rightToLeft?"next":"previous";this.uiChange(),this[t]()},39:function(){var t=this.options.rightToLeft?"previous":"next";this.uiChange(),this[t]()}},p.focus=function(){var t=n.pageYOffset;this.element.focus({preventScroll:!0}),n.pageYOffset!=t&&n.scrollTo(n.pageXOffset,t)},p.deactivate=function(){this.isActive&&(this.element.classList.remove("flickity-enabled"),this.element.classList.remove("flickity-rtl"),this.unselectSelectedSlide(),this.cells.forEach(function(t){t.destroy()}),this.element.removeChild(this.viewport),c(this.slider.children,this.element),this.options.accessibility&&(this.element.removeAttribute("tabIndex"),this.element.removeEventListener("keydown",this)),this.isActive=!1,this.emitEvent("deactivate"))},p.destroy=function(){this.deactivate(),n.removeEventListener("resize",this),this.allOff(),this.emitEvent("destroy"),l&&this.$element&&l.removeData(this.element,"flickity"),delete this.element.flickityGUID,delete u[this.guid]},a.extend(p,s),f.data=function(t){var e=(t=a.getQueryElement(t))&&t.flickityGUID;return e&&u[e]},a.htmlInit(f,"flickity"),l&&l.bridget&&l.bridget("flickity",f),f.setJQuery=function(t){l=t},f.Cell=i,f.Slide=r,f}),function(e,i){"function"==typeof define&&define.amd?define("unipointer/unipointer",["ev-emitter/ev-emitter"],function(t){return i(e,t)}):"object"==typeof module&&module.exports?module.exports=i(e,require("ev-emitter")):e.Unipointer=i(e,e.EvEmitter)}(window,function(s,t){function e(){}var i=e.prototype=Object.create(t.prototype);i.bindStartEvent=function(t){this._bindStartEvent(t,!0)},i.unbindStartEvent=function(t){this._bindStartEvent(t,!1)},i._bindStartEvent=function(t,e){var i=(e=void 0===e||e)?"addEventListener":"removeEventListener",n="mousedown";s.PointerEvent?n="pointerdown":"ontouchstart"in s&&(n="touchstart"),t[i](n,this)},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.getTouch=function(t){for(var e=0;e<t.length;e++){var i=t[e];if(i.identifier==this.pointerIdentifier)return i}},i.onmousedown=function(t){var e=t.button;e&&0!==e&&1!==e||this._pointerDown(t,t)},i.ontouchstart=function(t){this._pointerDown(t,t.changedTouches[0])},i.onpointerdown=function(t){this._pointerDown(t,t)},i._pointerDown=function(t,e){t.button||this.isPointerDown||(this.isPointerDown=!0,this.pointerIdentifier=void 0!==e.pointerId?e.pointerId:e.identifier,this.pointerDown(t,e))},i.pointerDown=function(t,e){this._bindPostStartEvents(t),this.emitEvent("pointerDown",[t,e])};var n={mousedown:["mousemove","mouseup"],touchstart:["touchmove","touchend","touchcancel"],pointerdown:["pointermove","pointerup","pointercancel"]};return i._bindPostStartEvents=function(t){if(t){var e=n[t.type];e.forEach(function(t){s.addEventListener(t,this)},this),this._boundPointerEvents=e}},i._unbindPostStartEvents=function(){this._boundPointerEvents&&(this._boundPointerEvents.forEach(function(t){s.removeEventListener(t,this)},this),delete this._boundPointerEvents)},i.onmousemove=function(t){this._pointerMove(t,t)},i.onpointermove=function(t){t.pointerId==this.pointerIdentifier&&this._pointerMove(t,t)},i.ontouchmove=function(t){var e=this.getTouch(t.changedTouches);e&&this._pointerMove(t,e)},i._pointerMove=function(t,e){this.pointerMove(t,e)},i.pointerMove=function(t,e){this.emitEvent("pointerMove",[t,e])},i.onmouseup=function(t){this._pointerUp(t,t)},i.onpointerup=function(t){t.pointerId==this.pointerIdentifier&&this._pointerUp(t,t)},i.ontouchend=function(t){var e=this.getTouch(t.changedTouches);e&&this._pointerUp(t,e)},i._pointerUp=function(t,e){this._pointerDone(),this.pointerUp(t,e)},i.pointerUp=function(t,e){this.emitEvent("pointerUp",[t,e])},i._pointerDone=function(){this._pointerReset(),this._unbindPostStartEvents(),this.pointerDone()},i._pointerReset=function(){this.isPointerDown=!1,delete this.pointerIdentifier},i.pointerDone=function(){},i.onpointercancel=function(t){t.pointerId==this.pointerIdentifier&&this._pointerCancel(t,t)},i.ontouchcancel=function(t){var e=this.getTouch(t.changedTouches);e&&this._pointerCancel(t,e)},i._pointerCancel=function(t,e){this._pointerDone(),this.pointerCancel(t,e)},i.pointerCancel=function(t,e){this.emitEvent("pointerCancel",[t,e])},e.getPointerPoint=function(t){return{x:t.pageX,y:t.pageY}},e}),function(e,i){"function"==typeof define&&define.amd?define("unidragger/unidragger",["unipointer/unipointer"],function(t){return i(e,t)}):"object"==typeof module&&module.exports?module.exports=i(e,require("unipointer")):e.Unidragger=i(e,e.Unipointer)}(window,function(o,t){function e(){}var i=e.prototype=Object.create(t.prototype);i.bindHandles=function(){this._bindHandles(!0)},i.unbindHandles=function(){this._bindHandles(!1)},i._bindHandles=function(t){for(var e=(t=void 0===t||t)?"addEventListener":"removeEventListener",i=t?this._touchActionValue:"",n=0;n<this.handles.length;n++){var s=this.handles[n];this._bindStartEvent(s,t),s[e]("click",this),o.PointerEvent&&(s.style.touchAction=i)}},i._touchActionValue="none",i.pointerDown=function(t,e){this.okayPointerDown(t)&&(this.pointerDownPointer=e,t.preventDefault(),this.pointerDownBlur(),this._bindPostStartEvents(t),this.emitEvent("pointerDown",[t,e]))};var s={TEXTAREA:!0,INPUT:!0,SELECT:!0,OPTION:!0},r={radio:!0,checkbox:!0,button:!0,submit:!0,image:!0,file:!0};return i.okayPointerDown=function(t){var e=s[t.target.nodeName],i=r[t.target.type],n=!e||i;return n||this._pointerReset(),n},i.pointerDownBlur=function(){var t=document.activeElement;t&&t.blur&&t!=document.body&&t.blur()},i.pointerMove=function(t,e){var i=this._dragPointerMove(t,e);this.emitEvent("pointerMove",[t,e,i]),this._dragMove(t,e,i)},i._dragPointerMove=function(t,e){var i={x:e.pageX-this.pointerDownPointer.pageX,y:e.pageY-this.pointerDownPointer.pageY};return!this.isDragging&&this.hasDragStarted(i)&&this._dragStart(t,e),i},i.hasDragStarted=function(t){return 3<Math.abs(t.x)||3<Math.abs(t.y)},i.pointerUp=function(t,e){this.emitEvent("pointerUp",[t,e]),this._dragPointerUp(t,e)},i._dragPointerUp=function(t,e){this.isDragging?this._dragEnd(t,e):this._staticClick(t,e)},i._dragStart=function(t,e){this.isDragging=!0,this.isPreventingClicks=!0,this.dragStart(t,e)},i.dragStart=function(t,e){this.emitEvent("dragStart",[t,e])},i._dragMove=function(t,e,i){this.isDragging&&this.dragMove(t,e,i)},i.dragMove=function(t,e,i){t.preventDefault(),this.emitEvent("dragMove",[t,e,i])},i._dragEnd=function(t,e){this.isDragging=!1,setTimeout(function(){delete this.isPreventingClicks}.bind(this)),this.dragEnd(t,e)},i.dragEnd=function(t,e){this.emitEvent("dragEnd",[t,e])},i.onclick=function(t){this.isPreventingClicks&&t.preventDefault()},i._staticClick=function(t,e){this.isIgnoringMouseUp&&"mouseup"==t.type||(this.staticClick(t,e),"mouseup"!=t.type&&(this.isIgnoringMouseUp=!0,setTimeout(function(){delete this.isIgnoringMouseUp}.bind(this),400)))},i.staticClick=function(t,e){this.emitEvent("staticClick",[t,e])},e.getPointerPoint=t.getPointerPoint,e}),function(n,s){"function"==typeof define&&define.amd?define("flickity/js/drag",["./flickity","unidragger/unidragger","fizzy-ui-utils/utils"],function(t,e,i){return s(n,t,e,i)}):"object"==typeof module&&module.exports?module.exports=s(n,require("./flickity"),require("unidragger"),require("fizzy-ui-utils")):n.Flickity=s(n,n.Flickity,n.Unidragger,n.fizzyUIUtils)}(window,function(i,t,e,a){a.extend(t.defaults,{draggable:">1",dragThreshold:3}),t.createMethods.push("_createDrag");var n=t.prototype;a.extend(n,e.prototype),n._touchActionValue="pan-y";var s="createTouch"in document,o=!1;n._createDrag=function(){this.on("activate",this.onActivateDrag),this.on("uiChange",this._uiChangeDrag),this.on("deactivate",this.onDeactivateDrag),this.on("cellChange",this.updateDraggable),s&&!o&&(i.addEventListener("touchmove",function(){}),o=!0)},n.onActivateDrag=function(){this.handles=[this.viewport],this.bindHandles(),this.updateDraggable()},n.onDeactivateDrag=function(){this.unbindHandles(),this.element.classList.remove("is-draggable")},n.updateDraggable=function(){">1"==this.options.draggable?this.isDraggable=1<this.slides.length:this.isDraggable=this.options.draggable,this.isDraggable?this.element.classList.add("is-draggable"):this.element.classList.remove("is-draggable")},n.bindDrag=function(){this.options.draggable=!0,this.updateDraggable()},n.unbindDrag=function(){this.options.draggable=!1,this.updateDraggable()},n._uiChangeDrag=function(){delete this.isFreeScrolling},n.pointerDown=function(t,e){this.isDraggable?this.okayPointerDown(t)&&(this._pointerDownPreventDefault(t),this.pointerDownFocus(t),document.activeElement!=this.element&&this.pointerDownBlur(),this.dragX=this.x,this.viewport.classList.add("is-pointer-down"),this.pointerDownScroll=l(),i.addEventListener("scroll",this),this._pointerDownDefault(t,e)):this._pointerDownDefault(t,e)},n._pointerDownDefault=function(t,e){this.pointerDownPointer={pageX:e.pageX,pageY:e.pageY},this._bindPostStartEvents(t),this.dispatchEvent("pointerDown",t,[e])};var r={INPUT:!0,TEXTAREA:!0,SELECT:!0};function l(){return{x:i.pageXOffset,y:i.pageYOffset}}return n.pointerDownFocus=function(t){r[t.target.nodeName]||this.focus()},n._pointerDownPreventDefault=function(t){var e="touchstart"==t.type,i="touch"==t.pointerType,n=r[t.target.nodeName];e||i||n||t.preventDefault()},n.hasDragStarted=function(t){return Math.abs(t.x)>this.options.dragThreshold},n.pointerUp=function(t,e){delete this.isTouchScrolling,this.viewport.classList.remove("is-pointer-down"),this.dispatchEvent("pointerUp",t,[e]),this._dragPointerUp(t,e)},n.pointerDone=function(){i.removeEventListener("scroll",this),delete this.pointerDownScroll},n.dragStart=function(t,e){this.isDraggable&&(this.dragStartPosition=this.x,this.startAnimation(),i.removeEventListener("scroll",this),this.dispatchEvent("dragStart",t,[e]))},n.pointerMove=function(t,e){var i=this._dragPointerMove(t,e);this.dispatchEvent("pointerMove",t,[e,i]),this._dragMove(t,e,i)},n.dragMove=function(t,e,i){if(this.isDraggable){t.preventDefault(),this.previousDragX=this.dragX;var n=this.options.rightToLeft?-1:1;this.options.wrapAround&&(i.x=i.x%this.slideableWidth);var s=this.dragStartPosition+i.x*n;if(!this.options.wrapAround&&this.slides.length){var o=Math.max(-this.slides[0].target,this.dragStartPosition);s=o<s?.5*(s+o):s;var r=Math.min(-this.getLastSlide().target,this.dragStartPosition);s=s<r?.5*(s+r):s}this.dragX=s,this.dragMoveTime=new Date,this.dispatchEvent("dragMove",t,[e,i])}},n.dragEnd=function(t,e){if(this.isDraggable){this.options.freeScroll&&(this.isFreeScrolling=!0);var i=this.dragEndRestingSelect();if(this.options.freeScroll&&!this.options.wrapAround){var n=this.getRestingPosition();this.isFreeScrolling=-n>this.slides[0].target&&-n<this.getLastSlide().target}else this.options.freeScroll||i!=this.selectedIndex||(i+=this.dragEndBoostSelect());delete this.previousDragX,this.isDragSelect=this.options.wrapAround,this.select(i),delete this.isDragSelect,this.dispatchEvent("dragEnd",t,[e])}},n.dragEndRestingSelect=function(){var t=this.getRestingPosition(),e=Math.abs(this.getSlideDistance(-t,this.selectedIndex)),i=this._getClosestResting(t,e,1),n=this._getClosestResting(t,e,-1);return i.distance<n.distance?i.index:n.index},n._getClosestResting=function(t,e,i){for(var n=this.selectedIndex,s=1/0,o=this.options.contain&&!this.options.wrapAround?function(t,e){return t<=e}:function(t,e){return t<e};o(e,s)&&(n+=i,s=e,null!==(e=this.getSlideDistance(-t,n)));)e=Math.abs(e);return{distance:s,index:n-i}},n.getSlideDistance=function(t,e){var i=this.slides.length,n=this.options.wrapAround&&1<i,s=n?a.modulo(e,i):e,o=this.slides[s];if(!o)return null;var r=n?this.slideableWidth*Math.floor(e/i):0;return t-(o.target+r)},n.dragEndBoostSelect=function(){if(void 0===this.previousDragX||!this.dragMoveTime||100<new Date-this.dragMoveTime)return 0;var t=this.getSlideDistance(-this.dragX,this.selectedIndex),e=this.previousDragX-this.dragX;return 0<t&&0<e?1:t<0&&e<0?-1:0},n.staticClick=function(t,e){var i=this.getParentCell(t.target),n=i&&i.element,s=i&&this.cells.indexOf(i);this.dispatchEvent("staticClick",t,[e,n,s])},n.onscroll=function(){var t=l(),e=this.pointerDownScroll.x-t.x,i=this.pointerDownScroll.y-t.y;(3<Math.abs(e)||3<Math.abs(i))&&this._pointerDone()},t}),function(n,s){"function"==typeof define&&define.amd?define("flickity/js/prev-next-button",["./flickity","unipointer/unipointer","fizzy-ui-utils/utils"],function(t,e,i){return s(n,t,e,i)}):"object"==typeof module&&module.exports?module.exports=s(n,require("./flickity"),require("unipointer"),require("fizzy-ui-utils")):s(n,n.Flickity,n.Unipointer,n.fizzyUIUtils)}(window,function(t,e,i,n){"use strict";var s="http://www.w3.org/2000/svg";function o(t,e){this.direction=t,this.parent=e,this._create()}(o.prototype=Object.create(i.prototype))._create=function(){this.isEnabled=!0,this.isPrevious=-1==this.direction;var t=this.parent.options.rightToLeft?1:-1;this.isLeft=this.direction==t;var e=this.element=document.createElement("button");e.className="flickity-button flickity-prev-next-button",e.className+=this.isPrevious?" previous":" next",e.setAttribute("type","button"),this.disable(),e.setAttribute("aria-label",this.isPrevious?"Previous":"Next");var i=this.createSVG();e.appendChild(i),this.parent.on("select",this.update.bind(this)),this.on("pointerDown",this.parent.childUIPointerDown.bind(this.parent))},o.prototype.activate=function(){this.bindStartEvent(this.element),this.element.addEventListener("click",this),this.parent.element.appendChild(this.element)},o.prototype.deactivate=function(){this.parent.element.removeChild(this.element),this.unbindStartEvent(this.element),this.element.removeEventListener("click",this)},o.prototype.createSVG=function(){var t=document.createElementNS(s,"svg");t.setAttribute("class","flickity-button-icon"),t.setAttribute("viewBox","0 0 100 100");var e=document.createElementNS(s,"path"),i=function(t){return"string"!=typeof t?"M "+t.x0+",50 L "+t.x1+","+(t.y1+50)+" L "+t.x2+","+(t.y2+50)+" L "+t.x3+",50  L "+t.x2+","+(50-t.y2)+" L "+t.x1+","+(50-t.y1)+" Z":t}(this.parent.options.arrowShape);return e.setAttribute("d",i),e.setAttribute("class","arrow"),this.isLeft||e.setAttribute("transform","translate(100, 100) rotate(180) "),t.appendChild(e),t},o.prototype.handleEvent=n.handleEvent,o.prototype.onclick=function(){if(this.isEnabled){this.parent.uiChange();var t=this.isPrevious?"previous":"next";this.parent[t]()}},o.prototype.enable=function(){this.isEnabled||(this.element.disabled=!1,this.isEnabled=!0)},o.prototype.disable=function(){this.isEnabled&&(this.element.disabled=!0,this.isEnabled=!1)},o.prototype.update=function(){var t=this.parent.slides;if(this.parent.options.wrapAround&&1<t.length)this.enable();else{var e=t.length?t.length-1:0,i=this.isPrevious?0:e;this[this.parent.selectedIndex==i?"disable":"enable"]()}},o.prototype.destroy=function(){this.deactivate(),this.allOff()},n.extend(e.defaults,{prevNextButtons:!0,arrowShape:{x0:10,x1:60,y1:50,x2:70,y2:40,x3:30}}),e.createMethods.push("_createPrevNextButtons");var r=e.prototype;return r._createPrevNextButtons=function(){this.options.prevNextButtons&&(this.prevButton=new o(-1,this),this.nextButton=new o(1,this),this.on("activate",this.activatePrevNextButtons))},r.activatePrevNextButtons=function(){this.prevButton.activate(),this.nextButton.activate(),this.on("deactivate",this.deactivatePrevNextButtons)},r.deactivatePrevNextButtons=function(){this.prevButton.deactivate(),this.nextButton.deactivate(),this.off("deactivate",this.deactivatePrevNextButtons)},e.PrevNextButton=o,e}),function(n,s){"function"==typeof define&&define.amd?define("flickity/js/page-dots",["./flickity","unipointer/unipointer","fizzy-ui-utils/utils"],function(t,e,i){return s(n,t,e,i)}):"object"==typeof module&&module.exports?module.exports=s(n,require("./flickity"),require("unipointer"),require("fizzy-ui-utils")):s(n,n.Flickity,n.Unipointer,n.fizzyUIUtils)}(window,function(t,e,i,n){function s(t){this.parent=t,this._create()}(s.prototype=Object.create(i.prototype))._create=function(){this.holder=document.createElement("ol"),this.holder.className="flickity-page-dots",this.dots=[],this.handleClick=this.onClick.bind(this),this.on("pointerDown",this.parent.childUIPointerDown.bind(this.parent))},s.prototype.activate=function(){this.setDots(),this.holder.addEventListener("click",this.handleClick),this.bindStartEvent(this.holder),this.parent.element.appendChild(this.holder)},s.prototype.deactivate=function(){this.holder.removeEventListener("click",this.handleClick),this.unbindStartEvent(this.holder),this.parent.element.removeChild(this.holder)},s.prototype.setDots=function(){var t=this.parent.slides.length-this.dots.length;0<t?this.addDots(t):t<0&&this.removeDots(-t)},s.prototype.addDots=function(t){for(var e=document.createDocumentFragment(),i=[],n=this.dots.length,s=n+t,o=n;o<s;o++){var r=document.createElement("li");r.className="dot",r.setAttribute("aria-label","Page dot "+(o+1)),e.appendChild(r),i.push(r)}this.holder.appendChild(e),this.dots=this.dots.concat(i)},s.prototype.removeDots=function(t){this.dots.splice(this.dots.length-t,t).forEach(function(t){this.holder.removeChild(t)},this)},s.prototype.updateSelected=function(){this.selectedDot&&(this.selectedDot.className="dot",this.selectedDot.removeAttribute("aria-current")),this.dots.length&&(this.selectedDot=this.dots[this.parent.selectedIndex],this.selectedDot.className="dot is-selected",this.selectedDot.setAttribute("aria-current","step"))},s.prototype.onTap=s.prototype.onClick=function(t){var e=t.target;if("LI"==e.nodeName){this.parent.uiChange();var i=this.dots.indexOf(e);this.parent.select(i)}},s.prototype.destroy=function(){this.deactivate(),this.allOff()},e.PageDots=s,n.extend(e.defaults,{pageDots:!0}),e.createMethods.push("_createPageDots");var o=e.prototype;return o._createPageDots=function(){this.options.pageDots&&(this.pageDots=new s(this),this.on("activate",this.activatePageDots),this.on("select",this.updateSelectedPageDots),this.on("cellChange",this.updatePageDots),this.on("resize",this.updatePageDots),this.on("deactivate",this.deactivatePageDots))},o.activatePageDots=function(){this.pageDots.activate()},o.updateSelectedPageDots=function(){this.pageDots.updateSelected()},o.updatePageDots=function(){this.pageDots.setDots()},o.deactivatePageDots=function(){this.pageDots.deactivate()},e.PageDots=s,e}),function(t,n){"function"==typeof define&&define.amd?define("flickity/js/player",["ev-emitter/ev-emitter","fizzy-ui-utils/utils","./flickity"],function(t,e,i){return n(t,e,i)}):"object"==typeof module&&module.exports?module.exports=n(require("ev-emitter"),require("fizzy-ui-utils"),require("./flickity")):n(t.EvEmitter,t.fizzyUIUtils,t.Flickity)}(window,function(t,e,i){function n(t){this.parent=t,this.state="stopped",this.onVisibilityChange=this.visibilityChange.bind(this),this.onVisibilityPlay=this.visibilityPlay.bind(this)}(n.prototype=Object.create(t.prototype)).play=function(){"playing"!=this.state&&(document.hidden?document.addEventListener("visibilitychange",this.onVisibilityPlay):(this.state="playing",document.addEventListener("visibilitychange",this.onVisibilityChange),this.tick()))},n.prototype.tick=function(){if("playing"==this.state){var t=this.parent.options.autoPlay;t="number"==typeof t?t:3e3;var e=this;this.clear(),this.timeout=setTimeout(function(){e.parent.next(!0),e.tick()},t)}},n.prototype.stop=function(){this.state="stopped",this.clear(),document.removeEventListener("visibilitychange",this.onVisibilityChange)},n.prototype.clear=function(){clearTimeout(this.timeout)},n.prototype.pause=function(){"playing"==this.state&&(this.state="paused",this.clear())},n.prototype.unpause=function(){"paused"==this.state&&this.play()},n.prototype.visibilityChange=function(){this[document.hidden?"pause":"unpause"]()},n.prototype.visibilityPlay=function(){this.play(),document.removeEventListener("visibilitychange",this.onVisibilityPlay)},e.extend(i.defaults,{pauseAutoPlayOnHover:!0}),i.createMethods.push("_createPlayer");var s=i.prototype;return s._createPlayer=function(){this.player=new n(this),this.on("activate",this.activatePlayer),this.on("uiChange",this.stopPlayer),this.on("pointerDown",this.stopPlayer),this.on("deactivate",this.deactivatePlayer)},s.activatePlayer=function(){this.options.autoPlay&&(this.player.play(),this.element.addEventListener("mouseenter",this))},s.playPlayer=function(){this.player.play()},s.stopPlayer=function(){this.player.stop()},s.pausePlayer=function(){this.player.pause()},s.unpausePlayer=function(){this.player.unpause()},s.deactivatePlayer=function(){this.player.stop(),this.element.removeEventListener("mouseenter",this)},s.onmouseenter=function(){this.options.pauseAutoPlayOnHover&&(this.player.pause(),this.element.addEventListener("mouseleave",this))},s.onmouseleave=function(){this.player.unpause(),this.element.removeEventListener("mouseleave",this)},i.Player=n,i}),function(i,n){"function"==typeof define&&define.amd?define("flickity/js/add-remove-cell",["./flickity","fizzy-ui-utils/utils"],function(t,e){return n(i,t,e)}):"object"==typeof module&&module.exports?module.exports=n(i,require("./flickity"),require("fizzy-ui-utils")):n(i,i.Flickity,i.fizzyUIUtils)}(window,function(t,e,n){var i=e.prototype;return i.insert=function(t,e){var i=this._makeCells(t);if(i&&i.length){var n=this.cells.length;e=void 0===e?n:e;var s=function(t){var e=document.createDocumentFragment();return t.forEach(function(t){e.appendChild(t.element)}),e}(i),o=e==n;if(o)this.slider.appendChild(s);else{var r=this.cells[e].element;this.slider.insertBefore(s,r)}if(0===e)this.cells=i.concat(this.cells);else if(o)this.cells=this.cells.concat(i);else{var a=this.cells.splice(e,n-e);this.cells=this.cells.concat(i).concat(a)}this._sizeCells(i),this.cellChange(e,!0)}},i.append=function(t){this.insert(t,this.cells.length)},i.prepend=function(t){this.insert(t,0)},i.remove=function(t){var e=this.getCells(t);if(e&&e.length){var i=this.cells.length-1;e.forEach(function(t){t.remove();var e=this.cells.indexOf(t);i=Math.min(e,i),n.removeFrom(this.cells,t)},this),this.cellChange(i,!0)}},i.cellSizeChange=function(t){var e=this.getCell(t);if(e){e.getSize();var i=this.cells.indexOf(e);this.cellChange(i)}},i.cellChange=function(t,e){var i=this.selectedElement;this._positionCells(t),this._getWrapShiftCells(),this.setGallerySize();var n=this.getCell(i);n&&(this.selectedIndex=this.getCellSlideIndex(n)),this.selectedIndex=Math.min(this.slides.length-1,this.selectedIndex),this.emitEvent("cellChange",[t]),this.select(this.selectedIndex),e&&this.positionSliderAtSelected()},e}),function(i,n){"function"==typeof define&&define.amd?define("flickity/js/lazyload",["./flickity","fizzy-ui-utils/utils"],function(t,e){return n(i,t,e)}):"object"==typeof module&&module.exports?module.exports=n(i,require("./flickity"),require("fizzy-ui-utils")):n(i,i.Flickity,i.fizzyUIUtils)}(window,function(t,e,o){"use strict";e.createMethods.push("_createLazyload");var i=e.prototype;function s(t,e){this.img=t,this.flickity=e,this.load()}return i._createLazyload=function(){this.on("select",this.lazyLoad)},i.lazyLoad=function(){var t=this.options.lazyLoad;if(t){var e="number"==typeof t?t:0,i=this.getAdjacentCellElements(e),n=[];i.forEach(function(t){var e=function(t){if("IMG"==t.nodeName){var e=t.getAttribute("data-flickity-lazyload"),i=t.getAttribute("data-flickity-lazyload-src"),n=t.getAttribute("data-flickity-lazyload-srcset");if(e||i||n)return[t]}var s=t.querySelectorAll("img[data-flickity-lazyload], img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]");return o.makeArray(s)}(t);n=n.concat(e)}),n.forEach(function(t){new s(t,this)},this)}},s.prototype.handleEvent=o.handleEvent,s.prototype.load=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this);var t=this.img.getAttribute("data-flickity-lazyload")||this.img.getAttribute("data-flickity-lazyload-src"),e=this.img.getAttribute("data-flickity-lazyload-srcset");this.img.src=t,e&&this.img.setAttribute("srcset",e),this.img.removeAttribute("data-flickity-lazyload"),this.img.removeAttribute("data-flickity-lazyload-src"),this.img.removeAttribute("data-flickity-lazyload-srcset")},s.prototype.onload=function(t){this.complete(t,"flickity-lazyloaded")},s.prototype.onerror=function(t){this.complete(t,"flickity-lazyerror")},s.prototype.complete=function(t,e){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this);var i=this.flickity.getParentCell(this.img),n=i&&i.element;this.flickity.cellSizeChange(n),this.img.classList.add(e),this.flickity.dispatchEvent("lazyLoad",t,n)},e.LazyLoader=s,e}),function(t,e){"function"==typeof define&&define.amd?define("flickity/js/index",["./flickity","./drag","./prev-next-button","./page-dots","./player","./add-remove-cell","./lazyload"],e):"object"==typeof module&&module.exports&&(module.exports=e(require("./flickity"),require("./drag"),require("./prev-next-button"),require("./page-dots"),require("./player"),require("./add-remove-cell"),require("./lazyload")))}(window,function(t){return t}),function(t,e){"function"==typeof define&&define.amd?define("flickity-as-nav-for/as-nav-for",["flickity/js/index","fizzy-ui-utils/utils"],e):"object"==typeof module&&module.exports?module.exports=e(require("flickity"),require("fizzy-ui-utils")):t.Flickity=e(t.Flickity,t.fizzyUIUtils)}(window,function(n,s){n.createMethods.push("_createAsNavFor");var t=n.prototype;return t._createAsNavFor=function(){this.on("activate",this.activateAsNavFor),this.on("deactivate",this.deactivateAsNavFor),this.on("destroy",this.destroyAsNavFor);var t=this.options.asNavFor;if(t){var e=this;setTimeout(function(){e.setNavCompanion(t)})}},t.setNavCompanion=function(t){t=s.getQueryElement(t);var e=n.data(t);if(e&&e!=this){this.navCompanion=e;var i=this;this.onNavCompanionSelect=function(){i.navCompanionSelect()},e.on("select",this.onNavCompanionSelect),this.on("staticClick",this.onNavStaticClick),this.navCompanionSelect(!0)}},t.navCompanionSelect=function(t){var e=this.navCompanion&&this.navCompanion.selectedCells;if(e){var i=e[0],n=this.navCompanion.cells.indexOf(i),s=n+e.length-1,o=Math.floor(function(t,e,i){return(e-t)*i+t}(n,s,this.navCompanion.cellAlign));if(this.selectCell(o,!1,t),this.removeNavSelectedElements(),!(o>=this.cells.length)){var r=this.cells.slice(n,1+s);this.navSelectedElements=r.map(function(t){return t.element}),this.changeNavSelectedClass("add")}}},t.changeNavSelectedClass=function(e){this.navSelectedElements.forEach(function(t){t.classList[e]("is-nav-selected")})},t.activateAsNavFor=function(){this.navCompanionSelect(!0)},t.removeNavSelectedElements=function(){this.navSelectedElements&&(this.changeNavSelectedClass("remove"),delete this.navSelectedElements)},t.onNavStaticClick=function(t,e,i,n){"number"==typeof n&&this.navCompanion.selectCell(n)},t.deactivateAsNavFor=function(){this.removeNavSelectedElements()},t.destroyAsNavFor=function(){this.navCompanion&&(this.navCompanion.off("select",this.onNavCompanionSelect),this.off("staticClick",this.onNavStaticClick),delete this.navCompanion)},n}),function(e,i){"use strict";"function"==typeof define&&define.amd?define("imagesloaded/imagesloaded",["ev-emitter/ev-emitter"],function(t){return i(e,t)}):"object"==typeof module&&module.exports?module.exports=i(e,require("ev-emitter")):e.imagesLoaded=i(e,e.EvEmitter)}("undefined"!=typeof window?window:this,function(e,t){var s=e.jQuery,o=e.console;function r(t,e){for(var i in e)t[i]=e[i];return t}var a=Array.prototype.slice;function l(t,e,i){if(!(this instanceof l))return new l(t,e,i);var n=t;"string"==typeof t&&(n=document.querySelectorAll(t)),n?(this.elements=function(t){return Array.isArray(t)?t:"object"==typeof t&&"number"==typeof t.length?a.call(t):[t]}(n),this.options=r({},this.options),"function"==typeof e?i=e:r(this.options,e),i&&this.on("always",i),this.getImages(),s&&(this.jqDeferred=new s.Deferred),setTimeout(this.check.bind(this))):o.error("Bad element for imagesLoaded "+(n||t))}(l.prototype=Object.create(t.prototype)).options={},l.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},l.prototype.addElementImages=function(t){"IMG"==t.nodeName&&this.addImage(t),!0===this.options.background&&this.addElementBackgroundImages(t);var e=t.nodeType;if(e&&h[e]){for(var i=t.querySelectorAll("img"),n=0;n<i.length;n++){var s=i[n];this.addImage(s)}if("string"==typeof this.options.background){var o=t.querySelectorAll(this.options.background);for(n=0;n<o.length;n++){var r=o[n];this.addElementBackgroundImages(r)}}}};var h={1:!0,9:!0,11:!0};function i(t){this.img=t}function n(t,e){this.url=t,this.element=e,this.img=new Image}return l.prototype.addElementBackgroundImages=function(t){var e=getComputedStyle(t);if(e)for(var i=/url\((['"])?(.*?)\1\)/gi,n=i.exec(e.backgroundImage);null!==n;){var s=n&&n[2];s&&this.addBackground(s,t),n=i.exec(e.backgroundImage)}},l.prototype.addImage=function(t){var e=new i(t);this.images.push(e)},l.prototype.addBackground=function(t,e){var i=new n(t,e);this.images.push(i)},l.prototype.check=function(){var n=this;function e(t,e,i){setTimeout(function(){n.progress(t,e,i)})}this.progressedCount=0,this.hasAnyBroken=!1,this.images.length?this.images.forEach(function(t){t.once("progress",e),t.check()}):this.complete()},l.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&o&&o.log("progress: "+i,t,e)},l.prototype.complete=function(){var t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){var e=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[e](this)}},(i.prototype=Object.create(t.prototype)).check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.src)},i.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},i.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.img,e])},i.prototype.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},i.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},i.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},(n.prototype=Object.create(i.prototype)).check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},n.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},n.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},l.makeJQueryPlugin=function(t){(t=t||e.jQuery)&&((s=t).fn.imagesLoaded=function(t,e){return new l(this,t,e).jqDeferred.promise(s(this))})},l.makeJQueryPlugin(),l}),function(i,n){"function"==typeof define&&define.amd?define(["flickity/js/index","imagesloaded/imagesloaded"],function(t,e){return n(i,t,e)}):"object"==typeof module&&module.exports?module.exports=n(i,require("flickity"),require("imagesloaded")):i.Flickity=n(i,i.Flickity,i.imagesLoaded)}(window,function(t,e,i){"use strict";e.createMethods.push("_createImagesLoaded");var n=e.prototype;return n._createImagesLoaded=function(){this.on("activate",this.imagesLoaded)},n.imagesLoaded=function(){if(this.options.imagesLoaded){var n=this;i(this.slider).on("progress",function(t,e){var i=n.getParentCell(e.img);n.cellSizeChange(i&&i.element),n.options.freeScroll||n.positionSliderAtSelected()})}},e});
\ No newline at end of file
diff --git a/landingpage/assets/js/landingpg.js b/landingpage/assets/js/landingpg.js
new file mode 100644
index 0000000000000000000000000000000000000000..e94dcb0aa7129475a405284a854219153150cef7
--- /dev/null
+++ b/landingpage/assets/js/landingpg.js
@@ -0,0 +1,7 @@
+"use strict"
+window.addEventListener("load", (e)=>{
+
+
+});
+var bubbles = document.getElementsByClassName(".kimi-faq__question");
+alert(bubbles.length)
diff --git a/landingpage/assets/js/mockup.js b/landingpage/assets/js/mockup.js
new file mode 100644
index 0000000000000000000000000000000000000000..7ce5f679452d4d480fe55dd61f19c1e9fd50f4a3
--- /dev/null
+++ b/landingpage/assets/js/mockup.js
@@ -0,0 +1,123 @@
+"use strict";
+
+function toggleChat(){
+    let chat = document.getElementsByClassName("chat")[0];
+    let bubble = document.getElementsByClassName("chatbot__bubble")[0];
+
+    if(chat.classList.contains("chat--open")) {
+        chat.classList.remove("chat--open");
+        chat.classList.add("chat--closed");
+    } else {
+        chat.classList.remove("chat--closed");
+        chat.classList.add("chat--open");
+    }
+
+    if(bubble.classList.contains("chatbot__bubble--active")){
+        bubble.classList.remove("chatbot__bubble--active");
+        bubble.classList.add("chatbot__bubble--inactive");
+    } else {
+        bubble.classList.remove("chatbot__bubble--inactive");
+        bubble.classList.add("chatbot__bubble--active");
+    }
+}
+
+function openChat(){
+
+    let chat = document.getElementsByClassName("chat")[0];
+    let bubble = document.getElementsByClassName("chatbot__bubble")[0];
+    bubble.classList.remove("chatbot__bubble--inactive");
+    bubble.classList.add("chatbot__bubble--active");
+    chat.classList.remove("chat--closed");
+    chat.classList.add("chat--open");
+}
+
+function closeChat(){
+
+    let chat = document.getElementsByClassName("chat")[0];
+    let bubble = document.getElementsByClassName("chatbot__bubble")[0];
+    bubble.classList.remove("chatbot__bubble--active");
+    bubble.classList.add("chatbot__bubble--inactive");
+    chat.classList.remove("chat--open");
+    chat.classList.add("chat--closed");
+}
+
+window.addEventListener("scroll", () => {
+    /*
+    let elementTarget = document.getElementsByClassName("kimi-section")[0];
+    //console.log(elementTarget.offsetTop + (elementTarget.offsetHeight /);
+    if (window.scrollY > (elementTarget.offsetTop - elementTarget.offsetHeight)) {
+        openChat();
+    }*/
+});
+
+/* start flickity */
+var flkty = new Flickity( '.links', {
+    // options
+    cellAlign: 'center',
+    contain: true,
+    watchCSS: true
+});
+
+function showAnswer(answerNumber) {
+  var answer = document.getElementById("answer-"+answerNumber);
+  var btn = document.getElementById("btn-"+answerNumber);
+
+  if (answer.style.display === "inline-block") {
+    answer.style.display = "none";
+      btn.style.background="lightseagreen";
+      btn.firstChild.data="+";
+  } else {
+    answer.style.display = "inline-block";
+    btn.style.background="#FE642E";
+    btn.firstChild.data="-";
+  }
+}
+
+function createCSVData(data)
+{
+  let faq_gen = document.getElementById("faq-gen");
+ var csvFile = data.split(";");
+ csvFile.forEach((item, i) => {
+   var qa = item.split("#");
+   var q = document.createTextNode(qa[0]);
+   var a = document.createTextNode(qa[1]);
+  var div = document.createElement("div");
+  div.classList.add("question");
+
+  var h = document.createElement("h2");
+  h.setAttribute("id", "question-"+i);
+  h.setAttribute("onclick", "showAnswer("+i+")");
+  h.appendChild(q);
+  div.appendChild(h);
+
+  var btn = document.createElement("button");
+  btn.setAttribute("class", "plus-button");
+  btn.setAttribute("id", "btn-"+i);
+  btn.setAttribute("onclick", "showAnswer("+i+")");
+  btn.appendChild(document.createTextNode("+"));
+  div.appendChild(btn);
+
+
+  var a_div = document.createElement("div");
+  a_div.classList.add("answer");
+  a_div.setAttribute("id", "answer-"+i);
+
+  var p = document.createElement("p");
+  p.appendChild(a);
+  a_div.appendChild(p);
+  faq_gen.appendChild(div);
+  faq_gen.appendChild(a_div);
+
+ });
+}
+
+window.addEventListener("load",() => {
+  var xhttp = new XMLHttpRequest();
+  xhttp.onreadystatechange = function() {
+      if (this.readyState == 4 && this.status == 200) {
+         createCSVData(xhttp.responseText);
+      }
+  };
+  xhttp.open("GET", "assets/csv/faq.csv", true);
+  xhttp.send();
+});
diff --git a/landingpage/index.html b/landingpage/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..22be3572609709af4a8cf1352df9046a005b045a
--- /dev/null
+++ b/landingpage/index.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+
+<html lang="de">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
+    <link href="https://fonts.googleapis.com/css2?family=Indie+Flower&display=swap" rel="stylesheet">
+    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap" rel="stylesheet">
+    <link rel="stylesheet" href="assets/css/flickity.css">
+    <link rel="stylesheet" href="assets/css/main.css">
+
+    <title>h_da - Kommunikation und Medien in der Informatik</title>
+</head>
+<body>
+    <header class="main-header">
+        <nav class="main-nav">
+            <div class="container">
+                <img class="brand" alt="hda logo" src="assets/images/hda-logo.png">
+                <ul class="main-nav__languages">
+                    <li><a href="#">EN</a></li><li><a href="#">DE</a></li>
+                </ul>
+            </div>
+        </nav>
+        <section class="section section--teaser">
+            <div class="container container--flex">
+                <div class="main-header__heading">
+                    <h1>Kommunikation und Medien in der Informatik</h1>
+                </div>
+                <div class="main-header__teaser">
+                    <div class="kimi-teaser">
+                        <img class="kimi-teaser__image" src="assets/images/kimi/winking.png" alt="">
+                        <div class="kimi-teaser__input">
+                            <input type="text" placeholder="Frag mich doch mal was ..." />
+                            <div id="chatbutton_holder">
+                              <div  class="chatbot_button chatbot_button--inactive" onclick="toggleChat()"></div>
+                                <img src="assets/images/kimi/bubble_active.png" alt="send kimi a message" class="blinkerButton"/>
+                              </div>
+                            </div>
+                        </div>
+                </div>
+            </div>
+        </section>
+        <div class="main-header__footer">
+            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 110" class="main-header__footer__waves" preserveAspectRatio="none" >
+                <path d="m 0,2 79.382504,0.562607 c 79.997986,0.566969 239.999996,0 399.999996,16 160,16.000003 320,48.000003 480,58.700003 160,10.3 320,0.3 400,-5.4 L 1440,64.71012 V 112 H 0 Z" style="fill:#2eccfa;fill-opacity:0.7" />
+                <path d="m 0,14.912524 h 80.000001 c 80.000009,0 240.000009,0 400.000009,19.131586 160,19.13158 320,57.39475 480,70.189 C 1120,116.54907 1280,104.59183 1360,97.7762 l 80,-6.33734 V 112 H 0 Z" style="fill:#ffffff;fill-opacity:1;stroke-width:1.09349167"/>
+            </svg>
+        </div>
+    </header>
+    <main>
+        <section class="section section--introduction">
+            <div class="container container--flex">
+                <h2>Introduction</h2>
+                <div class="info-article info-article--video highlighted">
+                    <div class="info-article__media">
+                        <iframe class="info-article__media--youtube" src="https://www.youtube.com/embed/6LOnEMBuW0I" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+                    </div>
+                </div>
+                <div class="info-article info-article--text">
+                    <h2>Was ist KMI?</h2>
+                    <p class="info-article__description">
+                  Im Bachelor-Studiengang Informatik mit Schwerpunkt Kommunikation und Medien in der Informatik (KMI) erlernen
+                   Studierende zunächst die fachlichen und methodischen Grundlagen der
+                   Informatik einschließlich der gängigen Programmiersprachen.
+                   Einen Schwerpunkt des Curri-culums bildet die theoretische und praktische Softwareentwicklung und kommunikative Kompetenzen wie Teamreflexion im Fokus.
+                </p>
+                </div>
+                <div class="info-article info-article--text">
+                    <h2>Projekte stehen im Vordergrund</h2>
+                    <p class="info-article__description">
+                        Bereits im ersten Semester starten Sie mit einem Projekt und lernen so wesentliche Elemente der Informatik kennen,
+                         die Organisation über
+                         <a href="https://about.gitlab.com/">gitlab</a>
+                         , erste Erfahrungen mit der agilen Methode
+                         <a href="https://de.wikipedia.org/wiki/Scrum">Scrum</a>,
+                          Einblicke in nutzerzentrierte Softwareentwicklung und
+                          <a href="https://www.interaction-design.org/literature/topics/ux-design">UX</a>
+                           und natürlich die Um-setzung der eigenen Ideen unter Verwendung von
+                           <a href="http://www.appinventor.org/">AppInventor</a>
+                            (für Studierende, die ohne Programmier Vorkenntnisse bei uns starten),
+                            <a href="https://about.gitlab.com/https://www.arduino.cc/">Arduino</a>
+                            ,
+                            <a href="https://p5js.org/">p5js</a>
+                             (für Studierende mit Programmierkenntnissen). Links auf dieser Seite finden Sie daraus entstandenen Videos des WiSe18/19 und des WiSe19/20.</p>
+                </div>
+                <div class="info-article info-article--video highlighted">
+                    <div class="info-article__media">
+                        <iframe class="info-article__media--youtube" src="https://www.youtube.com/embed/7-zvaghwb6M" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+                    </div>
+                </div>
+                <div class="info-article info-article--video highlighted">
+                    <div class="info-article__media">
+                        <iframe class="info-article__media--youtube" src="https://www.youtube.com/embed/OEgASTpkwmw" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+                    </div>
+                </div>
+                <div class="info-article info-article--text">
+                    <h2>KMI vs Informatik</h2>
+                    <p class="info-article__description">
+                    Der Studienschwerpunkt Kommunikation und Medien in der Informatik
+                    ist eine Variante des Allgemeinen Bachelors Informatik. Die Variante
+                    Kommunikation und Medien ist zu ca. 80% identisch mit dem allgemeinen
+                    Bachelor Informatik, d.h. auch diese Variante ist ein
+                    Informatikstudium mit einem hohen Programmier Anteil.
+                    In jedem Semester werden Akzente gesetzt: Im ersten und
+                    dritten Semester ha-ben Sie beispielsweise ein Projekt
+                        anstelle eher technisch ausge-richteter Module und im fünften
+                        Semester absolvieren Sie die Hälfte Ihrer Wahlpflichtmodule am
+                        Fachbereich Media.
+                </p>
+                </div>
+            </div>
+        </section>
+        <section class="section section--links">
+            <div class="container">
+                <h2>Wichtige Portale für dein Studium</h2>
+                <div class="links">
+                    <div class="link gallery-cell"><a href=""><img class="link__thumbnail" src="assets/images/obs_standart.png" title="Online Belegsystem OBS" /></a></div>
+                    <div class="link gallery-cell"><a href=""><img class="link__thumbnail" src="assets/images/qis_standart.png" title="Onlinesystem QIS" /></a></div>
+                    <div class="link gallery-cell"><a href="https://lernen.h-da.de"><img class="link__thumbnail" src="assets/images/moodleLogo.png" title="Moodle" /></a></div>
+                    <div class="link gallery-cell"><a href="https://webmail.stud.h-da.de"><img class="link__thumbnail" src="assets/images/roundcube.png" title="Discord Channel des Fachbereichs Informatik" /></a></div>
+                    <div class="link gallery-cell"><a href="https://code.fbi.h-da.de"><img class="link__thumbnail" src="assets/images/GitLab_Logo.svg.png" title="GitLab der Hochschule Darmstadt" /></a></div>
+                    <div class="link gallery-cell"><a href="https://fbihome.de"><img class="link__thumbnail" src="assets/images/fbiLogo.png" title="Fachbereich Informatik" /></a></div>
+                    <div class="link gallery-cell"><a href="https://discord.com/invite/22w3knc"><img class="link__thumbnail" src="assets/images/dc.png" title="Discord Channel des Fachbereichs Informatik" /></a></div>
+                </div>
+            </div>
+        </section>
+        <div id="faq"></div>
+        <section class="section section--faq" id="faq-section">
+            <div class="container">
+                <h2>FAQ</h2>
+                <hr>
+                <div class="question-answer-block" id="faq-gen">
+
+                </div>
+            </div>
+        </section>
+        <section class="section section--kimi">
+            <h2>Noch Fragen?</h2>
+            <div class="container">
+                <div class="kimi-faq">
+                    <img class="kimi-faq__avatar" alt="kimi is a happy chatbot" src="assets/images/kimi/happy.png" />
+                    <div class="kimi-faq__questions">
+                        <p class="kimi-faq__question speech-bubble speech-bubble--left-bottom">Wer bist du?</p>
+                        <p class="kimi-faq__question speech-bubble speech-bubble--left-bottom">Wo ist Gebäude D10?</p>
+                        <p class="kimi-faq__question speech-bubble speech-bubble--left-bottom">Was ist KMI?</p>
+                        <p class="kimi-faq__question speech-bubble speech-bubble--left-bottom">Erzähl mal einen Witz!</p>
+                    </div>
+                </div>
+            </div>
+        </section>
+        <aside class="chatbot">
+            <div class="chat chat--closed">
+                <div class="chat__header">
+                    <a href="#">gib mir feedback</a>
+                    <a href="#" class="chat__header__minimize" onclick="closeChat()">&#x2304;</a>
+                </div>
+                <div class="chat__dialogue">
+                    <div class="chat__dialogue__answer speech-bubble speech-bubble--left-top">
+                        <p>Hallo ich bin KIMI :)<br>Wie kann ich dir helfen?</p>
+                    </div>
+                    <div class="chat__dialogue__question speech-bubble speech-bubble--right-bottom">
+                        <p>Na du bist ja ein Süßer!</p>
+                    </div>
+                    <div class="chat__dialogue__answer speech-bubble speech-bubble--left-top">
+                        <p>Danke dir :)</p>
+                    </div>
+                </div>
+                <div class="chat__footer">
+                    <input type="text" class="chat__input" name="question" >
+                    <a class="chat__input__submit" href="#">&#x25B6;</a>
+                </div>
+            </div>
+            <div class="chatbot__bubble chatbot__bubble--inactive" onclick="toggleChat()">
+            </div>
+        </aside>
+    </main>
+    <footer class="main-footer">
+        <div class="container">
+            <article class="footer-item">
+                <h3>Fachbereich Informatik</h3>
+                <p>Haardtring 100<br> 64295 Darmstadt</p><p><strong>ZENTRALE</strong><br> Telefon +49.6151.16-02</p><p><strong>STUDENT SERVICE CENTER</strong><br> Telefon +49.6151.16-33333<br><a href="https://www.h-da.de/?16445" title="Öffnet externen Link in neuem Fenster" target="_blank" class="external-link-new-window">Student Service Center</a></p>
+            </article>
+        </div>
+    </footer>
+    <script src="assets/js/flickity.pkgd.min.js"></script>
+    <script src="assets/js/mockup.js"></script>
+</body>
+</html>
diff --git a/need_to_implement/.gitkeep b/need_to_implement/.gitkeep
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/need_to_implement/faq/.gitkeep b/need_to_implement/faq/.gitkeep
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/need_to_implement/faq/faq.csv b/need_to_implement/faq/faq.csv
new file mode 100644
index 0000000000000000000000000000000000000000..a9aa4a790c109ecd349178ce5568e49690a76c59
--- /dev/null
+++ b/need_to_implement/faq/faq.csv
@@ -0,0 +1 @@
+What ist KIMI?,KIMI is our chatbot,what does KIMI?,KIMI help students who are new to university,Test question?,Answer for test question
diff --git a/need_to_implement/faq/faq.php b/need_to_implement/faq/faq.php
new file mode 100644
index 0000000000000000000000000000000000000000..f0f29ba5c09b85b8b99552fa3394e1234fd5bfde
--- /dev/null
+++ b/need_to_implement/faq/faq.php
@@ -0,0 +1,41 @@
+<html>
+<head>
+    <title>Title</title>
+    <style type="text/css">
+.question{
+    color:blue;
+    font-weight: bold;
+    text-align: center;
+
+}
+.answer{
+    color:black;
+    text-align: center;
+
+    }
+.faq-header{
+            font-family:bold;
+            text-align: center;
+        }
+</style>
+    </head>
+    <body>
+        <p class="faq-header">Frequently Asked Questions</p>
+<?php
+if (($handle = fopen("faq.csv", "r")) !== FALSE) {
+    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
+        $num = count($data);
+        for ($c=0; $c < $num; $c++) {
+            
+            if (($c % 2) ==0) {echo "<p class=\"question\" > " ;echo $data[$c];}
+            else if (($c % 2) ==1) {echo "<p class=\"answer\" > " . $data[$c];}
+            
+            echo "</p>";
+                       
+        }
+    }
+    fclose($handle);
+}
+?>
+    </body>
+</html>
\ No newline at end of file