diff --git a/.gitignore b/.gitignore
index dd15bf4..21b33b1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
-**/node_modules
-**/.env
-**/package-lock.json
+_site
+.sass-cache
+.jekyll-cache
+.jekyll-metadata
+vendor
+.vscode
\ No newline at end of file
diff --git a/.nojekyll b/.nojekyll
deleted file mode 100644
index e69de29..0000000
diff --git a/404.html b/404.html
new file mode 100644
index 0000000..d214c31
--- /dev/null
+++ b/404.html
@@ -0,0 +1,27 @@
+---
+permalink: /404.html
+layout: default
+---
+
+
+
+
+
+
404
+
+
Page not found :(
+
The requested page could not be found.
+
+
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..b2b247d
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,30 @@
+source "https://rubygems.org"
+# Hello! This is where you manage which Jekyll version is used to run.
+# When you want to use a different version, change it below, save the
+# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
+#
+# bundle exec jekyll serve
+#
+# This will help ensure the proper Jekyll version is running.
+# Happy Jekylling!
+gem "jekyll", "~> 4.2.1"
+# This is the default theme for new Jekyll sites. You may change this to anything you like.
+gem "minima", "~> 2.5"
+# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
+# uncomment the line below. To upgrade, run `bundle update github-pages`.
+# gem "github-pages", group: :jekyll_plugins
+# If you have any plugins, put them here!
+group :jekyll_plugins do
+ gem "jekyll-feed", "~> 0.12"
+end
+
+# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
+# and associated library.
+platforms :mingw, :x64_mingw, :mswin, :jruby do
+ gem "tzinfo", "~> 1.2"
+ gem "tzinfo-data"
+end
+
+# Performance-booster for watching directories on Windows
+gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
+
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000..3da8caa
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,80 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ addressable (2.8.1)
+ public_suffix (>= 2.0.2, < 6.0)
+ colorator (1.1.0)
+ concurrent-ruby (1.1.10)
+ em-websocket (0.5.3)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0)
+ eventmachine (1.2.7)
+ ffi (1.15.5)
+ forwardable-extended (2.6.0)
+ http_parser.rb (0.8.0)
+ i18n (1.12.0)
+ concurrent-ruby (~> 1.0)
+ jekyll (4.2.2)
+ addressable (~> 2.4)
+ colorator (~> 1.0)
+ em-websocket (~> 0.5)
+ i18n (~> 1.0)
+ jekyll-sass-converter (~> 2.0)
+ jekyll-watch (~> 2.0)
+ kramdown (~> 2.3)
+ kramdown-parser-gfm (~> 1.0)
+ liquid (~> 4.0)
+ mercenary (~> 0.4.0)
+ pathutil (~> 0.9)
+ rouge (~> 3.0)
+ safe_yaml (~> 1.0)
+ terminal-table (~> 2.0)
+ jekyll-feed (0.16.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-sass-converter (2.2.0)
+ sassc (> 2.0.1, < 3.0)
+ jekyll-seo-tag (2.8.0)
+ jekyll (>= 3.8, < 5.0)
+ jekyll-watch (2.2.1)
+ listen (~> 3.0)
+ kramdown (2.4.0)
+ rexml
+ kramdown-parser-gfm (1.1.0)
+ kramdown (~> 2.0)
+ liquid (4.0.3)
+ listen (3.7.1)
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
+ mercenary (0.4.0)
+ minima (2.5.1)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-feed (~> 0.9)
+ jekyll-seo-tag (~> 2.1)
+ pathutil (0.16.2)
+ forwardable-extended (~> 2.6)
+ public_suffix (4.0.7)
+ rb-fsevent (0.11.2)
+ rb-inotify (0.10.1)
+ ffi (~> 1.0)
+ rexml (3.2.5)
+ rouge (3.30.0)
+ safe_yaml (1.0.5)
+ sassc (2.4.0)
+ ffi (~> 1.9)
+ terminal-table (2.0.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ unicode-display_width (1.8.0)
+
+PLATFORMS
+ x86_64-linux
+
+DEPENDENCIES
+ jekyll (~> 4.2.1)
+ jekyll-feed (~> 0.12)
+ minima (~> 2.5)
+ tzinfo (~> 1.2)
+ tzinfo-data
+ wdm (~> 0.1.1)
+
+BUNDLED WITH
+ 2.3.4
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2b56d95
--- /dev/null
+++ b/README.md
@@ -0,0 +1,21 @@
+# Serve with Jekyll
+
+#### Install Jekyll
+```bash
+ npm install jekyll bundler
+```
+
+#### Serve project with Jekyll
+```bash
+ bundle exec jekyll serve
+```
+
+
+#### Build for production
+
+*The builded folder must be pushed to update the website *
+```bash
+ jekyll build -d ./docs
+ touch ./docs/.nojekyll
+```
+
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 0000000..9e74754
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1,61 @@
+# Welcome to Jekyll!
+#
+# This config file is meant for settings that affect your whole blog, values
+# which you are expected to set up once and rarely edit after that. If you find
+# yourself editing this file very often, consider using Jekyll's data files
+# feature for the data you need to update frequently.
+#
+# For technical reasons, this file is *NOT* reloaded automatically when you use
+# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
+#
+# If you need help with YAML syntax, here are some quick references for you:
+# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
+# https://learnxinyminutes.com/docs/yaml/
+#
+# Site settings
+# These are used to personalize your new site. If you look in the HTML files,
+# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
+# You can create any custom variable you would like, and they will be accessible
+# in the templates via {{ site.myvariable }}.
+
+title: Your awesome title
+email: your-email@example.com
+description: >- # this means to ignore newlines until "baseurl:"
+ Write an awesome description for your new site here. You can edit this
+ line in _config.yml. It will appear in your document head meta (for
+ Google search results) and in your feed.xml site description.
+baseurl: "" # the subpath of your site, e.g. /blog
+url: "" # the base hostname & protocol for your site, e.g. http://example.com
+twitter_username: jekyllrb
+github_username: jekyll
+
+# Build settings
+theme: minima
+plugins:
+ - jekyll-feed
+sass:
+ sass_dir: _sass
+defaults:
+ - scope:
+ path: "assets/img"
+ values:
+ image: true
+# Exclude from processing.
+# The following items will not be processed, by default.
+# Any item listed under the `exclude:` key here will be automatically added to
+# the internal "default list".
+#
+# Excluded items can be processed by explicitly listing the directories or
+# their entries' file path in the `include:` list.
+#
+# exclude:
+# - .sass-cache/
+# - .jekyll-cache/
+# - gemfiles/
+# - Gemfile
+# - Gemfile.lock
+# - node_modules/
+# - vendor/bundle/
+# - vendor/cache/
+# - vendor/gems/
+# - vendor/ruby/
diff --git a/_includes/footer.html b/_includes/footer.html
new file mode 100644
index 0000000..a08077a
--- /dev/null
+++ b/_includes/footer.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/header.html b/_includes/header.html
new file mode 100644
index 0000000..2041f94
--- /dev/null
+++ b/_includes/header.html
@@ -0,0 +1,83 @@
+
+
+
+
\ No newline at end of file
diff --git a/_includes/meeting-room-svg.html b/_includes/meeting-room-svg.html
new file mode 100644
index 0000000..b3c4328
--- /dev/null
+++ b/_includes/meeting-room-svg.html
@@ -0,0 +1,1540 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_layouts/default.html b/_layouts/default.html
new file mode 100644
index 0000000..f6d2ec2
--- /dev/null
+++ b/_layouts/default.html
@@ -0,0 +1,54 @@
+---
+---
+
+
+
+
+
+
+
+
+
+
+
+ {{ page.title }}
+
+
+
+
+
+
+ {% include header.html %}
+ {{ content }}
+ {% include footer.html %}
+
+
+
\ No newline at end of file
diff --git a/_posts/2022-09-06-welcome-to-jekyll.markdown b/_posts/2022-09-06-welcome-to-jekyll.markdown
new file mode 100644
index 0000000..04d7bed
--- /dev/null
+++ b/_posts/2022-09-06-welcome-to-jekyll.markdown
@@ -0,0 +1,29 @@
+---
+layout: post
+title: "Welcome to Jekyll!"
+date: 2022-09-06 14:44:29 +0200
+categories: jekyll update
+---
+You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
+
+Jekyll requires blog post files to be named according to the following format:
+
+`YEAR-MONTH-DAY-title.MARKUP`
+
+Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
+
+Jekyll also offers powerful support for code snippets:
+
+{% highlight ruby %}
+def print_hi(name)
+ puts "Hi, #{name}"
+end
+print_hi('Tom')
+#=> prints 'Hi, Tom' to STDOUT.
+{% endhighlight %}
+
+Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
+
+[jekyll-docs]: https://jekyllrb.com/docs/home
+[jekyll-gh]: https://github.com/jekyll/jekyll
+[jekyll-talk]: https://talk.jekyllrb.com/
diff --git a/_sass/cognitiveapis.scss b/_sass/cognitiveapis.scss
new file mode 100644
index 0000000..501b853
--- /dev/null
+++ b/_sass/cognitiveapis.scss
@@ -0,0 +1,16 @@
+
+.apis-schema-item{
+ padding: 20px;
+ border: 1px solid $blueChart;
+ @include borderRadius(10px);
+ width: 80%;
+
+}
+.apis-schema-img{
+ display: inline-block;
+ width: 80%;
+ height: auto;
+ &.brain{
+ max-width: 160px;
+ }
+}
\ No newline at end of file
diff --git a/_sass/contact.scss b/_sass/contact.scss
new file mode 100644
index 0000000..2b46d19
--- /dev/null
+++ b/_sass/contact.scss
@@ -0,0 +1,114 @@
+.form-field{
+ padding: 5px 0;
+ margin: 5px 0;
+
+ .label {
+ display: inline-block;
+ font-size: 14px;
+ font-weight: 500;
+ padding: 0 0 5px 0;
+ i{
+ font-weight: 600;
+ color: $redChart;
+ }
+ }
+ input{
+ display: inline-block;
+ border: 1px solid #ccc;
+ @include borderRadius(5px);
+ font-size: 15px;
+ color: $textDefault;
+ min-width: 160px;
+ padding: 10px;
+ background-color: #f2f2f2;
+ &.error{
+ border-color: $redChart;
+ }
+ }
+ textarea{
+ font-size: 15px;
+ color: $textDefault;
+ background-color: #f2f2f2;
+ display: inline-block;
+ border: 1px solid #ccc;
+ min-height: 80px;
+ line-height: 1.5em;
+ &.error{
+ border-color: $redChart;
+ }
+ }
+ .error-field{
+ color: $redChart;
+ font-size: 12px;
+ padding: 3px 0;
+ font-style: italic;
+ }
+}
+.contact-item{
+ padding: 5px 0;
+ margin: 10px 0;
+ .icon{
+ display: inline-block;
+ width: 30px;
+ height: 30px;
+ background: $greenChart;
+ margin: 0 5px;
+ &.mail{
+ @include maskImage('../assets/img/mail.svg');
+ }
+ &.phone{
+ @include maskImage('../assets/img/phone.svg');
+ }
+ &.map{
+ @include maskImage('../assets/img/pin.svg');
+ }
+ }
+ .info{
+ font-size: 16px;
+ a{
+ font-weight: 500;
+ color: $textDefault;
+ text-decoration: underline;
+ &:hover{
+ color: $greenChart;
+ }
+ }
+ }
+}
+
+.mapouter{
+ position:relative;
+ text-align:right;
+ height:400px;
+ width:auto;
+}
+.gmap_canvas {
+ overflow:hidden;
+ background:none!important;
+ height:400px;
+ width:auto;
+ box-sizing: border-box;
+}
+
+.contact-notif{
+ padding: 10px 20px;
+ margin: 10px 0;
+ @include borderRadius(5px);
+ color: #fff;
+ font-size: 14px;
+ font-weight: 500;
+ text-align: center;
+ box-sizing: border-box;
+ a{
+ display: inline;
+ &:hover{
+ text-decoration: underline;
+ }
+ }
+ &.success{
+ background-color: $greenChart;
+ }
+ &.error{
+ background-color: $redChart;
+ }
+}
\ No newline at end of file
diff --git a/_sass/demoapis.scss b/_sass/demoapis.scss
new file mode 100644
index 0000000..cf2d001
--- /dev/null
+++ b/_sass/demoapis.scss
@@ -0,0 +1,528 @@
+
+/* Transcription API */
+
+#api-transcription-container {
+ background-color: #fff;
+ @include borderRadius(10px);
+ margin: 20px auto;
+ @include boxShadow(0, 2px, 4px, 0, rgba(0, 0, 0, 0.3));
+ overflow: hidden;
+ width: 100%;
+}
+
+.api-transcription-field {
+ margin: 10px 0;
+ padding: 0 20px;
+ .field-label{
+ display: inline-block;
+ text-align: left;
+ color: #848484 ;
+ font-size: 14px;
+ margin-bottom: 5px;
+ }
+ .input-label {
+ display: inline-block;
+ color: $textDefault;
+ font-size: 15px;
+ padding-right: 15px;
+ &:hover{
+ cursor: pointer;
+ }
+ }
+ input[type="radio"]{
+ display: inline-block ;
+ -webkit-appearance: radio;
+ padding: 0 ;
+ margin: 0 3px;
+ height: 16px;
+ width: 16px;
+ &:hover{
+ cursor: pointer;
+ }
+ }
+ select{
+ display: flex;
+ flex:1;
+ padding: 10px;
+ border: 1px solid #ccc;
+ @include borderRadius(5px);
+ font-size: 15px;
+ color: $textDefault;
+ min-width: 160px;
+ background-color: #f2f2f2;
+ &:hover{
+ border-color: #555;
+ cursor: pointer;
+ }
+ &[disabled]{
+ background: #ccc;
+ color: #555;
+ &:hover{
+ border-color: #ccc;
+ color: #555;
+ cursor: not-allowed;
+ }
+ }
+ }
+ &.inline{
+ .field-label{
+ color: $textDefault;
+ padding-right: 10px;
+ margin: 0;
+ }
+
+ }
+}
+
+.toggle-input {
+ display: inline-block;
+ padding: 0;
+ margin: 0;
+ width: 46px;
+ height: 24px;
+ background: #ccc;
+ border: none;
+ position: relative;
+ @include borderRadius(14px);
+ @include transition(all 0.2s ease-out);
+
+ .toggle-icon {
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ padding: 0;
+ margin: 0;
+ position: absolute;
+ top: 2px;
+ left: 2px;
+ z-index: 2;
+ background-color: #fff;
+ @include borderRadius(12px);
+ @include transition(all 0.2s ease-out);
+ }
+ &:hover{
+ cursor: pointer;
+ }
+ &.selected {
+ background-color: $greenChart;
+ .toggle-icon {
+ left: 24px;
+ }
+ }
+}
+
+
+.api-transcription-btn-container {
+ background-color: #e2e2e2;
+ display: flex;
+ align-items: center;
+ justify-content: space-evenly;
+ flex-direction: column;
+}
+
+.api-transcription-btn {
+ display: inline-block;
+ padding: 0;
+ width: 100%;
+ text-align: center;
+ height: 40px;
+ border: none;
+ margin: 10px 0;
+ @include borderRadius(5px);
+ @include transition(all 0.2s ease-out);
+ @include boxShadow(0, 2px, 4px, 0, rgba(0, 0, 0, 0.3));
+
+ &.transcribing{
+ &, &:hover{
+ background-color: #ccc !important;
+ }
+ }
+ span {
+ display: inline-block;
+ line-height: 40px;
+ vertical-align: top;
+ @include transition(all 0.2s ease-out);
+ }
+ .icon {
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ margin: 10px 5px 0 0;
+ background-color: #fff;
+ &.icon-mic {
+ @include maskImage('../assets/img/mic.svg');
+ }
+ &.icon-play {
+ @include maskImage('../assets/img/mic.svg');
+ }
+ &.icon-download {
+ @include maskImage('../assets/img/download.svg');
+ }
+ }
+ .label {
+ display: inline-block;
+ font-size: 14px;
+ font-weight: 600;
+ text-transform: uppercase;
+ color: #fff;
+ }
+ &:hover{
+ cursor: pointer;
+ }
+ &.red {
+ background-color: $redChart;
+ &:hover{
+ background-color: #fff;
+ .label{
+ color: $redChart;
+ }
+ .icon{
+ background-color: $redChart;
+ }
+ }
+ }
+ &.blue {
+ background-color: $blueBtn;
+ &:hover {
+ background-color: $blueBtn;
+ }
+ }
+ &.green {
+ background-color: $greenChart;
+ &:hover {
+ background-color: #2b8d6a;
+ }
+ }
+ &.recording {
+ -webkit-animation: blinkRedWhite 2s infinite;
+ -moz-animation: blinkRedWhite 2s infinite;
+ -ms-animation: blinkRedWhite 2s infinite;
+ -o-animation: blinkRedWhite 2s infinite;
+ animation: blinkRedWhite 2s infinite;
+ .icon {
+ -webkit-animation: blinkWhiteRed 2s infinite;
+ -moz-animation: blinkWhiteRed 2s infinite;
+ -ms-animation: blinkWhiteRed 2s infinite;
+ -o-animation: blinkWhiteRed 2s infinite;
+ animation: blinkWhiteRed 2s infinite;
+ }
+ }
+}
+
+#api-transcription-upload-field {
+ width: 100%;
+ box-sizing: border-box;
+}
+
+#api-transcription-file {
+ position: absolute;
+ z-index: -1;
+ top: 5px;
+ left: 5px;
+ width: 1px;
+ height: 1px;
+ cursor: pointer;
+}
+
+#api-transcription-file-btn {
+ display: inline-block;
+ min-width: 120px;
+ width: 100%;
+ text-align: center;
+ padding: 10px;
+ border: none;
+ background-color: $blueChart;
+ color: #fff;
+ z-index: 5;
+ @include borderRadius(5px);
+ @include transition(all 0.2s ease-out);
+ @include boxShadow(0, 2px, 4px, 0, rgba(0, 0, 0, 0.3));
+ box-sizing: border-box;
+ &.error {
+ background: $redChart;
+ &:hover {
+ background: #f13700;
+ }
+ }
+ .icon {
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ background-color: #fff;
+ vertical-align: top;
+ @include maskImage('../assets/img/upload.svg');
+ }
+ .label {
+ vertical-align: top;
+ display: inline-block;
+ font-size: 14px;
+ height: 20px;
+ line-height: 20px;
+ font-weight: 600;
+ color: #fff;
+ overflow: hidden
+ }
+ &:hover{
+ cursor: pointer;
+ background-color: $blueBtn;
+ .label {
+ color: #fff ;
+ }
+ .icon{
+ background-color: #fff;
+ }
+ }
+}
+
+.api-transcription-step {
+ padding-left: 30px;
+ font-size: 16px;
+ margin: 5px 0;
+ height: 24px;
+ line-height: 24px;
+ position: relative;
+ &:before {
+ content: '';
+ display: inline-block;
+ width: 24px;
+ height: 24px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ font-weight: 600;
+ mask-size: cover;
+ -webkit-mask-size: cover;
+ mask-repeat: no-repeat;
+ -webkit-mask-repeat: no-repeat;
+ }
+ &.done {
+ color: #59bbeb;
+ &:before {
+ @include maskImage('../assets/img/check.svg');
+ background-color: #59bbeb;
+ }
+ }
+ &.pending,
+ &.started{
+ color: #333;
+ &:before {
+ mask-image: url('../assets/img/loading.svg');
+ -webkit-mask-image: url('../assets/img/loading.svg');
+ background-color: #333;
+ -webkit-animation: rotating 2s linear infinite;
+ -moz-animation: rotating 2s linear infinite;
+ -ms-animation: rotating 2s linear infinite;
+ -o-animation: rotating 2s linear infinite;
+ animation: rotating 2s linear infinite;
+ }
+ }
+}
+
+#api-transcription-result-container {
+ border: 1px solid #ccc;
+ background-color: #fbfbfb;
+ @include boxShadow(0, 2px, 4px, 0, rgba(0, 0, 0, 0.3));
+ @include borderRadius(5px);
+ padding: 0;
+ overflow: hidden;
+ &.row>div {
+ padding: 0 !important;
+ }
+}
+
+#api-transcription-result {
+ max-height: 320px;
+ padding: 20px;
+ color: #333;
+ overflow-x: hidden;
+ overflow-y: auto;
+ margin: 20px 0;
+ font-size: 15px;
+ line-height: 1.5em;
+ font-family: 'Roboto Slab, Inter';
+ pre {
+ word-break: break-word;
+ white-space: pre-wrap;
+ max-height: 280px;
+ padding: 0;
+ margin: 0;
+ width: 100%;
+ font-family: 'Roboto Slab, Inter';
+ font-size: 15px;
+ }
+}
+.transcription-result-btn {
+ display: inline-block;
+ border: none;
+ width: 100%;
+ padding: 10px 0;
+ margin: 0;
+ background-color: #fff;
+ cursor: pointer;
+ border: 1px solid #ccc;
+ color: #333;
+ font-size: 16px;
+ font-weight: 600;
+ &.active {
+ background-color: #0080bf;
+ color: #fff;
+ }
+}
+.api-transcription-download {
+ padding: 10px 0;
+ justify-content: center;
+}
+#api-transcription-state {
+ margin-bottom: 20px;
+}
+
+/* Transcription streaming */
+
+.api-streaming-container {
+ background-color: #efefef;
+ padding: 20px;
+ width: 100%;
+ @include boxShadow(0, 2px, 4px, 0, rgba(0, 0, 0, 0.3));
+ @include borderRadius(5px);
+}
+
+#record-streaming {
+ display: inline-block;
+ width: 50px;
+ height: 50px;
+ background-color: #fff;
+ @include borderRadius(30px);
+ padding: 0;
+ border: none;
+ @include boxShadow(0, 2px, 4px, 0, rgba(0, 0, 0, 0.3));
+ cursor: pointer;
+ position: relative;
+ margin: 0 20px;
+
+ .rec-icon {
+ display: inline-block;
+ width: 30px;
+ height: 30px;
+ position: absolute;
+ top: 10px;
+ left: 10px;
+ @include maskImage('../assets/img/mic.svg');
+ background-color: #c51843;
+ }
+ &:hover {
+ background-color: #c51843;
+ .rec-icon {
+ background-color: #fff;
+ }
+ }
+}
+#record-streaming-transcript {
+ padding: 10px;
+ background: #fff;
+ min-height: 50px;
+ height: auto;
+ text-align: left;
+ font-size: 18px;
+ line-height: 26px;
+ @include boxShadow(0, 2px, 4px, 0, rgba(0, 0, 0, 0.3));
+}
+
+#record-streaming.recording {
+ -webkit-animation: blinkRedWhite 2s infinite;
+ -moz-animation: blinkRedWhite 2s infinite;
+ -ms-animation: blinkRedWhite 2s infinite;
+ -o-animation: blinkRedWhite 2s infinite;
+ animation: blinkRedWhite 2s infinite;
+}
+
+#record-streaming.recording .rec-icon {
+ -webkit-animation: blinkWhiteRed 2s infinite;
+ -moz-animation: blinkWhiteRed 2s infinite;
+ -ms-animation: blinkWhiteRed 2s infinite;
+ -o-animation: blinkWhiteRed 2s infinite;
+ animation: blinkWhiteRed 2s infinite;
+}
+
+@-webkit-keyframes blinkRedWhite {
+ 0% {
+ background-color: #fff;
+ }
+ 50% {
+ background-color: #ec5a5a;
+ }
+ 100% {
+ background-color: #fff;
+ }
+}
+
+@keyframes blinkRedWhite {
+ 0% {
+ background-color: #fff;
+ }
+ 50% {
+ background-color: #ec5a5a;
+ }
+ 100% {
+ background-color: #fff;
+ }
+}
+
+@-webkit-keyframes blinkWhiteRed {
+ 0% {
+ background-color: #ec5a5a;
+ }
+ 50% {
+ background-color: #fff;
+ }
+ 100% {
+ background-color: #ec5a5a;
+ }
+}
+
+@keyframes blinkWhiteRed {
+ 0% {
+ background-color: #ec5a5a;
+ }
+ 50% {
+ background-color: #fff;
+ }
+ 100% {
+ background-color: #ec5a5a;
+ }
+}
+
+@-webkit-keyframes rotating {
+ from {
+ -webkit-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ to {
+ -webkit-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes rotating {
+ from {
+ -ms-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ to {
+ -ms-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -webkit-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+#osx-video-player {
+ max-width: 560px;
+ display: block;
+ margin: 20px auto;
+}
\ No newline at end of file
diff --git a/_sass/demolintoagent.scss b/_sass/demolintoagent.scss
new file mode 100644
index 0000000..1d61320
--- /dev/null
+++ b/_sass/demolintoagent.scss
@@ -0,0 +1,651 @@
+.linto-demo-btns{
+ padding: 10px 0;
+ justify-content: center;
+ .btn-cta{
+ margin: 10px;
+ }
+}
+
+/* Widget DEMO (meeting-room & coffee machine) */
+.browser-command-wrapper {
+ padding: 0;
+ border: 1px solid #ccc;
+ margin: 40px 0;
+ h3 {
+ font-weight: 600;
+ padding-bottom: 20px;
+ font-size: 18px;
+ }
+}
+
+.browser-commands-container {
+ padding: 20px ;
+ background-color: #F2F2F2;
+}
+
+ul.browser-command-list{
+ li {
+ display: inline-block;
+ width: 100%;
+ padding: 10px;
+ font-size: 16px;
+ font-style: italic;
+ color: #333;
+ list-style-type: disc;
+ background-color: #fff;
+ margin: 3px 0;
+ @include boxShadow(0, 2px, 2px, 0, rgba(0, 0, 0, 0.2));
+
+ strong {
+ color: $redChart;
+ }
+ &:before{
+ display: none;
+ }
+ }
+}
+.browser-command-svg-container {
+ padding: 20px;
+}
+
+
+/* Browser command demo */
+
+.browser-demo-container {
+ background-color: #fff;
+ padding: 20px;
+}
+
+.browser-control-content-block {
+ padding: 10px;
+ border: 1px solid #ccc;
+ margin: 10px 0;
+ &.active {
+ border-color: #09a2e3;
+ background-color: #f0faff;
+ @include boxShadow(0, 2px, 4px, 0, rgba(0, 0, 0, 0.3));
+ }
+}
+
+.control-content-title {
+ display: inline-block;
+ width: 100%;
+ font-size: 16px;
+ font-weight: 600;
+ color: #222;
+ padding-bottom: 20px;
+}
+
+.control-content-text {
+ display: inline-block;
+ width: 100%;
+ font-size: 14px;
+ line-height: 1.3em;
+ font-weight: 400;
+ color: #333;
+}
+
+#browser-control-img-container {
+ width: 100%;
+ height: auto;
+ margin: 10px 0;
+ padding: 0;
+ position: relative;
+
+ #browser-control-img {
+ display: inline-block;
+ width: 300px;
+ height: auto;
+ }
+ &.big {
+ display: inline-block;
+ width: 100%;
+ height: 100%;
+ position: fixed;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ top: 0;
+ left: 0;
+ background: rgba(0, 0, 0, 0.8);
+ margin: 0;
+ padding: 0;
+ z-index: 999;
+ #browser-control-img {
+ width: 500px;
+ }
+ }
+}
+
+#browser-control-img-close {
+ display: inline-block;
+ width: 30px;
+ height: 30px;
+ position: absolute;
+ top: 40px;
+ left: 100%;
+ margin-left: -70px;
+ border: none;
+ box-shadow: none;
+ cursor: pointer;
+ .icon {
+ display: inline-block;
+ width: 30px;
+ height: 30px;
+ padding: 0;
+ margin: 0;
+ mask-size: cover;
+ -webkit-mask-size: cover;
+ mask-repeat: no-repeat;
+ -webkit-mask-repeat: no-repeat;
+ mask-image: url('../assets/img/close.svg');
+ -webkit-mask-image: url('../assets/img/close.svg');
+ background-color: rgba(255, 255, 255, 0.7);
+ }
+ &:hover{
+ .icon {
+ background-color: #fff;
+ }
+ }
+}
+
+
+/* ACCESSIBILITY MODE */
+
+.accessibility-on {
+ background-color: #333;
+ font-family: verdana !important;
+ h1 {
+ color: #fff !important;
+ }
+ p {
+ color: #fff !important;
+ font-weight: 500 !important;
+ font-size: 16px !important;
+ }
+ .btn-cta{
+ &.dark{
+ background-color: #fff;
+ color: $textDefault;
+ &:hover{
+ background-color: $textDefault;
+ color: #fff;
+ }
+ }
+ }
+}
+
+/* SVG STYLES */
+
+svg {
+ max-width: 1000px;
+}
+
+#LUMIERE-ON.off {
+ opacity: 0;
+}
+
+#ETEIND {
+ opacity: 0;
+}
+
+.proj {
+ opacity: 0;
+}
+
+.proj.active {
+ opacity: 1;
+}
+
+#VIDEOPROJ-ON {
+ opacity: 0;
+}
+
+.pc-proj.active {
+ opacity: 1;
+}
+
+.pc-proj {
+ opacity: 0;
+}
+
+.pc-proj.active {
+ opacity: 1;
+}
+
+.meeting-room-btn {
+ display: inline-block;
+ padding: 10px;
+ font-size: 15px;
+ margin: 10px 0;
+}
+
+.st0 {
+ fill: #F9F9F9;
+}
+
+.st1 {
+ fill: #EDEDED;
+}
+
+.st2 {
+ fill: #E6E6E6;
+}
+
+.st3 {
+ fill: url(#ciel-G_1_);
+}
+
+.st4 {
+ fill: url(#ciel-D_1_);
+}
+
+.st5 {
+ clip-path: url(#SVGID_2_);
+}
+
+.st6 {
+ fill: #E0E3EB;
+}
+
+.st7 {
+ fill: #EDF1F9;
+}
+
+.st8 {
+ fill: #FAFDFF;
+}
+
+.st9 {
+ fill: #C7C9D1;
+}
+
+.st10 {
+ opacity: 0.1;
+ enable-background: new;
+}
+
+.st11 {
+ clip-path: url(#SVGID_4_);
+}
+
+.st12 {
+ fill: #7C7C7C;
+}
+
+.st13 {
+ fill: #6D6D6D;
+}
+
+.st14 {
+ fill: #2B303F;
+}
+
+.st15 {
+ fill: #522E02;
+}
+
+.st16 {
+ fill: #FFCEA9;
+}
+
+.st17 {
+ fill: #F4F4F4;
+}
+
+.st18 {
+ opacity: 0.3;
+ fill: url(#SVGID_5_);
+ enable-background: new;
+}
+
+.st19 {
+ opacity: 0.3;
+ fill: url(#SVGID_6_);
+ enable-background: new;
+}
+
+.st20 {
+ fill: #150B33;
+}
+
+.st21 {
+ fill: #250E70;
+}
+
+.st22 {
+ fill: #E63225;
+}
+
+.st23 {
+ fill: #D3C4A9;
+}
+
+.st24 {
+ fill: #EFE3CA;
+}
+
+.st25 {
+ fill: #D6D8E5;
+}
+
+.st26 {
+ fill: #D6D6D6;
+}
+
+.st27 {
+ fill: #303030;
+}
+
+.st28 {
+ fill: #BFBFBF;
+}
+
+.st29 {
+ fill: #E5E5E5;
+}
+
+.st30 {
+ opacity: 0.4;
+ fill: #D6D8E5;
+ enable-background: new;
+}
+
+.st31 {
+ fill: #E4E6EF;
+}
+
+.st32 {
+ fill: #28221C;
+}
+
+.st33 {
+ fill: #99B524;
+}
+
+.st34 {
+ fill: #A6CE28;
+}
+
+.st35 {
+ fill: #B0B4C1;
+}
+
+.st36 {
+ fill: #BFC2D1;
+}
+
+.st37 {
+ fill: #B1B6C4;
+}
+
+.st38 {
+ fill: #C4C7D6;
+}
+
+.st39 {
+ fill: #0E061B;
+}
+
+.st40 {
+ fill: #150D33;
+}
+
+.st41 {
+ clip-path: url(#SVGID_8_);
+}
+
+.st42 {
+ fill: #3D3D3D;
+}
+
+.st43 {
+ fill: #DCEEFF;
+}
+
+.st44 {
+ fill: #DBDBDB;
+}
+
+.st45 {
+ fill: #FFFFFF;
+}
+
+.st46 {
+ fill: #9ACC12;
+}
+
+.st47 {
+ fill: #E8BC05;
+}
+
+.st48 {
+ fill: #EF6848;
+}
+
+.st49 {
+ fill: #BE4AED;
+}
+
+.st50 {
+ fill: #543526;
+}
+
+.st51 {
+ fill: #1B96EA;
+}
+
+.st52 {
+ fill: #FF5050;
+}
+
+.st53 {
+ fill: #32CEC3;
+}
+
+.st54 {
+ fill: none;
+ stroke: #D6D8E5;
+ stroke-width: 0.3231;
+ stroke-miterlimit: 10;
+}
+
+.st55 {
+ fill: #FFCEA9;
+}
+
+.st56 {
+ fill: #291300;
+}
+
+.st57 {
+ fill: #9FA0A2;
+}
+
+.st58 {
+ fill: #A1A2A4;
+}
+
+.st59 {
+ fill: #F4F6F9;
+}
+
+.st60 {
+ fill: #595D69;
+}
+
+.st61 {
+ fill: #616774;
+}
+
+.st62 {
+ fill: #D5D7E2;
+}
+
+.st63 {
+ fill: none;
+ stroke: #D6D8E5;
+ stroke-width: 1.8345;
+ stroke-miterlimit: 10;
+}
+
+.st64 {
+ opacity: 0.43;
+ fill: #FFFFFF;
+ enable-background: new;
+}
+
+.st65 {
+ fill: #323846;
+}
+
+.st66 {
+ fill: #252935;
+}
+
+.st67 {
+ fill: #BDBEC1;
+}
+
+.st68 {
+ fill: #D2D4D7;
+}
+
+.st69 {
+ fill: #1C0513;
+}
+
+.st70 {
+ fill: #070000;
+}
+
+.st71 {
+ fill: #3A0B26;
+}
+
+.st72 {
+ display: none;
+ fill: #8D4F14;
+}
+
+.st73 {
+ fill: #8D4F14;
+}
+
+.st74 {
+ fill: #2786A8;
+}
+
+.st75 {
+ fill: #3EB7EA;
+}
+
+.st76 {
+ fill: #0D0C23;
+}
+
+.st77 {
+ fill: #AAADBC;
+}
+
+.st78 {
+ fill: #F9EFC5;
+}
+
+.st79 {
+ fill: #D8AA44;
+}
+
+.st80 {
+ opacity: 0.69;
+ fill: #F9EFC5;
+ enable-background: new;
+}
+
+.st81 {
+ opacity: 0.2;
+ fill: #0D0C23;
+ enable-background: new;
+}
+
+.st82 {
+ fill: #FFDF57;
+}
+
+.st83 {
+ opacity: 0.69;
+ fill: #FFDF57;
+ enable-background: new;
+}
+
+.st84 {
+ opacity: 0.6;
+ fill: url(#SVGID_9_);
+ enable-background: new;
+}
+
+.st85 {
+ opacity: 0.4;
+ fill: url(#VIDEOPROJ-ON_3_);
+ enable-background: new;
+}
+
+.st86 {
+ opacity: 0.4;
+ fill: #FFFFFF;
+ enable-background: new;
+}
+
+.st87 {
+ fill: #1E67F7;
+}
+
+.st88 {
+ fill: #F99F00;
+}
+
+.st89 {
+ fill: #00AD0C;
+}
+
+
+/* Coffee machine */
+
+.shape {
+ fill: none;
+ stroke: #60544F;
+}
+
+.outline,
+.doors {
+ fill: #F4EEE6;
+ stroke: #60544F;
+ stroke-width: 2pt;
+}
+
+.water {
+ fill: #D6EDEE;
+ stroke: #60544F;
+}
+
+.water-cut {
+ fill: #B4D6DB;
+}
+
+.milk {
+ fill: #fff;
+ stroke: #60544F;
+}
+
+.milk-cut {
+ fill: #F4EEE6;
+}
+
+.coffee {
+ fill: #60544F;
+ stroke: #60544F;
+}
+
+.coffee-cut {
+ fill: #60544F;
+}
\ No newline at end of file
diff --git a/_sass/footer.scss b/_sass/footer.scss
new file mode 100644
index 0000000..e74cde2
--- /dev/null
+++ b/_sass/footer.scss
@@ -0,0 +1,58 @@
+footer{
+ background-color: $textDefault;
+ color: #fff;
+}
+.footer-main{
+ padding: 10px 0 30px 0 ;
+
+}
+h4.footer-title{
+ display: inline-block;
+ font-size: 13px;
+ text-transform: uppercase;
+ font-weight: 600;
+ color: #bbb;
+ padding: 20px 0 10px 0;
+}
+
+ul.footer-list{
+ li{
+ padding: 3px 0;
+
+ &:before{
+ display: none;
+ }
+ a{
+ font-size: 13px;
+ font-weight: 400;
+ display:inline-block;
+ text-decoration: none;
+ color: #919191;
+ &:hover{
+ color: #fff;
+ }
+ }
+ }
+}
+.footer-img-link{
+ display: inline-block;
+ width: 200px;
+ height: auto;
+}
+.footer-secondary{
+ background-color: #0B0B0B;
+ font-size: 13px;
+ padding: 10px 0;
+
+ .footer-content{
+ text-align: center;
+ color: #919191;
+ a{
+ color: #919191;
+ text-decoration: underline;
+ &:hover{
+ color: #fff;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/_sass/global.scss b/_sass/global.scss
new file mode 100644
index 0000000..8c7d6a3
--- /dev/null
+++ b/_sass/global.scss
@@ -0,0 +1,345 @@
+@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=Roboto+Slab:wght@400;500;600&display=swap');
+
+html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {
+ display: block;
+}
+body {
+ line-height: 1;
+}
+ol,ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+
+blockquote:before, blockquote:after, q:before, q:after {
+ content: '';
+ content: none;
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+a{
+ text-decoration: none;
+}
+/*===== END RESET CSS =====*/
+
+/*===== CSS VARIABLES =====*/
+
+ $textDefault: #1b1b1b;
+ $greyChart: #545454;
+ $greenChart: #5FBF9D;
+ $greenLight: #5fbf9d36;
+ $blueChart: #349EDA;
+ $blueBtn: #0081C9;
+ $blueLight: #349dda2f;
+ $purpleChart: #907DFF;
+ $purpleLight: #907dff33;
+ $redChart: #e94c47;
+
+
+
+/*===== END CSS VARIABLES =====*/
+/*===== GLOBAL =====*/
+html {
+ min-height: 100%;
+ height: auto;
+ scroll-behavior: smooth;
+ overflow-x: hidden;
+}
+body {
+ min-height: 100%;
+ height: auto;
+ font-family: 'Inter', Arial, Helvetica, sans-serif;
+ font-size: 16px;
+ line-height: 1.3em;
+ color: $textDefault;
+ background-color: #fff;
+}
+.flex {
+ display: flex;
+ &.row{
+ flex-direction: row;
+
+ }
+ &.col{
+ flex-direction: column;
+
+ }
+ &.wrap{
+ flex-wrap: wrap;
+
+ }
+ &.align-center {
+ align-items: center;
+ }
+ &.justify-center {
+ justify-content: center;
+ }
+ &.justify-end{
+ justify-content: flex-end;
+ }
+ &.space-evenly{
+ justify-content: space-evenly;
+ }
+}
+.flex1 {
+ flex: 1;
+ max-width: 100%;
+}
+.flex2 {
+ flex: 2;
+ max-width: 100%;
+}
+.flex3 {
+ flex: 3;
+ max-width: 100%;
+}
+.flex4 {
+ flex: 4;
+ max-width: 100%;
+}
+.padding-20{
+ padding: 20px;
+}
+.hidden{
+ display: none !important;
+}
+
+/* BODY */
+#body{
+ padding: 60px 0 40px 0;
+}
+
+section {
+ padding: 60px 0;
+}
+.container{
+ position: relative;
+ max-width: 980px;
+ margin: 0 auto;
+ padding: 0 15px;
+ z-index: 5;
+ box-sizing: border-box;
+ &.big{
+ max-width: 1200px;
+ }
+}
+
+h1,
+h2,
+h3,
+h4,
+h5{
+ &.green{
+ color: $greenChart;
+ }
+ &.blue {
+ color: $blueChart;
+ }
+ &.purple{
+ color: $purpleChart;
+ }
+}
+
+.big-title{
+ display: inline-block;
+ width: 100%;
+ font-size: 36px;
+ font-weight: 800;
+ line-height: 1.2em;
+ text-align: left;
+ padding-bottom: 20px;
+
+ &.centered{
+ text-align: center;
+ }
+ strong{
+ &.green{
+ color: $greenChart;
+ }
+ &.blue {
+ color: $blueChart;
+ }
+ &.purple{
+ color: $purpleChart;
+ }
+ &.white{
+ color: #fff;
+ }
+ }
+}
+
+
+h3{
+ display: inline-block;
+ font-size: 22px;
+ font-weight: 600;
+ padding: 20px 0;
+}
+
+.content-white-80{
+ padding: 20px;
+ @include borderRadius(10px);
+ background-color: rgba(255,255,255,0.8);
+}
+
+ul{
+ margin: 0;
+ padding: 0;
+ li{
+ display: inline-block;
+ padding: 7px 5px 7px 25px;
+ position: relative;
+ width: 100%;
+ font-size: 15px;
+ font-weight: 500;
+ box-sizing: border-box;
+ a{
+ color: $blueChart;
+ &:hover{
+ color: $blueBtn;
+ text-decoration: underline;
+ }
+ }
+ &:before{
+ content: "";
+ display: inline-block;
+ width: 15px;
+ height: 15px;
+ position: absolute;
+ left: 0;
+ top: 13px;
+ @include maskImage('../assets/img/check.svg');
+ background-color: $greenChart;
+ }
+ &.cross{
+ &:before{
+ @include maskImage('../assets/img/close.svg');
+ background-color: $redChart;
+ }
+ }
+ }
+}
+
+p {
+ display: inline-block;
+ margin: 20px 0;
+ font-size: 16px;
+ line-height: 26px;
+ font-weight: 500;
+ width: 100%;
+ box-sizing: border-box;
+ &.thin{
+ font-weight: 400;
+ }
+ &.text-centered{
+ text-align: center;
+ }
+ strong{
+ font-weight: 600;
+ }
+}
+
+.btn-cta-container{
+ margin: 10px 0;
+}
+.btn-cta{
+ display: inline-block;
+ padding: 10px 20px;
+ text-align: center;
+ border: 1px solid;
+ font-size: 15px;
+ color: #fff;
+ max-width: 200px;
+ font-weight: 600;
+ text-transform: uppercase;
+ @include borderRadius(40px);
+ @include boxShadow(0,2px,2px,0px,rgba(0,0,0,0.2));
+ @include transition(all 0.2s ease-out);
+ i{
+ text-transform: none;
+
+ }
+ &.dark{
+ background-color: $textDefault;
+ border-color: $textDefault;
+ &:hover{
+ color: $textDefault;
+ }
+
+ }
+ &.blue{
+ background-color: $blueBtn;
+ border-color: $blueBtn;
+ &:hover{
+ color: $blueBtn;
+ }
+ }
+ &:hover{
+ cursor: pointer;
+ @include boxShadow(0,2px,2px,0px,rgba(0,0,0,0.4));
+ background-color: #fff;
+ }
+ &.greenchart,
+ &.purplechart,
+ &.bluechart{
+ background-color: #fff;
+ }
+ &.greenchart{
+ color: $greenChart;
+ &:hover{
+ color: #fff;
+ background-color: #ffffff2b;
+ }
+ }
+ &.bluechart{
+ color: $blueChart;
+ &:hover{
+ color: #fff;
+ background-color: #ffffff2b;
+ }
+ }
+ &.purplechart{
+ color: $purpleChart;
+ &:hover{
+ color: #fff;
+ background-color: #ffffff2b;
+ }
+ }
+
+ &.homepage{
+ font-size: 14px;
+ }
+
+
+}
+.disclaimer{
+ padding: 20px;
+ color: $redChart;
+ border: 2px dashed $redChart;
+ background-color: #efefef;
+ font-size: 15px;
+ font-weight: 600;
+ margin: 20px 0;
+}
+
+.content-img{
+ display: inline-block;
+ width: 100%;
+ height: auto;
+ max-width: 200px;
+}
\ No newline at end of file
diff --git a/_sass/header.scss b/_sass/header.scss
new file mode 100644
index 0000000..7dba93f
--- /dev/null
+++ b/_sass/header.scss
@@ -0,0 +1,281 @@
+header{
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ z-index: 999;
+ background-color: $textDefault;
+ box-sizing: border-box;
+ padding: 0 20px;
+}
+.logo{
+ display: inline-block;
+ height: 30px;
+ margin-right: 20px;
+ img{
+ display: inline-block;
+ height: 100%;
+ width: auto;
+ }
+}
+
+.nav-item-container{
+ position: relative;
+ padding: 0 5px;
+ height: 50px;
+ margin: 0 5px;
+}
+.nav-item,
+.nav-item-parent{
+ display: inline-block;
+ color: #fff;
+ height: 50px;
+ line-height: 50px;
+ font-size: 14px;
+ font-weight:500;
+ text-decoration: none;
+ position: relative;
+ padding-right: 15px;
+ @include transition(all 0.2s ease-out);
+ &:hover,
+ &.active{
+ color: $greenChart;
+ .icon{
+ @include transition(all 0.2s ease-out);
+ background-color: $greenChart !important;
+ }
+ &:after{
+ background-color: $greenChart;
+ }
+ }
+ .icon{
+ display: inline-block;
+ width: 30px;
+ height: 30px;
+ background-color :#fff;
+ margin: 10px 5px 10px 0;
+ vertical-align: top;
+ &.cm{
+ @include maskImage('../assets/img/conversation-manager-logo-small.svg');
+ }
+ }
+}
+.nav-item-parent{
+ &:after{
+ content: "";
+ display: inline-block;
+ width: 12px;
+ height: 10px;
+ background: #fff;
+ position: absolute;
+ top: 20px;
+ right: 0;
+ @include maskImage('../assets/img/arrow-menu.svg');
+ }
+ &:hover{
+ &:after{
+ background-color: $greenChart;
+ }
+ }
+}
+.nav-item-dropdown.visible{
+ position: absolute;
+ top: 45px;
+ left: 0;
+ padding: 10px 15px 10px 10px;
+ box-sizing: border-box;
+ background-color: #fff;
+ @include transition(all 0.2s ease-out);
+ @include boxShadow(0, 2px, 4px, 0px, rgba(0,0,0,0.2));
+ @include borderRadius(10px);
+ box-sizing: border-box;
+}
+.nav-img{
+ display: inline-block;
+ height: 30px;
+ width: 30px;
+}
+#header-nav-products{
+ width: 650px;
+ flex-wrap: wrap;
+}
+
+.nav-card{
+ width: 280px;
+ height: 100px;
+ margin: 5px;
+ padding: 10px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ @include transition(all 0.2s ease-out);
+ &.apis{
+ &:hover{
+ background-color: $blueLight;
+ }
+ }
+ &.linto{
+ &:hover{
+ background-color: $purpleLight;
+ }
+ }
+ &.meeting{
+ &:hover{
+ background-color: $greenLight;
+
+ }
+ }
+}
+
+.nav-card-link{
+ display: inline-block;
+ text-decoration: none;
+ @include transition(all 0.2s ease-out);
+ .title{
+ height: 25px;
+ align-items: center;
+ padding-bottom: 5px;
+ .icon{
+ display :inline-block;
+ width: 25px;
+ height: 25px;
+ margin: 0 5px;
+ }
+ .label{
+ display :inline-block;
+ font-size: 16px;
+ font-weight: 500;
+ &.apis{
+ color: $blueChart;
+ }
+ &.linto{
+ color: $purpleChart;
+ }
+ &.meeting{
+ color: $greenChart;
+ }
+ }
+ }
+ .description {
+ p{
+ font-size: 12px;
+ color: #777;
+ line-height: 16px;
+ margin: 0;
+ }
+ }
+
+}
+
+.nav-icon-link{
+ text-decoration: none;
+ flex-wrap: nowrap;
+ white-space: nowrap;
+ margin: 7px 0 ;
+ .icon{
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ margin: 0 5px;
+ }
+ .label{
+ display: inline-block;
+ height: 20px;
+ line-height: 20px;
+ font-size: 13px;
+ color: $textDefault;
+ font-weight: 400;
+ strong{
+ font-weight: 600;
+ }
+ }
+ &:hover{
+ &.apis{
+ .label{
+ color:$blueChart;
+ }
+ }
+ &.linto{
+ .label{
+ color:$purpleChart;
+ }
+ }
+ &.meeting{
+ .label{
+ color:$greenChart;
+ }
+ }
+ }
+}
+
+
+.icon{
+ &.apis{
+ @include maskImage('../assets/img/apis-icon.svg');
+ background-color: $blueChart;
+ }
+ &.linto{
+ @include maskImage('/assets/img/linto-agent-icon.svg');
+ background-color: $purpleChart;
+
+ &.white{
+ background-color: #fff;
+ }
+ }
+ &.meeting{
+ @include maskImage('/assets/img/linto-meeting-icon.svg');
+ background-color: $greenChart;
+ }
+}
+
+#burger-menu{
+ display: none;
+}
+
+#burger-menu-button{
+ display: inline-block;
+ position: fixed;
+ top: 40px;
+ right: 40px;
+ width: 50px;
+ height: 50px;
+ background: #333;
+ z-index: 999;
+ border: none;
+ cursor: pointer;
+ @include transition(all 0.2s ease-out);
+ &.opened{
+ @include maskImage('../assets/img/close.svg');
+ }
+ &.closed {
+ @include maskImage('../assets/img/burger-menu.svg');
+ }
+ &:hover{
+ background-color: $greenChart;
+ }
+
+}
+#burger-menu-navigation{
+ position: fixed;
+ top: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ background: #fff;
+ z-index: 888;
+
+}
+.burger-nav-item{
+ display: inline-block;
+ color: #111;
+ height: 30px;
+ line-height: 30px;
+ font-size: 22px;
+ font-weight: 500;
+ padding: 10px 0;
+ @include transition(all 0.2s ease-out);
+ &:hover{
+ color: $greenChart;
+ text-decoration: underline;
+ }
+}
\ No newline at end of file
diff --git a/_sass/homepage.scss b/_sass/homepage.scss
new file mode 100644
index 0000000..6af7fb4
--- /dev/null
+++ b/_sass/homepage.scss
@@ -0,0 +1,253 @@
+.homepage-links-container{
+ margin: 20px 0;
+ height: 380px;
+ justify-content: space-evenly;
+}
+
+
+.homepage-link{
+ display: inline-block;
+ background-color: #fff;
+ padding: 10px 15px;
+ border: 1px solid #ccc;
+ text-decoration: none;
+ position: relative;
+ text-align: left;
+ @include boxShadow(0,2px,2px,0,rgba(0,0,0,0.2));
+ @include transition(all 0.2s ease-out);
+ @include borderRadius(10px);
+ &>*{
+ @include transition(all 0.2s ease-out);
+ }
+ &:after{
+ content: "";
+ display: inline-block;
+ height: 30px;
+ width: 30px;
+ position: absolute;
+ top:10px;
+ right: 20px;
+ @include maskImage(' ../assets/img/arrow-menu.svg');
+ @include transition(all 0.2s ease-out);
+ @include transform(rotate(-90deg));
+ }
+
+ .icon{
+ display: inline-block;
+ width: 30px;
+ height: 30px;
+ margin: 0 10px 0 0;
+ vertical-align: top;
+ }
+ .label{
+ display: inline-block;
+ height: 30px;
+ line-height: 30px;
+ vertical-align: top;
+ font-weight: 500;
+ font-size: 16px;
+ }
+
+ &.apis{
+ border-color: $blueChart;
+ &:after{
+ background-color: $blueChart;
+ }
+ .label{
+ color: $blueChart;
+ }
+ &:hover{
+ background-color: $blueChart;
+ }
+ }
+ &.linto{
+ border-color: $purpleChart;
+ &:after{
+ background-color: $purpleChart;
+ }
+ .label{
+ color: $purpleChart;
+ }
+ &:hover{
+ background-color: $purpleChart;
+ }
+ }
+ &.meeting{
+ border-color: $greenChart;
+ &:after{
+ background-color: $greenChart;
+ }
+ .label{
+ color: $greenChart;
+ }
+ &:hover{
+ background-color: $greenChart;
+ }
+ }
+
+ &:hover{
+ cursor: pointer;
+ .label{
+ color: #fff
+ }
+ .icon{
+ background-color: #fff
+ }
+ &:after{
+ top: 13px;
+ @include transform(rotate(0deg));
+ background-color: #fff;
+ }
+ }
+ .homepage-link-detail{
+ height: 0;
+ overflow: hidden;
+ .detail{
+ margin: 10px 0;
+ color: #fff;
+ font-size: 15px;
+ line-height: 1.3em;
+ font-weight: 500;
+ }
+ .detail-btn{
+ margin: 5px 0;
+ align-items: center;
+ justify-content: space-evenly;
+ .btn-cta{
+ margin: 5px 0;
+ }
+ }
+
+ }
+ &.active{
+ height: auto;
+ .homepage-link-detail{
+ height: 150px;
+ }
+ .label{
+ color: #fff
+ }
+ .icon{
+ background-color: #fff
+ }
+ &.apis{
+ background-color: $blueChart;
+ }
+ &.linto{
+ background-color: $purpleChart;
+ }
+ &.meeting{
+ background-color: $greenChart;
+ }
+ &:after{
+ top: 13px;
+ @include transform(rotate(0deg));
+ background-color: #fff;
+ }
+ }
+
+ &.div{
+ height: auto;
+ &:after{
+ display: none;
+ }
+ .homepage-link-detail{
+ height: auto !important;
+ }
+ .detail{
+ margin: 10px 0;
+ color: #fff;
+ font-size: 15px;
+ line-height: 1.3em;
+ font-weight: 400;
+ }
+ .homepage-link-detail{
+ height: auto;
+ }
+ }
+}
+
+.homepage-illustration{
+ display: inline-block;
+ width: 100%;
+ height: auto;
+ max-width: 380px;
+}
+
+
+#homepage-privacy{
+ position: relative;
+ z-index: 1;
+ background-color: rgb(0,175,154);
+ background: linear-gradient(140deg, rgba(0,175,154,0.8) 0%, rgba(165,242,228,0.6) 100%);
+ &:after{
+ content: "";
+ display: inline-block;
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ background-image: url(' ../assets/img/bg-rounded.png');
+ background-repeat: no-repeat;
+ background-size: cover;
+ background-position: top center;
+ z-index: 2 !important;
+
+ }
+}
+.github-logo{
+ display: inline-block;
+ width: 42px;
+ height: 42px;
+ margin: 0 10px 0 0;
+ vertical-align: top;
+ @include maskImage(' ../assets/img/github-logo-dark.svg');
+ background-color: #111;
+
+ &:hover{
+ background-color: #777;
+
+ }
+}
+
+.homepage-animation-mask-container{
+ margin: 0 auto;
+}
+#homepage-animation-mask{
+ width: 100%;
+ height: 400px;
+ width: 400px;
+ position: relative;
+
+ background-repeat: no-repeat;
+ background-position: center center;
+ &.bordered{
+ border: 2px solid #ECECEC;
+ @include boxShadow(0,2px, 4px, 0, rgba(0,0,0,0.3));
+ }
+
+ &.default {
+ background-image:url('../assets/img/illustration-homepage-01.svg');
+ background-size: contain;
+
+ }
+ &.smart-meeting{
+ background-image:url('../assets/img/screenshot-conversation-manager.png');
+ background-size: 300% auto;
+ @include moveImgBg(30s);
+ }
+
+ &.linto-agent{
+ background-image:url('../assets/img/screenshot-linto-ui.png');
+ background-size: contain;
+ background-position: center center
+
+ }
+ &.fading-out{
+ @include fade-out()
+ }
+ &.fading-in{
+ @include fade-in()
+ }
+}
\ No newline at end of file
diff --git a/_sass/mixins.scss b/_sass/mixins.scss
new file mode 100644
index 0000000..e12bd3f
--- /dev/null
+++ b/_sass/mixins.scss
@@ -0,0 +1,166 @@
+@mixin transform($value) {
+ -webkit-transform: $value;
+ -o-transform: $value;
+ transform: $value;
+}
+
+@mixin maskImage($path) {
+ mask-image: url($path);
+ -webkit-mask-image: url($path);
+ mask-size: 100%;
+ -webkit-mask-size: 100%;
+ mask-repeat: no-repeat;
+ -webkit-mask-repeat: no-repeat;
+}
+
+@mixin boxShadow($offsetX, $offsetY, $blurRadius, $spreadRadius, $color) {
+ -moz-box-shadow: $offsetX $offsetY $blurRadius $spreadRadius $color;
+ -webkit-box-shadow: $offsetX $offsetY $blurRadius $spreadRadius $color;
+ box-shadow: $offsetX $offsetY $blurRadius $spreadRadius $color;
+}
+
+@mixin cancelBoxShadow() {
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+@mixin transition($value) {
+ -webkit-transition: $value;
+ -moz-transition: $value;
+ -o-transition: $value;
+ transition: $value;
+}
+
+@mixin noTransition() {
+ -webkit-transition: none;
+ -moz-transition: none;
+ -o-transition: none;
+ transition: none;
+}
+
+@mixin opacity($value) {
+ -moz-opacity: $value;
+ /* Netscape */
+ -khtml-opacity: $value;
+ /* Safari 1.x */
+ opacity: $value;
+ /* Good browsers */
+}
+
+@mixin borderRadius($value) {
+ -webkit-border-radius: $value;
+ -moz-border-radius: $value;
+ border-radius: $value;
+}
+
+@mixin borderRadiusMulti($topleft, $topright, $botright, $botleft) {
+ -webkit-border-top-left-radius: $topleft;
+ -moz-border-radius-topleft: $topleft;
+ border-top-left-radius: $topleft;
+ -webkit-border-top-right-radius: $topright;
+ -moz-border-radius-topright: $topright;
+ border-top-right-radius: $topright;
+ -webkit-border-bottom-right-radius: $botright;
+ -moz-border-radius-bottomright: $botright;
+ border-bottom-right-radius: $botright;
+ -webkit-border-bottom-left-radius: $botleft;
+ -moz-border-radius-bottomleft: $botleft;
+ border-bottom-left-radius: $botleft;
+}
+
+
+
+@-webkit-keyframes moveImg {
+ 0% {
+ background-position: 0 0;
+ }
+ 33% {
+ background-position: 0 100%;
+}
+ 66% {
+ background-position: 100% 100%;
+ }
+ 100%{
+ background-position: 0 0;
+
+ }
+}
+
+@keyframes moveImg {
+ 0% {
+ background-position: 0 0;
+ }
+ 33% {
+ background-position: 0 100%;
+ }
+ 66% {
+ background-position: 100% 100%;
+ }
+ 100%{
+ background-position: 0 0;
+ }
+}
+
+@mixin moveImgBg($time) {
+ -webkit-animation: moveImg $time infinite ;
+ -moz-animation: moveImg $time infinite ;
+ -ms-animation: moveImg $time infinite ;
+ -o-animation: moveImg $time infinite ;
+ animation: moveImg $time infinite ;
+}
+
+
+
+@-webkit-keyframes fadeout {
+ 0% {
+ opacity: 1;
+ }
+ 100%{
+ opacity: 0;
+ }
+}
+
+@keyframes fadeout {
+ 0% {
+ opacity: 1;
+ }
+ 100%{
+ opacity: 0;
+ }
+}
+@-webkit-keyframes fadein {
+ 0% {
+ opacity: 0;
+ }
+ 100%{
+ opacity: 1;
+ }
+}
+
+@keyframes fadein {
+ 0% {
+ opacity: 0;
+ }
+ 100%{
+ opacity: 1;
+ }
+}
+
+@mixin fade-in() {
+ -webkit-animation: fadein 0.5s ease-in-out;
+ -moz-animation: fadein 0.5s ease-in-out;
+ -ms-animation: fadein 0.5s ease-in-out;
+ -o-animation: fadein 0.5s ease-in-out;
+ animation: fadein 0.5s ease-in-out;
+}
+
+@mixin fade-out() {
+ -webkit-animation: fadeout 0.5s ease-in-out;
+ -moz-animation: fadeout 0.5s ease-in-out;
+ -ms-animation: fadeout 0.5s ease-in-out;
+ -o-animation: fadeout 0.5s ease-in-out;
+ animation: fadeout 0.5s ease-in-out;
+}
+
+
diff --git a/_sass/pricing.scss b/_sass/pricing.scss
new file mode 100644
index 0000000..f4d5e72
--- /dev/null
+++ b/_sass/pricing.scss
@@ -0,0 +1,49 @@
+#pricing-table{
+ thead{
+ th{
+ font-size: 14px;
+ text-transform: uppercase;
+ font-weight: 500;
+ color: #959595;
+ vertical-align: middle;
+ border: 1px solid #dedede;
+ padding: 10px;
+ }
+ }
+ tbody{
+ tr{
+ td{
+ border: 1px solid #dedede;
+ padding: 5px 10px;
+ font-size: 13px;
+
+ ul{
+ li{
+ font-size: 13px;
+ line-height: 1.3em;
+ font-weight: 400;
+ margin: 0;
+
+ }
+ }
+ p{
+ font-size: 13px;
+ line-height: 1.3em;
+ font-weight: 400;
+ margin: 5px 0;
+ }
+ &.service-name{
+ font-size: 14px;
+ font-weight: 600;
+ white-space: nowrap;
+ }
+ &.price{
+ font-size: 14px;
+ text-align: center;
+ font-weight: 600;
+ white-space: nowrap;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/_sass/responsive.scss b/_sass/responsive.scss
new file mode 100644
index 0000000..259a010
--- /dev/null
+++ b/_sass/responsive.scss
@@ -0,0 +1,85 @@
+@media all and (min-width: 1024px) and (max-width: 1280px) {
+ #homepage-animation-mask{
+ width: 360px;
+ }
+}
+
+@media all and (max-width: 1024px) {
+
+ #body {
+ padding: 0;
+ }
+ section {
+ padding: 40px 0;
+ }
+ .container{
+ max-width: 100%;
+ padding: 0 40px;
+ &.big {
+ max-width: 100%;
+ padding: 0 40px !important;
+ }
+ }
+ .flex{
+ flex-wrap: wrap;
+ }
+ .flex1, .flex2, .flex3, .flex4{
+ min-width: 340px;
+ }
+ .big-title{
+ font-size: 30px;
+ }
+ .btn-cta{
+ padding: 10px;
+ font-size: 13px;
+ &.homepage{
+ padding: 10px;
+ font-size: 13px;
+
+ }
+ }
+
+ #homepage-animation-mask{
+ width: 300px;
+ }
+ .homepage-link{
+ &.active{
+ .homepage-link-detail{
+ height: 210px;
+ }
+ }
+ }
+ .apis-schema-container{
+ flex-direction: column !important;
+ .apis-schema-item{
+ width: 100%;
+ box-sizing: border-box;
+ margin: 10px 0;
+ }
+
+ }
+ /* HEADER */
+ #header{
+ display: none;
+ }
+ #burger-menu{
+ display: block;
+ }
+
+ .api-streaming-container{
+ flex-direction: column !important;
+ }
+ #record-streaming-transcript{
+ width: 100%;
+ box-sizing: border-box;
+ }
+ #record-streaming{
+ margin: 10px auto;
+ }
+
+}
+
+@media all and (min-width: 480px) and (max-width: 768px) { }
+
+@media all and (max-width: 480px) { }
+
\ No newline at end of file
diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png
deleted file mode 100644
index f4cecfc..0000000
Binary files a/android-chrome-192x192.png and /dev/null differ
diff --git a/android-chrome-512x512.png b/android-chrome-512x512.png
deleted file mode 100644
index 098a337..0000000
Binary files a/android-chrome-512x512.png and /dev/null differ
diff --git a/apple-touch-icon.png b/apple-touch-icon.png
deleted file mode 100644
index defdc0a..0000000
Binary files a/apple-touch-icon.png and /dev/null differ
diff --git a/assets/css/ajax-loader.gif b/assets/css/ajax-loader.gif
deleted file mode 100644
index e0e6e97..0000000
Binary files a/assets/css/ajax-loader.gif and /dev/null differ
diff --git a/assets/css/fonts/slick.eot b/assets/css/fonts/slick.eot
deleted file mode 100644
index 2cbab9c..0000000
Binary files a/assets/css/fonts/slick.eot and /dev/null differ
diff --git a/assets/css/fonts/slick.svg b/assets/css/fonts/slick.svg
deleted file mode 100644
index b36a66a..0000000
--- a/assets/css/fonts/slick.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-Generated by Fontastic.me
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/css/fonts/slick.ttf b/assets/css/fonts/slick.ttf
deleted file mode 100644
index 9d03461..0000000
Binary files a/assets/css/fonts/slick.ttf and /dev/null differ
diff --git a/assets/css/fonts/slick.woff b/assets/css/fonts/slick.woff
deleted file mode 100644
index 8ee9972..0000000
Binary files a/assets/css/fonts/slick.woff and /dev/null differ
diff --git a/assets/css/modal.css b/assets/css/modal.css
deleted file mode 100644
index d3c4014..0000000
--- a/assets/css/modal.css
+++ /dev/null
@@ -1,113 +0,0 @@
-.blocker {
- position: fixed;
- top: 0; right: 0; bottom: 0; left: 0;
- width: 100%; height: 100%;
- overflow: auto;
- z-index: 1;
- padding: 20px;
- box-sizing: border-box;
- background-color: rgb(0,0,0);
- background-color: rgba(0,0,0,0.75);
- text-align: center;
- }
- .blocker:before{
- content: "";
- display: inline-block;
- height: 100%;
- vertical-align: middle;
- margin-right: -0.05em;
- }
- .blocker.behind {
- background-color: transparent;
- }
- .modal {
- display: none;
- vertical-align: middle;
- position: relative;
- z-index: 2;
- max-width: 800px;
- max-height: 600px;
- box-sizing: border-box;
- width: 100%;
- height: 100%;
- -webkit-border-radius: 8px;
- -moz-border-radius: 8px;
- -o-border-radius: 8px;
- -ms-border-radius: 8px;
- border-radius: 8px;
- -webkit-box-shadow: 0 0 10px #000;
- -moz-box-shadow: 0 0 10px #000;
- -o-box-shadow: 0 0 10px #000;
- -ms-box-shadow: 0 0 10px #000;
- box-shadow: 0 0 10px #000;
- }
-
- .modal a.close-modal {
- position: absolute;
- top: -12.5px;
- right: -12.5px;
- display: block;
- width: 30px;
- height: 30px;
- text-indent: -9999px;
- background-size: contain;
- background-repeat: no-repeat;
- background-position: center center;
- background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAA3hJREFUaAXlm8+K00Acx7MiCIJH/yw+gA9g25O49SL4AO3Bp1jw5NvktC+wF88qevK4BU97EmzxUBCEolK/n5gp3W6TTJPfpNPNF37MNsl85/vN/DaTmU6PknC4K+pniqeKJ3k8UnkvDxXJzzy+q/yaxxeVHxW/FNHjgRSeKt4rFoplzaAuHHDBGR2eS9G54reirsmienDCTRt7xwsp+KAoEmt9nLaGitZxrBbPFNaGfPloGw2t4JVamSt8xYW6Dg1oCYo3Yv+rCGViV160oMkcd8SYKnYV1Nb1aEOjCe6L5ZOiLfF120EjWhuBu3YIZt1NQmujnk5F4MgOpURzLfAwOBSTmzp3fpDxuI/pabxpqOoz2r2HLAb0GMbZKlNV5/Hg9XJypguryA7lPF5KMdTZQzHjqxNPhWhzIuAruOl1eNqKEx1tSh5rfbxdw7mOxCq4qS68ZTjKS1YVvilu559vWvFHhh4rZrdyZ69Vmpgdj8fJbDZLJpNJ0uv1cnr/gjrUhQMuI+ANjyuwftQ0bbL6Erp0mM/ny8Fg4M3LtdRxgMtKl3jwmIHVxYXChFy94/Rmpa/pTbNUhstKV+4Rr8lLQ9KlUvJKLyG8yvQ2s9SBy1Jb7jV5a0yapfF6apaZLjLLcWtd4sNrmJUMHyM+1xibTjH82Zh01TNlhsrOhdKTe00uAzZQmN6+KW+sDa/JD2PSVQ873m29yf+1Q9VDzfEYlHi1G5LKBBWZbtEsHbFwb1oYDwr1ZiF/2bnCSg1OBE/pfr9/bWx26UxJL3ONPISOLKUvQza0LZUxSKyjpdTGa/vDEr25rddbMM0Q3O6Lx3rqFvU+x6UrRKQY7tyrZecmD9FODy8uLizTmilwNj0kraNcAJhOp5aGVwsAGD5VmJBrWWbJSgWT9zrzWepQF47RaGSiKfeGx6Szi3gzmX/HHbihwBser4B9UJYpFBNX4R6vTn3VQnez0SymnrHQMsRYGTr1dSk34ljRqS/EMd2pLQ8YBp3a1PLfcqCpo8gtHkZFHKkTX6fs3MY0blKnth66rKCnU0VRGu37ONrQaA4eZDFtWAu2fXj9zjFkxTBOo8F7t926gTp/83Kyzzcy2kZD6xiqxTYnHLRFm3vHiRSwNSjkz3hoIzo8lCKWUlg/YtGs7tObunDAZfpDLbfEI15zsEIY3U/x/gHHc/G1zltnAgAAAABJRU5ErkJggg==');
-
- }
-
- .modal-spinner {
- display: none;
- position: fixed;
- top: 50%;
- left: 50%;
- transform: translateY(-50%) translateX(-50%);
- padding: 12px 16px;
- border-radius: 5px;
- background-color: #111;
- height: 20px;
- }
-
- .modal-spinner > div {
- border-radius: 100px;
- background-color: #fff;
- height: 20px;
- width: 2px;
- margin: 0 1px;
- display: inline-block;
-
- -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;
- animation: sk-stretchdelay 1.2s infinite ease-in-out;
- }
-
- .modal-spinner .rect2 {
- -webkit-animation-delay: -1.1s;
- animation-delay: -1.1s;
- }
-
- .modal-spinner .rect3 {
- -webkit-animation-delay: -1.0s;
- animation-delay: -1.0s;
- }
-
- .modal-spinner .rect4 {
- -webkit-animation-delay: -0.9s;
- animation-delay: -0.9s;
- }
-
- @-webkit-keyframes sk-stretchdelay {
- 0%, 40%, 100% { -webkit-transform: scaleY(0.5) }
- 20% { -webkit-transform: scaleY(1.0) }
- }
-
- @keyframes sk-stretchdelay {
- 0%, 40%, 100% {
- transform: scaleY(0.5);
- -webkit-transform: scaleY(0.5);
- } 20% {
- transform: scaleY(1.0);
- -webkit-transform: scaleY(1.0);
- }
- }
-
\ No newline at end of file
diff --git a/assets/css/responsive.css b/assets/css/responsive.css
deleted file mode 100644
index 3b3131c..0000000
--- a/assets/css/responsive.css
+++ /dev/null
@@ -1,271 +0,0 @@
-/*===== CSS VARIABLES =====*/
-:root {
- --blueChart: #45baeb;
- --blueDark : #364954;
- --greenChart: #65eeb1;
- --error: #ffb13b;
-}
-
-@media screen and (max-width: 1440px){
- .wrapper {
- max-width: 1200px;
- }
-}
-@media screen and (max-width: 1280px){
- .wrapper,
- .content-section .wrapper {
- max-width: 980px;
- }
- .content-wrapper {
- max-width: 980px;
- }
- .nav-link {
- font-size: 14px;
- margin: 0px 10px;
- }
- .linto-ai-logo {
- height: 30px;
- margin: 5px;
- }
-}
-@media screen and (max-width: 1024px){
- /* HEADER */
-
- #burger-nav{
- display: flex;
- }
- #desktop-nav{
- display: none;
- }
- #burger-menu-nav.hidden{
- display: none;
- }
- .burger-menu-container{
- justify-content: flex-end;
- }
- button#burger-menu{
- display: inline-block;
- width: 40px;
- height: 40px;
- background-image: url('../img/burger-menu@2x.png');
- background-size: 80px 80px;
- background-repeat: no-repeat;
- border: none;
- box-shadow: none;
- background-color: transparent;
- cursor: pointer;
- }
- button#burger-menu.closed {
- background-position: 0 0;
- }
- button#burger-menu.closed:hover {
- background-position: -40px 0;
- }
- button#burger-menu.opened {
- background-position: 0 -40px;
- }
- button#burger-menu.opened:hover {
- background-position: -40px -40px;
- }
- #burger-menu-nav{
- position: absolute;
- top: 100px;
- left: 0;
- display: flex;
- flex-direction: column;
- width: 100%;
- }
- #burger-menu-nav nav{
- align-items: center;
- }
- #burger-menu-nav nav a {
- font-size: 30px;
- padding: 20px 0;
- line-height: 30px;
- flex:1;
- }
- .nav-link.active::after, .nav-link.active:hover::after {
- top: 60px;
- }
- /* END HEADER */
- section {
- padding: 20px 0;
- }
- #enterprises-solutions-top {
- padding: 20px 0;
- }
-
- .wrapper,
- .content-section .wrapper {
- max-width: 90%;
- }
-
- .content-wrapper {
- max-width: 920px;
- }
- #home {
- padding-top: 0;
- }
- #home .wrapper {
- flex-direction: column-reverse;
- }
- #linto-animated {
- max-height: 450px;
- }
- .home-title-container{
- align-items: center;
- }
- h1.home-title{
- text-align: center;
- }
- .hdiw-wrapper {
- flex-direction: column !important;
- }
- .hdiw-animation {
- margin-top: 20px;
- text-align: center;
- }
- .solution-content-container{
- flex-direction: column !important;
- }
- .solution-content:first-child{
- border: none;
- margin-bottom: 40px;
- }
-
-}
-@media screen and (max-width: 960px){
- h1 {
- font-size: 32px;
- }
- h2,
- h2.section-title {
- font-size: 26px;
- }
- h3 {
- font-size: 20px;
- }
- .cta-link {
- font-size: 16px;
- }
-
-
-
- /* HOME */
- #linto-animated svg.linto-animation-home{
- max-width: 350px !important;
- max-height: 350px !important;
- }
- .charactertics-wrapper{
- flex-direction: column !important;
- }
- .hdiw-controls .controls{
- margin-top: 0;
- }
- .solution-content h3{
- padding-bottom: 20px;
- }
- img.raspberry-schema{
- width: 80%;
- height: auto;
- }
- .partners-container{
- flex-direction: column !important;
- align-items: center;
- }
- .partner-logo{
- height: 60px;
- width: auto;
- margin: 10px auto;
- }
- /* END HOME */
-
- /* ENTERPRISES SOLUTIONS */
- .enterprise-top-container {
- flex-direction: column-reverse !important;
- }
- .enterpise-top-img img.linto-ent{
- width: 240px;
- }
- .flex-content.row {
- flex-direction: column !important;
- }
- img.gafam-free{
- height: 120px;
- width: auto;
- }
- img.schema-deploy-linto,
- img.schema-server{
- width: 90%;
- height: auto;
- }
- img.schema-services{
- width: 200px;
- height: auto;
- }
- .content-section.enterprise h2.section-title{
- padding: 0;
- }
- #compare-table{
- border-collapse: collapse;
- border-spacing: 0;
- margin: 20px 0 10px 0;
- }
- #compare-table thead tr th {
- font-size: 14px;
- -webkit-border-radius: 0px;
- -moz-border-radius: 0px;
- border-radius: 0px;
- border: 1px solid #ccc;
- }
- #compare-table tbody tr td{
- padding: 5px;
- }
-
- #compare-table tbody tr td.option {
- font-size: 12px;
- }
- #compare-table tbody tr td .label{
- font-size: 12px;
- }
-
- table.content-table thead tr th.title.parole-lue,
- table.content-table thead tr th.title.parole-spontanee,
- table.content-table tbody tr td {
- font-size: 14px;
- }
- .sub-part h4.content-sub-title,
- .table-label{
- font-size: 16px;
- }
-}
-@media screen and (max-width: 840px){
- .contact-wrapper{
- flex-direction: column !important;
- max-width: 300px;
- }
- .field-container .contact-input{
- max-width: 100%;
- }
- table.content-table tbody tr td {
- padding: 5px;
- }
- #compare-table tbody tr td .label {
- display: none;
- }
- #compare-table tbody tr td .label.label-only {
- display: inline-block;
- }
- table.content-table tbody tr td.brand-logo{
- border: none;
- padding: 0;
- width: 0px;
- }
- table.content-table tbody tr td.brand-logo img{
- display: none;
- }
-
- #hdiw-animation svg {
- margin-top: 40px;
- }
-}
\ No newline at end of file
diff --git a/assets/css/slick-theme.css b/assets/css/slick-theme.css
deleted file mode 100644
index 1232fca..0000000
--- a/assets/css/slick-theme.css
+++ /dev/null
@@ -1,204 +0,0 @@
-@charset 'UTF-8';
-/* Slider */
-.slick-loading .slick-list
-{
- background: #fff url('./ajax-loader.gif') center center no-repeat;
-}
-
-/* Icons */
-@font-face
-{
- font-family: 'slick';
- font-weight: normal;
- font-style: normal;
-
- src: url('./fonts/slick.eot');
- src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg');
-}
-/* Arrows */
-.slick-prev,
-.slick-next
-{
- font-size: 0;
- line-height: 0;
-
- position: absolute;
- top: 50%;
-
- display: block;
-
- width: 20px;
- height: 20px;
- padding: 0;
- -webkit-transform: translate(0, -50%);
- -ms-transform: translate(0, -50%);
- transform: translate(0, -50%);
-
- cursor: pointer;
-
- color: transparent;
- border: none;
- outline: none;
- background: transparent;
-}
-.slick-prev:hover,
-.slick-prev:focus,
-.slick-next:hover,
-.slick-next:focus
-{
- color: transparent;
- outline: none;
- background: transparent;
-}
-.slick-prev:hover:before,
-.slick-prev:focus:before,
-.slick-next:hover:before,
-.slick-next:focus:before
-{
- opacity: 1;
-}
-.slick-prev.slick-disabled:before,
-.slick-next.slick-disabled:before
-{
- opacity: .25;
-}
-
-.slick-prev:before,
-.slick-next:before
-{
- font-family: 'slick';
- font-size: 20px;
- line-height: 1;
-
- opacity: .75;
- color: white;
-
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-.slick-prev
-{
- left: -25px;
-}
-[dir='rtl'] .slick-prev
-{
- right: -25px;
- left: auto;
-}
-.slick-prev:before
-{
- content: '←';
-}
-[dir='rtl'] .slick-prev:before
-{
- content: '→';
-}
-
-.slick-next
-{
- right: -25px;
-}
-[dir='rtl'] .slick-next
-{
- right: auto;
- left: -25px;
-}
-.slick-next:before
-{
- content: '→';
-}
-[dir='rtl'] .slick-next:before
-{
- content: '←';
-}
-
-/* Dots */
-.slick-dotted.slick-slider
-{
- margin-bottom: 30px;
-}
-
-.slick-dots
-{
- position: absolute;
- bottom: -25px;
-
- display: block;
-
- width: 100%;
- padding: 0;
- margin: 0;
-
- list-style: none;
-
- text-align: center;
-}
-.slick-dots li
-{
- position: relative;
-
- display: inline-block;
-
- width: 20px;
- height: 20px;
- margin: 0 5px;
- padding: 0;
-
- cursor: pointer;
-}
-.slick-dots li button
-{
- font-size: 0;
- line-height: 0;
-
- display: block;
-
- width: 20px;
- height: 20px;
- padding: 5px;
-
- cursor: pointer;
-
- color: transparent;
- border: 0;
- outline: none;
- background: transparent;
-}
-.slick-dots li button:hover,
-.slick-dots li button:focus
-{
- outline: none;
-}
-.slick-dots li button:hover:before,
-.slick-dots li button:focus:before
-{
- opacity: 1;
-}
-.slick-dots li button:before
-{
- font-family: 'slick';
- font-size: 6px;
- line-height: 20px;
-
- position: absolute;
- top: 0;
- left: 0;
-
- width: 20px;
- height: 20px;
-
- content: '•';
- text-align: center;
-
- opacity: .25;
- color: black;
-
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-.slick-dots li.slick-active button:before
-{
- opacity: .75;
- color: black;
-}
diff --git a/assets/css/slick.css b/assets/css/slick.css
deleted file mode 100644
index 57477e8..0000000
--- a/assets/css/slick.css
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Slider */
-.slick-slider
-{
- position: relative;
-
- display: block;
- box-sizing: border-box;
-
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-
- -webkit-touch-callout: none;
- -khtml-user-select: none;
- -ms-touch-action: pan-y;
- touch-action: pan-y;
- -webkit-tap-highlight-color: transparent;
-}
-
-.slick-list
-{
- position: relative;
-
- display: block;
- overflow: hidden;
-
- margin: 0;
- padding: 0;
-}
-.slick-list:focus
-{
- outline: none;
-}
-.slick-list.dragging
-{
- cursor: pointer;
- cursor: hand;
-}
-
-.slick-slider .slick-track,
-.slick-slider .slick-list
-{
- -webkit-transform: translate3d(0, 0, 0);
- -moz-transform: translate3d(0, 0, 0);
- -ms-transform: translate3d(0, 0, 0);
- -o-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
-}
-
-.slick-track
-{
- position: relative;
- top: 0;
- left: 0;
-
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-.slick-track:before,
-.slick-track:after
-{
- display: table;
-
- content: '';
-}
-.slick-track:after
-{
- clear: both;
-}
-.slick-loading .slick-track
-{
- visibility: hidden;
-}
-
-.slick-slide
-{
- display: none;
- float: left;
-
- height: 100%;
- min-height: 1px;
-}
-[dir='rtl'] .slick-slide
-{
- float: right;
-}
-.slick-slide img
-{
- display: block;
-}
-.slick-slide.slick-loading img
-{
- display: none;
-}
-.slick-slide.dragging img
-{
- pointer-events: none;
-}
-.slick-initialized .slick-slide
-{
- display: block;
-}
-.slick-loading .slick-slide
-{
- visibility: hidden;
-}
-.slick-vertical .slick-slide
-{
- display: block;
-
- height: auto;
-
- border: 1px solid transparent;
-}
-.slick-arrow.slick-hidden {
- display: none;
-}
diff --git a/assets/css/styles.css b/assets/css/styles.css
deleted file mode 100644
index 1d94b38..0000000
--- a/assets/css/styles.css
+++ /dev/null
@@ -1,1335 +0,0 @@
-/*===== FONTS =====*/
-@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,600,700,800|Roboto:400,500,700,900&display=swap');
-/*===== RESET CSS =====*/
-/* http://meyerweb.com/eric/tools/css/reset/
- v2.0 | 20110126
- License: none (public domain)
-*/
-
-html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video {
- margin: 0;
- padding: 0;
- border: 0;
- font-size: 100%;
- font: inherit;
- vertical-align: baseline;
-}
-
-/* HTML5 display-role reset for older browsers */
-article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {
- display: block;
-}
-body {
- line-height: 1;
-}
-ol,ul {
- list-style: none;
-}
-blockquote, q {
- quotes: none;
-}
-
-blockquote:before, blockquote:after, q:before, q:after {
- content: '';
- content: none;
-}
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-/*===== END RESET CSS =====*/
-
-
-/*===== CSS VARIABLES =====*/
-:root {
- --blueChart: #45baeb;
- --blueDark : #364954;
- --greenChart: #65eeb1;
- --error: #ffb13b;
-
-}
-
-/*===== END CSS VARIABLES =====*/
-/*===== GLOBAL =====*/
-html {
- min-height: 100%;
- height: auto;
- scroll-behavior: smooth;
- overflow-x: hidden;
-}
-body {
- min-height: 100%;
- height: auto;
- font-family: 'Open Sans', Arial, Helvetica, sans-serif;
- font-size: 16px;
- line-height: 22px;
- color: var(--blueDark);
- background-color: #fff;
-}
-.flex {
- display: flex;
-}
-.flex.row {
- flex-direction: row;
-}
-.flex.col{
- flex-direction: column;
-}
-.flex1 {
- flex: 1;
- max-width: 100%;
-}
-.flex2 {
- flex: 2;
- max-width: 100%;
-}
-.flex3 {
- flex: 3;
- max-width: 100%;
-}
-.flex4 {
- flex: 4;
- max-width: 100%;
-}
-.centered {
- align-items: center;
- justify-content: center;
-}
-#main {
- position: fixed;
- width: 100%;
- height: 100%;
- display: flex;
- flex-direction: column;
- overflow: hidden;
-}
-section {
- padding: 40px 0;
- z-index: 2;
- position: relative;
-}
-section.white-shadow {
- background-color: #fff;
- z-index: 3;
- -moz-box-shadow: 0 0px 4px 2px rgba(0,0,0,0.1);
- -webkit-box-shadow: 0 0px 4px 2px rgba(0,0,0,0.1);
- box-shadow: 0 0px 4px 2px rgba(0,0,0,0.1);
-}
-section.gradient {
- z-index: 2;
- background: rgba(255,255,255,1);
- background: -moz-radial-gradient(center, ellipse cover, rgba(255,255,255,1) 0%, rgba(213,231,242,1) 100%);
- background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, rgba(255,255,255,1)), color-stop(100%, rgba(213,231,242,1)));
- background: -webkit-radial-gradient(center, ellipse cover, rgba(255,255,255,1) 0%, rgba(213,231,242,1) 100%);
- background: -o-radial-gradient(center, ellipse cover, rgba(255,255,255,1) 0%, rgba(213,231,242,1) 100%);
- background: -ms-radial-gradient(center, ellipse cover, rgba(255,255,255,1) 0%, rgba(213,231,242,1) 100%);
- background: radial-gradient(ellipse at center, rgba(255,255,255,1) 0%, rgba(213,231,242,1) 100%);
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#d5e7f2', GradientType=1 );
-}
-.wrapper{
- max-width: 1380px;
- width: 100%;
- margin: 0 auto;
-}
-#page-content{
- flex: 1;
- overflow-x: hidden;
- overflow-y: auto;
- z-index: 9;
- scroll-behavior: smooth;
-}
-.cta-link {
- display: inline-block;
- font-size: 18px;
- font-weight: 600;
- padding: 5px 20px;
- color: var(--greenChart);
- background-color: transparent;
- text-decoration: none;
- border: 1px solid var(--greenChart);
- -moz-box-shadow: 0 2px 6px 0 rgba(0,120,60,0.2);
- -webkit-box-shadow: 0 2px 6px 0 rgba(0,120,60,0.2);
- box-shadow: 0 2px 6px 0 rgba(0,120,60,0.2);
- -webkit-transition: all 0.3s ease-out;
- -moz-transition: all 0.3s ease-out;
- -o-transition: all 0.3s ease-out;
- transition: all 0.3s ease-out;
-
-}
-.cta-link:hover{
- background-color: var(--greenChart);
- color: #fff;
- -moz-box-shadow: 0 1px 2px 0 rgba(0,0,0,0.1);
- -webkit-box-shadow: 0 1px 2px 0 rgba(0,0,0,0.1);
- box-shadow: 0 1px 2px 0 rgba(0,0,0,0.1);
-}
-h2.section-title {
- font-size: 32px;
- font-weight: 500;
- font-family: 'Roboto', 'Open Sans', Arial, Helvetica, sans-serif;
- display: inline-block;
- width: 100%;
- text-align: center;
- padding: 0 0 40px 0;
-}
-h2.section-title.white{
- color: #fff;
-}
-h3 {
- display: inline-block;
- font-family: 'Roboto', 'Open Sans', Arial, Helvetica, sans-serif;
- width: 100%;
- font-size: 22px;
- font-weight: 700;
- text-transform: uppercase;
- color: var(--greenChart);
- padding: 0 0 10px 0;
-}
-.white-box {
- background-color: #fff;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- -moz-box-shadow: 0 2px 4px 0 rgba(0,0,0,0.3);
- -webkit-box-shadow: 0 2px 4px 0 rgba(0,0,0,0.3);
- box-shadow: 0 2px 4px 0 rgba(0,0,0,0.3);
- margin: 10px 0;
- padding: 40px;
-}
-ul.content-list {
- padding: 0;
- margin: 0;
- display: flex;
- flex-direction: column;
- margin: 20px 0;
-}
-ul.content-list li{
- flex: 1;
- display: inline-block;
- padding: 5px 0 5px 30px;
- font-size: 16px;
- position: relative;
-}
-ul.content-list li:after{
- content: '';
- display: inline-block;
- width: 5px;
- height: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- background-color: var(--greenChart);
- position: absolute;
- top: 15px;
- left: 15px;
-}
-ul.content-list li ul li:after{
- content: '-';
- font-weight: 600;
- background-color: transparent;
- width: auto;
- height: auto;
- top: 5px;
- left: 15px;
-}
-.hidden {
- display: none;
-}
-button {
- outline: none;
-}
-h1{
- font-family: 'Roboto', 'Open Sans', Arial, Helvetica, sans-serif;
- font-size: 36px;
- line-height: 42px;
- font-weight: 700;
- padding: 0 0 40px 0;
- text-align: center;
-}
-p{
- display: inline-block;
- font-family: 'Open Sans', Arial, Helvetica, sans-serif;
- font-weight: 400;
- width: 100%;
- font-size: 16px;
- line-height: 24px;
-}
-/*===== END GLOBAL =====*/
-/*===== HEADER =====*/
-#header {
- height: 40px;
- padding: 10px 0;
- background-color: var(--blueDark);
- color: #fff;
- z-index: 15;
- -moz-box-shadow: 0 2px 4px 0 rgba(0,0,0,0.3);
- -webkit-box-shadow: 0 2px 4px 0 rgba(0,0,0,0.3);
- box-shadow: 0 2px 4px 0 rgba(0,0,0,0.3);
- -webkit-transition: all 0.3s ease-out;
- -moz-transition: all 0.3s ease-out;
- -o-transition: all 0.3s ease-out;
- transition: all 0.3s ease-out;
-
-}
-#burger-nav{
- display: none;
-}
-
-.navigation {
- align-items: flex-end;
- justify-content: flex-end;
-}
-.nav-link{
- display: inline-block;
- height: 40px;
- line-height: 35px;
- color: #fff;
- font-size: 16px;
- font-weight: 600;
- padding: 0;
- margin: 0 20px;
- text-decoration: none;
- position: relative;
-}
-.nav-link:hover{
- color: var(--blueChart)
-}
-
-.nav-link.active,
-.nav-link.active:hover{
- color: var(--greenChart);
-}
-.nav-link.active::after,
-.nav-link.active:hover::after{
- content: '';
- display: inline-block;
- height: 2px;
- width: 100%;
- background-color: var(--greenChart);
- position: absolute;
- top: 30px;
- left: 0;
-}
-
-.linto-ai-logo{
- display: inline-block;
- height: 40px;
- width: auto;
-}
-
-#lang-container{
- height: 20px;
- padding: 5px 0;
- margin-top: 10px;
-}
-
-.lang-btn-container {
- display: inline-block;
- position: relative;
- vertical-align: top;
- margin: 0;
- padding: 0;
- height: 40px;
-}
-#lang-container .title{
- display: inline-block;
- padding: 0 5px;
- line-height: 20px;
- font-size: 14px;
- color: var(--blueDark);
- vertical-align: top;
-}
-.lang-selector{
- display: inline-block;
- height: 20px;
- border: 1px solid #ccc;
- vertical-align: top;
- padding: 0 ;
- margin: 0;
- border: none;
- padding: 0 15px 0 5px;
- cursor: pointer;
- background-color: transparent;
-}
-
-#lang-btn,
-#lang-btn-burger{
- background-image: url('../img/select-arrow@2x.png');
- background-size: 15px 80px;
- background-position: 100% 0;
- background-repeat: no-repeat;
-}
-.lang-selector .label,
-.lang-selector .icon{
- display: inline-block;
- vertical-align: top;
- height: 20px;
- line-height: 20px;
-}
-.lang-selector .label{
- font-size: 14px;
- color: #fff;
-
-}
-.lang-selector .icon{
- width: 30px;
- background-size: 30px 20px;
- background-repeat: no-repeat;
- background-position: 0 0;
-}
-.lang-selector .icon.fr{
- background-image: url('../img/fr-fr.png');
-}
-.lang-selector .icon.en{
- background-image: url('../img/en-gb.png');
-}
-.lang-list.visible{
- width: 100%;
- height: 20px;
- display: block;
- position: absolute;
- top: 20px;
- left: 0;
- padding: 0 ;
- margin: 0;
-}
-.lang-list.visible .lang-selector {
- width: 100%;
- padding: 0;
- text-align: left;
-}
-.lang-list.visible .lang-selector .icon{
- margin-left: 5px
-}
-
-.lang-selector:hover .label {
- color: var(--blueChart);
-}
-#lang-btn.closed:hover,
-#lang-btn-burger.closed:hover {
- background-position: 100% -20px;
-}
-#lang-btn.opened,
-#lang-btn-burger.opened {
- background-position: 100% -40px;
-}
-#lang-btn.opened:hover,
-#lang-btn-burger.opened:hover {
- background-position: 100% -60px;
-}
-
-/*===== END HEADER =====*/
-
-/*===== HOME TOP =====*/
-h1.home-title{
- text-align: left;
-}
-.home-title-container {
- align-items: flex-start;
- justify-content: center;
-}
-.linto-home-container{
- text-align: center;
-}
-.linto-home{
- display: inline-block;
- width: 350px;
- height: auto;
- margin: 40px 0;
-}
-
-#linto-animated{
- max-height: 500px;
-}
-
-#linto-animated svg.linto-animation-home {
- max-height: 500px !important;
- max-width: 500px !important;
-}
-/*===== END HOME TOP =====*/
-
-/*===== BATTERIES INCLUDED =====*/
-#batteries-included>.flex{
- align-items: center;
-}
-
-.characteristics-item-container {
- margin: 0 40px;
- max-width: 380px;
-}
-.characteristics-item .icon-container {
- width: 80px;
- height: 80px;
- margin-right: 10px;
-}
-
-.characteristics-item .icon-container .icon {
- display: inline-block;
- width: 80px;
- height: 80px;
- background-image: url('../img/characteristics-icons@2x.png');
- background-size: 80px 480px;
- background-repeat: no-repeat;
-}
-
-.characteristics-item .icon-container .icon.voice {
- background-position: 0 0;
-}
-.characteristics-item .icon-container .icon.vocabulary {
- background-position: 0 -80px;
-}
-.characteristics-item .icon-container .icon.integration {
- background-position: 0 -160px;
-}
-.characteristics-item .icon-container .icon.productivity {
- background-position: 0 -240px;
-}
-.characteristics-item .icon-container .icon.skills {
- background-position: 0 -320px;
-}
-.characteristics-item .icon-container .icon.opensource {
- background-position: 0 -400px;
-}
-.characteristics-item{
- margin-bottom: 40px;
-}
-.characteristics-item .content-container {
- flex: 1;
-}
-/*===== END BATTERIES INCLUDED =====*/
-
-/*===== HOW DOES IT WORK ? =====*/
-.hdiw-controls .controls{
- margin-top: 60px;
-}
-.hdiw-controls .controls button{
- display: inline-block;
- width: 30px;
- height: 30px;
- line-height: 25px;
- font-size: 16px;
- margin: 0 5px;
- border: 1px solid var(--blueDark);
- background-color: #ffffff;
- cursor: pointer;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
-}
-.hdiw-controls .controls button:hover {
- color: var(--greenChart);
-}
-.hdiw-controls .controls button.active,
-.hdiw-controls .controls button.active:hover{
- background-color: var(--greenChart);
- color: var(--blueDark);
-}
-#hdiw-animation {
- text-align: center;
- position: relative;
-}
-#linto-animation{
- text-align: center;
-}
-#linto-animation svg,
-#hdiw-animation svg {
- width: 90% !important;
-}
-.hdiw-controls-arrow {
- width: 160px;
- height: 30px;
- text-align: center;
- position: absolute;
- top: 0;
- left: 50%;
- margin-left: -80px;
- background-color: #fff;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- -moz-box-shadow: 0 0px 4px 2px rgba(0,0,0,0.1);
- -webkit-box-shadow: 0 0px 4px 2px rgba(0,0,0,0.1);
- box-shadow: 0 0px 4px 2px rgba(0,0,0,0.1);
- z-index: 99;
- border: 1px solid var(--blueChart);
-
-}
-.hdiw-controls-arrow button{
- display: inline-block;
- width: 30px;
- height: 30px;
- margin: 0 10px;
- padding: 0;
- border: none;
- cursor: pointer;
- background-image: url('../img/hdiw-arrows@2x.png');
- background-size: 60px 90px;
- background-repeat: no-repeat;
- background-color: transparent;
-}
-
-.hdiw-controls-arrow button.hdiw-replay{
- background-image: url('../img/replay@2x.png');
- background-size: 30px 60px;
- background-repeat: no-repeat;
- background-color: transparent;
- background-position: 0 0;
-}
-.hdiw-controls-arrow button.hdiw-replay:hover {
- background-position: 0 -30px;
-}
-.hdiw-controls-arrow button.prev.disabled{
- background-position: 0 0;
-}
-.hdiw-controls-arrow button.prev.enabled{
- background-position: 0 -30px;
-}
-.hdiw-controls-arrow button.prev.enabled:hover{
- background-position: 0 -60px;
-}
-.hdiw-controls-arrow button.next.disabled{
- background-position: -30px 0;
-}
-.hdiw-controls-arrow button.next.enabled{
- background-position: -30px -30px;
-}
-.hdiw-controls-arrow button.next.enabled:hover{
- background-position: -30px -60px;
-}
-
-/*===== END HOW DOES IT WORK ? =====*/
-
-/*===== SOLUTIONS =====*/
-.solution-content{
- text-align: center;
- overflow: hidden;
- padding: 0 40px;
-}
-.solution-content:first-child {
- border-right: 1px solid #f2f2f2;
-}
-.solution-content h3 {
- text-align: center;
- padding-bottom: 40px;
-}
-.solution-content p {
- text-align: center;
- padding-bottom: 40px;
- line-height: 30px;
- font-weight: 600;
-}
-#use-cases-slider {
- background-color: var(--greenChart);
- width: 100%;
- height: auto;
- margin-top: 40px;
-}
-.use-case-item{
- width: 100%;
- height: auto;
- text-align: center;
-}
-.use-case-item h4 {
- display: block;
- width: 90%;
- text-align: center;
- font-size: 20px;
- font-weight: 600;
- color: #fff;
- padding: 20px 0 0 0;
- margin: 10px auto;
-}
-.use-case-item .slider-img{
- display: inline-block;
- width: 85%;
- height: auto;
-}
-
-/* Slick slider custom */
-.slick-dots li button{
- display: inline-block;
- width: 10px;
- height: 10px;
- padding: 0;
- margin: 0 5px;
- background-color: var(--blueDark);
- border-radius: 5px;
- content: "";
-}
-.slick-dots li button:after,
-.slick-dots li button:before {
- display: none;
-}
-.slick-dots li button:hover,
-.slick-dots li button:focus,
-.slick-dots li button[aria-selected="true"] {
- background-color: var(--greenChart);
-}
-.slick-prev, .slick-next{
- content: '';
- display: inline-block;
- width: 30px;
- height: 30px;
- position: absolute;
- top: 50%;
- margin-top: -15px;
- z-index: 99;
-}
-.slick-prev,
-.slick-prev:focus{
- background-image: url('../img/slider-arrows@2x.png');
- background-size: 60px 60px;
- background-repeat: no-repeat;
- left: 10px;
- background-position: 0 0;
-}
-.slick-prev:hover{
- background-image: url('../img/slider-arrows@2x.png');
- background-size: 60px 60px;
- background-repeat: no-repeat;
- background-position: 0 -30px;
-}
-.slick-next,
-.slick-next:focus{
- background-image: url('../img/slider-arrows@2x.png');
- background-size: 60px 60px;
- background-repeat: no-repeat;
- background-position: -30px -30px;
- left: 100%;
- margin-left: -40px ;
- background-position: -30px 0;
-}
-.slick-next:hover{
- background-image: url('../img/slider-arrows@2x.png');
- background-size: 60px 60px;
- background-repeat: no-repeat;
- background-position: -30px -30px;
-}
-
-.slick-prev:before,
-.slick-next:before{
- display: none;
-}
-/* END Slick slider custom */
-h3.raspberry-title {
- padding-top: 40px;
-}
-img.raspberry-schema {
- display: inline-block;
- width: 75%;
- height: auto;
- margin-bottom: 20px;
-}
-img.schema-server{
- display: inline-block;
- height: 250px;
- width: auto;
-}
-/*===== END SOLUTIONS =====*/
-
-/*===== PARTNERS =====*/
-.partners-container {
- justify-content: space-evenly;
-}
-.partner-logo{
- display: inline-block;
- height: 80px;
- width: auto;
- margin: 0 20px;
- position: relative;
-}
-/*===== END PARTNERS =====*/
-
-/*===== WAKEMEUP =====*/
-#wakemeup .wrapper{
- align-items: center;
-}
-#wakemeup .wrapper p {
- text-align: center;
- padding: 0 ;
-}
-#wakemeup .wrapper a {
- display: inline-block;
- width: auto;
-}
-.wakemeup-img{
- display: block;
- width: 280px;
- margin: 10px auto;
- height: auto;
-}
-/*===== END WAKEMEUP =====*/
-
-/*=== ENTERPRISES SOLUTIONS ===*/
-#enterprises-solutions-top {
- padding: 40px 0;
-}
-#section-content-wrapper {
- position: relative;
- z-index: 3;
- -moz-box-shadow: 0 0px 4px 2px rgba(0,0,0,0.1);
- -webkit-box-shadow: 0 0px 4px 2px rgba(0,0,0,0.1);
- box-shadow: 0 0px 4px 2px rgba(0,0,0,0.1);
-}
-#section-content-wrapper section{
- border-top: 1px solid #ccc;
- z-index: 9;
- max-width: 100%;
-}
-#section-content-wrapper section:first-child {
- border: none;
-}
-.section-content-container{
- align-items: flex-end;
- max-width: 100%;
-}
-
-#main.enterprises #page-content a{
- display: inline-block;
- position: relative;
- font-weight: 400;
- text-decoration: none;
- color: var(--blueChart)
-}
-a.content-link::after{
- display: none;
-}
-a.content-link:hover::after{
- content: '';
- display: inline-block;
- width: 100%;
- height: 2px;
- background-color: var(--blueChart);
- position: absolute;
- top: 20px;
- left: 0;
- animation: animUnderline 0.5s ease;
- -moz-animation: animUnderline 0.5s ease;
- -webkit-animation: animUnderline 0.5s ease;
- -o-animation: animUnderline 0.5s ease;
- -ms-animation: animUnderline 0.5s ease;
-}
-
-#main.enterprises #page-content p {
- margin: 10px 0;
-}
-h4.content-sub-title{
- display: inline-block;
- width: 100%;
- font-size: 20px;
- font-weight: 600;
- padding: 20px 0;
-}
-.sub-part{
- padding: 20px;
- background-color: #f5f9ff;
- margin: 20px 0;
- border: 1px solid #efefef;
-}
-.sub-part h4.content-sub-title{
- padding-top: 0;
-}
-
-.content-section .wrapper {
- max-width: 1040px;
-}
-.content-title {
- padding: 40px 0 20px 0;
-}
-
-img.gafam-free{
- display: inline-block;
- height: 200px;
- width: auto;
-}
-
-.enterprise-top-content{
- justify-content: center;
-}
-.enterprise-top-content h3.content-title{
- padding: 20px 0;
-}
-.enterpise-top-img{
- align-items: center;
- justify-content: center;
-}
-.enterpise-top-img img.linto-ent {
- display: inline-block;
- width: 300px;
- height: auto;
-}
-.enterpise-top-img img.by-linagora {
- display: inline-block;
- width: 150px;
- height: auto;
-}
-
-
-#compare-table{
- border-collapse: separate;
- border-spacing: 20px 0;
- margin: 40px 0 10px 0;
- max-width: 100%;
- overflow: auto;
-}
-.compare-infos{
- font-size: 14px;
- font-style: italic;
- margin-bottom: 40px;
-}
-.compare-infos strong{
- font-weight: 600;
-}
-#compare-table thead tr th {
- height: 60px;
- font-size: 20px;
- font-weight: 600;
- background-color: #454545;
- color: #fff;
- text-align: center;
- vertical-align: middle;
- width: 160px;
- max-width: 160px;
- -webkit-border-top-left-radius: 5px;
- -webkit-border-top-right-radius: 5px;
- -moz-border-radius-topleft: 5px;
- -moz-border-radius-topright: 5px;
- border-top-left-radius: 5px;
- border-top-right-radius: 5px;
- overflow: hidden;
-}
-#compare-table thead tr th.linto {
- background-color: var(--blueChart);
-}
-#compare-table thead tr {
- margin: 0 5px;
-}
-#compare-table thead tr th.blank{
- background-color: transparent;
- border: none;
-}
-#compare-table tbody tr td{
- padding: 5px;
- border: 1px solid #ccc;
- border-top: none;
- font-size: 14px;
- text-align: center;
- vertical-align: middle;
- height: 40px;
-}
-#compare-table tbody tr:first-child td:first-child{
- border-top: 1px solid #ccc;
-}
-#compare-table tbody tr td:first-child{
- font-weight: 600;
- text-align: right;
-}
-#compare-table tbody tr:nth-child(2n) td {
- background-color: #fefefe;
-}
-#compare-table tbody tr:nth-child(2n+1) td {
- background-color: #fafafa;
-}
-
-#compare-table tbody tr td .icon{
- display: inline-block;
- width: 20px;
- height: 20px;
- margin-bottom: -5px;
- background-image: url('../img/status-icons@2x.png');
- background-repeat: no-repeat;
- background-size: 20px 60px;
-}
-#compare-table tbody tr td .icon.yes {
- background-position: 0 0;
-}
-#compare-table tbody tr td .icon.linto {
- background-position: 0 -40px;
-}
-#compare-table tbody tr td .icon.no {
- background-position: 0 -20px;
-}
-#compare-table tbody tr td .label{
- display: inline-block;
- width: 100%;
- padding-top: 5px;
- font-size: 14px;
- line-height: 16px;
- color: var(--blueDark)
-}
-#compare-table tbody tr td .label.linto {
- color: var(--blueChart);
-}
-
-ul.publication-list {
- display: flex;
- flex-direction: column;
- padding: 0;
- margin: 0;
-}
-ul.publication-list li{
- padding: 5px 10px 5px 30px;
- position: relative;
-}
-ul.publication-list li:before{
- content: '-';
- color: var(--blueDark);
- position: absolute;
- top: 5px;
- left: 15px;
- font-weight: 600;
-
-}
-ul.publication-list li.conf{
- padding-bottom: 20px;
-}
-ul.publication-list li.conf i{
- font-style: italic;
-}
-
-img.schema-services{
- width: 300px;
- height: auto;
-}
-table.content-table{
- width: 100%;
- border-collapse: collapse;
- padding: 0;
- margin: 20px 0;
-}
-table.content-table thead tr th.blank{
- background-color: transparent;
- border: none;
-}
-table.content-table thead tr th.title{
- font-size: 18px;
- font-weight: 600;
- vertical-align: middle;
- text-align: center;
- color: #fff;
- padding: 10px;
-}
-table.content-table thead tr th.title.parole-lue{
- background-color: var(--blueDark)
-}
-table.content-table thead tr th.title.parole-spontanee{
- background-color: var(--blueChart)
-}
-table.content-table tbody tr td {
- padding: 10px;
- text-align: center;
- border: 1px solid #dedede;
- background-color: #fff;
- vertical-align: middle;
-}
-table.content-table tbody tr td.brand-logo{
- width: 80px;
- height: auto;
- text-align: center;
-}
-table.content-table tbody tr td.brand-logo img{
- display: inline-block;
- height: 30px;
- width: auto;
-}
-
-table.content-table tbody tr.linagora td {
- background-color: var(--greenChart);
- font-weight: 600;
- color: #fff;
-}
-table.content-table tbody tr.linagora td.val {
- font-size: 18px;
-}
-.table-label{
- font-weight: 600;
- font-size: 18px;
-}
-summary {
- font-weight: 600;
- color: var(--blueChart);
-}
-
-@keyframes animUnderline {
- from {
- width: 0;
- }
- to {
- width: 100%;
- }
-}
-@-webkit-keyframes animUnderline {
- from {
- width: 0;
- }
- to {
- width: 100%;
- }
-}
-
-#content-nav.hidden{
- display: none;
-}
-#content-nav.visible{
- display: block;
- width: 220px;
- height: 100%;
- position: fixed;
- background: #fff;
- border-right: 1px solid #ccc;
- top: 60px;
- left: 0;
- z-index: 10;
- padding: 20px;
-}
-#content-nav.visible ul {
- display: flex;
- flex-direction: column;
-}
-#content-nav.visible ul li.parent{
- flex: 1;
- padding: 0;
- font-size: 13px;
- margin: 10px 0;
- padding-left: 5px;
-}
-
-a.content-nav-link{
- position: relative;
- font-weight: 600 !important;
- color: #454545 !important;
- line-height: 18px;
-}
-
-a.content-nav-link:hover,
-a.content-nav-link.active{
- color: var(--blueChart) !important;
-}
-a.content-nav-link.active:before {
- content: ">";
- font-family: 'Roboto', 'Open Sans', Arial, Helvetica, sans-serif;
- position: absolute;
- top: 0px;
- left: -15px;
-}
-
-#content-nav.visible ul li.parent ul li.child{
- padding-left: 20px;
- margin: 3px 0;
-}
-#content-nav.visible ul li.parent > .content-nav-link{
- width: 100%;
- padding: 5px 0 5px 5px;
- background: #f9f9f9;
-}
-
-img.schema-deploy-linto{
- display: inline-block;
- width: 70%;
- height: auto;
-}
-
-/*===== CONTACT FORM =====*/
-#main #page-content #contact{
- position: relative;
- z-index: 11;
- background-color: #ccc;
- /* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#364954+0,45baeb+100 */
- background: #364954; /* Old browsers */
- background: -moz-linear-gradient(45deg, #364954 0%, #45baeb 100%); /* FF3.6-15 */
- background: -webkit-linear-gradient(45deg, #364954 0%,#45baeb 100%); /* Chrome10-25,Safari5.1-6 */
- background: linear-gradient(45deg, #364954 0%,#45baeb 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#364954', endColorstr='#45baeb',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
- -moz-box-shadow: 0 0px 4px 2px rgba(0,0,0,0.3);
- -webkit-box-shadow: 0 0px 4px 2px rgba(0,0,0,0.3);
- box-shadow: 0 0px 4px 2px rgba(0,0,0,0.3);
-}
-.contact-wrapper{
- max-width: 1040px;
- width: 100%;
- margin: 0 auto;
-}
-
-.field-container{
- display: flex;
- flex-direction: column;
- position: relative;
-}
-.field-container .label {
- display: inline-block;
- width: 100%;
- padding: 5px 0;
- font-size: 16px;
- font-weight: 600;
- color: #fff;
-}
-.field-container .required{
- color: var(--blueChart);
- font-weight: 700;
-}
-.field-container .contact-input {
- display: flex;
- flex: 1;
- max-width: 300px;
- padding: 0 5px;
- height: 30px;
- line-height: 30px;
- font-size: 14px;
- font-family: 'Open Sans', 'Roboto', Arial, Helvetica, sans-serif;
- margin: 0;
- border: 2px solid #fff;
- background-color: #fff;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- -moz-box-shadow: 0 2px 2px 0px rgba(0,0,0,0.2);
- -webkit-box-shadow: 0 2px 2px 0px rgba(0,0,0,0.2);
- box-shadow: 0 2px 2px 0px rgba(0,0,0,0.2);
-}
-.field-container .contact-textarea {
- display: flex;
- flex: 1;
- padding: 5px;
- line-height: 20px;
- font-size: 14px;
- font-family: 'Open Sans', 'Roboto', Arial, Helvetica, sans-serif;
- margin: 0;
- border: 2px solid #fff;
- background-color: #fff;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- -moz-box-shadow: 0 2px 2px 0px rgba(0,0,0,0.2);
- -webkit-box-shadow: 0 2px 2px 0px rgba(0,0,0,0.2);
- box-shadow: 0 2px 2px 0px rgba(0,0,0,0.2);
- min-height: 80px;
-}
-.field-container .contact-input.error,
-.field-container .contact-textarea.error{
- border-color: var(--error);
-
-}
-.field-container .error-field {
- display: inline-block;
- width: 100%;
- padding: 5px 0;
- height: 20px;
- line-height: 20px;
- font-size: 14px;
- color: var(--error);
- font-style: italic;
-}
-
-.field-container.submit{
- height: 60px;
- align-items: center;
-}
-.field-container.submit .send-notif{
- display: block;
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background: #fff;
-}
-.field-container.submit .send-notif.hidden{
- display: none;
-}
-
-.field-container.submit .send-notif{
- display: flex;
- flex-direction: column;
- justify-content: center;
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background: #fff;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- -moz-box-shadow: 0 2px 2px 0px rgba(0,0,0,0.2);
- -webkit-box-shadow: 0 2px 2px 0px rgba(0,0,0,0.2);
- box-shadow: 0 2px 2px 0px rgba(0,0,0,0.2);
- background-color: #fff;
-}
-.field-container.submit .send-notif .notif-msg{
- display: inline-block;
- width: 100%;
- font-weight: 700;
- text-align: center;
-}
-.field-container.submit .send-notif.success .notif-msg{
- color: var(--greenChart);
-}
-.field-container.submit .send-notif.error .notif-msg{
- color: var(--error);
-}
-
-.field-container.submit .submit-btn{
- display: inline-block;
- padding: 5px 15px;
- border: 1px solid var(--blueChart);
- color: var(--blueChart);
- font-size: 18px;
- font-weight: 600;
- text-transform: uppercase;
- cursor: pointer;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- -moz-box-shadow: 0 2px 2px 0px rgba(0,0,0,0.2);
- -webkit-box-shadow: 0 2px 2px 0px rgba(0,0,0,0.2);
- box-shadow: 0 2px 2px 0px rgba(0,0,0,0.2);
- background-color: #fff;
- -webkit-transition: all 0.3s ease-out;
- -moz-transition: all 0.3s ease-out;
- -o-transition: all 0.3s ease-out;
- transition: all 0.3s ease-out;
-}
-.field-container.submit .submit-btn:hover{
- background-color: var(--blueChart);
- color: #fff;
-}
-
-
-/*===== END CONTACT FORM =====*/
-
-/*===== FOOTER =====*/
-#main #page-content footer{
- position: relative;
- z-index: 10;
-}
-
-#main #page-content footer a.footer-link {
- display: inline-block;
- color: #fff;
- font-weight: 600;
- text-decoration: none;
- font-size: 14px;
-}
-#main #page-content footer a.footer-link:hover {
- text-decoration: underline;
-}
-
-#main #page-content footer .footer-label {
- display: inline-block;
- width: 100%;
- font-size: 16px;
- font-weight: 600;
- padding-bottom: 10px;
- color: #fff;
-}
-#main #page-content footer .copyright{
- height: 30px;
- line-height: 30px;
- text-align: center;
- background-color: #333;
- color: #fff;
- font-size: 14px;
-
-}
-/*===== END FOOTER =====*/
diff --git a/assets/css/styles.min.css b/assets/css/styles.min.css
deleted file mode 100644
index fe995e5..0000000
--- a/assets/css/styles.min.css
+++ /dev/null
@@ -1 +0,0 @@
-@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,600,700,800|Roboto:400,500,700,900&display=swap);a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';content:none}table{border-collapse:collapse;border-spacing:0}:root{--blueChart:#45baeb;--blueDark:#364954;--greenChart:#65eeb1;--error:#ffb13b}html{min-height:100%;height:auto;scroll-behavior:smooth;overflow-x:hidden}body{min-height:100%;height:auto;font-family:'Open Sans',Arial,Helvetica,sans-serif;font-size:16px;line-height:22px;color:var(--blueDark);background-color:#fff}.flex{display:flex}.flex.row{flex-direction:row}.flex.col{flex-direction:column}.flex1{flex:1;max-width:100%}.flex2{flex:2;max-width:100%}.flex3{flex:3;max-width:100%}.flex4{flex:4;max-width:100%}.centered{align-items:center;justify-content:center}#main{position:fixed;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}section{padding:40px 0;z-index:2;position:relative}section.white-shadow{background-color:#fff;z-index:3;-moz-box-shadow:0 0 4px 2px rgba(0,0,0,.1);-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.1);box-shadow:0 0 4px 2px rgba(0,0,0,.1)}section.gradient{z-index:2;background:rgba(255,255,255,1);background:-moz-radial-gradient(center,ellipse cover,rgba(255,255,255,1) 0,rgba(213,231,242,1) 100%);background:-webkit-gradient(radial,center center,0,center center,100%,color-stop(0,rgba(255,255,255,1)),color-stop(100%,rgba(213,231,242,1)));background:-webkit-radial-gradient(center,ellipse cover,rgba(255,255,255,1) 0,rgba(213,231,242,1) 100%);background:-o-radial-gradient(center,ellipse cover,rgba(255,255,255,1) 0,rgba(213,231,242,1) 100%);background:-ms-radial-gradient(center,ellipse cover,rgba(255,255,255,1) 0,rgba(213,231,242,1) 100%);background:radial-gradient(ellipse at center,rgba(255,255,255,1) 0,rgba(213,231,242,1) 100%)}.wrapper{max-width:1380px;width:100%;margin:0 auto}#page-content{flex:1;overflow-x:hidden;overflow-y:auto;z-index:9;scroll-behavior:smooth}.cta-link{display:inline-block;font-size:18px;font-weight:600;padding:5px 20px;color:var(--greenChart);background-color:transparent;text-decoration:none;border:1px solid var(--greenChart);-moz-box-shadow:0 2px 6px 0 rgba(0,120,60,.2);-webkit-box-shadow:0 2px 6px 0 rgba(0,120,60,.2);box-shadow:0 2px 6px 0 rgba(0,120,60,.2);-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.cta-link:hover{background-color:var(--greenChart);color:#fff;-moz-box-shadow:0 1px 2px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.1);box-shadow:0 1px 2px 0 rgba(0,0,0,.1)}h2.section-title{font-size:32px;font-weight:500;font-family:Roboto,'Open Sans',Arial,Helvetica,sans-serif;display:inline-block;width:100%;text-align:center;padding:0 0 40px 0}h2.section-title.white{color:#fff}h3{display:inline-block;font-family:Roboto,'Open Sans',Arial,Helvetica,sans-serif;width:100%;font-size:22px;font-weight:700;text-transform:uppercase;color:var(--greenChart);padding:0 0 10px 0}.white-box{background-color:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-moz-box-shadow:0 2px 4px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.3);box-shadow:0 2px 4px 0 rgba(0,0,0,.3);margin:10px 0;padding:40px}ul.content-list{padding:0;margin:0;display:flex;flex-direction:column;margin:20px 0}ul.content-list li{flex:1;display:inline-block;padding:5px 0 5px 30px;font-size:16px;position:relative}ul.content-list li:after{content:'';display:inline-block;width:5px;height:5px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;background-color:var(--greenChart);position:absolute;top:15px;left:15px}ul.content-list li ul li:after{content:'-';font-weight:600;background-color:transparent;width:auto;height:auto;top:5px;left:15px}.hidden{display:none}button{outline:0}h1{font-family:Roboto,'Open Sans',Arial,Helvetica,sans-serif;font-size:36px;line-height:42px;font-weight:700;padding:0 0 40px 0;text-align:center}p{display:inline-block;font-family:'Open Sans',Arial,Helvetica,sans-serif;font-weight:400;width:100%;font-size:16px;line-height:24px}#header{height:40px;padding:10px 0;background-color:var(--blueDark);color:#fff;z-index:15;-moz-box-shadow:0 2px 4px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.3);box-shadow:0 2px 4px 0 rgba(0,0,0,.3);-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}#burger-nav{display:none}.navigation{align-items:flex-end;justify-content:flex-end}.nav-link{display:inline-block;height:40px;line-height:35px;color:#fff;font-size:16px;font-weight:600;padding:0;margin:0 20px;text-decoration:none;position:relative}.nav-link:hover{color:var(--blueChart)}.nav-link.active,.nav-link.active:hover{color:var(--greenChart)}.nav-link.active::after,.nav-link.active:hover::after{content:'';display:inline-block;height:2px;width:100%;background-color:var(--greenChart);position:absolute;top:30px;left:0}.linto-ai-logo{display:inline-block;height:40px;width:auto}#lang-container{height:20px;padding:5px 0;margin-top:10px}.lang-btn-container{display:inline-block;position:relative;vertical-align:top;margin:0;padding:0;height:40px}#lang-container .title{display:inline-block;padding:0 5px;line-height:20px;font-size:14px;color:var(--blueDark);vertical-align:top}.lang-selector{display:inline-block;height:20px;border:1px solid #ccc;vertical-align:top;padding:0;margin:0;border:none;padding:0 15px 0 5px;cursor:pointer;background-color:transparent}#lang-btn,#lang-btn-burger{background-image:url(../img/select-arrow@2x.png);background-size:15px 80px;background-position:100% 0;background-repeat:no-repeat}.lang-selector .icon,.lang-selector .label{display:inline-block;vertical-align:top;height:20px;line-height:20px}.lang-selector .label{font-size:14px;color:#fff}.lang-selector .icon{width:30px;background-size:30px 20px;background-repeat:no-repeat;background-position:0 0}.lang-selector .icon.fr{background-image:url(../img/fr-fr.png)}.lang-selector .icon.en{background-image:url(../img/en-gb.png)}.lang-list.visible{width:100%;height:20px;display:block;position:absolute;top:20px;left:0;padding:0;margin:0}.lang-list.visible .lang-selector{width:100%;padding:0;text-align:left}.lang-list.visible .lang-selector .icon{margin-left:5px}.lang-selector:hover .label{color:var(--blueChart)}#lang-btn-burger.closed:hover,#lang-btn.closed:hover{background-position:100% -20px}#lang-btn-burger.opened,#lang-btn.opened{background-position:100% -40px}#lang-btn-burger.opened:hover,#lang-btn.opened:hover{background-position:100% -60px}h1.home-title{text-align:left}.home-title-container{align-items:flex-start;justify-content:center}.linto-home-container{text-align:center}.linto-home{display:inline-block;width:350px;height:auto;margin:40px 0}#linto-animated{max-height:500px}#linto-animated svg.linto-animation-home{max-height:500px!important;max-width:500px!important}#batteries-included>.flex{align-items:center}.characteristics-item-container{margin:0 40px;max-width:380px}.characteristics-item .icon-container{width:80px;height:80px;margin-right:10px}.characteristics-item .icon-container .icon{display:inline-block;width:80px;height:80px;background-image:url(../img/characteristics-icons@2x.png);background-size:80px 480px;background-repeat:no-repeat}.characteristics-item .icon-container .icon.voice{background-position:0 0}.characteristics-item .icon-container .icon.vocabulary{background-position:0 -80px}.characteristics-item .icon-container .icon.integration{background-position:0 -160px}.characteristics-item .icon-container .icon.productivity{background-position:0 -240px}.characteristics-item .icon-container .icon.skills{background-position:0 -320px}.characteristics-item .icon-container .icon.opensource{background-position:0 -400px}.characteristics-item{margin-bottom:40px}.characteristics-item .content-container{flex:1}.hdiw-controls .controls{margin-top:60px}.hdiw-controls .controls button{display:inline-block;width:30px;height:30px;line-height:25px;font-size:16px;margin:0 5px;border:1px solid var(--blueDark);background-color:#fff;cursor:pointer;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.hdiw-controls .controls button:hover{color:var(--greenChart)}.hdiw-controls .controls button.active,.hdiw-controls .controls button.active:hover{background-color:var(--greenChart);color:var(--blueDark)}#hdiw-animation{text-align:center;position:relative}#linto-animation{text-align:center}#hdiw-animation svg,#linto-animation svg{width:90%!important}.hdiw-controls-arrow{width:160px;height:30px;text-align:center;position:absolute;top:0;left:50%;margin-left:-80px;background-color:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-moz-box-shadow:0 0 4px 2px rgba(0,0,0,.1);-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.1);box-shadow:0 0 4px 2px rgba(0,0,0,.1);z-index:99;border:1px solid var(--blueChart)}.hdiw-controls-arrow button{display:inline-block;width:30px;height:30px;margin:0 10px;padding:0;border:none;cursor:pointer;background-image:url(../img/hdiw-arrows@2x.png);background-size:60px 90px;background-repeat:no-repeat;background-color:transparent}.hdiw-controls-arrow button.hdiw-replay{background-image:url(../img/replay@2x.png);background-size:30px 60px;background-repeat:no-repeat;background-color:transparent;background-position:0 0}.hdiw-controls-arrow button.hdiw-replay:hover{background-position:0 -30px}.hdiw-controls-arrow button.prev.disabled{background-position:0 0}.hdiw-controls-arrow button.prev.enabled{background-position:0 -30px}.hdiw-controls-arrow button.prev.enabled:hover{background-position:0 -60px}.hdiw-controls-arrow button.next.disabled{background-position:-30px 0}.hdiw-controls-arrow button.next.enabled{background-position:-30px -30px}.hdiw-controls-arrow button.next.enabled:hover{background-position:-30px -60px}.solution-content{text-align:center;overflow:hidden;padding:0 40px}.solution-content:first-child{border-right:1px solid #f2f2f2}.solution-content h3{text-align:center;padding-bottom:40px}.solution-content p{text-align:center;padding-bottom:40px;line-height:30px;font-weight:600}#use-cases-slider{background-color:var(--greenChart);width:100%;height:auto;margin-top:40px}.use-case-item{width:100%;height:auto;text-align:center}.use-case-item h4{display:block;width:90%;text-align:center;font-size:20px;font-weight:600;color:#fff;padding:20px 0 0 0;margin:10px auto}.use-case-item .slider-img{display:inline-block;width:85%;height:auto}.slick-dots li button{display:inline-block;width:10px;height:10px;padding:0;margin:0 5px;background-color:var(--blueDark);border-radius:5px;content:""}.slick-dots li button:after,.slick-dots li button:before{display:none}.slick-dots li button:focus,.slick-dots li button:hover,.slick-dots li button[aria-selected=true]{background-color:var(--greenChart)}.slick-next,.slick-prev{content:'';display:inline-block;width:30px;height:30px;position:absolute;top:50%;margin-top:-15px;z-index:99}.slick-prev,.slick-prev:focus{background-image:url(../img/slider-arrows@2x.png);background-size:60px 60px;background-repeat:no-repeat;left:10px;background-position:0 0}.slick-prev:hover{background-image:url(../img/slider-arrows@2x.png);background-size:60px 60px;background-repeat:no-repeat;background-position:0 -30px}.slick-next,.slick-next:focus{background-image:url(../img/slider-arrows@2x.png);background-size:60px 60px;background-repeat:no-repeat;background-position:-30px -30px;left:100%;margin-left:-40px;background-position:-30px 0}.slick-next:hover{background-image:url(../img/slider-arrows@2x.png);background-size:60px 60px;background-repeat:no-repeat;background-position:-30px -30px}.slick-next:before,.slick-prev:before{display:none}h3.raspberry-title{padding-top:40px}img.raspberry-schema{display:inline-block;width:75%;height:auto;margin-bottom:20px}img.schema-server{display:inline-block;height:250px;width:auto}.partners-container{justify-content:space-evenly}.partner-logo{display:inline-block;height:80px;width:auto;margin:0 20px;position:relative}#wakemeup .wrapper{align-items:center}#wakemeup .wrapper p{text-align:center;padding:0}#wakemeup .wrapper a{display:inline-block;width:auto}.wakemeup-img{display:block;width:280px;margin:10px auto;height:auto}#enterprises-solutions-top{padding:40px 0}#section-content-wrapper{position:relative;z-index:3;-moz-box-shadow:0 0 4px 2px rgba(0,0,0,.1);-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.1);box-shadow:0 0 4px 2px rgba(0,0,0,.1)}#section-content-wrapper section{border-top:1px solid #ccc;z-index:9;max-width:100%}#section-content-wrapper section:first-child{border:none}.section-content-container{align-items:flex-end;max-width:100%}#main.enterprises #page-content a{display:inline-block;position:relative;font-weight:400;text-decoration:none;color:var(--blueChart)}a.content-link::after{display:none}a.content-link:hover::after{content:'';display:inline-block;width:100%;height:2px;background-color:var(--blueChart);position:absolute;top:20px;left:0;animation:animUnderline .5s ease;-moz-animation:animUnderline .5s ease;-webkit-animation:animUnderline .5s ease;-o-animation:animUnderline .5s ease;-ms-animation:animUnderline .5s ease}#main.enterprises #page-content p{margin:10px 0}h4.content-sub-title{display:inline-block;width:100%;font-size:20px;font-weight:600;padding:20px 0}.sub-part{padding:20px;background-color:#f5f9ff;margin:20px 0;border:1px solid #efefef}.sub-part h4.content-sub-title{padding-top:0}.content-section .wrapper{max-width:1040px}.content-title{padding:40px 0 20px 0}img.gafam-free{display:inline-block;height:200px;width:auto}.enterprise-top-content{justify-content:center}.enterprise-top-content h3.content-title{padding:20px 0}.enterpise-top-img{align-items:center;justify-content:center}.enterpise-top-img img.linto-ent{display:inline-block;width:300px;height:auto}.enterpise-top-img img.by-linagora{display:inline-block;width:150px;height:auto}#compare-table{border-collapse:separate;border-spacing:20px 0;margin:40px 0 10px 0;max-width:100%;overflow:auto}.compare-infos{font-size:14px;font-style:italic;margin-bottom:40px}.compare-infos strong{font-weight:600}#compare-table thead tr th{height:60px;font-size:20px;font-weight:600;background-color:#454545;color:#fff;text-align:center;vertical-align:middle;width:160px;max-width:160px;-webkit-border-top-left-radius:5px;-webkit-border-top-right-radius:5px;-moz-border-radius-topleft:5px;-moz-border-radius-topright:5px;border-top-left-radius:5px;border-top-right-radius:5px;overflow:hidden}#compare-table thead tr th.linto{background-color:var(--blueChart)}#compare-table thead tr{margin:0 5px}#compare-table thead tr th.blank{background-color:transparent;border:none}#compare-table tbody tr td{padding:5px;border:1px solid #ccc;border-top:none;font-size:14px;text-align:center;vertical-align:middle;height:40px}#compare-table tbody tr:first-child td:first-child{border-top:1px solid #ccc}#compare-table tbody tr td:first-child{font-weight:600;text-align:right}#compare-table tbody tr:nth-child(2n) td{background-color:#fefefe}#compare-table tbody tr:nth-child(2n+1) td{background-color:#fafafa}#compare-table tbody tr td .icon{display:inline-block;width:20px;height:20px;margin-bottom:-5px;background-image:url(../img/status-icons@2x.png);background-repeat:no-repeat;background-size:20px 60px}#compare-table tbody tr td .icon.yes{background-position:0 0}#compare-table tbody tr td .icon.linto{background-position:0 -40px}#compare-table tbody tr td .icon.no{background-position:0 -20px}#compare-table tbody tr td .label{display:inline-block;width:100%;padding-top:5px;font-size:14px;line-height:16px;color:var(--blueDark)}#compare-table tbody tr td .label.linto{color:var(--blueChart)}ul.publication-list{display:flex;flex-direction:column;padding:0;margin:0}ul.publication-list li{padding:5px 10px 5px 30px;position:relative}ul.publication-list li:before{content:'-';color:var(--blueDark);position:absolute;top:5px;left:15px;font-weight:600}ul.publication-list li.conf{padding-bottom:20px}ul.publication-list li.conf i{font-style:italic}img.schema-services{width:300px;height:auto}table.content-table{width:100%;border-collapse:collapse;padding:0;margin:20px 0}table.content-table thead tr th.blank{background-color:transparent;border:none}table.content-table thead tr th.title{font-size:18px;font-weight:600;vertical-align:middle;text-align:center;color:#fff;padding:10px}table.content-table thead tr th.title.parole-lue{background-color:var(--blueDark)}table.content-table thead tr th.title.parole-spontanee{background-color:var(--blueChart)}table.content-table tbody tr td{padding:10px;text-align:center;border:1px solid #dedede;background-color:#fff;vertical-align:middle}table.content-table tbody tr td.brand-logo{width:80px;height:auto;text-align:center}table.content-table tbody tr td.brand-logo img{display:inline-block;height:30px;width:auto}table.content-table tbody tr.linagora td{background-color:var(--greenChart);font-weight:600;color:#fff}table.content-table tbody tr.linagora td.val{font-size:18px}.table-label{font-weight:600;font-size:18px}summary{font-weight:600;color:var(--blueChart)}@keyframes animUnderline{from{width:0}to{width:100%}}@-webkit-keyframes animUnderline{from{width:0}to{width:100%}}#content-nav.hidden{display:none}#content-nav.visible{display:block;width:220px;height:100%;position:fixed;background:#fff;border-right:1px solid #ccc;top:60px;left:0;z-index:10;padding:20px}#content-nav.visible ul{display:flex;flex-direction:column}#content-nav.visible ul li.parent{flex:1;padding:0;font-size:13px;margin:10px 0;padding-left:5px}a.content-nav-link{position:relative;font-weight:600!important;color:#454545!important;line-height:18px}a.content-nav-link.active,a.content-nav-link:hover{color:var(--blueChart)!important}a.content-nav-link.active:before{content:">";font-family:Roboto,'Open Sans',Arial,Helvetica,sans-serif;position:absolute;top:0;left:-15px}#content-nav.visible ul li.parent ul li.child{padding-left:20px;margin:3px 0}#content-nav.visible ul li.parent>.content-nav-link{width:100%;padding:5px 0 5px 5px;background:#f9f9f9}img.schema-deploy-linto{display:inline-block;width:70%;height:auto}#main #page-content #contact{position:relative;z-index:11;background-color:#ccc;background:#364954;background:-moz-linear-gradient(45deg,#364954 0,#45baeb 100%);background:-webkit-linear-gradient(45deg,#364954 0,#45baeb 100%);background:linear-gradient(45deg,#364954 0,#45baeb 100%);-moz-box-shadow:0 0 4px 2px rgba(0,0,0,.3);-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.3);box-shadow:0 0 4px 2px rgba(0,0,0,.3)}.contact-wrapper{max-width:1040px;width:100%;margin:0 auto}.field-container{display:flex;flex-direction:column;position:relative}.field-container .label{display:inline-block;width:100%;padding:5px 0;font-size:16px;font-weight:600;color:#fff}.field-container .required{color:var(--blueChart);font-weight:700}.field-container .contact-input{display:flex;flex:1;max-width:300px;padding:0 5px;height:30px;line-height:30px;font-size:14px;font-family:'Open Sans',Roboto,Arial,Helvetica,sans-serif;margin:0;border:2px solid #fff;background-color:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.2)}.field-container .contact-textarea{display:flex;flex:1;padding:5px;line-height:20px;font-size:14px;font-family:'Open Sans',Roboto,Arial,Helvetica,sans-serif;margin:0;border:2px solid #fff;background-color:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.2);min-height:80px}.field-container .contact-input.error,.field-container .contact-textarea.error{border-color:var(--error)}.field-container .error-field{display:inline-block;width:100%;padding:5px 0;height:20px;line-height:20px;font-size:14px;color:var(--error);font-style:italic}.field-container.submit{height:60px;align-items:center}.field-container.submit .send-notif{display:block;position:absolute;top:0;left:0;width:100%;height:100%;background:#fff}.field-container.submit .send-notif.hidden{display:none}.field-container.submit .send-notif{display:flex;flex-direction:column;justify-content:center;position:absolute;top:0;left:0;width:100%;height:100%;background:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.2);background-color:#fff}.field-container.submit .send-notif .notif-msg{display:inline-block;width:100%;font-weight:700;text-align:center}.field-container.submit .send-notif.success .notif-msg{color:var(--greenChart)}.field-container.submit .send-notif.error .notif-msg{color:var(--error)}.field-container.submit .submit-btn{display:inline-block;padding:5px 15px;border:1px solid var(--blueChart);color:var(--blueChart);font-size:18px;font-weight:600;text-transform:uppercase;cursor:pointer;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.2);background-color:#fff;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.field-container.submit .submit-btn:hover{background-color:var(--blueChart);color:#fff}#main #page-content footer{position:relative;z-index:10}#main #page-content footer a.footer-link{display:inline-block;color:#fff;font-weight:600;text-decoration:none;font-size:14px}#main #page-content footer a.footer-link:hover{text-decoration:underline}#main #page-content footer .footer-label{display:inline-block;width:100%;font-size:16px;font-weight:600;padding-bottom:10px;color:#fff}#main #page-content footer .copyright{height:30px;line-height:30px;text-align:center;background-color:#333;color:#fff;font-size:14px}.blocker{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:auto;z-index:1;padding:20px;box-sizing:border-box;background-color:#000;background-color:rgba(0,0,0,.75);text-align:center}.blocker:before{content:"";display:inline-block;height:100%;vertical-align:middle;margin-right:-.05em}.blocker.behind{background-color:transparent}.modal{display:none;vertical-align:middle;position:relative;z-index:2;max-width:800px;max-height:600px;box-sizing:border-box;width:100%;height:100%;-webkit-border-radius:8px;-moz-border-radius:8px;-o-border-radius:8px;-ms-border-radius:8px;border-radius:8px;-webkit-box-shadow:0 0 10px #000;-moz-box-shadow:0 0 10px #000;-o-box-shadow:0 0 10px #000;-ms-box-shadow:0 0 10px #000;box-shadow:0 0 10px #000}.modal a.close-modal{position:absolute;top:-12.5px;right:-12.5px;display:block;width:30px;height:30px;text-indent:-9999px;background-size:contain;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAA3hJREFUaAXlm8+K00Acx7MiCIJH/yw+gA9g25O49SL4AO3Bp1jw5NvktC+wF88qevK4BU97EmzxUBCEolK/n5gp3W6TTJPfpNPNF37MNsl85/vN/DaTmU6PknC4K+pniqeKJ3k8UnkvDxXJzzy+q/yaxxeVHxW/FNHjgRSeKt4rFoplzaAuHHDBGR2eS9G54reirsmienDCTRt7xwsp+KAoEmt9nLaGitZxrBbPFNaGfPloGw2t4JVamSt8xYW6Dg1oCYo3Yv+rCGViV160oMkcd8SYKnYV1Nb1aEOjCe6L5ZOiLfF120EjWhuBu3YIZt1NQmujnk5F4MgOpURzLfAwOBSTmzp3fpDxuI/pabxpqOoz2r2HLAb0GMbZKlNV5/Hg9XJypguryA7lPF5KMdTZQzHjqxNPhWhzIuAruOl1eNqKEx1tSh5rfbxdw7mOxCq4qS68ZTjKS1YVvilu559vWvFHhh4rZrdyZ69Vmpgdj8fJbDZLJpNJ0uv1cnr/gjrUhQMuI+ANjyuwftQ0bbL6Erp0mM/ny8Fg4M3LtdRxgMtKl3jwmIHVxYXChFy94/Rmpa/pTbNUhstKV+4Rr8lLQ9KlUvJKLyG8yvQ2s9SBy1Jb7jV5a0yapfF6apaZLjLLcWtd4sNrmJUMHyM+1xibTjH82Zh01TNlhsrOhdKTe00uAzZQmN6+KW+sDa/JD2PSVQ873m29yf+1Q9VDzfEYlHi1G5LKBBWZbtEsHbFwb1oYDwr1ZiF/2bnCSg1OBE/pfr9/bWx26UxJL3ONPISOLKUvQza0LZUxSKyjpdTGa/vDEr25rddbMM0Q3O6Lx3rqFvU+x6UrRKQY7tyrZecmD9FODy8uLizTmilwNj0kraNcAJhOp5aGVwsAGD5VmJBrWWbJSgWT9zrzWepQF47RaGSiKfeGx6Szi3gzmX/HHbihwBser4B9UJYpFBNX4R6vTn3VQnez0SymnrHQMsRYGTr1dSk34ljRqS/EMd2pLQ8YBp3a1PLfcqCpo8gtHkZFHKkTX6fs3MY0blKnth66rKCnU0VRGu37ONrQaA4eZDFtWAu2fXj9zjFkxTBOo8F7t926gTp/83Kyzzcy2kZD6xiqxTYnHLRFm3vHiRSwNSjkz3hoIzo8lCKWUlg/YtGs7tObunDAZfpDLbfEI15zsEIY3U/x/gHHc/G1zltnAgAAAABJRU5ErkJggg==)}.modal-spinner{display:none;position:fixed;top:50%;left:50%;transform:translateY(-50%) translateX(-50%);padding:12px 16px;border-radius:5px;background-color:#111;height:20px}.modal-spinner>div{border-radius:100px;background-color:#fff;height:20px;width:2px;margin:0 1px;display:inline-block;-webkit-animation:sk-stretchdelay 1.2s infinite ease-in-out;animation:sk-stretchdelay 1.2s infinite ease-in-out}.modal-spinner .rect2{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.modal-spinner .rect3{-webkit-animation-delay:-1s;animation-delay:-1s}.modal-spinner .rect4{-webkit-animation-delay:-.9s;animation-delay:-.9s}@-webkit-keyframes sk-stretchdelay{0%,100%,40%{-webkit-transform:scaleY(.5)}20%{-webkit-transform:scaleY(1)}}@keyframes sk-stretchdelay{0%,100%,40%{transform:scaleY(.5);-webkit-transform:scaleY(.5)}20%{transform:scaleY(1);-webkit-transform:scaleY(1)}}:root{--blueChart:#45baeb;--blueDark:#364954;--greenChart:#65eeb1;--error:#ffb13b}@media screen and (max-width:1440px){.wrapper{max-width:1200px}}@media screen and (max-width:1280px){.content-section .wrapper,.wrapper{max-width:980px}.content-wrapper{max-width:980px}.nav-link{font-size:14px;margin:0 10px}.linto-ai-logo{height:30px;margin:5px}}@media screen and (max-width:1024px){#burger-nav{display:flex}#desktop-nav{display:none}#burger-menu-nav.hidden{display:none}.burger-menu-container{justify-content:flex-end}button#burger-menu{display:inline-block;width:40px;height:40px;background-image:url(../img/burger-menu@2x.png);background-size:80px 80px;background-repeat:no-repeat;border:none;box-shadow:none;background-color:transparent;cursor:pointer}button#burger-menu.closed{background-position:0 0}button#burger-menu.closed:hover{background-position:-40px 0}button#burger-menu.opened{background-position:0 -40px}button#burger-menu.opened:hover{background-position:-40px -40px}#burger-menu-nav{position:absolute;top:100px;left:0;display:flex;flex-direction:column;width:100%}#burger-menu-nav nav{align-items:center}#burger-menu-nav nav a{font-size:30px;padding:20px 0;line-height:30px;flex:1}.nav-link.active::after,.nav-link.active:hover::after{top:60px}section{padding:20px 0}#enterprises-solutions-top{padding:20px 0}.content-section .wrapper,.wrapper{max-width:90%}.content-wrapper{max-width:920px}#home{padding-top:0}#home .wrapper{flex-direction:column-reverse}#linto-animated{max-height:450px}.home-title-container{align-items:center}h1.home-title{text-align:center}.hdiw-wrapper{flex-direction:column!important}.hdiw-animation{margin-top:20px;text-align:center}.solution-content-container{flex-direction:column!important}.solution-content:first-child{border:none;margin-bottom:40px}}@media screen and (max-width:960px){h1{font-size:32px}h2,h2.section-title{font-size:26px}h3{font-size:20px}.cta-link{font-size:16px}#linto-animated svg.linto-animation-home{max-width:350px!important;max-height:350px!important}.charactertics-wrapper{flex-direction:column!important}.hdiw-controls .controls{margin-top:0}.solution-content h3{padding-bottom:20px}img.raspberry-schema{width:80%;height:auto}.partners-container{flex-direction:column!important;align-items:center}.partner-logo{height:60px;width:auto;margin:10px auto}.enterprise-top-container{flex-direction:column-reverse!important}.enterpise-top-img img.linto-ent{width:240px}.flex-content.row{flex-direction:column!important}img.gafam-free{height:120px;width:auto}img.schema-deploy-linto,img.schema-server{width:90%;height:auto}img.schema-services{width:200px;height:auto}.content-section.enterprise h2.section-title{padding:0}#compare-table{border-collapse:collapse;border-spacing:0;margin:20px 0 10px 0}#compare-table thead tr th{font-size:14px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:1px solid #ccc}#compare-table tbody tr td{padding:5px}#compare-table tbody tr td.option{font-size:12px}#compare-table tbody tr td .label{font-size:12px}table.content-table tbody tr td,table.content-table thead tr th.title.parole-lue,table.content-table thead tr th.title.parole-spontanee{font-size:14px}.sub-part h4.content-sub-title,.table-label{font-size:16px}}@media screen and (max-width:840px){.contact-wrapper{flex-direction:column!important;max-width:300px}.field-container .contact-input{max-width:100%}table.content-table tbody tr td{padding:5px}#compare-table tbody tr td .label{display:none}#compare-table tbody tr td .label.label-only{display:inline-block}table.content-table tbody tr td.brand-logo{border:none;padding:0;width:0}table.content-table tbody tr td.brand-logo img{display:none}#hdiw-animation svg{margin-top:40px}}
\ No newline at end of file
diff --git a/assets/img/anchor-arrow@2x.png b/assets/img/anchor-arrow@2x.png
deleted file mode 100644
index aeb18d2..0000000
Binary files a/assets/img/anchor-arrow@2x.png and /dev/null differ
diff --git a/assets/img/api-intellience.svg b/assets/img/api-intellience.svg
new file mode 100644
index 0000000..36a858a
--- /dev/null
+++ b/assets/img/api-intellience.svg
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/apis-icon.svg b/assets/img/apis-icon.svg
new file mode 100644
index 0000000..536fbe8
--- /dev/null
+++ b/assets/img/apis-icon.svg
@@ -0,0 +1,85 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/arrow-menu.svg b/assets/img/arrow-menu.svg
new file mode 100644
index 0000000..99dea3d
--- /dev/null
+++ b/assets/img/arrow-menu.svg
@@ -0,0 +1,57 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/bg-rounded.png b/assets/img/bg-rounded.png
new file mode 100644
index 0000000..df5b443
Binary files /dev/null and b/assets/img/bg-rounded.png differ
diff --git a/assets/img/brands/logo-bing.png b/assets/img/brands/logo-bing.png
deleted file mode 100644
index d75a56a..0000000
Binary files a/assets/img/brands/logo-bing.png and /dev/null differ
diff --git a/assets/img/brands/logo-google.png b/assets/img/brands/logo-google.png
deleted file mode 100644
index 2427e4c..0000000
Binary files a/assets/img/brands/logo-google.png and /dev/null differ
diff --git a/assets/img/brands/logo-ibm.png b/assets/img/brands/logo-ibm.png
deleted file mode 100644
index 29f016b..0000000
Binary files a/assets/img/brands/logo-ibm.png and /dev/null differ
diff --git a/assets/img/brands/logo-lia.png b/assets/img/brands/logo-lia.png
deleted file mode 100644
index 63bc007..0000000
Binary files a/assets/img/brands/logo-lia.png and /dev/null differ
diff --git a/assets/img/brands/logo-linagora.png b/assets/img/brands/logo-linagora.png
deleted file mode 100644
index 31a82c2..0000000
Binary files a/assets/img/brands/logo-linagora.png and /dev/null differ
diff --git a/assets/img/brands/logo-nuance.png b/assets/img/brands/logo-nuance.png
deleted file mode 100644
index dfe3a57..0000000
Binary files a/assets/img/brands/logo-nuance.png and /dev/null differ
diff --git a/assets/img/brands/logo-speechmatics.png b/assets/img/brands/logo-speechmatics.png
deleted file mode 100644
index 96bcb8d..0000000
Binary files a/assets/img/brands/logo-speechmatics.png and /dev/null differ
diff --git a/assets/img/brands/logo-wit.png b/assets/img/brands/logo-wit.png
deleted file mode 100644
index ca37b24..0000000
Binary files a/assets/img/brands/logo-wit.png and /dev/null differ
diff --git a/assets/img/burger-menu.svg b/assets/img/burger-menu.svg
new file mode 100644
index 0000000..9760286
--- /dev/null
+++ b/assets/img/burger-menu.svg
@@ -0,0 +1,59 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/burger-menu@2x.png b/assets/img/burger-menu@2x.png
deleted file mode 100644
index a86c187..0000000
Binary files a/assets/img/burger-menu@2x.png and /dev/null differ
diff --git a/assets/img/by-linagora.svg b/assets/img/by-linagora.svg
deleted file mode 100644
index e505fd4..0000000
--- a/assets/img/by-linagora.svg
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/img/characteristics-icons@2x.png b/assets/img/characteristics-icons@2x.png
deleted file mode 100755
index c5362d0..0000000
Binary files a/assets/img/characteristics-icons@2x.png and /dev/null differ
diff --git a/assets/img/check.svg b/assets/img/check.svg
new file mode 100644
index 0000000..5d980a1
--- /dev/null
+++ b/assets/img/check.svg
@@ -0,0 +1,56 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
diff --git a/assets/img/close.svg b/assets/img/close.svg
new file mode 100644
index 0000000..aadbc16
--- /dev/null
+++ b/assets/img/close.svg
@@ -0,0 +1,49 @@
+
+
+
+image/svg+xml
+
+
\ No newline at end of file
diff --git a/assets/img/coffee-machine.svg b/assets/img/coffee-machine.svg
new file mode 100644
index 0000000..53aef19
--- /dev/null
+++ b/assets/img/coffee-machine.svg
@@ -0,0 +1,232 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Americano
+
+
+ Latté
+
+
+ Mocha
+
+
+ Macchiato
+
+
+ Espresso
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Espresso (10%)
+ Hot Water (90%)
+ Americano
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/conversation-manager-logo-small.svg b/assets/img/conversation-manager-logo-small.svg
new file mode 100644
index 0000000..2e4f600
--- /dev/null
+++ b/assets/img/conversation-manager-logo-small.svg
@@ -0,0 +1,48 @@
+
+image/svg+xml
+
+
diff --git a/assets/img/conversation-manager-logo.svg b/assets/img/conversation-manager-logo.svg
new file mode 100644
index 0000000..371094c
--- /dev/null
+++ b/assets/img/conversation-manager-logo.svg
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/cross.svg b/assets/img/cross.svg
new file mode 100644
index 0000000..34101eb
--- /dev/null
+++ b/assets/img/cross.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/img/dots-arrow-down.svg b/assets/img/dots-arrow-down.svg
deleted file mode 100644
index 264c337..0000000
--- a/assets/img/dots-arrow-down.svg
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-Fichier 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/img/download.svg b/assets/img/download.svg
new file mode 100644
index 0000000..08d034d
--- /dev/null
+++ b/assets/img/download.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/img/en-gb.png b/assets/img/en-gb.png
deleted file mode 100644
index e839c05..0000000
Binary files a/assets/img/en-gb.png and /dev/null differ
diff --git a/assets/img/fr-fr.png b/assets/img/fr-fr.png
deleted file mode 100644
index b4bb8f7..0000000
Binary files a/assets/img/fr-fr.png and /dev/null differ
diff --git a/assets/img/gafam-free.png b/assets/img/gafam-free.png
deleted file mode 100644
index b44377e..0000000
Binary files a/assets/img/gafam-free.png and /dev/null differ
diff --git a/assets/img/github-logo-dark.svg b/assets/img/github-logo-dark.svg
new file mode 100644
index 0000000..9cca0c8
--- /dev/null
+++ b/assets/img/github-logo-dark.svg
@@ -0,0 +1,59 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/hdiw-arrows@2x.png b/assets/img/hdiw-arrows@2x.png
deleted file mode 100644
index a7e8233..0000000
Binary files a/assets/img/hdiw-arrows@2x.png and /dev/null differ
diff --git a/assets/img/illustration-homepage-01.svg b/assets/img/illustration-homepage-01.svg
new file mode 100644
index 0000000..9bdd4ef
--- /dev/null
+++ b/assets/img/illustration-homepage-01.svg
@@ -0,0 +1,359 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/illustrations/illustration_01.png b/assets/img/illustrations/illustration_01.png
deleted file mode 100755
index d3dce16..0000000
Binary files a/assets/img/illustrations/illustration_01.png and /dev/null differ
diff --git a/assets/img/illustrations/illustration_02.png b/assets/img/illustrations/illustration_02.png
deleted file mode 100755
index 15f91ba..0000000
Binary files a/assets/img/illustrations/illustration_02.png and /dev/null differ
diff --git a/assets/img/illustrations/illustration_03.png b/assets/img/illustrations/illustration_03.png
deleted file mode 100755
index a6f609a..0000000
Binary files a/assets/img/illustrations/illustration_03.png and /dev/null differ
diff --git a/assets/img/illustrations/illustration_04.png b/assets/img/illustrations/illustration_04.png
deleted file mode 100755
index 749b804..0000000
Binary files a/assets/img/illustrations/illustration_04.png and /dev/null differ
diff --git a/assets/img/illustrations/illustration_05.png b/assets/img/illustrations/illustration_05.png
deleted file mode 100755
index 209671a..0000000
Binary files a/assets/img/illustrations/illustration_05.png and /dev/null differ
diff --git a/assets/img/linagora-labs.png b/assets/img/linagora-labs.png
new file mode 100644
index 0000000..205bf2c
Binary files /dev/null and b/assets/img/linagora-labs.png differ
diff --git a/assets/img/linagora.png b/assets/img/linagora.png
new file mode 100644
index 0000000..a819fd5
Binary files /dev/null and b/assets/img/linagora.png differ
diff --git a/assets/img/linto-agent-icon.svg b/assets/img/linto-agent-icon.svg
new file mode 100644
index 0000000..8b13deb
--- /dev/null
+++ b/assets/img/linto-agent-icon.svg
@@ -0,0 +1,86 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/linto-animation-pipeline.gif b/assets/img/linto-animation-pipeline.gif
new file mode 100644
index 0000000..58b0934
Binary files /dev/null and b/assets/img/linto-animation-pipeline.gif differ
diff --git a/assets/img/linto-meeting-icon.svg b/assets/img/linto-meeting-icon.svg
new file mode 100644
index 0000000..a875d5d
--- /dev/null
+++ b/assets/img/linto-meeting-icon.svg
@@ -0,0 +1,58 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/linto-meeting-visio.svg b/assets/img/linto-meeting-visio.svg
new file mode 100644
index 0000000..00bf714
--- /dev/null
+++ b/assets/img/linto-meeting-visio.svg
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/linto-shema.svg b/assets/img/linto-shema.svg
deleted file mode 100644
index 8e92a06..0000000
--- a/assets/img/linto-shema.svg
+++ /dev/null
@@ -1,1125 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/img/linto-studio-logo.svg b/assets/img/linto-studio-logo.svg
new file mode 100644
index 0000000..667c467
--- /dev/null
+++ b/assets/img/linto-studio-logo.svg
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/linto-ui.png b/assets/img/linto-ui.png
new file mode 100644
index 0000000..f9079d0
Binary files /dev/null and b/assets/img/linto-ui.png differ
diff --git a/assets/img/linto.svg b/assets/img/linto.svg
deleted file mode 100644
index 1ffbbe4..0000000
--- a/assets/img/linto.svg
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/img/loading.svg b/assets/img/loading.svg
new file mode 100644
index 0000000..b0e53a3
--- /dev/null
+++ b/assets/img/loading.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/logo-irit.png b/assets/img/logo-irit.png
deleted file mode 100755
index e72ae16..0000000
Binary files a/assets/img/logo-irit.png and /dev/null differ
diff --git a/assets/img/logo-laas-cnrs.png b/assets/img/logo-laas-cnrs.png
deleted file mode 100755
index f6ebcb6..0000000
Binary files a/assets/img/logo-laas-cnrs.png and /dev/null differ
diff --git a/assets/img/logo-linagora.png b/assets/img/logo-linagora.png
deleted file mode 100755
index a778abf..0000000
Binary files a/assets/img/logo-linagora.png and /dev/null differ
diff --git a/assets/img/logo-linto-ai.png b/assets/img/logo-linto-ai.png
deleted file mode 100755
index a6266e1..0000000
Binary files a/assets/img/logo-linto-ai.png and /dev/null differ
diff --git a/assets/img/logo-x-polytechnique.png b/assets/img/logo-x-polytechnique.png
deleted file mode 100755
index e6eeabb..0000000
Binary files a/assets/img/logo-x-polytechnique.png and /dev/null differ
diff --git a/assets/img/logo-zelros.png b/assets/img/logo-zelros.png
deleted file mode 100755
index 7528f10..0000000
Binary files a/assets/img/logo-zelros.png and /dev/null differ
diff --git a/assets/img/mail.svg b/assets/img/mail.svg
new file mode 100644
index 0000000..813b932
--- /dev/null
+++ b/assets/img/mail.svg
@@ -0,0 +1,66 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/mic.svg b/assets/img/mic.svg
new file mode 100644
index 0000000..3ac90f4
--- /dev/null
+++ b/assets/img/mic.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/img/nodered.png b/assets/img/nodered.png
new file mode 100644
index 0000000..4770acc
Binary files /dev/null and b/assets/img/nodered.png differ
diff --git a/assets/img/parisvoicetech.jpg b/assets/img/parisvoicetech.jpg
deleted file mode 100644
index b83f468..0000000
Binary files a/assets/img/parisvoicetech.jpg and /dev/null differ
diff --git a/assets/img/phone.svg b/assets/img/phone.svg
new file mode 100644
index 0000000..972f413
--- /dev/null
+++ b/assets/img/phone.svg
@@ -0,0 +1,57 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/pin.svg b/assets/img/pin.svg
new file mode 100644
index 0000000..6434163
--- /dev/null
+++ b/assets/img/pin.svg
@@ -0,0 +1,66 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/img/play.svg b/assets/img/play.svg
new file mode 100644
index 0000000..7e39c5d
--- /dev/null
+++ b/assets/img/play.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/img/raspberry-schema.svg b/assets/img/raspberry-schema.svg
deleted file mode 100644
index c396d9a..0000000
--- a/assets/img/raspberry-schema.svg
+++ /dev/null
@@ -1,2199 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Raspberry Pi Model 3
-
-
-
-
-
-
-
-
-
-
- h
-
-
- t
-
-
- t
-
-
- p
-
-
- :
-
-
- /
-
-
- /
-
-
- w
-
-
- w
-
-
- w
-
-
- .
-
-
- r
-
-
- a
-
-
- s
-
-
- p
-
-
- b
-
-
- e
-
-
- r
-
-
- r
-
-
- y
-
-
- p
-
-
- i
-
-
- .
-
-
- o
-
-
- r
-
-
- g
-
-
-
-
-
-
-
-
-
-
-
-
-
- Power
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- HDMI
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Audio
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- USB 2x
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- USB 2x
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ETHERNET
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- DSI (DISPLAY)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSI (CAMERA)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GPIO
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Power
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Speaker
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/img/replay@2x.png b/assets/img/replay@2x.png
deleted file mode 100644
index 0e83460..0000000
Binary files a/assets/img/replay@2x.png and /dev/null differ
diff --git a/assets/img/schema-linto-deploy.png b/assets/img/schema-linto-deploy.png
deleted file mode 100644
index 7212e2e..0000000
Binary files a/assets/img/schema-linto-deploy.png and /dev/null differ
diff --git a/assets/img/schema-linto-server.png b/assets/img/schema-linto-server.png
deleted file mode 100644
index 1f4bf41..0000000
Binary files a/assets/img/schema-linto-server.png and /dev/null differ
diff --git a/assets/img/schema-services.png b/assets/img/schema-services.png
deleted file mode 100644
index da55cb6..0000000
Binary files a/assets/img/schema-services.png and /dev/null differ
diff --git a/assets/img/screenshot-conversation-manager.png b/assets/img/screenshot-conversation-manager.png
new file mode 100644
index 0000000..0e3882c
Binary files /dev/null and b/assets/img/screenshot-conversation-manager.png differ
diff --git a/assets/img/screenshot-linto-ui.png b/assets/img/screenshot-linto-ui.png
new file mode 100644
index 0000000..2a113db
Binary files /dev/null and b/assets/img/screenshot-linto-ui.png differ
diff --git a/assets/img/select-arrow@2x.png b/assets/img/select-arrow@2x.png
deleted file mode 100644
index 5ef5aae..0000000
Binary files a/assets/img/select-arrow@2x.png and /dev/null differ
diff --git a/assets/img/slider-arrows@2x.png b/assets/img/slider-arrows@2x.png
deleted file mode 100755
index 617b91f..0000000
Binary files a/assets/img/slider-arrows@2x.png and /dev/null differ
diff --git a/assets/img/status-icons@2x.png b/assets/img/status-icons@2x.png
deleted file mode 100644
index fbb44b9..0000000
Binary files a/assets/img/status-icons@2x.png and /dev/null differ
diff --git a/assets/img/upload.svg b/assets/img/upload.svg
new file mode 100644
index 0000000..1fb5537
--- /dev/null
+++ b/assets/img/upload.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/img/wakemeup-logo.png b/assets/img/wakemeup-logo.png
deleted file mode 100644
index 2f212c4..0000000
Binary files a/assets/img/wakemeup-logo.png and /dev/null differ
diff --git a/assets/js/ScrollMagic.min.js b/assets/js/ScrollMagic.min.js
deleted file mode 100644
index 0427d84..0000000
--- a/assets/js/ScrollMagic.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! ScrollMagic v2.0.7 | (c) 2019 Jan Paepke (@janpaepke) | license & info: http://scrollmagic.io */
-!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.ScrollMagic=t()}(this,function(){"use strict";var _=function(){};_.version="2.0.7",window.addEventListener("mousewheel",function(){});var P="data-scrollmagic-pin-spacer";_.Controller=function(e){var n,r,i="REVERSE",t="PAUSED",o=z.defaults,s=this,a=R.extend({},o,e),l=[],c=!1,f=0,u=t,d=!0,h=0,p=!0,g=function(){0t.scrollOffset()?1:-1}),t};return this.addScene=function(e){if(R.type.Array(e))e.forEach(function(e,t){s.addScene(e)});else if(e instanceof _.Scene)if(e.controller()!==s)e.addTo(s);else if(l.indexOf(e)<0)for(var t in l.push(e),l=x(l),e.on("shift.controller_sort",function(){l=x(l)}),a.globalSceneOptions)e[t]&&e[t].call(e,a.globalSceneOptions[t]);return s},this.removeScene=function(e){if(R.type.Array(e))e.forEach(function(e,t){s.removeScene(e)});else{var t=l.indexOf(e);-1=a.start?1:0,d.trigger("update",{startPos:a.start,endPos:a.end,scrollPos:n}),d.progress(t)}else m&&p===f&&C(!0);else l.updateScene(d,!1);return d},this.refresh=function(){return o(),y(),d},this.progress=function(e){if(arguments.length){var t=!1,n=p,r=l?l.info("scrollDirection"):"PAUSED",i=h.reverse||g<=e;if(0===h.duration?(t=g!=e,p=0===(g=e<1&&i?0:1)?c:f):e<0&&p!==c&&i?(p=c,t=!(g=0)):0<=e&&e<1&&i?(g=e,p=f,t=!0):1<=e&&p!==u?(g=1,p=u,t=!0):p!==f||i||C(),t){var o={progress:g,state:p,scrollDirection:r},s=p!=n,a=function(e){d.trigger(e,o)};s&&n!==f&&(a("enter"),a(n===c?"start":"end")),a("progress"),s&&p!==f&&(a(p===c?"start":"end"),a("leave"))}return d}return g};var m,w,t=function(){a={start:v+h.offset},l&&h.triggerElement&&(a.start-=l.info("size")*h.triggerHook),a.end=a.start+h.duration},o=function(e){if(n){var t="duration";x(t,n.call(d))&&!e&&(d.trigger("change",{what:t,newval:h[t]}),d.trigger("shift",{reason:t}))}},y=function(e){var t=0,n=h.triggerElement;if(l&&(n||0
- * @license MIT
- */
-e.exports=function(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}},function(e,t,n){"use strict";function r(e){this.defaults=e,this.interceptors={request:new i,response:new i}}var o=n(2),s=n(6),i=n(7),a=n(8),u=n(22);r.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{},e.url=arguments[0]):e=e||{},e=u(this.defaults,e),e.method=e.method?e.method.toLowerCase():"get";var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},r.prototype.getUri=function(e){return e=u(this.defaults,e),s(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},o.forEach(["delete","get","head","options"],function(e){r.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))}}),o.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(o.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=r},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=n(2);e.exports=function(e,t,n){if(!t)return e;var s;if(n)s=n(t);else if(o.isURLSearchParams(t))s=t.toString();else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)?t+="[]":e=[e],o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),s=i.join("&")}if(s){var a=e.indexOf("#");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}},function(e,t,n){"use strict";function r(){this.handlers=[]}var o=n(2);r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},function(e,t,n){"use strict";function r(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var o=n(2),s=n(9),i=n(10),a=n(11),u=n(20),c=n(21);e.exports=function(e){r(e),e.baseURL&&!u(e.url)&&(e.url=c(e.baseURL,e.url)),e.headers=e.headers||{},e.data=s(e.data,e.headers,e.transformRequest),e.headers=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),o.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=e.adapter||a.adapter;return t(e).then(function(t){return r(e),t.data=s(t.data,t.headers,e.transformResponse),t},function(t){return i(t)||(r(e),t&&t.response&&(t.response.data=s(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";function r(e,t){!s.isUndefined(e)&&s.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function o(){var e;return"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)?e=n(13):"undefined"!=typeof XMLHttpRequest&&(e=n(13)),e}var s=n(2),i=n(12),a={"Content-Type":"application/x-www-form-urlencoded"},u={adapter:o(),transformRequest:[function(e,t){return i(t,"Accept"),i(t,"Content-Type"),s.isFormData(e)||s.isArrayBuffer(e)||s.isBuffer(e)||s.isStream(e)||s.isFile(e)||s.isBlob(e)?e:s.isArrayBufferView(e)?e.buffer:s.isURLSearchParams(e)?(r(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):s.isObject(e)?(r(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},s.forEach(["delete","get","head"],function(e){u.headers[e]={}}),s.forEach(["post","put","patch"],function(e){u.headers[e]=s.merge(a)}),e.exports=u},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(2),o=n(14),s=n(6),i=n(17),a=n(18),u=n(15);e.exports=function(e){return new Promise(function(t,c){var f=e.data,p=e.headers;r.isFormData(f)&&delete p["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var l=e.auth.username||"",h=e.auth.password||"";p.Authorization="Basic "+btoa(l+":"+h)}if(d.open(e.method.toUpperCase(),s(e.url,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?i(d.getAllResponseHeaders()):null,r=e.responseType&&"text"!==e.responseType?d.response:d.responseText,s={data:r,status:d.status,statusText:d.statusText,headers:n,config:e,request:d};o(t,c,s),d=null}},d.onabort=function(){d&&(c(u("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function(){c(u("Network Error",e,null,d)),d=null},d.ontimeout=function(){c(u("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var m=n(19),y=(e.withCredentials||a(e.url))&&e.xsrfCookieName?m.read(e.xsrfCookieName):void 0;y&&(p[e.xsrfHeaderName]=y)}if("setRequestHeader"in d&&r.forEach(p,function(e,t){"undefined"==typeof f&&"content-type"===t.toLowerCase()?delete p[t]:d.setRequestHeader(t,e)}),e.withCredentials&&(d.withCredentials=!0),e.responseType)try{d.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){d&&(d.abort(),c(e),d=null)}),void 0===f&&(f=null),d.send(f)})}},function(e,t,n){"use strict";var r=n(15);e.exports=function(e,t,n){var o=n.config.validateStatus;!o||o(n.status)?e(n):t(r("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(e,t,n){"use strict";var r=n(16);e.exports=function(e,t,n,o,s){var i=new Error(e);return r(i,t,n,o,s)}},function(e,t){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var r=n(2),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,s,i={};return e?(r.forEach(e.split("\n"),function(e){if(s=e.indexOf(":"),t=r.trim(e.substr(0,s)).toLowerCase(),n=r.trim(e.substr(s+1)),t){if(i[t]&&o.indexOf(t)>=0)return;"set-cookie"===t?i[t]=(i[t]?i[t]:[]).concat([n]):i[t]=i[t]?i[t]+", "+n:n}}),i):i}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,s,i){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(s)&&a.push("domain="+s),i===!0&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){t=t||{};var n={};return r.forEach(["url","method","params","data"],function(e){"undefined"!=typeof t[e]&&(n[e]=t[e])}),r.forEach(["headers","auth","proxy"],function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):"undefined"!=typeof t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):"undefined"!=typeof e[o]&&(n[o]=e[o])}),r.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],function(r){"undefined"!=typeof t[r]?n[r]=t[r]:"undefined"!=typeof e[r]&&(n[r]=e[r])}),n}},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t,n){"use strict";function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new o(e),t(n.reason))})}var o=n(23);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e,t=new r(function(t){e=t});return{token:t,cancel:e}},e.exports=r},function(e,t){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}}])});
-//# sourceMappingURL=axios.min.map
\ No newline at end of file
diff --git a/assets/js/cognitive-apis-demo.js b/assets/js/cognitive-apis-demo.js
new file mode 100644
index 0000000..06c59eb
--- /dev/null
+++ b/assets/js/cognitive-apis-demo.js
@@ -0,0 +1,468 @@
+window.onload = async function() {
+ try {
+ let host = window.location.hostname;
+ let lintoWebToken = '';
+ if (host.indexOf('dev.linto.local') >= 0) {
+ lintoWebToken = 'wdyEXAlwSFY3WjvD';
+ }
+ if (host.indexOf('linto.ai') >= 0) {
+ lintoWebToken = 'j5hO82IOO9Ns64KZ';
+ }
+ // INIT LINTO AGENT
+ window.linto = await new Linto('https://gamma.linto.ai/overwatch/local/web/login', lintoWebToken);
+ let login = await window.linto.login()
+ if (login) {
+ window.linto.startAudioAcquisition(false, 'linto', 0.99)
+ window.linto.addEventListener("streaming_start", function() {})
+ window.linto.addEventListener("streaming_stop", function() {
+ let streamingBtn = document.getElementById('record-streaming')
+ if (streamingBtn.classList.contains('recording')) {
+ streamingBtn.classList.remove('recording')
+ }
+ })
+ window.linto.addEventListener("streaming_fail", function(e) {
+ window.linto.stopStreaming()
+ })
+ window.linto.addEventListener("streaming_chunk", function(event) {
+ handleStreamingChunk(event)
+ })
+ window.linto.addEventListener("action_feedback", function(event) {
+ //console.log('actions feedback', event)
+ updateTranscriptionState(event)
+ })
+ } else {
+ throw ('LinTO Agent: Error on login')
+ }
+ } catch (lintoError) {
+ // handle the error
+ console.error(lintoError)
+ }
+
+ window.streamingContent = ''
+ const handleStreamingChunk = function(event) {
+ let writingTarget = document.getElementById('record-streaming-transcript')
+ if (event.detail.behavior.streaming.partial && event.detail.behavior.streaming.partial !== 'stop') {
+ //console.log("Streaming chunk received : ", event.detail.behavior.streaming.partial)
+ if (event.detail.behavior.streaming.partial) {
+ writingTarget.innerHTML = window.streamingContent + (window.streamingContent.length > 0 ? '\n' : '') + event.detail.behavior.streaming.partial
+ }
+ }
+ if (event.detail.behavior.streaming.text) {
+ //console.log("Streaming utterance completed : ", event.detail.behavior.streaming.text)
+ if (event.detail.behavior.streaming.text === 'stop') {
+ window.linto.stopStreaming()
+ window.streamingContent = ''
+ } else {
+ window.streamingContent += (window.streamingContent.length > 0 ? '\n' : '') + event.detail.behavior.streaming.text
+ writingTarget.innerHTML = window.streamingContent
+ }
+ }
+ }
+
+ /* API TRANSCRIPTION FORM */
+ window.transcriptionResultId = ''
+ const toggleBtns = document.getElementsByClassName('toggle-input')
+ const speakersInput = document.getElementById('api-transcription-speakers')
+ const inputTypeMic = document.getElementById('api-setting-mic')
+ const inputTypeFile = document.getElementById('api-setting-file')
+ const recordBtn = document.getElementById('api-transcription-mic-btn')
+ const replayBtn = document.getElementById('api-transcription-play-btn')
+ const transcriptionBtn = document.getElementById('api-transcription-transcript-btn')
+ const updloadFile = document.getElementById('api-transcription-upload-field')
+ const languageInput = document.getElementById('api-transcription-language')
+ const punctuationBtn = document.getElementById('api-transcription-punctuation')
+ const diarizationBtn = document.getElementById('api-transcription-diarization')
+ const normalizationBtn = document.getElementById('api-transcription-normalization')
+ const fileInputLabelBtn = document.getElementById('api-transcription-file-btn')
+ const fileInput = document.getElementById('api-transcription-file')
+ const fileInputLabel = document.getElementById('api-transcription-file-label')
+
+ // Transcription API form: Input type (microphone / media file)
+ inputTypeMic.onchange = function() {
+ updateApiFormInputType()
+ }
+ inputTypeFile.onchange = function() {
+ updateApiFormInputType()
+ }
+
+ function updateApiFormInputType() {
+ if (inputTypeMic.checked) {
+ recordBtn.classList.remove('hidden')
+ replayBtn.classList.add('hidden')
+ transcriptionBtn.classList.add('hidden')
+ updloadFile.classList.add('hidden')
+ } else {
+ recordBtn.classList.add('hidden')
+ replayBtn.classList.add('hidden')
+ transcriptionBtn.classList.add('hidden')
+ updloadFile.classList.remove('hidden')
+ }
+ }
+
+ // Transcription API form: Toggle buttons
+ for (let btn of toggleBtns) {
+ btn.onclick = async function() {
+ btn.classList.contains('selected') ? btn.classList.remove('selected') : btn.classList.add('selected')
+ if (btn.getAttribute('id') === 'api-transcription-diarization') {
+ if (btn.classList.contains('selected')) {
+ speakersInput.removeAttribute('disabled')
+ } else {
+ speakersInput.setAttribute('disabled', 'disabled')
+ }
+ }
+
+ if (btn.getAttribute('id') === 'api-transcription-normalization') {
+ let transcriptionResTypeBtns = document.getElementsByClassName('transcription-result-btn')
+ for (let btnType of transcriptionResTypeBtns) {
+ if (btnType.classList.contains('active')) {
+ let btnId = btnType.getAttribute('id')
+ let type = ''
+ if (btnId === 'api-transcription-result-json') {
+ type = 'application/json'
+ } else if (btnId === 'api-transcription-result-text') {
+ type = 'text/plain'
+ } else if (btnId === 'api-transcription-result-srt') {
+ type = 'text/srt'
+ } else if (btnId === 'api-transcription-result-vtt') {
+ type = 'text/vtt'
+ }
+ await window.linto.triggerAction({
+ result_id: window.transcriptionResultId,
+ convert_numbers: btn.classList.contains('selected'),
+ accept: type
+ }, "transcriber", "stt")
+ }
+ }
+ }
+ }
+ }
+
+// Transcription API form: Record audio button
+ recordBtn.onclick = async function() {
+ if (!transcriptionBtn.classList.contains('transcribing')) {
+ hideTranscriptionResult()
+ hideTranscriptionSteps()
+ if (recordBtn.classList.contains('recording')) {
+ recordBtn.classList.remove('recording')
+ transcriptionBtn.classList.remove('hidden')
+ replayBtn.classList.remove('hidden')
+ window.linto.audio.recorder.punchOut()
+ replayBtn.onclick = function() {
+ window.linto.audio.recorder.play()
+ }
+ } else {
+ recordBtn.classList.add('recording')
+ window.linto.audio.recorder.cleanBuffer()
+ window.linto.audio.recorder.punchIn()
+ replayBtn.classList.add('hidden')
+ transcriptionBtn.classList.add('hidden')
+ }
+ }
+ }
+
+ // Transcription API form: Upload file handler
+ fileInput.onchange = function(e) {
+ handleFileUpload(e)
+ }
+
+ async function handleFileUpload(event) {
+ let input = event.srcElement
+ fileInputLabelBtn.classList.remove('error')
+ if (input.files.length > 0) {
+ let file = input.files[0]
+ let type = file.type
+ let limitSize = 10 * 1024 * 1024 // Limit upload size 15MB
+ transcriptionBtn.classList.remove('hidden')
+ fileInputLabel.innerHTML = file.name
+ if (file.size > limitSize) {
+ transcriptionBtn.classList.add('hidden')
+ fileInputLabel.innerHTML = "Fichier trop volumineux"
+ fileInputLabelBtn.classList.add('error')
+ } else {
+ if (type.indexOf('audio') >= 0 || type.indexOf('video') >= 0) {
+ // File ok
+ transcriptionBtn.classList.remove('hidden')
+ fileInputLabel.innerHTML = file.name
+ } else {
+ // File bad type
+ transcriptionBtn.classList.add('hidden')
+ fileInputLabel.innerHTML = "Fichier audio"
+ }
+ }
+ } else {
+ // File not found
+ transcriptionBtn.classList.add('hidden')
+ fileInputLabel.innerHTML = "Fichier audio"
+ }
+ }
+
+
+
+ // Transcription API form: Send form
+ transcriptionBtn.onclick = async function() {
+ if (!transcriptionBtn.classList.contains('transcribing')) {
+ hideTranscriptionResult()
+ hideTranscriptionSteps()
+ let payload = await getFormData()
+ setTranscriptionSteps(payload)
+ window.linto.triggerAction(payload, "transcriber", "stt")
+ transcriptionBtn.classList.add('transcribing')
+
+ let transcriptionSteps = document.getElementsByClassName('api-transcription-step')
+ for (let state of transcriptionSteps) {
+ state.classList.remove('done')
+ state.classList.add('pending')
+ }
+ }
+ }
+
+ function blobToBase64(blob) {
+ const reader = new FileReader()
+ reader.readAsDataURL(blob)
+ return new Promise(resolve => {
+ reader.onloadend = () => {
+ resolve(reader.result)
+ }
+ })
+ }
+
+ async function getFormData() {
+ let transcriptionConfig = {
+ transcribePerChannel: false,
+ enablePunctuation: false,
+ diarizationConfig: {
+ enableDiarization: false,
+ numberOfSpeaker: 0,
+ maxNumberOfSpeaker: 0
+ }
+ }
+
+ // Input Type
+ let inputType = ''
+ let audioUrl = ''
+ if (inputTypeMic.checked) {
+ inputType = 'microphone'
+ audioUrl = window.linto.audio.recorder.getFile()
+ } else if (inputTypeFile.checked) {
+ inputType = 'file'
+ audioUrl = URL.createObjectURL(fileInput.files[0])
+ }
+
+ // Audio
+ let blob = await fetch(audioUrl).then(r => r.blob())
+ let base64 = await blobToBase64(blob)
+
+ // Lang
+ let lang = languageInput.value
+
+ // punctuation
+ transcriptionConfig.enablePunctuation = punctuationBtn.classList.contains('selected')
+
+ //diariazation
+ transcriptionConfig.diarizationConfig.enableDiarization = diarizationBtn.classList.contains('selected')
+ transcriptionConfig.diarizationConfig.numberOfSpeaker = diarizationBtn.classList.contains('selected') ? parseInt(speakersInput.value) : 0
+ transcriptionConfig.diarizationConfig.maxNumberOfSpeaker = diarizationBtn.classList.contains('selected') ? parseInt(speakersInput.value) : 0
+
+ return {
+ accept: "application/json",
+ force_sync: false,
+ no_cache: "true",
+ transcriptionConfig,
+ audio: base64
+ }
+ }
+
+ // Transcription API form: Transcriptions steps
+ let hideTranscriptionSteps = () => {
+ let transcriptionSteps = document.getElementsByClassName('api-transcription-step')
+ for (let state of transcriptionSteps) {
+ state.classList.remove('done')
+ state.classList.remove('pending')
+ state.classList.remove('started')
+ state.classList.add('hidden')
+ }
+ }
+ let setTranscriptionSteps = (payload) => {
+ let diarizationEnabled = payload.transcriptionConfig.diarizationConfig.enableDiarization
+ let punctuationEnabled = payload.transcriptionConfig.enablePunctuation
+
+ let transcriptionSteps = document.getElementsByClassName('api-transcription-step')
+
+ for (let step of transcriptionSteps) {
+ if (step.getAttribute('data-step') === 'start' || step.getAttribute('data-step') === 'transcription' || (diarizationEnabled && step.getAttribute('data-step') === 'diarization') || (punctuationEnabled && step.getAttribute('data-step') === 'punctuation')) {
+ step.classList.remove('hidden')
+ }
+ }
+ }
+ let updateTranscriptionState = async(event) => {
+ const stateItems = document.getElementsByClassName('api-transcription-step')
+ const stateStart = document.getElementById('api-transcription-step-start')
+ const stateTranscription = document.getElementById('api-transcription-step-transcription')
+ const stateDiarization = document.getElementById('api-transcription-step-diarization')
+ const statePunctuation = document.getElementById('api-transcription-step-punctuation')
+ if (!!event.detail.behavior.state) {
+ let resp = event.detail.behavior
+ // file uploaded
+ if (resp.state === 'file_uploaded') {
+ stateStart.classList.remove('pending')
+ stateStart.classList.add('done')
+ }
+ if (!!resp.steps && resp.steps !== 'undefined') {
+ // Diarization
+ if (!!resp.steps.diarization && resp.steps.diarization.required) {
+ stateDiarization.classList.remove('done')
+ stateDiarization.classList.remove('pending')
+ stateDiarization.classList.remove('started')
+ stateDiarization.classList.add(resp.steps.diarization.status)
+ }
+ // Transcription
+ if (!!resp.steps.transcription && resp.steps.transcription.required) {
+ stateTranscription.classList.remove('done')
+ stateTranscription.classList.remove('pending')
+ stateTranscription.classList.remove('started')
+ stateTranscription.classList.add(resp.steps.transcription.status)
+ }
+ // Punctuation
+ if (!!resp.steps.punctuation && resp.steps.transcription.punctuation) {
+ statePunctuation.classList.remove('done')
+ statePunctuation.classList.remove('pending')
+ statePunctuation.classList.remove('started')
+ statePunctuation.classList.add(resp.steps.punctuation.status)
+ }
+ }
+
+ if (resp.state === 'done') {
+ for (let step of stateItems) {
+ step.classList.remove('pending')
+ step.classList.remove('started')
+ step.classList.add('done')
+ window.transcriptionResultId = resp.result_id
+ document.getElementById('api-transcription-transcript-btn').classList.remove('transcribing')
+ }
+ //showDownloadTranscriptionBtns()
+ await window.linto.triggerAction({
+ result_id: window.transcriptionResultId,
+ accept: 'application/json'
+ }, "transcriber", "stt")
+ }
+ if (resp.state === "result_received") {
+ showTranscriptionResult()
+ let resultContainer = document.getElementById('api-transcription-result')
+
+ if (typeof(resp.result) === 'object') {
+ resultContainer.innerHTML = `${JSON.stringify(resp.result, null, 2)} `
+ } else {
+ let formated = resp.result.replace(/\n/g, ' ')
+ resultContainer.innerHTML = formated
+ }
+
+ // Download link
+ const donwloadLink = document.getElementById('transcription-download')
+ donwloadLink.classList.remove('hidden')
+
+ let data = ''
+ let filename = ''
+
+ if (resp.type === 'application/json') {
+ filename = 'tanscription.json'
+ data = JSON.stringify(resp.result)
+ } else if (resp.type === 'text/plain') {
+ filename = 'tanscription.txt'
+ data = resp.result
+ } else if (resp.type === 'text/vtt') {
+ filename = 'tanscription.vtt'
+ data = resp.result
+ } else if (resp.type === 'text/srt') {
+ filename = 'tanscription.srt'
+ data = resp.result
+ }
+ let respFile = URL.createObjectURL(new Blob([data], { type: resp.type }))
+ donwloadLink.setAttribute('href', respFile)
+ donwloadLink.setAttribute('download', filename)
+ }
+ }
+ }
+
+ const apiResultJsonBtn = document.getElementById('api-transcription-result-json')
+ const apiResultTextBtn = document.getElementById('api-transcription-result-text')
+ const apiResultSrtBtn = document.getElementById('api-transcription-result-srt')
+ const apiResultVttBtn = document.getElementById('api-transcription-result-vtt')
+ const apiResultBtns = document.getElementsByClassName('transcription-result-btn')
+
+ let showTranscriptionResult = () => {
+ const transcriptionTypesBtns = document.getElementById('api-transcription-result-container')
+ transcriptionTypesBtns.classList.remove('hidden')
+ }
+ let hideTranscriptionResult = () => {
+ const transcriptionTypesBtns = document.getElementById('api-transcription-result-container')
+ transcriptionTypesBtns.classList.add('hidden')
+ resetApiResultBtns()
+ apiResultJsonBtn.classList.add('active')
+ }
+ let resetApiResultBtns = () => {
+ for (let btn of apiResultBtns) {
+ btn.classList.remove('active')
+ }
+ }
+ apiResultJsonBtn.onclick = async() => {
+ if (window.transcriptionResultId !== '') {
+ resetApiResultBtns()
+ apiResultJsonBtn.classList.add('active')
+ await window.linto.triggerAction({
+ result_id: window.transcriptionResultId,
+ convert_numbers: normalizationBtn.classList.contains('selected'),
+ accept: 'application/json'
+ }, "transcriber", "stt")
+ }
+ }
+ apiResultTextBtn.onclick = async() => {
+ if (window.transcriptionResultId !== '') {
+ resetApiResultBtns()
+ apiResultTextBtn.classList.add('active')
+ await window.linto.triggerAction({
+ result_id: window.transcriptionResultId,
+ convert_numbers: normalizationBtn.classList.contains('selected'),
+ accept: 'text/plain'
+ }, "transcriber", "stt")
+ }
+ }
+ apiResultSrtBtn.onclick = async() => {
+ if (window.transcriptionResultId !== '') {
+ resetApiResultBtns()
+ apiResultSrtBtn.classList.add('active')
+ await window.linto.triggerAction({
+ result_id: window.transcriptionResultId,
+ convert_numbers: normalizationBtn.classList.contains('selected'),
+ accept: 'text/srt'
+ }, "transcriber", "stt")
+ }
+ }
+ apiResultVttBtn.onclick = async() => {
+ if (window.transcriptionResultId !== '') {
+ resetApiResultBtns()
+ apiResultVttBtn.classList.add('active')
+ await window.linto.triggerAction({
+ result_id: window.transcriptionResultId,
+ convert_numbers: normalizationBtn.classList.contains('selected'),
+ accept: 'text/vtt'
+ }, "transcriber", "stt")
+ }
+ }
+
+ /* STREAMING API */
+
+ const micStreamingBtn = document.getElementById('record-streaming')
+ const streamingContent = document.getElementById('record-streaming-transcript')
+ micStreamingBtn.onclick = function(e) {
+ if (micStreamingBtn.classList.contains('recording')) {
+ micStreamingBtn.classList.remove('recording')
+ window.linto.stopStreaming()
+ window.streamingContent = ''
+ } else {
+ micStreamingBtn.classList.add('recording')
+ streamingContent.innerHTML = ''
+ window.linto.startStreaming(0)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/assets/js/contact.js b/assets/js/contact.js
index 09c1964..27f3a42 100644
--- a/assets/js/contact.js
+++ b/assets/js/contact.js
@@ -1,13 +1,13 @@
$(document).ready(function(){
// Submit contact form
- $('.submit-btn').on('click', function () {
+ $('#contact-form-send').on('click', function () {
handleForm()
})
function testName () {
- const regex = /^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ\s\-\']+$/
+ const regex = /^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ\s\-\'\.]+$/
const nameField = $('#contact-name')
- const nameError = $('.error-field.username')
+ const nameError = $('#contact-name-error')
const name = nameField.val()
// clear errors
nameField.removeClass('error')
@@ -26,9 +26,9 @@ $(document).ready(function(){
}
function testEmail () {
- const regex = /^[a-z]{1}[a-z0-9\-\.\_]*[a-z0-9]+[\@]+[a-z]{1}[a-z0-9\-\.]*[a-z0-9]+[\.]+[a-z]{2,4}$/
+ const regex = /^[a-z]{1}[a-z0-9\-\.\_]*[a-z0-9]+[\@]+[a-z]{1}[a-z0-9\-\.]*[a-z0-9]+[\.]+[a-z]{2,5}$/
const emailField = $('#contact-email')
- const emailError = $('.error-field.email')
+ const emailError = $('#contact-email-error')
const email = emailField.val()
// clear errors
emailField.removeClass('error')
@@ -49,7 +49,7 @@ $(document).ready(function(){
function testPhone () {
const regex = /^\d{8,20}$/
const phoneField = $('#contact-phone')
- const phoneError = $('.error-field.phone')
+ const phoneError = $('#contact-phone-error')
const phone = phoneField.val()
// clear errors
phoneField.removeClass('error')
@@ -68,32 +68,11 @@ $(document).ready(function(){
}
}
- function testSociety () {
- regex = /^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ\s\-\']+$/
- const societyField = $('#contact-society')
- const societyError = $('.error-field.society')
- const society = societyField.val()
- // clear errors
- societyField.removeClass('error')
- societyError.html('')
-
- if (society.length === 0) {
- return true
- } else {
- if (!regex.test(society)) {
- societyError.html('Veuillez saisir un nom de société valide')
- societyField.addClass('error')
- return false
- } else {
- return true
- }
- }
- }
function testMessage () {
const msgField = $('#contact-msg')
- const msgError = $('.error-field.msg')
+ const msgError = $('#contact-msg-error')
const msg = msgField.val()
// clear errors
msgField.removeClass('error')
@@ -119,10 +98,9 @@ $(document).ready(function(){
let nameValid = testName()
let emailValid = testEmail()
let phoneValid = testPhone()
- let societyValid = testSociety()
let msgValid = testMessage()
- if(!nameValid || !emailValid || !phoneValid || !societyValid || !msgValid) {
+ if(!nameValid || !emailValid || !phoneValid || !msgValid ) {
isValid = false
return false
}
@@ -132,7 +110,7 @@ $(document).ready(function(){
}
function sendForm () {
- $('.submit-btn').innerHTML = 'Envoi...'
+ $('#contact-form-send').innerHTML = 'Envoi en cours...'
const payload = {
subject: 'Contact depuis linto.ai',
username: $('#contact-name').val(),
@@ -141,19 +119,20 @@ $(document).ready(function(){
society: $('#contact-society').val(),
message: $('#contact-msg').val()
}
+
+ // Request
axios.post('https://dl.linto.ai/mail/send', {
method: 'post',
data: payload
})
.then(function (response) {
$('.submit-btn').innerHTML = 'Envoyer'
- $('.send-notif').removeClass('hidden').addClass('visible').addClass(response.data.status)
- $('.notif-msg').html(response.data.msg)
- setTimeout(function () {
- $('.send-notif').removeClass('visible').addClass('hidden')
- }, 3000)
if(response.data.status === 'success') {
// Success
+ $('#contact-success').removeClass('hidden')
+ setTimeout(function () {
+ $('#contact-success').addClass('hidden')
+ }, 5000)
$('#contact-msg').val('')
} else {
throw response.data
@@ -161,27 +140,24 @@ $(document).ready(function(){
})
.catch(function (error) {
// Error
- $('.send-notif').removeClass('hidden').addClass('visible').addClass(error.status)
- $('.notif-msg').html(error.msg)
- setTimeout(function () {
- $('.send-notif').removeClass('visible').addClass('hidden')
- }, 3000)
+ console.error(error)
+ $('#contact-error').removeClass('hidden')
});
}
- document.getElementById('contact-name').onblur = function () {
+ $('#contact-name').on('blur', function () {
testName()
- }
- document.getElementById('contact-email').onblur = function () {
+ })
+ $('#contact-email').on('blur',function () {
testEmail()
- }
- document.getElementById('contact-phone').onblur = function () {
+ })
+ $('#contact-phone').on('blur', function () {
testPhone()
- }
- document.getElementById('contact-society').onblur = function () {
- testSociety()
- }
- document.getElementById('contact-msg').onblur = function () {
+ })
+ $('#contact-subject').on('blur',function () {
+ testSubject()
+ })
+ $('#contact-msg').on('blur',function () {
testMessage()
- }
-})
+ })
+})
\ No newline at end of file
diff --git a/assets/js/enterprises.js b/assets/js/enterprises.js
deleted file mode 100644
index 7035270..0000000
--- a/assets/js/enterprises.js
+++ /dev/null
@@ -1,83 +0,0 @@
-
-window.onload = function (e) {
- window['page_lang'] = window.location.href.indexOf('/fr') >= 0 ? 'fr' : 'en'
-
- // Init Animation "how does it work?"
- const animationContainer = document.getElementById('linto-animation')
- let jsonAnimationPath = 'assets/json/animation.json'
- if (window['page_lang'] === 'fr') {
- jsonAnimationPath = '../assets/json/animation.json'
- }
- let hdiwAnimation = lottie.loadAnimation({
- container: animationContainer, // the dom element that will contain the animation
- renderer: 'svg',
- loop: true,
- autoplay: true,
- path: jsonAnimationPath, // the path to the animation json
- rendererSettings: {
- className: 'linto-animation-hdiw'
- }
- })
- hdiwAnimation.setSpeed(0.8)
-
-
- setContentSection()
- $(window).on('resize', function() {
- setContentSection()
- })
-
- function setContentSection () {
- const burgerMenuDisplay = $('#burger-nav').css('display')
- if(burgerMenuDisplay === 'none') {
- window['winWidth'] = $(window).width()
- const overflow = 300
- const calcWidth = parseInt(window['winWidth'] - overflow );
- $('.content-section.enterprise').each(function () {
- $(this).attr('style', 'width:' +calcWidth + 'px;')
- })
- } else {
- $('#content-nav').removeClass('visible').addClass('hidden');
- $('.content-section.enterprise').attr('style', '')
-
- }
- }
- const controller = new ScrollMagic.Controller();
- const contentScene = new ScrollMagic.Scene({
- triggerElement: "#section-content-wrapper",
- triggerHook: 0,
- offset: '-80'
- })
- .addTo(controller)
- .on("enter", function (e) {
- const burgerMenuDisplay = $('#burger-nav').css('display')
- if(burgerMenuDisplay === 'none') {
- $('#content-nav').removeClass('hidden').addClass('visible')
- }
- else{
- $('#content-nav').removeClass('visible').addClass('hidden')
- }
- })
- .on("leave", function (e) {
- $('#content-nav').removeClass('visible').addClass('hidden')
- })
-
- $('.title-anchor, .section-anchor').each(function () {
- const elem = '#' + $(this).attr('id')
- new ScrollMagic.Scene({
- triggerElement: elem,
- triggerHook: 0,
- offset: '-60'
- })
- .addTo(controller)
- .on("enter", function (e) {
- $('.content-nav-link.active').removeClass('active')
- const navLink = $('.content-nav-link[href="'+elem+'"]')
- navLink.addClass('active')
- }).on("leave", function (e) {
- $('.content-nav-link.active').removeClass('active')
- const navLink = $('.content-nav-link[href="'+elem+'"]')
- navLink.addClass('active')
- })
- })
-}
-
diff --git a/assets/js/home.js b/assets/js/home.js
deleted file mode 100644
index bc8a915..0000000
--- a/assets/js/home.js
+++ /dev/null
@@ -1,121 +0,0 @@
-$(document).ready(function () {
-
- window['page_lang'] = window.location.href.indexOf('/fr') >= 0 ? 'fr' : 'en'
- window['animationStarted'] = false
-
- // Init Animation "how does it work?"
- const hdiwAnimationContainer = document.getElementById('hdiw-animation')
- let jsonAnimationPath = 'assets/json/animation.json'
- if (window['page_lang'] === 'fr') {
- jsonAnimationPath = '../assets/json/animation.json'
- }
- let hdiwAnimation = lottie.loadAnimation({
- container: hdiwAnimationContainer, // the dom element that will contain the animation
- renderer: 'svg',
- loop: false,
- autoplay: false,
- path: jsonAnimationPath, // the path to the animation json
- rendererSettings: {
- className: 'linto-animation-hdiw'
- }
- })
- hdiwAnimation.setSpeed(0.8)
- // Animation Segments
- const segments = [
- [0, 290], // part 1
- [290, 428], // part 2
- [428, 534], // part 3
- [534, 798] // part 4
- ]
-
- const controller = new ScrollMagic.Controller()
- const scene = new ScrollMagic.Scene({
- triggerElement: "#hdiw",
- triggerHook: 0,
- offset: '-160'
- })
- .addTo(controller)
- .on("enter", function (e) {
- if(!window['animationStarted']) {
- hdiwAnimation.playSegments(segments[0], true)
- window['animationStarted'] = true
- }
- })
-
- // how does it work : steps
- function setHdiwStep (index) {
- const activeStep = $('.hdiw-content.active').attr('data-index')
- const nbItems = $('.hdiw-content').length
- if (index !== activeStep) {
- $('.hdiw-content.active').removeClass('active').addClass('hidden')
- $('.hdiw-content[data-index="'+index+'"]').removeClass('hidden').addClass('active')
- $('.hdiw-control.active').removeClass('active')
- $('.hdiw-control[data-index="'+index+'"]').addClass('active')
- hdiwAnimation.playSegments(segments[index - 1], true)
- $('.hdiw-replay').attr('data-index', index)
- if(index === 1) {
- $('.hdiw-arrow.prev').removeClass('enabled').addClass('disabled')
- } else {
- $('.hdiw-arrow.prev').removeClass('disabled').addClass('enabled')
- }
- if (index === nbItems) {
- $('.hdiw-arrow.next').removeClass('enabled').addClass('disabled')
- } else {
- $('.hdiw-arrow.next').removeClass('disabled').addClass('enabled')
- }
- }
- }
-
- // On click : HDIW step number
- $('.hdiw-control').on('click', function () {
- setHdiwStep(parseInt($(this).attr('data-index')))
- })
-
- // Replay animation
- $('.hdiw-replay').on('click', function () {
- const index = $(this).attr('data-index')
- hdiwAnimation.playSegments(segments[index-1], true)
- })
-
- // On click : HDIW prev arrow
- $('.hdiw-arrow.prev').on('click', function () {
- const currentIndex = parseInt($('.hdiw-content.active').attr('data-index'))
- if(currentIndex !== 1 && !$(this).hasClass('disabled')) {
- setHdiwStep(currentIndex - 1)
- }
- })
-
- // On click : HDIW next arrow
- $('.hdiw-arrow.next').on('click', function () {
- const currentIndex = $('.hdiw-content.active').attr('data-index')
- const nbItems = $('.hdiw-content').length
- const target = parseInt(currentIndex) + 1
- if(parseInt(currentIndex) < parseInt(nbItems) && !$(this).hasClass('disabled')) {
- setHdiwStep(target)
- }
- })
-
- // Init use-cases SLIDER
- $('#use-cases-slider').slick({
- autoplay: true,
- autoplaySpeed: 5000,
- dots: true
- })
-
- // Animation LinTO Blink
- let jsonPath = 'assets/json/data.json'
- if (window.location.href.indexOf('/fr') >= 0) {
- jsonPath = '../assets/json/data.json'
- }
- const animationContainer = document.getElementById('linto-animated')
- lottie.loadAnimation({
- container: animationContainer, // the dom element that will contain the animation
- renderer: 'svg',
- loop: true,
- autoplay: true,
- path: jsonPath, // the path to the animation json
- rendererSettings: {
- className: 'linto-animation-home'
- }
- })
-})
\ No newline at end of file
diff --git a/assets/js/homepage.js b/assets/js/homepage.js
new file mode 100644
index 0000000..804fe82
--- /dev/null
+++ b/assets/js/homepage.js
@@ -0,0 +1,64 @@
+let homepageLinks = document.getElementsByClassName('homepage-link')
+
+// Homepage links click events
+for(let link of homepageLinks) {
+ link.addEventListener('click', (e) => {
+ if(!link.classList.contains('active')) {
+ resetHomepageLinks()
+ link.classList.add('active')
+ let target = link.getAttribute('data-anim')
+ setAnimation(target)
+ }
+ else {
+ link.classList.remove('active')
+ resetAnimClasses()
+ setAnimation('default')
+ }
+ })
+}
+
+function resetHomepageLinks(){
+ let homepageLinks = document.getElementsByClassName('homepage-link')
+ for(let link of homepageLinks) {
+ if(link.classList.contains('active')) link.classList.remove('active')
+ }
+}
+
+function setAnimation(target) {
+ resetAnimClasses()
+ let animContainer = document.getElementById('homepage-animation-mask')
+ animContainer.innerHTML = ''
+
+ switch(target) {
+ case "coginitve-apis":
+ animContainer.innerHTML = ` `
+ break
+ case "linto-agent":
+ animContainer.classList.add('linto-agent')
+ break
+ case "smart-meeting":
+ animContainer.classList.add('smart-meeting')
+ animContainer.classList.add('bordered')
+ case "default":
+ animContainer.classList.add('default')
+ break
+ }
+ animContainer.classList.remove('fading-out')
+ animContainer.classList.add('fading-in')
+ setTimeout(()=>{
+ animContainer.classList.remove('fading-in')
+ }, 700)
+
+
+}
+
+
+function resetAnimClasses() {
+ let animContainer = document.getElementById('homepage-animation-mask')
+ animContainer.classList.remove('default')
+ animContainer.classList.remove('bordered')
+ animContainer.classList.remove('linto-agent')
+ animContainer.classList.remove('smart-meeting')
+ animContainer.classList.remove('fading-in')
+ animContainer.classList.add('fading-out')
+}
\ No newline at end of file
diff --git a/assets/js/jquery-3.1.1.min.js b/assets/js/jquery-3.1.1.min.js
new file mode 100644
index 0000000..4c5be4c
--- /dev/null
+++ b/assets/js/jquery-3.1.1.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v3.1.1 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML=" ",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML=" ";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML=" ","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML=" ",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):C.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/[^\x20\t\r\n\f]+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),
+a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,ka=/^$|\/(?:java|ecma)script/i,la={option:[1,""," "],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};la.optgroup=la.option,la.tbody=la.tfoot=la.colgroup=la.caption=la.thead,la.th=la.td;function ma(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function na(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=ma(l.appendChild(f),"script"),j&&na(g),c){k=0;while(f=g[k++])ka.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var qa=d.documentElement,ra=/^key/,sa=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ta=/^([^.]*)(?:\.(.+)|)/;function ua(){return!0}function va(){return!1}function wa(){try{return d.activeElement}catch(a){}}function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)xa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=va;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(qa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,za=/
+
+
+
+
Nous contacter
+
Appelez-nous ou écrivez-nous quelque soit votre sujet, nous vous répondrons le plus rapidement possible.
+ Nous sommes joignable tous les jours ouvrés de 9h à 18h
+
+
+
+ Prénom Nom *
+
+
+
+
+ Email *
+
+
+
+
+ Téléphone
+
+
+
+
+ Société
+
+
+
+
+ Message *
+
+
+
+
+ Envoyer
+
+
+ Votre message à bien été envoyé et sera traité dans les meilleurs délais.
+
+
+
+
+
+
+
+ Téléphone: +33 (0)1 46 96 63 63
+
+
+
+ Addresse : 32 rue Pierre-Paul Riquet, 31300, Toulouse
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/css/main.scss b/css/main.scss
new file mode 100644
index 0000000..f8114e8
--- /dev/null
+++ b/css/main.scss
@@ -0,0 +1,14 @@
+---
+---
+@import "mixins";
+@import "global";
+@import "header";
+
+@import "homepage";
+@import "cognitiveapis";
+@import "demoapis";
+@import "demolintoagent";
+@import "pricing";
+@import "contact";
+@import "footer";
+@import "responsive";
diff --git a/demo/cognitive-apis.markdown b/demo/cognitive-apis.markdown
new file mode 100644
index 0000000..51a3d8a
--- /dev/null
+++ b/demo/cognitive-apis.markdown
@@ -0,0 +1,146 @@
+---
+# Feel free to add content and custom Front Matter to this file.
+# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
+
+layout: default
+title: Essayer LinTO cognitive APIs dans votre navigateur
+---
+
+
+
+
Tester l'API de transcription par fichier
+
Réalisez une transcription en utilisant un fichier audio ou vidéo d’une taille maximale de 10Mo, ou en parlant directement dans votre microphone.
+
+
+
+
+
+
Langue
+
+
+ Français
+
+
+
+
+
+
+
Identification des locuteurs
+
+
+
+
+
+
+
+
Nombre de locuteurs
+
+
+ 1 locuteur
+ 2 locuteurs
+ 3 locuteurs
+ 4 locuteurs
+ 5 locuteurs
+ 6 locuteurs
+ 7 locuteurs
+ 8 locuteurs
+ 9 locuteurs
+ 10 locuteurs
+ 11 locuteurs
+ 12 locuteurs
+
+
+
+
+ Restitution de la ponctuation
+
+
+
+
+
+
+
+
+
+
+
+ Fichier média
+
+
+
+
+ Enregistrer
+
+
+
+ Ecouter
+
+
+
+ Transcription
+
+
+
+
+
Envoi du fichier
+
Transcription
+
Identification des locuteurs
+
Ponctuation
+
+
+
+
Normalisation des chiffres
+
+
+
+
+
+
+
+
+ Json
+
+
+ Texte
+
+
+ Sous-titre (.srt)
+
+
+ Sous-titre (.vtt)
+
+
+
+
+
+
+
+
+
+
Tester la dictée vocale
+
Parlez dans votre microphone et obtenez une transcription en temps réel .
+ Cliquez sur le bouton microphone pour démarrer la dictée .
+ Pour arrêter l'enregistrement cliquez sur le bouton microphone pour ou dites "STOP" .
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/linto-agent.markdown b/demo/linto-agent.markdown
new file mode 100644
index 0000000..c2f94fe
--- /dev/null
+++ b/demo/linto-agent.markdown
@@ -0,0 +1,103 @@
+---
+layout: default
+title: Essayer LinTO agent dans votre navigateur
+---
+
+
+
+
Assistant intelligent et agents conversationnels
+
Testez LinTO dans votre navigateur en sélectionnant les démonstrations disponibles
+
+
+ Navigation Web
+
+
+ Salle de réunion
+
+
+ Machine à café
+
+
+
+
+
+
+
Commandes
+
+ LinTO, lis le titre
+ LinTO, lis le contenu
+ LinTO, bloc suivant
+ LinTO, bloc précédent
+ LinTO, agrandis l'image
+ LinTO, réduis l'image
+ LinTO, active le mode accessibilité
+ LinTO, désactive le mode accessibilité
+
+
+
+
Lecture et navigation de contenu
+
+ Lecture du contenu
+ Votre agent conversationnel peut lire des contenus pour vous. Vous pouvez également naviguer à travers différents blocs de contenu à la voix.
+
+
+ Navigation à la voix
+ Utilisez les commandes "bloc suivant" et "bloc précédent" pour naviguer à travers différents blocs de contenus.
+
+
+ Visualisez vos images
+ Demandez à votre agent conversationnel d'agrandire ou de réduire les images présentes dans vos contenus.
+
+
+
+
+
+
+
+
+
+
+
Commandes
+
+ LinTO, allume la lumière
+ LinTO, éteins la lumière
+ LinTO, allume le projecteur
+ LinTO, éteins le projecteur
+ LinTO, ouvre les stores
+ LinTO, ferme les stores
+ LinTO, diapo suivante
+ LinTO, diapo précédente
+
+
+
+
+ {% include meeting-room-svg.html %}
+
+
+
+
+
+
+
Commandes
+
+ LinTO, sers moi un Américano
+ LinTO, sers moi un Latté
+ LinTO, sers moi un Mocha
+ LinTO, sers moi un Macchiato
+ LinTO, sers moi un Espresso
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/404.html b/docs/404.html
new file mode 100644
index 0000000..6a581b5
--- /dev/null
+++ b/docs/404.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
404
+
+
Page not found :(
+
The requested page could not be found.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/CNAME b/docs/CNAME
new file mode 100644
index 0000000..3c7d9a9
--- /dev/null
+++ b/docs/CNAME
@@ -0,0 +1 @@
+linto.ai
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..2b56d95
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,21 @@
+# Serve with Jekyll
+
+#### Install Jekyll
+```bash
+ npm install jekyll bundler
+```
+
+#### Serve project with Jekyll
+```bash
+ bundle exec jekyll serve
+```
+
+
+#### Build for production
+
+*The builded folder must be pushed to update the website *
+```bash
+ jekyll build -d ./docs
+ touch ./docs/.nojekyll
+```
+
diff --git a/docs/assets/img/api-intellience.svg b/docs/assets/img/api-intellience.svg
new file mode 100644
index 0000000..36a858a
--- /dev/null
+++ b/docs/assets/img/api-intellience.svg
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/apis-icon.svg b/docs/assets/img/apis-icon.svg
new file mode 100644
index 0000000..536fbe8
--- /dev/null
+++ b/docs/assets/img/apis-icon.svg
@@ -0,0 +1,85 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/arrow-menu.svg b/docs/assets/img/arrow-menu.svg
new file mode 100644
index 0000000..99dea3d
--- /dev/null
+++ b/docs/assets/img/arrow-menu.svg
@@ -0,0 +1,57 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/bg-rounded.png b/docs/assets/img/bg-rounded.png
new file mode 100644
index 0000000..df5b443
Binary files /dev/null and b/docs/assets/img/bg-rounded.png differ
diff --git a/docs/assets/img/burger-menu.svg b/docs/assets/img/burger-menu.svg
new file mode 100644
index 0000000..9760286
--- /dev/null
+++ b/docs/assets/img/burger-menu.svg
@@ -0,0 +1,59 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/check.svg b/docs/assets/img/check.svg
new file mode 100644
index 0000000..5d980a1
--- /dev/null
+++ b/docs/assets/img/check.svg
@@ -0,0 +1,56 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/close.svg b/docs/assets/img/close.svg
new file mode 100644
index 0000000..aadbc16
--- /dev/null
+++ b/docs/assets/img/close.svg
@@ -0,0 +1,49 @@
+
+
+
+image/svg+xml
+
+
\ No newline at end of file
diff --git a/docs/assets/img/coffee-machine.svg b/docs/assets/img/coffee-machine.svg
new file mode 100644
index 0000000..53aef19
--- /dev/null
+++ b/docs/assets/img/coffee-machine.svg
@@ -0,0 +1,232 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Americano
+
+
+ Latté
+
+
+ Mocha
+
+
+ Macchiato
+
+
+ Espresso
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Espresso (10%)
+ Hot Water (90%)
+ Americano
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/conversation-manager-logo-small.svg b/docs/assets/img/conversation-manager-logo-small.svg
new file mode 100644
index 0000000..2e4f600
--- /dev/null
+++ b/docs/assets/img/conversation-manager-logo-small.svg
@@ -0,0 +1,48 @@
+
+image/svg+xml
+
+
diff --git a/docs/assets/img/conversation-manager-logo.svg b/docs/assets/img/conversation-manager-logo.svg
new file mode 100644
index 0000000..371094c
--- /dev/null
+++ b/docs/assets/img/conversation-manager-logo.svg
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/cross.svg b/docs/assets/img/cross.svg
new file mode 100644
index 0000000..34101eb
--- /dev/null
+++ b/docs/assets/img/cross.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/docs/assets/img/download.svg b/docs/assets/img/download.svg
new file mode 100644
index 0000000..08d034d
--- /dev/null
+++ b/docs/assets/img/download.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/assets/img/github-logo-dark.svg b/docs/assets/img/github-logo-dark.svg
new file mode 100644
index 0000000..9cca0c8
--- /dev/null
+++ b/docs/assets/img/github-logo-dark.svg
@@ -0,0 +1,59 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/illustration-homepage-01.svg b/docs/assets/img/illustration-homepage-01.svg
new file mode 100644
index 0000000..9bdd4ef
--- /dev/null
+++ b/docs/assets/img/illustration-homepage-01.svg
@@ -0,0 +1,359 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/linagora-labs.png b/docs/assets/img/linagora-labs.png
new file mode 100644
index 0000000..205bf2c
Binary files /dev/null and b/docs/assets/img/linagora-labs.png differ
diff --git a/docs/assets/img/linagora.png b/docs/assets/img/linagora.png
new file mode 100644
index 0000000..a819fd5
Binary files /dev/null and b/docs/assets/img/linagora.png differ
diff --git a/docs/assets/img/linto-agent-icon.svg b/docs/assets/img/linto-agent-icon.svg
new file mode 100644
index 0000000..8b13deb
--- /dev/null
+++ b/docs/assets/img/linto-agent-icon.svg
@@ -0,0 +1,86 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/linto-ai.svg b/docs/assets/img/linto-ai.svg
new file mode 100644
index 0000000..e985abd
--- /dev/null
+++ b/docs/assets/img/linto-ai.svg
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/linto-animation-pipeline.gif b/docs/assets/img/linto-animation-pipeline.gif
new file mode 100644
index 0000000..58b0934
Binary files /dev/null and b/docs/assets/img/linto-animation-pipeline.gif differ
diff --git a/docs/assets/img/linto-meeting-icon.svg b/docs/assets/img/linto-meeting-icon.svg
new file mode 100644
index 0000000..a875d5d
--- /dev/null
+++ b/docs/assets/img/linto-meeting-icon.svg
@@ -0,0 +1,58 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/linto-meeting-visio.svg b/docs/assets/img/linto-meeting-visio.svg
new file mode 100644
index 0000000..00bf714
--- /dev/null
+++ b/docs/assets/img/linto-meeting-visio.svg
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/linto-studio-logo.svg b/docs/assets/img/linto-studio-logo.svg
new file mode 100644
index 0000000..667c467
--- /dev/null
+++ b/docs/assets/img/linto-studio-logo.svg
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/linto-ui.png b/docs/assets/img/linto-ui.png
new file mode 100644
index 0000000..f9079d0
Binary files /dev/null and b/docs/assets/img/linto-ui.png differ
diff --git a/docs/assets/img/loading.svg b/docs/assets/img/loading.svg
new file mode 100644
index 0000000..b0e53a3
--- /dev/null
+++ b/docs/assets/img/loading.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/mail.svg b/docs/assets/img/mail.svg
new file mode 100644
index 0000000..813b932
--- /dev/null
+++ b/docs/assets/img/mail.svg
@@ -0,0 +1,66 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/mic.svg b/docs/assets/img/mic.svg
new file mode 100644
index 0000000..3ac90f4
--- /dev/null
+++ b/docs/assets/img/mic.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/docs/assets/img/nodered.png b/docs/assets/img/nodered.png
new file mode 100644
index 0000000..4770acc
Binary files /dev/null and b/docs/assets/img/nodered.png differ
diff --git a/docs/assets/img/phone.svg b/docs/assets/img/phone.svg
new file mode 100644
index 0000000..972f413
--- /dev/null
+++ b/docs/assets/img/phone.svg
@@ -0,0 +1,57 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/pin.svg b/docs/assets/img/pin.svg
new file mode 100644
index 0000000..6434163
--- /dev/null
+++ b/docs/assets/img/pin.svg
@@ -0,0 +1,66 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/img/play.svg b/docs/assets/img/play.svg
new file mode 100644
index 0000000..7e39c5d
--- /dev/null
+++ b/docs/assets/img/play.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/docs/assets/img/screenshot-conversation-manager.png b/docs/assets/img/screenshot-conversation-manager.png
new file mode 100644
index 0000000..0e3882c
Binary files /dev/null and b/docs/assets/img/screenshot-conversation-manager.png differ
diff --git a/docs/assets/img/screenshot-linto-ui.png b/docs/assets/img/screenshot-linto-ui.png
new file mode 100644
index 0000000..2a113db
Binary files /dev/null and b/docs/assets/img/screenshot-linto-ui.png differ
diff --git a/docs/assets/img/upload.svg b/docs/assets/img/upload.svg
new file mode 100644
index 0000000..1fb5537
--- /dev/null
+++ b/docs/assets/img/upload.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/assets/js/cognitive-apis-demo.js b/docs/assets/js/cognitive-apis-demo.js
new file mode 100644
index 0000000..06c59eb
--- /dev/null
+++ b/docs/assets/js/cognitive-apis-demo.js
@@ -0,0 +1,468 @@
+window.onload = async function() {
+ try {
+ let host = window.location.hostname;
+ let lintoWebToken = '';
+ if (host.indexOf('dev.linto.local') >= 0) {
+ lintoWebToken = 'wdyEXAlwSFY3WjvD';
+ }
+ if (host.indexOf('linto.ai') >= 0) {
+ lintoWebToken = 'j5hO82IOO9Ns64KZ';
+ }
+ // INIT LINTO AGENT
+ window.linto = await new Linto('https://gamma.linto.ai/overwatch/local/web/login', lintoWebToken);
+ let login = await window.linto.login()
+ if (login) {
+ window.linto.startAudioAcquisition(false, 'linto', 0.99)
+ window.linto.addEventListener("streaming_start", function() {})
+ window.linto.addEventListener("streaming_stop", function() {
+ let streamingBtn = document.getElementById('record-streaming')
+ if (streamingBtn.classList.contains('recording')) {
+ streamingBtn.classList.remove('recording')
+ }
+ })
+ window.linto.addEventListener("streaming_fail", function(e) {
+ window.linto.stopStreaming()
+ })
+ window.linto.addEventListener("streaming_chunk", function(event) {
+ handleStreamingChunk(event)
+ })
+ window.linto.addEventListener("action_feedback", function(event) {
+ //console.log('actions feedback', event)
+ updateTranscriptionState(event)
+ })
+ } else {
+ throw ('LinTO Agent: Error on login')
+ }
+ } catch (lintoError) {
+ // handle the error
+ console.error(lintoError)
+ }
+
+ window.streamingContent = ''
+ const handleStreamingChunk = function(event) {
+ let writingTarget = document.getElementById('record-streaming-transcript')
+ if (event.detail.behavior.streaming.partial && event.detail.behavior.streaming.partial !== 'stop') {
+ //console.log("Streaming chunk received : ", event.detail.behavior.streaming.partial)
+ if (event.detail.behavior.streaming.partial) {
+ writingTarget.innerHTML = window.streamingContent + (window.streamingContent.length > 0 ? '\n' : '') + event.detail.behavior.streaming.partial
+ }
+ }
+ if (event.detail.behavior.streaming.text) {
+ //console.log("Streaming utterance completed : ", event.detail.behavior.streaming.text)
+ if (event.detail.behavior.streaming.text === 'stop') {
+ window.linto.stopStreaming()
+ window.streamingContent = ''
+ } else {
+ window.streamingContent += (window.streamingContent.length > 0 ? '\n' : '') + event.detail.behavior.streaming.text
+ writingTarget.innerHTML = window.streamingContent
+ }
+ }
+ }
+
+ /* API TRANSCRIPTION FORM */
+ window.transcriptionResultId = ''
+ const toggleBtns = document.getElementsByClassName('toggle-input')
+ const speakersInput = document.getElementById('api-transcription-speakers')
+ const inputTypeMic = document.getElementById('api-setting-mic')
+ const inputTypeFile = document.getElementById('api-setting-file')
+ const recordBtn = document.getElementById('api-transcription-mic-btn')
+ const replayBtn = document.getElementById('api-transcription-play-btn')
+ const transcriptionBtn = document.getElementById('api-transcription-transcript-btn')
+ const updloadFile = document.getElementById('api-transcription-upload-field')
+ const languageInput = document.getElementById('api-transcription-language')
+ const punctuationBtn = document.getElementById('api-transcription-punctuation')
+ const diarizationBtn = document.getElementById('api-transcription-diarization')
+ const normalizationBtn = document.getElementById('api-transcription-normalization')
+ const fileInputLabelBtn = document.getElementById('api-transcription-file-btn')
+ const fileInput = document.getElementById('api-transcription-file')
+ const fileInputLabel = document.getElementById('api-transcription-file-label')
+
+ // Transcription API form: Input type (microphone / media file)
+ inputTypeMic.onchange = function() {
+ updateApiFormInputType()
+ }
+ inputTypeFile.onchange = function() {
+ updateApiFormInputType()
+ }
+
+ function updateApiFormInputType() {
+ if (inputTypeMic.checked) {
+ recordBtn.classList.remove('hidden')
+ replayBtn.classList.add('hidden')
+ transcriptionBtn.classList.add('hidden')
+ updloadFile.classList.add('hidden')
+ } else {
+ recordBtn.classList.add('hidden')
+ replayBtn.classList.add('hidden')
+ transcriptionBtn.classList.add('hidden')
+ updloadFile.classList.remove('hidden')
+ }
+ }
+
+ // Transcription API form: Toggle buttons
+ for (let btn of toggleBtns) {
+ btn.onclick = async function() {
+ btn.classList.contains('selected') ? btn.classList.remove('selected') : btn.classList.add('selected')
+ if (btn.getAttribute('id') === 'api-transcription-diarization') {
+ if (btn.classList.contains('selected')) {
+ speakersInput.removeAttribute('disabled')
+ } else {
+ speakersInput.setAttribute('disabled', 'disabled')
+ }
+ }
+
+ if (btn.getAttribute('id') === 'api-transcription-normalization') {
+ let transcriptionResTypeBtns = document.getElementsByClassName('transcription-result-btn')
+ for (let btnType of transcriptionResTypeBtns) {
+ if (btnType.classList.contains('active')) {
+ let btnId = btnType.getAttribute('id')
+ let type = ''
+ if (btnId === 'api-transcription-result-json') {
+ type = 'application/json'
+ } else if (btnId === 'api-transcription-result-text') {
+ type = 'text/plain'
+ } else if (btnId === 'api-transcription-result-srt') {
+ type = 'text/srt'
+ } else if (btnId === 'api-transcription-result-vtt') {
+ type = 'text/vtt'
+ }
+ await window.linto.triggerAction({
+ result_id: window.transcriptionResultId,
+ convert_numbers: btn.classList.contains('selected'),
+ accept: type
+ }, "transcriber", "stt")
+ }
+ }
+ }
+ }
+ }
+
+// Transcription API form: Record audio button
+ recordBtn.onclick = async function() {
+ if (!transcriptionBtn.classList.contains('transcribing')) {
+ hideTranscriptionResult()
+ hideTranscriptionSteps()
+ if (recordBtn.classList.contains('recording')) {
+ recordBtn.classList.remove('recording')
+ transcriptionBtn.classList.remove('hidden')
+ replayBtn.classList.remove('hidden')
+ window.linto.audio.recorder.punchOut()
+ replayBtn.onclick = function() {
+ window.linto.audio.recorder.play()
+ }
+ } else {
+ recordBtn.classList.add('recording')
+ window.linto.audio.recorder.cleanBuffer()
+ window.linto.audio.recorder.punchIn()
+ replayBtn.classList.add('hidden')
+ transcriptionBtn.classList.add('hidden')
+ }
+ }
+ }
+
+ // Transcription API form: Upload file handler
+ fileInput.onchange = function(e) {
+ handleFileUpload(e)
+ }
+
+ async function handleFileUpload(event) {
+ let input = event.srcElement
+ fileInputLabelBtn.classList.remove('error')
+ if (input.files.length > 0) {
+ let file = input.files[0]
+ let type = file.type
+ let limitSize = 10 * 1024 * 1024 // Limit upload size 15MB
+ transcriptionBtn.classList.remove('hidden')
+ fileInputLabel.innerHTML = file.name
+ if (file.size > limitSize) {
+ transcriptionBtn.classList.add('hidden')
+ fileInputLabel.innerHTML = "Fichier trop volumineux"
+ fileInputLabelBtn.classList.add('error')
+ } else {
+ if (type.indexOf('audio') >= 0 || type.indexOf('video') >= 0) {
+ // File ok
+ transcriptionBtn.classList.remove('hidden')
+ fileInputLabel.innerHTML = file.name
+ } else {
+ // File bad type
+ transcriptionBtn.classList.add('hidden')
+ fileInputLabel.innerHTML = "Fichier audio"
+ }
+ }
+ } else {
+ // File not found
+ transcriptionBtn.classList.add('hidden')
+ fileInputLabel.innerHTML = "Fichier audio"
+ }
+ }
+
+
+
+ // Transcription API form: Send form
+ transcriptionBtn.onclick = async function() {
+ if (!transcriptionBtn.classList.contains('transcribing')) {
+ hideTranscriptionResult()
+ hideTranscriptionSteps()
+ let payload = await getFormData()
+ setTranscriptionSteps(payload)
+ window.linto.triggerAction(payload, "transcriber", "stt")
+ transcriptionBtn.classList.add('transcribing')
+
+ let transcriptionSteps = document.getElementsByClassName('api-transcription-step')
+ for (let state of transcriptionSteps) {
+ state.classList.remove('done')
+ state.classList.add('pending')
+ }
+ }
+ }
+
+ function blobToBase64(blob) {
+ const reader = new FileReader()
+ reader.readAsDataURL(blob)
+ return new Promise(resolve => {
+ reader.onloadend = () => {
+ resolve(reader.result)
+ }
+ })
+ }
+
+ async function getFormData() {
+ let transcriptionConfig = {
+ transcribePerChannel: false,
+ enablePunctuation: false,
+ diarizationConfig: {
+ enableDiarization: false,
+ numberOfSpeaker: 0,
+ maxNumberOfSpeaker: 0
+ }
+ }
+
+ // Input Type
+ let inputType = ''
+ let audioUrl = ''
+ if (inputTypeMic.checked) {
+ inputType = 'microphone'
+ audioUrl = window.linto.audio.recorder.getFile()
+ } else if (inputTypeFile.checked) {
+ inputType = 'file'
+ audioUrl = URL.createObjectURL(fileInput.files[0])
+ }
+
+ // Audio
+ let blob = await fetch(audioUrl).then(r => r.blob())
+ let base64 = await blobToBase64(blob)
+
+ // Lang
+ let lang = languageInput.value
+
+ // punctuation
+ transcriptionConfig.enablePunctuation = punctuationBtn.classList.contains('selected')
+
+ //diariazation
+ transcriptionConfig.diarizationConfig.enableDiarization = diarizationBtn.classList.contains('selected')
+ transcriptionConfig.diarizationConfig.numberOfSpeaker = diarizationBtn.classList.contains('selected') ? parseInt(speakersInput.value) : 0
+ transcriptionConfig.diarizationConfig.maxNumberOfSpeaker = diarizationBtn.classList.contains('selected') ? parseInt(speakersInput.value) : 0
+
+ return {
+ accept: "application/json",
+ force_sync: false,
+ no_cache: "true",
+ transcriptionConfig,
+ audio: base64
+ }
+ }
+
+ // Transcription API form: Transcriptions steps
+ let hideTranscriptionSteps = () => {
+ let transcriptionSteps = document.getElementsByClassName('api-transcription-step')
+ for (let state of transcriptionSteps) {
+ state.classList.remove('done')
+ state.classList.remove('pending')
+ state.classList.remove('started')
+ state.classList.add('hidden')
+ }
+ }
+ let setTranscriptionSteps = (payload) => {
+ let diarizationEnabled = payload.transcriptionConfig.diarizationConfig.enableDiarization
+ let punctuationEnabled = payload.transcriptionConfig.enablePunctuation
+
+ let transcriptionSteps = document.getElementsByClassName('api-transcription-step')
+
+ for (let step of transcriptionSteps) {
+ if (step.getAttribute('data-step') === 'start' || step.getAttribute('data-step') === 'transcription' || (diarizationEnabled && step.getAttribute('data-step') === 'diarization') || (punctuationEnabled && step.getAttribute('data-step') === 'punctuation')) {
+ step.classList.remove('hidden')
+ }
+ }
+ }
+ let updateTranscriptionState = async(event) => {
+ const stateItems = document.getElementsByClassName('api-transcription-step')
+ const stateStart = document.getElementById('api-transcription-step-start')
+ const stateTranscription = document.getElementById('api-transcription-step-transcription')
+ const stateDiarization = document.getElementById('api-transcription-step-diarization')
+ const statePunctuation = document.getElementById('api-transcription-step-punctuation')
+ if (!!event.detail.behavior.state) {
+ let resp = event.detail.behavior
+ // file uploaded
+ if (resp.state === 'file_uploaded') {
+ stateStart.classList.remove('pending')
+ stateStart.classList.add('done')
+ }
+ if (!!resp.steps && resp.steps !== 'undefined') {
+ // Diarization
+ if (!!resp.steps.diarization && resp.steps.diarization.required) {
+ stateDiarization.classList.remove('done')
+ stateDiarization.classList.remove('pending')
+ stateDiarization.classList.remove('started')
+ stateDiarization.classList.add(resp.steps.diarization.status)
+ }
+ // Transcription
+ if (!!resp.steps.transcription && resp.steps.transcription.required) {
+ stateTranscription.classList.remove('done')
+ stateTranscription.classList.remove('pending')
+ stateTranscription.classList.remove('started')
+ stateTranscription.classList.add(resp.steps.transcription.status)
+ }
+ // Punctuation
+ if (!!resp.steps.punctuation && resp.steps.transcription.punctuation) {
+ statePunctuation.classList.remove('done')
+ statePunctuation.classList.remove('pending')
+ statePunctuation.classList.remove('started')
+ statePunctuation.classList.add(resp.steps.punctuation.status)
+ }
+ }
+
+ if (resp.state === 'done') {
+ for (let step of stateItems) {
+ step.classList.remove('pending')
+ step.classList.remove('started')
+ step.classList.add('done')
+ window.transcriptionResultId = resp.result_id
+ document.getElementById('api-transcription-transcript-btn').classList.remove('transcribing')
+ }
+ //showDownloadTranscriptionBtns()
+ await window.linto.triggerAction({
+ result_id: window.transcriptionResultId,
+ accept: 'application/json'
+ }, "transcriber", "stt")
+ }
+ if (resp.state === "result_received") {
+ showTranscriptionResult()
+ let resultContainer = document.getElementById('api-transcription-result')
+
+ if (typeof(resp.result) === 'object') {
+ resultContainer.innerHTML = `${JSON.stringify(resp.result, null, 2)} `
+ } else {
+ let formated = resp.result.replace(/\n/g, ' ')
+ resultContainer.innerHTML = formated
+ }
+
+ // Download link
+ const donwloadLink = document.getElementById('transcription-download')
+ donwloadLink.classList.remove('hidden')
+
+ let data = ''
+ let filename = ''
+
+ if (resp.type === 'application/json') {
+ filename = 'tanscription.json'
+ data = JSON.stringify(resp.result)
+ } else if (resp.type === 'text/plain') {
+ filename = 'tanscription.txt'
+ data = resp.result
+ } else if (resp.type === 'text/vtt') {
+ filename = 'tanscription.vtt'
+ data = resp.result
+ } else if (resp.type === 'text/srt') {
+ filename = 'tanscription.srt'
+ data = resp.result
+ }
+ let respFile = URL.createObjectURL(new Blob([data], { type: resp.type }))
+ donwloadLink.setAttribute('href', respFile)
+ donwloadLink.setAttribute('download', filename)
+ }
+ }
+ }
+
+ const apiResultJsonBtn = document.getElementById('api-transcription-result-json')
+ const apiResultTextBtn = document.getElementById('api-transcription-result-text')
+ const apiResultSrtBtn = document.getElementById('api-transcription-result-srt')
+ const apiResultVttBtn = document.getElementById('api-transcription-result-vtt')
+ const apiResultBtns = document.getElementsByClassName('transcription-result-btn')
+
+ let showTranscriptionResult = () => {
+ const transcriptionTypesBtns = document.getElementById('api-transcription-result-container')
+ transcriptionTypesBtns.classList.remove('hidden')
+ }
+ let hideTranscriptionResult = () => {
+ const transcriptionTypesBtns = document.getElementById('api-transcription-result-container')
+ transcriptionTypesBtns.classList.add('hidden')
+ resetApiResultBtns()
+ apiResultJsonBtn.classList.add('active')
+ }
+ let resetApiResultBtns = () => {
+ for (let btn of apiResultBtns) {
+ btn.classList.remove('active')
+ }
+ }
+ apiResultJsonBtn.onclick = async() => {
+ if (window.transcriptionResultId !== '') {
+ resetApiResultBtns()
+ apiResultJsonBtn.classList.add('active')
+ await window.linto.triggerAction({
+ result_id: window.transcriptionResultId,
+ convert_numbers: normalizationBtn.classList.contains('selected'),
+ accept: 'application/json'
+ }, "transcriber", "stt")
+ }
+ }
+ apiResultTextBtn.onclick = async() => {
+ if (window.transcriptionResultId !== '') {
+ resetApiResultBtns()
+ apiResultTextBtn.classList.add('active')
+ await window.linto.triggerAction({
+ result_id: window.transcriptionResultId,
+ convert_numbers: normalizationBtn.classList.contains('selected'),
+ accept: 'text/plain'
+ }, "transcriber", "stt")
+ }
+ }
+ apiResultSrtBtn.onclick = async() => {
+ if (window.transcriptionResultId !== '') {
+ resetApiResultBtns()
+ apiResultSrtBtn.classList.add('active')
+ await window.linto.triggerAction({
+ result_id: window.transcriptionResultId,
+ convert_numbers: normalizationBtn.classList.contains('selected'),
+ accept: 'text/srt'
+ }, "transcriber", "stt")
+ }
+ }
+ apiResultVttBtn.onclick = async() => {
+ if (window.transcriptionResultId !== '') {
+ resetApiResultBtns()
+ apiResultVttBtn.classList.add('active')
+ await window.linto.triggerAction({
+ result_id: window.transcriptionResultId,
+ convert_numbers: normalizationBtn.classList.contains('selected'),
+ accept: 'text/vtt'
+ }, "transcriber", "stt")
+ }
+ }
+
+ /* STREAMING API */
+
+ const micStreamingBtn = document.getElementById('record-streaming')
+ const streamingContent = document.getElementById('record-streaming-transcript')
+ micStreamingBtn.onclick = function(e) {
+ if (micStreamingBtn.classList.contains('recording')) {
+ micStreamingBtn.classList.remove('recording')
+ window.linto.stopStreaming()
+ window.streamingContent = ''
+ } else {
+ micStreamingBtn.classList.add('recording')
+ streamingContent.innerHTML = ''
+ window.linto.startStreaming(0)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/docs/assets/js/contact-en.js b/docs/assets/js/contact-en.js
new file mode 100644
index 0000000..0233e52
--- /dev/null
+++ b/docs/assets/js/contact-en.js
@@ -0,0 +1,186 @@
+$(document).ready(function(){
+ $('.submit-btn').on('click', function () {
+ handleForm()
+ })
+
+ function testName () {
+ const regex = /^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ\s\-\']+$/
+ const nameField = $('#contact-name')
+ const nameError = $('.error-field.username')
+ const name = nameField.val()
+ // clear errors
+ nameField.removeClass('error')
+ nameError.html('')
+ if (name.length === 0) {
+ nameError.html('This field is required')
+ nameField.addClass('error')
+ return false
+ } else if (!regex.test(name)) {
+ nameError.html('Please enter a valid name')
+ nameField.addClass('error')
+ return false
+ } else {
+ return true
+ }
+ }
+
+ function testEmail () {
+ const regex = /^[a-z]{1}[a-z0-9\-\.\_]*[a-z0-9]+[\@]+[a-z]{1}[a-z0-9\-\.]*[a-z0-9]+[\.]+[a-z]{2,4}$/
+ const emailField = $('#contact-email')
+ const emailError = $('.error-field.email')
+ const email = emailField.val()
+ // clear errors
+ emailField.removeClass('error')
+ emailError.html('')
+ if (email.length === 0) {
+ emailError.html('This field is required')
+ emailField.addClass('error')
+ return false
+ } else if (!regex.test(email)) {
+ emailError.html('Please enter a valid email address')
+ emailField.addClass('error')
+ return false
+ } else {
+ return true
+ }
+ }
+
+ function testPhone () {
+ const regex = /^\d{8,20}$/
+ const phoneField = $('#contact-phone')
+ const phoneError = $('.error-field.phone')
+ const phone = phoneField.val()
+ // clear errors
+ phoneField.removeClass('error')
+ phoneError.html('')
+
+ if (phone.length === 0) {
+ return true
+ } else {
+ if (!regex.test(phone)) {
+ phoneError.html('Please enter a valid phone number')
+ phoneField.addClass('error')
+ return false
+ } else {
+ return true
+ }
+ }
+ }
+
+ function testSociety () {
+ regex = /^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ\s\-\']+$/
+
+ const societyField = $('#contact-society')
+ const societyError = $('.error-field.society')
+ const society = societyField.val()
+ // clear errors
+ societyField.removeClass('error')
+ societyError.html('')
+
+ if (society.length === 0) {
+ return true
+ } else {
+ if (!regex.test(society)) {
+ societyError.html('Please enter a valid society name')
+ societyField.addClass('error')
+ return false
+ } else {
+ return true
+ }
+ }
+ }
+
+ function testMessage () {
+ const msgField = $('#contact-msg')
+ const msgError = $('.error-field.msg')
+ const msg = msgField.val()
+ // clear errors
+ msgField.removeClass('error')
+ msgError.html('')
+
+ if (msg.length === 0) {
+ msgError.html('This field is required')
+ msgField.addClass('error')
+ return false
+ } else if (msg.includes('<') || msg.includes('>') || msg.includes('script') || msg.includes('|')) {
+ msgError.html('The message contain invalid characters')
+ msgField.addClass('error')
+ return false
+ } else {
+ return true
+ }
+ }
+
+ function handleForm () {
+ let isValid = true
+
+ // Test User Name
+ let nameValid = testName()
+ let emailValid = testEmail()
+ let phoneValid = testPhone()
+ let societyValid = testSociety()
+ let msgValid = testMessage()
+
+ if(!nameValid || !emailValid || !phoneValid || !societyValid || !msgValid) {
+ isValid = false
+ return false
+ }
+ if (isValid){
+ sendForm()
+ }
+ }
+
+ function sendForm () {
+ $('.submit-btn').innerHTML = 'Sending...'
+ const payload = {
+ subject: 'Contact depuis linto.ai',
+ username: $('#contact-name').val(),
+ email: $('#contact-email').val(),
+ phone: $('#contact-phone').val(),
+ society: $('#contact-society').val(),
+ message: $('#contact-msg').val()
+ }
+ axios.post('https://dl.linto.ai/mail/send', {
+ method: 'post',
+ data: payload
+ })
+ .then(function (response) {
+ $('.submit-btn').innerHTML = 'Send'
+ $('.send-notif').removeClass('hidden').addClass('visible').addClass(response.data.status)
+ $('.notif-msg').html(response.data.msg)
+ setTimeout(function () {
+ $('.send-notif').removeClass('visible').addClass('hidden')
+ }, 3000)
+ if(response.data.status === 'success') {
+ // Success
+ $('#contact-msg').val('')
+ } else {
+ throw response.data
+ }
+ })
+ .catch(function (error) {
+ // Error
+ $('.send-notif').removeClass('hidden').addClass('visible').addClass(error.status)
+ $('.notif-msg').html(error.msg)
+ setTimeout(function () {
+ $('.send-notif').removeClass('visible').addClass('hidden')
+ }, 3000)
+ });
+ }
+
+ document.getElementById('contact-name').onblur = function () {
+ testName()
+ }
+ document.getElementById('contact-email').onblur = function () {
+ testEmail()
+ }
+ document.getElementById('contact-phone').onblur = function () {
+ testPhone()
+ }
+ document.getElementById('contact-society').onblur = function () {
+ testSociety()
+ }
+ document.getElementById('contact-msg').onblur = function () {
+ testMessage()
+ }
+})
diff --git a/docs/assets/js/contact.js b/docs/assets/js/contact.js
new file mode 100644
index 0000000..27f3a42
--- /dev/null
+++ b/docs/assets/js/contact.js
@@ -0,0 +1,163 @@
+$(document).ready(function(){
+ // Submit contact form
+ $('#contact-form-send').on('click', function () {
+ handleForm()
+ })
+
+ function testName () {
+ const regex = /^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ\s\-\'\.]+$/
+ const nameField = $('#contact-name')
+ const nameError = $('#contact-name-error')
+ const name = nameField.val()
+ // clear errors
+ nameField.removeClass('error')
+ nameError.html('')
+ if (name.length === 0) {
+ nameError.html('Champs requis')
+ nameField.addClass('error')
+ return false
+ } else if (!regex.test(name)) {
+ nameError.html('Veuillez saisir un nom valide')
+ nameField.addClass('error')
+ return false
+ } else {
+ return true
+ }
+ }
+
+ function testEmail () {
+ const regex = /^[a-z]{1}[a-z0-9\-\.\_]*[a-z0-9]+[\@]+[a-z]{1}[a-z0-9\-\.]*[a-z0-9]+[\.]+[a-z]{2,5}$/
+ const emailField = $('#contact-email')
+ const emailError = $('#contact-email-error')
+ const email = emailField.val()
+ // clear errors
+ emailField.removeClass('error')
+ emailError.html('')
+ if (email.length === 0) {
+ emailError.html('Champs requis')
+ emailField.addClass('error')
+ return false
+ } else if (!regex.test(email)) {
+ emailError.html('Veuillez saisir une adresse email valide')
+ emailField.addClass('error')
+ return false
+ } else {
+ return true
+ }
+ }
+
+ function testPhone () {
+ const regex = /^\d{8,20}$/
+ const phoneField = $('#contact-phone')
+ const phoneError = $('#contact-phone-error')
+ const phone = phoneField.val()
+ // clear errors
+ phoneField.removeClass('error')
+ phoneError.html('')
+
+ if (phone.length === 0) {
+ return true
+ } else {
+ if (!regex.test(phone)) {
+ phoneError.html('Veuillez saisir un numéro de téléphone valide')
+ phoneField.addClass('error')
+ return false
+ } else {
+ return true
+ }
+ }
+ }
+
+
+
+ function testMessage () {
+ const msgField = $('#contact-msg')
+ const msgError = $('#contact-msg-error')
+ const msg = msgField.val()
+ // clear errors
+ msgField.removeClass('error')
+ msgError.html('')
+
+ if (msg.length === 0) {
+ msgError.html('Champs requis')
+ msgField.addClass('error')
+ return false
+ } else if (msg.includes('<') || msg.includes('>') || msg.includes('script') || msg.includes('|')) {
+ msgError.html('Le message contient des caractères non autorisés')
+ msgField.addClass('error')
+ return false
+ } else {
+ return true
+ }
+ }
+
+ function handleForm () {
+ let isValid = true
+
+ // Test User Name
+ let nameValid = testName()
+ let emailValid = testEmail()
+ let phoneValid = testPhone()
+ let msgValid = testMessage()
+
+ if(!nameValid || !emailValid || !phoneValid || !msgValid ) {
+ isValid = false
+ return false
+ }
+ if (isValid){
+ sendForm()
+ }
+ }
+
+ function sendForm () {
+ $('#contact-form-send').innerHTML = 'Envoi en cours...'
+ const payload = {
+ subject: 'Contact depuis linto.ai',
+ username: $('#contact-name').val(),
+ email: $('#contact-email').val(),
+ phone: $('#contact-phone').val(),
+ society: $('#contact-society').val(),
+ message: $('#contact-msg').val()
+ }
+
+ // Request
+ axios.post('https://dl.linto.ai/mail/send', {
+ method: 'post',
+ data: payload
+ })
+ .then(function (response) {
+ $('.submit-btn').innerHTML = 'Envoyer'
+ if(response.data.status === 'success') {
+ // Success
+ $('#contact-success').removeClass('hidden')
+ setTimeout(function () {
+ $('#contact-success').addClass('hidden')
+ }, 5000)
+ $('#contact-msg').val('')
+ } else {
+ throw response.data
+ }
+ })
+ .catch(function (error) {
+ // Error
+ console.error(error)
+ $('#contact-error').removeClass('hidden')
+ });
+ }
+
+ $('#contact-name').on('blur', function () {
+ testName()
+ })
+ $('#contact-email').on('blur',function () {
+ testEmail()
+ })
+ $('#contact-phone').on('blur', function () {
+ testPhone()
+ })
+ $('#contact-subject').on('blur',function () {
+ testSubject()
+ })
+ $('#contact-msg').on('blur',function () {
+ testMessage()
+ })
+})
\ No newline at end of file
diff --git a/docs/assets/js/homepage.js b/docs/assets/js/homepage.js
new file mode 100644
index 0000000..804fe82
--- /dev/null
+++ b/docs/assets/js/homepage.js
@@ -0,0 +1,64 @@
+let homepageLinks = document.getElementsByClassName('homepage-link')
+
+// Homepage links click events
+for(let link of homepageLinks) {
+ link.addEventListener('click', (e) => {
+ if(!link.classList.contains('active')) {
+ resetHomepageLinks()
+ link.classList.add('active')
+ let target = link.getAttribute('data-anim')
+ setAnimation(target)
+ }
+ else {
+ link.classList.remove('active')
+ resetAnimClasses()
+ setAnimation('default')
+ }
+ })
+}
+
+function resetHomepageLinks(){
+ let homepageLinks = document.getElementsByClassName('homepage-link')
+ for(let link of homepageLinks) {
+ if(link.classList.contains('active')) link.classList.remove('active')
+ }
+}
+
+function setAnimation(target) {
+ resetAnimClasses()
+ let animContainer = document.getElementById('homepage-animation-mask')
+ animContainer.innerHTML = ''
+
+ switch(target) {
+ case "coginitve-apis":
+ animContainer.innerHTML = ` `
+ break
+ case "linto-agent":
+ animContainer.classList.add('linto-agent')
+ break
+ case "smart-meeting":
+ animContainer.classList.add('smart-meeting')
+ animContainer.classList.add('bordered')
+ case "default":
+ animContainer.classList.add('default')
+ break
+ }
+ animContainer.classList.remove('fading-out')
+ animContainer.classList.add('fading-in')
+ setTimeout(()=>{
+ animContainer.classList.remove('fading-in')
+ }, 700)
+
+
+}
+
+
+function resetAnimClasses() {
+ let animContainer = document.getElementById('homepage-animation-mask')
+ animContainer.classList.remove('default')
+ animContainer.classList.remove('bordered')
+ animContainer.classList.remove('linto-agent')
+ animContainer.classList.remove('smart-meeting')
+ animContainer.classList.remove('fading-in')
+ animContainer.classList.add('fading-out')
+}
\ No newline at end of file
diff --git a/docs/assets/js/jquery-3.1.1.min.js b/docs/assets/js/jquery-3.1.1.min.js
new file mode 100644
index 0000000..4c5be4c
--- /dev/null
+++ b/docs/assets/js/jquery-3.1.1.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v3.1.1 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML=" ",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML=" ";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML=" ","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML=" ",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):C.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/[^\x20\t\r\n\f]+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),
+a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,ka=/^$|\/(?:java|ecma)script/i,la={option:[1,""," "],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};la.optgroup=la.option,la.tbody=la.tfoot=la.colgroup=la.caption=la.thead,la.th=la.td;function ma(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function na(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=ma(l.appendChild(f),"script"),j&&na(g),c){k=0;while(f=g[k++])ka.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var qa=d.documentElement,ra=/^key/,sa=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ta=/^([^.]*)(?:\.(.+)|)/;function ua(){return!0}function va(){return!1}function wa(){try{return d.activeElement}catch(a){}}function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)xa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=va;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(qa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,za=/
+
+
+ Contactez-nous
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Nous contacter
+
Appelez-nous ou écrivez-nous quelque soit votre sujet, nous vous répondrons le plus rapidement possible.
+ Nous sommes joignable tous les jours ouvrés de 9h à 18h
+
+
+
+ Prénom Nom *
+
+
+
+
+ Email *
+
+
+
+
+ Téléphone
+
+
+
+
+ Société
+
+
+
+
+ Message *
+
+
+
+
+ Envoyer
+
+
+ Votre message à bien été envoyé et sera traité dans les meilleurs délais.
+
+
+
+
+
+
+
+ Téléphone: +33 (0)1 46 96 63 63
+
+
+
+ Addresse : 32 rue Pierre-Paul Riquet, 31300, Toulouse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+