diff --git a/library/Class/Template/Loader.php b/library/Class/Template/Loader.php
index 2f98ef23d2f05f2d68dcf66bc7160005bf86de7c..2dc58834205b74203143429d5782c93ecac41dc9 100644
--- a/library/Class/Template/Loader.php
+++ b/library/Class/Template/Loader.php
@@ -27,9 +27,10 @@ class Class_Template_Loader {
   public function getTemplates() {
     return [new Historic_Template,
             new Intonation_Template,
+            new Muscle_Template,
             new MyBibApp_Template,
+            new Polygone_Template,
             new TerreDuMilieu_Template,
-            new Muscle_Template
     ];
   }
 
diff --git a/library/templates/Intonation/Library/View/Wrapper/Record.php b/library/templates/Intonation/Library/View/Wrapper/Record.php
index fbae409139cbd432e43b2e3758a740cd5a236050..107bdf2ffd285327d50ad44c09532170ad238c9a 100644
--- a/library/templates/Intonation/Library/View/Wrapper/Record.php
+++ b/library/templates/Intonation/Library/View/Wrapper/Record.php
@@ -204,6 +204,19 @@ class Intonation_Library_View_Wrapper_Record extends Intonation_Library_View_Wra
                     ->setTitle($facet->getTitle())
                     ->setUrl($facet->getUrlForLink()));
 
+    if ( $this->_model->hasTome()) {
+      $serie = $this->_model->getClefChapeau() . '-' . $this->_model->getTypeDoc();
+
+      $label = Class_Codification::getLibelleForSerie($this->_model);
+      $badges [] = (new Intonation_Library_Badge)
+        ->setTag('a')
+        ->setUrl($this->_view->url((new Class_CriteresRecherche)->getNewUrlCriteresSerie($serie), null, true))
+        ->setClass('white')
+        ->setText($label)
+        ->setTitle($this->_view->_('Lancer une recherche pour %s', lcfirst($label)));
+    }
+
+
     return $this->_view->renderBadges($badges);
   }
 
diff --git a/library/templates/Intonation/View/TagAction.php b/library/templates/Intonation/View/TagAction.php
index 08e92e01172ce99543deacd2a1d404718c7af518..3417b0a48af57b98bd19523b2e0e47457833f67a 100644
--- a/library/templates/Intonation/View/TagAction.php
+++ b/library/templates/Intonation/View/TagAction.php
@@ -81,10 +81,10 @@ class Intonation_View_TagAction extends ZendAfi_View_Helper_BaseHelper {
       return '';
 
     if ($action->getNoButtonText())
-      return $this->_tag('div', $text, ['class' => ' d-inline text-left']);
+      return $this->_tag('div', $text, ['class' => 'd-inline text-left']);
 
     if (!$img)
-      return $this->_tag('div', $text, ['class' => ' d-inline button_text text-left']);
+      return $this->_tag('div', $text, ['class' => 'd-inline button_text text-left']);
 
     return $this->_tag('div', $text, ['class' => 'd-none d-md-inline text-left button_text']);
   }
diff --git a/library/templates/Muscle/Library/ProfilePatcher.php b/library/templates/Muscle/Library/ProfilePatcher.php
index a69f7ee121c0502fadc920fdc8429432f5023f30..8f5b2d0b4f25d7be47e39fcb2e0efee3911c76f7 100644
--- a/library/templates/Muscle/Library/ProfilePatcher.php
+++ b/library/templates/Muscle/Library/ProfilePatcher.php
@@ -126,7 +126,6 @@ class Muscle_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher {
                  'menus' => [
                              ['type_menu' => 'URL',
                               'libelle' => $this->_('Comment accéder à mon compte'),
-                              'use_profil' => $this->_help_menu,
                               'picto' => 'class fas fa-id-card',
                               'url' => ''],
 
diff --git a/library/templates/Polygone/Assets/css/polygone.css b/library/templates/Polygone/Assets/css/polygone.css
new file mode 100644
index 0000000000000000000000000000000000000000..3d61fb45feb2d152f5a42a65f8dc334e8881be07
--- /dev/null
+++ b/library/templates/Polygone/Assets/css/polygone.css
@@ -0,0 +1,450 @@
+@import url('https://fonts.googleapis.com/css?family=Titillium+Web:300,400,700,900|Ubuntu+Condensed|Ubuntu:300,400,500,700&display=swap');
+
+:root {
+}
+
+body {
+    font-family: 'Ubuntu';
+    font-size: 16px;
+    background: white;
+    color: #010202;
+    font-weight: 300;
+}
+
+#site_web_wrapper {
+    background-image: url('../images/body.png');
+    background-repeat: repeat-y;
+    background-position: top right;
+    background-color: transparent;
+}
+
+.ui-widget *:not(i) {
+    font-family: 'Roboto';
+    font-size: 16px;
+}
+
+.widget.login .dropdown-toggle,
+.nav nav .nav-link,
+.widget-header,
+h1,
+h2,
+h3 {
+    font-size: 2em;
+    font-weight: bold;
+}
+
+header {
+    background: url(../images/banner.png);
+    background-position: top right;
+    background-repeat: no-repeat;
+    background-size: contain;
+    background-color: #ededed;
+}
+
+.widget.justify-content-end * {
+    justify-content: flex-end;
+    text-align: right;
+}
+
+.widget.justify-content-start * {
+    justify-content: flex-start;
+    text-align: left;
+}
+
+.widget.justify-content-center * {
+    justify-content: center;
+}
+
+.login .dropdown {
+    display: flex;
+}
+
+.menu_buttons .button_text {
+    display: none !important;
+}
+
+.menu_buttons .nav-link,
+.menu_buttons .nav-link:hover {
+
+}
+
+.login .dropdown-toggle,
+.login .dropdown-menu {
+}
+
+.ui-state-active,
+.btn:active,
+a:active,
+.btn:focus,
+a:focus,
+.btn:hover,
+a:hover {
+    opacity: 0.8;
+    text-decoration: underline;
+}
+
+.btn-sm,
+col-form-label-sm,
+.form-control-sm {
+    font-size: 1em;
+}
+
+.rech_simple.widget form div {
+    padding: 0;
+    margin: 0;
+}
+
+.rech_simple.widget input,
+.rech_simple.widget button {
+    line-height: 1em;
+    vertical-align: middle;
+    margin: 0;
+    padding: 5px;
+    height: 40px;
+    min-width: 50px;
+    font-size: 1.5em;
+}
+
+.rech_simple .dropdown-menu {
+    left: -33% !important;
+}
+
+.rech_simple.widget button[type='submit'] {
+}
+
+.rech_simple.widget ::placeholder {
+}
+
+.widget.card,
+.widget-header,
+.breadcrumb,
+nav {
+}
+
+.nav nav .nav-link {
+    font-size: 1.8em;
+    border-right: 1px solid var(--polygone-black) !important;
+    line-height: 0.8em;
+}
+
+nav .nav-item:last-child .nav-link {
+    border-right: 0px !important;
+}
+
+.widget.nav {
+    margin-top: 4em;
+}
+
+.widget.nav .navbar-toggler {
+    margin-top: -4em;
+}
+
+#site_web_wrapper {
+    box-shadow: var(--polygone-grey) 0px 0px 5px;
+}
+
+body,
+#site_web_wrapper {
+}
+
+footer {
+    font-size: 0.875em;
+}
+
+footer .nav-link {
+    border-right: 1px solid var(--polygone-red) !important;
+    line-height: 0.8em;
+    text-align: center;
+}
+
+.nav-item:last-child .nav-link {
+    border-right-width: 0 !important;
+}
+
+.ui-autocomplete,
+.ui-autocomplete *,
+.ui-autocomplete *:hover {
+    border: none !important;
+}
+
+.widget.login {
+    padding: 0;
+}
+
+.widget.login * {
+}
+
+.widget.login input {
+}
+
+.widget.login form * {
+    text-align: left;
+}
+
+.widget.login .text-secondary {
+}
+
+.widget.login .dropdown-toggle,
+.widget.login .dropdown-toggle:after {
+    font-size: 20px;
+    margin-right: 0;
+    color: white;
+    background: #223a7e;
+}
+
+.widget.login .dropdown-toggle {
+    padding-right: 1em;
+}
+
+.widget.login .dropdown-menu {
+    position: absolute;
+    right: 0;
+    left: auto;
+}
+
+header .card-body {
+    padding: 0;
+}
+
+.widget.login a {
+
+}
+
+.widget.login #login {
+    position: absolute;
+    bottom: 4em;
+    left: 0.875em;
+}
+
+.widget.login a {
+    font-weight: bold;
+}
+
+.widget.login a[href*="/auth/lostpass"] {
+    display: block;
+    margin-top: 4em;
+}
+
+.widget.login form {
+    max-width: 200px;
+}
+
+.widget-footer a.btn-secondary {
+}
+
+.widget-footer {
+    text-align: right;
+}
+
+.badge-group .badge {
+}
+
+.badge-group a.badge {
+}
+
+a,
+a:hover {
+}
+
+a.text-primary,
+a.text-primary:hover {
+}
+
+.carousel-item .card-footer {
+    margin: 0 1rem;
+}
+
+.widget > .card-footer,
+.card-footer {
+}
+
+.masonry-content > .card > .card-footer {
+    padding: 5px;
+}
+
+.list-group-item.active,
+.nav-tabs,
+.border-primary {
+}
+
+.nav-tabs .nav-item {
+    border-bottom: 1px solid transparent;
+}
+
+.card-footer {
+    border-top: none;
+}
+
+.no_badges .badge-group,
+.no_badget .badge {
+    display: none;
+}
+
+.no_card_footer .card-footer {
+    display: none !important;
+}
+
+.polygone_widget {
+    background-image: url('../images/widget_bg.png');
+    background-repeat: no-repeat;
+    background-position: top left;
+    background-color: transparent;
+}
+
+.widget > .card-footer, .card-footer {
+    background: none;
+}
+
+footer {
+    background-image: url('../images/footer_corner.png');
+    background-repeat: no-repeat;
+    background-position: bottom right;
+    background-color: #31ade4;
+}
+
+.card-header {
+    background: transparent;
+}
+
+.polygone_big_menu_buttons .nav-item {
+    width: 33.33%;
+}
+
+.polygone_big_menu_buttons .nav-link {
+    position: relative;
+    padding: 0 !important;
+}
+
+.polygone_big_menu_buttons .nav-item + .nav-item .nav-link {
+    margin-left: 10px;
+}
+
+.polygone_big_menu_buttons .nav-link div {
+    display: block !important;
+    background: var(--widget-shadow);
+    padding: 1em 0em;
+    text-align: center !important;
+    color: white;
+    font-weight: bold;
+    text-transform: uppercase;
+    position: absolute;
+    width: 100%;
+    bottom: 0;
+    left: 0;
+}
+
+.polygone_big_menu_buttons .navbar {
+    padding: 0;
+}
+
+.polygone_big_menu_buttons .nav-link img {
+    width: 100%;
+    height: auto;
+}
+
+a,
+a:hover,
+a:focus,
+a:visited {
+    color: #223a7e;
+}
+
+[class*="-primary"],
+[class*="-primary"]:hover,
+[class*="-primary"]:focus,
+[class*="-primary"]:visited,
+[class*="-secondary"],
+[class*="-secondary"]:hover,
+[class*="-secondary"]:focus,
+[class*="-secondary"]:visited,
+[class*="-info"],
+[class*="-info"]:hover,
+[class*="-info"]:focus,
+[class*="-info"]:visited{
+    color: #223a7e !important;
+    background-color: transparent !important;
+}
+
+.scroll_search {
+    position: fixed;
+    top: 0;
+    right: 0;
+    left: 0;
+    margin: auto;
+    background: #1884c7;
+    color: #fff;
+    display: none;
+    z-index: 3;
+    text-align: center;
+    opacity: 0.9;
+}
+
+.scroll_search .dropdown-menu {
+    background: #1884c7;
+}
+
+.scroll_search * {
+    background-color: transparent;
+}
+
+.scroll_search .expressionRecherche {
+    background: white;
+}
+
+.scroll_search form {
+    width: 40%;
+    display: inline-block;
+}
+
+.navbar {
+    padding: 0;
+}
+
+.flying_widget .navbar-collapse.collapsing,
+.flying_widget .navbar-collapse.collapse,
+.flying_widget a {
+    background-color: #1884c7;
+    text-transform: uppercase;
+}
+
+
+.flying_widget .navbar-collapse.collapsing,
+.flying_widget .navbar-collapse.collapse {
+    padding: 2em 0.5em;
+    height: 30000px;
+    overflow:visible;
+}
+
+
+.flying_widget .navbar-collapse {
+    height: 30000px;
+    background-color: #1884c7;
+}
+
+.flying_widget .navbar.navbar-collapse {
+    display: block;
+    padding: 0;
+}
+
+.flying_widget .navbar-brand {
+    display: inline-block;
+}
+
+.flying_widget .navbar-header {
+    padding: 1em;
+    padding-top: 150px;
+}
+
+.flying_widget * {
+    transition-delay: unset;
+    transition-duration: unset;
+}
+
+.flying_widget {
+    display: block;
+    min-width: 8.33%;
+}
+
+.z-index-11 {
+    z-index: 11;
+}
\ No newline at end of file
diff --git a/library/templates/Polygone/Assets/images/banner.png b/library/templates/Polygone/Assets/images/banner.png
new file mode 100644
index 0000000000000000000000000000000000000000..9e88125a057e34099e7f3ab90f75ce054697e029
Binary files /dev/null and b/library/templates/Polygone/Assets/images/banner.png differ
diff --git a/library/templates/Polygone/Assets/images/body.png b/library/templates/Polygone/Assets/images/body.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf130aa2f56d3670aac9b548c7766b646d86c186
Binary files /dev/null and b/library/templates/Polygone/Assets/images/body.png differ
diff --git a/library/templates/Polygone/Assets/images/footer_corner.png b/library/templates/Polygone/Assets/images/footer_corner.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc30c66f5b2316ebe4cad8a5d3e99696b592c76d
Binary files /dev/null and b/library/templates/Polygone/Assets/images/footer_corner.png differ
diff --git a/library/templates/Polygone/Assets/images/logo.png b/library/templates/Polygone/Assets/images/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..b88661c6d77bb775c85abb75b8dcbaa9f198f4ee
Binary files /dev/null and b/library/templates/Polygone/Assets/images/logo.png differ
diff --git a/library/templates/Polygone/Assets/images/logo_footer.png b/library/templates/Polygone/Assets/images/logo_footer.png
new file mode 100644
index 0000000000000000000000000000000000000000..8c9e99be0341955a209cd0585c35613a4b0177c6
Binary files /dev/null and b/library/templates/Polygone/Assets/images/logo_footer.png differ
diff --git a/library/templates/Polygone/Assets/images/s_exercer.jpg b/library/templates/Polygone/Assets/images/s_exercer.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..498e1ac1a5c750b2243b5a5cffe580e577702a30
Binary files /dev/null and b/library/templates/Polygone/Assets/images/s_exercer.jpg differ
diff --git a/library/templates/Polygone/Assets/images/se_divertir.jpg b/library/templates/Polygone/Assets/images/se_divertir.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..dc8837111bf0fc366c609623d5a00ea24a20d677
Binary files /dev/null and b/library/templates/Polygone/Assets/images/se_divertir.jpg differ
diff --git a/library/templates/Polygone/Assets/images/se_documenter.jpg b/library/templates/Polygone/Assets/images/se_documenter.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..beb4a0ddca6c1f4cc8ecf1849d9deafb0d3888b1
Binary files /dev/null and b/library/templates/Polygone/Assets/images/se_documenter.jpg differ
diff --git a/library/templates/Polygone/Assets/images/widget_bg.png b/library/templates/Polygone/Assets/images/widget_bg.png
new file mode 100644
index 0000000000000000000000000000000000000000..dde54a152ad1ea1f1f03287c5aa4eaa37fd08ea6
Binary files /dev/null and b/library/templates/Polygone/Assets/images/widget_bg.png differ
diff --git a/library/templates/Polygone/Assets/js/scroll_search.js b/library/templates/Polygone/Assets/js/scroll_search.js
new file mode 100644
index 0000000000000000000000000000000000000000..648afb2dc90d8c73d7780fb5e4409ba4cb1d9c86
--- /dev/null
+++ b/library/templates/Polygone/Assets/js/scroll_search.js
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) 2018, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+(function ( $ ) {
+  $.fn.scroll_search = function () {
+    var search_widget = $(this);
+
+    var visible = function(element) {
+      var rect = element.getBoundingClientRect(),
+    	  top = rect.top,
+    	  height = rect.height;
+
+      return top + height > 0;
+    };
+
+    var update = function() {
+      return visible($('.rech_simple.main_title')[0])
+        ? search_widget.hide()
+    	: search_widget.show();
+    }
+
+    $(window).on('scroll', update);
+    
+    update();
+  }
+} (jQuery));
diff --git a/library/templates/Polygone/Library/FormCustomizer.php b/library/templates/Polygone/Library/FormCustomizer.php
new file mode 100644
index 0000000000000000000000000000000000000000..3cf0b30114c13673e2b7f001adf8ec9994feb1de
--- /dev/null
+++ b/library/templates/Polygone/Library/FormCustomizer.php
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Polygone_Library_FormCustomizer extends Intonation_Library_FormCustomizer {
+  public function getTemplateForm($form) {
+    return (new Polygone_Library_FormCustomizer_Template($this->_template, $form))->getForm();
+  }
+}
diff --git a/library/templates/Polygone/Library/FormCustomizer/Template.php b/library/templates/Polygone/Library/FormCustomizer/Template.php
new file mode 100644
index 0000000000000000000000000000000000000000..dc004fffc77e9c29abff24bd1e13da2dd74e45f2
--- /dev/null
+++ b/library/templates/Polygone/Library/FormCustomizer/Template.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Polygone_Library_FormCustomizer_Template extends Intonation_Library_FormCustomizer_Template {
+  public function getForm() {
+    parent::getForm();
+
+    $this->_form
+      ->addElement('checkbox',
+                   $this->_template->withNameSpace('polygone_css'),
+                   ['label' => $this->_('polygone.css'),
+                    'order' => 3]);
+
+    $this->_addToTemplateGroup(['polygone_css']);
+
+    return $this;
+  }
+}
diff --git a/library/templates/Polygone/Library/ProfilePatcher.php b/library/templates/Polygone/Library/ProfilePatcher.php
new file mode 100644
index 0000000000000000000000000000000000000000..901c3b017b8c0301a737e1eb36977d9ada9b1135
--- /dev/null
+++ b/library/templates/Polygone/Library/ProfilePatcher.php
@@ -0,0 +1,523 @@
+<?php
+/**
+ * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Polygone_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher {
+
+  protected
+    $_main_menu,
+    $_widget_menu,
+    $_help_menu,
+    $_social_network_top_menu,
+    $_credits_menu,
+    $_legal_mentions,
+    $_flying_menu,
+    $_themes_menu;
+
+
+  protected function _upgradeProfile() {
+    parent::_upgradeProfile();
+
+    $this->_profile
+      ->setAccessLevel(-1)
+      ->setLibelle($this->_('Accueil Polygone'));
+
+    Class_AdminVar::set('MENU_BOITE', 1);
+
+    return $this;
+  }
+
+
+  protected function _upgradeSections() {
+    $section_header = ((new Class_Systeme_Widget_Section_Header)
+                       ->setProfileId($this->_profile_id)
+                       ->load());
+
+    $section_header
+      ->setNewDatas(['boite' => ['no_border_radius'],
+                     $this->_template->withNameSpace('width_xsmall') => 11,
+                     $this->_template->withNameSpace('width_large') => 8,
+                     $this->_template->withNameSpace('width_xlarge') => 6,
+                     $this->_template->withNameSpace('offset_xsmall') => 1,
+                     $this->_template->withNameSpace('offset_large') => 2,
+                     $this->_template->withNameSpace('offset_xlarge') => 3])
+      ->updateProfile();
+
+    Class_Profil::clearCache();
+
+    $section_main = ((new Class_Systeme_Widget_Section_Main)
+                     ->setProfileId($this->_profile_id)
+                     ->load());
+
+    $section_main
+      ->setNewDatas(['boite' => ['no_border_radius'],
+                     $this->_template->withNameSpace('width_xsmall') => 11,
+                     $this->_template->withNameSpace('width_large') => 8,
+                     $this->_template->withNameSpace('width_xlarge') => 6,
+                     $this->_template->withNameSpace('offset_xsmall') => 1,
+                     $this->_template->withNameSpace('offset_large') => 2,
+                     $this->_template->withNameSpace('offset_xlarge') => 3])
+      ->updateProfile();
+
+    Class_Profil::clearCache();
+
+    $section_footer = ((new Class_Systeme_Widget_Section_Footer)
+                       ->setProfileId($this->_profile_id)
+                       ->load());
+
+    $section_footer
+      ->setNewDatas(['boite' => ['no_border_radius'],
+                     $this->_template->withNameSpace('width_xsmall') => 11,
+                     $this->_template->withNameSpace('width_large') => 8,
+                     $this->_template->withNameSpace('width_xlarge') => 6,
+                     $this->_template->withNameSpace('offset_xsmall') => 1,
+                     $this->_template->withNameSpace('offset_large') => 2,
+                     $this->_template->withNameSpace('offset_xlarge') => 3])
+      ->updateProfile();
+
+    Class_Profil::clearCache();
+
+    $this->_profile = Class_Profil::find($this->_profile_id);
+
+    return $this;
+  }
+
+
+  protected function _upgradeMenus() {
+    $this->_main_menu = $this->_profile
+      ->addMenu(['libelle' => $this->_('Menu principal'),
+                 'picto' => '',
+                 'menus' => [
+                             ['type_menu' => 'ACCUEIL',
+                              'picto' => 'class fas fa-home',
+                              'libelle' => $this->_('Accueil'),
+                              'use_profil' => $this->_profile_id]
+                 ]
+                 ]);
+
+    $this->_help_menu = $this->_profile
+      ->addMenu(['libelle' => $this->_('Menu aide'),
+                 'picto' => '',
+                 'menus' => [
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Comment accéder à mon compte'),
+                              'picto' => 'class fas fa-user-circle',
+                              'url' => ''],
+
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Comprendre l\'accessibilité du portail'),
+                              'picto' => 'class fab fa-accessible-icon',
+                              'url' => ''],
+
+                             ['type_menu' => 'URL',
+                              'picto' => 'class fas fa-question-circle',
+                              'libelle' => $this->_('Besoin d\'aide ?'),
+                              'url' => ''],
+                 ]
+                 ]);
+
+    $this->_social_network_top_menu = $this->_profile
+      ->addMenu(['libelle' => $this->_('Menu réseaux sociaux haut de page'),
+                 'picto' => '',
+                 'menus' => [
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Facebook'),
+                              'url' => '',
+                              'picto' => 'class fab fa-facebook-f'],
+
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Youtube'),
+                              'url' => '',
+                              'picto' => 'class fab fa-youtube'],
+
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Twitter'),
+                              'url' => '',
+                              'picto' => 'class fab fa-twitter'],
+
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Instagram'),
+                              'url' => '',
+                              'picto' => 'class fab fa-instagram'],
+
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('SoundCloud'),
+                              'url' => '',
+                              'picto' => 'class fab fa-soundcloud'],
+
+                 ]
+                 ]);
+
+    $this->_widget_menu = $this->_profile
+      ->addMenu(['libelle' => $this->_('Menu boites'),
+                 'picto' => '',
+                 'menus' => [['type_menu' => 'MODULE_ACCUEIL_LIBRARY',
+                              'type_module' => 'LIBRARY',
+                              'libelle' => $this->_('Boites'),
+                              'preferences' => ['titre' => $this->_('Accès'),
+                                                'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-end', 'd-inline-block', 'no_badges', 'no_card_footer'],
+                                                'rendering' => 'card-description',
+                                                'layout' => 'horizontal_list',
+                                                'osm_map' => 0,
+                                                'size' => 1,
+                                                'link_to_all' => 0,
+                                                $this->_template->withNameSpace('width_xsmall') => 12,
+                                                $this->_template->withNameSpace('show_header') => 0,
+                                                $this->_template->withNameSpace('show_content') => 0,
+                                                $this->_template->withNameSpace('show_footer') => 0]],
+
+                             ['type_menu' => 'MODULE_ACCUEIL_LOGIN',
+                              'type_module' => 'LOGIN',
+                              'libelle' => $this->_('Connexion'),
+                              'preferences' => ['titre' => $this->_('Connexion'),
+                                                'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background', 'justify-content-end', 'd-inline-block'],
+                                                'titre_connecte' => $this->_('Mon compte'),
+                                                'message_connecte' => '',
+                                                'identifiant' => $this->_('Identifiant'),
+                                                'identifiant_exemple' => $this->_('N° de carte'),
+                                                'mot_de_passe' => $this->_('Mot de passe'),
+                                                'mot_de_passe_exemple' => $this->_('Année de naissance'),
+                                                'lien_connexion' => $this->_('Se connecter'),
+                                                'lien_deconnection' => $this->_('Se déconnecter'),
+                                                'lien_mot_de_passe_oublie' => $this->_('Mot de passe oublié'),
+                                                'lien_compte' => $this->_('Mon compte'),
+                                                'lien_creer_compte' => $this->_('S\'enregistrer'),
+                                                $this->_template->withNameSpace('form_style') => 'toggle',
+                                                $this->_template->withNameSpace('width_xsmall') => 12,
+                                                $this->_template->withNameSpace('show_header') => 0,
+                                                $this->_template->withNameSpace('show_content') => 0,
+                                                $this->_template->withNameSpace('show_footer') => 0]]
+                 ]]);
+
+    $this->_credits_menu = $this->_profile
+      ->addMenu(['libelle' => $this->_('Plan du site'),
+                 'picto' => '',
+                 'menus' => [
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Plan du site'),
+                              'url' => ''],
+
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Ma médiathèque c\'est quoi ?'),
+                              'url' => ''],
+
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Qu\'est ce qu\'on y fait ?'),
+                              'url' => ''],
+
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Mais au fait, c\'est où ?'),
+                              'url' => ''],
+                 ]
+                 ]);
+
+    $this->_legal_mentions = $this->_profile->addMenu(['libelle' => $this->_('Mentions légales'),
+                                                       'picto' => '',
+                                                       'menus' => [
+                                                                   ['type_menu' => 'URL',
+                                                                    'libelle' => $this->_('Mentions légales'),
+                                                                    'url' => '']]]);
+
+    $this->_flying_menu = $this->_profile
+      ->addMenu(['libelle' => $this->_('Menu'),
+                 'picto' => '',
+                 'menus' => [
+                             ['type_menu' => 'ACCUEIL',
+                              'libelle' => $this->_('Accueil'),
+                              'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/logo_footer.png'),
+                              'use_profil' => $this->_profile_id],
+
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Ma médiathèque c\'est quoi ?'),
+                              'url' => ''],
+
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Qu\'est ce qu\'on y fait ?'),
+                              'url' => ''],
+
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Mais au fait, c\'est où ?'),
+                              'url' => ''],
+
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Programme'),
+                              'url' => ''],
+                 ]
+                 ]);
+
+    $this->_themes_menu = $this->_profile
+      ->addMenu(['libelle' => $this->_('Menu des thèmes'),
+                 'picto' => '',
+                 'menus' => [
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('Se documenter'),
+                              'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/se_documenter.jpg'),
+                              'url' => ''],
+
+                             ['type_menu' => 'URL',
+                              'libelle' => $this->_('S\'exercer'),
+                              'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/s_exercer.jpg'),
+                              'url' => ''],
+
+                             ['type_menu' => 'URL',
+                              'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/se_divertir.jpg'),
+                              'libelle' => $this->_('Se divertir'),
+                              'url' => ''],
+                 ]
+                 ]);
+
+    $this->_profile->save();
+
+    return $this;
+  }
+
+
+  protected function _upgradeWidgets() {
+    $this
+      ->_removeWidgets()
+
+      ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE,
+                   Class_Profil::DIV_BANNIERE,
+                   ['titre' => $this->_('Menu volant'),
+                    'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'flying_widget', 'position_fixed_top_left', 'z_index_11'],
+                    'layout' => 'vertical',
+                    'menu' => $this->_profile_id . '-' . $this->_flying_menu,
+                    $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_ALWAYS,
+                    $this->_template->withNameSpace('width_xsmall') => 6,
+                    $this->_template->withNameSpace('width_medium') => 4,
+                    $this->_template->withNameSpace('width_large') => 3,
+                    $this->_template->withNameSpace('show_header') => 0,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+
+      ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE,
+                   Class_Profil::DIV_BANNIERE,
+                   ['titre' => $this->_('Menu réseau sociaux haut'),
+                    'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-start', 'menu_buttons'],
+                    'menu' => $this->_profile_id . '-' . $this->_social_network_top_menu,
+                    $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL,
+                    $this->_template->withNameSpace('width_xsmall') => 6,
+                    $this->_template->withNameSpace('show_header') => 0,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE,
+                   Class_Profil::DIV_BANNIERE,
+                   ['titre' => $this->_('Menu d\'aide haut'),
+                    'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-end', 'menu_buttons'],
+                    'menu' => $this->_profile_id . '-' . $this->_help_menu,
+                    $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL,
+                    $this->_template->withNameSpace('width_xsmall') => 6,
+                    $this->_template->withNameSpace('show_header') => 0,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addWidget(Intonation_Library_Widget_Image_Definition::CODE,
+                   Class_Profil::DIV_BANNIERE,
+                   ['titre' => $this->_('Logo du réseau'),
+                    'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background', 'justify-content-center'],
+                    'image' => Class_Url::absolute('/library/templates/Polygone/Assets/images/logo.png'),
+                    'link' => '',
+                    $this->_template->withNameSpace('width_xsmall') => 6,
+                    $this->_template->withNameSpace('width_medium') => 3,
+                    $this->_template->withNameSpace('offset_xsmall') => 2,
+                    $this->_template->withNameSpace('show_header') => 0,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE,
+                   Class_Profil::DIV_BANNIERE,
+                   ['titre' => $this->_('Menu boite'),
+                    'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-end'],
+                    'menu' => $this->_profile_id . '-' . $this->_widget_menu,
+                    'layout' => 'vertical',
+                    $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL,
+                    $this->_template->withNameSpace('width_xsmall') => 12,
+                    $this->_template->withNameSpace('width_medium') => 7,
+                    $this->_template->withNameSpace('show_header') => 0,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addWidget(Intonation_Library_Widget_Nav_Definition::CODE,
+                   Class_Profil::DIV_BANNIERE,
+                   ['titre' => $this->_('Menu réseau sociaux haut'),
+                    'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'menu_buttons', 'justify-content-center'],
+                    'menu' => $this->_profile_id . '-' . $this->_main_menu,
+                    $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL,
+                    $this->_template->withNameSpace('width_xsmall') => 2,
+                    $this->_template->withNameSpace('show_header') => 0,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addWidget(Intonation_Library_Widget_Search_Definition::CODE,
+                   Class_Profil::DIV_BANNIERE,
+                   ['boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background', 'main_title'],
+                    'search_button' => 'class fas fa-search',
+                    'titre' => $this->_('Le polygone'),
+                    'placeholder' => $this->_('Trouver un document'),
+                    'type_doc' => '',
+                    $this->_template->withNameSpace('form_style') => 'inline',
+                    $this->_template->withNameSpace('width_xsmall') => 8,
+                    $this->_template->withNameSpace('show_header') => 1,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addWidget(Intonation_Library_Widget_Search_Definition::CODE,
+                   Class_Profil::DIV_BANNIERE,
+                   ['boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-center', 'scroll_search'],
+                    'search_button' => 'class fas fa-search',
+                    'titre' => $this->_('Le polygone'),
+                    'placeholder' => $this->_('Trouver un document'),
+                    'type_doc' => '',
+                    $this->_template->withNameSpace('form_style') => 'inline',
+                    $this->_template->withNameSpace('width_xsmall') => 12,
+                    $this->_template->withNameSpace('show_header') => 0,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addWidget(Intonation_Library_Widget_Breadcrumb_Definition::CODE,
+                   Class_Profil::DIV_BANNIERE,
+                   ['titre' => $this->_('Fil d\'ariane'),
+                    'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-start', 'pl-2'],
+                    'root' => '',
+                    'show_profile' => 1,
+                    $this->_template->withNameSpace('width_xsmall') => 12,
+                    $this->_template->withNameSpace('show_header') => 0,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE,
+                   Class_Profil::DIV_MAIN,
+                   ['titre' => $this->_('Menu des thèmes'),
+                    'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'polygone_big_menu_buttons'],
+                    'menu' => $this->_profile_id . '-' . $this->_themes_menu,
+                    'layout' => 'horizontal',
+                    $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL,
+                    $this->_template->withNameSpace('width_xsmall') => 12,
+                    $this->_template->withNameSpace('show_header') => 0,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addWidget(Intonation_Library_Widget_Carousel_Agenda_Definition::CODE,
+                   Class_Profil::DIV_MAIN,
+                   ['titre' => $this->_('Actualités'),
+                    'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow'],
+                    'rendering' => 'card-overlay',
+                    'layout' => 'carousel',
+                    'size' => 3,
+                    'order' => 'EventDebut',
+                    'enabled_filters' => '',
+                    'link_to_all' => 0,
+                    $this->_template->withNameSpace('width_xsmall') => 12,
+                    $this->_template->withNameSpace('show_header') => 1,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addWidget(Intonation_Library_Widget_Carousel_Agenda_Definition::CODE,
+                   Class_Profil::DIV_MAIN,
+                   ['titre' => $this->_('Prochains événements'),
+                    'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow'],
+                    'rendering' => 'card',
+                    'layout' => 'multiple_carousel',
+                    'size' => 3,
+                    'order' => 'EventDebut',
+                    'enabled_filters' => '',
+                    'link_to_all' => 1,
+                    $this->_template->withNameSpace('width_xsmall') => 12,
+                    $this->_template->withNameSpace('show_header') => 1,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 1])
+
+      ->_addWidget(Intonation_Library_Widget_Carousel_Record_Definition::CODE,
+                   Class_Profil::DIV_MAIN,
+                   ['titre' => $this->_('Nouveautés'),
+                    'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'polygone_widget'],
+                    'rendering' => 'card-overlay',
+                    'layout' => 'horizontal_list',
+                    'size' => 5,
+                    'link_to_all' => 1,
+                    $this->_template->withNameSpace('width_xsmall') => 12,
+                    $this->_template->withNameSpace('show_header') => 1,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 1])
+
+      ->_addWidget(Intonation_Library_Widget_Carousel_Library_Definition::CODE,
+                   Class_Profil::DIV_FOOTER,
+                   ['titre' => $this->_('Accès'),
+                    'boite' => ['no_border', 'no_border_radius', 'no_shadow'],
+                    'rendering' => 'card-description',
+                    'layout' => 'horizontal_list',
+                    'osm_map' => 0,
+                    'size' => 1,
+                    'link_to_all' => 0,
+                    $this->_template->withNameSpace('width_xsmall') => 12,
+                    $this->_template->withNameSpace('width_medium') => 6,
+                    $this->_template->withNameSpace('show_header') => 0,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE,
+                   Class_Profil::DIV_FOOTER,
+                   ['titre' => $this->_('Menu plan du site'),
+                    'boite' => ['no_border', 'no_border_radius', 'no_shadow'],
+                    'layout' => 'vertical',
+                    'menu' => $this->_profile_id . '-' . $this->_credits_menu,
+                    $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL,
+                    $this->_template->withNameSpace('width_xsmall') => 6,
+                    $this->_template->withNameSpace('width_medium') => 3,
+                    $this->_template->withNameSpace('show_header') => 0,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE,
+                   Class_Profil::DIV_FOOTER,
+                   ['titre' => $this->_('Menu mentions légales'),
+                    'boite' => ['no_border', 'no_border_radius', 'no_shadow'],
+                    'layout' => 'vertical',
+                    'menu' => $this->_profile_id . '-' . $this->_legal_mentions,
+                    $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL,
+                    $this->_template->withNameSpace('width_xsmall') => 6,
+                    $this->_template->withNameSpace('width_medium') => 3,
+                    $this->_template->withNameSpace('show_header') => 0,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addWidget(Intonation_Library_Widget_Image_Definition::CODE,
+                   Class_Profil::DIV_FOOTER,
+                   ['titre' => $this->_('Logo du réseau'),
+                    'boite' => ['no_border', 'no_border_radius', 'no_shadow'],
+                    'image' => Class_Url::absolute('/library/templates/Polygone/Assets/images/logo_footer.png'),
+                    'link' => '',
+                    $this->_template->withNameSpace('width_xsmall') => 2,
+                    $this->_template->withNameSpace('show_header') => 0,
+                    $this->_template->withNameSpace('show_content') => 0,
+                    $this->_template->withNameSpace('show_footer') => 0])
+
+      ->_addScrollDownWidget()
+      ->_addScrollTopWidget()
+      ->_addAdminWidget()
+      ->_addAccessibilityWidget()
+      ->_addNotificationWidget();
+
+    return $this;
+  }
+}
\ No newline at end of file
diff --git a/library/templates/Polygone/Library/Settings.php b/library/templates/Polygone/Library/Settings.php
new file mode 100644
index 0000000000000000000000000000000000000000..3d4afa8ef2c82ba1ab3bc92bcac7d0c3425f8c60
--- /dev/null
+++ b/library/templates/Polygone/Library/Settings.php
@@ -0,0 +1,78 @@
+<?php
+/**
+ * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Polygone_Library_Settings extends Intonation_Library_Settings {
+  protected function _getDefaultSettings() {
+    $settings = parent::_getDefaultSettings();
+    $settings[$this->_template->withNameSpace('polygone_css')] = 1;
+
+    $custom_css_classes = $settings[$this->_template->withNameSpace('custom_css_class')];
+
+    $custom_css_classes = ['position_fixed_bottom',
+                           'position_fixed_bottom_left',
+                           'position_fixed_bottom_right',
+                           'position_fixed_top',
+                           'position_fixed_top_left',
+                           'position_fixed_top_right',
+                           'position_fixed_mid_left',
+                           'position_fixed_mid_right',
+                           'pt-3',
+                           'pt-5',
+                           'pb-3',
+                           'pl-2',
+                           'pl-md-3',
+                           'pr-md-3',
+                           'no_background',
+                           'no_border',
+                           'no_border_radius',
+                           'no_shadow',
+                           'm-auto',
+                           'ml-auto',
+                           'mr-auto',
+                           'align-items-center',
+                           'auto_col',
+                           'justify-content-start',
+                           'justify-content-end',
+                           'justify-content-center',
+                           'menu_buttons',
+                           'polygone_big_menu_buttons',
+                           'polygone_widget',
+                           'no_card_footer',
+                           'no_badges',
+                           'scroll_search',
+                           'flying_widget',
+                           'z-index-11'];
+
+    $settings[$this->_template->withNameSpace('custom_css_class')] = $custom_css_classes;
+
+    $hydrating_mapping = $settings[$this->_template->withNameSpace('hydrating_mapping')];
+
+    $hydrating_mapping['a class nav-link'] = '';
+    $hydrating_mapping['div class navbar-header'] = '';
+    $hydrating_mapping['div class navbar-collapse'] = '';
+    $hydrating_mapping['div id site_web_wrapper'] = 'container';
+    $hydrating_mapping['div id site_web_content_wrapper'] = 'row no-gutters';
+
+    $settings[$this->_template->withNameSpace('hydrating_mapping')] = $hydrating_mapping;
+    return $settings;
+  }
+}
diff --git a/library/templates/Polygone/Template.php b/library/templates/Polygone/Template.php
new file mode 100644
index 0000000000000000000000000000000000000000..dd9ac4e65adaa9da50f626002b59a98ce8099c0f
--- /dev/null
+++ b/library/templates/Polygone/Template.php
@@ -0,0 +1,63 @@
+<?php
+/**
+ * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Polygone_Template extends Intonation_Template {
+
+  const ID = 'POLYGONE';
+
+
+  public function __construct() {
+    $this->setId(static::ID)
+         ->setTitle($this->_('Polygone'))
+         ->setSettings(new Polygone_Library_Settings($this))
+         ->setPatcher(new Polygone_Library_ProfilePatcher($this));
+  }
+
+
+  public function getProfile() {
+    if ($this->_profile)
+      return $this->_profile;
+
+    if ($this->_profile = Class_Profil::findFirstBy(['template' => $this->getId()]))
+      return $this->_profile;
+
+    $this->createFrom(Class_Profil::getPortail());
+
+    return $this->_profile = Class_Profil::getCurrentProfil();
+  }
+
+
+  public function renderOpac($view) {
+    return (new Polygone_View_Opac($this, $view))->render();
+  }
+
+
+  public function renderSubModal($view) {
+    return (new Polygone_View_SubModal($this, $view))->render();
+  }
+
+
+  public function customTemplateForm($form) {
+    $helper = new Polygone_Library_FormCustomizer($this);
+    return $helper->getTemplateForm($form);
+  }
+}
diff --git a/library/templates/Polygone/View/Opac.php b/library/templates/Polygone/View/Opac.php
new file mode 100644
index 0000000000000000000000000000000000000000..29fae39bf826503f8cae0bf9e36c912a30b6680c
--- /dev/null
+++ b/library/templates/Polygone/View/Opac.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Polygone_View_Opac extends Intonation_View_Opac {
+  protected function _headContent() {
+    Class_ScriptLoader::getInstance()
+      ->addStyleSheet(Class_Url::absolute('/library/templates/Polygone/Assets/css/polygone.css'))
+      ->addScript(Class_Url::absolute('/library/templates/Polygone/Assets/js/scroll_search.js'))
+      ->addJQueryReady('$(".scroll_search").scroll_search();');
+
+    return parent::_headContent();
+  }
+}
diff --git a/library/templates/Polygone/View/SubModal.php b/library/templates/Polygone/View/SubModal.php
new file mode 100644
index 0000000000000000000000000000000000000000..82d4f01d0ee27e020138097a95cff24b519f1996
--- /dev/null
+++ b/library/templates/Polygone/View/SubModal.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Polygone_View_SubModal extends Intonation_View_SubModal {
+  protected function _headContent() {
+    Class_ScriptLoader::getInstance()
+      ->addStyleSheet(Class_Url::absolute('/library/templates/Polygone/Assets/css/polygone.css'));
+    return parent::_headContent();
+  }
+}
diff --git a/public/opac/java/scroll/scroll.js b/public/opac/java/scroll/scroll.js
index 5fc69bea3579e0eefa5d0c2a55a06cc50e553699..6278351bea5408ad36afd2c07e60d8affaf08510 100644
--- a/public/opac/java/scroll/scroll.js
+++ b/public/opac/java/scroll/scroll.js
@@ -30,7 +30,7 @@
       }, 1000);
     });
 
-    $(window).scroll(function() {
+    $(window).on('scroll', function() {
       anchor.show();
     });
   }
diff --git a/tests/scenarios/Templates/PolygoneTemplateTest.php b/tests/scenarios/Templates/PolygoneTemplateTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e82c7a156a65b0e26425bd83adcd8a4e689e077b
--- /dev/null
+++ b/tests/scenarios/Templates/PolygoneTemplateTest.php
@@ -0,0 +1,173 @@
+<?php
+/**
+ * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+abstract class PolygoneTemplateTestCase extends Admin_AbstractControllerTestCase {
+  protected $_storm_default_to_volatile = true;
+
+  public function setUp() {
+    parent::setUp();
+    Class_Systeme_ModulesAccueil::reset();
+    Class_AdminVar::set('TEMPLATING', 1);
+
+    $profile = $this->fixture('Class_Profil',
+                              ['id' => 23]);
+
+    (new Polygone_Template)->tryOn($profile);
+    (new Class_Profil_Promoter)->promote($profile);
+  }
+
+
+  public function tearDown() {
+    parent::tearDown();
+    Class_Systeme_ModulesAccueil::reset();
+  }
+}
+
+
+
+
+class PolygoneTemplateAdminTemplateIndexDispatchTest extends PolygoneTemplateTestCase {
+
+  public function setUp() {
+    parent::setUp();
+    $this->dispatch('/admin/template/index');
+  }
+
+
+  /** @test */
+  public function editPolygoneUrlShouldBeDisplay() {
+    $this->assertXPath('//table//a[contains(@href,"/admin/template/edit/template/POLYGONE")]');
+  }
+}
+
+
+
+class PolygoneTemplateProfilePatcherTest extends PolygoneTemplateTestCase {
+
+  public function setUp() {
+    parent::setUp();
+    $this->dispatch('/opac/index/index');
+  }
+
+
+  public function widgetsClasses() {
+    return [
+            ['login'],
+            ['accessibility'],
+            ['rech_simple'],
+            ['admin_tools'],
+            ['scroll'],
+            ['library'],
+            ['critiques'],
+    ];
+  }
+
+
+  /**
+   * @dataProvider widgetsClasses
+   * @test */
+  public function indexShouldContainsWidgets($widget_class) {
+    $this->assertXPath(sprintf('//div[contains(@class, "widget")][contains(@class, "%s")]',
+                               $widget_class));
+  }
+
+
+  /** @test */
+  public function editTemplatePolygoneShouldBePresent() {
+    $this->assertXPathContentContains('//a[contains(@href, "admin/template/edit/template/POLYGONE")]', 'Configuration du template');
+  }
+}
+
+
+
+class PolygoneTemplateOpacIndexWithUserAgentTest extends PolygoneTemplateTestCase {
+  public function setUp() {
+    parent::setUp();
+    $this->dispatch('/opac/index/index');
+  }
+
+
+  /** @test */
+  public function pageTitleShouldBeTestChartePolygone() {
+    $this->assertXPathContentContains('//head/title', 'Musclé');
+  }
+
+
+  /** @test */
+  public function pageShouldLoadPolygoneCss() {
+    $this->assertXPath('//head/link[contains(@href, "/templates/Polygone/Assets/css/polygone.css")]');
+  }
+
+
+  /** @test */
+  public function pageShouldBeHtml5Valid() {
+    $this->assertHTML5();
+  }
+
+
+  /** @test */
+  public function pageShouldBeAccessible() {
+    $this->assertAccessible($this->_response->getBody());
+  }
+}
+
+
+
+class PolygoneTemplateEditTemplateTest extends Admin_AbstractControllerTestCase {
+  protected $_storm_default_to_volatile = true;
+
+  public function setUp() {
+    parent::setUp();
+
+    Class_AdminVar::set('TEMPLATING', 1);
+
+    $settings = $this->fixture('Class_Template_Settings',
+                               ['id' => 456,
+                                'template' => 'POLYGONE']);
+
+    $this->dispatch('/admin/template/edit/template/polygone');
+  }
+
+
+  /** @test */
+  public function checkboxPolygoneCssShouldBeChecked() {
+    $this->assertXPath('//form//input[@type="checkbox"][@name="PolygonePolygoneCss"][@checked]');
+  }
+
+
+  /** @test */
+  public function customCssShouldContainsClassMenuButtons() {
+    $this->assertContains('"menu_buttons"', $this->_response->getBody());
+  }
+}
+
+
+
+
+class PolygoneTemplateOpacAdvancedSearchTest extends PolygoneTemplateTestCase {
+
+  /** @test */
+  public function advancedSearchSettingsShouldContainsCustomForm() {
+    $this->dispatch('/admin/widget/edit-action/id/recherche_avancee/id_profil/24');
+    $this->assertXPath('//input[@id="forms"]');
+  }
+}
\ No newline at end of file