@silexlabs/silex-dashboard 1.0.37 → 1.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,7 +17,10 @@
17
17
  "Logging out": "Logging out",
18
18
  "Back to home": "< Back",
19
19
  "Welcome to Silex": "Welcome to Silex",
20
- "Please login to continue": "Please login to continue"
20
+ "Please login to continue": "Please login to continue",
21
+ "New name for the duplicated website": "New name for the duplicated website",
22
+ "Failed to duplicate website": "Failed to duplicate website",
23
+ "Website duplicated successfully": "Website duplicated successfully"
21
24
  },
22
25
  "fr": {
23
26
  "Failed to start dashboard": "Erreur, impossible de démarrer le tableau de bord",
@@ -37,6 +40,9 @@
37
40
  "Logging out": "Déconnexion en cours",
38
41
  "Back to home": "< Retour",
39
42
  "Welcome to Silex": "Bienvenue sur Silex",
40
- "Please login to continue": "Merci de vous connecter pour continuer"
43
+ "Please login to continue": "Merci de vous connecter pour continuer",
44
+ "New name for the duplicated website": "Nouveau nom pour votre site",
45
+ "Failed to duplicate website": "Erreur, le site n'a pas été dupliqué",
46
+ "Website duplicated successfully": "Le site a bien été dupliqué"
41
47
  }
42
48
  }
@@ -13,10 +13,14 @@ window.addEventListener('load', function() {
13
13
  getUser,
14
14
  logout,
15
15
  websiteDelete,
16
+ websiteDuplicate,
16
17
  websiteList,
17
18
  websiteCreate,
18
19
  websiteMetaWrite,
19
20
  } = api
21
+ function toSafeId(name) {
22
+ return name.replace(/[/\\?%*:|"<>]/g, '_')
23
+ }
20
24
 
21
25
  const App = {
22
26
  data() {
@@ -92,7 +96,7 @@ window.addEventListener('load', function() {
92
96
  try {
93
97
  if (!this.newWebsiteName) throw new Error('{{ api-translations[lang]["You need to provide a website name"] }}')
94
98
  this.loading = true
95
- const websiteId = this.newWebsiteName.replace(/[/\\?%*:|"<>]/g, '_')
99
+ const websiteId = toSafeId(this.newWebsiteName)
96
100
  const result = await websiteCreate({
97
101
  websiteId,
98
102
  data: {
@@ -136,6 +140,25 @@ window.addEventListener('load', function() {
136
140
  }
137
141
  },
138
142
 
143
+ async duplicateWebsite(fromId) {
144
+ const name = prompt('{{ api-translations[lang]["New name for the duplicated website"] }}')
145
+ if (!name) return
146
+ this.loading = true
147
+ try {
148
+ const toId = toSafeId(name)
149
+ await websiteDuplicate({fromId, toId, connectorId: this.user.storage.connectorId, data: { name }})
150
+ this.error = ''
151
+ this.websites = await websiteList({connectorId: this.user.storage.connectorId})
152
+ this.message = '{{ api-translations[lang]["Website duplicated successfully"] }}'
153
+ this.empty = this.websites.length === 0
154
+ this.loading = false
155
+ } catch (error) {
156
+ this.loading = false
157
+ this.error = `{{ api-translations[lang]["Failed to duplicate website"] }} - ${error.message}`
158
+ this.message = ''
159
+ }
160
+ },
161
+
139
162
  async renameWebsite(websiteId) {
140
163
  const website = this.websites.find(w => w.websiteId === websiteId)
141
164
  const name = prompt('{{ api-translations[lang]["New name for this website"] }}', website.name)
@@ -5,137 +5,148 @@
5
5
  <!-- font google -->
6
6
  <link rel="preconnect" href="https://fonts.gstatic.com" />
7
7
  <link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;700&display=swap" rel="stylesheet">
8
-
9
8
  {% render "alternate.liquid" languages: languages lang: lang page: page %}
10
-
11
9
  <style>
12
- .before-js > * {
13
- visibility: hidden;
14
- opacity: 0;
15
- transition: opacity .5s ease;
16
- }
17
- .after-js > * {
18
- visibility: visible;
19
- opacity: 1;
20
- }
21
- .before-js:before {
22
- content: 'Loading';
23
- position: absolute;
24
- top: 49%;
25
- left: 49%;
26
- }
27
- .after-js:before {
28
- content: none;
29
- }
30
-
31
- /*BTNS*/
32
- .button, .pointer { cursor: pointer!important}
33
- .button{min-width:110px;}
34
- /*BTNS*/
35
- a {
36
- text-decoration: none;
37
- color:#8873FE;}
38
- a:hover { text-decoration: underline; }
39
- .uppercase {text-transform: uppercase;}
40
- .underline:hover{
41
- text-decoration: underline;
42
- text-decoration-thickness: from-font;
43
- text-underline-position: under;}
44
-
45
- /*footer position*/
46
- .main-min-height {min-height: calc(100vh - 560px);}
47
- /*footer position*/
48
-
49
- /*label*/
50
- ::placeholder {color: #8873FE;}
51
- input:focus {
52
- border: 2px solid ##9977FE;
53
- background-color:#ffffff;}
54
- :focus { outline: none;}
55
- /*label*/
56
- .skeleton-anim:after {
57
- width: 100%;
58
- height: 100%;
59
- position: absolute;
60
- top: 0;
61
- left: 0;
62
- content: "";
63
- background:
64
- linear-gradient(0.25turn, transparent, rgba(255,255,255,.75), transparent),
65
- linear-gradient(transparent, transparent),
66
- radial-gradient(38px circle at 19px 19px, transparent 50%, transparent 51%),
67
- linear-gradient(transparent, transparent);
68
- background-repeat: no-repeat;
69
- background-size: 315px 250px, 315px 180px, 100px 100px, 225px 30px;
70
- background-position: -315px 0, 0 0, 0px 190px, 50px 195px;
71
- animation: loading 1.5s infinite;
72
- }
73
-
74
- @keyframes loading {
75
- to {
76
- background-position: 200% 0, 0 0, 0 190px, 50px 195px;
77
- }
78
- }
79
- /*FX ANIMATIONS*/
80
- /*scale-round-inside_pour-BTN*/
81
- .fx-scale-round {
82
- position:relative;
83
- z-index: 10;
84
- overflow: hidden;
85
- }
86
- .fx-scale-round::after {
87
- content: "";
88
- background: #ffffff;
89
- position: absolute;
90
- z-index: -1;
91
- border-radius: 50%;
92
- left: -50%;
93
- right: -50%;
94
- top: -100%;
95
- bottom: -100%;
96
- transform: scale(0, 0);
97
- transform-origin: center bottom;
98
- transition: all 0.3s ease-out;
99
-
100
- }
101
- .fx-scale-round:hover {
102
- transform-origin: center bottom;
103
- transform: scale(1.1);
104
- transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
105
- }
106
- .fx-scale-round:hover::after {
107
- transform: scale(1, 1);
108
- transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
109
- }
110
- /*scale-round-inside_pour-BTN*/
111
- /*scale*/
112
- .fx-scale:hover {
113
- transform-origin: center bottom;
114
- transform: scale(1.1);
115
- transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
116
- }
117
- /*flash*/
118
- .fx-flash:hover {
119
- animation: flash-in .5s ;
120
- }
121
-
122
- /*flash-in animation*/
123
- @keyframes flash-in{
124
- 0% {opacity:0;}
125
- 100% {opacity:1;}
126
- }
127
- /*flash-in animation*/
128
-
129
- /*FX ANIMATIONS*/
10
+ .before-js > * {
11
+ visibility: hidden;
12
+ opacity: 0;
13
+ transition: opacity .5s ease;
14
+ }
15
+ .after-js > * {
16
+ visibility: visible;
17
+ opacity: 1;
18
+ }
19
+ .before-js:before {
20
+ content: 'Loading';
21
+ position: absolute;
22
+ top: 49%;
23
+ left: 49%;
24
+ }
25
+ .after-js:before {
26
+ content: none;
27
+ }
28
+ /*BTNS*/
29
+ .button, .pointer {
30
+ cursor: pointer!important}
31
+ .button{
32
+ min-width:110px;
33
+ }
34
+ /*BTNS*/
35
+ a {
36
+ text-decoration: none;
37
+ color:#8873FE;
38
+ }
39
+ a:hover {
40
+ text-decoration: underline;
41
+ }
42
+ .uppercase {
43
+ text-transform: uppercase;
44
+ }
45
+ .underline:hover{
46
+ text-decoration: underline;
47
+ text-decoration-thickness: from-font;
48
+ text-underline-position: under;
49
+ }
50
+ /*footer position*/
51
+ .main-min-height {
52
+ min-height: calc(100vh - 560px);
53
+ }
54
+ /*footer position*/
55
+ /*label*/
56
+ ::placeholder {
57
+ color: #8873FE;
58
+ }
59
+ input:focus {
60
+ border: 2px solid ##9977FE;
61
+ background-color:#ffffff;
62
+ }
63
+ :focus {
64
+ outline: none;
65
+ }
66
+ /*label*/
67
+ .skeleton-anim:after {
68
+ width: 100%;
69
+ height: 100%;
70
+ position: absolute;
71
+ top: 0;
72
+ left: 0;
73
+ content: "";
74
+ background:
75
+ linear-gradient(0.25turn, transparent, rgba(255,255,255,.75), transparent),
76
+ linear-gradient(transparent, transparent),
77
+ radial-gradient(38px circle at 19px 19px, transparent 50%, transparent 51%),
78
+ linear-gradient(transparent, transparent);
79
+ background-repeat: no-repeat;
80
+ background-size: 315px 250px, 315px 180px, 100px 100px, 225px 30px;
81
+ background-position: -315px 0, 0 0, 0px 190px, 50px 195px;
82
+ animation: loading 1.5s infinite;
83
+ }
84
+ @keyframes loading {
85
+ to {
86
+ background-position: 200% 0, 0 0, 0 190px, 50px 195px;
87
+ }
88
+ }
89
+ /*FX ANIMATIONS*/
90
+ /*scale-round-inside_pour-BTN*/
91
+ .fx-scale-round {
92
+ position:relative;
93
+ z-index: 10;
94
+ overflow: hidden;
95
+ }
96
+ .fx-scale-round::after {
97
+ content: "";
98
+ background: #ffffff;
99
+ position: absolute;
100
+ z-index: -1;
101
+ border-radius: 50%;
102
+ left: -50%;
103
+ right: -50%;
104
+ top: -100%;
105
+ bottom: -100%;
106
+ transform: scale(0, 0);
107
+ transform-origin: center bottom;
108
+ transition: all 0.3s ease-out;
109
+ }
110
+ .fx-scale-round:hover {
111
+ transform-origin: center bottom;
112
+ transform: scale(1.1);
113
+ transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
114
+ }
115
+ .fx-scale-round:hover::after {
116
+ transform: scale(1, 1);
117
+ transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
118
+ }
119
+ /*scale-round-inside_pour-BTN*/
120
+ /*scale*/
121
+ .fx-scale:hover {
122
+ transform-origin: center bottom;
123
+ transform: scale(1.1);
124
+ transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
125
+ }
126
+ /*flash*/
127
+ .fx-flash:hover {
128
+ animation: flash-in .5s ;
129
+ }
130
+ /*flash-in animation*/
131
+ @keyframes flash-in{
132
+ 0% {
133
+ opacity:0;
134
+ }
135
+ 100% {
136
+ opacity:1;
137
+ }
138
+ }
139
+ /*flash-in animation*/
140
+ /*FX ANIMATIONS*/
130
141
  </style>
131
142
  {% render "api-connectors.js.html" frontmatter: frontmatter page: page site: site api-translations: api-translations lang: lang %}
132
143
 
133
144
  <title>{{ title }}</title>
134
- <link rel="icon" href="" />
135
- <meta property="description" content=""/>
136
- <meta property="og:title" content=""/>
137
- <meta property="og:description" content=""/>
138
- <meta property="og:image" content=""/>
145
+ <link rel="icon" href="/assets/favicon-32x32.png" />
146
+ <meta name="description" property="description" content=""/>
147
+ <meta name="og:title" property="og:title" content=""/>
148
+ <meta name="og:description" property="og:description" content=""/>
149
+ <meta name="og:image" property="og:image" content=""/>
139
150
  </head>
140
151
  <body
141
152
  id="i2hcfw"
@@ -5,137 +5,148 @@
5
5
  <!-- font google -->
6
6
  <link rel="preconnect" href="https://fonts.gstatic.com" />
7
7
  <link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;700&display=swap" rel="stylesheet">
8
-
9
8
  {% render "alternate.liquid" languages: languages lang: lang page: page %}
10
-
11
9
  <style>
12
- .before-js > * {
13
- visibility: hidden;
14
- opacity: 0;
15
- transition: opacity .5s ease;
16
- }
17
- .after-js > * {
18
- visibility: visible;
19
- opacity: 1;
20
- }
21
- .before-js:before {
22
- content: 'Loading';
23
- position: absolute;
24
- top: 49%;
25
- left: 49%;
26
- }
27
- .after-js:before {
28
- content: none;
29
- }
30
-
31
- /*BTNS*/
32
- .button, .pointer { cursor: pointer!important}
33
- .button{min-width:110px;}
34
- /*BTNS*/
35
- a {
36
- text-decoration: none;
37
- color:#8873FE;}
38
- a:hover { text-decoration: underline; }
39
- .uppercase {text-transform: uppercase;}
40
- .underline:hover{
41
- text-decoration: underline;
42
- text-decoration-thickness: from-font;
43
- text-underline-position: under;}
44
-
45
- /*footer position*/
46
- .main-min-height {min-height: calc(100vh - 560px);}
47
- /*footer position*/
48
-
49
- /*label*/
50
- ::placeholder {color: #8873FE;}
51
- input:focus {
52
- border: 2px solid ##9977FE;
53
- background-color:#ffffff;}
54
- :focus { outline: none;}
55
- /*label*/
56
- .skeleton-anim:after {
57
- width: 100%;
58
- height: 100%;
59
- position: absolute;
60
- top: 0;
61
- left: 0;
62
- content: "";
63
- background:
64
- linear-gradient(0.25turn, transparent, rgba(255,255,255,.75), transparent),
65
- linear-gradient(transparent, transparent),
66
- radial-gradient(38px circle at 19px 19px, transparent 50%, transparent 51%),
67
- linear-gradient(transparent, transparent);
68
- background-repeat: no-repeat;
69
- background-size: 315px 250px, 315px 180px, 100px 100px, 225px 30px;
70
- background-position: -315px 0, 0 0, 0px 190px, 50px 195px;
71
- animation: loading 1.5s infinite;
72
- }
73
-
74
- @keyframes loading {
75
- to {
76
- background-position: 200% 0, 0 0, 0 190px, 50px 195px;
10
+ .before-js > * {
11
+ visibility: hidden;
12
+ opacity: 0;
13
+ transition: opacity .5s ease;
77
14
  }
78
- }
79
- /*FX ANIMATIONS*/
80
- /*scale-round-inside_pour-BTN*/
81
- .fx-scale-round {
82
- position:relative;
83
- z-index: 10;
84
- overflow: hidden;
85
- }
86
- .fx-scale-round::after {
87
- content: "";
88
- background: #ffffff;
89
- position: absolute;
90
- z-index: -1;
91
- border-radius: 50%;
92
- left: -50%;
93
- right: -50%;
94
- top: -100%;
95
- bottom: -100%;
96
- transform: scale(0, 0);
97
- transform-origin: center bottom;
98
- transition: all 0.3s ease-out;
99
-
100
- }
101
- .fx-scale-round:hover {
102
- transform-origin: center bottom;
103
- transform: scale(1.1);
104
- transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
105
- }
106
- .fx-scale-round:hover::after {
107
- transform: scale(1, 1);
108
- transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
109
- }
110
- /*scale-round-inside_pour-BTN*/
111
- /*scale*/
112
- .fx-scale:hover {
113
- transform-origin: center bottom;
114
- transform: scale(1.1);
115
- transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
116
- }
117
- /*flash*/
118
- .fx-flash:hover {
119
- animation: flash-in .5s ;
120
- }
121
-
122
- /*flash-in animation*/
123
- @keyframes flash-in{
124
- 0% {opacity:0;}
125
- 100% {opacity:1;}
126
- }
127
- /*flash-in animation*/
128
-
129
- /*FX ANIMATIONS*/
15
+ .after-js > * {
16
+ visibility: visible;
17
+ opacity: 1;
18
+ }
19
+ .before-js:before {
20
+ content: 'Loading';
21
+ position: absolute;
22
+ top: 49%;
23
+ left: 49%;
24
+ }
25
+ .after-js:before {
26
+ content: none;
27
+ }
28
+ /*BTNS*/
29
+ .button, .pointer {
30
+ cursor: pointer!important}
31
+ .button{
32
+ min-width:110px;
33
+ }
34
+ /*BTNS*/
35
+ a {
36
+ text-decoration: none;
37
+ color:#8873FE;
38
+ }
39
+ a:hover {
40
+ text-decoration: underline;
41
+ }
42
+ .uppercase {
43
+ text-transform: uppercase;
44
+ }
45
+ .underline:hover{
46
+ text-decoration: underline;
47
+ text-decoration-thickness: from-font;
48
+ text-underline-position: under;
49
+ }
50
+ /*footer position*/
51
+ .main-min-height {
52
+ min-height: calc(100vh - 560px);
53
+ }
54
+ /*footer position*/
55
+ /*label*/
56
+ ::placeholder {
57
+ color: #8873FE;
58
+ }
59
+ input:focus {
60
+ border: 2px solid ##9977FE;
61
+ background-color:#ffffff;
62
+ }
63
+ :focus {
64
+ outline: none;
65
+ }
66
+ /*label*/
67
+ .skeleton-anim:after {
68
+ width: 100%;
69
+ height: 100%;
70
+ position: absolute;
71
+ top: 0;
72
+ left: 0;
73
+ content: "";
74
+ background:
75
+ linear-gradient(0.25turn, transparent, rgba(255,255,255,.75), transparent),
76
+ linear-gradient(transparent, transparent),
77
+ radial-gradient(38px circle at 19px 19px, transparent 50%, transparent 51%),
78
+ linear-gradient(transparent, transparent);
79
+ background-repeat: no-repeat;
80
+ background-size: 315px 250px, 315px 180px, 100px 100px, 225px 30px;
81
+ background-position: -315px 0, 0 0, 0px 190px, 50px 195px;
82
+ animation: loading 1.5s infinite;
83
+ }
84
+ @keyframes loading {
85
+ to {
86
+ background-position: 200% 0, 0 0, 0 190px, 50px 195px;
87
+ }
88
+ }
89
+ /*FX ANIMATIONS*/
90
+ /*scale-round-inside_pour-BTN*/
91
+ .fx-scale-round {
92
+ position:relative;
93
+ z-index: 10;
94
+ overflow: hidden;
95
+ }
96
+ .fx-scale-round::after {
97
+ content: "";
98
+ background: #ffffff;
99
+ position: absolute;
100
+ z-index: -1;
101
+ border-radius: 50%;
102
+ left: -50%;
103
+ right: -50%;
104
+ top: -100%;
105
+ bottom: -100%;
106
+ transform: scale(0, 0);
107
+ transform-origin: center bottom;
108
+ transition: all 0.3s ease-out;
109
+ }
110
+ .fx-scale-round:hover {
111
+ transform-origin: center bottom;
112
+ transform: scale(1.1);
113
+ transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
114
+ }
115
+ .fx-scale-round:hover::after {
116
+ transform: scale(1, 1);
117
+ transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
118
+ }
119
+ /*scale-round-inside_pour-BTN*/
120
+ /*scale*/
121
+ .fx-scale:hover {
122
+ transform-origin: center bottom;
123
+ transform: scale(1.1);
124
+ transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
125
+ }
126
+ /*flash*/
127
+ .fx-flash:hover {
128
+ animation: flash-in .5s ;
129
+ }
130
+ /*flash-in animation*/
131
+ @keyframes flash-in{
132
+ 0% {
133
+ opacity:0;
134
+ }
135
+ 100% {
136
+ opacity:1;
137
+ }
138
+ }
139
+ /*flash-in animation*/
140
+ /*FX ANIMATIONS*/
130
141
  </style>
131
142
  {% render "api-websites.js.html" frontmatter: frontmatter page: page site: site api-translations: api-translations lang: lang %}
132
143
 
133
144
  <title>{{ title }}</title>
134
- <link rel="icon" href="" />
135
- <meta property="description" content=""/>
136
- <meta property="og:title" content=""/>
137
- <meta property="og:description" content=""/>
138
- <meta property="og:image" content=""/>
145
+ <link rel="icon" href="/assets/favicon-32x32.png" />
146
+ <meta name="description" property="description" content=""/>
147
+ <meta name="og:title" property="og:title" content=""/>
148
+ <meta name="og:description" property="og:description" content=""/>
149
+ <meta name="og:image" property="og:image" content=""/>
139
150
  </head>
140
151
  <body
141
152
  id="ik0i"
@@ -354,7 +365,12 @@ input:focus {
354
365
  @click="renameWebsite(website.websiteId, '{{lang}}')"
355
366
 
356
367
  >{{ list-rename }}</BUTTON><BUTTON
357
- id="iol4h"
368
+ id="iol4h" title="{{ list-duplicate }}"
369
+ class="button-bar__item--link pointer fx-flash fx-scale button-bar__item--icon "
370
+ @click="duplicateWebsite(website.websiteId, '{{lang}}')"
371
+
372
+ >{{ list-duplicate-icon }}</BUTTON><BUTTON
373
+
358
374
  class="button-bar__item--link pointer fx-flash fx-scale "
359
375
  @click="deleteWebsite(website.websiteId)" title="{{ list-delete }}"
360
376
 
@@ -1 +1 @@
1
- * { box-sizing: border-box; } body {margin: 0;}.nav__item{margin:0px 10px 0px 10px;font-size:0.8rem;padding:24px 0px 24px 0px;color:#4a4a4a;}.body{font-family:"Ubuntu", sans-serif;background-color:#f0f0f0;color:#2b1b63;}.menu-bar{display:flex;align-items:center;justify-content:space-between;background-color:#ffffff;height:94px;padding:0px 100px 0px 100px;width:100%;}.nav{width:100%;margin:0px 20px 0px 20px;}.subtitle-16{font-size:1rem;margin:0px 0px 20px 0px;}.subtitle-16.color--light{color:#636363;font-weight:700;}.button{font-size:0.8rem;padding:10px 20px 10px 20px;display:inline-block;border:2px solid #8873fe;transition:all 0.18s ease-out;font-weight:700;line-height:1.2rem;}.button.button--primary{background-color:#8873fe;color:white;}.button-bar{margin:20px 0px 20px 0px;display:flex;padding:30px 30px 30px 30px;align-items:center;justify-content:space-between;border-radius:4px 4px 4px 4px;background-color:#ffffff;}.button-bar.button-bar--full-width{justify-content:space-between;align-items:center;}.button-bar_item.button-bar__item--secondary{font-size:0.8rem;}.button.button--secondary{font-weight:400;color:#8873fe;border:2px solid #8873fe;}.nav__item.active{color:black;}.box{border-radius:4px 4px 4px 4px;background-color:#ffffff;}.box.flex-between{align-items:center;}.h-space{margin:0px 10px 0px 0px;}.button--tertiary{background-color:transparent;font-weight:400;}.lang__item{margin:0px 5px 0px 5px;}.nav__logo{height:50px;}.button:hover{color:#8873fe;border:2px solid #8873fe;}.button.button--secondary:hover{background-color:white;border:2px solid rgba(136,115,254,0.5);}#imgx81{min-height:100vh;display:flex;justify-content:center;align-items:center;flex-direction:column;}#in62y2{width:100%;display:flex;justify-content:center;}.big-button{border-radius:5px 5px 5px 5px;font-size:15px;margin:10px 10px 10px 10px;padding:15px 30px 15px 30px;font-weight:700;background-color:#ffffff;}#i9msnk{padding:10px;display:inline;}#i6akll{padding:10px;display:inline;}#ixzhcr{padding:10px;position:absolute;display:none;}.title-40{margin:0 0 10px 0;font-size:2.5rem;font-weight:700;}#in5jeq{display:flex;}#ij139z{position:absolute;}.bg-silex-purpel{background-repeat:repeat-y;background-position:center top;background-attachment:scroll;background-size:contain;background-image:url(/assets/bg-purpel-silex.webp);}.text-centered{text-align:center;}.text-white{color:#ffffff;}.box.box_transp{background-color:rgba(255,255,255,0.5);}.padding-100-30{padding:100px 30px 80px 30px;}.top-space-20{margin:20px 0 0 0;}.button.button--tertiary{border:2px solid transparent;background-color:rgba(221,221,221,0.5);}.box_login{max-width:880px;width:100%;}.button-bar__item--link.text-white{color:#ffffff;}.button.big-button{border:2px solid transparent;}.button.button--tertiary:hover{border:2px solid #8873fe;color:#8873fe;background-color:white;}.button-bar__item__icon{float:left;height:40px;width:40px;margin:5px 5px 5px 5px;}.button-bar__item--secondary{font-size:0.8rem;}
1
+ * { box-sizing: border-box; } body {margin: 0;}.nav__item{margin:0px 10px 0px 10px;font-size:0.8rem;padding:24px 0px 24px 0px;color:#4a4a4a;}.body{font-family:"Ubuntu", sans-serif;background-color:#f0f0f0;color:#2b1b63;}.menu-bar{display:flex;align-items:center;justify-content:space-between;background-color:#ffffff;height:94px;padding:0px 100px 0px 100px;width:100%;}.nav{width:100%;margin:0px 20px 0px 20px;}.subtitle-16{font-size:1rem;margin:0px 0px 20px 0px;}.subtitle-16.color--light{color:#636363;font-weight:700;}.button{font-size:0.8rem;padding:10px 20px 10px 20px;display:inline-block;border:2px solid #8873fe;transition:all 0.18s ease-out;font-weight:700;line-height:1.2rem;}.button.button--primary{background-color:#8873fe;color:white;}.button-bar{margin:20px 0px 20px 0px;display:flex;padding:30px 30px 30px 30px;align-items:center;justify-content:space-between;border-radius:4px 4px 4px 4px;background-color:#ffffff;}.button-bar.button-bar--full-width{justify-content:space-between;align-items:center;}.button-bar_item.button-bar__item--secondary{font-size:0.8rem;}.button.button--secondary{font-weight:400;color:#8873fe;border:2px solid #8873fe;}.nav__item.active{color:black;}.box{border-radius:4px 4px 4px 4px;background-color:#ffffff;}.box.flex-between{align-items:center;}.h-space{margin:0px 10px 0px 0px;}.button--tertiary{background-color:transparent;font-weight:400;}.lang__item{margin:0px 5px 0px 5px;}.nav__logo{height:50px;}.button:hover{color:#8873fe;border:2px solid #8873fe;}.button.button--secondary:hover{background-color:white;border:2px solid rgba(136,115,254,0.5);}#imgx81{min-height:100vh;display:flex;justify-content:center;align-items:center;flex-direction:column;}#in62y2{width:100%;display:flex;justify-content:center;}.big-button{border-radius:5px 5px 5px 5px;font-size:15px;margin:10px 10px 10px 10px;padding:15px 30px 15px 30px;font-weight:700;background-color:#ffffff;}#i9msnk{padding:10px;display:inline;}#i6akll{padding:10px;display:inline;}#ixzhcr{padding:10px;position:absolute;display:none;}.title-40{margin:0 0 10px 0;font-size:2.5rem;font-weight:700;}#in5jeq{display:flex;}#ij139z{position:absolute;}.bg-silex-purpel{background-repeat:repeat-y;background-position:center top;background-attachment:scroll;background-size:contain;background-image:url(../assets/bg-purpel-silex.webp);}.text-centered{text-align:center;}.text-white{color:#ffffff;}.box.box_transp{background-color:rgba(255,255,255,0.5);}.padding-100-30{padding:100px 30px 80px 30px;}.top-space-20{margin:20px 0 0 0;}.button.button--tertiary{border:2px solid transparent;background-color:rgba(221,221,221,0.5);}.box_login{max-width:880px;width:100%;}.button-bar__item--link.text-white{color:#ffffff;}.button.big-button{border:2px solid transparent;}.button.button--tertiary:hover{border:2px solid #8873fe;color:#8873fe;background-color:white;}.button-bar__item__icon{float:left;height:40px;width:40px;margin:5px 5px 5px 5px;}.button-bar__item--secondary{font-size:0.8rem;}